Slate is a completely
customizable framework for building rich text editors. However, your
codebase can quickly get complex when implementing tens of features.
Built on top of Slate, slate-plugins
enables you to use a list of
configurable and extendable plugins to keep your codebase clean and easy
to debug.
This library comes with a lot of plugins for the elements, marks, deserialization, normalization, and so on. We also provide a bunch of helpers on top of Slate's API.
Try out the existing ones and create your own plugins!
- β¨ 30+ Editor Plugins.
- β
Unit tested with
[email protected]
. - π·οΈ Separation of Concerns.
- βοΈ Atomic Design.
- π Docs and Demos on Storybook.
- π Getting Started
- π Plugins
- π€ Notice
- π₯ Community
- π Contributing
- π¨βπ» Development scripts
- β¨ Contributors
- π License
yarn add @udecode/slate-plugins
β οΈ In production, you should pin the dependency until 1.0.0 is released.
You will also need these peerDependencies:
yarn add slate slate-hyperscript slate-react styled-components react react-dom
For full documentation on using slate-plugins
visit:
slate-plugins-next.netlify.app
For additional help, join us in our Slack
Element Plugins | |
---|---|
BasicElements | Enables support for basic elements. |
Blockquote | Enables support for block quotes. |
CodeBlock | Enables support for pre-formatted code blocks. |
Heading | Enables support for headings (from 1 to 6). |
Image | Enables support for images. |
ImageUpload | Allows for pasting images from clipboard. |
Link | Enables support for hyperlinks. |
List | Enables support for bulleted, numbered and to-do lists. |
MediaEmbed | Enables support for embeddable media such as YouTube or Vimeo videos. |
Mention | Enables support for autocompleting @mentions and #tags. |
Paragraph | Enables support for paragraphs. |
Table | Enables support for tables. |
Mark Plugins | |
---|---|
BasicMarks | Enables support for basic text formatting. |
Bold | Enables support for bold formatting. |
Code | Enables support for inline code formatting. |
Highlight | Enables support for highlights. |
Italic | Enables support for italic formatting. |
Strikethrough | Enables support for strikethrough formatting. |
Subscript | Enables support for subscript formatting. |
Superscript | Enables support for superscript formatting. |
Underline | Enables support for underline formatting. |
Deserializer Plugins | |
---|---|
DeserializeHtml | Enables support for deserializing content from HTML format to Slate format. |
DeserializeMarkdown | Enables support for deserializing content from Markdown format to Slate format. |
Serializer Plugins | |
---|---|
SerializeHtml | Enables support for serializing content from Slate format to HTML. Useful for exports from editor. |
Normalizer Plugins | |
---|---|
NormalizeTypes | Enables support for defining type rules for specific locations in the document. |
TrailingNode | Enables support for inserting a trailing node of a configurable type when the type of the last node is not matching. |
Handler Plugins | |
---|---|
Autoformat | Enables support for autoformatting actions. |
SoftBreak | Enables support for inserting soft breaks. |
Decorator Plugins | |
---|---|
Preview | Enables support for previewing. |
Toolbar | |
---|---|
BalloonToolbar | Provides a toolbar, pointing at a particular element or range. |
Toolbar | Provides a toolbar with buttons. |
Utility Plugins | |
---|---|
NodeID | Enables support for inserting nodes with an id key. |
Widget Plugins | |
---|---|
SearchHighlight | Enables support for highlighting searching text. |
Slate is a powerful editor framework that helps you deal with difficult parts when building an editor, such as events handlers, elements, formatting, commands, rendering, serializing, normalizing, etc.
While you are trying to build your own editors, it still need a lot of efforts to make something similar to Quill or ProseMirror. This repository allows you to build your editor right away with minimal slate knowledge.
For simplicity, a single package @udecode/slate-plugins
has been published
to share all the plugins. It's not a problem as
it is tree-shakeable.
However, a few plugins use external dependencies. These should be moved
into their own package in the future.
- Chatting on Slack
π Contributing
We welcome contributions to slate-plugins
! Please feel free to share
your own plugins here.
π₯ Pull requests and π Stars are always welcome. Read our contributing guide to get started, or find us on Slack, we will take the time to guide you
Useful scripts include:
Installs package dependencies
Starts storybook dev
boolean check if code conforms to linting eslint rules
Test with Jest
Lint, test, build and push a release to git and npm will ask for version in interactive mode - using lerna.
Ziad Beyens π» π§ π |
Horacio Herrera π» π π‘ π π€ |
Eivind Barstad Waaler π» π π‘ π |
Petr Sahula π» π π‘ |
Mark Vujevits π» |