-module(json_canvas@internal@encode@edge). -compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch]). -export([encode_edge_id/1, encode_side/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(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@internal@encode@node_id:encode_node_id( erlang:element(3, Edge) )}, {<<"toNode"/utf8>>, json_canvas@internal@encode@node_id:encode_node_id( erlang:element(6, Edge) )}], From_end = case erlang:element(5, Edge) of with_arrow -> {some, gleam@json:string(<<"arrow"/utf8>>)}; without_arrow -> none end, To_end = case erlang:element(8, Edge) of with_arrow -> none; without_arrow -> {some, gleam@json:string(<<"none"/utf8>>)} end, Optional_entries = [{<<"fromSide"/utf8>>, gleam@option:map(erlang:element(4, Edge), fun encode_side/1)}, {<<"fromEnd"/utf8>>, From_end}, {<<"toSide"/utf8>>, gleam@option:map(erlang:element(7, Edge), fun encode_side/1)}, {<<"toEnd"/utf8>>, To_end}, {<<"color"/utf8>>, gleam@option:map(erlang:element(9, Edge), fun gleam@json:string/1)}, {<<"label"/utf8>>, gleam@option:map(erlang:element(10, Edge), fun gleam@json:string/1)}], json_canvas@internal@encode@json_object:json_object( Required_entries, Optional_entries ).