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

def external_plugin(name, **kwargs)

def external_plugin(name, **kwargs)
  register_plugin(Editor::PropsExternalPlugin.new(name, **kwargs))
end

def inline_plugin(name, code)

def inline_plugin(name, code)
  register_plugin(Editor::PropsInlinePlugin.new(name, code))
end

def plugin(name, **kwargs)

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)

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)

def register_plugin(plugin_obj)
  config[:plugins] << plugin_obj
  plugin_obj
end