module CKEditor5::Rails::Presets::Concerns::PluginMethods

def external_plugin(name, **kwargs)

Other tags:
    Example: Load with import alias -
    Example: Load plugin from URL -

Parameters:
  • kwargs (Hash) -- Plugin options like :script, :import_as, :window_name, :stylesheets
  • name (Symbol) -- Plugin name
def external_plugin(name, **kwargs)
  register_plugin(Editor::PropsExternalPlugin.new(name, **kwargs))
end

def inline_plugin(name, code)

Other tags:
    Example: Define custom highlight plugin -

Parameters:
  • code (String) -- JavaScript code defining the plugin
  • name (Symbol) -- Plugin name
def inline_plugin(name, code)
  if code.match?(/export default/)
    raise UnsupportedESModuleError,
          'Inline plugins must not use ES module syntax!' \
          'Use async async imports instead!'
  end
  unless code.match?(/return class(\s+\w+)?\s+extends\s+Plugin/)
    raise MissingInlinePluginError,
          'Plugin code must return a class that extends Plugin!'
  end
  plugin = Editor::PropsInlinePlugin.new(name, code)
  plugin.compress! unless disallow_inline_plugin_compression
  register_plugin(plugin)
end

def patch_plugin(plugin)

Other tags:
    Example: Apply patch for specific CKEditor versions -

Returns:
  • (Editor::PropsPatchPlugin, nil) - Returns plugin if registered, nil if not applicable

Raises:
  • (InvalidPatchPluginError) - When provided plugin is not a PropsPatchPlugin

Parameters:
  • plugin (Editor::PropsPatchPlugin) -- Patch plugin instance to register
def patch_plugin(plugin)
  unless plugin.is_a?(Editor::PropsPatchPlugin)
    raise InvalidPatchPluginError, 'Provided plugin must be a PropsPatchPlugin instance'
  end
  return unless !@version || plugin.applicable_for_version?(@version)
  register_plugin(plugin)
end

def plugin(name, **kwargs)

Other tags:
    Example: Register custom plugin -
    Example: Register premium plugin -
    Example: Register standard plugin -

Parameters:
  • kwargs (Hash) -- Plugin configuration options
  • name (Symbol, Editor::PropsBasePlugin) -- Plugin name or instance
def plugin(name, **kwargs)
  premium(true) if kwargs[:premium] && respond_to?(:premium)
  register_plugin(PluginsBuilder.create_plugin(name, **kwargs))
end

def plugins(*names, **kwargs, &block)

Other tags:
    Example: Configure plugins with block -
    Example: Register multiple plugins -

Parameters:
  • kwargs (Hash) -- Shared plugin configuration
  • names (Array) -- Plugin names to register
def plugins(*names, **kwargs, &block)
  config[:plugins] ||= []
  names.each { |name| plugin(name, **kwargs) } unless names.empty?
  builder = PluginsBuilder.new(config[:plugins])
  builder.instance_eval(&block) if block_given?
  builder
end

def register_plugin(plugin_obj)

Returns:
  • (Editor::PropsBasePlugin) - The registered plugin

Parameters:
  • plugin_obj (Editor::PropsBasePlugin) -- Plugin instance to register
def register_plugin(plugin_obj)
  config[:plugins] ||= []
  config[:plugins] << plugin_obj
  plugin_obj
end