Files
bDS2/lib/bds/desktop/shell_live/layout.ex
2026-05-01 09:23:54 +02:00

54 lines
1.6 KiB
Elixir

defmodule BDS.Desktop.ShellLive.Layout do
@moduledoc false
alias BDS.UI.Workbench
def sync(workbench, params) do
workbench
|> maybe_set_sidebar_width(Map.get(params, "sidebar_width"))
|> maybe_set_assistant_width(Map.get(params, "assistant_sidebar_width"))
end
def resize(workbench, "sidebar", width) do
workbench
|> Workbench.set_sidebar_width(parse_width(width))
|> Map.put(:sidebar_visible, true)
end
def resize(workbench, "assistant", width) do
workbench
|> Workbench.set_assistant_sidebar_width(parse_width(width))
|> Map.put(:assistant_sidebar_visible, true)
end
def resize(workbench, _target, _width), do: workbench
def ignore_shortcut?(params) do
Map.get(params, "alt", false) or
Map.get(params, "contentEditable", false) or
Map.get(params, "content_editable", false) or
Map.get(params, "tag") in ["INPUT", "TEXTAREA", "SELECT"] or
Map.get(params, :tag) in ["INPUT", "TEXTAREA", "SELECT"]
end
defp maybe_set_sidebar_width(workbench, nil), do: workbench
defp maybe_set_sidebar_width(workbench, width),
do: Workbench.set_sidebar_width(workbench, parse_width(width))
defp maybe_set_assistant_width(workbench, nil), do: workbench
defp maybe_set_assistant_width(workbench, width),
do: Workbench.set_assistant_sidebar_width(workbench, parse_width(width))
defp parse_width(width) when is_integer(width), do: width
defp parse_width(width) when is_binary(width) do
case Integer.parse(width) do
{parsed, _rest} -> parsed
:error -> 0
end
end
defp parse_width(_), do: 0
end