Packages
ckeditor5_phoenix
1.14.1
1.28.2
1.28.1
1.28.0
1.27.2
1.27.1
1.27.0
1.26.0
1.25.1
1.25.0
1.24.2
1.24.1
1.24.0
1.23.0
1.22.0
1.21.0
1.20.0
1.19.0
1.18.0
1.17.2
1.17.1
1.17.0
1.16.1
1.16.0
1.15.8
1.15.7
1.15.6
1.15.5
1.15.4
1.15.3
1.15.2
1.15.1
1.15.0
1.14.2
1.14.1
1.14.0
1.13.0
1.12.0
1.11.0
1.10.2
1.10.1
1.10.0
1.9.0
1.8.0
1.7.0
1.6.0
1.5.0
1.4.1
1.4.0
1.3.0
1.2.1
1.2.0
1.1.0
1.0.8
1.0.7
CKEditor 5 integration for Phoenix Framework
Current section
Files
Jump to
Current section
Files
lib/components/editor/assigns/preset_handler.ex
defmodule CKEditor5.Components.Editor.PresetHandler do
@moduledoc """
Handles preset loading and type overriding for the Editor component.
"""
alias CKEditor5.Errors.Error
alias CKEditor5.Preset
alias CKEditor5.Preset.EditorType
@doc """
Loads the preset configuration from the preset name and applies type override if specified.
"""
def process_preset(assigns) do
assigns
|> load_preset()
|> override_preset_type()
end
# Loads the preset configuration from the preset name
defp load_preset(%{preset: %Preset{}} = assigns), do: assigns
defp load_preset(%{preset: preset} = assigns) when is_binary(preset) do
preset = CKEditor5.Presets.get!(preset)
Map.put(assigns, :preset, preset)
end
# Overrides the preset type if a type is provided in the assigns
defp override_preset_type(%{type: nil} = assigns), do: assigns
defp override_preset_type(%{type: type, preset: preset} = assigns) do
type_atom =
cond do
is_atom(type) -> type
is_binary(type) -> String.to_atom(type)
end
if EditorType.valid?(type_atom) do
new_preset = Preset.of_type(preset, type_atom)
Map.put(assigns, :preset, new_preset)
else
raise Error, "Invalid editor type provided: #{type}"
end
end
end