Packages
ckeditor5_phoenix
1.10.2
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.
"""
use Memoize
alias CKEditor5.{Config, Errors, Helpers}
alias CKEditor5.Preset.Parser
@default_presets %{
"default" => %{
config: %{
toolbar: [
:undo,
:redo,
:|,
:heading,
:|,
:fontFamily,
:fontSize,
:fontColor,
:fontBackgroundColor,
:alignment,
:|,
:bold,
:italic,
:underline,
%{
label: "Text Style",
items: [:strikethrough, :superscript, :subscript]
},
:|,
:link,
:insertImage,
:insertTable,
:insertTableLayout,
:blockQuote,
:emoji,
:mediaEmbed,
:|,
:bulletedList,
:numberedList,
:todoList,
:outdent,
:indent
],
plugins: [
:Alignment,
:AccessibilityHelp,
:Autoformat,
:AutoImage,
:Autosave,
:BlockQuote,
:Bold,
:CloudServices,
:Essentials,
:Emoji,
:Mention,
:Heading,
:FontFamily,
:FontSize,
:FontColor,
:FontBackgroundColor,
:ImageBlock,
:ImageCaption,
:ImageInline,
:ImageInsert,
:ImageInsertViaUrl,
:ImageResize,
:ImageStyle,
:ImageTextAlternative,
:ImageToolbar,
:ImageUpload,
:Indent,
:IndentBlock,
:Italic,
:Link,
:LinkImage,
:List,
:ListProperties,
:MediaEmbed,
:Paragraph,
:PasteFromOffice,
:PictureEditing,
:SelectAll,
:Table,
:TableLayout,
:TableCaption,
:TableCellProperties,
:TableColumnResize,
:TableProperties,
:TableToolbar,
:TextTransformation,
:TodoList,
:Underline,
:Strikethrough,
:Superscript,
:Subscript,
:Undo,
:Base64UploadAdapter
],
table: %{
contentToolbar: [
:tableColumn,
:tableRow,
:mergeTableCells,
:tableProperties,
:tableCellProperties,
:toggleTableCaption
]
},
image: %{
toolbar: [
:imageTextAlternative,
:imageStyle,
:imageResize,
:imageInsertViaUrl
]
}
}
}
}
@doc """
Retrieves a preset configuration by name.
Returns `{:ok, preset}` on success, or `{:error, reason}` on failure.
"""
defmemo get(preset_name) do
all_presets = presets_with_default()
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
@doc """
Returns all available presets, merging environment-specific presets with defaults.
"""
def presets do
Config.raw_presets()
|> Helpers.map_keys_to_strings()
|> Map.new()
end
@doc """
Returns all available presets, merging environment-specific presets with defaults.
"""
def presets_with_default do
Map.merge(@default_presets, presets())
end
end