Important: This documentation covers Yarn 1 (Classic).
For Yarn 2+ docs and migration guide, see yarnpkg.com.

Package detail

rhino-editor

KonnorRogers5.1kMIT0.16.7TypeScript support: included

A custom element wrapped rich text editor

tiptap, prosemirror, richtext, editor, wysiwg, webcomponents

readme

Purpose

To create a grab and go WYSIWYG editing experience that can hook into Ruby on Rails ActionText backend. Currently this package does so using TipTap but will most likely include another integration for ProseMirror to allow for both Markdown + WYSIWYG editing.

Documentation

https://rhino-editor.vercel.app

Local Development

This section is for contributing to Rhino Editor.

Getting up and running locally is hopefully quite painless. We have a test suite using Ruby on Rails and is intended to provide a good demonstration of how this package can hook into ActionText.

Contributions should be made on a feature branch in a forked repository.

Prerequisites

  • Ruby 3.1.2
  • Rails 7.0.4
  • PNPM (npm install -g pnpm)
  • Playwright (npm install -g playwright)
  • Node >= 16
  • Docker (Used to run a simulated S3 server)
  • A Docker virtualizer (Orbstack or Docker Desktop)
  • Overmind (Preferred, not needed npm install -g overmind)

Installation

Run the following commands in the bash to setup dependencies:

git clone https://github.com/konnorrogers/rhino-editor
cd rhino-editor
pnpm run setup

Running the server

The easiest way to run the server is using Overmind. First start up your Docker virtualizer, then in two termainals…

Terminal 1:

pnpm run start

Terminal 2:

cd tests/rails
overmind start -f Procfile.dev

Then navigate to localhost:5100

Without Overmind

To run the server without Overmind do the following in seperate terminals:

bin/vite dev --clobber
bin/rails s
docker compose up --build

Then navigate to localhost:5100

Running the test suite

Make sure to have the docker server up and running, the test suite will fail without it.

docker compose up --build
bundle exec rails test:all

Listening for changes to the package

To listen for changes, keep your rails server running and open a new terminal with the following:

pnpm run start

This will start an ESBuild watcher process. Vite in Rails will automatically pick up changes.

Adding a changelog entry

To add a changelog entry, we use https://github.com/changesets/changesets. Run the following command and then answer the prompts:

pnpm changeset

Roadmap to v1

  • <input disabled="" type="checkbox">
    • Collaboration Extension. Support collaboration!
  • <input disabled="" type="checkbox">
    • Document slots, CSS properties, Extending ActionText, and show common demo examples
  • <input disabled="" type="checkbox">
    • Create a ProseMirror base for a markdown + rich text editor
  • <input disabled="" type="checkbox">
    • Move the TipTap editor to extend the ProseMirror editor.
  • <input disabled="" type="checkbox">
    • Show how to do table editing
  • <input disabled="" type="checkbox">
    • Show how to do embeds
  • <input disabled="" type="checkbox">
    • Show how to do mentions
  • <input disabled="" type="checkbox">
    • Add testing for the basic operations bold, strike, etc.
  • <input disabled="" type="checkbox">
    • Add testing for ActionText / Trix compatibility.

changelog

Changelog

0.16.7

Patch Changes

0.16.6

Patch Changes

0.16.5

Patch Changes

0.16.4

Patch Changes

0.16.3

Patch Changes

0.16.2

Patch Changes

0.16.1

Patch Changes

0.16.0

Minor Changes

Patch Changes

0.15.0

Minor Changes

0.14.3

Patch Changes

  • #240 9922d58 Thanks @KonnorRogers! - Fix: Remove the cursor placeholder for inserting links due to regressions in mobile browsers.

0.14.2

Patch Changes

0.14.1

Patch Changes

0.14.0

Minor Changes

  • #227 924d0ff Thanks @KonnorRogers! - Added a "faux selection" for link insertions to give a visual indicator of insertion / replacement points for links.

  • #227 924d0ff Thanks @KonnorRogers! - Add a rhino-editor.css which is a more minimal trix.css and has no styles on the editor content.

Patch Changes

0.13.2

Patch Changes

0.13.1

Patch Changes

0.13.0

Minor Changes

  • #216 0031ec1 Thanks @KonnorRogers! - Styles: blockquote has had its icon changed to represent a block code icon.

  • #216 0031ec1 Thanks @KonnorRogers! - Styling of link dialogs has changed now that it follows the selection cursor.

  • #216 0031ec1 Thanks @KonnorRogers! - Fix: code blocks now properly display their correct keybinding

  • #216 0031ec1 Thanks @KonnorRogers! - Feature: Added an "inline code" toolbar button, bubble menu buttons, and default styles.

  • #216 0031ec1 Thanks @KonnorRogers! - Feature: Link dialogs now follow your selection cursor instead of always being in the top left of the editor

Patch Changes

0.12.0

Minor Changes

Patch Changes

0.11.0

Minor Changes

Patch Changes

0.10.2

Patch Changes

0.10.1

Patch Changes

  • #182 c64173a Thanks @KonnorRogers! - Fixed a bug in the update lifecycles of RhinoEditor causing rebuilds to happen too frequently

0.10.0

Minor Changes

Patch Changes

  • #176 fd8cc08 Thanks @KonnorRogers! - Fixed an issue where updating translations would not update the editor

  • #178 abddbac Thanks @KonnorRogers! - Fixed a bug where the current focused figure did not have an outline

  • #178 abddbac Thanks @KonnorRogers! - Close link dialogs when clicking outside the editor or on other toolbar items

  • #176 fd8cc08 Thanks @KonnorRogers! - - Fixed tooltip-arrow and tooltip-base parts renamed to toolbar__tooltip__arrow and toolbar__tooltip__base respectively.

  • #178 abddbac Thanks @KonnorRogers! - Fixed a bug where figcaptions would never update if you did not interact with the editor

0.9.3

Patch Changes

0.9.2

Patch Changes

0.9.1

Patch Changes

0.9.0

Minor Changes

  • #143 13dce87 Thanks @KonnorRogers! - BREAKING_CHANGE: Allow the light-dom editor to be slotted. Do note, this change may result in a small breaking change for the users relying on the original light-dom structure being div > div.trix-content. Most users should not see a difference.

Patch Changes

  • #142 a69c1cc Thanks @KonnorRogers! - fix: openOnClick for links is now set to false by default in the editor. This fixes some bugs around editing links and was the original intended behavior.

  • #143 13dce87 Thanks @KonnorRogers! - fix: link-dialog buttons now have proper hover / focus state.

0.8.7

Patch Changes

  • #136 ba79275 Thanks @KonnorRogers! - - previewable attribute is now more consistently applied and checked on attachments.
    • Fixed a bug where attachments were not rendering properly when the raw action-text HTML passed to the editor.
    • Fixed a bug where all attachments were not being properly rendered.
    • Figcaption now jumps to the end of the block when you click on the figure
    • "Add a caption" will no longer show up on custom attachments.
    • Added a note about custom attachments need an actual content-type unlike Trix.
    • Added a small amount of margin-top to figcaption to match Trix.
    • toMemorySize now does not return decimales for KB / MB sizes. This is to align with Trix.

0.8.6

Patch Changes

  • #132 d760195 Thanks @KonnorRogers! - - Fixed a bug when inserting text into figcaption causing extra <p> tags to appear.
    • Fixed a bug with white-space: pre-wrap when figures get rendered in ActionText.
    • Fixed the <figcaption> editor to behave more like Trix. On focus, if the caption is empty, it will automatically delete the caption and show the placeholder of "Add a caption".
    • Fixed a bug where the editor would not rebuild if you changed the translations.
    • Fixed a bug when <figcaption> had an empty caption you could not select the whole document with ctrl+a.
    • Fixed a bug where <img> would be inserted in non-previewable attachments.
    • <figcaption> now has a white-space: normal when rendered in ActionText.
    • Fixed a bug where non-previewable attachments were not able to be dragged.
    • Fixed a bug where stlying of <figcaption> placeholder text was not rendering in the correct spot.
    • non-previewable attachments are no longer nested inside of Attachment Galleries.
    • Added captionPlaceholder to the list of translations.

0.8.5

Patch Changes

0.8.4

Patch Changes

  • 4e036a3: - Fixed a bug in rendering of non-previewable attachments not having an sgid or url
    • Fixed a bug in previewable attachments not having their height + width attached

0.8.3

Patch Changes

  • 486935e: - Fixed a bug where changing the serializer from HTML to JSON or vice-versa did not update the input element

0.8.2

Patch Changes

  • fdae042: - Fix a regression in attachment rendering

0.8.1

Patch Changes

  • 09e403f: - Fixed a conflict where ActiveStorage attachments not bound via custom attachments (like Mentions via TipTap extension) would get parsed by RhinoEditor by ignoring contentType="application/octet-stream" on attachments.
  • cfe01a5: - Fixed a bug where progress bars showed on element with sgid on them.
    • Fixed a recursive issue with setUploadProgress()

0.8.0

Minor Changes

  • a315ebe: BREAKING_CHANGE: CSS parts have changed slightly to create a more consistent naming conventions. toolbar-tooltip has been renamed to toolbar__tooltip along with other parts being slightly modified. link-dialog__add-link changed to link-dialog__link.
  • a315ebe: - BREAKING_CHANGE: handleFiles now no longer automatically chains events. Instead now it returns the attachmentManagers to be chained.

Patch Changes

  • a315ebe: - The editor no longer inserts <p> tags above and below an attachment
    • <figure> now has a default margin of 0.6em 0 to align with Trix.
    • Updated to role-components v2.0.1
    • Added docs on styling the border of the toolbar
  • a315ebe: - Fixed CSS for attachment galleries
  • a315ebe: - Added the ability to press the "Enter" key inside a <figcaption> and end up on the next line.
  • a315ebe: - Fixed a bug with dropcursor not showing
  • 6190d0b: Dependencies: update role-component to v2.0.0
  • a315ebe: - Fixed a bug where pressing backspace inside a <figcaption> or a Gallery would cause the attachment to no longer be in the gallery

0.7.1

Patch Changes

  • f51bf37: fix: add addExtensions api to editor
  • f51bf37: starterKitOptions and extensions no longer implement getters / setters, and are now direct instance variables
  • f51bf37: - Dependencies: remove unnecessary @tiptap/extensions-text-align dependency.

0.7.0

Minor Changes

  • a83e08d: Added trix compatibility events
  • 1a34f1d: - BREAKING_CHANGE: editor.extensions() has changed from a function to a variable via editor.extensions

    • BREAKING_CHANGE: editor.extensions no longer contains the RhinoStarterKit and StarterKit. They have been moved into a private array that will be concatenated. It is recommend to instead set everything to false if you wish to disable everything.
    • BREAKING_CHANGE: editor.starterKit has been renamed to editor.starterKitOptions
    • BREAKING_CHANGE: editor.rhinoStarterKit has been removed. All starter kit options now live inside of editor.starterKitOptions. All rhinoStarterKit options have been renamed to include a rhino* prefix. Example: gallery has been renamed to rhinoGallery.
    • feature: Adding a tip-tap-editor-base export for those looking to implement their own toolbar.
    • feature: Modifying starterKitOptions will automatically update the editor.
    • feature: Disabling an option in starterKitOptions will now also cause the toolbar to not display the disabled option.
    • fix: Fixed a bug in attachments that would cause a console error when upload more than 3 attachments at once.
    • fix: Fixed an issue with where TypeScript types were being generated in the wrong directory.

Patch Changes

  • a83e08d: Fixed .rhino-toolbar-button not inheriting color
  • e7a44d3: Fixed a bug in lists to allow show proper highlighting and allow nesting

0.6.1

Patch Changes

  • 3798f31: fixed a bug causing rhino-editor to load ProseMirror multiple times
  • 3798f31: Added rhino-file-accept event to align with trix-file-accept Added documentation on preventing file uploads

0.6.0

Minor Changes

  • f03f155: Add error messages for failed uploads
  • f03f155: Added increase / decrease indentation

Patch Changes

  • f03f155: Upgrade to v2.0.2 of TipTap, fix flaky test suite, improve mobile safari support.
  • 560c5a3: Fix image uploader alignment

0.5.0

Minor Changes

  • ed77144: Upgrade prosemirror and tiptap (v2.0.2) dependencies

Patch Changes

  • ed77144: Allow configuring rhino and starterkit options
  • ed77144: fixed a bug where settings galleries: false would crash the editor.

0.4.0

Minor Changes

  • 4e293f3: fix: move editor from shadow dom to light dom docs: Updated docs to reflect new CSS import

    BREAKING_CHANGE: The editor has been moved to the light DOM and CSS must now be imported.

  • 4e293f3: adjusted styles by reducing focus-ring and comibing editor + toolbar

  • 51fcfa2: Add "accept" attribute for file uploading

0.3.2

Patch Changes

  • b7b335c: fix: bad entrypoint

0.3.1

Patch Changes

  • 0a59f7a: fix: everything was disabled, tweak some color values

0.3.0

Minor Changes

  • 84ff18b: fix: autofocus is now "false" by default BREAKING_CHANGE: defaultOptions is now editorOptions

    - class ExtendedRhinoEditor extends TipTapEditor {
    -   defaultOptions {
    -     return {
    -       super.defaultOptions(),
    -       autofocus: true
    -     }
    -   }
    - }
    
    + class ExtendedRhinoEditor extends TipTapEditor {
    +   editorOptions {
    +     return {
    +       autofocus: true
    +     }
    +   }
    + }

    feat: created a /cdn/exports route for CDN users.

0.2.0

Minor Changes

  • 4a5d781: Rename "dist" to "exports". Remap internal files paths to "exports" and "internal".

All notable changes to this project will be documented in this file. See standard-version for commit guidelines.

0.1.1 (2023-01-21)

⚠ BREAKING CHANGES

  • rename all internal views to use kebab-case (#24)
  • CSS now uses 'rhino' prefix (#19)

Bug Fixes

  • CSS now uses 'rhino' prefix (#19) (eeae3c2)
  • minor styling issues (b35b6b7)
  • rename all internal views to use kebab-case (#24) (c5b5f3a)

0.1.0 (2022-12-24)

Bug Fixes

  • borked svg sizes on safari (e56b176)

0.0.2 (2022-12-07)

Changelog

All notable changes to this project will be documented in this file. See standard-version for commit guidelines.