Packages
ckeditor5_phoenix
1.27.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/installer/installer.ex
defmodule CKEditor5.Installer do
@moduledoc """
Module responsible for downloading CKEditor 5 NPM packages into deps folder.
"""
alias CKEditor5.Installer.NPMRegistry
@default_editor_version Mix.Project.config()[:cke][:default_editor_version]
@doc """
Installs CKEditor 5 packages.
## Options
* `:premium` - If true, installs CKEditor 5 Premium Features package as well.
* `:version` - Specifies the version to install. If not provided, installs the latest version.
"""
def install(opts \\ []) do
packages = ["ckeditor5"]
packages =
if Keyword.get(opts, :premium, false) do
packages ++ ["ckeditor5-premium-features"]
else
packages
end
packages
|> Enum.map(fn package ->
Task.async(fn -> install_package(package, opts) end)
end)
|> Enum.each(&Task.await(&1, :infinity))
end
defp install_package(package_name, opts) do
version = Keyword.get(opts, :version, @default_editor_version)
NPMRegistry.install_package(
package_name,
version,
"deps/#{package_name}",
&modify_package/1
)
end
defp modify_package(path) do
browser_dist = Path.join(path, "dist/browser")
dist = Path.join(path, "dist")
if File.exists?(browser_dist) do
File.ls!(browser_dist)
|> Enum.filter(fn file ->
String.ends_with?(file, ".js") or String.ends_with?(file, ".css")
end)
|> Enum.each(fn file ->
File.cp!(Path.join(browser_dist, file), Path.join(dist, file))
end)
end
end
end