Packages
lustre
4.3.2
5.7.1
5.7.0
5.6.0
5.5.2
5.5.1
5.5.0
5.4.0
5.3.5
5.3.4
5.3.3
5.3.2
5.3.1
5.3.0
5.2.1
5.2.0
5.1.1
5.1.0
5.0.3
5.0.2
5.0.1
5.0.0
4.6.4
4.6.3
4.6.2
4.6.1
4.6.0
4.5.1
4.5.0
4.4.4
4.4.3
4.4.1
4.4.0
4.3.6
4.3.5
4.3.4
4.3.3
4.3.2
4.3.1
4.3.0
4.2.6
4.2.5
4.2.4
4.2.3
4.2.2
4.2.1
4.2.0
4.1.8
4.1.7
4.1.6
4.1.5
4.1.4
4.1.3
4.1.2
4.1.1
4.1.0
4.0.0
4.0.0-rc1
4.0.0-rc.2
3.1.4
3.1.3
3.1.2
3.1.1
3.1.0
3.0.12
3.0.11
3.0.10
3.0.9
3.0.8
3.0.7
3.0.6
3.0.5
3.0.4
3.0.3
3.0.2
3.0.1
3.0.0
3.0.0-rc.8
3.0.0-rc.7
3.0.0-rc.6
3.0.0-rc.5
3.0.0-rc.4
3.0.0-rc.3
3.0.0-rc.2
3.0.0-rc.1
2.0.1
2.0.0
1.3.0
1.2.0
1.1.0
1.0.0
Create HTML templates, single page applications, Web Components, and real-time server components in Gleam!
Current section
Files
Jump to
Current section
Files
src/lustre@event.erl
-module(lustre@event).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch]).
-export([emit/2, on/2, 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_focus/1, on_blur/1, value/1, on_input/1, checked/1, on_check/1, mouse_position/1, prevent_default/1, on_submit/1, stop_propagation/1]).
-spec emit(binary(), gleam@json:json()) -> lustre@effect:effect(any()).
emit(Event, Data) ->
lustre@effect:event(Event, Data).
-spec on(
binary(),
fun((gleam@dynamic:dynamic_()) -> {ok, RQL} |
{error, list(gleam@dynamic:decode_error())})
) -> lustre@internals@vdom:attribute(RQL).
on(Name, Handler) ->
lustre@attribute:on(Name, Handler).
-spec on_click(RQO) -> lustre@internals@vdom:attribute(RQO).
on_click(Msg) ->
on(<<"click"/utf8>>, fun(_) -> {ok, Msg} end).
-spec on_mouse_down(RQQ) -> lustre@internals@vdom:attribute(RQQ).
on_mouse_down(Msg) ->
on(<<"mousedown"/utf8>>, fun(_) -> {ok, Msg} end).
-spec on_mouse_up(RQS) -> lustre@internals@vdom:attribute(RQS).
on_mouse_up(Msg) ->
on(<<"mouseup"/utf8>>, fun(_) -> {ok, Msg} end).
-spec on_mouse_enter(RQU) -> lustre@internals@vdom:attribute(RQU).
on_mouse_enter(Msg) ->
on(<<"mouseenter"/utf8>>, fun(_) -> {ok, Msg} end).
-spec on_mouse_leave(RQW) -> lustre@internals@vdom:attribute(RQW).
on_mouse_leave(Msg) ->
on(<<"mouseleave"/utf8>>, fun(_) -> {ok, Msg} end).
-spec on_mouse_over(RQY) -> lustre@internals@vdom:attribute(RQY).
on_mouse_over(Msg) ->
on(<<"mouseover"/utf8>>, fun(_) -> {ok, Msg} end).
-spec on_mouse_out(RRA) -> lustre@internals@vdom:attribute(RRA).
on_mouse_out(Msg) ->
on(<<"mouseout"/utf8>>, fun(_) -> {ok, Msg} end).
-spec on_keypress(fun((binary()) -> RRC)) -> lustre@internals@vdom:attribute(RRC).
on_keypress(Msg) ->
on(<<"keypress"/utf8>>, fun(Event) -> _pipe = Event,
_pipe@1 = (gleam@dynamic:field(
<<"key"/utf8>>,
fun gleam@dynamic:string/1
))(_pipe),
gleam@result:map(_pipe@1, Msg) end).
-spec on_keydown(fun((binary()) -> RRE)) -> lustre@internals@vdom:attribute(RRE).
on_keydown(Msg) ->
on(<<"keydown"/utf8>>, fun(Event) -> _pipe = Event,
_pipe@1 = (gleam@dynamic:field(
<<"key"/utf8>>,
fun gleam@dynamic:string/1
))(_pipe),
gleam@result:map(_pipe@1, Msg) end).
-spec on_keyup(fun((binary()) -> RRG)) -> lustre@internals@vdom:attribute(RRG).
on_keyup(Msg) ->
on(<<"keyup"/utf8>>, fun(Event) -> _pipe = Event,
_pipe@1 = (gleam@dynamic:field(
<<"key"/utf8>>,
fun gleam@dynamic:string/1
))(_pipe),
gleam@result:map(_pipe@1, Msg) end).
-spec on_focus(RRO) -> lustre@internals@vdom:attribute(RRO).
on_focus(Msg) ->
on(<<"focus"/utf8>>, fun(_) -> {ok, Msg} end).
-spec on_blur(RRQ) -> lustre@internals@vdom:attribute(RRQ).
on_blur(Msg) ->
on(<<"blur"/utf8>>, fun(_) -> {ok, Msg} end).
-spec value(gleam@dynamic:dynamic_()) -> {ok, binary()} |
{error, list(gleam@dynamic:decode_error())}.
value(Event) ->
_pipe = Event,
(gleam@dynamic:field(
<<"target"/utf8>>,
gleam@dynamic:field(<<"value"/utf8>>, fun gleam@dynamic:string/1)
))(_pipe).
-spec on_input(fun((binary()) -> RRI)) -> lustre@internals@vdom:attribute(RRI).
on_input(Msg) ->
on(<<"input"/utf8>>, fun(Event) -> _pipe = value(Event),
gleam@result:map(_pipe, Msg) end).
-spec checked(gleam@dynamic:dynamic_()) -> {ok, boolean()} |
{error, list(gleam@dynamic:decode_error())}.
checked(Event) ->
_pipe = Event,
(gleam@dynamic:field(
<<"target"/utf8>>,
gleam@dynamic:field(<<"checked"/utf8>>, fun gleam@dynamic:bool/1)
))(_pipe).
-spec on_check(fun((boolean()) -> RRK)) -> lustre@internals@vdom:attribute(RRK).
on_check(Msg) ->
on(<<"change"/utf8>>, fun(Event) -> _pipe = checked(Event),
gleam@result:map(_pipe, Msg) end).
-spec mouse_position(gleam@dynamic:dynamic_()) -> {ok, {float(), float()}} |
{error, list(gleam@dynamic:decode_error())}.
mouse_position(Event) ->
gleam@result:then(
(gleam@dynamic:field(<<"clientX"/utf8>>, fun gleam@dynamic:float/1))(
Event
),
fun(X) ->
gleam@result:then(
(gleam@dynamic:field(
<<"clientY"/utf8>>,
fun gleam@dynamic:float/1
))(Event),
fun(Y) -> {ok, {X, Y}} end
)
end
).
-spec prevent_default(gleam@dynamic:dynamic_()) -> nil.
prevent_default(_) ->
nil.
-spec on_submit(RRM) -> lustre@internals@vdom:attribute(RRM).
on_submit(Msg) ->
on(
<<"submit"/utf8>>,
fun(Event) ->
_ = prevent_default(Event),
{ok, Msg}
end
).
-spec stop_propagation(gleam@dynamic:dynamic_()) -> nil.
stop_propagation(_) ->
nil.