Take control over what external links and embedded media is permitted in the Trix editor via copy/paste
MIT License
bundle add trix_embed
yarn add trix-embed@$(bundle show trix_embed | ruby -ne 'puts $_.split(/-/).last')
import Trix from 'trix'
import "@rails/actiontext"
import { Application, Controller } from '@hotwired/stimulus'
import TrixEmbed from 'trix-embed'
const application = Application.start()
TrixEmbed.initialize({ application, Controller, Trix })
Configure allow and/or block lists for external links and embedded media in your Trix editors.
⚠︎ Block lists have precendence!
Note that you can also use wildcards *
in any of lists.
TODO: document...
Allow everything
<form>
<input id="content" name="content" type="hidden">
<trix-editor id="editor" input="content"
data-controller="trix-embed"
data-trix-embed-allowed-link-hosts-value='["*"]'
data-trix-embed-allowed-media-hosts-value='["*"]'>
</trix-editor>
</form>
Allow links to all hosts and allow media (images, videos, etc.) from the following hosts: vimeo.com, voomly.com, youtube.com
<form>
<input id="content" name="content" type="hidden">
<trix-editor id="editor" input="content"
data-controller="trix-embed"
data-trix-embed-allowed-link-hosts-value='["*"]'
data-trix-embed-allowed-media-hosts-value='["vimeo.com", "voomly.com", "youtube.com"]'>
</trix-editor>
</form>
Block everything
<form>
<input id="content" name="content" type="hidden">
<trix-editor id="editor" input="content"
data-controller="trix-embed"
data-trix-embed-block-link-hosts-value='["*"]'
data-trix-embed-block-media-hosts-value='["*"]'>
</trix-editor>
</form>
...or simply.
<form>
<input id="content" name="content" type="hidden">
<trix-editor id="editor" input="content" data-controller="trix-embed">
</trix-editor>
</form>
Block links to the following hosts: 4chan.org, 8chan.net, thepiratebay.org
and block media (images, videos, etc.) from the following hosts: deviantart.com, imgur.com, tumblr.com
<form>
<input id="content" name="content" type="hidden">
<trix-editor id="editor" input="content"
data-controller="trix-embed"
data-trix-embed-blocked-link-hosts-value='["4chan.org", "8chan.net", "thepiratebay.org"]'
data-trix-embed-blocked-media-hosts-value='["deviantart.com", "imgur.com", "tumblr.com"]'>
</trix-editor>
</form>
You'll need to ensure any embedded attachments are prepared for persistence.
class ContentController < ApplicationController
def create
Example.create content: TrixEmbed::Attachment.rewrite_for_storage(params[:content].to_s)
end
end
git clone https://github.com/hopsoft/trix_embed.git
cd trix_embed
bin/dev
yarn
and bundle
to pick up the latestlib/trix_embed/version.rb
. Pre-release versions use .preN
package.json
(make sure it matches). Pre-release versions use -preN
yarn build
- builds both the Ruby gem and the NPM package
rake release
yarn publish --no-git-tag-version --access public --new-version X.X.X
(use same version number)
The gem is available as open source under the terms of the MIT License.