Packages

CKEditor 5 integration for Phoenix Framework

Retired package: Renamed - Moved to ckeditor5-phoenix

Current section

Files

Jump to
ckeditor5 lib presets.ex
Raw

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, 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, :presets, %{}))
end
end