-module(json_canvas@decode@node). -compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch]). -export([decode_group_background_style/1, decode_node/1]). -spec decode_group_background_style(gleam@dynamic:dynamic_()) -> {ok, json_canvas@types:group_background_style()} | {error, list(gleam@dynamic:decode_error())}. decode_group_background_style(Dyn) -> gleam@result:'try'(gleam@dynamic:string(Dyn), fun(Style) -> case Style of <<"cover"/utf8>> -> {ok, cover}; <<"ratio"/utf8>> -> {ok, ratio}; <<"repeat"/utf8>> -> {ok, repeat}; _ -> {error, [{decode_error, <<"cover, ratio or repeat"/utf8>>, Style, []}]} end end). -spec decode_node(gleam@dynamic:dynamic_()) -> {ok, json_canvas@types:node_()} | {error, list(gleam@dynamic:decode_error())}. decode_node(Dyn) -> gleam@result:'try'( json_canvas@internal@node:decode_generic_node(Dyn), fun(Node) -> case erlang:element(3, Node) of text_node_type -> gleam@result:'try'( (gleam@dynamic:field( <<"text"/utf8>>, fun gleam@dynamic:string/1 ))(Dyn), fun(Text) -> {ok, {text_node, erlang:element(2, Node), erlang:element(4, Node), erlang:element(5, Node), erlang:element(6, Node), erlang:element(7, Node), erlang:element(8, Node), Text}} end ); file_node_type -> gleam@result:'try'( begin _pipe = Dyn, (gleam@dynamic:decode2( fun(Path, Subpath) -> {Path, Subpath} end, gleam@dynamic:field( <<"path"/utf8>>, fun gleam@dynamic:string/1 ), gleam@dynamic:optional_field( <<"subpath"/utf8>>, fun gleam@dynamic:string/1 ) ))(_pipe) end, fun(_use0) -> {Path@1, Subpath@1} = _use0, {ok, {file_node, erlang:element(2, Node), erlang:element(4, Node), erlang:element(5, Node), erlang:element(6, Node), erlang:element(7, Node), erlang:element(8, Node), {file_path, Path@1}, gleam@option:map( Subpath@1, fun(Field@0) -> {subpath, Field@0} end )}} end ); link_node_type -> gleam@result:'try'( (gleam@dynamic:field( <<"url"/utf8>>, fun gleam@dynamic:string/1 ))(Dyn), fun(Url) -> {ok, {link_node, erlang:element(2, Node), erlang:element(4, Node), erlang:element(5, Node), erlang:element(6, Node), erlang:element(7, Node), erlang:element(8, Node), {url, Url}}} end ); group_node_type -> gleam@result:'try'( begin _pipe@1 = Dyn, (gleam@dynamic:decode3( fun(Label, Background, Background_style) -> {Label, Background, Background_style} end, gleam@dynamic:optional_field( <<"label"/utf8>>, fun gleam@dynamic:string/1 ), gleam@dynamic:optional_field( <<"background"/utf8>>, fun gleam@dynamic:string/1 ), gleam@dynamic:optional_field( <<"background_style"/utf8>>, fun decode_group_background_style/1 ) ))(_pipe@1) end, fun(_use0@1) -> {Label@1, Background@1, Background_style@1} = _use0@1, {ok, {group_node, erlang:element(2, Node), erlang:element(4, Node), erlang:element(5, Node), erlang:element(6, Node), erlang:element(7, Node), erlang:element(8, Node), gleam@option:map( Label@1, fun(Field@0) -> {group_label, Field@0} end ), gleam@option:map( Background@1, fun(Field@0) -> {group_background, Field@0} end ), Background_style@1}} end ) end end ).