@react-email/editor 1.3.10 → 1.4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/core/index.cjs +3 -3
- package/dist/{core-CLyAVVUW.cjs → core-Dte9KXcz.cjs} +2 -2
- package/dist/{email-node-DvyWFrOM.cjs → email-node-BhbXb22u.cjs} +1 -1
- package/dist/{event-bus-C_wS2tD6.cjs → event-bus-C0haBiDw.cjs} +1 -1
- package/dist/{extension-D_sNGTbX.cjs → extension-bVrEjbFA.cjs} +2 -2
- package/dist/{extension-C1ilEKq-.cjs → extension-mBZiGbpM.cjs} +2 -2
- package/dist/extensions/index.cjs +3 -3
- package/dist/extensions/index.d.cts.map +1 -1
- package/dist/extensions/index.d.mts.map +1 -1
- package/dist/extensions/index.mjs +2 -2
- package/dist/{extensions-oOPUnW7d.cjs → extensions-DBFEW67d.cjs} +13 -5
- package/dist/{extensions-CU0ndoee.mjs → extensions-w71aFrgc.mjs} +11 -3
- package/dist/extensions-w71aFrgc.mjs.map +1 -0
- package/dist/{focus-scopes-B_0O7l7d.mjs → focus-scopes-DOsiXV7b.mjs} +88 -30
- package/dist/focus-scopes-DOsiXV7b.mjs.map +1 -0
- package/dist/{focus-scopes-l_Ki0562.cjs → focus-scopes-Ncj54H_M.cjs} +87 -29
- package/dist/{image-BpsmuXKq.cjs → image-D8OUIgwB.cjs} +1 -1
- package/dist/index.cjs +7 -7
- package/dist/index.mjs +3 -3
- package/dist/index.mjs.map +1 -1
- package/dist/plugins/index.cjs +4 -4
- package/dist/{root-D8zhkKgc.cjs → root-BpooQKCu.cjs} +3 -2
- package/dist/{root-yYM1BF1C.mjs → root-DTTCkmjD.mjs} +4 -3
- package/dist/root-DTTCkmjD.mjs.map +1 -0
- package/dist/ui/index.cjs +5 -5
- package/dist/ui/index.d.cts.map +1 -1
- package/dist/ui/index.d.mts.map +1 -1
- package/dist/ui/index.mjs +2 -2
- package/package.json +2 -2
- package/dist/extensions-CU0ndoee.mjs.map +0 -1
- package/dist/focus-scopes-B_0O7l7d.mjs.map +0 -1
- package/dist/root-yYM1BF1C.mjs.map +0 -1
package/dist/ui/index.d.mts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.mts","names":[],"sources":["../../src/ui/bubble-menu/create-mark-bubble-item.tsx","../../src/ui/bubble-menu/align-center.tsx","../../src/ui/bubble-menu/align-left.tsx","../../src/ui/bubble-menu/align-right.tsx","../../src/ui/bubble-menu/button-default.tsx","../../src/ui/bubble-menu/button-edit-link.tsx","../../src/ui/bubble-menu/button-form.tsx","../../src/ui/bubble-menu/button-toolbar.tsx","../../src/ui/bubble-menu/button-unlink.tsx","../../src/ui/bubble-menu/group.tsx","../../src/ui/bubble-menu/image-default.tsx","../../src/ui/bubble-menu/image-edit-link.tsx","../../src/ui/bubble-menu/image-form.tsx","../../src/ui/bubble-menu/image-toolbar.tsx","../../src/ui/bubble-menu/image-unlink.tsx","../../src/ui/bubble-menu/item.tsx","../../src/ui/bubble-menu/link-default.tsx","../../src/ui/bubble-menu/link-edit-link.tsx","../../src/ui/bubble-menu/link-form.tsx","../../src/ui/bubble-menu/link-open-link.tsx","../../src/ui/bubble-menu/link-selector.tsx","../../src/ui/bubble-menu/link-toolbar.tsx","../../src/ui/bubble-menu/link-unlink.tsx","../../src/ui/bubble-menu/node-selector.tsx","../../src/ui/bubble-menu/triggers.ts","../../src/ui/bubble-menu/root.tsx","../../src/ui/bubble-menu/separator.tsx","../../src/ui/bubble-menu/bold.tsx","../../src/ui/bubble-menu/code.tsx","../../src/ui/bubble-menu/context.tsx","../../src/ui/bubble-menu/italic.tsx","../../src/ui/bubble-menu/strike.tsx","../../src/ui/bubble-menu/underline.tsx","../../src/ui/bubble-menu/uppercase.tsx","../../src/ui/bubble-menu/index.ts","../../src/ui/editor-focus-scope.tsx","../../src/ui/icons/types.ts","../../src/ui/icons/align-center.tsx","../../src/ui/icons/align-center-vertical.tsx","../../src/ui/icons/align-end-vertical.tsx","../../src/ui/icons/align-left.tsx","../../src/ui/icons/align-right.tsx","../../src/ui/icons/align-start-vertical.tsx","../../src/ui/icons/bold.tsx","../../src/ui/icons/box.tsx","../../src/ui/icons/case-upper.tsx","../../src/ui/icons/check.tsx","../../src/ui/icons/chevron-down.tsx","../../src/ui/icons/code.tsx","../../src/ui/icons/columns-2.tsx","../../src/ui/icons/columns-3.tsx","../../src/ui/icons/columns-4.tsx","../../src/ui/icons/corner-bottom-left.tsx","../../src/ui/icons/corner-bottom-right.tsx","../../src/ui/icons/corner-top-left.tsx","../../src/ui/icons/corner-top-right.tsx","../../src/ui/icons/external-link.tsx","../../src/ui/icons/heading-1.tsx","../../src/ui/icons/heading-2.tsx","../../src/ui/icons/heading-3.tsx","../../src/ui/icons/image.tsx","../../src/ui/icons/italic.tsx","../../src/ui/icons/layout.tsx","../../src/ui/icons/link.tsx","../../src/ui/icons/list.tsx","../../src/ui/icons/list-ordered.tsx","../../src/ui/icons/minus.tsx","../../src/ui/icons/mouse-pointer.tsx","../../src/ui/icons/mouse-pointer-click.tsx","../../src/ui/icons/panel-bottom.tsx","../../src/ui/icons/panel-left.tsx","../../src/ui/icons/panel-right.tsx","../../src/ui/icons/panel-top.tsx","../../src/ui/icons/pencil.tsx","../../src/ui/icons/plus.tsx","../../src/ui/icons/rows-2.tsx","../../src/ui/icons/split-square-vertical.tsx","../../src/ui/icons/square.tsx","../../src/ui/icons/square-code.tsx","../../src/ui/icons/square-dashed.tsx","../../src/ui/icons/square-round-corner.tsx","../../src/ui/icons/strikethrough.tsx","../../src/ui/icons/table.tsx","../../src/ui/icons/text.tsx","../../src/ui/icons/text-quote.tsx","../../src/ui/icons/type.tsx","../../src/ui/icons/underline.tsx","../../src/ui/icons/unlink.tsx","../../src/ui/icons/x.tsx","../../src/ui/inspector/root.tsx","../../src/ui/inspector/breadcrumb.tsx","../../src/ui/inspector/document.tsx","../../src/ui/inspector/node.tsx","../../src/ui/inspector/sections/attributes.tsx","../../src/ui/inspector/sections/background.tsx","../../src/ui/inspector/sections/border.tsx","../../src/ui/inspector/sections/column-spacing.tsx","../../src/ui/inspector/text.tsx","../../src/ui/inspector/sections/link.tsx","../../src/ui/inspector/sections/padding.tsx","../../src/ui/inspector/sections/size.tsx","../../src/ui/inspector/sections/typography.tsx","../../src/ui/inspector/config/node-meta.ts","../../src/ui/inspector/index.tsx","../../src/ui/slash-command/commands.tsx","../../src/ui/slash-command/root.tsx","../../src/ui/slash-command/search.ts","../../src/ui/slash-command/utils.ts"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.d.mts","names":[],"sources":["../../src/ui/bubble-menu/create-mark-bubble-item.tsx","../../src/ui/bubble-menu/align-center.tsx","../../src/ui/bubble-menu/align-left.tsx","../../src/ui/bubble-menu/align-right.tsx","../../src/ui/bubble-menu/button-default.tsx","../../src/ui/bubble-menu/button-edit-link.tsx","../../src/ui/bubble-menu/button-form.tsx","../../src/ui/bubble-menu/button-toolbar.tsx","../../src/ui/bubble-menu/button-unlink.tsx","../../src/ui/bubble-menu/group.tsx","../../src/ui/bubble-menu/image-default.tsx","../../src/ui/bubble-menu/image-edit-link.tsx","../../src/ui/bubble-menu/image-form.tsx","../../src/ui/bubble-menu/image-toolbar.tsx","../../src/ui/bubble-menu/image-unlink.tsx","../../src/ui/bubble-menu/item.tsx","../../src/ui/bubble-menu/link-default.tsx","../../src/ui/bubble-menu/link-edit-link.tsx","../../src/ui/bubble-menu/link-form.tsx","../../src/ui/bubble-menu/link-open-link.tsx","../../src/ui/bubble-menu/link-selector.tsx","../../src/ui/bubble-menu/link-toolbar.tsx","../../src/ui/bubble-menu/link-unlink.tsx","../../src/ui/bubble-menu/node-selector.tsx","../../src/ui/bubble-menu/triggers.ts","../../src/ui/bubble-menu/root.tsx","../../src/ui/bubble-menu/separator.tsx","../../src/ui/bubble-menu/bold.tsx","../../src/ui/bubble-menu/code.tsx","../../src/ui/bubble-menu/context.tsx","../../src/ui/bubble-menu/italic.tsx","../../src/ui/bubble-menu/strike.tsx","../../src/ui/bubble-menu/underline.tsx","../../src/ui/bubble-menu/uppercase.tsx","../../src/ui/bubble-menu/index.ts","../../src/ui/editor-focus-scope.tsx","../../src/ui/icons/types.ts","../../src/ui/icons/align-center.tsx","../../src/ui/icons/align-center-vertical.tsx","../../src/ui/icons/align-end-vertical.tsx","../../src/ui/icons/align-left.tsx","../../src/ui/icons/align-right.tsx","../../src/ui/icons/align-start-vertical.tsx","../../src/ui/icons/bold.tsx","../../src/ui/icons/box.tsx","../../src/ui/icons/case-upper.tsx","../../src/ui/icons/check.tsx","../../src/ui/icons/chevron-down.tsx","../../src/ui/icons/code.tsx","../../src/ui/icons/columns-2.tsx","../../src/ui/icons/columns-3.tsx","../../src/ui/icons/columns-4.tsx","../../src/ui/icons/corner-bottom-left.tsx","../../src/ui/icons/corner-bottom-right.tsx","../../src/ui/icons/corner-top-left.tsx","../../src/ui/icons/corner-top-right.tsx","../../src/ui/icons/external-link.tsx","../../src/ui/icons/heading-1.tsx","../../src/ui/icons/heading-2.tsx","../../src/ui/icons/heading-3.tsx","../../src/ui/icons/image.tsx","../../src/ui/icons/italic.tsx","../../src/ui/icons/layout.tsx","../../src/ui/icons/link.tsx","../../src/ui/icons/list.tsx","../../src/ui/icons/list-ordered.tsx","../../src/ui/icons/minus.tsx","../../src/ui/icons/mouse-pointer.tsx","../../src/ui/icons/mouse-pointer-click.tsx","../../src/ui/icons/panel-bottom.tsx","../../src/ui/icons/panel-left.tsx","../../src/ui/icons/panel-right.tsx","../../src/ui/icons/panel-top.tsx","../../src/ui/icons/pencil.tsx","../../src/ui/icons/plus.tsx","../../src/ui/icons/rows-2.tsx","../../src/ui/icons/split-square-vertical.tsx","../../src/ui/icons/square.tsx","../../src/ui/icons/square-code.tsx","../../src/ui/icons/square-dashed.tsx","../../src/ui/icons/square-round-corner.tsx","../../src/ui/icons/strikethrough.tsx","../../src/ui/icons/table.tsx","../../src/ui/icons/text.tsx","../../src/ui/icons/text-quote.tsx","../../src/ui/icons/type.tsx","../../src/ui/icons/underline.tsx","../../src/ui/icons/unlink.tsx","../../src/ui/icons/x.tsx","../../src/ui/inspector/root.tsx","../../src/ui/inspector/breadcrumb.tsx","../../src/ui/inspector/document.tsx","../../src/ui/inspector/node.tsx","../../src/ui/inspector/sections/attributes.tsx","../../src/ui/inspector/sections/background.tsx","../../src/ui/inspector/sections/border.tsx","../../src/ui/inspector/sections/column-spacing.tsx","../../src/ui/inspector/text.tsx","../../src/ui/inspector/sections/link.tsx","../../src/ui/inspector/sections/padding.tsx","../../src/ui/inspector/sections/size.tsx","../../src/ui/inspector/sections/typography.tsx","../../src/ui/inspector/config/node-meta.ts","../../src/ui/inspector/index.tsx","../../src/ui/slash-command/commands.tsx","../../src/ui/slash-command/root.tsx","../../src/ui/slash-command/search.ts","../../src/ui/slash-command/utils.ts"],"mappings":"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"}
|
package/dist/ui/index.mjs
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { a as jsToInlineCss, i as inlineCssToJs, n as ensureBorderStyleFallback, r as expandShorthandProperties } from "../email-node-B-_g4X-S.mjs";
|
|
2
|
-
import { p as loadPrismTheme } from "../focus-scopes-
|
|
2
|
+
import { p as loadPrismTheme } from "../focus-scopes-DOsiXV7b.mjs";
|
|
3
3
|
import { d as useEmailTheming, l as setGlobalStyles, o as getThemeComponentKey, u as stylesToCss, v as EDITOR_THEMES, x as SUPPORTED_CSS_PROPERTIES } from "../extension-B_qJnv3m.mjs";
|
|
4
|
-
import { $ as BubbleMenuButtonToolbar, A as BubbleMenuImageUnlink, At as ChevronDownIcon, B as BubbleMenuNodeSelector, C as BubbleMenuLinkDefault, Ct as Heading2Icon, D as BubbleMenuLinkForm, Dt as Columns3Icon, E as BubbleMenuLinkOpenLink, Et as Columns4Icon, F as RootWithDefault, Ft as AlignLeftIcon, G as BubbleMenuItalic, H as NodeSelectorRoot, I as BubbleMenuUppercase, It as AlignCenterIcon, J as EditorFocusScope, K as BubbleMenuItemGroup, L as BubbleMenuUnderline, M as BubbleMenuImageForm, Mt as CaseUpperIcon, N as BubbleMenuImageEditLink, Nt as BoldIcon, O as BubbleMenuLinkEditLink, Ot as Columns2Icon, P as BubbleMenuButtonDefault, Pt as AlignRightIcon, Q as BubbleMenuButtonUnlink, R as bubbleMenuTriggers, S as BubbleMenuSeparator, St as Heading3Icon, T as BubbleMenuLinkToolbar, Tt as ExternalLinkIcon, U as NodeSelectorTrigger, V as NodeSelectorContent, W as BubbleMenuLinkSelector, X as FocusScopeContext, Y as EditorFocusScopeProvider, Z as useEditorFocusScope, _ as TWO_COLUMNS, _t as MousePointerIcon, a as BUTTON, at as BubbleMenuAlignCenter, b as isInsideNode, bt as LinkIcon, c as FOUR_COLUMNS, ct as UnlinkIcon, d as H3, dt as TextIcon, et as BubbleMenuButtonForm, f as NUMBERED_LIST, ft as StrikethroughIcon, g as THREE_COLUMNS, gt as PencilIcon, h as TEXT, ht as Rows2Icon, i as BULLET_LIST, it as BubbleMenuAlignLeft, j as BubbleMenuImageToolbar, jt as CheckIcon, k as BubbleMenuImageDefault, kt as CodeIcon, l as H1, lt as UnderlineIcon, m as SECTION, mt as SplitSquareVerticalIcon, n as filterAndRankItems, nt as BubbleMenuBold, o as CODE, ot as BubbleMenuItem, p as QUOTE, pt as SquareCodeIcon, q as BubbleMenuCode, r as scoreItem, rt as BubbleMenuAlignRight, s as DIVIDER, st as useBubbleMenuContext, t as SlashCommandRoot, tt as BubbleMenuButtonEditLink, u as H2, ut as TextQuoteIcon, v as defaultSlashCommands, vt as ListOrderedIcon, w as BubbleMenuLinkUnlink, wt as Heading1Icon, x as BubbleMenu, xt as ItalicIcon, y as isAtMaxColumnsDepth, yt as ListIcon, z as BubbleMenuStrike } from "../root-
|
|
4
|
+
import { $ as BubbleMenuButtonToolbar, A as BubbleMenuImageUnlink, At as ChevronDownIcon, B as BubbleMenuNodeSelector, C as BubbleMenuLinkDefault, Ct as Heading2Icon, D as BubbleMenuLinkForm, Dt as Columns3Icon, E as BubbleMenuLinkOpenLink, Et as Columns4Icon, F as RootWithDefault, Ft as AlignLeftIcon, G as BubbleMenuItalic, H as NodeSelectorRoot, I as BubbleMenuUppercase, It as AlignCenterIcon, J as EditorFocusScope, K as BubbleMenuItemGroup, L as BubbleMenuUnderline, M as BubbleMenuImageForm, Mt as CaseUpperIcon, N as BubbleMenuImageEditLink, Nt as BoldIcon, O as BubbleMenuLinkEditLink, Ot as Columns2Icon, P as BubbleMenuButtonDefault, Pt as AlignRightIcon, Q as BubbleMenuButtonUnlink, R as bubbleMenuTriggers, S as BubbleMenuSeparator, St as Heading3Icon, T as BubbleMenuLinkToolbar, Tt as ExternalLinkIcon, U as NodeSelectorTrigger, V as NodeSelectorContent, W as BubbleMenuLinkSelector, X as FocusScopeContext, Y as EditorFocusScopeProvider, Z as useEditorFocusScope, _ as TWO_COLUMNS, _t as MousePointerIcon, a as BUTTON, at as BubbleMenuAlignCenter, b as isInsideNode, bt as LinkIcon, c as FOUR_COLUMNS, ct as UnlinkIcon, d as H3, dt as TextIcon, et as BubbleMenuButtonForm, f as NUMBERED_LIST, ft as StrikethroughIcon, g as THREE_COLUMNS, gt as PencilIcon, h as TEXT, ht as Rows2Icon, i as BULLET_LIST, it as BubbleMenuAlignLeft, j as BubbleMenuImageToolbar, jt as CheckIcon, k as BubbleMenuImageDefault, kt as CodeIcon, l as H1, lt as UnderlineIcon, m as SECTION, mt as SplitSquareVerticalIcon, n as filterAndRankItems, nt as BubbleMenuBold, o as CODE, ot as BubbleMenuItem, p as QUOTE, pt as SquareCodeIcon, q as BubbleMenuCode, r as scoreItem, rt as BubbleMenuAlignRight, s as DIVIDER, st as useBubbleMenuContext, t as SlashCommandRoot, tt as BubbleMenuButtonEditLink, u as H2, ut as TextQuoteIcon, v as defaultSlashCommands, vt as ListOrderedIcon, w as BubbleMenuLinkUnlink, wt as Heading1Icon, x as BubbleMenu, xt as ItalicIcon, y as isAtMaxColumnsDepth, yt as ListIcon, z as BubbleMenuStrike } from "../root-DTTCkmjD.mjs";
|
|
5
5
|
import { t as ImageIcon } from "../image-jWcRFTLT.mjs";
|
|
6
6
|
import { useCurrentEditor, useEditorState } from "@tiptap/react";
|
|
7
7
|
import * as React$1 from "react";
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@react-email/editor",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.4.1",
|
|
4
4
|
"description": "A rich text editor for editing and building email templates",
|
|
5
5
|
"sideEffects": [
|
|
6
6
|
"**/*.css"
|
|
@@ -126,7 +126,7 @@
|
|
|
126
126
|
"@tiptap/suggestion": "^3.17.1",
|
|
127
127
|
"hast-util-from-html": "^2.0.3",
|
|
128
128
|
"prismjs": "^1.30.0",
|
|
129
|
-
"react-email": "6.1.
|
|
129
|
+
"react-email": "6.1.4"
|
|
130
130
|
},
|
|
131
131
|
"devDependencies": {
|
|
132
132
|
"@testing-library/react": "16.3.2",
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"extensions-CU0ndoee.mjs","names":["Body","Button","ReactEmailButton","CodeBlock","ReactEmailCodeBlock","Container","ReactEmailContainer","Heading","TipTapHeading","EmailHeading","Link","ReactEmailLink","Section","ReactEmailSection","Text","BaseText"],"sources":["../src/extensions/alignment-attribute.tsx","../src/utils/get-text-alignment.ts","../src/extensions/blockquote.tsx","../src/extensions/body.tsx","../src/extensions/bold.tsx","../src/extensions/bullet-list.tsx","../src/extensions/button.tsx","../src/extensions/class-attribute.tsx","../src/extensions/code.tsx","../src/extensions/prism-plugin.ts","../src/extensions/code-block.tsx","../src/utils/is-collaboration.ts","../src/extensions/container.tsx","../src/extensions/div.tsx","../src/extensions/divider.tsx","../src/extensions/hard-break.tsx","../src/extensions/heading.tsx","../src/extensions/italic.tsx","../src/extensions/preserved-style.tsx","../src/extensions/link.tsx","../src/extensions/list-item.tsx","../src/extensions/max-nesting.ts","../src/extensions/ordered-list.tsx","../src/extensions/paragraph.tsx","../src/extensions/preview-text.ts","../src/extensions/section.tsx","../src/extensions/strike.tsx","../src/extensions/style-attribute.tsx","../src/extensions/sup.tsx","../src/extensions/table.tsx","../src/extensions/text.tsx","../src/extensions/trailing-node.tsx","../src/extensions/underline.tsx","../src/extensions/uppercase.tsx","../src/extensions/index.ts"],"sourcesContent":["import { Extension } from '@tiptap/core';\n\nexport interface AlignmentOptions {\n types: string[];\n alignments: string[];\n}\n\ndeclare module '@tiptap/core' {\n interface Commands<ReturnType> {\n alignment: {\n /**\n * Set the text align attribute\n */\n setAlignment: (alignment: string) => ReturnType;\n };\n }\n}\n\nexport const AlignmentAttribute = Extension.create<AlignmentOptions>({\n name: 'alignmentAttribute',\n\n addOptions() {\n return {\n types: [],\n alignments: ['left', 'center', 'right', 'justify'],\n };\n },\n\n addGlobalAttributes() {\n return [\n {\n types: this.options.types,\n attributes: {\n alignment: {\n parseHTML: (element) => {\n const explicitAlign =\n element.getAttribute('align') ||\n element.getAttribute('alignment') ||\n element.style.textAlign;\n if (\n explicitAlign &&\n this.options.alignments.includes(explicitAlign)\n ) {\n return explicitAlign;\n }\n\n // Return null to let natural inheritance work\n return null;\n },\n renderHTML: (attributes) => {\n if (attributes.alignment === 'left') {\n return {};\n }\n\n return { alignment: attributes.alignment };\n },\n },\n },\n },\n ];\n },\n\n addCommands() {\n return {\n setAlignment:\n (alignment) =>\n ({ commands }) => {\n if (!this.options.alignments.includes(alignment)) {\n return false;\n }\n\n return this.options.types.every((type) =>\n commands.updateAttributes(type, { alignment }),\n );\n },\n };\n },\n\n addKeyboardShortcuts() {\n return {\n Enter: () => {\n // Get the current node's alignment\n const { from } = this.editor.state.selection;\n const node = this.editor.state.doc.nodeAt(from);\n const currentAlignment = node?.attrs?.alignment;\n\n if (currentAlignment) {\n requestAnimationFrame(() => {\n // Preserve the current alignment when creating new nodes\n this.editor.commands.setAlignment(currentAlignment);\n });\n }\n\n return false;\n },\n 'Mod-Shift-l': () => this.editor.commands.setAlignment('left'),\n 'Mod-Shift-e': () => this.editor.commands.setAlignment('center'),\n 'Mod-Shift-r': () => this.editor.commands.setAlignment('right'),\n 'Mod-Shift-j': () => this.editor.commands.setAlignment('justify'),\n };\n },\n});\n","export function getTextAlignment(alignment: string | undefined) {\n switch (alignment) {\n case 'left':\n return { textAlign: 'left' } as const;\n case 'center':\n return { textAlign: 'center' } as const;\n case 'right':\n return { textAlign: 'right' } as const;\n default:\n return {};\n }\n}\n","import type { BlockquoteOptions } from '@tiptap/extension-blockquote';\nimport BlockquoteBase from '@tiptap/extension-blockquote';\nimport { EmailNode } from '../core/serializer/email-node';\nimport { getTextAlignment } from '../utils/get-text-alignment';\nimport { inlineCssToJs } from '../utils/styles';\n\nexport const Blockquote: EmailNode<BlockquoteOptions, any> = EmailNode.from(\n BlockquoteBase,\n ({ children, node, style }) => (\n <blockquote\n className={node.attrs?.class || undefined}\n style={{\n ...style,\n ...inlineCssToJs(node.attrs?.style),\n ...getTextAlignment(node.attrs?.align || node.attrs?.alignment),\n }}\n >\n {children}\n </blockquote>\n ),\n);\n","import { mergeAttributes } from '@tiptap/core';\nimport { EmailNode } from '../core/serializer/email-node';\nimport {\n COMMON_HTML_ATTRIBUTES,\n createStandardAttributes,\n LAYOUT_ATTRIBUTES,\n} from '../utils/attribute-helpers';\nimport { inlineCssToJs } from '../utils/styles';\n\nexport interface BodyOptions {\n HTMLAttributes: Record<string, unknown>;\n}\n\nexport const Body = EmailNode.create<BodyOptions>({\n name: 'body',\n\n group: 'block',\n\n content: 'block+',\n\n defining: true,\n isolating: true,\n\n addAttributes() {\n return {\n ...createStandardAttributes([\n ...COMMON_HTML_ATTRIBUTES,\n ...LAYOUT_ATTRIBUTES,\n ]),\n };\n },\n\n parseHTML() {\n return [\n {\n tag: 'body',\n getAttrs: (node) => {\n if (typeof node === 'string') {\n return false;\n }\n const element = node as HTMLElement;\n const attrs: Record<string, string> = {};\n\n // Preserve all attributes\n Array.from(element.attributes).forEach((attr) => {\n attrs[attr.name] = attr.value;\n });\n\n return attrs;\n },\n },\n ];\n },\n\n renderHTML({ HTMLAttributes }) {\n return [\n 'div',\n mergeAttributes(this.options.HTMLAttributes, HTMLAttributes),\n 0,\n ];\n },\n\n renderToReactEmail({ children, node, style }) {\n const inlineStyles = inlineCssToJs(node.attrs?.style);\n return (\n <div\n className={node.attrs?.class || undefined}\n style={{\n ...style,\n ...inlineStyles,\n }}\n >\n {children}\n </div>\n );\n },\n});\n","import type { BoldOptions as TipTapBoldOptions } from '@tiptap/extension-bold';\nimport BoldBase from '@tiptap/extension-bold';\nimport { EmailMark } from '../core/serializer/email-mark';\n\nexport type BoldOptions = TipTapBoldOptions;\n\nconst BoldWithoutFontWeightInference = BoldBase.extend({\n parseHTML() {\n return [\n {\n tag: 'strong',\n },\n {\n tag: 'b',\n getAttrs: (node) =>\n (node as HTMLElement).style.fontWeight !== 'normal' && null,\n },\n {\n style: 'font-weight=400',\n clearMark: (mark) => mark.type.name === this.name,\n },\n ];\n },\n});\n\nexport const Bold: EmailMark<TipTapBoldOptions, any> = EmailMark.from(\n BoldWithoutFontWeightInference,\n ({ children, style }) => <strong style={style}>{children}</strong>,\n);\n","import type { BulletListOptions } from '@tiptap/extension-bullet-list';\nimport BulletListBase from '@tiptap/extension-bullet-list';\nimport { EmailNode } from '../core/serializer/email-node';\nimport { inlineCssToJs } from '../utils/styles';\n\nexport const BulletList: EmailNode<BulletListOptions, any> = EmailNode.from(\n BulletListBase,\n ({ children, node, style }) => (\n <ul\n className={node.attrs?.class || undefined}\n style={{\n ...style,\n ...inlineCssToJs(node.attrs?.style),\n }}\n >\n {children}\n </ul>\n ),\n);\n","import { mergeAttributes } from '@tiptap/core';\nimport { Column, Button as ReactEmailButton, Row } from 'react-email';\nimport { EmailNode } from '../core/serializer/email-node';\nimport { inlineCssToJs } from '../utils/styles';\n\nexport interface EditorButtonOptions {\n HTMLAttributes: Record<string, unknown>;\n [key: string]: unknown;\n}\n\ndeclare module '@tiptap/core' {\n interface Commands<ReturnType> {\n button: {\n setButton: () => ReturnType;\n updateButton: (attributes: Record<string, unknown>) => ReturnType;\n };\n }\n}\n\nexport const Button = EmailNode.create<EditorButtonOptions>({\n name: 'button',\n group: 'block',\n content: 'inline*',\n defining: true,\n draggable: true,\n marks: 'bold',\n\n addAttributes() {\n return {\n class: {\n default: 'button',\n },\n href: {\n default: '#',\n },\n alignment: {\n default: 'left',\n },\n };\n },\n\n parseHTML() {\n return [\n {\n tag: 'a[data-id=\"react-email-button\"]',\n getAttrs: (node) => {\n if (typeof node === 'string') {\n return false;\n }\n const element = node as HTMLElement;\n const attrs: Record<string, string> = {};\n\n // Preserve all attributes\n Array.from(element.attributes).forEach((attr) => {\n attrs[attr.name] = attr.value;\n });\n\n return attrs;\n },\n },\n ];\n },\n\n renderHTML({ HTMLAttributes }) {\n return [\n 'div',\n mergeAttributes({\n class: `align-${HTMLAttributes?.alignment}`,\n }),\n [\n 'a',\n mergeAttributes({\n class: `node-button ${HTMLAttributes?.class}`,\n style: HTMLAttributes?.style,\n 'data-id': 'react-email-button',\n 'data-href': HTMLAttributes?.href,\n }),\n 0,\n ],\n ];\n },\n\n addCommands() {\n return {\n updateButton:\n (attributes) =>\n ({ commands }) => {\n return commands.updateAttributes('button', attributes);\n },\n\n setButton:\n () =>\n ({ commands }) => {\n return commands.insertContent({\n type: 'button',\n content: [\n {\n type: 'text',\n text: 'Button',\n },\n ],\n });\n },\n };\n },\n\n renderToReactEmail({ children, node, style }) {\n const inlineStyles = inlineCssToJs(node.attrs?.style);\n return (\n <Row>\n <Column align={node.attrs?.align || node.attrs?.alignment}>\n <ReactEmailButton\n className={node.attrs?.class || undefined}\n href={node.attrs?.href}\n style={{\n ...style,\n ...inlineStyles,\n }}\n >\n {children}\n </ReactEmailButton>\n </Column>\n </Row>\n );\n },\n});\n","import { Extension } from '@tiptap/core';\n\nexport interface ClassAttributeOptions {\n types: string[];\n class: string[];\n}\n\ndeclare module '@tiptap/core' {\n interface Commands<ReturnType> {\n class: {\n /**\n * Set the class attribute\n */\n setClass: (classList: string) => ReturnType;\n /**\n * Unset the class attribute\n */\n unsetClass: () => ReturnType;\n };\n }\n}\n\nexport const ClassAttribute = Extension.create<ClassAttributeOptions>({\n name: 'classAttribute',\n\n addOptions() {\n return {\n types: [],\n class: [],\n };\n },\n\n addGlobalAttributes() {\n return [\n {\n types: this.options.types,\n attributes: {\n class: {\n default: '',\n parseHTML: (element) => element.className || '',\n renderHTML: (attributes) => {\n return attributes.class ? { class: attributes.class } : {};\n },\n },\n },\n },\n ];\n },\n\n addCommands() {\n return {\n unsetClass:\n () =>\n ({ commands }) => {\n return this.options.types.every((type) =>\n commands.resetAttributes(type, 'class'),\n );\n },\n setClass:\n (classList: string) =>\n ({ commands }) => {\n return this.options.types.every((type) =>\n commands.updateAttributes(type, { class: classList }),\n );\n },\n };\n },\n\n addKeyboardShortcuts() {\n return {\n Enter: ({ editor }) => {\n requestAnimationFrame(() => {\n editor.commands.resetAttributes('paragraph', 'class');\n });\n\n return false;\n },\n };\n },\n});\n","import CodeBase from '@tiptap/extension-code';\nimport { EmailMark } from '../core/serializer/email-mark';\nimport { inlineCssToJs } from '../utils/styles';\n\nexport const Code = EmailMark.from(CodeBase, ({ children, node, style }) => (\n <code style={{ ...style, ...inlineCssToJs(node.attrs?.style) }}>\n {children}\n </code>\n));\n","import { findChildren } from '@tiptap/core';\nimport type { Node as ProsemirrorNode } from '@tiptap/pm/model';\nimport { Plugin, PluginKey } from '@tiptap/pm/state';\nimport type { EditorView } from '@tiptap/pm/view';\nimport { Decoration, DecorationSet } from '@tiptap/pm/view';\nimport { fromHtml } from 'hast-util-from-html';\nimport Prism from 'prismjs';\nimport {\n hasPrismThemeLoaded,\n loadPrismTheme,\n removePrismTheme,\n} from '../utils/prism-utils';\n\nconst PRISM_LANGUAGE_LOADED_META = 'prismLanguageLoaded';\n\ninterface RefractorNode {\n properties?: { className: string[] };\n children?: RefractorNode[];\n value?: string;\n}\n\nfunction parseNodes(\n nodes: RefractorNode[],\n className: string[] = [],\n): { text: string; classes: string[] }[] {\n return nodes.flatMap((node) => {\n const classes = [\n ...className,\n ...(node.properties ? node.properties.className : []),\n ];\n\n if (node.children) {\n return parseNodes(node.children, classes);\n }\n\n return {\n text: node.value ?? '',\n classes,\n };\n });\n}\n\nfunction getHighlightNodes(html: string) {\n return fromHtml(html, { fragment: true }).children;\n}\n\nfunction registeredLang(aliasOrLanguage: string) {\n const allSupportLang = Object.keys(Prism.languages).filter(\n (id) => typeof Prism.languages[id] === 'object',\n );\n return Boolean(allSupportLang.find((x) => x === aliasOrLanguage));\n}\n\nfunction getDecorations({\n doc,\n name,\n defaultLanguage,\n defaultTheme,\n loadingLanguages,\n onLanguageLoaded,\n}: {\n doc: ProsemirrorNode;\n name: string;\n defaultLanguage: string | null | undefined;\n defaultTheme: string | null | undefined;\n loadingLanguages: Set<string>;\n onLanguageLoaded: (language: string) => void;\n}) {\n const decorations: Decoration[] = [];\n\n findChildren(doc, (node) => node.type.name === name).forEach((block) => {\n let from = block.pos + 1;\n const language = block.node.attrs.language || defaultLanguage;\n const theme = block.node.attrs.theme || defaultTheme;\n let html = '';\n\n try {\n if (!registeredLang(language) && !loadingLanguages.has(language)) {\n loadingLanguages.add(language);\n import(/* @vite-ignore */ `prismjs/components/prism-${language}`)\n .then(() => {\n loadingLanguages.delete(language);\n onLanguageLoaded(language);\n })\n .catch(() => {\n loadingLanguages.delete(language);\n });\n }\n\n if (!hasPrismThemeLoaded(theme)) {\n loadPrismTheme(theme);\n }\n\n html = Prism.highlight(\n block.node.textContent,\n Prism.languages[language],\n language,\n );\n } catch {\n html = Prism.highlight(\n block.node.textContent,\n Prism.languages.javascript,\n 'js',\n );\n }\n\n const nodes = getHighlightNodes(html);\n\n parseNodes(nodes as RefractorNode[]).forEach((node) => {\n const to = from + node.text.length;\n\n if (node.classes.length) {\n const decoration = Decoration.inline(from, to, {\n class: node.classes.join(' '),\n });\n\n decorations.push(decoration);\n }\n\n from = to;\n });\n });\n\n return DecorationSet.create(doc, decorations);\n}\n\nexport function PrismPlugin({\n name,\n defaultLanguage,\n defaultTheme,\n}: {\n name: string;\n defaultLanguage: string;\n defaultTheme: string;\n}) {\n if (!defaultLanguage) {\n throw Error('You must specify the defaultLanguage parameter');\n }\n\n const loadingLanguages = new Set<string>();\n let pluginView: EditorView | null = null;\n\n const onLanguageLoaded = (language: string) => {\n if (pluginView) {\n pluginView.dispatch(\n pluginView.state.tr.setMeta(PRISM_LANGUAGE_LOADED_META, language),\n );\n }\n };\n\n const prismjsPlugin: Plugin<DecorationSet> = new Plugin({\n key: new PluginKey('prism'),\n\n view(view) {\n pluginView = view;\n return {\n destroy() {\n pluginView = null;\n },\n };\n },\n\n state: {\n init: (_, { doc }) => {\n return getDecorations({\n doc,\n name,\n defaultLanguage,\n defaultTheme,\n loadingLanguages,\n onLanguageLoaded,\n });\n },\n apply: (transaction, decorationSet, oldState, newState) => {\n const oldNodeName = oldState.selection.$head.parent.type.name;\n const newNodeName = newState.selection.$head.parent.type.name;\n\n const oldNodes = findChildren(\n oldState.doc,\n (node) => node.type.name === name,\n );\n const newNodes = findChildren(\n newState.doc,\n (node) => node.type.name === name,\n );\n\n if (\n transaction.getMeta(PRISM_LANGUAGE_LOADED_META) ||\n (transaction.docChanged &&\n // Apply decorations if:\n // selection includes named node,\n ([oldNodeName, newNodeName].includes(name) ||\n // OR transaction adds/removes named node,\n newNodes.length !== oldNodes.length ||\n // OR transaction has changes that completely encapsulate a node\n // (for example, a transaction that affects the entire document).\n // Such transactions can happen during collab syncing via y-prosemirror, for example.\n transaction.steps.some((step) => {\n const rangeStep = step as unknown as {\n from?: number;\n to?: number;\n };\n return (\n rangeStep.from !== undefined &&\n rangeStep.to !== undefined &&\n oldNodes.some((node) => {\n return (\n node.pos >= rangeStep.from! &&\n node.pos + node.node.nodeSize <= rangeStep.to!\n );\n })\n );\n })))\n ) {\n return getDecorations({\n doc: transaction.doc,\n name,\n defaultLanguage,\n defaultTheme,\n loadingLanguages,\n onLanguageLoaded,\n });\n }\n\n return decorationSet.map(transaction.mapping, transaction.doc);\n },\n },\n\n props: {\n decorations(state) {\n return prismjsPlugin.getState(state);\n },\n },\n\n destroy() {\n pluginView = null;\n removePrismTheme();\n },\n });\n\n return prismjsPlugin;\n}\n","import { mergeAttributes } from '@tiptap/core';\nimport type { CodeBlockOptions } from '@tiptap/extension-code-block';\nimport CodeBlock from '@tiptap/extension-code-block';\nimport { TextSelection } from '@tiptap/pm/state';\nimport * as ReactEmailComponents from 'react-email';\nimport {\n type PrismLanguage,\n CodeBlock as ReactEmailCodeBlock,\n} from 'react-email';\nimport { EmailNode } from '../core/serializer/email-node';\nimport { PrismPlugin } from './prism-plugin';\n\nexport interface CodeBlockPrismOptions extends CodeBlockOptions {\n defaultLanguage: string;\n defaultTheme: string;\n}\n\nexport const CodeBlockPrism = EmailNode.from(\n CodeBlock.extend<CodeBlockPrismOptions>({\n addOptions(): CodeBlockPrismOptions {\n return {\n languageClassPrefix: 'language-',\n exitOnTripleEnter: false,\n exitOnArrowDown: false,\n enableTabIndentation: true,\n tabSize: 2,\n defaultLanguage: 'javascript',\n defaultTheme: 'default',\n HTMLAttributes: {},\n };\n },\n\n addAttributes() {\n return {\n ...this.parent?.(),\n language: {\n default: this.options.defaultLanguage,\n parseHTML: (element: HTMLElement | null) => {\n if (!element) {\n return null;\n }\n const { languageClassPrefix } = this.options;\n if (!languageClassPrefix) {\n return null;\n }\n const classNames = [\n ...(element.firstElementChild?.classList || []),\n ];\n const languages = classNames\n .filter((className) =>\n className.startsWith(languageClassPrefix || ''),\n )\n .map((className) => className.replace(languageClassPrefix, ''));\n const language = languages[0];\n\n if (!language) {\n return null;\n }\n\n return language;\n },\n rendered: false,\n },\n theme: {\n default: this.options.defaultTheme,\n rendered: false,\n },\n };\n },\n\n renderHTML({ node, HTMLAttributes }) {\n return [\n 'pre',\n mergeAttributes(\n this.options.HTMLAttributes,\n HTMLAttributes,\n {\n class: node.attrs.language\n ? `${this.options.languageClassPrefix}${node.attrs.language}`\n : null,\n },\n { 'data-theme': node.attrs.theme },\n ),\n [\n 'code',\n {\n class: node.attrs.language\n ? `${this.options.languageClassPrefix}${node.attrs.language} node-codeTag`\n : 'node-codeTag',\n },\n 0,\n ],\n ];\n },\n\n addKeyboardShortcuts() {\n return {\n ...this.parent?.(),\n 'Mod-a': ({ editor }) => {\n const { state } = editor;\n const { selection } = state;\n const { $from } = selection;\n\n for (let depth = $from.depth; depth >= 1; depth--) {\n if ($from.node(depth).type.name === this.name) {\n const blockStart = $from.start(depth);\n const blockEnd = $from.end(depth);\n\n const alreadyFullySelected =\n selection.from === blockStart && selection.to === blockEnd;\n if (alreadyFullySelected) {\n return false;\n }\n\n const tr = state.tr.setSelection(\n TextSelection.create(state.doc, blockStart, blockEnd),\n );\n editor.view.dispatch(tr);\n return true;\n }\n }\n\n return false;\n },\n };\n },\n\n addProseMirrorPlugins() {\n return [\n ...(this.parent?.() || []),\n PrismPlugin({\n name: this.name,\n defaultLanguage: this.options.defaultLanguage,\n defaultTheme: this.options.defaultTheme,\n }),\n ];\n },\n }),\n ({ node, style }) => {\n const language = node.attrs?.language\n ? `${node.attrs.language}`\n : 'javascript';\n\n // @ts-expect-error -- react-email does not export theme objects by name; dynamic access needed for user-selected themes\n // biome-ignore lint/performance/noDynamicNamespaceImportAccess: dynamic access needed for user-selected themes\n const userTheme = ReactEmailComponents[node.attrs?.theme];\n\n // Without theme, render a gray code block\n const theme = userTheme\n ? {\n ...userTheme,\n base: {\n ...userTheme.base,\n borderRadius: '0.125rem',\n padding: '0.75rem 1rem',\n },\n }\n : {\n base: {\n color: '#1e293b',\n background: '#f1f5f9',\n lineHeight: '1.5',\n fontFamily:\n '\"Fira Code\", \"Fira Mono\", Menlo, Consolas, \"DejaVu Sans Mono\", monospace',\n padding: '0.75rem 1rem',\n borderRadius: '0.125rem',\n },\n };\n\n return (\n <ReactEmailCodeBlock\n code={node.content?.[0]?.text ?? ''}\n language={language as PrismLanguage}\n theme={theme}\n style={{\n width: 'auto',\n ...style,\n }}\n />\n );\n },\n);\n","import type { Extensions } from '@tiptap/core';\n\nconst COLLABORATION_EXTENSION_NAMES = new Set([\n 'liveblocksExtension',\n 'collaboration',\n]);\n\nexport function hasCollaborationExtension(exts: Extensions): boolean {\n return exts.some((ext) => COLLABORATION_EXTENSION_NAMES.has(ext.name));\n}\n","import { mergeAttributes } from '@tiptap/core';\nimport type { Node as PmNode } from '@tiptap/pm/model';\nimport { type EditorState, Plugin, PluginKey } from '@tiptap/pm/state';\nimport { Container as ReactEmailContainer } from 'react-email';\nimport { EmailNode } from '../core/serializer/email-node';\nimport { hasCollaborationExtension } from '../utils/is-collaboration';\nimport { inlineCssToJs } from '../utils/styles';\n\nfunction hasContainerNode(doc: PmNode): boolean {\n let found = false;\n doc.forEach((node) => {\n if (node.type.name === 'container') {\n found = true;\n }\n });\n return found;\n}\n\nfunction wrapInContainer(state: EditorState) {\n const { doc } = state;\n const containerType = state.schema.nodes.container;\n\n const contentNodes: PmNode[] = [];\n const globalContentNodes: PmNode[] = [];\n\n doc.forEach((node) => {\n if (node.type.name === 'globalContent') {\n globalContentNodes.push(node);\n } else {\n contentNodes.push(node);\n }\n });\n\n const containerContent =\n contentNodes.length > 0\n ? contentNodes\n : [state.schema.nodes.paragraph.create()];\n\n const containerNode = containerType.create(null, containerContent);\n\n const newDocContent = [...globalContentNodes, containerNode];\n\n const tr = state.tr;\n tr.replaceWith(0, doc.content.size, newDocContent);\n tr.setMeta('addToHistory', false);\n\n return tr;\n}\n\nexport interface ContainerOptions {\n HTMLAttributes: Record<string, unknown>;\n}\n\nexport const Container = EmailNode.create<ContainerOptions>({\n name: 'container',\n\n group: 'block',\n\n content: 'block+',\n\n defining: true,\n isolating: true,\n selectable: false,\n draggable: false,\n\n addOptions() {\n return {\n HTMLAttributes: {},\n };\n },\n\n parseHTML() {\n return [\n { tag: 'div[data-type=\"container\"]' },\n {\n tag: 'table[role=\"presentation\"]',\n priority: 60,\n getAttrs: (node) => {\n if (typeof node === 'string') {\n return false;\n }\n const table = node as HTMLElement;\n if (!table.style.maxWidth) {\n return false;\n }\n const td = table.querySelector(\n ':scope > tbody > tr:only-child > td:only-child',\n );\n if (!td) {\n return false;\n }\n return null;\n },\n contentElement: (node) =>\n node.querySelector(':scope > tbody > tr > td') as HTMLElement,\n },\n ];\n },\n\n renderHTML({ HTMLAttributes }) {\n return [\n 'div',\n mergeAttributes(\n { 'data-type': 'container', class: 'node-container' },\n this.options.HTMLAttributes,\n HTMLAttributes,\n ),\n 0,\n ];\n },\n\n addProseMirrorPlugins() {\n const isCollaborative = hasCollaborationExtension(\n this.editor.extensionManager.extensions,\n );\n return [\n new Plugin({\n key: new PluginKey('containerEnforcer'),\n view: isCollaborative\n ? undefined\n : (editorView) => {\n if (!hasContainerNode(editorView.state.doc)) {\n const tr = wrapInContainer(editorView.state);\n editorView.dispatch(tr);\n }\n return {};\n },\n appendTransaction(_transactions, oldState, newState) {\n if (hasContainerNode(newState.doc)) {\n return null;\n }\n\n // This is meant to deal with the weird behavior from Liveblocks's\n // extension. It repeatedly creates transactions that do basically no\n // changes before the actual content of the room arrives. And, if we\n // don't do this, this plugin wraps the initial document from TipTap\n // (an empty paragraph) with a container, and this is then kept in\n // the TipTap, effectively duplicating containers every time someone\n // opens the editor.\n //\n // This check is, at the end of the day, a heuristic and therefore it\n // might fail. It's just not the best solution, the best solution\n // would be for us to either not receive any content update until the\n // contents are actually being set, or to be able to distinguish\n // between \"fake\" transactions and \"real\" transactions in the\n // Liveblocks extension. But, for now, this is what we have.\n //\n // One such case where this fails is if the email's contents are\n // literally the default contents from TipTap, meaning an empty\n // paragraph, it won't wrap, and we have a test for this that's being\n // skipped in container.spec.tsx\n if (newState.doc.eq(oldState.doc)) {\n return null;\n }\n\n return wrapInContainer(newState);\n },\n }),\n ];\n },\n\n renderToReactEmail({ children, node, style }) {\n const inlineStyles = inlineCssToJs(node.attrs?.style);\n\n return (\n <ReactEmailContainer\n className={node.attrs?.class || undefined}\n align={\n ((style as Record<string, unknown>).align as\n | 'left'\n | 'center'\n | 'right') || 'center'\n }\n style={{\n ...style,\n ...inlineStyles,\n width: '100%',\n maxWidth: style?.width ?? style?.maxWidth,\n }}\n >\n {children}\n </ReactEmailContainer>\n );\n },\n});\n","import { mergeAttributes } from '@tiptap/core';\nimport { EmailNode } from '../core/serializer/email-node';\nimport {\n COMMON_HTML_ATTRIBUTES,\n createStandardAttributes,\n LAYOUT_ATTRIBUTES,\n} from '../utils/attribute-helpers';\nimport { inlineCssToJs } from '../utils/styles';\n\nexport interface DivOptions {\n HTMLAttributes: Record<string, unknown>;\n}\n\nexport const Div = EmailNode.create<DivOptions>({\n name: 'div',\n\n group: 'block',\n\n content: 'block+',\n\n defining: true,\n isolating: true,\n\n parseHTML() {\n return [\n {\n tag: 'div:not([data-type])',\n getAttrs: (node) => {\n if (typeof node === 'string') {\n return false;\n }\n const element = node as HTMLElement;\n const attrs: Record<string, string> = {};\n\n // Preserve all attributes\n Array.from(element.attributes).forEach((attr) => {\n attrs[attr.name] = attr.value;\n });\n\n return attrs;\n },\n },\n ];\n },\n\n renderHTML({ HTMLAttributes }) {\n return [\n 'div',\n mergeAttributes(this.options.HTMLAttributes, HTMLAttributes),\n 0,\n ];\n },\n\n addAttributes() {\n return {\n ...createStandardAttributes([\n ...COMMON_HTML_ATTRIBUTES,\n ...LAYOUT_ATTRIBUTES,\n ]),\n };\n },\n\n renderToReactEmail({ children, node, style }) {\n const inlineStyles = inlineCssToJs(node.attrs?.style);\n return (\n <div\n className={node.attrs?.class || undefined}\n style={{\n ...style,\n ...inlineStyles,\n }}\n >\n {children}\n </div>\n );\n },\n});\n","import { InputRule } from '@tiptap/core';\nimport type { HorizontalRuleOptions } from '@tiptap/extension-horizontal-rule';\nimport HorizontalRule from '@tiptap/extension-horizontal-rule';\nimport { Hr } from 'react-email';\n\nexport type DividerOptions = HorizontalRuleOptions;\n\nimport { NodeViewWrapper, ReactNodeViewRenderer } from '@tiptap/react';\nimport { EmailNode } from '../core';\nimport { inlineCssToJs } from '../utils/styles';\n\nexport const Divider: EmailNode<HorizontalRuleOptions, any> = EmailNode.from(\n HorizontalRule.extend({\n addAttributes() {\n return {\n class: {\n default: 'divider',\n },\n };\n },\n // patch to fix horizontal rule bug: https://github.com/ueberdosis/tiptap/pull/3859#issuecomment-1536799740\n addInputRules() {\n return [\n new InputRule({\n find: /^(?:---|—-|___\\s|\\*\\*\\*\\s)$/,\n handler: ({ state, range }) => {\n const attributes = {};\n\n const { tr } = state;\n const start = range.from;\n const end = range.to;\n\n tr.insert(start - 1, this.type.create(attributes)).delete(\n tr.mapping.map(start),\n tr.mapping.map(end),\n );\n },\n }),\n ];\n },\n addNodeView() {\n return ReactNodeViewRenderer((props) => {\n const node = props.node;\n const { class: className, ...rest } = node.attrs;\n\n const attrs = {\n ...rest,\n className: 'node-hr',\n style: inlineCssToJs(node.attrs.style),\n };\n\n return (\n <NodeViewWrapper>\n <Hr {...attrs} />\n </NodeViewWrapper>\n );\n });\n },\n }),\n ({ node, style }) => {\n return (\n <Hr\n className={node.attrs?.class || undefined}\n style={{ ...style, ...inlineCssToJs(node.attrs?.style) }}\n />\n );\n },\n);\n","import type { HardBreakOptions } from '@tiptap/extension-hard-break';\nimport HardBreakBase from '@tiptap/extension-hard-break';\nimport { EmailNode } from '../core/serializer/email-node';\n\nexport const HardBreak: EmailNode<HardBreakOptions, any> = EmailNode.from(\n HardBreakBase,\n () => <br />,\n);\n","import type { HeadingOptions as TipTapHeadingOptions } from '@tiptap/extension-heading';\nimport { Heading as TipTapHeading } from '@tiptap/extension-heading';\nimport { Heading as EmailHeading } from 'react-email';\n\nexport type HeadingOptions = TipTapHeadingOptions;\n\nimport {\n NodeViewContent,\n NodeViewWrapper,\n ReactNodeViewRenderer,\n} from '@tiptap/react';\nimport { EmailNode } from '../core';\nimport { getTextAlignment } from '../utils/get-text-alignment';\nimport { inlineCssToJs } from '../utils/styles';\n\nexport const Heading: EmailNode<TipTapHeadingOptions, any> = EmailNode.from(\n TipTapHeading.extend({\n addNodeView() {\n return ReactNodeViewRenderer(({ node }) => {\n const level = (node.attrs.level as number) ?? 1;\n const { class: className, ...rest } = node.attrs;\n\n const attrs = {\n ...rest,\n className: `node-h${level} ${className}`,\n style: inlineCssToJs(node.attrs.style),\n };\n\n return (\n <NodeViewWrapper>\n <EmailHeading as={`h${level}` as 'h1' | 'h2' | 'h3'} {...attrs}>\n <NodeViewContent />\n </EmailHeading>\n </NodeViewWrapper>\n );\n });\n },\n }),\n ({ children, node, style }) => {\n const level = node.attrs?.level ?? 1;\n return (\n <EmailHeading\n as={`h${level}` as 'h1' | 'h2' | 'h3'}\n className={node.attrs?.class || undefined}\n style={{\n ...style,\n ...inlineCssToJs(node.attrs?.style),\n ...getTextAlignment(node.attrs?.align ?? node.attrs?.alignment),\n }}\n >\n {children}\n </EmailHeading>\n );\n },\n);\n","import type { ItalicOptions } from '@tiptap/extension-italic';\nimport ItalicBase from '@tiptap/extension-italic';\nimport { EmailMark } from '../core/serializer/email-mark';\n\nexport const Italic: EmailMark<ItalicOptions, any> = EmailMark.from(\n ItalicBase,\n ({ children, style }) => <em style={style}>{children}</em>,\n);\n","import { mergeAttributes } from '@tiptap/core';\nimport { EmailMark } from '../core/serializer/email-mark';\nimport { inlineCssToJs } from '../utils/styles';\n\nexport const PreservedStyle = EmailMark.create({\n name: 'preservedStyle',\n\n addAttributes() {\n return {\n style: {\n default: null,\n parseHTML: (element) => element.getAttribute('style'),\n renderHTML: (attributes) => {\n if (!attributes.style) {\n return {};\n }\n return { style: attributes.style };\n },\n },\n };\n },\n\n parseHTML() {\n return [\n {\n tag: 'span[style]',\n getAttrs: (element) => {\n if (typeof element === 'string') {\n return false;\n }\n const style = element.getAttribute('style');\n if (style && hasPreservableStyles(style)) {\n return { style };\n }\n return false;\n },\n },\n ];\n },\n\n renderHTML({ HTMLAttributes }) {\n return ['span', mergeAttributes(HTMLAttributes), 0];\n },\n\n renderToReactEmail({ children, mark }) {\n const preservedStyles = mark.attrs?.style\n ? inlineCssToJs(mark.attrs.style)\n : undefined;\n\n return <span style={preservedStyles}>{children}</span>;\n },\n});\n\nconst LINK_INDICATOR_STYLES = [\n 'color',\n 'text-decoration',\n 'text-decoration-line',\n 'text-decoration-color',\n 'text-decoration-style',\n];\n\nfunction parseStyleString(styleString: string): CSSStyleDeclaration {\n const temp = document.createElement('div');\n temp.style.cssText = styleString;\n return temp.style;\n}\n\nfunction hasBackground(style: CSSStyleDeclaration): boolean {\n const bgColor = style.backgroundColor;\n const bg = style.background;\n\n if (bgColor && bgColor !== 'transparent' && bgColor !== 'rgba(0, 0, 0, 0)') {\n return true;\n }\n\n if (\n bg &&\n bg !== 'transparent' &&\n bg !== 'none' &&\n bg !== 'rgba(0, 0, 0, 0)'\n ) {\n return true;\n }\n\n return false;\n}\n\nfunction hasPreservableStyles(styleString: string): boolean {\n return processStylesForUnlink(styleString) !== null;\n}\n\n/**\n * Processes styles when unlinking:\n * - Has background (button-like): preserve all styles\n * - No background: strip link-indicator styles (color, text-decoration), keep the rest\n */\nexport function processStylesForUnlink(\n styleString: string | null | undefined,\n): string | null {\n if (!styleString) {\n return null;\n }\n\n const style = parseStyleString(styleString);\n\n if (hasBackground(style)) {\n return styleString;\n }\n\n const filtered: string[] = [];\n\n for (let i = 0; i < style.length; i++) {\n const prop = style[i];\n\n if (LINK_INDICATOR_STYLES.includes(prop)) {\n continue;\n }\n\n const value = style.getPropertyValue(prop);\n if (value) {\n filtered.push(`${prop}: ${value}`);\n }\n }\n\n return filtered.length > 0 ? filtered.join('; ') : null;\n}\n","import type { Editor } from '@tiptap/core';\nimport { mergeAttributes } from '@tiptap/core';\nimport type { LinkOptions as TipTapLinkOptions } from '@tiptap/extension-link';\nimport TiptapLink from '@tiptap/extension-link';\nimport { Link as ReactEmailLink } from 'react-email';\n\nexport type LinkOptions = TipTapLinkOptions;\n\nimport { editorEventBus } from '../core';\nimport { EmailMark } from '../core/serializer/email-mark';\nimport {\n getEmailTheming,\n getMergedCssJs,\n getResolvedNodeStyles,\n} from '../plugins/email-theming/extension';\nimport { inlineCssToJs, jsToInlineCss } from '../utils/styles';\nimport { processStylesForUnlink } from './preserved-style';\n\nfunction resolveThemedLinkStyle(editor: Editor): string {\n const theming = getEmailTheming(editor);\n const resolved = getResolvedNodeStyles(\n { type: 'link', attrs: {} },\n 0,\n getMergedCssJs(theming.theme, theming.styles),\n );\n return jsToInlineCss(resolved).replace(/;$/, '');\n}\n\nexport const Link: EmailMark<TipTapLinkOptions, any> = EmailMark.from(\n TiptapLink,\n ({ children, mark, style }) => {\n const linkMarkStyle = mark.attrs?.style\n ? inlineCssToJs(mark.attrs.style)\n : {};\n\n return (\n <ReactEmailLink\n href={mark.attrs?.href ?? undefined}\n rel={mark.attrs?.rel ?? undefined}\n style={{\n ...style,\n ...linkMarkStyle,\n }}\n target={mark.attrs?.target ?? undefined}\n {...(mark.attrs?.['ses:no-track']\n ? { 'ses:no-track': mark.attrs['ses:no-track'] }\n : {})}\n >\n {children}\n </ReactEmailLink>\n );\n },\n).extend({\n parseHTML() {\n return [\n {\n tag: 'a[target]:not([data-id=\"react-email-button\"])',\n getAttrs: (node) => {\n if (typeof node === 'string') {\n return false;\n }\n const element = node as HTMLElement;\n const attrs: Record<string, string> = {};\n\n // Preserve all attributes\n Array.from(element.attributes).forEach((attr) => {\n attrs[attr.name] = attr.value;\n });\n\n return attrs;\n },\n },\n {\n tag: 'a[href]:not([data-id=\"react-email-button\"])',\n getAttrs: (node) => {\n if (typeof node === 'string') {\n return false;\n }\n const element = node as HTMLElement;\n const attrs: Record<string, string> = {};\n\n // Preserve all attributes\n Array.from(element.attributes).forEach((attr) => {\n attrs[attr.name] = attr.value;\n });\n\n return attrs;\n },\n },\n ];\n },\n\n addAttributes() {\n return {\n ...this.parent?.(),\n\n 'ses:no-track': {\n default: null,\n parseHTML: (element) => element.getAttribute('ses:no-track'),\n },\n };\n },\n\n renderHTML({ HTMLAttributes }) {\n const userStyle = ((HTMLAttributes.style as string | undefined) ?? '')\n .trim()\n .replace(/;$/, '');\n const themed = this.editor ? resolveThemedLinkStyle(this.editor) : '';\n const mergedStyle = [themed, userStyle].filter(Boolean).join('; ');\n return [\n 'a',\n mergeAttributes(this.options.HTMLAttributes, HTMLAttributes, {\n style: mergedStyle || null,\n }),\n 0,\n ];\n },\n\n addCommands() {\n return {\n ...this.parent?.(),\n\n unsetLink:\n () =>\n ({ state, chain }) => {\n const { from } = state.selection;\n const linkMark = state.doc\n .resolve(from)\n .marks()\n .find((m) => m.type.name === 'link');\n const linkStyle = linkMark?.attrs?.style ?? null;\n\n const preservedStyle = processStylesForUnlink(linkStyle);\n\n const shouldRemoveUnderline = preservedStyle !== linkStyle;\n\n if (preservedStyle) {\n const cmd = chain()\n .extendMarkRange('link')\n .unsetMark('link')\n .setMark('preservedStyle', { style: preservedStyle });\n\n return shouldRemoveUnderline\n ? cmd.unsetMark('underline').run()\n : cmd.run();\n }\n\n return chain()\n .extendMarkRange('link')\n .unsetMark('link')\n .unsetMark('underline')\n .run();\n },\n };\n },\n\n addKeyboardShortcuts() {\n return {\n 'Mod-k': () => {\n editorEventBus.dispatch('bubble-menu:add-link', undefined);\n // unselect\n return this.editor.chain().focus().toggleLink({ href: '' }).run();\n },\n };\n },\n});\n","import type { ListItemOptions } from '@tiptap/extension-list-item';\nimport ListItemBase from '@tiptap/extension-list-item';\nimport { EmailNode } from '../core/serializer/email-node';\nimport { getTextAlignment } from '../utils/get-text-alignment';\nimport { inlineCssToJs } from '../utils/styles';\n\nexport const ListItem: EmailNode<ListItemOptions, any> = EmailNode.from(\n ListItemBase,\n ({ children, node, style }) => (\n <li\n className={node.attrs?.class || undefined}\n style={{\n ...style,\n ...inlineCssToJs(node.attrs?.style),\n ...getTextAlignment(node.attrs?.align || node.attrs?.alignment),\n }}\n >\n {children}\n </li>\n ),\n);\n","import { Extension } from '@tiptap/core';\nimport type { NodeRange } from '@tiptap/pm/model';\nimport { Plugin, PluginKey } from '@tiptap/pm/state';\n\nexport interface MaxNestingOptions {\n maxDepth: number;\n nodeTypes?: string[];\n}\n\nexport const MaxNesting = Extension.create<MaxNestingOptions>({\n name: 'maxNesting',\n\n addOptions() {\n return {\n maxDepth: 3,\n nodeTypes: undefined,\n };\n },\n\n addProseMirrorPlugins() {\n const { maxDepth, nodeTypes } = this.options;\n\n if (typeof maxDepth !== 'number' || maxDepth < 1) {\n throw new Error('maxDepth must be a positive number');\n }\n\n return [\n new Plugin({\n key: new PluginKey('maxNesting'),\n\n appendTransaction(transactions, _oldState, newState) {\n const docChanged = transactions.some((tr) => tr.docChanged);\n if (!docChanged) {\n return null;\n }\n\n // Collect all ranges that need to be lifted\n const rangesToLift: { range: NodeRange; target: number }[] = [];\n\n newState.doc.descendants((node, pos) => {\n let depth = 0;\n let currentPos = pos;\n let currentNode = node;\n\n while (currentNode && depth <= maxDepth) {\n if (!nodeTypes || nodeTypes.includes(currentNode.type.name)) {\n depth++;\n }\n\n const $pos = newState.doc.resolve(currentPos);\n if ($pos.depth === 0) {\n break;\n }\n\n currentPos = $pos.before($pos.depth);\n currentNode = newState.doc.nodeAt(currentPos)!;\n }\n\n if (depth > maxDepth) {\n const $pos = newState.doc.resolve(pos);\n if ($pos.depth > 0) {\n const range = $pos.blockRange();\n if (\n range &&\n 'canReplace' in newState.schema.nodes.doc &&\n typeof newState.schema.nodes.doc.canReplace === 'function' &&\n newState.schema.nodes.doc.canReplace(\n range.start - 1,\n range.end + 1,\n newState.doc.slice(range.start, range.end).content,\n )\n ) {\n rangesToLift.push({ range, target: range.start - 1 });\n }\n }\n }\n });\n\n if (rangesToLift.length === 0) {\n return null;\n }\n\n // Process ranges in reverse order (end to start) to maintain position validity\n const tr = newState.tr;\n for (let i = rangesToLift.length - 1; i >= 0; i--) {\n const { range, target } = rangesToLift[i];\n tr.lift(range, target);\n }\n\n return tr;\n },\n\n filterTransaction(tr) {\n if (!tr.docChanged) {\n return true;\n }\n\n let wouldCreateDeepNesting = false;\n const newDoc = tr.doc;\n\n newDoc.descendants((node, pos) => {\n if (wouldCreateDeepNesting) {\n return false;\n }\n\n let depth = 0;\n let currentPos = pos;\n let currentNode = node;\n\n while (currentNode && depth <= maxDepth) {\n if (!nodeTypes || nodeTypes.includes(currentNode.type.name)) {\n depth++;\n }\n\n const $pos = newDoc.resolve(currentPos);\n if ($pos.depth === 0) {\n break;\n }\n\n currentPos = $pos.before($pos.depth);\n currentNode = newDoc.nodeAt(currentPos)!;\n }\n\n if (depth > maxDepth) {\n wouldCreateDeepNesting = true;\n return false;\n }\n });\n\n return !wouldCreateDeepNesting;\n },\n }),\n ];\n },\n});\n","import type { OrderedListOptions } from '@tiptap/extension-ordered-list';\nimport OrderedListBase from '@tiptap/extension-ordered-list';\nimport { EmailNode } from '../core/serializer/email-node';\nimport { inlineCssToJs } from '../utils/styles';\n\nexport const OrderedList: EmailNode<OrderedListOptions, any> = EmailNode.from(\n OrderedListBase,\n ({ children, node, style }) => (\n <ol\n className={node.attrs?.class || undefined}\n start={node.attrs?.start}\n style={{\n ...style,\n ...inlineCssToJs(node.attrs?.style),\n }}\n >\n {children}\n </ol>\n ),\n);\n","import type { ParagraphOptions } from '@tiptap/extension-paragraph';\nimport ParagraphBase from '@tiptap/extension-paragraph';\nimport { EmailNode } from '../core/serializer/email-node';\nimport { getTextAlignment } from '../utils/get-text-alignment';\nimport { inlineCssToJs } from '../utils/styles';\n\nexport const Paragraph: EmailNode<ParagraphOptions, any> = EmailNode.from(\n ParagraphBase,\n ({ children, node, style }) => {\n const isEmpty = !node.content || node.content.length === 0;\n\n return (\n <p\n className={node.attrs?.class || undefined}\n style={{\n ...style,\n ...inlineCssToJs(node.attrs?.style),\n ...getTextAlignment(node.attrs?.align || node.attrs?.alignment),\n }}\n >\n {isEmpty ? (\n /* Add <br/> inside empty paragraph to make sure what users sees in the preview is the space that will be render in the email */\n <br />\n ) : (\n children\n )}\n </p>\n );\n },\n);\n","import { Node } from '@tiptap/core';\n\nexport interface PreviewTextOptions {\n HTMLAttributes: Record<string, unknown>;\n}\n\nexport const PreviewText = Node.create<PreviewTextOptions>({\n name: 'previewText',\n\n group: 'block',\n\n selectable: false,\n draggable: false,\n atom: true,\n\n addOptions() {\n return {\n HTMLAttributes: {},\n };\n },\n\n addStorage() {\n return {\n previewText: null,\n };\n },\n\n renderHTML() {\n return ['div', { style: 'display: none' }];\n },\n\n parseHTML() {\n return [\n // react-email parsing\n {\n tag: 'div[data-skip-in-text=\"true\"]',\n getAttrs: (node) => {\n if (typeof node === 'string') {\n return false;\n }\n const element = node as HTMLElement;\n\n // Extract and store preview text directly\n let directText = '';\n for (const child of element.childNodes) {\n if (child.nodeType === 3) {\n // TEXT_NODE = 3\n // Anything other than text will be pruned\n // This is particularly useful for react email,\n // because we have a nested div full of white spaces that will just be ignored\n directText += child.textContent || '';\n }\n }\n const cleanText = directText.trim();\n\n if (cleanText) {\n this.storage.previewText = cleanText;\n }\n\n return false; // Don't create a node\n },\n },\n // preheader class parsing\n {\n tag: 'span.preheader',\n getAttrs: (node) => {\n if (typeof node === 'string') {\n return false;\n }\n const element = node as HTMLElement;\n const preheaderText = element.textContent?.trim();\n\n if (preheaderText) {\n this.storage.previewText = preheaderText;\n }\n\n return false; // Don't create a node, just extract to storage\n },\n },\n ];\n },\n});\n","import { mergeAttributes } from '@tiptap/core';\nimport type { Node as ProseMirrorNode } from '@tiptap/pm/model';\nimport type * as React from 'react';\nimport { Section as ReactEmailSection } from 'react-email';\nimport { EmailNode } from '../core/serializer/email-node';\nimport { getTextAlignment } from '../utils/get-text-alignment';\nimport { inlineCssToJs } from '../utils/styles';\n\nfunction isSectionEmpty(node: ProseMirrorNode): boolean {\n return node.textContent === '' && node.content.size <= node.childCount * 2;\n}\n\nexport interface SectionOptions {\n HTMLAttributes: Record<string, unknown>;\n [key: string]: unknown;\n}\n\ndeclare module '@tiptap/core' {\n interface Commands<ReturnType> {\n section: {\n insertSection: () => ReturnType;\n };\n }\n}\n\nexport const Section = EmailNode.create<SectionOptions>({\n name: 'section',\n group: 'block',\n content: 'block+',\n isolating: true,\n defining: true,\n\n parseHTML() {\n return [{ tag: 'section[data-type=\"section\"]' }];\n },\n\n renderHTML({ HTMLAttributes }) {\n return [\n 'section',\n mergeAttributes(\n { 'data-type': 'section', class: 'node-section' },\n HTMLAttributes,\n ),\n 0,\n ];\n },\n\n addKeyboardShortcuts() {\n return {\n Backspace: ({ editor }) => {\n const { state } = editor;\n const { selection } = state;\n const { empty, $from } = selection;\n\n if (!empty) return false;\n\n // Case 1: Cursor is inside an empty section at the start position\n for (let depth = $from.depth; depth >= 1; depth--) {\n if ($from.node(depth).type.name !== 'section') continue;\n\n if ($from.parentOffset !== 0) return false;\n let atStart = true;\n for (let d = depth; d < $from.depth; d++) {\n if ($from.index(d) !== 0) {\n atStart = false;\n break;\n }\n }\n if (!atStart) return false;\n\n const sectionNode = $from.node(depth);\n if (!isSectionEmpty(sectionNode)) return false;\n\n const tr = state.tr;\n const from = $from.before(depth);\n const to = $from.after(depth);\n const parent = $from.node(depth - 1);\n\n if (parent.childCount === 1) {\n tr.replaceWith(from, to, state.schema.nodes.paragraph.create());\n } else {\n tr.delete(from, to);\n }\n\n editor.view.dispatch(tr);\n return true;\n }\n\n // Case 2: Cursor is right after an empty section (previous sibling)\n for (let depth = $from.depth; depth >= 1; depth--) {\n if ($from.pos !== $from.start(depth)) break;\n\n const indexInParent = $from.index(depth - 1);\n if (indexInParent === 0) continue;\n\n const parent = $from.node(depth - 1);\n const prevNode = parent.child(indexInParent - 1);\n\n if (prevNode.type.name === 'section' && isSectionEmpty(prevNode)) {\n const deleteFrom = $from.before(depth) - prevNode.nodeSize;\n const deleteTo = $from.before(depth);\n editor.view.dispatch(state.tr.delete(deleteFrom, deleteTo));\n return true;\n }\n\n break;\n }\n\n return false;\n },\n };\n },\n\n addCommands() {\n return {\n insertSection:\n () =>\n ({ commands }) => {\n return commands.insertContent({\n type: this.name,\n content: [\n {\n type: 'paragraph',\n content: [],\n },\n ],\n });\n },\n };\n },\n\n renderToReactEmail({ children, node, style }) {\n const inlineStyles = inlineCssToJs(node.attrs?.style);\n const textAlign = node.attrs?.align || node.attrs?.alignment;\n\n return (\n <ReactEmailSection\n className={node.attrs?.class || undefined}\n align={textAlign}\n style={\n {\n ...style,\n ...inlineStyles,\n ...getTextAlignment(textAlign),\n } as React.CSSProperties\n }\n >\n {children}\n </ReactEmailSection>\n );\n },\n});\n","import type { StrikeOptions } from '@tiptap/extension-strike';\nimport StrikeBase from '@tiptap/extension-strike';\nimport { EmailMark } from '../core/serializer/email-mark';\n\nexport const Strike: EmailMark<StrikeOptions, any> = EmailMark.from(\n StrikeBase,\n ({ children, style }) => <s style={style}>{children}</s>,\n);\n","import { Extension } from '@tiptap/core';\n\nexport interface StyleAttributeOptions {\n types: string[];\n style: string[];\n}\n\ndeclare module '@tiptap/core' {\n interface Commands<ReturnType> {\n textAlign: {\n /**\n * Set the style attribute\n */\n setStyle: (style: string) => ReturnType;\n /**\n * Unset the style attribute\n */\n unsetStyle: () => ReturnType;\n };\n }\n}\n\nexport const StyleAttribute = Extension.create<StyleAttributeOptions>({\n name: 'styleAttribute',\n priority: 101,\n\n addOptions() {\n return {\n types: [],\n style: [],\n };\n },\n\n addGlobalAttributes() {\n return [\n {\n types: this.options.types,\n attributes: {\n style: {\n default: '',\n parseHTML: (element) => element.getAttribute('style') || '',\n renderHTML: (attributes) => {\n return { style: attributes.style ?? '' };\n },\n },\n },\n },\n ];\n },\n\n addCommands() {\n return {\n unsetStyle:\n () =>\n ({ commands }) => {\n return this.options.types.every((type) =>\n commands.resetAttributes(type, 'style'),\n );\n },\n setStyle:\n (style: string) =>\n ({ commands }) => {\n return this.options.types.every((type) =>\n commands.updateAttributes(type, { style }),\n );\n },\n };\n },\n\n addKeyboardShortcuts() {\n return {\n Enter: ({ editor }) => {\n // Check if any suggestion plugin is active by looking for decorations\n // that indicate an active suggestion/autocomplete\n const { state } = editor.view;\n const { selection } = state;\n const { $from } = selection;\n\n // Check if we're in a position where suggestion might be active\n // by looking at the text before cursor for trigger characters\n const textBefore = $from.nodeBefore?.text || '';\n const hasTrigger =\n textBefore.includes('{{') || textBefore.includes('{{{');\n\n // If we have trigger characters, assume suggestion might be handling this\n // Don't reset styles\n if (hasTrigger) {\n return false;\n }\n\n // Otherwise, reset paragraph styles on Enter\n requestAnimationFrame(() => {\n editor.commands.resetAttributes('paragraph', 'style');\n });\n return false;\n },\n };\n },\n});\n","import type { SuperscriptExtensionOptions as TipTapSuperscriptOptions } from '@tiptap/extension-superscript';\nimport SuperscriptBase from '@tiptap/extension-superscript';\nimport { EmailMark } from '../core/serializer/email-mark';\n\nexport type SupOptions = TipTapSuperscriptOptions;\n\ndeclare module '@tiptap/core' {\n interface Commands<ReturnType> {\n sup: {\n /**\n * Set a superscript mark\n */\n setSup: () => ReturnType;\n /**\n * Toggle a superscript mark\n */\n toggleSup: () => ReturnType;\n /**\n * Unset a superscript mark\n */\n unsetSup: () => ReturnType;\n };\n }\n}\n\nconst SupBase = SuperscriptBase.extend({\n name: 'sup',\n\n addCommands() {\n return {\n ...this.parent?.(),\n setSup:\n () =>\n ({ commands }) => {\n return commands.setMark(this.name);\n },\n toggleSup:\n () =>\n ({ commands }) => {\n return commands.toggleMark(this.name);\n },\n unsetSup:\n () =>\n ({ commands }) => {\n return commands.unsetMark(this.name);\n },\n };\n },\n});\n\nexport const Sup: EmailMark<TipTapSuperscriptOptions, any> = EmailMark.from(\n SupBase,\n ({ children, style }) => <sup style={style}>{children}</sup>,\n);\n","import type { ParentConfig } from '@tiptap/core';\nimport { mergeAttributes, Node } from '@tiptap/core';\nimport { Column } from 'react-email';\nimport { EmailNode } from '../core/serializer/email-node';\nimport {\n COMMON_HTML_ATTRIBUTES,\n createStandardAttributes,\n LAYOUT_ATTRIBUTES,\n TABLE_ATTRIBUTES,\n TABLE_CELL_ATTRIBUTES,\n TABLE_HEADER_ATTRIBUTES,\n} from '../utils/attribute-helpers';\nimport { inlineCssToJs, resolveConflictingStyles } from '../utils/styles';\n\ndeclare module '@tiptap/core' {\n interface NodeConfig<Options, Storage> {\n /**\n * A string or function to determine the role of the table.\n * @default 'table'\n * @example () => 'table'\n */\n tableRole?:\n | string\n | ((this: {\n name: string;\n options: Options;\n storage: Storage;\n parent: ParentConfig<NodeConfig<Options>>['tableRole'];\n }) => string);\n }\n}\n\nexport interface TableOptions {\n HTMLAttributes: Record<string, unknown>;\n}\n\nexport const Table = EmailNode.create<TableOptions>({\n name: 'table',\n\n group: 'block',\n\n content: 'tableRow+',\n\n isolating: true,\n\n tableRole: 'table',\n\n addAttributes() {\n return {\n ...createStandardAttributes([\n ...TABLE_ATTRIBUTES,\n ...LAYOUT_ATTRIBUTES,\n ...COMMON_HTML_ATTRIBUTES,\n ]),\n };\n },\n\n parseHTML() {\n return [\n {\n tag: 'table',\n getAttrs: (node) => {\n if (typeof node === 'string') {\n return false;\n }\n const element = node as HTMLElement;\n const attrs: Record<string, string> = {};\n\n Array.from(element.attributes).forEach((attr) => {\n attrs[attr.name] = attr.value;\n });\n\n return attrs;\n },\n },\n ];\n },\n\n renderHTML({ HTMLAttributes }) {\n const attrs = mergeAttributes(this.options.HTMLAttributes, HTMLAttributes);\n\n return ['table', attrs, ['tbody', {}, 0]];\n },\n\n renderToReactEmail({ children, node, style }) {\n const inlineStyles = inlineCssToJs(node.attrs?.style);\n const alignment = node.attrs?.align || node.attrs?.alignment;\n const width = node.attrs?.width;\n\n const centeringStyles: Record<string, string> =\n alignment === 'center' ? { marginLeft: 'auto', marginRight: 'auto' } : {};\n\n return (\n <table\n align={alignment}\n width={width}\n border={0}\n cellPadding=\"0\"\n cellSpacing=\"0\"\n role=\"presentation\"\n className={node.attrs?.class || undefined}\n style={resolveConflictingStyles(style, {\n ...inlineStyles,\n ...centeringStyles,\n })}\n >\n <tbody>{children}</tbody>\n </table>\n );\n },\n});\n\nexport interface TableRowOptions extends Record<string, unknown> {\n HTMLAttributes?: Record<string, unknown>;\n}\n\nexport const TableRow = EmailNode.create<TableRowOptions>({\n name: 'tableRow',\n\n group: 'tableRow',\n\n content: '(tableCell | tableHeader)+',\n\n addAttributes() {\n return {\n ...createStandardAttributes([\n ...TABLE_CELL_ATTRIBUTES,\n ...LAYOUT_ATTRIBUTES,\n ...COMMON_HTML_ATTRIBUTES,\n ]),\n };\n },\n\n parseHTML() {\n return [\n {\n tag: 'tr',\n getAttrs: (node) => {\n if (typeof node === 'string') {\n return false;\n }\n const element = node as HTMLElement;\n const attrs: Record<string, string> = {};\n\n Array.from(element.attributes).forEach((attr) => {\n attrs[attr.name] = attr.value;\n });\n\n return attrs;\n },\n },\n ];\n },\n\n renderHTML({ HTMLAttributes }) {\n return ['tr', HTMLAttributes, 0];\n },\n\n renderToReactEmail({ children, node, style }) {\n const inlineStyles = inlineCssToJs(node.attrs?.style);\n return (\n <tr\n className={node.attrs?.class || undefined}\n style={{\n ...style,\n ...inlineStyles,\n }}\n >\n {children}\n </tr>\n );\n },\n});\n\nexport interface TableCellOptions extends Record<string, unknown> {\n HTMLAttributes?: Record<string, unknown>;\n}\n\nexport const TableCell = EmailNode.create<TableCellOptions>({\n name: 'tableCell',\n\n group: 'tableCell',\n\n content: 'block+',\n\n isolating: true,\n\n addAttributes() {\n return {\n ...createStandardAttributes([\n ...TABLE_CELL_ATTRIBUTES,\n ...LAYOUT_ATTRIBUTES,\n ...COMMON_HTML_ATTRIBUTES,\n ]),\n };\n },\n\n parseHTML() {\n return [\n {\n tag: 'td',\n getAttrs: (node) => {\n if (typeof node === 'string') {\n return false;\n }\n const element = node as HTMLElement;\n const attrs: Record<string, string> = {};\n\n Array.from(element.attributes).forEach((attr) => {\n attrs[attr.name] = attr.value;\n });\n\n return attrs;\n },\n },\n ];\n },\n\n renderHTML({ HTMLAttributes }) {\n return ['td', HTMLAttributes, 0];\n },\n\n renderToReactEmail({ children, node, style }) {\n const inlineStyles = inlineCssToJs(node.attrs?.style);\n return (\n <Column\n className={node.attrs?.class || undefined}\n align={node.attrs?.align || node.attrs?.alignment}\n style={{\n ...style,\n ...inlineStyles,\n }}\n >\n {children}\n </Column>\n );\n },\n});\n\nexport const TableHeader = Node.create({\n name: 'tableHeader',\n\n group: 'tableCell',\n\n content: 'block+',\n\n isolating: true,\n\n addAttributes() {\n return {\n ...createStandardAttributes([\n ...TABLE_HEADER_ATTRIBUTES,\n ...TABLE_CELL_ATTRIBUTES,\n ...LAYOUT_ATTRIBUTES,\n ...COMMON_HTML_ATTRIBUTES,\n ]),\n };\n },\n\n parseHTML() {\n return [\n {\n tag: 'th',\n getAttrs: (node) => {\n if (typeof node === 'string') {\n return false;\n }\n const element = node as HTMLElement;\n const attrs: Record<string, string> = {};\n\n Array.from(element.attributes).forEach((attr) => {\n attrs[attr.name] = attr.value;\n });\n\n return attrs;\n },\n },\n ];\n },\n\n renderHTML({ HTMLAttributes }) {\n return ['th', HTMLAttributes, 0];\n },\n});\n","import { Text as BaseText } from '@tiptap/extension-text';\nimport { EmailNode } from '../core';\n\nexport const Text = EmailNode.from(BaseText, ({ children }) => {\n return <>{children}</>;\n});\n","// Most of this code was copied over from https://github.com/ueberdosis/tiptap which is MIT licensed and allows for this.\n\nimport { Extension } from '@tiptap/core';\nimport type { Node, NodeType } from '@tiptap/pm/model';\nimport { Plugin, PluginKey } from '@tiptap/pm/state';\n\nexport const skipTrailingNodeMeta = 'skipTrailingNode';\n\nfunction nodeEqualsType({\n types,\n node,\n}: {\n types: NodeType | NodeType[];\n node: Node | null | undefined;\n}) {\n return (\n (node && Array.isArray(types) && types.includes(node.type)) ||\n node?.type === types\n );\n}\n\n/**\n * Extension based on:\n * - https://github.com/ueberdosis/tiptap/blob/v1/packages/tiptap-extensions/src/extensions/TrailingNode.js\n * - https://github.com/remirror/remirror/blob/e0f1bec4a1e8073ce8f5500d62193e52321155b9/packages/prosemirror-trailing-node/src/trailing-node-plugin.ts\n */\n\nexport interface TrailingNodeOptions {\n /**\n * The node type that should be inserted at the end of the document.\n * @note the node will always be added to the `notAfter` lists to\n * prevent an infinite loop.\n * @default undefined\n */\n node?: string;\n /**\n * The node type(s) that the trailing node should be appended to.\n * Accepts a single node name or an array of node names.\n * @default 'doc'\n */\n appendTo?: string | string[];\n /**\n * The node types after which the trailing node should not be inserted.\n * @default ['paragraph']\n */\n notAfter?: string | string[];\n}\n\n/**\n * This extension allows you to add an extra node at the end of a node.\n *\n * Differently from TipTap's native one, it allows you to pick which node to append the trailing node to.\n * @see https://www.tiptap.dev/api/extensions/trailing-node\n *\n * We could contribute this to TipTap's core extensions and I think we should at some once we get some time.\n */\nexport const TrailingNode = Extension.create<TrailingNodeOptions>({\n name: 'trailingNode',\n\n addOptions() {\n return {\n node: undefined,\n appendTo: 'doc',\n notAfter: [],\n };\n },\n\n addProseMirrorPlugins() {\n const plugin = new PluginKey(this.name);\n const defaultNode =\n this.options.node ||\n this.editor.schema.topNodeType.contentMatch.defaultType?.name ||\n 'paragraph';\n\n const notAfter = Array.isArray(this.options.notAfter)\n ? this.options.notAfter\n : [this.options.notAfter].filter(Boolean);\n\n const disabledNodes = Object.entries(this.editor.schema.nodes)\n .map(([, value]) => value)\n .filter((node) => notAfter.concat(defaultNode).includes(node.name));\n\n const appendToNames = Array.isArray(this.options.appendTo)\n ? this.options.appendTo\n : [this.options.appendTo || 'doc'];\n\n const appendToTypes = appendToNames\n .map((name) => this.editor.schema.nodes[name])\n .filter(Boolean);\n\n const getInsertPositions = (doc: Node): number[] => {\n const positions: number[] = [];\n\n if (appendToTypes.includes(doc.type)) {\n if (!nodeEqualsType({ node: doc.lastChild, types: disabledNodes })) {\n positions.push(doc.content.size);\n }\n }\n\n doc.descendants((node, pos) => {\n if (!appendToTypes.includes(node.type)) return;\n if (!nodeEqualsType({ node: node.lastChild, types: disabledNodes })) {\n positions.push(pos + node.nodeSize - 1);\n }\n });\n\n return positions;\n };\n\n return [\n new Plugin({\n key: plugin,\n appendTransaction: (transactions, __, state) => {\n const { doc, tr, schema } = state;\n const shouldInsert = plugin.getState(state);\n const type = schema.nodes[defaultNode];\n\n if (\n transactions.some((transaction) =>\n transaction.getMeta(skipTrailingNodeMeta),\n )\n ) {\n return;\n }\n\n if (!shouldInsert) {\n return;\n }\n\n const positions = getInsertPositions(doc);\n\n for (const pos of positions.sort((a, b) => b - a)) {\n tr.insert(pos, type.create());\n }\n\n return positions.length > 0 ? tr : undefined;\n },\n state: {\n init: (_, state) => {\n return getInsertPositions(state.doc).length > 0;\n },\n apply: (tr, value) => {\n if (!tr.docChanged) {\n return value;\n }\n\n // Ignore transactions from UniqueID extension to prevent infinite loops\n // when UniqueID adds IDs to newly inserted trailing nodes\n if (tr.getMeta('__uniqueIDTransaction')) {\n return value;\n }\n\n return getInsertPositions(tr.doc).length > 0;\n },\n },\n }),\n ];\n },\n});\n","import type { UnderlineOptions as TipTapUnderlineOptions } from '@tiptap/extension-underline';\nimport UnderlineBase from '@tiptap/extension-underline';\nimport { EmailMark } from '../core/serializer/email-mark';\n\nexport type UnderlineOptions = TipTapUnderlineOptions;\n\nexport const Underline: EmailMark<TipTapUnderlineOptions, any> = EmailMark.from(\n UnderlineBase,\n ({ children, style }) => <u style={style}>{children}</u>,\n);\n","import { mergeAttributes } from '@tiptap/core';\nimport { EmailMark } from '../core/serializer/email-mark';\n\nexport interface UppercaseOptions {\n HTMLAttributes: Record<string, unknown>;\n}\n\ndeclare module '@tiptap/core' {\n interface Commands<ReturnType> {\n uppercase: {\n setUppercase: () => ReturnType;\n toggleUppercase: () => ReturnType;\n unsetUppercase: () => ReturnType;\n };\n }\n}\n\nexport const Uppercase = EmailMark.create<UppercaseOptions>({\n name: 'uppercase',\n\n addOptions() {\n return {\n HTMLAttributes: {},\n };\n },\n\n parseHTML() {\n return [\n {\n tag: 'span',\n getAttrs: (node) => {\n const el = node as HTMLElement;\n if (el.style.textTransform === 'uppercase') {\n return {};\n }\n return false;\n },\n },\n ];\n },\n\n renderHTML({ HTMLAttributes }) {\n return [\n 'span',\n mergeAttributes(this.options.HTMLAttributes, HTMLAttributes, {\n style: 'text-transform: uppercase',\n }),\n 0,\n ];\n },\n\n renderToReactEmail({ children, style }) {\n return (\n <span\n style={{\n ...style,\n textTransform: 'uppercase',\n }}\n >\n {children}\n </span>\n );\n },\n\n addCommands() {\n return {\n setUppercase:\n () =>\n ({ commands }) => {\n return commands.setMark(this.name);\n },\n toggleUppercase:\n () =>\n ({ commands }) => {\n return commands.toggleMark(this.name);\n },\n unsetUppercase:\n () =>\n ({ commands }) => {\n return commands.unsetMark(this.name);\n },\n };\n },\n});\n","import { type AnyExtension, Extension } from '@tiptap/core';\nimport type { BlockquoteOptions } from '@tiptap/extension-blockquote';\nimport type { BulletListOptions } from '@tiptap/extension-bullet-list';\nimport type { CodeOptions } from '@tiptap/extension-code';\nimport type { HardBreakOptions } from '@tiptap/extension-hard-break';\nimport type { ItalicOptions } from '@tiptap/extension-italic';\nimport type { ListItemOptions } from '@tiptap/extension-list-item';\nimport type { OrderedListOptions } from '@tiptap/extension-ordered-list';\nimport type { ParagraphOptions } from '@tiptap/extension-paragraph';\nimport type { StrikeOptions } from '@tiptap/extension-strike';\nimport { UndoRedo, type UndoRedoOptions } from '@tiptap/extensions';\nimport TipTapStarterKit, {\n type StarterKitOptions as TipTapStarterKitOptions,\n} from '@tiptap/starter-kit';\nimport type { AlignmentOptions } from './alignment-attribute';\nimport { AlignmentAttribute } from './alignment-attribute';\nimport { Blockquote } from './blockquote';\nimport type { BodyOptions } from './body';\nimport { Body } from './body';\nimport type { BoldOptions } from './bold';\nimport { Bold } from './bold';\nimport { BulletList } from './bullet-list';\nimport type { EditorButtonOptions } from './button';\nimport { Button } from './button';\nimport type { ClassAttributeOptions } from './class-attribute';\nimport { ClassAttribute } from './class-attribute';\nimport { Code } from './code';\nimport type { CodeBlockPrismOptions } from './code-block';\nimport { CodeBlockPrism } from './code-block';\nimport {\n ColumnsColumn,\n FourColumns,\n ThreeColumns,\n TwoColumns,\n} from './columns';\nimport type { ContainerOptions } from './container';\nimport { Container } from './container';\nimport type { DivOptions } from './div';\nimport { Div } from './div';\nimport type { DividerOptions } from './divider';\nimport { Divider } from './divider';\nimport { FocusScopes, type FocusScopesOptions } from './focus-scopes';\nimport type { GlobalContentOptions } from './global-content';\nimport { GlobalContent } from './global-content';\nimport { HardBreak } from './hard-break';\nimport type { HeadingOptions } from './heading';\nimport { Heading } from './heading';\nimport { Italic } from './italic';\nimport type { LinkOptions } from './link';\nimport { Link } from './link';\nimport { ListItem } from './list-item';\nimport type { MaxNestingOptions } from './max-nesting';\nimport { MaxNesting } from './max-nesting';\nimport { OrderedList } from './ordered-list';\nimport { Paragraph } from './paragraph';\nimport { PreservedStyle } from './preserved-style';\nimport type { PreviewTextOptions } from './preview-text';\nimport { PreviewText } from './preview-text';\nimport type { SectionOptions } from './section';\nimport { Section } from './section';\nimport { Strike } from './strike';\nimport type { StyleAttributeOptions } from './style-attribute';\nimport { StyleAttribute } from './style-attribute';\nimport type { SupOptions } from './sup';\nimport { Sup } from './sup';\nimport type { TableCellOptions, TableOptions, TableRowOptions } from './table';\nimport { Table, TableCell, TableHeader, TableRow } from './table';\nimport { Text } from './text';\nimport { TrailingNode, type TrailingNodeOptions } from './trailing-node';\nimport type { UnderlineOptions } from './underline';\nimport { Underline } from './underline';\nimport type { UppercaseOptions } from './uppercase';\nimport { Uppercase } from './uppercase';\n\nexport * from './alignment-attribute';\nexport * from './blockquote';\nexport * from './body';\nexport * from './bold';\nexport * from './bullet-list';\nexport * from './button';\nexport * from './class-attribute';\nexport * from './code';\nexport * from './code-block';\nexport * from './columns';\nexport * from './container';\nexport * from './div';\nexport * from './divider';\nexport * from './focus-scopes';\nexport * from './global-content';\nexport * from './hard-break';\nexport * from './heading';\nexport * from './italic';\nexport * from './link';\nexport * from './list-item';\nexport * from './max-nesting';\nexport * from './ordered-list';\nexport * from './paragraph';\nexport * from './preserved-style';\nexport * from './preview-text';\nexport * from './section';\nexport * from './strike';\nexport * from './style-attribute';\nexport * from './sup';\nexport * from './table';\nexport * from './text';\nexport * from './trailing-node';\nexport * from './underline';\nexport * from './uppercase';\n\nconst starterKitExtensions: Record<string, AnyExtension> = {\n CodeBlockPrism,\n Code,\n TwoColumns,\n ThreeColumns,\n FourColumns,\n Container,\n ColumnsColumn,\n Paragraph,\n BulletList,\n OrderedList,\n Blockquote,\n ListItem,\n HardBreak,\n Italic,\n PreviewText,\n TrailingNode,\n Bold,\n Strike,\n Heading,\n Divider,\n Link,\n Sup,\n Underline,\n Uppercase,\n PreservedStyle,\n Table,\n TableRow,\n TableCell,\n TableHeader,\n Body,\n Div,\n Button,\n Section,\n GlobalContent,\n Text,\n AlignmentAttribute,\n StyleAttribute,\n ClassAttribute,\n MaxNesting,\n UndoRedo,\n FocusScopes,\n};\n\nexport type StarterKitOptions = {\n CodeBlockPrism: Partial<CodeBlockPrismOptions> | false;\n Code: Partial<CodeOptions> | false;\n TwoColumns: Partial<Record<string, never>> | false;\n ThreeColumns: Partial<Record<string, never>> | false;\n FourColumns: Partial<Record<string, never>> | false;\n ColumnsColumn: Partial<Record<string, never>> | false;\n Paragraph: Partial<ParagraphOptions> | false;\n BulletList: Partial<BulletListOptions> | false;\n OrderedList: Partial<OrderedListOptions> | false;\n TrailingNode: Partial<TrailingNodeOptions> | false;\n Blockquote: Partial<BlockquoteOptions> | false;\n ListItem: Partial<ListItemOptions> | false;\n HardBreak: Partial<HardBreakOptions> | false;\n Italic: Partial<ItalicOptions> | false;\n PreviewText: Partial<PreviewTextOptions> | false;\n Bold: Partial<BoldOptions> | false;\n Strike: Partial<StrikeOptions> | false;\n Heading: Partial<HeadingOptions> | false;\n Divider: Partial<DividerOptions> | false;\n Link: Partial<LinkOptions> | false;\n Sup: Partial<SupOptions> | false;\n Underline: Partial<UnderlineOptions> | false;\n Uppercase: Partial<UppercaseOptions> | false;\n PreservedStyle: Partial<Record<string, never>> | false;\n Table: Partial<TableOptions> | false;\n TableRow: Partial<TableRowOptions> | false;\n TableCell: Partial<TableCellOptions> | false;\n TableHeader: Partial<Record<string, any>> | false;\n Body: Partial<BodyOptions> | false;\n Container: Partial<ContainerOptions> | false;\n Div: Partial<DivOptions> | false;\n Text: Record<string, never> | false;\n Button: Partial<EditorButtonOptions> | false;\n Section: Partial<SectionOptions> | false;\n GlobalContent: Partial<GlobalContentOptions> | false;\n AlignmentAttribute: Partial<AlignmentOptions> | false;\n StyleAttribute: Partial<StyleAttributeOptions> | false;\n ClassAttribute: Partial<ClassAttributeOptions> | false;\n MaxNesting: Partial<MaxNestingOptions> | false;\n UndoRedo: Partial<UndoRedoOptions> | false;\n FocusScopes: Partial<FocusScopesOptions> | false;\n TiptapStarterKit: Partial<TipTapStarterKitOptions> | false;\n};\n\nexport const StarterKit = Extension.create<StarterKitOptions>({\n name: 'reactEmailStarterKit',\n\n addOptions() {\n return {\n TiptapStarterKit: {},\n CodeBlockPrism: {\n defaultLanguage: 'javascript',\n HTMLAttributes: {\n class: 'prism node-codeBlock',\n },\n },\n TrailingNode: {\n node: 'paragraph',\n appendTo: ['container', 'section', 'columnsColumn'],\n },\n Code: {\n HTMLAttributes: {\n class: 'node-inlineCode',\n spellcheck: 'false',\n },\n },\n TwoColumns: {},\n ThreeColumns: {},\n FourColumns: {},\n ColumnsColumn: {},\n Paragraph: {\n HTMLAttributes: {\n class: 'node-paragraph',\n },\n },\n BulletList: {\n HTMLAttributes: {\n class: 'node-list node-bulletList',\n },\n },\n OrderedList: {\n HTMLAttributes: {\n class: 'node-list node-orderedList',\n },\n },\n Blockquote: {\n HTMLAttributes: {\n class: 'node-blockquote',\n },\n },\n ListItem: {\n HTMLAttributes: {\n class: 'node-listItem',\n },\n },\n HardBreak: {},\n Italic: {},\n PreviewText: {},\n Bold: {},\n Strike: {},\n Heading: {},\n Divider: {},\n Link: { openOnClick: false, HTMLAttributes: { class: 'node-link' } },\n Sup: {},\n Underline: {},\n Uppercase: {},\n PreservedStyle: {},\n Table: {},\n TableRow: {},\n TableCell: {},\n TableHeader: {},\n Body: {},\n Container: {},\n Div: {},\n Button: {},\n Section: {},\n GlobalContent: {},\n AlignmentAttribute: {\n types: [\n 'heading',\n 'paragraph',\n 'image',\n 'blockquote',\n 'codeBlock',\n 'bulletList',\n 'orderedList',\n 'listItem',\n 'button',\n 'youtube',\n 'twitter',\n 'table',\n 'tableRow',\n 'tableCell',\n 'tableHeader',\n 'columnsColumn',\n ],\n },\n StyleAttribute: {\n types: [\n 'heading',\n 'paragraph',\n 'image',\n 'blockquote',\n 'codeBlock',\n 'bulletList',\n 'orderedList',\n 'listItem',\n 'button',\n 'youtube',\n 'twitter',\n 'horizontalRule',\n 'footer',\n 'section',\n 'div',\n 'body',\n 'table',\n 'tableRow',\n 'tableCell',\n 'tableHeader',\n 'columnsColumn',\n 'link',\n ],\n },\n Text: {},\n ClassAttribute: {\n types: [\n 'heading',\n 'paragraph',\n 'image',\n 'blockquote',\n 'bulletList',\n 'orderedList',\n 'listItem',\n 'button',\n 'youtube',\n 'twitter',\n 'horizontalRule',\n 'footer',\n 'section',\n 'div',\n 'body',\n 'table',\n 'tableRow',\n 'tableCell',\n 'tableHeader',\n 'columnsColumn',\n 'link',\n ],\n },\n MaxNesting: {\n maxDepth: 50,\n nodeTypes: ['section', 'bulletList', 'orderedList'],\n },\n UndoRedo: {},\n FocusScopes: {},\n };\n },\n\n addExtensions() {\n const extensions: AnyExtension[] = [];\n\n if (this.options.TiptapStarterKit !== false) {\n extensions.push(\n TipTapStarterKit.configure({\n // Collaboration extensions handle history separately.\n undoRedo: false,\n heading: false,\n link: false,\n underline: false,\n trailingNode: false,\n bold: false,\n italic: false,\n strike: false,\n code: false,\n paragraph: false,\n bulletList: false,\n orderedList: false,\n listItem: false,\n blockquote: false,\n hardBreak: false,\n gapcursor: false,\n codeBlock: false,\n text: false,\n horizontalRule: false,\n dropcursor: {\n color: '#61a8f8',\n class: 'rounded-full animate-[fade-in_300ms_ease-in-out] !z-40',\n width: 4,\n },\n ...this.options.TiptapStarterKit,\n }),\n );\n }\n\n for (const [name, extension] of Object.entries(starterKitExtensions)) {\n const key = name as keyof StarterKitOptions;\n const extensionOptions = this.options[key];\n if (extensionOptions !== false) {\n extensions.push(\n (extension as AnyExtension).configure(extensionOptions),\n );\n }\n }\n\n return extensions;\n },\n});\n"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"focus-scopes-B_0O7l7d.mjs","names":["nativeTiptapExtensions"],"sources":["../src/utils/attribute-helpers.ts","../src/utils/prism-utils.ts","../src/extensions/columns.tsx","../src/extensions/focus-scopes.ts"],"sourcesContent":["/**\n * Creates TipTap attribute definitions for a list of HTML attributes.\n * Each attribute will have the same pattern:\n * - default: null\n * - parseHTML: extracts the attribute from the element\n * - renderHTML: conditionally renders the attribute if it has a value\n *\n * @param attributeNames - Array of HTML attribute names to create definitions for\n * @returns Object with TipTap attribute definitions\n *\n * @example\n * const attrs = createStandardAttributes(['class', 'id', 'title']);\n * // Returns:\n * // {\n * // class: {\n * // default: null,\n * // parseHTML: (element) => element.getAttribute('class'),\n * // renderHTML: (attributes) => attributes.class ? { class: attributes.class } : {}\n * // },\n * // ...\n * // }\n */\nexport function createStandardAttributes(attributeNames: readonly string[]) {\n return Object.fromEntries(\n attributeNames.map((attr) => [\n attr,\n {\n default: null,\n parseHTML: (element: HTMLElement) => element.getAttribute(attr),\n renderHTML: (attributes: Record<string, unknown>) => {\n if (!attributes[attr]) {\n return {};\n }\n\n return {\n [attr]: attributes[attr],\n };\n },\n },\n ]),\n );\n}\n\n/**\n * Common HTML attributes used across multiple extensions.\n * These preserve attributes during HTML import and editing for better\n * fidelity when importing existing email templates.\n */\nexport const COMMON_HTML_ATTRIBUTES = [\n 'id',\n 'class',\n 'title',\n 'lang',\n 'dir',\n 'data-id',\n] as const;\n\n/**\n * Layout-specific HTML attributes used for positioning and sizing.\n */\nexport const LAYOUT_ATTRIBUTES = ['align', 'width', 'height'] as const;\n\n/**\n * Table-specific HTML attributes used for table layout and styling.\n */\nexport const TABLE_ATTRIBUTES = [\n 'border',\n 'cellpadding',\n 'cellspacing',\n] as const;\n\n/**\n * Table cell-specific HTML attributes.\n */\nexport const TABLE_CELL_ATTRIBUTES = [\n 'valign',\n 'bgcolor',\n 'colspan',\n 'rowspan',\n] as const;\n\n/**\n * Table header cell-specific HTML attributes.\n * These are additional attributes that only apply to <th> elements.\n */\nexport const TABLE_HEADER_ATTRIBUTES = [\n ...TABLE_CELL_ATTRIBUTES,\n 'scope',\n] as const;\n","const publicURL = '/styles/prism';\n\nexport function loadPrismTheme(theme: string) {\n // Create new link element for the new theme\n const link = document.createElement('link');\n link.rel = 'stylesheet';\n link.href = `${publicURL}/prism-${theme}.css`;\n link.setAttribute('data-prism-theme', ''); // Mark this link as the Prism theme\n\n // Append the new link element to the head\n document.head.appendChild(link);\n}\n\nexport function removePrismTheme() {\n const existingTheme = document.querySelectorAll(\n 'link[rel=\"stylesheet\"][data-prism-theme]',\n );\n if (existingTheme.length > 0) {\n existingTheme.forEach((cssLinkTag) => {\n cssLinkTag.remove();\n });\n }\n}\n\nexport function hasPrismThemeLoaded(theme: string) {\n const existingTheme = document.querySelector(\n `link[rel=\"stylesheet\"][data-prism-theme][href=\"${publicURL}/prism-${theme}.css\"]`,\n );\n return !!existingTheme;\n}\n","import { type CommandProps, mergeAttributes } from '@tiptap/core';\nimport type { Node as ProseMirrorNode } from '@tiptap/pm/model';\nimport { TextSelection } from '@tiptap/pm/state';\nimport { Column, Row } from 'react-email';\nimport { EmailNode } from '../core/serializer/email-node';\nimport {\n COMMON_HTML_ATTRIBUTES,\n createStandardAttributes,\n LAYOUT_ATTRIBUTES,\n} from '../utils/attribute-helpers';\nimport { inlineCssToJs } from '../utils/styles';\n\nconst COLUMN_PARENT_ATTRIBUTES = ['cellspacing'] as const;\n\nfunction getColumnGapCss(cellspacing: unknown): string | undefined {\n if (cellspacing === undefined || cellspacing === null || cellspacing === '') {\n return undefined;\n }\n\n const value = String(cellspacing).trim();\n if (value === '') {\n return undefined;\n }\n\n if (/^\\d+(\\.\\d+)?$/.test(value)) {\n return `${value}px`;\n }\n\n return value;\n}\n\nfunction getRowCellSpacing(cellspacing: unknown): string | undefined {\n if (cellspacing === undefined || cellspacing === null || cellspacing === '') {\n return undefined;\n }\n\n const value = String(cellspacing).trim();\n if (value === '' || value === '0') {\n return undefined;\n }\n\n return value;\n}\n\nfunction mergeColumnsEditorStyle(\n spacing: unknown,\n existingStyle: unknown,\n): string | undefined {\n const gap = getColumnGapCss(spacing);\n const currentStyle =\n typeof existingStyle === 'string' && existingStyle.trim() !== ''\n ? existingStyle.trim()\n : '';\n\n if (!gap) {\n return currentStyle || undefined;\n }\n\n const separator = currentStyle.endsWith(';') ? '' : ';';\n return currentStyle\n ? `${currentStyle}${separator}gap:${gap};`\n : `gap:${gap};`;\n}\n\ndeclare module '@tiptap/core' {\n interface Commands<ReturnType> {\n columns: {\n insertColumns: (count: 2 | 3 | 4) => ReturnType;\n };\n }\n}\n\nexport const COLUMN_PARENT_TYPES = [\n 'twoColumns',\n 'threeColumns',\n 'fourColumns',\n] as const;\n\nconst COLUMN_PARENT_SET = new Set<string>(COLUMN_PARENT_TYPES);\n\nexport const MAX_COLUMNS_DEPTH = 3;\n\nexport function getColumnsDepth(doc: ProseMirrorNode, from: number): number {\n const $from = doc.resolve(from);\n let depth = 0;\n for (let d = $from.depth; d > 0; d--) {\n if (COLUMN_PARENT_SET.has($from.node(d).type.name)) {\n depth++;\n }\n }\n return depth;\n}\n\ninterface ColumnsVariantConfig {\n name: (typeof COLUMN_PARENT_TYPES)[number];\n columnCount: number;\n content: string;\n dataType: string;\n}\n\nconst VARIANTS: ColumnsVariantConfig[] = [\n {\n name: 'twoColumns',\n columnCount: 2,\n content: 'columnsColumn columnsColumn',\n dataType: 'two-columns',\n },\n {\n name: 'threeColumns',\n columnCount: 3,\n content: 'columnsColumn columnsColumn columnsColumn',\n dataType: 'three-columns',\n },\n {\n name: 'fourColumns',\n columnCount: 4,\n content: 'columnsColumn{4}',\n dataType: 'four-columns',\n },\n];\n\nconst NODE_TYPE_MAP: Record<number, (typeof COLUMN_PARENT_TYPES)[number]> = {\n 2: 'twoColumns',\n 3: 'threeColumns',\n 4: 'fourColumns',\n};\n\nfunction createColumnsNode(\n config: ColumnsVariantConfig,\n includeCommands: boolean,\n) {\n return EmailNode.create({\n name: config.name,\n group: 'block',\n content: config.content,\n isolating: true,\n defining: true,\n\n addAttributes() {\n return createStandardAttributes([\n ...LAYOUT_ATTRIBUTES,\n ...COMMON_HTML_ATTRIBUTES,\n ...COLUMN_PARENT_ATTRIBUTES,\n ]);\n },\n\n parseHTML() {\n return [{ tag: `div[data-type=\"${config.dataType}\"]` }];\n },\n\n renderHTML({ HTMLAttributes }) {\n const { style, cellspacing, ...attributes } = HTMLAttributes as Record<\n string,\n unknown\n >;\n const mergedStyle = mergeColumnsEditorStyle(cellspacing, style);\n\n return [\n 'div',\n mergeAttributes(\n {\n 'data-type': config.dataType,\n class: 'node-columns',\n ...(mergedStyle ? { style: mergedStyle } : {}),\n },\n attributes,\n ),\n 0,\n ];\n },\n\n ...(includeCommands && {\n addCommands() {\n return {\n insertColumns:\n (count: 2 | 3 | 4) =>\n ({\n commands,\n state,\n }: CommandProps & {\n state: { doc: ProseMirrorNode; selection: { from: number } };\n }) => {\n if (\n getColumnsDepth(state.doc, state.selection.from) >=\n MAX_COLUMNS_DEPTH\n ) {\n return false;\n }\n const nodeType = NODE_TYPE_MAP[count];\n const children = Array.from({ length: count }, () => ({\n type: 'columnsColumn',\n content: [{ type: 'paragraph', content: [] }],\n }));\n return commands.insertContent({\n type: nodeType,\n content: children,\n });\n },\n };\n },\n }),\n\n renderToReactEmail({ children, node, style }) {\n const inlineStyles = inlineCssToJs(node.attrs?.style);\n const cellSpacing = getRowCellSpacing(node.attrs?.cellspacing);\n\n return (\n <Row\n className={node.attrs?.class || undefined}\n style={{ ...style, ...inlineStyles }}\n {...(cellSpacing ? { cellSpacing } : {})}\n >\n {children}\n </Row>\n );\n },\n });\n}\n\nexport const TwoColumns = createColumnsNode(VARIANTS[0], true);\nexport const ThreeColumns = createColumnsNode(VARIANTS[1], false);\nexport const FourColumns = createColumnsNode(VARIANTS[2], false);\n\nexport const ColumnsColumn = EmailNode.create({\n name: 'columnsColumn',\n group: 'columnsColumn',\n content: 'block+',\n isolating: true,\n\n addAttributes() {\n return {\n ...createStandardAttributes([\n ...LAYOUT_ATTRIBUTES,\n ...COMMON_HTML_ATTRIBUTES,\n ]),\n };\n },\n\n parseHTML() {\n return [{ tag: 'div[data-type=\"column\"]' }];\n },\n\n renderHTML({ HTMLAttributes }) {\n return [\n 'div',\n mergeAttributes(\n { 'data-type': 'column', class: 'node-column' },\n HTMLAttributes,\n ),\n 0,\n ];\n },\n\n addKeyboardShortcuts() {\n return {\n Backspace: ({ editor }) => {\n const { state } = editor;\n const { selection } = state;\n const { empty, $from } = selection;\n\n if (!empty) return false;\n\n for (let depth = $from.depth; depth >= 1; depth--) {\n if ($from.pos !== $from.start(depth)) break;\n\n const indexInParent = $from.index(depth - 1);\n\n if (indexInParent === 0) continue;\n\n const parent = $from.node(depth - 1);\n const prevNode = parent.child(indexInParent - 1);\n\n if (COLUMN_PARENT_SET.has(prevNode.type.name)) {\n const deleteFrom = $from.before(depth) - prevNode.nodeSize;\n const deleteTo = $from.before(depth);\n editor.view.dispatch(state.tr.delete(deleteFrom, deleteTo));\n return true;\n }\n\n break;\n }\n\n return false;\n },\n 'Mod-a': ({ editor }) => {\n const { state } = editor;\n const { $from } = state.selection;\n\n for (let d = $from.depth; d > 0; d--) {\n if ($from.node(d).type.name !== 'columnsColumn') {\n continue;\n }\n\n const columnStart = $from.start(d);\n const columnEnd = $from.end(d);\n const { from, to } = state.selection;\n\n if (from === columnStart && to === columnEnd) {\n return false;\n }\n\n editor.view.dispatch(\n state.tr.setSelection(\n TextSelection.create(state.doc, columnStart, columnEnd),\n ),\n );\n return true;\n }\n\n return false;\n },\n };\n },\n\n renderToReactEmail({ children, node, style }) {\n const inlineStyles = inlineCssToJs(node.attrs?.style);\n const width = node.attrs?.width;\n return (\n <Column\n className={node.attrs?.class || undefined}\n style={{\n ...style,\n ...inlineStyles,\n ...(width ? { width } : {}),\n }}\n >\n {children}\n </Column>\n );\n },\n});\n","import {\n type Editor,\n Extension,\n extensions as nativeTiptapExtensions,\n} from '@tiptap/core';\nimport { Plugin, PluginKey, TextSelection } from '@tiptap/pm/state';\n\nexport interface FocusScopesOptions {\n clearSelectionOnBlur: boolean;\n}\n\nexport interface FocusScopesStorage {\n registerScope: (el: HTMLElement | null) => void;\n unregisterScope: (el: HTMLElement | null) => void;\n}\n\ndeclare module '@tiptap/core' {\n interface Storage {\n focusScope: FocusScopesStorage;\n }\n}\n\nexport const focusScopePluginKey = new PluginKey('reactEmailFocusScopes');\n\nconst noop = () => {};\n\nexport function createFocusScopesStorage(): FocusScopesStorage {\n return {\n registerScope: noop,\n unregisterScope: noop,\n };\n}\n\nexport function createFocusScopePlugin({\n editor,\n storage,\n clearSelectionOnBlur,\n}: {\n editor: Editor;\n storage: FocusScopesStorage;\n clearSelectionOnBlur: boolean;\n}) {\n const scopeRefs = new Set<HTMLElement>();\n\n const isInsideScope = (node: Node | null) =>\n Boolean(node && [...scopeRefs].some((el) => el.contains(node)));\n\n const getClosestScope = (node: Node | null) => {\n if (!node) return null;\n\n let closest: HTMLElement | null = null;\n for (const scope of scopeRefs) {\n if (!scope.contains(node)) continue;\n if (!closest || closest.contains(scope)) {\n closest = scope;\n }\n }\n return closest;\n };\n\n const handleFocusIn = (event: FocusEvent) => {\n const target = event.target;\n if (!(target instanceof Node) || !editor.view.dom.contains(target)) {\n return;\n }\n\n const previous = editor.isFocused;\n editor.isFocused = true;\n\n if (previous !== editor.isFocused) {\n const transaction = editor.state.tr\n .setMeta('focus', { event })\n .setMeta('addToHistory', false);\n\n editor.view.dispatch(transaction);\n }\n };\n\n const handleFocusOut = (event: FocusEvent) => {\n const blur = () => {\n const previous = editor.isFocused;\n editor.isFocused = false;\n\n if (previous !== editor.isFocused) {\n const transaction = editor.state.tr\n .setMeta('blur', { event })\n .setMeta('addToHistory', false);\n\n if (clearSelectionOnBlur) {\n transaction.setSelection(TextSelection.create(transaction.doc, 0));\n }\n\n editor.view.dispatch(transaction);\n }\n };\n\n const nextFocus = event.relatedTarget as Node | null;\n if (!nextFocus) {\n const previousFocus = event.target as Node | null;\n const fallbackScope = getClosestScope(previousFocus);\n\n // queueMicrotask is needed so that we can determine reliably\n // whether or not previousFocus is inside of the DOM\n queueMicrotask(() => {\n if (isInsideScope(event.view?.document.activeElement ?? null)) {\n return;\n }\n\n if (!previousFocus?.isConnected && fallbackScope?.isConnected) {\n fallbackScope.focus({ preventScroll: true });\n return;\n }\n\n blur();\n });\n return;\n }\n\n if (isInsideScope(nextFocus)) {\n return;\n }\n\n blur();\n };\n\n const registerScope = (el: HTMLElement | null) => {\n if (!el || scopeRefs.has(el)) return;\n\n scopeRefs.add(el);\n el.addEventListener('focusin', handleFocusIn);\n el.addEventListener('focusout', handleFocusOut);\n };\n\n const unregisterScope = (el: HTMLElement | null) => {\n if (!el || !scopeRefs.has(el)) return;\n\n scopeRefs.delete(el);\n el.removeEventListener('focusin', handleFocusIn);\n el.removeEventListener('focusout', handleFocusOut);\n };\n\n storage.registerScope = registerScope;\n storage.unregisterScope = unregisterScope;\n\n return new Plugin({\n key: focusScopePluginKey,\n view(view) {\n storage.registerScope = registerScope;\n storage.unregisterScope = unregisterScope;\n registerScope(view.dom);\n\n return {\n destroy() {\n for (const scope of [...scopeRefs]) {\n unregisterScope(scope);\n }\n storage.registerScope = noop;\n storage.unregisterScope = noop;\n },\n };\n },\n });\n}\n\nexport const FocusScopes = Extension.create<\n FocusScopesOptions,\n FocusScopesStorage\n>({\n name: 'focusScope',\n\n addOptions() {\n return {\n clearSelectionOnBlur: true,\n };\n },\n\n addStorage() {\n return createFocusScopesStorage();\n },\n\n onCreate() {\n this.editor.unregisterPlugin(nativeTiptapExtensions.focusEventsPluginKey);\n },\n\n addProseMirrorPlugins() {\n return [\n createFocusScopePlugin({\n editor: this.editor,\n storage: this.storage,\n clearSelectionOnBlur: this.options.clearSelectionOnBlur,\n }),\n ];\n },\n});\n"],"mappings":"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"}
|