Files
labelmaker/lib/labelmaker_web/constants.ex
2025-12-16 18:27:39 -05:00

119 lines
2.4 KiB
Elixir

defmodule LabelmakerWeb.Constants do
@defaults %{
align: "center",
color: "black",
font: "Helvetica",
height: "300",
label: "",
label_too_long: false,
link: "",
outline: "white",
size: "72",
rows: 2,
width: "400"
}
@form_defaults %{
sizing: "font",
preview_background: "r",
preview_height: @defaults.size,
preview_text: []
}
@permitted_keys @defaults
|> Map.merge(@form_defaults)
|> Map.keys()
|> Enum.map(&Atom.to_string/1)
@alignments [
"left",
"center",
"right"
]
@gravity [
"west",
"center",
"east"
]
@colors [
"black",
"blue",
"brown",
"gray",
"green",
"orange",
"pink",
"purple",
"red",
"white",
"yellow"
]
@danger "#FF6B6B"
@font_map %{
"cs" => "Comic-Sans-MS",
"comic" => "Comic-Sans-MS",
"comic sans" => "Comic-Sans-MS",
"comic-sans" => "Comic-Sans-MS",
"comic-sans-ms" => "Comic-Sans-MS",
"cr" => "Courier",
"courier" => "Courier",
"g" => "Georgia",
"georgia" => "Georgia",
"h" => "Helvetica",
"helvetica" => "Helvetica",
"i" => "Impact",
"impact" => "Impact",
"v" => "Verdana",
"verdana" => "Verdana"
}
@labels_per_page 4
@max_height 1024
@max_width 1024
@max_label_length 1024
@max_label_error "1024-character maximum"
@rows_min 2
@rows_max 8
@sizes 16..128
|> Enum.to_list()
|> Enum.take_every(8)
|> Enum.map(&Integer.to_string/1)
@sizing_values ["font", "wxh"]
def colors, do: @colors
def danger, do: @danger
def defaults, do: @defaults
def fonts,
do:
@font_map
|> Map.values()
|> Enum.uniq()
|> Enum.map(fn color -> color |> String.replace("-MS", "") |> String.replace("-", " ") end)
def font_map, do: @font_map
def labels_per_page, do: @labels_per_page
def max_height, do: @max_height
def max_width, do: @max_width
def max_label_length, do: @max_label_length
def max_label_error, do: @max_label_error
def outlines, do: ["none" | @colors]
def permitted_alignments, do: @alignments
def permitted_gravity, do: @gravity
def permitted_keys, do: @permitted_keys
def form_defaults, do: @form_defaults
def rows_min, do: @rows_min
def rows_max, do: @rows_max
def sizes, do: @sizes
def sizing_values, do: @sizing_values
end