Packages
ckeditor5_phoenix
1.9.0
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/cloud/assigns.ex
defmodule CKEditor5.Components.Cloud.Assigns do
@moduledoc """
Provides module responsible for creating %Cloud{} structures based on the provided assigns.
"""
alias CKEditor5.Cloud
alias CKEditor5.Preset.CloudCompatibilityChecker
alias CKEditor5.Presets
@doc """
Normalizes the assigns to create a %Cloud{} structure.
"""
defmacro cloud_build_attrs do
quote do
attr :preset, :string, default: "default", doc: "The name of the preset to use."
attr :ckbox, :any,
default: nil,
doc: "The CKBox configuration to use. If not provided, the `cloud.ckbox` will be used."
attr :premium, :boolean,
default: nil,
doc:
"Whether to use the premium features of CKEditor 5. If true, the `cloud.premium` will be used."
attr :translations, :any,
default: nil,
doc:
"The languages codes for the editor (e.g., 'en', 'pl', 'de', etc.)." <>
"If not provided, then the `cloud.translations` will be used to load language files."
end
end
@doc """
Builds the cloud configuration based on the provided assigns.
It retrieves the preset by name, checks if the cloud configuration is valid,
and overrides translations and other cloud settings if necessary.
"""
def build_cloud!(assigns) do
preset = Presets.get!(assigns.preset)
CloudCompatibilityChecker.ensure_cloud_configured!(preset)
overrides =
Map.take(assigns, [:translations, :premium, :ckbox])
|> Enum.reject(fn {_k, v} -> is_nil(v) end)
|> Map.new()
Cloud.merge(preset.cloud, overrides)
end
end