Current section
Files
Jump to
Current section
Files
src/plushie@widget@stack.erl
-module(plushie@widget@stack).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]).
-define(FILEPATH, "src/plushie/widget/stack.gleam").
-export([new/1, width/2, height/2, padding/2, clip/2, push/2, extend/2, a11y/2, build/1]).
-export_type([stack/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.
?MODULEDOC(" Stack container widget builder.\n").
-opaque stack() :: {stack,
binary(),
list(plushie@node:node_()),
gleam@option:option(plushie@prop@length:length()),
gleam@option:option(plushie@prop@length:length()),
gleam@option:option(plushie@prop@padding:padding()),
gleam@option:option(boolean()),
gleam@option:option(plushie@prop@a11y:a11y())}.
-file("src/plushie/widget/stack.gleam", 25).
?DOC(" Create a new stack builder.\n").
-spec new(binary()) -> stack().
new(Id) ->
{stack, Id, [], none, none, none, none, none}.
-file("src/plushie/widget/stack.gleam", 38).
?DOC(" Set the width.\n").
-spec width(stack(), plushie@prop@length:length()) -> stack().
width(S, W) ->
{stack,
erlang:element(2, S),
erlang:element(3, S),
{some, W},
erlang:element(5, S),
erlang:element(6, S),
erlang:element(7, S),
erlang:element(8, S)}.
-file("src/plushie/widget/stack.gleam", 43).
?DOC(" Set the height.\n").
-spec height(stack(), plushie@prop@length:length()) -> stack().
height(S, H) ->
{stack,
erlang:element(2, S),
erlang:element(3, S),
erlang:element(4, S),
{some, H},
erlang:element(6, S),
erlang:element(7, S),
erlang:element(8, S)}.
-file("src/plushie/widget/stack.gleam", 48).
?DOC(" Set the padding.\n").
-spec padding(stack(), plushie@prop@padding:padding()) -> stack().
padding(S, P) ->
{stack,
erlang:element(2, S),
erlang:element(3, S),
erlang:element(4, S),
erlang:element(5, S),
{some, P},
erlang:element(7, S),
erlang:element(8, S)}.
-file("src/plushie/widget/stack.gleam", 53).
?DOC(" Set whether overflowing content is clipped.\n").
-spec clip(stack(), boolean()) -> stack().
clip(S, C) ->
{stack,
erlang:element(2, S),
erlang:element(3, S),
erlang:element(4, S),
erlang:element(5, S),
erlang:element(6, S),
{some, C},
erlang:element(8, S)}.
-file("src/plushie/widget/stack.gleam", 58).
?DOC(" Add a child node.\n").
-spec push(stack(), plushie@node:node_()) -> stack().
push(S, Child) ->
{stack,
erlang:element(2, S),
lists:append(erlang:element(3, S), [Child]),
erlang:element(4, S),
erlang:element(5, S),
erlang:element(6, S),
erlang:element(7, S),
erlang:element(8, S)}.
-file("src/plushie/widget/stack.gleam", 63).
?DOC(" Add multiple child nodes.\n").
-spec extend(stack(), list(plushie@node:node_())) -> stack().
extend(S, Children) ->
{stack,
erlang:element(2, S),
lists:append(erlang:element(3, S), Children),
erlang:element(4, S),
erlang:element(5, S),
erlang:element(6, S),
erlang:element(7, S),
erlang:element(8, S)}.
-file("src/plushie/widget/stack.gleam", 68).
?DOC(" Set accessibility properties for this widget.\n").
-spec a11y(stack(), plushie@prop@a11y:a11y()) -> stack().
a11y(S, A) ->
{stack,
erlang:element(2, S),
erlang:element(3, S),
erlang:element(4, S),
erlang:element(5, S),
erlang:element(6, S),
erlang:element(7, S),
{some, A}}.
-file("src/plushie/widget/stack.gleam", 73).
?DOC(" Build the stack into a renderable Node.\n").
-spec build(stack()) -> plushie@node:node_().
build(S) ->
Props = begin
_pipe = maps:new(),
_pipe@1 = plushie@widget@build:put_optional(
_pipe,
<<"width"/utf8>>,
erlang:element(4, S),
fun plushie@prop@length:to_prop_value/1
),
_pipe@2 = plushie@widget@build:put_optional(
_pipe@1,
<<"height"/utf8>>,
erlang:element(5, S),
fun plushie@prop@length:to_prop_value/1
),
_pipe@3 = plushie@widget@build:put_optional(
_pipe@2,
<<"padding"/utf8>>,
erlang:element(6, S),
fun plushie@prop@padding:to_prop_value/1
),
_pipe@4 = plushie@widget@build:put_optional_bool(
_pipe@3,
<<"clip"/utf8>>,
erlang:element(7, S)
),
plushie@widget@build:put_optional(
_pipe@4,
<<"a11y"/utf8>>,
erlang:element(8, S),
fun plushie@prop@a11y:to_prop_value/1
)
end,
{node, erlang:element(2, S), <<"stack"/utf8>>, Props, erlang:element(3, S)}.