-module(etui@cursor).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]).
-define(FILEPATH, "src/etui/cursor.gleam").
-export([set_shape/1, show/0, hide/0, move_to/2, save/0, restore/0]).
-export_type([cursor_shape/0]).
-if(?OTP_RELEASE >= 27).
-define(MODULEDOC(Str), -moduledoc(Str)).
-define(DOC(Str), -doc(Str)).
-else.
-define(MODULEDOC(Str), -compile([])).
-define(DOC(Str), -compile([])).
-endif.
-type cursor_shape() :: block_blink |
block |
underline_blink |
underline |
bar_blink |
bar.
-file("src/etui/cursor.gleam", 17).
?DOC(" ANSI sequence to change the cursor shape.\n").
-spec set_shape(cursor_shape()) -> binary().
set_shape(Shape) ->
case Shape of
block_blink ->
<<"\x{001B}[1 q"/utf8>>;
block ->
<<"\x{001B}[2 q"/utf8>>;
underline_blink ->
<<"\x{001B}[3 q"/utf8>>;
underline ->
<<"\x{001B}[4 q"/utf8>>;
bar_blink ->
<<"\x{001B}[5 q"/utf8>>;
bar ->
<<"\x{001B}[6 q"/utf8>>
end.
-file("src/etui/cursor.gleam", 31).
-spec show() -> binary().
show() ->
<<"\x{001B}[?25h"/utf8>>.
-file("src/etui/cursor.gleam", 35).
-spec hide() -> binary().
hide() ->
<<"\x{001B}[?25l"/utf8>>.
-file("src/etui/cursor.gleam", 43).
?DOC(" Move cursor to 1-based (row, col) position.\n").
-spec move_to(integer(), integer()) -> binary().
move_to(Row, Col) ->
<<<<<<<<"\x{001B}["/utf8, (erlang:integer_to_binary(Row))/binary>>/binary,
";"/utf8>>/binary,
(erlang:integer_to_binary(Col))/binary>>/binary,
"H"/utf8>>.
-file("src/etui/cursor.gleam", 48).
?DOC(" Save cursor position.\n").
-spec save() -> binary().
save() ->
<<"\x{001B}[s"/utf8>>.
-file("src/etui/cursor.gleam", 53).
?DOC(" Restore cursor position.\n").
-spec restore() -> binary().
restore() ->
<<"\x{001B}[u"/utf8>>.