-module(etui@backend).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]).
-define(FILEPATH, "src/etui/backend.gleam").
-export([init/1, render/3, poll/3, next_size/2, cleanup/2, clear_and_home/0]).
-export_type([render_op/0, mouse_button/0, input_event/0, terminal_size/0, backend/1, error/0]).
-type render_op() :: {move_cursor, integer(), integer()} |
{write, binary()} |
clear_screen |
enter_alt_screen |
exit_alt_screen |
enable_mouse |
disable_mouse.
-type mouse_button() :: mouse_left | mouse_middle | mouse_right.
-type input_event() :: {key_press, binary()} |
{resize, integer(), integer()} |
tick |
{mouse_press, integer(), integer(), mouse_button()} |
{mouse_release, integer(), integer(), mouse_button()} |
{mouse_scroll, integer(), integer(), boolean()}.
-type terminal_size() :: {terminal_size, integer(), integer()}.
-type backend(DQX) :: {backend,
fun(() -> {ok, DQX} | {error, error()}),
fun((DQX, list(render_op())) -> {ok, DQX} | {error, error()}),
fun((DQX, integer()) -> {ok, {input_event(), DQX}} | {error, error()}),
fun((DQX) -> {ok, {terminal_size(), DQX}} | {error, error()}),
fun((DQX) -> nil)}.
-type error() :: {terminal_unsupported, binary()} |
{i_o_error, binary()} |
interrupted.
-file("src/etui/backend.gleam", 70).
-spec init(backend(DQY)) -> {ok, DQY} | {error, error()}.
init(Backend) ->
(erlang:element(2, Backend))().
-file("src/etui/backend.gleam", 74).
-spec render(backend(DRC), DRC, list(render_op())) -> {ok, DRC} |
{error, error()}.
render(Backend, State, Ops) ->
(erlang:element(3, Backend))(State, Ops).
-file("src/etui/backend.gleam", 82).
-spec poll(backend(DRH), DRH, integer()) -> {ok, {input_event(), DRH}} |
{error, error()}.
poll(Backend, State, Timeout_ms) ->
(erlang:element(4, Backend))(State, Timeout_ms).
-file("src/etui/backend.gleam", 90).
-spec next_size(backend(DRL), DRL) -> {ok, {terminal_size(), DRL}} |
{error, error()}.
next_size(Backend, State) ->
(erlang:element(5, Backend))(State).
-file("src/etui/backend.gleam", 97).
-spec cleanup(backend(DRP), DRP) -> nil.
cleanup(Backend, State) ->
(erlang:element(6, Backend))(State).
-file("src/etui/backend.gleam", 104).
-spec clear_and_home() -> list(render_op()).
clear_and_home() ->
[clear_screen, {move_cursor, 0, 0}].