Sha256: 4b89b9a631342810453ca50ca1cf4f2f927ae55ffe66dc915e1f4cf1cbb2cc4e

Contents?: true

Size: 901 Bytes

Versions: 26

Compression:

Stored size: 901 Bytes

Contents

# frozen_string_literal: true

require 'singleton'
require 'terser'

module CKEditor5::Rails::Assets
  class WebComponentBundle
    include ActionView::Helpers::TagHelper
    include Singleton

    WEBCOMPONENTS_PATH = File.join(__dir__, 'webcomponents')
    WEBCOMPONENTS_MODULES = [
      'utils.mjs',
      'components/editable.mjs',
      'components/ui-part.mjs',
      'components/editor.mjs',
      'components/context.mjs'
    ].freeze

    def source
      @source ||= compress_source(raw_source)
    end

    def to_html(nonce: nil)
      tag.script(source, type: 'module', nonce: nonce)
    end

    private

    def raw_source
      @raw_source ||= WEBCOMPONENTS_MODULES.map do |file|
        File.read(File.join(WEBCOMPONENTS_PATH, file))
      end.join("\n")
    end

    def compress_source(code)
      Terser.new(compress: true, mangle: true).compile(code).html_safe
    end
  end
end

Version data entries

26 entries across 26 versions & 2 rubygems

Version Path
ckeditor5-1.29.1 lib/ckeditor5/rails/assets/webcomponent_bundle.rb
ckeditor5-1.29.0 lib/ckeditor5/rails/assets/webcomponent_bundle.rb
ckeditor5-1.82.3 lib/ckeditor5/rails/assets/webcomponent_bundle.rb
ckeditor5-1.28.2 lib/ckeditor5/rails/assets/webcomponent_bundle.rb
ckeditor5-1.28.1 lib/ckeditor5/rails/assets/webcomponent_bundle.rb
ckeditor5-1.28.0 lib/ckeditor5/rails/assets/webcomponent_bundle.rb
ckeditor5-1.27.3 lib/ckeditor5/rails/assets/webcomponent_bundle.rb
ckeditor5-1.27.2 lib/ckeditor5/rails/assets/webcomponent_bundle.rb
ckeditor5-1.27.1 lib/ckeditor5/rails/assets/webcomponent_bundle.rb
ckeditor5-1.27.0 lib/ckeditor5/rails/assets/webcomponent_bundle.rb
ckeditor5-1.26.2 lib/ckeditor5/rails/assets/webcomponent_bundle.rb
ckeditor5-1.26.1 lib/ckeditor5/rails/assets/webcomponent_bundle.rb
ckeditor5-1.26.0 lib/ckeditor5/rails/assets/webcomponent_bundle.rb
ckeditor5-1.25.0 lib/ckeditor5/rails/assets/webcomponent_bundle.rb
ckeditor5-1.24.10 lib/ckeditor5/rails/assets/webcomponent_bundle.rb
trusty-cms-7.0.9.1 vendor/bundle/ruby/3.3.0/gems/ckeditor5-1.24.9/lib/ckeditor5/rails/assets/webcomponent_bundle.rb
ckeditor5-1.24.9 lib/ckeditor5/rails/assets/webcomponent_bundle.rb
ckeditor5-1.24.8 lib/ckeditor5/rails/assets/webcomponent_bundle.rb
ckeditor5-1.24.6 lib/ckeditor5/rails/assets/webcomponent_bundle.rb
ckeditor5-1.24.5 lib/ckeditor5/rails/assets/webcomponent_bundle.rb