-module(json_canvas@edge). -compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch]). -export([decode_edge/1]). -export_type([edge_id/0, edge_label/0, edge/0]). -type edge_id() :: {edge_id, binary()}. -type edge_label() :: {edge_label, binary()}. -type edge() :: {edge, edge_id(), json_canvas@types:node_id(), gleam@option:option(json_canvas@edge@side:side()), json_canvas@edge@endpoint_shape:endpoint_shape(), json_canvas@types:node_id(), gleam@option:option(json_canvas@edge@side:side()), json_canvas@edge@endpoint_shape:endpoint_shape(), gleam@option:option(json_canvas@types:color()), gleam@option:option(edge_label())}. -spec decode_edge(gleam@dynamic:dynamic_()) -> {ok, edge()} | {error, list(gleam@dynamic:decode_error())}. decode_edge(Dyn) -> _pipe = Dyn, (gleam@dynamic:decode9( fun(Field@0, Field@1, Field@2, Field@3, Field@4, Field@5, Field@6, Field@7, Field@8) -> {edge, Field@0, Field@1, Field@2, Field@3, Field@4, Field@5, Field@6, Field@7, Field@8} 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) -> {edge_id, Field@0} end ) end), gleam@dynamic:field(<<"fromNode"/utf8>>, fun(Dyn@2) -> _pipe@3 = Dyn@2, _pipe@4 = gleam@dynamic:string(_pipe@3), gleam@result:map( _pipe@4, fun(Field@0) -> {node_id, Field@0} end ) end), gleam@dynamic:optional_field( <<"fromSide"/utf8>>, fun json_canvas@edge@side:decode_side/1 ), fun(Dyn@3) -> _pipe@5 = Dyn@3, _pipe@6 = (gleam@dynamic:optional_field( <<"fromEnd"/utf8>>, fun json_canvas@edge@endpoint_shape:decode_endpoint_shape/1 ))(_pipe@5), gleam@result:map( _pipe@6, fun(_capture) -> gleam@option:unwrap(_capture, without_arrow) end ) end, gleam@dynamic:field(<<"toNode"/utf8>>, fun(Dyn@4) -> _pipe@7 = Dyn@4, _pipe@8 = gleam@dynamic:string(_pipe@7), gleam@result:map( _pipe@8, fun(Field@0) -> {node_id, Field@0} end ) end), gleam@dynamic:optional_field( <<"toSide"/utf8>>, fun json_canvas@edge@side:decode_side/1 ), fun(Dyn@5) -> _pipe@9 = Dyn@5, _pipe@10 = (gleam@dynamic:optional_field( <<"toEnd"/utf8>>, fun json_canvas@edge@endpoint_shape:decode_endpoint_shape/1 ))(_pipe@9), gleam@result:map( _pipe@10, fun(_capture@1) -> gleam@option:unwrap(_capture@1, with_arrow) end ) end, gleam@dynamic:optional_field( <<"color"/utf8>>, fun(Dyn@6) -> _pipe@11 = Dyn@6, _pipe@12 = gleam@dynamic:string(_pipe@11), gleam@result:map(_pipe@12, fun(Field@0) -> {color, Field@0} end) end ), gleam@dynamic:optional_field( <<"label"/utf8>>, fun(Dyn@7) -> _pipe@13 = Dyn@7, _pipe@14 = gleam@dynamic:string(_pipe@13), gleam@result:map( _pipe@14, fun(Field@0) -> {edge_label, Field@0} end ) end ) ))(_pipe).