Fix using trix in sprockets

When Trix was [updated][1] from 1.3.1 to 2.0.4, the ESM bundle of 2.0.4
was used instead of the UMD bundle (the vendored 1.3.1 file used the
UMD bundle). This leads to issues when trying to use Trix with sprockets
because the ESM bundle declares variables like they are scoped to the
file but sprockets will see them as scoped globally.

This commit fixes the issue by replacing the Trix ESM bundle with the
UMD bundle (and upgrades it from 2.0.4 to 2.0.7). Additionally, a Rake
task has been added similar to one previously [added][2] to the guides
for automatic vendoring using Importmap::Packager.

[1]: fab1b522cd11696c7330028fcc7bf25a8a109f5f
[2]: a42863f514e726b864f60ad10e79002fe2b39f5a
This commit is contained in:
Hartley McGuire 2023-10-25 00:17:48 -04:00
parent 4c5c904a21
commit c93a989635
No known key found for this signature in database
GPG Key ID: E823FC1403858A82
3 changed files with 11541 additions and 12487 deletions

@ -1,2 +1,9 @@
* Upgrade Trix to 2.0.7
*Hartley McGuire*
* Fix using Trix with Sprockets
*Hartley McGuire*
Please check [7-1-stable](https://github.com/rails/rails/blob/7-1-stable/actiontext/CHANGELOG.md) for previous changes.

@ -26,4 +26,27 @@ namespace :test do
end
end
task :vendor_trix do
module Importmap; end
require "importmap/packager"
packager = Importmap::Packager.new(vendor_path: "app/assets/javascripts")
imports = packager.import("trix", from: "unpkg")
imports.each do |package, url|
url.gsub!("esm.min.js", "umd.js")
puts %(Vendoring "#{package}" to #{packager.vendor_path}/#{package}.js via download from #{url})
packager.download(package, url)
css_url = url.gsub("umd.js", "css")
puts %(Vendoring "#{package}" to #{packager.vendor_path}/#{package}.css via download from #{css_url})
response = Net::HTTP.get_response(URI(css_url))
if response.code == "200"
File.open(Pathname.new("app/assets/stylesheets/trix.css"), "w+") do |file|
file.write response.body
end
end
end
end
task default: :test

File diff suppressed because it is too large Load Diff