# editablejs/editable

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/editablejs-editable).**

1,806 stars · 125 forks · TypeScript · Apache-2.0

## Links

- GitHub: https://github.com/editablejs/editable
- Homepage: https://docs.editablejs.com
- awesome-repositories: https://awesome-repositories.com/repository/editablejs-editable.md

## Topics

`editable` `react-editor` `rich-editor` `slate-editor` `text-editor`

## Description

Editable is a modular framework for building custom web-based rich text editors. It provides a structured environment for managing complex document content, including support for structured data like lists and grids, while maintaining an immutable tree representation to ensure predictable state manipulation.

The framework distinguishes itself through a collaborative engine that synchronizes document state across multiple users in real-time using operational transformation. It also features a plugin-based architecture that allows developers to intercept rendering and node behavior, enabling the injection of custom components and logic into the document structure.

The system includes a comprehensive toolkit for content transformation, facilitating the conversion of document data between HTML, Markdown, and plain text formats. It also incorporates a command-based history system to track user actions, providing precise undo and redo capabilities throughout the editing session.

## Tags

### User Interface & Experience

- [Rich Text Editors](https://awesome-repositories.com/f/user-interface-experience/rich-text-editors.md) — Provides a modular framework for building custom rich text editing interfaces with structured content models. ([source](https://docs.editablejs.com/))
- [Real-Time Collaborative Editing](https://awesome-repositories.com/f/user-interface-experience/real-time-collaborative-editing.md) — Enables real-time simultaneous content creation and modification for multiple users within a shared workspace. ([source](https://docs.editablejs.com/))
- [Document State Management](https://awesome-repositories.com/f/user-interface-experience/rich-text-editors/document-state-management.md) — Maintains an immutable tree representation of document content to ensure predictable state manipulation and precise undo/redo history tracking. ([source](https://github.com/editablejs/editable#readme))
- [Editor Node Trees](https://awesome-repositories.com/f/user-interface-experience/node-based-ui-components/editor-node-trees.md) — Maps document nodes to UI components by decoupling the underlying data structure from the visual representation.

### Web Development

- [Rich-Text Frameworks](https://awesome-repositories.com/f/web-development/rich-text-frameworks.md) — Provides a modular framework for building custom web-based rich text editors with support for collaborative editing and structured content manipulation.
- [Collaborative Editing Engines](https://awesome-repositories.com/f/web-development/collaborative-editing-engines.md) — Implements a collaborative engine for real-time multi-user document synchronization.

### Content Management & Publishing

- [Workflow Document State Managers](https://awesome-repositories.com/f/content-management-publishing/document-state-management/workflow-document-state-managers.md) — Manages structured editor content and history tracking for complex document models.
- [Markdown-HTML Content Converters](https://awesome-repositories.com/f/content-management-publishing/markdown-html-content-converters.md) — Provides utilities for converting document data between HTML, Markdown, and plain text formats.
- [Rich Text Content Serialization](https://awesome-repositories.com/f/content-management-publishing/rich-text-content-serialization.md) — Transforms editor data to and from standard web formats like HTML, text, and markdown. ([source](https://github.com/editablejs/editable#readme))
- [Format Conversions](https://awesome-repositories.com/f/content-management-publishing/rich-text-content-serialization/format-conversions.md) — Facilitates bidirectional conversion between HTML, Markdown, and plain text for external system compatibility. ([source](https://github.com/editablejs/editable/blob/main/README.md))

### Software Engineering & Architecture

- [Persistent Document Trees](https://awesome-repositories.com/f/software-engineering-architecture/immutable-data-patterns/immutable-data-storage/persistent-document-trees.md) — Maintains document content as an immutable tree to ensure predictable state manipulation and efficient tracking.
- [Operational Transformation Systems](https://awesome-repositories.com/f/software-engineering-architecture/operational-transformation-systems.md) — Synchronizes document state across multiple clients using atomic operations to ensure consistency.
- [Command Patterns](https://awesome-repositories.com/f/software-engineering-architecture/command-patterns.md) — Encapsulates user actions as discrete, reversible objects to provide precise undo and redo functionality.
- [Data Transformation Pipelines](https://awesome-repositories.com/f/software-engineering-architecture/data-transformation-pipelines.md) — Converts document content between formats like HTML and Markdown through modular serialization and parsing pipelines.
- [UI Feature Injection](https://awesome-repositories.com/f/software-engineering-architecture/dynamic-function-injection/ui-feature-injection.md) — Allows developers to inject custom components and logic by intercepting rendering and node behavior.
- [Undo-Redo Management](https://awesome-repositories.com/f/software-engineering-architecture/undo-redo-management.md) — Tracks document changes to allow users to revert or re-apply previous actions during the editing session. ([source](https://github.com/editablejs/editable/blob/main/README.zh-CN.md))

### Development Tools & Productivity

- [Editor Extensions](https://awesome-repositories.com/f/development-tools-productivity/editor-extensions.md) — Supports building custom editor functionality by intercepting rendering and node behavior.
