Current section

Files

Jump to
react_gleam src react_gleam@event.erl
Raw

src/react_gleam@event.erl

-module(react_gleam@event).
-compile(no_auto_import).
-export([on/2, dispatch/1, on_click/1, on_mouse_down/1, on_mouse_up/1, on_mouse_enter/1, on_mouse_leave/1, on_mouse_over/1, on_mouse_out/1, on_keypress/1, on_keydown/1, on_keyup/1, on_input/1, on_check/1, on_submit/1, on_focus/1, on_blur/1]).
-spec on(binary(), fun((gleam@dynamic:dynamic(), fun((FOL) -> nil)) -> nil)) -> react_gleam@attribute:attribute(any(), FOL).
on(Name, Handler) ->
react_gleam@attribute:event(Name, Handler).
-spec dispatch(FOP) -> fun((fun((FOP) -> nil)) -> nil).
dispatch(Action) ->
fun(Dispatch) -> Dispatch(Action) end.
-spec on_click(fun((fun((FOQ) -> nil)) -> nil)) -> react_gleam@attribute:attribute(any(), FOQ).
on_click(Handler) ->
on(<<"click"/utf8>>, fun(_, Dispatch) -> Handler(Dispatch) end).
-spec on_mouse_down(fun((fun((FOU) -> nil)) -> nil)) -> react_gleam@attribute:attribute(any(), FOU).
on_mouse_down(Handler) ->
on(<<"mouseDown"/utf8>>, fun(_, Dispatch) -> Handler(Dispatch) end).
-spec on_mouse_up(fun((fun((FOY) -> nil)) -> nil)) -> react_gleam@attribute:attribute(any(), FOY).
on_mouse_up(Handler) ->
on(<<"mouseUp"/utf8>>, fun(_, Dispatch) -> Handler(Dispatch) end).
-spec on_mouse_enter(fun((fun((FPC) -> nil)) -> nil)) -> react_gleam@attribute:attribute(any(), FPC).
on_mouse_enter(Handler) ->
on(<<"mouseEnter"/utf8>>, fun(_, Dispatch) -> Handler(Dispatch) end).
-spec on_mouse_leave(fun((fun((FPG) -> nil)) -> nil)) -> react_gleam@attribute:attribute(any(), FPG).
on_mouse_leave(Handler) ->
on(<<"mouseLeave"/utf8>>, fun(_, Dispatch) -> Handler(Dispatch) end).
-spec on_mouse_over(fun((fun((FPK) -> nil)) -> nil)) -> react_gleam@attribute:attribute(any(), FPK).
on_mouse_over(Handler) ->
on(<<"mouseOver"/utf8>>, fun(_, Dispatch) -> Handler(Dispatch) end).
-spec on_mouse_out(fun((fun((FPO) -> nil)) -> nil)) -> react_gleam@attribute:attribute(any(), FPO).
on_mouse_out(Handler) ->
on(<<"mouseOut"/utf8>>, fun(_, Dispatch) -> Handler(Dispatch) end).
-spec on_keypress(fun((binary(), fun((FPS) -> nil)) -> nil)) -> react_gleam@attribute:attribute(any(), FPS).
on_keypress(Handler) ->
on(
<<"keyPress"/utf8>>,
fun(E, Dispatch) ->
_assert_subject = begin
_pipe = E,
(gleam@dynamic:field(<<"key"/utf8>>, fun gleam@dynamic:string/1))(
_pipe
)
end,
{ok, Key} = case _assert_subject of
{ok, _} -> _assert_subject;
_assert_fail ->
erlang:error(#{gleam_error => assert,
message => <<"Assertion pattern match failed"/utf8>>,
value => _assert_fail,
module => <<"react_gleam/event"/utf8>>,
function => <<"on_keypress"/utf8>>,
line => 82})
end,
Handler(Key, Dispatch)
end
).
-spec on_keydown(fun((binary(), fun((FPW) -> nil)) -> nil)) -> react_gleam@attribute:attribute(any(), FPW).
on_keydown(Handler) ->
on(
<<"keyDown"/utf8>>,
fun(E, Dispatch) ->
_assert_subject = begin
_pipe = E,
(gleam@dynamic:field(<<"key"/utf8>>, fun gleam@dynamic:string/1))(
_pipe
)
end,
{ok, Key} = case _assert_subject of
{ok, _} -> _assert_subject;
_assert_fail ->
erlang:error(#{gleam_error => assert,
message => <<"Assertion pattern match failed"/utf8>>,
value => _assert_fail,
module => <<"react_gleam/event"/utf8>>,
function => <<"on_keydown"/utf8>>,
line => 97})
end,
Handler(Key, Dispatch)
end
).
-spec on_keyup(fun((binary(), fun((FQA) -> nil)) -> nil)) -> react_gleam@attribute:attribute(any(), FQA).
on_keyup(Handler) ->
on(
<<"keyUp"/utf8>>,
fun(E, Dispatch) ->
_assert_subject = begin
_pipe = E,
(gleam@dynamic:field(<<"key"/utf8>>, fun gleam@dynamic:string/1))(
_pipe
)
end,
{ok, Key} = case _assert_subject of
{ok, _} -> _assert_subject;
_assert_fail ->
erlang:error(#{gleam_error => assert,
message => <<"Assertion pattern match failed"/utf8>>,
value => _assert_fail,
module => <<"react_gleam/event"/utf8>>,
function => <<"on_keyup"/utf8>>,
line => 112})
end,
Handler(Key, Dispatch)
end
).
-spec on_input(fun((binary(), fun((FQE) -> nil)) -> nil)) -> react_gleam@attribute:attribute(any(), FQE).
on_input(Handler) ->
on(
<<"input"/utf8>>,
fun(E, Dispatch) ->
_assert_subject = begin
_pipe = E,
(gleam@dynamic:field(
<<"target"/utf8>>,
gleam@dynamic:field(
<<"value"/utf8>>,
fun gleam@dynamic:string/1
)
))(_pipe)
end,
{ok, Value} = case _assert_subject of
{ok, _} -> _assert_subject;
_assert_fail ->
erlang:error(#{gleam_error => assert,
message => <<"Assertion pattern match failed"/utf8>>,
value => _assert_fail,
module => <<"react_gleam/event"/utf8>>,
function => <<"on_input"/utf8>>,
line => 130})
end,
Handler(Value, Dispatch)
end
).
-spec on_check(fun((boolean(), fun((FQI) -> nil)) -> nil)) -> react_gleam@attribute:attribute(any(), FQI).
on_check(Handler) ->
on(
<<"check"/utf8>>,
fun(E, Dispatch) ->
_assert_subject = begin
_pipe = E,
(gleam@dynamic:field(
<<"target"/utf8>>,
gleam@dynamic:field(
<<"checked"/utf8>>,
fun gleam@dynamic:bool/1
)
))(_pipe)
end,
{ok, Value} = case _assert_subject of
{ok, _} -> _assert_subject;
_assert_fail ->
erlang:error(#{gleam_error => assert,
message => <<"Assertion pattern match failed"/utf8>>,
value => _assert_fail,
module => <<"react_gleam/event"/utf8>>,
function => <<"on_check"/utf8>>,
line => 145})
end,
Handler(Value, Dispatch)
end
).
-spec on_submit(fun((fun((FQM) -> nil)) -> nil)) -> react_gleam@attribute:attribute(any(), FQM).
on_submit(Handler) ->
on(<<"submit"/utf8>>, fun(_, Dispatch) -> Handler(Dispatch) end).
-spec on_focus(fun((fun((FQQ) -> nil)) -> nil)) -> react_gleam@attribute:attribute(any(), FQQ).
on_focus(Handler) ->
on(<<"focus"/utf8>>, fun(_, Dispatch) -> Handler(Dispatch) end).
-spec on_blur(fun((fun((FQU) -> nil)) -> nil)) -> react_gleam@attribute:attribute(any(), FQU).
on_blur(Handler) ->
on(<<"blur"/utf8>>, fun(_, Dispatch) -> Handler(Dispatch) end).