Packages
ckeditor5_phoenix
1.0.8
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/presets.ex
defmodule CKEditor5.Presets do
@moduledoc """
Provides predefined configurations (presets) for CKEditor 5.
"""
alias CKEditor5.Errors
alias CKEditor5.Preset.Parser
@default_presets %{
"default" => %{
config: %{
toolbar: [
:undo,
:redo,
:|,
:heading,
:|,
:bold,
:italic,
:underline,
:|,
:link,
:insertImage,
:mediaEmbed,
:insertTable,
:blockQuote,
:|,
:bulletedList,
:numberedList,
:todoList,
:outdent,
:indent
],
plugins: [
:AccessibilityHelp,
:Autoformat,
:AutoImage,
:Autosave,
:BlockQuote,
:Bold,
:CloudServices,
:Essentials,
:Heading,
:ImageBlock,
:ImageCaption,
:ImageInline,
:ImageInsert,
:ImageInsertViaUrl,
:ImageResize,
:ImageStyle,
:ImageTextAlternative,
:ImageToolbar,
:ImageUpload,
:Indent,
:IndentBlock,
:Italic,
:Link,
:LinkImage,
:List,
:ListProperties,
:MediaEmbed,
:Paragraph,
:PasteFromOffice,
:PictureEditing,
:SelectAll,
:Table,
:TableCaption,
:TableCellProperties,
:TableColumnResize,
:TableProperties,
:TableToolbar,
:TextTransformation,
:TodoList,
:Underline,
:Undo,
:Base64UploadAdapter
],
image: %{
toolbar: [
:imageTextAlternative,
:imageStyle,
:imageResize,
:imageInsertViaUrl
]
}
}
}
}
@doc """
Retrieves a preset configuration by name.
Returns `{:ok, preset}` on success, or `{:error, reason}` on failure.
"""
def get(preset_name) do
all_presets = all()
with {:ok, preset_config} <- Map.fetch(all_presets, preset_name),
{:ok, preset} <- Parser.parse(preset_config) do
{:ok, preset}
else
{:error, reason} ->
{:error, %Errors.InvalidPreset{reason: reason}}
:error ->
{:error,
%Errors.PresetNotFound{
preset_name: preset_name,
available_presets: Map.keys(all_presets)
}}
end
end
@doc """
Retrieves a preset configuration by name, raising an exception on failure.
"""
def get!(preset_name) do
case get(preset_name) do
{:ok, preset} -> preset
{:error, reason} -> raise reason
end
end
defp all do
Map.merge(@default_presets, Application.get_env(:ckeditor5_phoenix, :presets, %{}))
end
end