-module(sprocket@render). -compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch]). -export([renderer/2, render_element/2]). -export_type([renderer/1]). -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(false). -type renderer(MJI) :: {renderer, fun((sprocket@internal@reconcile:reconciled_element()) -> MJI)}. -file("src/sprocket/render.gleam", 15). ?DOC(false). -spec renderer( renderer(MJJ), fun((fun((sprocket@internal@reconcile:reconciled_element()) -> MJJ)) -> MJL) ) -> MJL. renderer(R, Cb) -> Cb(erlang:element(2, R)). -file("src/sprocket/render.gleam", 23). ?DOC(false). -spec render_element(sprocket@internal@context:element(), renderer(MJM)) -> MJM. render_element(El, R) -> renderer( R, fun(Render) -> _assert_subject = begin _pipe = ids@cuid:start(), gleam@result:map_error( _pipe, fun(Error) -> sprocket@internal@logger:error( <<"render.render: Failed to start a cuid channel"/utf8>> ), Error end ) end, {ok, Cuid_channel} = case _assert_subject of {ok, _} -> _assert_subject; _assert_fail -> erlang:error(#{gleam_error => let_assert, message => <<"Pattern match failed, no pattern matched the value."/utf8>>, value => _assert_fail, module => <<"sprocket/render"/utf8>>, function => <<"render_element"/utf8>>, line => 28}) end, Dispatch_client_hook_event = fun(_, _, _) -> nil end, Trigger_reconciliation = fun() -> nil end, Update_hook = fun(_, _) -> nil end, Ctx = sprocket@internal@context:new( El, Cuid_channel, Dispatch_client_hook_event, Trigger_reconciliation, Update_hook ), {reconciled_result, _, Reconciled} = sprocket@internal@reconcilers@recursive:reconcile( Ctx, El, none, none ), Render(Reconciled) end ).