Current section
Files
Jump to
Current section
Files
src/plushie@widget@scrollable.erl
-module(plushie@widget@scrollable).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]).
-define(FILEPATH, "src/plushie/widget/scrollable.gleam").
-export([new/1, width/2, height/2, direction/2, spacing/2, scrollbar_width/2, scrollbar_margin/2, scroller_width/2, anchor/2, on_scroll/2, auto_scroll/2, scrollbar_color/2, scroller_color/2, push/2, extend/2, a11y/2, build/1]).
-export_type([scrollable/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(" Scrollable widget builder (scrollable viewport container).\n").
-opaque scrollable() :: {scrollable,
binary(),
list(plushie@node:node_()),
gleam@option:option(plushie@prop@length:length()),
gleam@option:option(plushie@prop@length:length()),
gleam@option:option(plushie@prop@direction:direction()),
gleam@option:option(integer()),
gleam@option:option(float()),
gleam@option:option(float()),
gleam@option:option(float()),
gleam@option:option(plushie@prop@anchor:anchor()),
gleam@option:option(boolean()),
gleam@option:option(boolean()),
gleam@option:option(plushie@prop@color:color()),
gleam@option:option(plushie@prop@color:color()),
gleam@option:option(plushie@prop@a11y:a11y())}.
-file("src/plushie/widget/scrollable.gleam", 35).
?DOC(" Create a new scrollable builder.\n").
-spec new(binary()) -> scrollable().
new(Id) ->
{scrollable,
Id,
[],
none,
none,
none,
none,
none,
none,
none,
none,
none,
none,
none,
none,
none}.
-file("src/plushie/widget/scrollable.gleam", 56).
?DOC(" Set the width.\n").
-spec width(scrollable(), plushie@prop@length:length()) -> scrollable().
width(S, W) ->
{scrollable,
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),
erlang:element(9, S),
erlang:element(10, S),
erlang:element(11, S),
erlang:element(12, S),
erlang:element(13, S),
erlang:element(14, S),
erlang:element(15, S),
erlang:element(16, S)}.
-file("src/plushie/widget/scrollable.gleam", 61).
?DOC(" Set the height.\n").
-spec height(scrollable(), plushie@prop@length:length()) -> scrollable().
height(S, H) ->
{scrollable,
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),
erlang:element(9, S),
erlang:element(10, S),
erlang:element(11, S),
erlang:element(12, S),
erlang:element(13, S),
erlang:element(14, S),
erlang:element(15, S),
erlang:element(16, S)}.
-file("src/plushie/widget/scrollable.gleam", 66).
?DOC(" Set the direction.\n").
-spec direction(scrollable(), plushie@prop@direction:direction()) -> scrollable().
direction(S, D) ->
{scrollable,
erlang:element(2, S),
erlang:element(3, S),
erlang:element(4, S),
erlang:element(5, S),
{some, D},
erlang:element(7, S),
erlang:element(8, S),
erlang:element(9, S),
erlang:element(10, S),
erlang:element(11, S),
erlang:element(12, S),
erlang:element(13, S),
erlang:element(14, S),
erlang:element(15, S),
erlang:element(16, S)}.
-file("src/plushie/widget/scrollable.gleam", 71).
?DOC(" Set the spacing between children.\n").
-spec spacing(scrollable(), integer()) -> scrollable().
spacing(S, Sp) ->
{scrollable,
erlang:element(2, S),
erlang:element(3, S),
erlang:element(4, S),
erlang:element(5, S),
erlang:element(6, S),
{some, Sp},
erlang:element(8, S),
erlang:element(9, S),
erlang:element(10, S),
erlang:element(11, S),
erlang:element(12, S),
erlang:element(13, S),
erlang:element(14, S),
erlang:element(15, S),
erlang:element(16, S)}.
-file("src/plushie/widget/scrollable.gleam", 76).
?DOC(" Set the scrollbar width.\n").
-spec scrollbar_width(scrollable(), float()) -> scrollable().
scrollbar_width(S, W) ->
{scrollable,
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, W},
erlang:element(9, S),
erlang:element(10, S),
erlang:element(11, S),
erlang:element(12, S),
erlang:element(13, S),
erlang:element(14, S),
erlang:element(15, S),
erlang:element(16, S)}.
-file("src/plushie/widget/scrollable.gleam", 81).
?DOC(" Set the scrollbar margin.\n").
-spec scrollbar_margin(scrollable(), float()) -> scrollable().
scrollbar_margin(S, M) ->
{scrollable,
erlang:element(2, S),
erlang:element(3, S),
erlang:element(4, S),
erlang:element(5, S),
erlang:element(6, S),
erlang:element(7, S),
erlang:element(8, S),
{some, M},
erlang:element(10, S),
erlang:element(11, S),
erlang:element(12, S),
erlang:element(13, S),
erlang:element(14, S),
erlang:element(15, S),
erlang:element(16, S)}.
-file("src/plushie/widget/scrollable.gleam", 86).
?DOC(" Set the scroller (thumb) width.\n").
-spec scroller_width(scrollable(), float()) -> scrollable().
scroller_width(S, W) ->
{scrollable,
erlang:element(2, S),
erlang:element(3, S),
erlang:element(4, S),
erlang:element(5, S),
erlang:element(6, S),
erlang:element(7, S),
erlang:element(8, S),
erlang:element(9, S),
{some, W},
erlang:element(11, S),
erlang:element(12, S),
erlang:element(13, S),
erlang:element(14, S),
erlang:element(15, S),
erlang:element(16, S)}.
-file("src/plushie/widget/scrollable.gleam", 91).
?DOC(" Set the scroll anchor.\n").
-spec anchor(scrollable(), plushie@prop@anchor:anchor()) -> scrollable().
anchor(S, A) ->
{scrollable,
erlang:element(2, S),
erlang:element(3, S),
erlang:element(4, S),
erlang:element(5, S),
erlang:element(6, S),
erlang:element(7, S),
erlang:element(8, S),
erlang:element(9, S),
erlang:element(10, S),
{some, A},
erlang:element(12, S),
erlang:element(13, S),
erlang:element(14, S),
erlang:element(15, S),
erlang:element(16, S)}.
-file("src/plushie/widget/scrollable.gleam", 96).
?DOC(" Enable the scroll event.\n").
-spec on_scroll(scrollable(), boolean()) -> scrollable().
on_scroll(S, Enabled) ->
{scrollable,
erlang:element(2, S),
erlang:element(3, S),
erlang:element(4, S),
erlang:element(5, S),
erlang:element(6, S),
erlang:element(7, S),
erlang:element(8, S),
erlang:element(9, S),
erlang:element(10, S),
erlang:element(11, S),
{some, Enabled},
erlang:element(13, S),
erlang:element(14, S),
erlang:element(15, S),
erlang:element(16, S)}.
-file("src/plushie/widget/scrollable.gleam", 101).
?DOC(" Set whether auto-scroll is enabled.\n").
-spec auto_scroll(scrollable(), boolean()) -> scrollable().
auto_scroll(S, Enabled) ->
{scrollable,
erlang:element(2, S),
erlang:element(3, S),
erlang:element(4, S),
erlang:element(5, S),
erlang:element(6, S),
erlang:element(7, S),
erlang:element(8, S),
erlang:element(9, S),
erlang:element(10, S),
erlang:element(11, S),
erlang:element(12, S),
{some, Enabled},
erlang:element(14, S),
erlang:element(15, S),
erlang:element(16, S)}.
-file("src/plushie/widget/scrollable.gleam", 106).
?DOC(" Set the scrollbar track color.\n").
-spec scrollbar_color(scrollable(), plushie@prop@color:color()) -> scrollable().
scrollbar_color(S, C) ->
{scrollable,
erlang:element(2, S),
erlang:element(3, S),
erlang:element(4, S),
erlang:element(5, S),
erlang:element(6, S),
erlang:element(7, S),
erlang:element(8, S),
erlang:element(9, S),
erlang:element(10, S),
erlang:element(11, S),
erlang:element(12, S),
erlang:element(13, S),
{some, C},
erlang:element(15, S),
erlang:element(16, S)}.
-file("src/plushie/widget/scrollable.gleam", 111).
?DOC(" Set the scroller (thumb) color.\n").
-spec scroller_color(scrollable(), plushie@prop@color:color()) -> scrollable().
scroller_color(S, C) ->
{scrollable,
erlang:element(2, S),
erlang:element(3, S),
erlang:element(4, S),
erlang:element(5, S),
erlang:element(6, S),
erlang:element(7, S),
erlang:element(8, S),
erlang:element(9, S),
erlang:element(10, S),
erlang:element(11, S),
erlang:element(12, S),
erlang:element(13, S),
erlang:element(14, S),
{some, C},
erlang:element(16, S)}.
-file("src/plushie/widget/scrollable.gleam", 116).
?DOC(" Add a child node.\n").
-spec push(scrollable(), plushie@node:node_()) -> scrollable().
push(S, Child) ->
{scrollable,
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),
erlang:element(9, S),
erlang:element(10, S),
erlang:element(11, S),
erlang:element(12, S),
erlang:element(13, S),
erlang:element(14, S),
erlang:element(15, S),
erlang:element(16, S)}.
-file("src/plushie/widget/scrollable.gleam", 121).
?DOC(" Add multiple child nodes.\n").
-spec extend(scrollable(), list(plushie@node:node_())) -> scrollable().
extend(S, Children) ->
{scrollable,
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),
erlang:element(9, S),
erlang:element(10, S),
erlang:element(11, S),
erlang:element(12, S),
erlang:element(13, S),
erlang:element(14, S),
erlang:element(15, S),
erlang:element(16, S)}.
-file("src/plushie/widget/scrollable.gleam", 126).
?DOC(" Set accessibility properties for this widget.\n").
-spec a11y(scrollable(), plushie@prop@a11y:a11y()) -> scrollable().
a11y(S, A) ->
{scrollable,
erlang:element(2, S),
erlang:element(3, S),
erlang:element(4, S),
erlang:element(5, S),
erlang:element(6, S),
erlang:element(7, S),
erlang:element(8, S),
erlang:element(9, S),
erlang:element(10, S),
erlang:element(11, S),
erlang:element(12, S),
erlang:element(13, S),
erlang:element(14, S),
erlang:element(15, S),
{some, A}}.
-file("src/plushie/widget/scrollable.gleam", 131).
?DOC(" Build the scrollable into a renderable Node.\n").
-spec build(scrollable()) -> 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,
<<"direction"/utf8>>,
erlang:element(6, S),
fun plushie@prop@direction:to_prop_value/1
),
_pipe@4 = plushie@widget@build:put_optional_int(
_pipe@3,
<<"spacing"/utf8>>,
erlang:element(7, S)
),
_pipe@5 = plushie@widget@build:put_optional_float(
_pipe@4,
<<"scrollbar_width"/utf8>>,
erlang:element(8, S)
),
_pipe@6 = plushie@widget@build:put_optional_float(
_pipe@5,
<<"scrollbar_margin"/utf8>>,
erlang:element(9, S)
),
_pipe@7 = plushie@widget@build:put_optional_float(
_pipe@6,
<<"scroller_width"/utf8>>,
erlang:element(10, S)
),
_pipe@8 = plushie@widget@build:put_optional(
_pipe@7,
<<"anchor"/utf8>>,
erlang:element(11, S),
fun plushie@prop@anchor:to_prop_value/1
),
_pipe@9 = plushie@widget@build:put_optional_bool(
_pipe@8,
<<"on_scroll"/utf8>>,
erlang:element(12, S)
),
_pipe@10 = plushie@widget@build:put_optional_bool(
_pipe@9,
<<"auto_scroll"/utf8>>,
erlang:element(13, S)
),
_pipe@11 = plushie@widget@build:put_optional(
_pipe@10,
<<"scrollbar_color"/utf8>>,
erlang:element(14, S),
fun plushie@prop@color:to_prop_value/1
),
_pipe@12 = plushie@widget@build:put_optional(
_pipe@11,
<<"scroller_color"/utf8>>,
erlang:element(15, S),
fun plushie@prop@color:to_prop_value/1
),
plushie@widget@build:put_optional(
_pipe@12,
<<"a11y"/utf8>>,
erlang:element(16, S),
fun plushie@prop@a11y:to_prop_value/1
)
end,
{node,
erlang:element(2, S),
<<"scrollable"/utf8>>,
Props,
erlang:element(3, S)}.