-module(lightspeed@component).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]).
-define(FILEPATH, "src/lightspeed/component.gleam").
-export([html/1, to_html/1, fingerprint/1]).
-export_type([rendered/0, command/1, component/2]).
-if(?OTP_RELEASE >= 27).
-define(MODULEDOC(Str), -moduledoc(Str)).
-define(DOC(Str), -doc(Str)).
-else.
-define(MODULEDOC(Str), -compile([])).
-define(DOC(Str), -compile([])).
-endif.
?MODULEDOC(" Component contract for Lightspeed applications.\n").
-type rendered() :: {rendered, binary(), binary()}.
-type command(HJX) :: no_command |
{dispatch, HJX} |
{push, lightspeed@agent@isa:instruction()}.
-type component(HJY, HJZ) :: {component,
fun(() -> HJY),
fun((HJY, HJZ) -> {HJY, list(command(HJZ))}),
fun((HJY) -> rendered())}.
-file("src/lightspeed/component.gleam", 30).
?DOC(" Construct rendered HTML with a development fingerprint.\n").
-spec html(binary()) -> rendered().
html(Markup) ->
{rendered, Markup, <<"dev"/utf8>>}.
-file("src/lightspeed/component.gleam", 35).
?DOC(" Extract HTML from a rendered value.\n").
-spec to_html(rendered()) -> binary().
to_html(Rendered) ->
erlang:element(2, Rendered).
-file("src/lightspeed/component.gleam", 40).
?DOC(" Extract the static-shape fingerprint from a rendered value.\n").
-spec fingerprint(rendered()) -> binary().
fingerprint(Rendered) ->
erlang:element(3, Rendered).