Sha256: 33d1d078822ef4aab38e417d8374aeeed24307ac90884f5695f2d03931c438fc
Contents?: true
Size: 1.36 KB
Versions: 1
Compression:
Stored size: 1.36 KB
Contents
# frozen_string_literal: true require 'singleton' require 'terser' require_relative '../editor/props_inline_plugin' module CKEditor5::Rails module 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 @to_html ||= tag.script(source, type: 'module', nonce: true) end private def raw_source @raw_source ||= WEBCOMPONENTS_MODULES.map do |file| content = File.read(File.join(WEBCOMPONENTS_PATH, file)) if file == 'utils.mjs' inject_inline_code_signatures(content) else content end end.join("\n") end def inject_inline_code_signatures(content) json_signatures = Editor::InlinePluginsSignaturesRegistry.instance.to_a.to_json content.sub('__INLINE_CODE_SIGNATURES_PLACEHOLDER__', json_signatures) end def compress_source(code) Terser.new(compress: true, mangle: true).compile(code).html_safe end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
ckeditor5-1.23.3 | lib/ckeditor5/rails/assets/webcomponent_bundle.rb |