Packages
ckeditor5_phoenix
1.2.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/preset/preset.ex
defmodule CKEditor5.Preset do
@moduledoc """
Represents a CKEditor 5 preset configuration.
"""
alias CKEditor5.{Cloud, License}
@derive {Jason.Encoder, only: [:type, :config, :license]}
@type t :: %__MODULE__{
type: atom(),
config: map(),
cloud: Cloud.t() | nil,
license: License.t()
}
defstruct config: %{},
type: :classic,
cloud: nil,
license: License.gpl()
@doc """
Sets the type of the preset.
"""
def of_type(%__MODULE__{} = preset, type) when is_atom(type) do
%__MODULE__{preset | type: type}
end
@doc """
Merges the current preset configuration with the provided overrides.
"""
def merge(%__MODULE__{} = preset, overrides) when overrides in [nil, %{}] do
preset
end
def merge(%__MODULE__{} = preset, overrides) when is_map(overrides) do
%__MODULE__{
type: overrides[:type] || preset.type,
config: Map.merge(preset.config || %{}, overrides[:config] || %{}),
license: overrides[:license] || preset.license,
cloud: Cloud.merge(preset.cloud, overrides[:cloud])
}
end
@doc """
Checks if the preset has a Cloud configuration.
Returns true if the cloud field is not nil, false otherwise.
"""
def configured_cloud?(%__MODULE__{cloud: cloud}), do: cloud != nil
end