src/lightspeed@component@story.erl

-module(lightspeed@component@story).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]).
-define(FILEPATH, "src/lightspeed/component/story.gleam").
-export([story/4, name/1, render/1]).
-export_type([story/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(" Story helpers for function-component template fixtures.\n").

-type story(IIY, IIZ) :: {story,
        binary(),
        fun((IIY, IIZ) -> lightspeed@component:rendered()),
        IIY,
        IIZ}.

-file("src/lightspeed/component/story.gleam", 17).
?DOC(" Build one story.\n").
-spec story(
    binary(),
    fun((IJA, IJB) -> lightspeed@component:rendered()),
    IJA,
    IJB
) -> story(IJA, IJB).
story(Name, Component, Assigns, Slots) ->
    {story, Name, Component, Assigns, Slots}.

-file("src/lightspeed/component/story.gleam", 27).
?DOC(" Story name.\n").
-spec name(story(any(), any())) -> binary().
name(Story) ->
    erlang:element(2, Story).

-file("src/lightspeed/component/story.gleam", 32).
?DOC(" Render story output.\n").
-spec render(story(any(), any())) -> lightspeed@component:rendered().
render(Story) ->
    lightspeed@component@template:render(
        erlang:element(3, Story),
        erlang:element(4, Story),
        erlang:element(5, Story)
    ).