Current section

Files

Jump to
sprocket src sprocket@html@events.erl
Raw

src/sprocket@html@events.erl

-module(sprocket@html@events).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch]).
-export([event/2, on_blur/1, on_change/1, on_check/1, on_click/1, on_dblclick/1, on_drag/1, on_dragend/1, on_dragenter/1, on_dragleave/1, on_dragover/1, on_dragstart/1, on_drop/1, on_focus/1, on_focusin/1, on_focusout/1, on_input/1, on_keydown/1, on_keyup/1, on_mousedown/1, on_mouseenter/1, on_mouseleave/1, on_mousemove/1, on_mouseout/1, on_mouseover/1, on_mouseup/1, on_scroll/1, on_submit/1, on_touchcancel/1, on_touchend/1, on_touchmove/1, on_touchstart/1, on_wheel/1, decode_target_value/1, decode_target_checked/1, decode_mouse_event/1, decode_key_event/1, decode_form_data/1, decode_keypress/1]).
-export_type([mouse_event/0, key_event/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 mouse_event() :: {mouse_event,
integer(),
integer(),
boolean(),
boolean(),
boolean(),
boolean()}.
-type key_event() :: {key_event,
binary(),
binary(),
boolean(),
boolean(),
boolean(),
boolean()}.
-file("src/sprocket/html/events.gleam", 11).
-spec event(binary(), fun((gleam@dynamic:dynamic_()) -> nil)) -> sprocket@internal@context:attribute().
event(Name, Cb) ->
{event, Name, Cb}.
-file("src/sprocket/html/events.gleam", 15).
-spec on_blur(fun((gleam@dynamic:dynamic_()) -> nil)) -> sprocket@internal@context:attribute().
on_blur(Cb) ->
event(<<"blur"/utf8>>, Cb).
-file("src/sprocket/html/events.gleam", 19).
-spec on_change(fun((gleam@dynamic:dynamic_()) -> nil)) -> sprocket@internal@context:attribute().
on_change(Cb) ->
event(<<"change"/utf8>>, Cb).
-file("src/sprocket/html/events.gleam", 23).
-spec on_check(fun((gleam@dynamic:dynamic_()) -> nil)) -> sprocket@internal@context:attribute().
on_check(Cb) ->
event(<<"check"/utf8>>, Cb).
-file("src/sprocket/html/events.gleam", 27).
-spec on_click(fun((gleam@dynamic:dynamic_()) -> nil)) -> sprocket@internal@context:attribute().
on_click(Cb) ->
event(<<"click"/utf8>>, Cb).
-file("src/sprocket/html/events.gleam", 31).
-spec on_dblclick(fun((gleam@dynamic:dynamic_()) -> nil)) -> sprocket@internal@context:attribute().
on_dblclick(Cb) ->
event(<<"dblclick"/utf8>>, Cb).
-file("src/sprocket/html/events.gleam", 35).
-spec on_drag(fun((gleam@dynamic:dynamic_()) -> nil)) -> sprocket@internal@context:attribute().
on_drag(Cb) ->
event(<<"drag"/utf8>>, Cb).
-file("src/sprocket/html/events.gleam", 39).
-spec on_dragend(fun((gleam@dynamic:dynamic_()) -> nil)) -> sprocket@internal@context:attribute().
on_dragend(Cb) ->
event(<<"dragend"/utf8>>, Cb).
-file("src/sprocket/html/events.gleam", 43).
-spec on_dragenter(fun((gleam@dynamic:dynamic_()) -> nil)) -> sprocket@internal@context:attribute().
on_dragenter(Cb) ->
event(<<"dragenter"/utf8>>, Cb).
-file("src/sprocket/html/events.gleam", 47).
-spec on_dragleave(fun((gleam@dynamic:dynamic_()) -> nil)) -> sprocket@internal@context:attribute().
on_dragleave(Cb) ->
event(<<"dragleave"/utf8>>, Cb).
-file("src/sprocket/html/events.gleam", 51).
-spec on_dragover(fun((gleam@dynamic:dynamic_()) -> nil)) -> sprocket@internal@context:attribute().
on_dragover(Cb) ->
event(<<"dragover"/utf8>>, Cb).
-file("src/sprocket/html/events.gleam", 55).
-spec on_dragstart(fun((gleam@dynamic:dynamic_()) -> nil)) -> sprocket@internal@context:attribute().
on_dragstart(Cb) ->
event(<<"dragstart"/utf8>>, Cb).
-file("src/sprocket/html/events.gleam", 59).
-spec on_drop(fun((gleam@dynamic:dynamic_()) -> nil)) -> sprocket@internal@context:attribute().
on_drop(Cb) ->
event(<<"drop"/utf8>>, Cb).
-file("src/sprocket/html/events.gleam", 63).
-spec on_focus(fun((gleam@dynamic:dynamic_()) -> nil)) -> sprocket@internal@context:attribute().
on_focus(Cb) ->
event(<<"focus"/utf8>>, Cb).
-file("src/sprocket/html/events.gleam", 67).
-spec on_focusin(fun((gleam@dynamic:dynamic_()) -> nil)) -> sprocket@internal@context:attribute().
on_focusin(Cb) ->
event(<<"focusin"/utf8>>, Cb).
-file("src/sprocket/html/events.gleam", 71).
-spec on_focusout(fun((gleam@dynamic:dynamic_()) -> nil)) -> sprocket@internal@context:attribute().
on_focusout(Cb) ->
event(<<"focusout"/utf8>>, Cb).
-file("src/sprocket/html/events.gleam", 75).
-spec on_input(fun((gleam@dynamic:dynamic_()) -> nil)) -> sprocket@internal@context:attribute().
on_input(Cb) ->
event(<<"input"/utf8>>, Cb).
-file("src/sprocket/html/events.gleam", 79).
-spec on_keydown(fun((gleam@dynamic:dynamic_()) -> nil)) -> sprocket@internal@context:attribute().
on_keydown(Cb) ->
event(<<"keydown"/utf8>>, Cb).
-file("src/sprocket/html/events.gleam", 83).
-spec on_keyup(fun((gleam@dynamic:dynamic_()) -> nil)) -> sprocket@internal@context:attribute().
on_keyup(Cb) ->
event(<<"keyup"/utf8>>, Cb).
-file("src/sprocket/html/events.gleam", 87).
-spec on_mousedown(fun((gleam@dynamic:dynamic_()) -> nil)) -> sprocket@internal@context:attribute().
on_mousedown(Cb) ->
event(<<"mousedown"/utf8>>, Cb).
-file("src/sprocket/html/events.gleam", 91).
-spec on_mouseenter(fun((gleam@dynamic:dynamic_()) -> nil)) -> sprocket@internal@context:attribute().
on_mouseenter(Cb) ->
event(<<"mouseenter"/utf8>>, Cb).
-file("src/sprocket/html/events.gleam", 95).
-spec on_mouseleave(fun((gleam@dynamic:dynamic_()) -> nil)) -> sprocket@internal@context:attribute().
on_mouseleave(Cb) ->
event(<<"mouseleave"/utf8>>, Cb).
-file("src/sprocket/html/events.gleam", 99).
-spec on_mousemove(fun((gleam@dynamic:dynamic_()) -> nil)) -> sprocket@internal@context:attribute().
on_mousemove(Cb) ->
event(<<"mousemove"/utf8>>, Cb).
-file("src/sprocket/html/events.gleam", 103).
-spec on_mouseout(fun((gleam@dynamic:dynamic_()) -> nil)) -> sprocket@internal@context:attribute().
on_mouseout(Cb) ->
event(<<"mouseout"/utf8>>, Cb).
-file("src/sprocket/html/events.gleam", 107).
-spec on_mouseover(fun((gleam@dynamic:dynamic_()) -> nil)) -> sprocket@internal@context:attribute().
on_mouseover(Cb) ->
event(<<"mouseover"/utf8>>, Cb).
-file("src/sprocket/html/events.gleam", 111).
-spec on_mouseup(fun((gleam@dynamic:dynamic_()) -> nil)) -> sprocket@internal@context:attribute().
on_mouseup(Cb) ->
event(<<"mouseup"/utf8>>, Cb).
-file("src/sprocket/html/events.gleam", 115).
-spec on_scroll(fun((gleam@dynamic:dynamic_()) -> nil)) -> sprocket@internal@context:attribute().
on_scroll(Cb) ->
event(<<"scroll"/utf8>>, Cb).
-file("src/sprocket/html/events.gleam", 119).
-spec on_submit(fun((gleam@dynamic:dynamic_()) -> nil)) -> sprocket@internal@context:attribute().
on_submit(Cb) ->
event(<<"submit"/utf8>>, Cb).
-file("src/sprocket/html/events.gleam", 123).
-spec on_touchcancel(fun((gleam@dynamic:dynamic_()) -> nil)) -> sprocket@internal@context:attribute().
on_touchcancel(Cb) ->
event(<<"touchcancel"/utf8>>, Cb).
-file("src/sprocket/html/events.gleam", 127).
-spec on_touchend(fun((gleam@dynamic:dynamic_()) -> nil)) -> sprocket@internal@context:attribute().
on_touchend(Cb) ->
event(<<"touchend"/utf8>>, Cb).
-file("src/sprocket/html/events.gleam", 131).
-spec on_touchmove(fun((gleam@dynamic:dynamic_()) -> nil)) -> sprocket@internal@context:attribute().
on_touchmove(Cb) ->
event(<<"touchmove"/utf8>>, Cb).
-file("src/sprocket/html/events.gleam", 135).
-spec on_touchstart(fun((gleam@dynamic:dynamic_()) -> nil)) -> sprocket@internal@context:attribute().
on_touchstart(Cb) ->
event(<<"touchstart"/utf8>>, Cb).
-file("src/sprocket/html/events.gleam", 139).
-spec on_wheel(fun((gleam@dynamic:dynamic_()) -> nil)) -> sprocket@internal@context:attribute().
on_wheel(Cb) ->
event(<<"wheel"/utf8>>, Cb).
-file("src/sprocket/html/events.gleam", 147).
?DOC(
" \n"
" Decode the value from an event `event.target.value`.\n"
).
-spec decode_target_value(gleam@dynamic:dynamic_()) -> {ok, binary()} |
{error, list(gleam@dynamic@decode:decode_error())}.
decode_target_value(Event) ->
gleam@dynamic@decode:run(
Event,
gleam@dynamic@decode:at(
[<<"target"/utf8>>, <<"value"/utf8>>],
{decoder, fun gleam@dynamic@decode:decode_string/1}
)
).
-file("src/sprocket/html/events.gleam", 152).
-spec decode_target_checked(gleam@dynamic:dynamic_()) -> {ok, boolean()} |
{error, list(gleam@dynamic@decode:decode_error())}.
decode_target_checked(Event) ->
gleam@dynamic@decode:run(
Event,
gleam@dynamic@decode:at(
[<<"target"/utf8>>, <<"checked"/utf8>>],
{decoder, fun gleam@dynamic@decode:decode_bool/1}
)
).
-file("src/sprocket/html/events.gleam", 168).
?DOC(" Decode a mouse event that includes position `clientX` and `clientY` and modifier keys.\n").
-spec decode_mouse_event(gleam@dynamic:dynamic_()) -> {ok, mouse_event()} |
{error, list(gleam@dynamic@decode:decode_error())}.
decode_mouse_event(Event) ->
_pipe = Event,
gleam@dynamic@decode:run(
_pipe,
begin
gleam@dynamic@decode:field(
<<"clientX"/utf8>>,
{decoder, fun gleam@dynamic@decode:decode_int/1},
fun(X) ->
gleam@dynamic@decode:field(
<<"clientY"/utf8>>,
{decoder, fun gleam@dynamic@decode:decode_int/1},
fun(Y) ->
gleam@dynamic@decode:field(
<<"ctrlKey"/utf8>>,
{decoder,
fun gleam@dynamic@decode:decode_bool/1},
fun(Ctrl_key) ->
gleam@dynamic@decode:field(
<<"shiftKey"/utf8>>,
{decoder,
fun gleam@dynamic@decode:decode_bool/1},
fun(Shift_key) ->
gleam@dynamic@decode:field(
<<"altKey"/utf8>>,
{decoder,
fun gleam@dynamic@decode:decode_bool/1},
fun(Alt_key) ->
gleam@dynamic@decode:field(
<<"metaKey"/utf8>>,
{decoder,
fun gleam@dynamic@decode:decode_bool/1},
fun(Meta_key) ->
gleam@dynamic@decode:success(
{mouse_event,
X,
Y,
Ctrl_key,
Shift_key,
Alt_key,
Meta_key}
)
end
)
end
)
end
)
end
)
end
)
end
)
end
).
-file("src/sprocket/html/events.gleam", 203).
-spec decode_key_event(gleam@dynamic:dynamic_()) -> {ok, key_event()} |
{error, list(gleam@dynamic@decode:decode_error())}.
decode_key_event(Event) ->
_pipe = Event,
gleam@dynamic@decode:run(
_pipe,
begin
gleam@dynamic@decode:field(
<<"key"/utf8>>,
{decoder, fun gleam@dynamic@decode:decode_string/1},
fun(Key) ->
gleam@dynamic@decode:field(
<<"code"/utf8>>,
{decoder, fun gleam@dynamic@decode:decode_string/1},
fun(Code) ->
gleam@dynamic@decode:field(
<<"ctrlKey"/utf8>>,
{decoder,
fun gleam@dynamic@decode:decode_bool/1},
fun(Ctrl_key) ->
gleam@dynamic@decode:field(
<<"shiftKey"/utf8>>,
{decoder,
fun gleam@dynamic@decode:decode_bool/1},
fun(Shift_key) ->
gleam@dynamic@decode:field(
<<"altKey"/utf8>>,
{decoder,
fun gleam@dynamic@decode:decode_bool/1},
fun(Alt_key) ->
gleam@dynamic@decode:field(
<<"metaKey"/utf8>>,
{decoder,
fun gleam@dynamic@decode:decode_bool/1},
fun(Meta_key) ->
gleam@dynamic@decode:success(
{key_event,
Key,
Code,
Ctrl_key,
Shift_key,
Alt_key,
Meta_key}
)
end
)
end
)
end
)
end
)
end
)
end
)
end
).
-file("src/sprocket/html/events.gleam", 225).
?DOC(" Decode the form data from a form submit event.\n").
-spec decode_form_data(gleam@dynamic:dynamic_()) -> {ok,
gleam@dict:dict(binary(), binary())} |
{error, list(gleam@dynamic@decode:decode_error())}.
decode_form_data(Event) ->
_pipe = Event,
gleam@dynamic@decode:run(
_pipe,
begin
gleam@dynamic@decode:field(
<<"formData"/utf8>>,
gleam@dynamic@decode:dict(
{decoder, fun gleam@dynamic@decode:decode_string/1},
{decoder, fun gleam@dynamic@decode:decode_string/1}
),
fun(Form_data) -> gleam@dynamic@decode:success(Form_data) end
)
end
).
-file("src/sprocket/html/events.gleam", 240).
?DOC(" Decode the key from a key press event.\n").
-spec decode_keypress(gleam@dynamic:dynamic_()) -> {ok, binary()} |
{error, list(gleam@dynamic@decode:decode_error())}.
decode_keypress(Event) ->
_pipe = Event,
gleam@dynamic@decode:run(
_pipe,
begin
gleam@dynamic@decode:field(
<<"key"/utf8>>,
{decoder, fun gleam@dynamic@decode:decode_string/1},
fun(Key) -> gleam@dynamic@decode:success(Key) end
)
end
).