Current section
Files
Jump to
Current section
Files
src/json_canvas@internal@encode@node.erl
-module(json_canvas@internal@encode@node).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch]).
-export([encode_group_background_style/1, encode_node/1]).
-spec encode_group_background_style(json_canvas@types:group_background_style()) -> gleam@json:json().
encode_group_background_style(Group_background_style) ->
_pipe = case Group_background_style of
cover ->
<<"cover"/utf8>>;
ratio ->
<<"ratio"/utf8>>;
repeat ->
<<"repeat"/utf8>>
end,
gleam@json:string(_pipe).
-spec encode_node(json_canvas@types:node_()) -> gleam@json:json().
encode_node(Node) ->
case Node of
{text_node, Id, X, Y, Width, Height, Color, Text} ->
Required_entries = [{<<"id"/utf8>>,
json_canvas@internal@encode@node_id:encode_node_id(Id)},
{<<"x"/utf8>>, gleam@json:int(X)},
{<<"y"/utf8>>, gleam@json:int(Y)},
{<<"width"/utf8>>, gleam@json:int(Width)},
{<<"height"/utf8>>, gleam@json:int(Height)},
{<<"text"/utf8>>, gleam@json:string(Text)}],
Optional_entries = [{<<"color"/utf8>>,
gleam@option:map(Color, fun gleam@json:string/1)}],
json_canvas@internal@encode@json_object:json_object(
Required_entries,
Optional_entries
);
{file_node, Id@1, X@1, Y@1, Width@1, Height@1, Color@1, Path, Subpath} ->
Required_entries@1 = [{<<"id"/utf8>>,
json_canvas@internal@encode@node_id:encode_node_id(Id@1)},
{<<"x"/utf8>>, gleam@json:int(X@1)},
{<<"y"/utf8>>, gleam@json:int(Y@1)},
{<<"width"/utf8>>, gleam@json:int(Width@1)},
{<<"height"/utf8>>, gleam@json:int(Height@1)},
{<<"path"/utf8>>, gleam@json:string(Path)}],
Optional_entries@1 = [{<<"color"/utf8>>,
gleam@option:map(Color@1, fun gleam@json:string/1)},
{<<"subpath"/utf8>>,
gleam@option:map(Subpath, fun gleam@json:string/1)}],
json_canvas@internal@encode@json_object:json_object(
Required_entries@1,
Optional_entries@1
);
{link_node, Id@2, X@2, Y@2, Width@2, Height@2, Color@2, Url} ->
Required_entries@2 = [{<<"id"/utf8>>,
json_canvas@internal@encode@node_id:encode_node_id(Id@2)},
{<<"x"/utf8>>, gleam@json:int(X@2)},
{<<"y"/utf8>>, gleam@json:int(Y@2)},
{<<"width"/utf8>>, gleam@json:int(Width@2)},
{<<"height"/utf8>>, gleam@json:int(Height@2)},
{<<"url"/utf8>>, gleam@json:string(Url)}],
Optional_entries@2 = [{<<"color"/utf8>>,
gleam@option:map(Color@2, fun gleam@json:string/1)}],
json_canvas@internal@encode@json_object:json_object(
Required_entries@2,
Optional_entries@2
);
{group_node,
Id@3,
X@3,
Y@3,
Width@3,
Height@3,
Color@3,
Label,
Background,
Background_style} ->
Required_entries@3 = [{<<"id"/utf8>>,
json_canvas@internal@encode@node_id:encode_node_id(Id@3)},
{<<"x"/utf8>>, gleam@json:int(X@3)},
{<<"y"/utf8>>, gleam@json:int(Y@3)},
{<<"width"/utf8>>, gleam@json:int(Width@3)},
{<<"height"/utf8>>, gleam@json:int(Height@3)}],
Optional_entries@3 = [{<<"color"/utf8>>,
gleam@option:map(Color@3, fun gleam@json:string/1)},
{<<"label"/utf8>>,
gleam@option:map(Label, fun gleam@json:string/1)},
{<<"background"/utf8>>,
gleam@option:map(Background, fun gleam@json:string/1)},
{<<"backgroundStyle"/utf8>>,
gleam@option:map(
Background_style,
fun encode_group_background_style/1
)}],
json_canvas@internal@encode@json_object:json_object(
Required_entries@3,
Optional_entries@3
)
end.