TrailingNode
Keeps an editable block at the document end. Without node, it uses the schema default block and then paragraph.
Keeps an editable block at the document end. Without node, it uses the schema default block and then paragraph.
@quirekit/extensions · MIT
Editor compatibility
Layer:Shared document capability
| Editor | Status | Assembly and boundaries |
|---|---|---|
| Classic | Supported | classicEditorPreset — Use the product-neutral classicEditorPreset without duplicating installed capabilities. The Word preset replaces paragraphs, headings and container lists; do not stack generic structures onto that model. |
| Block | Supported | createBlockEditorPreset — The default createBlockEditor preset installs this capability. Configure the corresponding preset child; graphic editing uses the preset's workspace ports, while persistence and assets remain host-owned. Avoid duplicate extensions. |
“Supported” means the product assembly above exists; interaction, host services and file formats retain their own conditions. See status and integration rules. Licensing is shown separately.
Installation
pnpm add @quirekit/extensions@alpha
Install in Editor extensions. The host supplies a view, container and persistence; see Quick start.
Included in StarterKit. Configure its trailingNode child, or disable that child before installing a replacement.
import { TrailingNode } from '@quirekit/extensions'
const trailing = TrailingNode.configure({ node: 'paragraph', notAfter: ['paragraph'] })
Use compatible versions available from your distribution source. This site uses the Alpha workspace. License labels come from package metadata; see support and licensing.
Integration by editor
These snippets use an existing host element named element. The host owns container sizing and persistence; call instance.destroy() on teardown. Avoid duplicating preset capabilities and supply required host ports before installation.
Classic · Supported
Use the product-neutral classicEditorPreset without duplicating installed capabilities. The Word preset replaces paragraphs, headings and container lists; do not stack generic structures onto that model.
classicEditorPresetimport { createClassicEditor } from '@quirekit/classic-editor'
import '@quirekit/classic-editor/styles.css'
const instance = createClassicEditor({ element })Block · Supported
The default createBlockEditor preset installs this capability. Configure the corresponding preset child; graphic editing uses the preset's workspace ports, while persistence and assets remain host-owned. Avoid duplicate extensions.
createBlockEditorPresetimport { createBlockEditor } from '@quirekit/block-editor'
import '@quirekit/block-editor/styles.css'
const instance = createBlockEditor({
element,
content: { type: 'doc', content: [{ type: 'paragraph' }] },
})Configuration
These are extension-level defaults. Presets can override them; they are distinct from current document attributes. See configuration.
node
Node type inserted at the end of the document.
Type:string | undefined
Default:undefined
notAfter
Node types after which the trailing node must not be inserted.
Type:string | readonly string[] | undefined
Default:[]
Commands and runtime
This entry declares no directly enumerable commands. Children supply bundle commands; product plugins use contributions or document services.
Next steps
Return to all plugins, or read configuration to distinguish options, attributes and commands.
See extension development for custom capabilities and Build a product for complete hosting.