28-Jul-2026 — H1–H6 headings and extract TipTap/composer helpers ref #303
build 801 — commit 004a302
What's new
The shared TipTap editor now supports the full set of heading levels used on the site (Heading 1 through Heading 6), so existing content and paste that use any of those levels keep working in the toolbar and in the document. Styles for the editor live in a dedicated stylesheet next to the component, and paste clean-up helpers are shared pure functions rather than buried in the component class.
Email composer helpers that used to sit in the model file (merge-field labels, example values, divider HTML, default fragment order, and related builders) now live under functions/, so the model keeps types, enums and catalogues only.
At a glance
- Toolbar offers Heading 1–6 plus Normal text
- TipTap StarterKit accepts heading levels 1–6 (matches content already stored on sites)
- Editor styles moved out of the TypeScript file into
tiptap-markdown-editor.sass - Paste sanitisation for HTML and markdown is in
tiptap-paste.ts - Merge-field brace stripping is shared (
stripMergeFieldBraces) so insert and edit paths stay consistent - Friendly labels and example values for merge fields and link tokens come from
functions/merge-fields.ts - Divider HTML, fragment builders, recycled-tracking URL scan and default composer state come from
functions/email-composer.ts - Fragment-order state fields are named via
EmailComposerFragmentOrderFieldinstead of an ad hoc string union