trix-embed
Version:
Take control over what external links and embedded media is permitted in the Trix editor via copy/paste
167 lines (126 loc) • 4.74 kB
Markdown
# Trix Embed
#### Take control over what external links and embedded media is permitted in the Trix editor via copy/paste
<!-- Tocer[start]: Auto-generated, don't remove. -->
## Table of Contents
- [Setup](#setup)
- [Features](#features)
- [Allow / Block Lists](#allow--block-lists)
- [Template Overrides](#template-overrides)
- [Basic Usage](#basic-usage)
- [Allow Lists](#allow-lists)
- [Block Lists](#block-lists)
- [Sponsors](#sponsors)
- [Developing](#developing)
- [Releasing](#releasing)
- [License](#license)
<!-- Tocer[finish]: Auto-generated, don't remove. -->
## Dependencies
- [ActionText](https://github.com/rails/rails/tree/main/actiontext)
- [Stimulus](https://github.com/hotwired/stimulus)
- [Trix](https://github.com/basecamp/trix)
## Setup
```sh
bundle add trix_embed
yarn add trix-embed@$(bundle show trix_embed | ruby -ne 'puts $_.split(/-/).last')
```
```js
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 })
```
## Features
### Allow / Block Lists
Configure allow and/or block lists for external links and embedded media in your Trix editors.
__⚠︎ Block lists have precendence!__
- allowed link hosts
- blocked link hosts
- allowed media hosts
- blocked media hosts
_Note that you can also use wildcards `*` in any of lists._
### Template Overrides
TODO: document...
## Basic Usage
### Allow Lists
- Allow everything
```html
<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`
```html
<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 Lists
- Block everything
```html
<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.
```html
<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`
```html
<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>
```
## Sponsors
<p align="center">
<em>Proudly sponsored by</em>
</p>
<p align="center">
<a href="https://www.clickfunnels.com?utm_source=hopsoft&utm_medium=open-source&utm_campaign=trix_embed">
<img src="https://images.clickfunnel.com/uploads/digital_asset/file/176632/clickfunnels-dark-logo.svg" width="575" />
</a>
</p>
## Developing
```sh
git clone https://github.com/hopsoft/trix_embed.git
cd trix_embed
bin/dev
```
## Releasing
1. Run `yarn` and `bundle` to pick up the latest
1. Bump version number at `lib/trix_embed/version.rb`. Pre-release versions use `.preN`
1. Bump version number at `package.json` _(make sure it matches)_. Pre-release versions use `-preN`
1. Run `yarn build` - *builds both the Ruby gem and the NPM package*
1. Commit and push changes to GitHub
1. Run `rake release`
1. Run `yarn publish --no-git-tag-version --access public --new-version X.X.X` _(use same version number)_
1. Create a new release on GitHub ([here](https://github.com/hopsoft/trix_embed/releases)) and generate the changelog for the stable release for it
## License
The gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).