@fastyoke/lcap-richtext
v0.1.0
Published
Richtext editor peer package for the FastYoke SDK's <SmartField /> resolver. Lazy-loaded by SmartField when an annotation row's @ui/component = 'richtext'.
Maintainers
Readme
@fastyoke/lcap-richtext
Richtext editor peer package for the FastYoke SDK's
<SmartField /> resolver.
When this package loads
<SmartField /> lazy-imports this package when an annotation
row in entity_field_annotations carries:
{ "field_type": "longtext", "ui_config_json": { "@ui/component": "richtext" } }If the package isn't installed, <SmartField /> falls back to
a plain <TextArea /> and emits a one-time console.warn per
package. Storage shape stays compatible — switching from
richtext back to plain textarea simply loses formatting.
Install
npm install @fastyoke/lcap-richtextPeer-deps @fastyoke/sdk@^0.3.0, react@^18, react-dom@^18.
Public API
import { RichtextEditor } from '@fastyoke/lcap-richtext';The component matches the SDK's catalog contract — props are
{ annotation, uiConfig, value, onChange, readOnly?, density?,
className? }. Storage shape: HTML-escaped sanitized markup
per LCAP-Spec.md § 3.5.
You typically don't import this directly; <SmartField />
mounts it for you when the annotation matches.
Implementation status
v0.1.0 (current) — minimal-but-functional. Renders a
contenteditable <div> with a small toolbar (bold / italic /
underline / link) backed by document.execCommand.
Sanitizes HTML on input + change to strip <script>,
event-handler attributes, javascript: URLs, and unsafe
data: URLs.
v0.2.0 (planned) — swap to TipTap (@tiptap/react +
@tiptap/starter-kit) for prosemirror-grade editing,
better paste handling, schema-side sanitization. The
catalog contract stays identical so <SmartField />
consumers don't need any changes.
License
MIT.
