-module(json_canvas@encode@edge). -compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch]). -export([encode_edge_id/1, encode_side/1, encode_edge_label/1, encode_edge/1]). -spec encode_edge_id(json_canvas@types:edge_id()) -> gleam@json:json(). encode_edge_id(Edge_id) -> {edge_id, Id} = Edge_id, gleam@json:string(Id). -spec encode_side(json_canvas@types:side()) -> gleam@json:json(). encode_side(Side) -> _pipe = case Side of top -> <<"top"/utf8>>; right -> <<"right"/utf8>>; bottom -> <<"bottom"/utf8>>; left -> <<"left"/utf8>> end, gleam@json:string(_pipe). -spec encode_edge_label(json_canvas@types:edge_label()) -> gleam@json:json(). encode_edge_label(Edge_label) -> {edge_label, Label} = Edge_label, gleam@json:string(Label). -spec encode_edge(json_canvas@types:edge()) -> gleam@json:json(). encode_edge(Edge) -> Required_entries = [{<<"id"/utf8>>, encode_edge_id(erlang:element(2, Edge))}, {<<"fromNode"/utf8>>, json_canvas@encode@node_id:encode_node_id(erlang:element(3, Edge))}, {<<"toNode"/utf8>>, json_canvas@encode@node_id:encode_node_id(erlang:element(6, Edge))}], From_side = begin _pipe = erlang:element(4, Edge), gleam@option:map( _pipe, fun(Side) -> {<<"fromSide"/utf8>>, encode_side(Side)} end ) end, From_end = case erlang:element(5, Edge) of with_arrow -> {some, {<<"fromEnd"/utf8>>, gleam@json:string(<<"arrow"/utf8>>)}}; without_arrow -> none end, To_side = begin _pipe@1 = erlang:element(7, Edge), gleam@option:map( _pipe@1, fun(Side@1) -> {<<"toSide"/utf8>>, encode_side(Side@1)} end ) end, To_end = case erlang:element(8, Edge) of with_arrow -> none; without_arrow -> {some, {<<"toEnd"/utf8>>, gleam@json:string(<<"none"/utf8>>)}} end, Color@1 = begin _pipe@2 = erlang:element(9, Edge), gleam@option:map( _pipe@2, fun(Color) -> {<<"color"/utf8>>, json_canvas@encode@color:encode_color(Color)} end ) end, Label@1 = begin _pipe@3 = erlang:element(10, Edge), gleam@option:map( _pipe@3, fun(Label) -> {<<"label"/utf8>>, encode_edge_label(Label)} end ) end, Optional_entries = begin _pipe@4 = [From_side, From_end, To_side, To_end, Color@1, Label@1], gleam@option:values(_pipe@4) end, gleam@json:object(lists:append(Required_entries, Optional_entries)).