Appearance
Text Editor Panel
Purpose
textEditorPanel is a thin renderer-policy shell around tiptapPanel. It selects the only active renderer, forwards Tiptap config and object binding, and warns when selected content declares an unsupported legacy renderer.
When to use
Use it when persisted content may contain renderer metadata and users need an explicit migration warning. Use tiptapPanel directly when no renderer-policy layer is needed.
Prerequisites and ownership
- Tiptap is the only supported
defaultEditor. - Object binding uses the same selection event and
attributeNameprerequisites as Tiptap. - The shell owns config normalization, persisted
rendererinspection, renderer choice, and one warning per object/renderer load cycle. - Tiptap owns all editor UI, content behavior, dirty state, and persistence.
Capability map
| Area | Supported behavior |
|---|---|
| Renderer policy | Normalizes omitted defaultEditor to tiptap |
| Delegation | Forwards editorConfig.tiptap and request to a Tiptap wrapper |
| Persisted inspection | Parses JSON strings or objects and reads top-level renderer |
| Legacy fallback | Keeps Tiptap active and emits a warning for a different persisted renderer |
| Warning control | Warns once for the selected object and unsupported renderer during a load cycle |
| Editing | Entirely the downstream Tiptap contract |
Behavioral model
The shell merges component and panel config, forcing the current renderer policy to Tiptap. When object-bound, it inspects the already selected object's target attribute for renderer metadata. A different renderer does not load an alternative editor: Tiptap remains active, the user is warned, and Tiptap normalizes that foreign wrapper to an empty document.
Alternatives, defaults, and precedence
defaultEditordefaults to and only acceptstiptap.- Panel
editorConfigoverrides directly supplied component config. editorConfig.tiptapis passed through to Tiptap; its defaults and prerequisites remain unchanged.- Persisted metadata never overrides the active renderer in the current implementation.
Limitations
- This is not a multi-editor selector. No Editor.js renderer remains.
- Unsupported persisted content is not converted. Saving the empty Tiptap document rewrites the attribute as a Tiptap wrapper and can discard the legacy payload.
- Renderer inspection needs both a selection event and target
tiptap.attributeName; standalone content has no persisted renderer probe. - The runnable standalone fixture verifies shell-to-Tiptap delegation only. It has no object binding, persistence, or legacy-renderer warning cycle.
Minimal configuration
json
{
"id": "text-editor",
"type": "textEditorPanel",
"editorConfig": {
"defaultEditor": "tiptap",
"tiptap": {
"placeholder": "Write text..."
}
}
}Scenario: edit selected content with legacy detection
json
{
"id": "operation-text",
"type": "textEditorPanel",
"request": {
"getSelectedObjectForEventId": "operations--selected"
},
"editorConfig": {
"defaultEditor": "tiptap",
"tiptap": {
"readOnly": false,
"attributeName": "textualInstruction",
"dataFormat": "json",
"placeholder": "Enter work instructions...",
"minHeight": 500
}
}
}Expected result: Tiptap loads normal Tiptap/plain content. If the selected attribute contains a wrapper such as { "renderer": "editorjs", ... }, the shell warns and shows an empty Tiptap document. The user must decide whether to save and overwrite it.
Runnable demos
Open the standalone Text Editor shellThis registered fixture renders the actual textEditorPanel type with defaultEditor: "tiptap" and a nested Tiptap initialContent document. Edits remain in browser state: the fixture deliberately omits request and attributeName, so it does not pretend that standalone changes are persisted or that selected-object and legacy-warning behavior are covered.
Exact parameter reference
- active renderer
- forwarded Tiptap config
- selection event
- Tiptap bound attribute
- Tiptap persistence format
Related guides and next task
Next, test one normal Tiptap wrapper and one disposable legacy wrapper. Do not save the legacy case until the overwrite behavior is acceptable.