API
createPlateEditor
Generates a new instance of a PlateEditor
, initialized with a set of plugins and their configurations.
id optional any
Unique identifier for the editor.
editor optional E
Initial editor without
withPlate
.plugins optional P[]
An array of editor plugins.
value optional V | string | ((editor: PlateEditor) => V | Promise<V>)
Initial value of the editor. Can be:
- A static value array
- An HTML string to be deserialized
- A function that returns a value (can be async)
autoSelect optional 'end' | 'start' | boolean
Select the editor after initialization.
- Default:
false
true
| 'end': Select the end of the editorfalse
: Do not select anything'start'
: Select the start of the editor
- Default:
onReady optional (ctx: { editor: PlateEditor; isAsync: boolean; value: V }) => void
Callback called when the editor initialization completes. The
isAsync
flag indicates whether the value was loaded asynchronously.maxLength optional number
Specifies the maximum number of characters allowed in the editor.
nodeId optional object | boolean
Configuration for automatic node ID generation and management.
chunking optional object | boolean
Configure Slate's chunking optimization, which reduces latency while typing. Set to
false
to disable. Learn more about chunking.selection optional TSelection
Initial selection for the editor.
shouldNormalizeEditor optional boolean
When
true
, it will normalize the initialvalue
passed to theeditor
.- Default:
false
- Default:
rootPlugin optional (plugin: AnyPlatePlugin) => AnyPlatePlugin
Function to configure the root plugin.
api optional object
API methods for the editor.
decorate optional function
Decoration function for the editor.
extendEditor optional function
Function to extend the editor.
handlers optional object
Event handlers for the editor.
inject optional object
Injection configuration for the editor.
normalizeInitialValue optional function
Function to normalize the initial value.
options optional object
Additional options for the editor.
override optional object
Override configuration for the editor.
priority optional number
Priority of the editor plugin.
readOnly optional boolean
Editor read-only initial state. For dynamic value, use
Plate.readOnly
prop.render optional object
Render functions for the editor.
shortcuts optional object
Keyboard shortcuts for the editor.
transforms optional object
Transform functions for the editor.
useHooks optional function
Hook to use with the editor.
For more details on editor configuration, refer to the Editor Configuration guide.
createPlatePlugin
Creates a new Plate plugin with the given configuration, supporting extension, nested plugin manipulation, and runtime configuration.
config PlatePluginConfig | ((editor: PlateEditor) => PlatePluginConfig)
The configuration object for the plugin, or a function that returns the configuration. If a function is provided, it will be executed when the plugin is resolved with the editor.
For details on the
PlatePluginConfig
type, refer to the PlatePlugin API.
createTPlatePlugin
Explicitly typed version of createPlatePlugin
.
config TPlatePluginConfig<C> | ((editor: PlateEditor) => TPlatePluginConfig<C>)
The configuration object for the plugin, or a function that returns the configuration. This version requires an explicit type parameter
C
extendingAnyPluginConfig
.For details on the
TPlatePluginConfig
type, refer to the PlatePlugin API.
toPlatePlugin
Extends a SlatePlugin to create a React PlatePlugin.
basePlugin SlatePlugin
The base SlatePlugin to be extended.
extendConfig optional PlatePluginConfig | ((ctx: PlatePluginContext<C>) => PlatePluginConfig)
A function or object that provides the extension configuration. If a function, it receives the plugin context and should return a partial PlatePlugin. If an object, it should be a partial PlatePlugin configuration.
toTPlatePlugin
Explicitly typed version of toPlatePlugin
.
basePlugin SlatePlugin<TContext>
The base SlatePlugin to be extended.
extendConfig optional ExtendPluginConfig<C> | ((ctx: PlatePluginContext<TContext>) => ExtendPluginConfig<C>)
A function or object that provides the extension configuration. This version requires explicit type parameters for both the base plugin configuration (
TContext
) and the extension configuration (C
).
usePlateEditor
Creates a memoized Plate editor for React components.
options optional CreatePlateEditorOptions & { enabled?: boolean; onReady?: (ctx: { editor: PlateEditor; isAsync: boolean; value: V }) => void }
Configuration options for creating the Plate editor. All options from
createPlateEditor
are supported, plus:deps optional React.DependencyList
Additional dependencies for the useMemo hook.
- Default:
[]
- Default:
useEditorContainerRef
useEditorScrollRef
useScrollRef
useEditorPlugin
Get editor and plugin context.
editor PlateEditor
The current editor instance.
plugin PlatePlugin
The plugin instance.
getOption function
Function to get a specific option value.
getOptions function
Function to get all options for the plugin.
setOption function
Function to set a specific option value.
setOptions function
Function to set multiple options.
store PlateStore
The Plate store for the editor.
useEditorRef
Get the Plate editor reference without re-rendering. The returned editor object is enhanced with a store
property that provides access to the Plate store.
useEditorSelector
Subscribe to a specific property of the editor.
useEditorState
Get the Plate editor reference with re-rendering.
useEditorComposing
Get the editor's composing
state.
useEditorReadOnly
Get the editor's readOnly
state.
useEditorMounted
Get the editor's isMounted
state.
useEditorSelection
Get the editor's selection. Memoized so it does not re-render if the range is the same.
useEditorVersion
Get the version of the editor value. That version is incremented on each editor change.
useSelectionVersion
Get the version of the editor selection. That version is incremented on each selection change (the range being different).
useSelectionCollapsed
useSelectionExpanded
useSelectionWithinBlock
useSelectionAcrossBlocks
useSelectionFragment
Returns the fragment of the current selection, optionally unwrapping structural nodes.
useSelectionFragmentProp
Returns a prop value derived from the current selection fragment.
key optional string
The key of the property to extract from each node.
defaultValue optional string
The default value to return if no valid prop is found.
getProp optional (node: TElement | TText) => any
Custom function to extract the prop value from a node.
mode optional 'all' | 'block' | 'text'
Determines how to traverse the fragment:
-
'all': Check both block and text nodes
-
'block': Only check block nodes
-
'text': Only check text nodes
-
Default:
'block'
-
useNodePath
Returns the path of a node in the editor.
usePath
Get the memoized path of the closest element.
usePluginOption
Hook to access plugin options from the plugin store. For usage inside <Plate>
.
// Access a simple option
const value = usePluginOption(plugin, 'value');
// Access a selector with parameters
const doubleValue = usePluginOption(plugin, 'doubleValue', 2);
// Access with equality function
const value = usePluginOption(plugin, 'value', (a, b) => a === b);
// Access entire state
const state = usePluginOption(plugin, 'state');
useEditorPluginOption
Hook to access plugin options from the plugin store. For usage outside <Plate>
.
editor PlateEditor
The editor instance.
plugin PlatePlugin
The plugin to get options from.
key keyof (InferOptions<C> | InferSelectors<C>) | 'state'
The key of the option or selector to access.
...args optional any[]
Additional arguments:
- For selectors: The selector parameters
- Last argument can be an equality function
(a: T, b: T) => boolean
// Access a simple option
const value = useEditorPluginOption(editor, plugin, 'value');
// Access a selector with parameters
const doubleValue = useEditorPluginOption(editor, plugin, 'doubleValue', 2);
// Access with equality function
const value = useEditorPluginOption(editor, plugin, 'value', (a, b) => a === b);
// Access entire state
const state = useEditorPluginOption(editor, plugin, 'state');
useElement
Get the element by plugin key.
Core plugins
DebugPlugin
Provides debugging capabilities with configurable log levels and error handling.
See Debugging for more details.
SlateExtensionPlugin & SlateReactExtensionPlugin
Extend core apis and improve default functionality.
DOMPlugin & ReactPlugin
Integrates React-specific functionality into the editor.
HistoryPlugin
Enables undo and redo functionality for the editor.
InlineVoidPlugin
Manages inline and void elements in the editor.
ParserPlugin
Handles parsing of content for the editor.
LengthPlugin
Enforces a maximum length for the editor content.
HtmlPlugin
Enables HTML serialization and deserialization.
AstPlugin
Handles Abstract Syntax Tree (AST) operations for the editor.
ParagraphPlugin
Provides paragraph formatting functionality.
EventEditorPlugin
Manages editor events such as focus and blur.
Utils
isType
Checks whether a node matches the provided type.
Components
<PlateElement>
Generic component for rendering an element.
className optional string
The CSS class to apply to the component.
editor E
The editor instance. Also available using
useEditorRef
hook.element TElement
The element node. Also available using
useElement
hook.path Path
The path of the element in the editor tree. Also available using
usePath
hook.attributes HTMLAttributes<HTMLElement>
Attributes of the element to be spread on the top-level element.
children any
Necessary for rendering the node children.
as optional React.ElementType
The component type to render as.
- Default:
'div'
- Default:
<PlateLeaf>
Generic component for rendering a leaf.
className optional string
The CSS class to apply to the component.
editor E
The editor context.
children any
Necessary for rendering the node children.
leaf TText
The leaf node.
text TText
The text node.
attributes HTMLAttributes<HTMLElement>
Attributes of the leaf to be spread on the top-level element.
as optional React.ElementType
The component type to render as.
- Default:
'span'
- Default:
<PlateText>
Generic component for rendering text.
className optional string
The CSS class to apply to the component.
text TText
The text node.
attributes HTMLAttributes<HTMLElement>
Attributes of the text to be spread on the top-level element.
children any
Necessary for rendering the node children.
as optional React.ElementType
The component type to render as.
- Default:
'span'
- Default:
On This Page
APIcreatePlateEditor
createPlatePlugin
createTPlatePlugin
toPlatePlugin
toTPlatePlugin
usePlateEditor
useEditorContainerRef
useEditorScrollRef
useScrollRef
useEditorPlugin
useEditorRef
useEditorSelector
useEditorState
useEditorComposing
useEditorReadOnly
useEditorMounted
useEditorSelection
useEditorVersion
useSelectionVersion
useSelectionCollapsed
useSelectionExpanded
useSelectionWithinBlock
useSelectionAcrossBlocks
useSelectionFragment
useSelectionFragmentProp
useNodePath
usePath
usePluginOption
useEditorPluginOption
useElement
Core pluginsDebugPlugin
SlateExtensionPlugin & SlateReactExtensionPlugin
DOMPlugin & ReactPlugin
HistoryPlugin
InlineVoidPlugin
ParserPlugin
LengthPlugin
HtmlPlugin
AstPlugin
ParagraphPlugin
EventEditorPlugin
UtilsisType
Components<PlateElement>
<PlateLeaf>
<PlateText>