Current section
Files
Jump to
Current section
Files
src/protocol@input.erl
-module(protocol@input).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch]).
-export([encode__touch_point/1, decode__touch_point/1, encode__mouse_button/1, decode__mouse_button/1, encode__time_since_epoch/1, decode__time_since_epoch/1, encode__dispatch_key_event_type/1, dispatch_key_event/15, decode__dispatch_key_event_type/1, encode__dispatch_mouse_event_type/1, decode__dispatch_mouse_event_type/1, encode__dispatch_mouse_event_pointer_type/1, dispatch_mouse_event/14, decode__dispatch_mouse_event_pointer_type/1, encode__dispatch_touch_event_type/1, dispatch_touch_event/5, decode__dispatch_touch_event_type/1, cancel_dragging/1, set_ignore_input_events/2]).
-export_type([touch_point/0, mouse_button/0, time_since_epoch/0, dispatch_key_event_type/0, dispatch_mouse_event_type/0, dispatch_mouse_event_pointer_type/0, dispatch_touch_event_type/0]).
-type touch_point() :: {touch_point,
float(),
float(),
gleam@option:option(float()),
gleam@option:option(float()),
gleam@option:option(float()),
gleam@option:option(float()),
gleam@option:option(float()),
gleam@option:option(float()),
gleam@option:option(float())}.
-type mouse_button() :: mouse_button_none |
mouse_button_left |
mouse_button_middle |
mouse_button_right |
mouse_button_back |
mouse_button_forward.
-type time_since_epoch() :: {time_since_epoch, float()}.
-type dispatch_key_event_type() :: dispatch_key_event_type_key_down |
dispatch_key_event_type_key_up |
dispatch_key_event_type_raw_key_down |
dispatch_key_event_type_char.
-type dispatch_mouse_event_type() :: dispatch_mouse_event_type_mouse_pressed |
dispatch_mouse_event_type_mouse_released |
dispatch_mouse_event_type_mouse_moved |
dispatch_mouse_event_type_mouse_wheel.
-type dispatch_mouse_event_pointer_type() :: dispatch_mouse_event_pointer_type_mouse |
dispatch_mouse_event_pointer_type_pen.
-type dispatch_touch_event_type() :: dispatch_touch_event_type_touch_start |
dispatch_touch_event_type_touch_end |
dispatch_touch_event_type_touch_move |
dispatch_touch_event_type_touch_cancel.
-spec encode__touch_point(touch_point()) -> gleam@json:json().
encode__touch_point(Value__) ->
gleam@json:object(
begin
_pipe = [{<<"x"/utf8>>,
gleam@json:float(erlang:element(2, Value__))},
{<<"y"/utf8>>, gleam@json:float(erlang:element(3, Value__))}],
_pipe@1 = chrobot@internal@utils:add_optional(
_pipe,
erlang:element(4, Value__),
fun(Inner_value__) ->
{<<"radiusX"/utf8>>, gleam@json:float(Inner_value__)}
end
),
_pipe@2 = chrobot@internal@utils:add_optional(
_pipe@1,
erlang:element(5, Value__),
fun(Inner_value__@1) ->
{<<"radiusY"/utf8>>, gleam@json:float(Inner_value__@1)}
end
),
_pipe@3 = chrobot@internal@utils:add_optional(
_pipe@2,
erlang:element(6, Value__),
fun(Inner_value__@2) ->
{<<"rotationAngle"/utf8>>,
gleam@json:float(Inner_value__@2)}
end
),
_pipe@4 = chrobot@internal@utils:add_optional(
_pipe@3,
erlang:element(7, Value__),
fun(Inner_value__@3) ->
{<<"force"/utf8>>, gleam@json:float(Inner_value__@3)}
end
),
_pipe@5 = chrobot@internal@utils:add_optional(
_pipe@4,
erlang:element(8, Value__),
fun(Inner_value__@4) ->
{<<"tiltX"/utf8>>, gleam@json:float(Inner_value__@4)}
end
),
_pipe@6 = chrobot@internal@utils:add_optional(
_pipe@5,
erlang:element(9, Value__),
fun(Inner_value__@5) ->
{<<"tiltY"/utf8>>, gleam@json:float(Inner_value__@5)}
end
),
chrobot@internal@utils:add_optional(
_pipe@6,
erlang:element(10, Value__),
fun(Inner_value__@6) ->
{<<"id"/utf8>>, gleam@json:float(Inner_value__@6)}
end
)
end
).
-spec decode__touch_point(gleam@dynamic:dynamic_()) -> {ok, touch_point()} |
{error, list(gleam@dynamic:decode_error())}.
decode__touch_point(Value__) ->
gleam@result:'try'(
(gleam@dynamic:field(<<"x"/utf8>>, fun gleam@dynamic:float/1))(Value__),
fun(X) ->
gleam@result:'try'(
(gleam@dynamic:field(<<"y"/utf8>>, fun gleam@dynamic:float/1))(
Value__
),
fun(Y) ->
gleam@result:'try'(
(gleam@dynamic:optional_field(
<<"radiusX"/utf8>>,
fun gleam@dynamic:float/1
))(Value__),
fun(Radius_x) ->
gleam@result:'try'(
(gleam@dynamic:optional_field(
<<"radiusY"/utf8>>,
fun gleam@dynamic:float/1
))(Value__),
fun(Radius_y) ->
gleam@result:'try'(
(gleam@dynamic:optional_field(
<<"rotationAngle"/utf8>>,
fun gleam@dynamic:float/1
))(Value__),
fun(Rotation_angle) ->
gleam@result:'try'(
(gleam@dynamic:optional_field(
<<"force"/utf8>>,
fun gleam@dynamic:float/1
))(Value__),
fun(Force) ->
gleam@result:'try'(
(gleam@dynamic:optional_field(
<<"tiltX"/utf8>>,
fun gleam@dynamic:float/1
))(Value__),
fun(Tilt_x) ->
gleam@result:'try'(
(gleam@dynamic:optional_field(
<<"tiltY"/utf8>>,
fun gleam@dynamic:float/1
))(Value__),
fun(Tilt_y) ->
gleam@result:'try'(
(gleam@dynamic:optional_field(
<<"id"/utf8>>,
fun gleam@dynamic:float/1
))(
Value__
),
fun(Id) ->
{ok,
{touch_point,
X,
Y,
Radius_x,
Radius_y,
Rotation_angle,
Force,
Tilt_x,
Tilt_y,
Id}}
end
)
end
)
end
)
end
)
end
)
end
)
end
)
end
)
end
).
-spec encode__mouse_button(mouse_button()) -> gleam@json:json().
encode__mouse_button(Value__) ->
_pipe = case Value__ of
mouse_button_none ->
<<"none"/utf8>>;
mouse_button_left ->
<<"left"/utf8>>;
mouse_button_middle ->
<<"middle"/utf8>>;
mouse_button_right ->
<<"right"/utf8>>;
mouse_button_back ->
<<"back"/utf8>>;
mouse_button_forward ->
<<"forward"/utf8>>
end,
gleam@json:string(_pipe).
-spec decode__mouse_button(gleam@dynamic:dynamic_()) -> {ok, mouse_button()} |
{error, list(gleam@dynamic:decode_error())}.
decode__mouse_button(Value__) ->
case gleam@dynamic:string(Value__) of
{ok, <<"none"/utf8>>} ->
{ok, mouse_button_none};
{ok, <<"left"/utf8>>} ->
{ok, mouse_button_left};
{ok, <<"middle"/utf8>>} ->
{ok, mouse_button_middle};
{ok, <<"right"/utf8>>} ->
{ok, mouse_button_right};
{ok, <<"back"/utf8>>} ->
{ok, mouse_button_back};
{ok, <<"forward"/utf8>>} ->
{ok, mouse_button_forward};
{error, Error} ->
{error, Error};
{ok, Other} ->
{error,
[{decode_error,
<<"valid enum property"/utf8>>,
Other,
[<<"enum decoder"/utf8>>]}]}
end.
-spec encode__time_since_epoch(time_since_epoch()) -> gleam@json:json().
encode__time_since_epoch(Value__) ->
case Value__ of
{time_since_epoch, Inner_value__} ->
gleam@json:float(Inner_value__)
end.
-spec decode__time_since_epoch(gleam@dynamic:dynamic_()) -> {ok,
time_since_epoch()} |
{error, list(gleam@dynamic:decode_error())}.
decode__time_since_epoch(Value__) ->
_pipe = Value__,
(gleam@dynamic:decode1(
fun(Field@0) -> {time_since_epoch, Field@0} end,
fun gleam@dynamic:float/1
))(_pipe).
-spec encode__dispatch_key_event_type(dispatch_key_event_type()) -> gleam@json:json().
encode__dispatch_key_event_type(Value__) ->
_pipe = case Value__ of
dispatch_key_event_type_key_down ->
<<"keyDown"/utf8>>;
dispatch_key_event_type_key_up ->
<<"keyUp"/utf8>>;
dispatch_key_event_type_raw_key_down ->
<<"rawKeyDown"/utf8>>;
dispatch_key_event_type_char ->
<<"char"/utf8>>
end,
gleam@json:string(_pipe).
-spec dispatch_key_event(
fun((binary(), gleam@option:option(gleam@json:json())) -> SOF),
dispatch_key_event_type(),
gleam@option:option(integer()),
gleam@option:option(time_since_epoch()),
gleam@option:option(binary()),
gleam@option:option(binary()),
gleam@option:option(binary()),
gleam@option:option(binary()),
gleam@option:option(binary()),
gleam@option:option(integer()),
gleam@option:option(integer()),
gleam@option:option(boolean()),
gleam@option:option(boolean()),
gleam@option:option(boolean()),
gleam@option:option(integer())
) -> SOF.
dispatch_key_event(
Callback__,
Type_,
Modifiers,
Timestamp,
Text,
Unmodified_text,
Key_identifier,
Code,
Key,
Windows_virtual_key_code,
Native_virtual_key_code,
Auto_repeat,
Is_keypad,
Is_system_key,
Location
) ->
Callback__(
<<"Input.dispatchKeyEvent"/utf8>>,
{some,
gleam@json:object(
begin
_pipe = [{<<"type"/utf8>>,
encode__dispatch_key_event_type(Type_)}],
_pipe@1 = chrobot@internal@utils:add_optional(
_pipe,
Modifiers,
fun(Inner_value__) ->
{<<"modifiers"/utf8>>,
gleam@json:int(Inner_value__)}
end
),
_pipe@2 = chrobot@internal@utils:add_optional(
_pipe@1,
Timestamp,
fun(Inner_value__@1) ->
{<<"timestamp"/utf8>>,
encode__time_since_epoch(Inner_value__@1)}
end
),
_pipe@3 = chrobot@internal@utils:add_optional(
_pipe@2,
Text,
fun(Inner_value__@2) ->
{<<"text"/utf8>>,
gleam@json:string(Inner_value__@2)}
end
),
_pipe@4 = chrobot@internal@utils:add_optional(
_pipe@3,
Unmodified_text,
fun(Inner_value__@3) ->
{<<"unmodifiedText"/utf8>>,
gleam@json:string(Inner_value__@3)}
end
),
_pipe@5 = chrobot@internal@utils:add_optional(
_pipe@4,
Key_identifier,
fun(Inner_value__@4) ->
{<<"keyIdentifier"/utf8>>,
gleam@json:string(Inner_value__@4)}
end
),
_pipe@6 = chrobot@internal@utils:add_optional(
_pipe@5,
Code,
fun(Inner_value__@5) ->
{<<"code"/utf8>>,
gleam@json:string(Inner_value__@5)}
end
),
_pipe@7 = chrobot@internal@utils:add_optional(
_pipe@6,
Key,
fun(Inner_value__@6) ->
{<<"key"/utf8>>, gleam@json:string(Inner_value__@6)}
end
),
_pipe@8 = chrobot@internal@utils:add_optional(
_pipe@7,
Windows_virtual_key_code,
fun(Inner_value__@7) ->
{<<"windowsVirtualKeyCode"/utf8>>,
gleam@json:int(Inner_value__@7)}
end
),
_pipe@9 = chrobot@internal@utils:add_optional(
_pipe@8,
Native_virtual_key_code,
fun(Inner_value__@8) ->
{<<"nativeVirtualKeyCode"/utf8>>,
gleam@json:int(Inner_value__@8)}
end
),
_pipe@10 = chrobot@internal@utils:add_optional(
_pipe@9,
Auto_repeat,
fun(Inner_value__@9) ->
{<<"autoRepeat"/utf8>>,
gleam@json:bool(Inner_value__@9)}
end
),
_pipe@11 = chrobot@internal@utils:add_optional(
_pipe@10,
Is_keypad,
fun(Inner_value__@10) ->
{<<"isKeypad"/utf8>>,
gleam@json:bool(Inner_value__@10)}
end
),
_pipe@12 = chrobot@internal@utils:add_optional(
_pipe@11,
Is_system_key,
fun(Inner_value__@11) ->
{<<"isSystemKey"/utf8>>,
gleam@json:bool(Inner_value__@11)}
end
),
chrobot@internal@utils:add_optional(
_pipe@12,
Location,
fun(Inner_value__@12) ->
{<<"location"/utf8>>,
gleam@json:int(Inner_value__@12)}
end
)
end
)}
).
-spec decode__dispatch_key_event_type(gleam@dynamic:dynamic_()) -> {ok,
dispatch_key_event_type()} |
{error, list(gleam@dynamic:decode_error())}.
decode__dispatch_key_event_type(Value__) ->
case gleam@dynamic:string(Value__) of
{ok, <<"keyDown"/utf8>>} ->
{ok, dispatch_key_event_type_key_down};
{ok, <<"keyUp"/utf8>>} ->
{ok, dispatch_key_event_type_key_up};
{ok, <<"rawKeyDown"/utf8>>} ->
{ok, dispatch_key_event_type_raw_key_down};
{ok, <<"char"/utf8>>} ->
{ok, dispatch_key_event_type_char};
{error, Error} ->
{error, Error};
{ok, Other} ->
{error,
[{decode_error,
<<"valid enum property"/utf8>>,
Other,
[<<"enum decoder"/utf8>>]}]}
end.
-spec encode__dispatch_mouse_event_type(dispatch_mouse_event_type()) -> gleam@json:json().
encode__dispatch_mouse_event_type(Value__) ->
_pipe = case Value__ of
dispatch_mouse_event_type_mouse_pressed ->
<<"mousePressed"/utf8>>;
dispatch_mouse_event_type_mouse_released ->
<<"mouseReleased"/utf8>>;
dispatch_mouse_event_type_mouse_moved ->
<<"mouseMoved"/utf8>>;
dispatch_mouse_event_type_mouse_wheel ->
<<"mouseWheel"/utf8>>
end,
gleam@json:string(_pipe).
-spec decode__dispatch_mouse_event_type(gleam@dynamic:dynamic_()) -> {ok,
dispatch_mouse_event_type()} |
{error, list(gleam@dynamic:decode_error())}.
decode__dispatch_mouse_event_type(Value__) ->
case gleam@dynamic:string(Value__) of
{ok, <<"mousePressed"/utf8>>} ->
{ok, dispatch_mouse_event_type_mouse_pressed};
{ok, <<"mouseReleased"/utf8>>} ->
{ok, dispatch_mouse_event_type_mouse_released};
{ok, <<"mouseMoved"/utf8>>} ->
{ok, dispatch_mouse_event_type_mouse_moved};
{ok, <<"mouseWheel"/utf8>>} ->
{ok, dispatch_mouse_event_type_mouse_wheel};
{error, Error} ->
{error, Error};
{ok, Other} ->
{error,
[{decode_error,
<<"valid enum property"/utf8>>,
Other,
[<<"enum decoder"/utf8>>]}]}
end.
-spec encode__dispatch_mouse_event_pointer_type(
dispatch_mouse_event_pointer_type()
) -> gleam@json:json().
encode__dispatch_mouse_event_pointer_type(Value__) ->
_pipe = case Value__ of
dispatch_mouse_event_pointer_type_mouse ->
<<"mouse"/utf8>>;
dispatch_mouse_event_pointer_type_pen ->
<<"pen"/utf8>>
end,
gleam@json:string(_pipe).
-spec dispatch_mouse_event(
fun((binary(), gleam@option:option(gleam@json:json())) -> SRO),
dispatch_mouse_event_type(),
float(),
float(),
gleam@option:option(integer()),
gleam@option:option(time_since_epoch()),
gleam@option:option(mouse_button()),
gleam@option:option(integer()),
gleam@option:option(integer()),
gleam@option:option(float()),
gleam@option:option(float()),
gleam@option:option(float()),
gleam@option:option(float()),
gleam@option:option(dispatch_mouse_event_pointer_type())
) -> SRO.
dispatch_mouse_event(
Callback__,
Type_,
X,
Y,
Modifiers,
Timestamp,
Button,
Buttons,
Click_count,
Tilt_x,
Tilt_y,
Delta_x,
Delta_y,
Pointer_type
) ->
Callback__(
<<"Input.dispatchMouseEvent"/utf8>>,
{some,
gleam@json:object(
begin
_pipe = [{<<"type"/utf8>>,
encode__dispatch_mouse_event_type(Type_)},
{<<"x"/utf8>>, gleam@json:float(X)},
{<<"y"/utf8>>, gleam@json:float(Y)}],
_pipe@1 = chrobot@internal@utils:add_optional(
_pipe,
Modifiers,
fun(Inner_value__) ->
{<<"modifiers"/utf8>>,
gleam@json:int(Inner_value__)}
end
),
_pipe@2 = chrobot@internal@utils:add_optional(
_pipe@1,
Timestamp,
fun(Inner_value__@1) ->
{<<"timestamp"/utf8>>,
encode__time_since_epoch(Inner_value__@1)}
end
),
_pipe@3 = chrobot@internal@utils:add_optional(
_pipe@2,
Button,
fun(Inner_value__@2) ->
{<<"button"/utf8>>,
encode__mouse_button(Inner_value__@2)}
end
),
_pipe@4 = chrobot@internal@utils:add_optional(
_pipe@3,
Buttons,
fun(Inner_value__@3) ->
{<<"buttons"/utf8>>,
gleam@json:int(Inner_value__@3)}
end
),
_pipe@5 = chrobot@internal@utils:add_optional(
_pipe@4,
Click_count,
fun(Inner_value__@4) ->
{<<"clickCount"/utf8>>,
gleam@json:int(Inner_value__@4)}
end
),
_pipe@6 = chrobot@internal@utils:add_optional(
_pipe@5,
Tilt_x,
fun(Inner_value__@5) ->
{<<"tiltX"/utf8>>,
gleam@json:float(Inner_value__@5)}
end
),
_pipe@7 = chrobot@internal@utils:add_optional(
_pipe@6,
Tilt_y,
fun(Inner_value__@6) ->
{<<"tiltY"/utf8>>,
gleam@json:float(Inner_value__@6)}
end
),
_pipe@8 = chrobot@internal@utils:add_optional(
_pipe@7,
Delta_x,
fun(Inner_value__@7) ->
{<<"deltaX"/utf8>>,
gleam@json:float(Inner_value__@7)}
end
),
_pipe@9 = chrobot@internal@utils:add_optional(
_pipe@8,
Delta_y,
fun(Inner_value__@8) ->
{<<"deltaY"/utf8>>,
gleam@json:float(Inner_value__@8)}
end
),
chrobot@internal@utils:add_optional(
_pipe@9,
Pointer_type,
fun(Inner_value__@9) ->
{<<"pointerType"/utf8>>,
encode__dispatch_mouse_event_pointer_type(
Inner_value__@9
)}
end
)
end
)}
).
-spec decode__dispatch_mouse_event_pointer_type(gleam@dynamic:dynamic_()) -> {ok,
dispatch_mouse_event_pointer_type()} |
{error, list(gleam@dynamic:decode_error())}.
decode__dispatch_mouse_event_pointer_type(Value__) ->
case gleam@dynamic:string(Value__) of
{ok, <<"mouse"/utf8>>} ->
{ok, dispatch_mouse_event_pointer_type_mouse};
{ok, <<"pen"/utf8>>} ->
{ok, dispatch_mouse_event_pointer_type_pen};
{error, Error} ->
{error, Error};
{ok, Other} ->
{error,
[{decode_error,
<<"valid enum property"/utf8>>,
Other,
[<<"enum decoder"/utf8>>]}]}
end.
-spec encode__dispatch_touch_event_type(dispatch_touch_event_type()) -> gleam@json:json().
encode__dispatch_touch_event_type(Value__) ->
_pipe = case Value__ of
dispatch_touch_event_type_touch_start ->
<<"touchStart"/utf8>>;
dispatch_touch_event_type_touch_end ->
<<"touchEnd"/utf8>>;
dispatch_touch_event_type_touch_move ->
<<"touchMove"/utf8>>;
dispatch_touch_event_type_touch_cancel ->
<<"touchCancel"/utf8>>
end,
gleam@json:string(_pipe).
-spec dispatch_touch_event(
fun((binary(), gleam@option:option(gleam@json:json())) -> STH),
dispatch_touch_event_type(),
list(touch_point()),
gleam@option:option(integer()),
gleam@option:option(time_since_epoch())
) -> STH.
dispatch_touch_event(Callback__, Type_, Touch_points, Modifiers, Timestamp) ->
Callback__(
<<"Input.dispatchTouchEvent"/utf8>>,
{some,
gleam@json:object(
begin
_pipe = [{<<"type"/utf8>>,
encode__dispatch_touch_event_type(Type_)},
{<<"touchPoints"/utf8>>,
gleam@json:array(
Touch_points,
fun encode__touch_point/1
)}],
_pipe@1 = chrobot@internal@utils:add_optional(
_pipe,
Modifiers,
fun(Inner_value__) ->
{<<"modifiers"/utf8>>,
gleam@json:int(Inner_value__)}
end
),
chrobot@internal@utils:add_optional(
_pipe@1,
Timestamp,
fun(Inner_value__@1) ->
{<<"timestamp"/utf8>>,
encode__time_since_epoch(Inner_value__@1)}
end
)
end
)}
).
-spec decode__dispatch_touch_event_type(gleam@dynamic:dynamic_()) -> {ok,
dispatch_touch_event_type()} |
{error, list(gleam@dynamic:decode_error())}.
decode__dispatch_touch_event_type(Value__) ->
case gleam@dynamic:string(Value__) of
{ok, <<"touchStart"/utf8>>} ->
{ok, dispatch_touch_event_type_touch_start};
{ok, <<"touchEnd"/utf8>>} ->
{ok, dispatch_touch_event_type_touch_end};
{ok, <<"touchMove"/utf8>>} ->
{ok, dispatch_touch_event_type_touch_move};
{ok, <<"touchCancel"/utf8>>} ->
{ok, dispatch_touch_event_type_touch_cancel};
{error, Error} ->
{error, Error};
{ok, Other} ->
{error,
[{decode_error,
<<"valid enum property"/utf8>>,
Other,
[<<"enum decoder"/utf8>>]}]}
end.
-spec cancel_dragging(fun((binary(), gleam@option:option(any())) -> SUS)) -> SUS.
cancel_dragging(Callback__) ->
Callback__(<<"Input.cancelDragging"/utf8>>, none).
-spec set_ignore_input_events(
fun((binary(), gleam@option:option(gleam@json:json())) -> SUW),
boolean()
) -> SUW.
set_ignore_input_events(Callback__, Ignore) ->
Callback__(
<<"Input.setIgnoreInputEvents"/utf8>>,
{some,
gleam@json:object([{<<"ignore"/utf8>>, gleam@json:bool(Ignore)}])}
).