Element
API reference for elements in Slate.
TElement
objects are a type of Node
in a Slate document that contain other TElement
nodes or Text
nodes.
interface TElement {
children: Descendant[]
type: string
[key: string]: unknown
}
Element Behavior
Elements can have different behaviors depending on the editor's configuration:
Block vs Inline
Elements can be either "block" or "inline" as defined by plugin node.isInline
:
- Block elements can only be siblings with other block elements
- Inline elements can be siblings with Text nodes or other inline elements
Void vs Non-void
Elements can be either "void" or "non-void" as defined by plugin node.isVoid
:
- Non-void elements: Slate handles rendering of children (e.g., paragraph with Text and Inline children)
- Void elements: Children are rendered by the Element's render code
Markable Voids
Some void elements can support marks through plugin node.markableVoid
. For example, a mention element might need to support bold or italic formatting.
ElementAPI
isElementType
Check if a value implements the TElement
interface and has elementKey
matching a specified value. Defaults to checking the 'type'
key.
isAncestor
Check if a value implements the Ancestor
interface.
isElement
Check if a value implements the TElement
interface.
isElementList
Check if a value is an array of TElement
objects.
isElementProps
Check if a set of props is a partial of TElement
.
matches
Check if an element matches a set of properties.
Types
TElement
TElement
objects are a type of node in a Slate document that contain other element nodes or text nodes. They can be either "blocks" or "inlines" depending on the editor's configuration.
Element
is a type alias for TElement
.
ElementEntry
Element entries represent an Element node and its path.
ElementOrTextOf
type ElementOrTextOf<E extends Editor> = ElementOf<E> | TextOf<E>;
The ElementOrTextOf
type represents either an element or a text node from a specific editor type.
ElementOrTextIn
type ElementOrTextIn<V extends Value> = ElementIn<V> | TextIn<V>;
The ElementOrTextIn
type represents either an element or a text node from a specific value type.
ElementOf
ElementOf
is a utility type to get all the element node types from a given root node type.
ElementIn
type ElementIn<V extends Value> = ElementOf<V[number]>;
ElementIn
is a utility type to get an element type from a Slate Value
type.