class CKEditor5::Rails::Cdn::CKBoxBundle

def initialize(version, theme: :lark, cdn: Engine.default_preset.cdn, translations: [])

def initialize(version, theme: :lark, cdn: Engine.default_preset.cdn, translations: [])
  super()
  @cdn = cdn
  @version = version
  @theme = theme
  @translations = translations
  validate!
end

def scripts

def scripts
  @scripts ||= [
    Assets::JSUrlImportMeta.new(
      create_cdn_url('ckbox', version, 'ckbox.js'),
      window_name: 'CKBox'
    ),
    *translations_js_url_imports
  ]
end

def stylesheets

def stylesheets
  @stylesheets ||= [
    create_cdn_url('ckbox', version, "styles/themes/#{theme}.css")
  ]
end

def translations_js_url_imports

def translations_js_url_imports
  translations.map do |lang|
    url = create_cdn_url('ckbox', version, "translations/#{lang}.js")
    Assets::JSUrlImportMeta.new(url, window_name: 'CKBOX_TRANSLATIONS', translation: true)
  end
end

def validate!

def validate!
  raise ArgumentError, 'version must be semver' unless version.is_a?(Semver)
  raise ArgumentError, 'translations must be an array' unless translations.is_a?(Array)
  return if theme.is_a?(String) || theme.is_a?(Symbol)
  raise ArgumentError,
        'theme must be a string or symbol'
end