Current section

Files

Jump to
json_canvas src json_canvas@internal@generic_node.erl
Raw

src/json_canvas@internal@generic_node.erl

-module(json_canvas@internal@generic_node).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch]).
-export([decode_node_attrs/1]).
-export_type([generic_node_attrs/0]).
-type generic_node_attrs() :: {generic_node_attrs,
json_canvas@types:node_id(),
json_canvas@internal@node_type:node_type(),
integer(),
integer(),
integer(),
integer(),
gleam@option:option(json_canvas@types:color())}.
-spec decode_node_attrs(gleam@dynamic:dynamic_()) -> {ok, generic_node_attrs()} |
{error, list(gleam@dynamic:decode_error())}.
decode_node_attrs(Dyn) ->
_pipe = Dyn,
(gleam@dynamic:decode7(
fun(Field@0, Field@1, Field@2, Field@3, Field@4, Field@5, Field@6) -> {generic_node_attrs, Field@0, Field@1, Field@2, Field@3, Field@4, Field@5, Field@6} end,
gleam@dynamic:field(<<"id"/utf8>>, fun(Dyn@1) -> _pipe@1 = Dyn@1,
_pipe@2 = gleam@dynamic:string(_pipe@1),
gleam@result:map(
_pipe@2,
fun(Field@0) -> {node_id, Field@0} end
) end),
gleam@dynamic:field(
<<"type"/utf8>>,
fun json_canvas@internal@node_type:decode_node_type/1
),
gleam@dynamic:field(<<"x"/utf8>>, fun gleam@dynamic:int/1),
gleam@dynamic:field(<<"y"/utf8>>, fun gleam@dynamic:int/1),
gleam@dynamic:field(<<"width"/utf8>>, fun gleam@dynamic:int/1),
gleam@dynamic:field(<<"height"/utf8>>, fun gleam@dynamic:int/1),
gleam@dynamic:optional_field(
<<"color"/utf8>>,
fun(Dyn@2) -> _pipe@3 = Dyn@2,
_pipe@4 = gleam@dynamic:string(_pipe@3),
gleam@result:map(_pipe@4, fun(Field@0) -> {color, Field@0} end) end
)
))(_pipe).