-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}].