package main

import "core:fmt"
import "core:strings"

import "gloam:term"

main :: proc() {
	term.install_signal_handlers()

	term.enable_raw_mode()
	defer term.disable_raw_mode()

	b: strings.Builder
	strings.builder_init(&b, 0, 512)
	defer {
		strings.builder_reset(&b)
		term.reset_style(&b)
		fmt.print(strings.to_string(b))
		strings.builder_destroy(&b)
	}
	for !term.should_quit() {
		term.apply_style(&b, {fg = 34})

		key := term.read_key()
		if key.kind == .CtrlC {
			break
		}

		strings.write_string(&b, "\x1b[1;1H")
		strings.write_string(&b, "\x1b[0J")
		for y in 0 ..< 10 {
			i := y * 20
			for x in 0 ..< 20 {
				if key.kind == .Char && i + x == int(key.char) {
					term.apply_style(&b, {fg = 31})
				}
				strings.write_byte(&b, 'x')
				term.apply_style(&b, {fg = 34})
			}
			strings.write_string(&b, "\x1b[1E")
		}

		fmt.print(strings.to_string(b))

		strings.builder_reset(&b)
		term.reset_style(&b)
		free_all(context.temp_allocator)
	}
}