@dialpad/dialtone-vue 3.225.0-next.9 → 3.226.0
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/README.md +2 -0
- package/dist/MarkdownRenderer-BQQDcWMC.cjs +31 -0
- package/dist/MarkdownRenderer-BQQDcWMC.cjs.map +1 -0
- package/dist/{MarkdownRenderer-NSSny0ID.js → MarkdownRenderer-D3rM2x-1.js} +102 -98
- package/dist/{MarkdownRenderer-NSSny0ID.js.map → MarkdownRenderer-D3rM2x-1.js.map} +1 -1
- package/dist/{RichTextEditor-DBfzhN9C.cjs → RichTextEditor-BVQ99ytl.cjs} +2 -2
- package/dist/RichTextEditor-BVQ99ytl.cjs.map +1 -0
- package/dist/{RichTextEditor-Bs2RwA4g.js → RichTextEditor-DKpulIyi.js} +4 -3
- package/dist/RichTextEditor-DKpulIyi.js.map +1 -0
- package/dist/common/sr_only_close_button.vue.d.ts +2 -0
- package/dist/components/Banner/Banner.vue.d.ts +4 -0
- package/dist/components/Banner/Banner.vue.d.ts.map +1 -1
- package/dist/components/Button/Button.vue.d.ts +2 -0
- package/dist/components/Button/Button.vue.d.ts.map +1 -1
- package/dist/components/Chip/Chip.vue.d.ts +2 -0
- package/dist/components/Chip/Chip.vue.d.ts.map +1 -1
- package/dist/components/Collapsible/Collapsible.vue.d.ts +2 -0
- package/dist/components/Collapsible/Collapsible.vue.d.ts.map +1 -1
- package/dist/components/ComboboxWithPopover/ComboboxWithPopover.vue.d.ts +5 -0
- package/dist/components/ComboboxWithPopover/ComboboxWithPopover.vue.d.ts.map +1 -1
- package/dist/components/Dropdown/Dropdown.vue.d.ts +5 -0
- package/dist/components/Dropdown/Dropdown.vue.d.ts.map +1 -1
- package/dist/components/FilterPill/FilterPill.vue.d.ts +12 -0
- package/dist/components/FilterPill/FilterPill.vue.d.ts.map +1 -1
- package/dist/components/Hovercard/Hovercard.vue.d.ts +12 -0
- package/dist/components/Hovercard/Hovercard.vue.d.ts.map +1 -1
- package/dist/components/ImageViewer/ImageViewer.vue.d.ts +4 -0
- package/dist/components/ImageViewer/ImageViewer.vue.d.ts.map +1 -1
- package/dist/components/Modal/Modal.vue.d.ts +4 -0
- package/dist/components/Modal/Modal.vue.d.ts.map +1 -1
- package/dist/components/Notice/Notice.vue.d.ts +4 -0
- package/dist/components/Notice/Notice.vue.d.ts.map +1 -1
- package/dist/components/Notice/NoticeAction.vue.d.ts +4 -0
- package/dist/components/Notice/NoticeAction.vue.d.ts.map +1 -1
- package/dist/components/Pagination/Pagination.vue.d.ts +2 -0
- package/dist/components/Pagination/Pagination.vue.d.ts.map +1 -1
- package/dist/components/Popover/Popover.vue.d.ts +5 -0
- package/dist/components/Popover/Popover.vue.d.ts.map +1 -1
- package/dist/components/Popover/PopoverHeaderFooter.vue.d.ts +2 -0
- package/dist/components/Popover/PopoverHeaderFooter.vue.d.ts.map +1 -1
- package/dist/components/RichTextEditor/Extensions/Emoji/Emoji.d.ts.map +1 -1
- package/dist/components/RichTextEditor/Extensions/Variable/VariableComponent.vue.d.ts +7 -0
- package/dist/components/RichTextEditor/Extensions/Variable/VariableComponent.vue.d.ts.map +1 -1
- package/dist/components/RichTextEditor/MarkdownRenderer.d.ts.map +1 -1
- package/dist/components/SplitButton/SplitButton.vue.d.ts +9 -0
- package/dist/components/SplitButton/SplitButton.vue.d.ts.map +1 -1
- package/dist/components/SplitButton/SplitButtonEnd.vue.d.ts +2 -0
- package/dist/components/SplitButton/SplitButtonEnd.vue.d.ts.map +1 -1
- package/dist/components/SplitButton/SplitButtonStart.vue.d.ts +2 -0
- package/dist/components/Tab/Tab.vue.d.ts +2 -0
- package/dist/components/Toast/Layouts/ToastLayoutAlternate.vue.d.ts +4 -0
- package/dist/components/Toast/Layouts/ToastLayoutAlternate.vue.d.ts.map +1 -1
- package/dist/components/Toast/Layouts/ToastLayoutDefault.vue.d.ts +4 -0
- package/dist/components/Toast/Layouts/ToastLayoutDefault.vue.d.ts.map +1 -1
- package/dist/components/Toast/Toast.vue.d.ts +16 -0
- package/dist/components/Toast/Toast.vue.d.ts.map +1 -1
- package/dist/components/Tooltip/Tooltip.vue.d.ts.map +1 -1
- package/dist/dialtone-vue.cjs +1 -1
- package/dist/dialtone-vue.js +1 -1
- package/dist/lib/button/button.cjs +1 -1
- package/dist/lib/button/button.cjs.map +1 -1
- package/dist/lib/button/button.js +14 -6
- package/dist/lib/button/button.js.map +1 -1
- package/dist/lib/popover/popover.cjs +1 -1
- package/dist/lib/popover/popover.cjs.map +1 -1
- package/dist/lib/popover/popover.js +20 -11
- package/dist/lib/popover/popover.js.map +1 -1
- package/dist/lib/rich-text-editor/index.cjs +1 -1
- package/dist/lib/rich-text-editor/index.js +1 -1
- package/dist/lib/rich-text-editor/markdown-renderer.cjs +1 -1
- package/dist/lib/rich-text-editor/markdown-renderer.js +1 -1
- package/dist/lib/rich-text-editor/rich-text-editor.cjs +1 -1
- package/dist/lib/rich-text-editor/rich-text-editor.js +1 -1
- package/dist/lib/tooltip/tooltip.cjs +1 -1
- package/dist/lib/tooltip/tooltip.cjs.map +1 -1
- package/dist/lib/tooltip/tooltip.js +12 -3
- package/dist/lib/tooltip/tooltip.js.map +1 -1
- package/package.json +5 -5
- package/dist/MarkdownRenderer-D5XWsyQk.cjs +0 -31
- package/dist/MarkdownRenderer-D5XWsyQk.cjs.map +0 -1
- package/dist/RichTextEditor-Bs2RwA4g.js.map +0 -1
- package/dist/RichTextEditor-DBfzhN9C.cjs.map +0 -1
package/README.md
CHANGED
|
@@ -7,6 +7,8 @@ Dialtone Vue is a library of Vue components for [Dialtone][dt]. The goal is to s
|
|
|
7
7
|
[dt]: https://dialtone.dialpad.com
|
|
8
8
|
[dialtone-vue]: https://dialtone.dialpad.com/vue
|
|
9
9
|
|
|
10
|
+
> **Dialtone v10:** see [DLT-2979](https://dialpad.atlassian.net/browse/DLT-2979) / [#1426](https://github.com/dialpad/dialtone/pull/1426) for the v10 upgrade and its breaking changes.
|
|
11
|
+
|
|
10
12
|
## Installation
|
|
11
13
|
|
|
12
14
|
You can install the Dialtone Vue library into your project via the following command:
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
require(`./chunk-Bmb41Sf3.cjs`);const e=require(`./common/emoji/index.cjs`);let t=require(`@tiptap/core`),n=require(`@tiptap/pm/model`);function r(e,n,r){let i=e.attrs;return i?n.filter(t=>t.type===(typeof e.type==`string`?e.type:e.type.name)?r?t.attribute.rendered:!0:!1).map(e=>e.attribute.renderHTML&&e.attribute.renderHTML(i)||{[e.name]:e.name in i?i[e.name]:e.attribute.default}).reduce((e,n)=>(0,t.mergeAttributes)(e,n),{}):{}}function i(e,t){return r(e,t,!0)}function a(e,n,r,a){let o=(0,t.getExtensionField)(n,`renderHTML`,{name:n.name,options:n.options,storage:n.storage,parent:n.parent});return o?[n.name,({node:t,children:a})=>{try{return e(o({node:t,HTMLAttributes:i(t,r)}))(a)}catch(e){throw Error(`[tiptap error]: Node ${n.name} cannot be rendered, it's "renderToHTML" method threw an error: ${e.message}`,{cause:e})}}]:a?.unhandledNode?[n.name,a.unhandledNode]:[n.name,()=>{throw Error(`[tiptap error]: Node ${n.name} cannot be rendered, it is missing a "renderToHTML" method, please implement it or override the corresponding "nodeMapping" method to have a custom rendering`)}]}function o(e,n,r,a){let o=(0,t.getExtensionField)(n,`renderHTML`,{name:n.name,options:n.options,storage:n.storage,parent:n.parent});return o?[n.name,({mark:t,children:a})=>{try{return e(o({mark:t,HTMLAttributes:i(t,r)}))(a)}catch(e){throw Error(`[tiptap error]: Mark ${n.name} cannot be rendered, it's "renderToHTML" method threw an error: ${e.message}`,{cause:e})}}]:a?.unhandledMark?[n.name,a.unhandledMark]:[n.name,()=>{throw Error(`Node ${n.name} cannot be rendered, it is missing a "renderToHTML" method`)}]}function s({renderer:e,domOutputSpecToElement:r,mapDefinedTypes:i,content:s,extensions:c,options:l}){c=(0,t.resolveExtensions)(c);let u=(0,t.getAttributesFromExtensions)(c),{nodeExtensions:d,markExtensions:f}=(0,t.splitExtensions)(c);return s instanceof n.Node||(s=n.Node.fromJSON((0,t.getSchemaByResolvedExtensions)(c),s)),e({...l,nodeMapping:{...Object.fromEntries(d.filter(e=>e.name in i?!1:l?.nodeMapping?!(e.name in l.nodeMapping):!0).map(e=>a(r,e,u,l))),...i,...l?.nodeMapping},markMapping:{...Object.fromEntries(f.filter(e=>l?.markMapping?!(e.name in l.markMapping):!0).map(e=>o(r,e,u,l))),...l?.markMapping}})({content:s})}function c(e,{nodeMapping:t,markMapping:n,unhandledNode:r,unhandledMark:i}){return function a({content:o,parent:s}){let c=typeof o.type==`string`?o.type:o.type.name,l=t[c]??r;if(!l)throw Error(`missing handler for node type ${c}`);let u=e({component:l,props:{node:o,parent:s,renderElement:a,get children(){let e=[];return o.content&&o.content.forEach(t=>{e.push(a({content:t,parent:o}))}),e}}});return o.marks?o.marks.reduce((t,r)=>{let a=typeof r.type==`string`?r.type:r.type.name,c=n[a]??i;if(!c)throw Error(`missing handler for mark type ${a}`);return e({component:c,props:{mark:r,parent:s,node:o,children:t}})},u):u}}function l(e){return c(e=>e.component(e.props),e)}function u(e){let t=Object.entries(e||{}).map(([e,t])=>`${e.split(` `).at(-1)}=${JSON.stringify(t)}`).join(` `);return t?` ${t}`:``}function d(e){return[].concat(e||``).filter(Boolean).join(``)}var f=new Set([`iframe`,`script`,`style`,`title`,`textarea`,`div`,`span`,`a`,`button`]);function p(e){if(typeof e==`string`)return()=>e;if(typeof e==`object`&&`length`in e){let[t,n,r,...i]=e,a=t,o=a.split(` `);if(o.length>1&&(a=`${o[1]} xmlns="${o[0]}"`),n===void 0)return()=>`<${a}/>`;if(n===0)return e=>`<${a}>${d(e)}</${a}>`;if(typeof n==`object`)return Array.isArray(n)?r===void 0||r===0?e=>`<${a}>${p(n)(e)}</${a}>`:e=>`<${a}>${p(n)(e)}${[r].concat(i).map(t=>p(t)(e))}</${a}>`:r===void 0?f.has(a)?()=>`<${a}${u(n)}></${a}>`:()=>`<${a}${u(n)}/>`:r===0?e=>`<${a}${u(n)}>${d(e)}</${a}>`:e=>`<${a}${u(n)}>${[r].concat(i).map(t=>p(t)(e)).join(``)}</${a}>`}throw Error("[tiptap error]: Unsupported DomOutputSpec type, check the `renderHTML` method output or implement a node mapping",{cause:e})}function m({content:e,extensions:t,options:n}){return s({renderer:l,domOutputSpecToElement:p,mapDefinedTypes:{doc:({children:e})=>d(e),text:({node:e})=>e.text??``},content:e,extensions:t,options:n})}function h({content:e,extensions:t,options:n}){return m({content:e,extensions:t,options:{...n,nodeMapping:{bulletList({children:e}){return`
|
|
2
|
+
${d(e)}`},orderedList({children:e}){return`
|
|
3
|
+
${d(e)}`},listItem({node:e,children:t,parent:n}){if(n?.type.name===`bulletList`)return`- ${d(t).trim()}
|
|
4
|
+
`;if(n?.type.name===`orderedList`){let r=n.attrs.start||1;return n.forEach((t,n,i)=>{e===t&&(r=i+1)}),`${r}. ${d(t).trim()}
|
|
5
|
+
`}return d(t)},paragraph({children:e}){return`
|
|
6
|
+
${d(e)}
|
|
7
|
+
`},heading({node:e,children:t}){let n=e.attrs.level;return`${Array(n).fill(`#`).join(``)} ${t}
|
|
8
|
+
`},codeBlock({node:e,children:t}){return`
|
|
9
|
+
\`\`\`${e.attrs.language}
|
|
10
|
+
${d(t)}
|
|
11
|
+
\`\`\`
|
|
12
|
+
`},blockquote({children:e}){return`
|
|
13
|
+
${d(e).trim().split(`
|
|
14
|
+
`).map(e=>`> ${e}`).join(`
|
|
15
|
+
`)}`},image({node:e}){return``},hardBreak(){return`
|
|
16
|
+
`},horizontalRule(){return`
|
|
17
|
+
---
|
|
18
|
+
`},table({children:e,node:t}){if(!Array.isArray(e))return`
|
|
19
|
+
${d(e)}
|
|
20
|
+
`;let n=t.children[0].childCount;return`
|
|
21
|
+
${d(e[0])}| ${Array(n).fill(`---`).join(` | `)} |
|
|
22
|
+
${d(e.slice(1))}
|
|
23
|
+
`},tableRow({children:e}){return Array.isArray(e)?`| ${e.join(` | `)} |
|
|
24
|
+
`:`${d(e)}
|
|
25
|
+
`},tableHeader({children:e}){return d(e).trim()},tableCell({children:e}){return d(e).trim()},...n?.nodeMapping},markMapping:{bold({children:e}){return`**${d(e)}**`},italic({children:e,node:t}){let n=!1;return t?.marks.some(e=>e.type.name===`bold`)&&(n=!0),n?`*${d(e)}*`:`_${d(e)}_`},code({children:e}){return`\`${d(e)}\``},strike({children:e}){return`~~${d(e)}~~`},underline({children:e}){return`<u>${d(e)}</u>`},subscript({children:e}){return`<sub>${d(e)}</sub>`},superscript({children:e}){return`<sup>${d(e)}</sup>`},link({mark:e,children:t}){return`[${d(t)}](${e.attrs.href})`},highlight({children:e}){return`==${d(e)}==`},...n?.markMapping}}})}var g=e=>Array.isArray(e)?e.join(``):e||``,_=(e,t,n)=>{let r=e.trim();return r?`${e.slice(0,e.length-e.trimStart().length)}${t}${r}${n}${e.slice(e.trimEnd().length)}`:e};function v(t,n){return h({extensions:n,content:t,options:{nodeMapping:{blockquote({children:e}){return g(e).trim().split(`
|
|
26
|
+
`).map(e=>e?`> ${e}`:`>`).join(`
|
|
27
|
+
`)+`
|
|
28
|
+
`},codeBlock({node:e,children:t}){return`\`\`\`${e.attrs?.language||``}\n${g(t)}\n\`\`\`\n`},mention({node:e}){return`<!-- @mention: {"id": "${e.attrs?.id||``}", "contactKey": "${e.attrs?.contactKey||``}", "name": "${e.attrs?.name||``}"} -->`},channel({node:e}){return`<!-- @channel: {"id": "${e.attrs?.id||``}", "channelKey": "${e.attrs?.channelKey||``}", "name": "${e.attrs?.name||``}", "locked": "${String(e.attrs?.locked??``)}"} -->`},"slash-commands"({node:e}){return`/${e.attrs?.command||``}`},emoji({node:t}){let n=t.attrs?.code;if(!n)return``;let r=e.codeToEmojiData(n);return r?e.stringToUnicode(r.unicode_output):n},variable({node:e}){return`{{${e.attrs?.id||``}=${e.attrs?.altText||``}}}`}},markMapping:{bold({children:e}){return _(g(e),`**`,`**`)},italic({children:e}){return _(g(e),`*`,`*`)},strike({children:e}){return _(g(e),`~~`,`~~`)},code({children:e}){return _(g(e),"`","`")},link({mark:e,children:t}){let n=g(t),r=e.attrs?.href||``,i=n.trim();return`${n.slice(0,n.length-n.trimStart().length)}[${i}](${r})${n.slice(n.trimEnd().length)}`},underline({children:e}){return g(e)}}}}).replace(/\n{3,}/g,`
|
|
29
|
+
|
|
30
|
+
`).replace(/^\n+|\n+$/g,``)}Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return v}});
|
|
31
|
+
//# sourceMappingURL=MarkdownRenderer-BQQDcWMC.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MarkdownRenderer-BQQDcWMC.cjs","names":["Node","codeToEmojiData","stringToUnicode"],"sources":["../../../node_modules/.pnpm/@tiptap+static-renderer@3.19.0_@tiptap+core@3.19.0_@tiptap+pm@3.19.0__@tiptap+pm@3.19.0_9606d4b01b88c88c850636a0b274a958/node_modules/@tiptap/static-renderer/dist/pm/markdown/index.js","../components/RichTextEditor/MarkdownRenderer.js"],"sourcesContent":["// src/pm/extensionRenderer.ts\nimport {\n getAttributesFromExtensions,\n getExtensionField,\n getSchemaByResolvedExtensions,\n resolveExtensions,\n splitExtensions\n} from \"@tiptap/core\";\nimport { Node } from \"@tiptap/pm/model\";\n\n// src/helpers.ts\nimport { mergeAttributes } from \"@tiptap/core\";\nfunction getAttributes(nodeOrMark, extensionAttributes, onlyRenderedAttributes) {\n const nodeOrMarkAttributes = nodeOrMark.attrs;\n if (!nodeOrMarkAttributes) {\n return {};\n }\n return extensionAttributes.filter((item) => {\n if (item.type !== (typeof nodeOrMark.type === \"string\" ? nodeOrMark.type : nodeOrMark.type.name)) {\n return false;\n }\n if (onlyRenderedAttributes) {\n return item.attribute.rendered;\n }\n return true;\n }).map((item) => {\n if (!item.attribute.renderHTML) {\n return {\n [item.name]: item.name in nodeOrMarkAttributes ? nodeOrMarkAttributes[item.name] : item.attribute.default\n };\n }\n return item.attribute.renderHTML(nodeOrMarkAttributes) || {\n [item.name]: item.name in nodeOrMarkAttributes ? nodeOrMarkAttributes[item.name] : item.attribute.default\n };\n }).reduce((attributes, attribute) => mergeAttributes(attributes, attribute), {});\n}\nfunction getHTMLAttributes(nodeOrMark, extensionAttributes) {\n return getAttributes(nodeOrMark, extensionAttributes, true);\n}\n\n// src/pm/extensionRenderer.ts\nfunction mapNodeExtensionToReactNode(domOutputSpecToElement, extension, extensionAttributes, options) {\n const context = {\n name: extension.name,\n options: extension.options,\n storage: extension.storage,\n parent: extension.parent\n };\n const renderToHTML = getExtensionField(extension, \"renderHTML\", context);\n if (!renderToHTML) {\n if (options == null ? void 0 : options.unhandledNode) {\n return [extension.name, options.unhandledNode];\n }\n return [\n extension.name,\n () => {\n throw new Error(\n `[tiptap error]: Node ${extension.name} cannot be rendered, it is missing a \"renderToHTML\" method, please implement it or override the corresponding \"nodeMapping\" method to have a custom rendering`\n );\n }\n ];\n }\n return [\n extension.name,\n ({ node, children }) => {\n try {\n return domOutputSpecToElement(\n renderToHTML({\n node,\n HTMLAttributes: getHTMLAttributes(node, extensionAttributes)\n })\n )(children);\n } catch (e) {\n throw new Error(\n `[tiptap error]: Node ${extension.name} cannot be rendered, it's \"renderToHTML\" method threw an error: ${e.message}`,\n { cause: e }\n );\n }\n }\n ];\n}\nfunction mapMarkExtensionToReactNode(domOutputSpecToElement, extension, extensionAttributes, options) {\n const context = {\n name: extension.name,\n options: extension.options,\n storage: extension.storage,\n parent: extension.parent\n };\n const renderToHTML = getExtensionField(extension, \"renderHTML\", context);\n if (!renderToHTML) {\n if (options == null ? void 0 : options.unhandledMark) {\n return [extension.name, options.unhandledMark];\n }\n return [\n extension.name,\n () => {\n throw new Error(`Node ${extension.name} cannot be rendered, it is missing a \"renderToHTML\" method`);\n }\n ];\n }\n return [\n extension.name,\n ({ mark, children }) => {\n try {\n return domOutputSpecToElement(\n renderToHTML({\n mark,\n HTMLAttributes: getHTMLAttributes(mark, extensionAttributes)\n })\n )(children);\n } catch (e) {\n throw new Error(\n `[tiptap error]: Mark ${extension.name} cannot be rendered, it's \"renderToHTML\" method threw an error: ${e.message}`,\n { cause: e }\n );\n }\n }\n ];\n}\nfunction renderToElement({\n renderer,\n domOutputSpecToElement,\n mapDefinedTypes,\n content,\n extensions,\n options\n}) {\n extensions = resolveExtensions(extensions);\n const extensionAttributes = getAttributesFromExtensions(extensions);\n const { nodeExtensions, markExtensions } = splitExtensions(extensions);\n if (!(content instanceof Node)) {\n content = Node.fromJSON(getSchemaByResolvedExtensions(extensions), content);\n }\n return renderer({\n ...options,\n nodeMapping: {\n ...Object.fromEntries(\n nodeExtensions.filter((e) => {\n if (e.name in mapDefinedTypes) {\n return false;\n }\n if (options == null ? void 0 : options.nodeMapping) {\n return !(e.name in options.nodeMapping);\n }\n return true;\n }).map(\n (nodeExtension) => mapNodeExtensionToReactNode(domOutputSpecToElement, nodeExtension, extensionAttributes, options)\n )\n ),\n ...mapDefinedTypes,\n ...options == null ? void 0 : options.nodeMapping\n },\n markMapping: {\n ...Object.fromEntries(\n markExtensions.filter((e) => {\n if (options == null ? void 0 : options.markMapping) {\n return !(e.name in options.markMapping);\n }\n return true;\n }).map((mark) => mapMarkExtensionToReactNode(domOutputSpecToElement, mark, extensionAttributes, options))\n ),\n ...options == null ? void 0 : options.markMapping\n }\n })({ content });\n}\n\n// src/json/renderer.ts\nfunction TiptapStaticRenderer(renderComponent, {\n nodeMapping,\n markMapping,\n unhandledNode,\n unhandledMark\n}) {\n return function renderContent({\n content,\n parent\n }) {\n var _a;\n const nodeType = typeof content.type === \"string\" ? content.type : content.type.name;\n const NodeHandler = (_a = nodeMapping[nodeType]) != null ? _a : unhandledNode;\n if (!NodeHandler) {\n throw new Error(`missing handler for node type ${nodeType}`);\n }\n const nodeContent = renderComponent({\n component: NodeHandler,\n props: {\n node: content,\n parent,\n renderElement: renderContent,\n // Lazily compute the children to avoid unnecessary recursion\n get children() {\n const children = [];\n if (content.content) {\n content.content.forEach((child) => {\n children.push(\n renderContent({\n content: child,\n parent: content\n })\n );\n });\n }\n return children;\n }\n }\n });\n const markedContent = content.marks ? content.marks.reduce((acc, mark) => {\n var _a2;\n const markType = typeof mark.type === \"string\" ? mark.type : mark.type.name;\n const MarkHandler = (_a2 = markMapping[markType]) != null ? _a2 : unhandledMark;\n if (!MarkHandler) {\n throw new Error(`missing handler for mark type ${markType}`);\n }\n return renderComponent({\n component: MarkHandler,\n props: {\n mark,\n parent,\n node: content,\n children: acc\n }\n });\n }, nodeContent) : nodeContent;\n return markedContent;\n };\n}\n\n// src/json/html-string/string.ts\nfunction renderJSONContentToString(options) {\n return TiptapStaticRenderer((ctx) => {\n return ctx.component(ctx.props);\n }, options);\n}\nfunction serializeAttrsToHTMLString(attrs) {\n const output = Object.entries(attrs || {}).map(([key, value]) => `${key.split(\" \").at(-1)}=${JSON.stringify(value)}`).join(\" \");\n return output ? ` ${output}` : \"\";\n}\nfunction serializeChildrenToHTMLString(children) {\n return [].concat(children || \"\").filter(Boolean).join(\"\");\n}\n\n// src/pm/html-string/html-string.ts\nvar NON_SELF_CLOSING_TAGS = /* @__PURE__ */ new Set([\"iframe\", \"script\", \"style\", \"title\", \"textarea\", \"div\", \"span\", \"a\", \"button\"]);\nfunction domOutputSpecToHTMLString(content) {\n if (typeof content === \"string\") {\n return () => content;\n }\n if (typeof content === \"object\" && \"length\" in content) {\n const [_tag, attrs, children, ...rest] = content;\n let tag = _tag;\n const parts = tag.split(\" \");\n if (parts.length > 1) {\n tag = `${parts[1]} xmlns=\"${parts[0]}\"`;\n }\n if (attrs === void 0) {\n return () => `<${tag}/>`;\n }\n if (attrs === 0) {\n return (child) => `<${tag}>${serializeChildrenToHTMLString(child)}</${tag}>`;\n }\n if (typeof attrs === \"object\") {\n if (Array.isArray(attrs)) {\n if (children === void 0) {\n return (child) => `<${tag}>${domOutputSpecToHTMLString(attrs)(child)}</${tag}>`;\n }\n if (children === 0) {\n return (child) => `<${tag}>${domOutputSpecToHTMLString(attrs)(child)}</${tag}>`;\n }\n return (child) => `<${tag}>${domOutputSpecToHTMLString(attrs)(child)}${[children].concat(rest).map((a) => domOutputSpecToHTMLString(a)(child))}</${tag}>`;\n }\n if (children === void 0) {\n if (NON_SELF_CLOSING_TAGS.has(tag)) {\n return () => `<${tag}${serializeAttrsToHTMLString(attrs)}></${tag}>`;\n }\n return () => `<${tag}${serializeAttrsToHTMLString(attrs)}/>`;\n }\n if (children === 0) {\n return (child) => `<${tag}${serializeAttrsToHTMLString(attrs)}>${serializeChildrenToHTMLString(child)}</${tag}>`;\n }\n return (child) => `<${tag}${serializeAttrsToHTMLString(attrs)}>${[children].concat(rest).map((a) => domOutputSpecToHTMLString(a)(child)).join(\"\")}</${tag}>`;\n }\n }\n throw new Error(\n \"[tiptap error]: Unsupported DomOutputSpec type, check the `renderHTML` method output or implement a node mapping\",\n {\n cause: content\n }\n );\n}\nfunction renderToHTMLString({\n content,\n extensions,\n options\n}) {\n return renderToElement({\n renderer: renderJSONContentToString,\n domOutputSpecToElement: domOutputSpecToHTMLString,\n mapDefinedTypes: {\n // Map a doc node to concatenated children\n doc: ({ children }) => serializeChildrenToHTMLString(children),\n // Map a text node to its text content\n text: ({ node }) => {\n var _a;\n return (_a = node.text) != null ? _a : \"\";\n }\n },\n content,\n extensions,\n options\n });\n}\n\n// src/pm/markdown/markdown.ts\nfunction renderToMarkdown({\n content,\n extensions,\n options\n}) {\n return renderToHTMLString({\n content,\n extensions,\n options: {\n ...options,\n nodeMapping: {\n bulletList({ children }) {\n return `\n${serializeChildrenToHTMLString(children)}`;\n },\n orderedList({ children }) {\n return `\n${serializeChildrenToHTMLString(children)}`;\n },\n listItem({ node, children, parent }) {\n if ((parent == null ? void 0 : parent.type.name) === \"bulletList\") {\n return `- ${serializeChildrenToHTMLString(children).trim()}\n`;\n }\n if ((parent == null ? void 0 : parent.type.name) === \"orderedList\") {\n let number = parent.attrs.start || 1;\n parent.forEach((parentChild, _offset, index) => {\n if (node === parentChild) {\n number = index + 1;\n }\n });\n return `${number}. ${serializeChildrenToHTMLString(children).trim()}\n`;\n }\n return serializeChildrenToHTMLString(children);\n },\n paragraph({ children }) {\n return `\n${serializeChildrenToHTMLString(children)}\n`;\n },\n heading({ node, children }) {\n const level = node.attrs.level;\n return `${new Array(level).fill(\"#\").join(\"\")} ${children}\n`;\n },\n codeBlock({ node, children }) {\n return `\n\\`\\`\\`${node.attrs.language}\n${serializeChildrenToHTMLString(children)}\n\\`\\`\\`\n`;\n },\n blockquote({ children }) {\n return `\n${serializeChildrenToHTMLString(children).trim().split(\"\\n\").map((a) => `> ${a}`).join(\"\\n\")}`;\n },\n image({ node }) {\n return ``;\n },\n hardBreak() {\n return \"\\n\";\n },\n horizontalRule() {\n return \"\\n---\\n\";\n },\n table({ children, node }) {\n if (!Array.isArray(children)) {\n return `\n${serializeChildrenToHTMLString(children)}\n`;\n }\n const columnCount = node.children[0].childCount;\n return `\n${serializeChildrenToHTMLString(children[0])}| ${new Array(columnCount).fill(\"---\").join(\" | \")} |\n${serializeChildrenToHTMLString(children.slice(1))}\n`;\n },\n tableRow({ children }) {\n if (Array.isArray(children)) {\n return `| ${children.join(\" | \")} |\n`;\n }\n return `${serializeChildrenToHTMLString(children)}\n`;\n },\n tableHeader({ children }) {\n return serializeChildrenToHTMLString(children).trim();\n },\n tableCell({ children }) {\n return serializeChildrenToHTMLString(children).trim();\n },\n ...options == null ? void 0 : options.nodeMapping\n },\n markMapping: {\n bold({ children }) {\n return `**${serializeChildrenToHTMLString(children)}**`;\n },\n italic({ children, node }) {\n let isBoldToo = false;\n if (node == null ? void 0 : node.marks.some((m) => m.type.name === \"bold\")) {\n isBoldToo = true;\n }\n if (isBoldToo) {\n return `*${serializeChildrenToHTMLString(children)}*`;\n }\n return `_${serializeChildrenToHTMLString(children)}_`;\n },\n code({ children }) {\n return `\\`${serializeChildrenToHTMLString(children)}\\``;\n },\n strike({ children }) {\n return `~~${serializeChildrenToHTMLString(children)}~~`;\n },\n underline({ children }) {\n return `<u>${serializeChildrenToHTMLString(children)}</u>`;\n },\n subscript({ children }) {\n return `<sub>${serializeChildrenToHTMLString(children)}</sub>`;\n },\n superscript({ children }) {\n return `<sup>${serializeChildrenToHTMLString(children)}</sup>`;\n },\n link({ mark, children }) {\n return `[${serializeChildrenToHTMLString(children)}](${mark.attrs.href})`;\n },\n highlight({ children }) {\n return `==${serializeChildrenToHTMLString(children)}==`;\n },\n ...options == null ? void 0 : options.markMapping\n }\n }\n });\n}\nexport {\n mapMarkExtensionToReactNode,\n mapNodeExtensionToReactNode,\n renderToElement,\n renderToMarkdown\n};\n//# sourceMappingURL=index.js.map","import { renderToMarkdown } from '@tiptap/static-renderer/pm/markdown';\nimport { codeToEmojiData, stringToUnicode } from '@/common/emoji';\n\n// The pm/markdown renderer passes children as string[] (one entry per child node),\n// not as a pre-joined string. Normalize to a string before processing.\nconst joinChildren = (children) => Array.isArray(children) ? children.join('') : (children || '');\n\n// Move leading/trailing spaces outside mark delimiters so parsers like CommonMark\n// don't reject them (e.g. \"** bold **\" → \" **bold** \").\nconst wrapMark = (text, open, close) => {\n const trimmed = text.trim();\n if (!trimmed) return text;\n const leading = text.slice(0, text.length - text.trimStart().length);\n const trailing = text.slice(text.trimEnd().length);\n return `${leading}${open}${trimmed}${close}${trailing}`;\n};\n\n/**\n * Renders a TipTap/ProseMirror JSON document to a markdown string.\n *\n * Uses @tiptap/static-renderer with custom mappings to preserve the output\n * format of the legacy jsonToMarkdownConverter, including Dialtone-specific\n * node types (mention, channel, emoji, variable, slash-commands).\n *\n * @param {import('@tiptap/core').JSONContent} jsonContent - TipTap JSON document\n * @param {import('@tiptap/core').Extensions} extensions - Active editor extensions\n * @returns {string}\n */\nexport function renderEditorToMarkdown (jsonContent, extensions) {\n const output = renderToMarkdown({\n extensions,\n content: jsonContent,\n options: {\n nodeMapping: {\n // Override blockquote: built-in omits trailing newline (causes lazy continuation).\n // Since we replace the built-in entirely, we must add the '> ' prefix ourselves.\n blockquote ({ children }) {\n const text = joinChildren(children).trim();\n const quoted = text\n .split('\\n')\n .map(line => line ? `> ${line}` : '>')\n .join('\\n');\n return quoted + '\\n';\n },\n\n // Override codeBlock: built-in passes null language through literally\n codeBlock ({ node, children }) {\n const lang = node.attrs?.language || '';\n return `\\`\\`\\`${lang}\\n${joinChildren(children)}\\n\\`\\`\\`\\n`;\n },\n\n // Custom Dialtone node types\n mention ({ node }) {\n const id = node.attrs?.id || '';\n const contactKey = node.attrs?.contactKey || '';\n const name = node.attrs?.name || '';\n return `<!-- @mention: {\"id\": \"${id}\", \"contactKey\": \"${contactKey}\", \"name\": \"${name}\"} -->`;\n },\n\n channel ({ node }) {\n const id = node.attrs?.id || '';\n const channelKey = node.attrs?.channelKey || '';\n const name = node.attrs?.name || '';\n const locked = String(node.attrs?.locked ?? '');\n return `<!-- @channel: {\"id\": \"${id}\", \"channelKey\": \"${channelKey}\", \"name\": \"${name}\", \"locked\": \"${locked}\"} -->`;\n },\n\n 'slash-commands' ({ node }) {\n return `/${node.attrs?.command || ''}`;\n },\n\n emoji ({ node }) {\n const code = node.attrs?.code;\n if (!code) return '';\n // Always output emoji as unicode characters rather than shortcodes, matching\n // renderText's backwards-compatibility behavior with our backend (see Emoji.js).\n const emojiData = codeToEmojiData(code);\n return emojiData ? stringToUnicode(emojiData.unicode_output) : code;\n },\n\n variable ({ node }) {\n const id = node.attrs?.id || '';\n const altText = node.attrs?.altText || '';\n return `{{${id}=${altText}}}`;\n },\n },\n\n markMapping: {\n bold ({ children }) {\n return wrapMark(joinChildren(children), '**', '**');\n },\n\n // Override italic: use * instead of built-in _ and fix boundary spaces\n italic ({ children }) {\n return wrapMark(joinChildren(children), '*', '*');\n },\n\n strike ({ children }) {\n return wrapMark(joinChildren(children), '~~', '~~');\n },\n\n code ({ children }) {\n return wrapMark(joinChildren(children), '`', '`');\n },\n\n link ({ mark, children }) {\n const text = joinChildren(children);\n const href = mark.attrs?.href || '';\n const trimmed = text.trim();\n const leading = text.slice(0, text.length - text.trimStart().length);\n const trailing = text.slice(text.trimEnd().length);\n return `${leading}[${trimmed}](${href})${trailing}`;\n },\n\n // Override underline: pass-through (no markdown equivalent, matches legacy no-op)\n underline ({ children }) {\n return joinChildren(children);\n },\n },\n },\n });\n // Collapse 3+ consecutive newlines to 2 (CommonMark ignores extra blank\n // lines between blocks), and strip the leading newline that the built-in\n // paragraph renderer always prepends to the first node.\n return output.replace(/\\n{3,}/g, '\\n\\n').replace(/^\\n+|\\n+$/g, '');\n}\n"],"x_google_ignoreList":[0],"mappings":"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"}
|
|
@@ -1,70 +1,71 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import { codeToEmojiData as e, stringToUnicode as t } from "./common/emoji/index.js";
|
|
2
|
+
import { getAttributesFromExtensions as n, getExtensionField as r, getSchemaByResolvedExtensions as i, mergeAttributes as a, resolveExtensions as o, splitExtensions as s } from "@tiptap/core";
|
|
3
|
+
import { Node as c } from "@tiptap/pm/model";
|
|
3
4
|
//#region ../../node_modules/.pnpm/@tiptap+static-renderer@3.19.0_@tiptap+core@3.19.0_@tiptap+pm@3.19.0__@tiptap+pm@3.19.0_9606d4b01b88c88c850636a0b274a958/node_modules/@tiptap/static-renderer/dist/pm/markdown/index.js
|
|
4
|
-
function
|
|
5
|
-
let
|
|
6
|
-
return
|
|
5
|
+
function l(e, t, n) {
|
|
6
|
+
let r = e.attrs;
|
|
7
|
+
return r ? t.filter((t) => t.type === (typeof e.type == "string" ? e.type : e.type.name) ? n ? t.attribute.rendered : !0 : !1).map((e) => e.attribute.renderHTML && e.attribute.renderHTML(r) || { [e.name]: e.name in r ? r[e.name] : e.attribute.default }).reduce((e, t) => a(e, t), {}) : {};
|
|
7
8
|
}
|
|
8
|
-
function
|
|
9
|
-
return
|
|
9
|
+
function u(e, t) {
|
|
10
|
+
return l(e, t, !0);
|
|
10
11
|
}
|
|
11
|
-
function
|
|
12
|
-
let a = t
|
|
13
|
-
name:
|
|
14
|
-
options:
|
|
15
|
-
storage:
|
|
16
|
-
parent:
|
|
12
|
+
function d(e, t, n, i) {
|
|
13
|
+
let a = r(t, "renderHTML", {
|
|
14
|
+
name: t.name,
|
|
15
|
+
options: t.options,
|
|
16
|
+
storage: t.storage,
|
|
17
|
+
parent: t.parent
|
|
17
18
|
});
|
|
18
|
-
return a ? [
|
|
19
|
+
return a ? [t.name, ({ node: r, children: i }) => {
|
|
19
20
|
try {
|
|
20
21
|
return e(a({
|
|
21
|
-
node:
|
|
22
|
-
HTMLAttributes:
|
|
22
|
+
node: r,
|
|
23
|
+
HTMLAttributes: u(r, n)
|
|
23
24
|
}))(i);
|
|
24
25
|
} catch (e) {
|
|
25
|
-
throw Error(`[tiptap error]: Node ${
|
|
26
|
+
throw Error(`[tiptap error]: Node ${t.name} cannot be rendered, it's "renderToHTML" method threw an error: ${e.message}`, { cause: e });
|
|
26
27
|
}
|
|
27
|
-
}] : i?.unhandledNode ? [
|
|
28
|
-
throw Error(`[tiptap error]: Node ${
|
|
28
|
+
}] : i?.unhandledNode ? [t.name, i.unhandledNode] : [t.name, () => {
|
|
29
|
+
throw Error(`[tiptap error]: Node ${t.name} cannot be rendered, it is missing a "renderToHTML" method, please implement it or override the corresponding "nodeMapping" method to have a custom rendering`);
|
|
29
30
|
}];
|
|
30
31
|
}
|
|
31
|
-
function
|
|
32
|
-
let a = t
|
|
33
|
-
name:
|
|
34
|
-
options:
|
|
35
|
-
storage:
|
|
36
|
-
parent:
|
|
32
|
+
function f(e, t, n, i) {
|
|
33
|
+
let a = r(t, "renderHTML", {
|
|
34
|
+
name: t.name,
|
|
35
|
+
options: t.options,
|
|
36
|
+
storage: t.storage,
|
|
37
|
+
parent: t.parent
|
|
37
38
|
});
|
|
38
|
-
return a ? [
|
|
39
|
+
return a ? [t.name, ({ mark: r, children: i }) => {
|
|
39
40
|
try {
|
|
40
41
|
return e(a({
|
|
41
|
-
mark:
|
|
42
|
-
HTMLAttributes:
|
|
42
|
+
mark: r,
|
|
43
|
+
HTMLAttributes: u(r, n)
|
|
43
44
|
}))(i);
|
|
44
45
|
} catch (e) {
|
|
45
|
-
throw Error(`[tiptap error]: Mark ${
|
|
46
|
+
throw Error(`[tiptap error]: Mark ${t.name} cannot be rendered, it's "renderToHTML" method threw an error: ${e.message}`, { cause: e });
|
|
46
47
|
}
|
|
47
|
-
}] : i?.unhandledMark ? [
|
|
48
|
-
throw Error(`Node ${
|
|
48
|
+
}] : i?.unhandledMark ? [t.name, i.unhandledMark] : [t.name, () => {
|
|
49
|
+
throw Error(`Node ${t.name} cannot be rendered, it is missing a "renderToHTML" method`);
|
|
49
50
|
}];
|
|
50
51
|
}
|
|
51
|
-
function
|
|
52
|
-
|
|
53
|
-
let p =
|
|
54
|
-
return
|
|
55
|
-
...
|
|
52
|
+
function p({ renderer: e, domOutputSpecToElement: t, mapDefinedTypes: r, content: a, extensions: l, options: u }) {
|
|
53
|
+
l = o(l);
|
|
54
|
+
let p = n(l), { nodeExtensions: m, markExtensions: h } = s(l);
|
|
55
|
+
return a instanceof c || (a = c.fromJSON(i(l), a)), e({
|
|
56
|
+
...u,
|
|
56
57
|
nodeMapping: {
|
|
57
|
-
...Object.fromEntries(m.filter((e) => e.name in
|
|
58
|
-
...
|
|
59
|
-
...
|
|
58
|
+
...Object.fromEntries(m.filter((e) => e.name in r ? !1 : u?.nodeMapping ? !(e.name in u.nodeMapping) : !0).map((e) => d(t, e, p, u))),
|
|
59
|
+
...r,
|
|
60
|
+
...u?.nodeMapping
|
|
60
61
|
},
|
|
61
62
|
markMapping: {
|
|
62
|
-
...Object.fromEntries(h.filter((e) =>
|
|
63
|
-
...
|
|
63
|
+
...Object.fromEntries(h.filter((e) => u?.markMapping ? !(e.name in u.markMapping) : !0).map((e) => f(t, e, p, u))),
|
|
64
|
+
...u?.markMapping
|
|
64
65
|
}
|
|
65
|
-
})({ content:
|
|
66
|
+
})({ content: a });
|
|
66
67
|
}
|
|
67
|
-
function
|
|
68
|
+
function m(e, { nodeMapping: t, markMapping: n, unhandledNode: r, unhandledMark: i }) {
|
|
68
69
|
return function a({ content: o, parent: s }) {
|
|
69
70
|
let c = typeof o.type == "string" ? o.type : o.type.name, l = t[c] ?? r;
|
|
70
71
|
if (!l) throw Error(`missing handler for node type ${c}`);
|
|
@@ -100,17 +101,17 @@ function f(e, { nodeMapping: t, markMapping: n, unhandledNode: r, unhandledMark:
|
|
|
100
101
|
}, u) : u;
|
|
101
102
|
};
|
|
102
103
|
}
|
|
103
|
-
function
|
|
104
|
-
return
|
|
104
|
+
function h(e) {
|
|
105
|
+
return m((e) => e.component(e.props), e);
|
|
105
106
|
}
|
|
106
|
-
function
|
|
107
|
+
function g(e) {
|
|
107
108
|
let t = Object.entries(e || {}).map(([e, t]) => `${e.split(" ").at(-1)}=${JSON.stringify(t)}`).join(" ");
|
|
108
109
|
return t ? ` ${t}` : "";
|
|
109
110
|
}
|
|
110
|
-
function
|
|
111
|
+
function _(e) {
|
|
111
112
|
return [].concat(e || "").filter(Boolean).join("");
|
|
112
113
|
}
|
|
113
|
-
var
|
|
114
|
+
var v = /* @__PURE__ */ new Set([
|
|
114
115
|
"iframe",
|
|
115
116
|
"script",
|
|
116
117
|
"style",
|
|
@@ -121,22 +122,22 @@ var g = /* @__PURE__ */ new Set([
|
|
|
121
122
|
"a",
|
|
122
123
|
"button"
|
|
123
124
|
]);
|
|
124
|
-
function
|
|
125
|
+
function y(e) {
|
|
125
126
|
if (typeof e == "string") return () => e;
|
|
126
127
|
if (typeof e == "object" && "length" in e) {
|
|
127
128
|
let [t, n, r, ...i] = e, a = t, o = a.split(" ");
|
|
128
129
|
if (o.length > 1 && (a = `${o[1]} xmlns="${o[0]}"`), n === void 0) return () => `<${a}/>`;
|
|
129
|
-
if (n === 0) return (e) => `<${a}>${
|
|
130
|
-
if (typeof n == "object") return Array.isArray(n) ? r === void 0 || r === 0 ? (e) => `<${a}>${
|
|
130
|
+
if (n === 0) return (e) => `<${a}>${_(e)}</${a}>`;
|
|
131
|
+
if (typeof n == "object") return Array.isArray(n) ? r === void 0 || r === 0 ? (e) => `<${a}>${y(n)(e)}</${a}>` : (e) => `<${a}>${y(n)(e)}${[r].concat(i).map((t) => y(t)(e))}</${a}>` : r === void 0 ? v.has(a) ? () => `<${a}${g(n)}></${a}>` : () => `<${a}${g(n)}/>` : r === 0 ? (e) => `<${a}${g(n)}>${_(e)}</${a}>` : (e) => `<${a}${g(n)}>${[r].concat(i).map((t) => y(t)(e)).join("")}</${a}>`;
|
|
131
132
|
}
|
|
132
133
|
throw Error("[tiptap error]: Unsupported DomOutputSpec type, check the `renderHTML` method output or implement a node mapping", { cause: e });
|
|
133
134
|
}
|
|
134
|
-
function
|
|
135
|
-
return
|
|
136
|
-
renderer:
|
|
137
|
-
domOutputSpecToElement:
|
|
135
|
+
function b({ content: e, extensions: t, options: n }) {
|
|
136
|
+
return p({
|
|
137
|
+
renderer: h,
|
|
138
|
+
domOutputSpecToElement: y,
|
|
138
139
|
mapDefinedTypes: {
|
|
139
|
-
doc: ({ children: e }) =>
|
|
140
|
+
doc: ({ children: e }) => _(e),
|
|
140
141
|
text: ({ node: e }) => e.text ?? ""
|
|
141
142
|
},
|
|
142
143
|
content: e,
|
|
@@ -144,8 +145,8 @@ function v({ content: e, extensions: t, options: n }) {
|
|
|
144
145
|
options: n
|
|
145
146
|
});
|
|
146
147
|
}
|
|
147
|
-
function
|
|
148
|
-
return
|
|
148
|
+
function x({ content: e, extensions: t, options: n }) {
|
|
149
|
+
return b({
|
|
149
150
|
content: e,
|
|
150
151
|
extensions: t,
|
|
151
152
|
options: {
|
|
@@ -153,27 +154,27 @@ function y({ content: e, extensions: t, options: n }) {
|
|
|
153
154
|
nodeMapping: {
|
|
154
155
|
bulletList({ children: e }) {
|
|
155
156
|
return `
|
|
156
|
-
${
|
|
157
|
+
${_(e)}`;
|
|
157
158
|
},
|
|
158
159
|
orderedList({ children: e }) {
|
|
159
160
|
return `
|
|
160
|
-
${
|
|
161
|
+
${_(e)}`;
|
|
161
162
|
},
|
|
162
163
|
listItem({ node: e, children: t, parent: n }) {
|
|
163
|
-
if (n?.type.name === "bulletList") return `- ${
|
|
164
|
+
if (n?.type.name === "bulletList") return `- ${_(t).trim()}
|
|
164
165
|
`;
|
|
165
166
|
if (n?.type.name === "orderedList") {
|
|
166
167
|
let r = n.attrs.start || 1;
|
|
167
168
|
return n.forEach((t, n, i) => {
|
|
168
169
|
e === t && (r = i + 1);
|
|
169
|
-
}), `${r}. ${
|
|
170
|
+
}), `${r}. ${_(t).trim()}
|
|
170
171
|
`;
|
|
171
172
|
}
|
|
172
|
-
return
|
|
173
|
+
return _(t);
|
|
173
174
|
},
|
|
174
175
|
paragraph({ children: e }) {
|
|
175
176
|
return `
|
|
176
|
-
${
|
|
177
|
+
${_(e)}
|
|
177
178
|
`;
|
|
178
179
|
},
|
|
179
180
|
heading({ node: e, children: t }) {
|
|
@@ -184,13 +185,13 @@ ${h(e)}
|
|
|
184
185
|
codeBlock({ node: e, children: t }) {
|
|
185
186
|
return `
|
|
186
187
|
\`\`\`${e.attrs.language}
|
|
187
|
-
${
|
|
188
|
+
${_(t)}
|
|
188
189
|
\`\`\`
|
|
189
190
|
`;
|
|
190
191
|
},
|
|
191
192
|
blockquote({ children: e }) {
|
|
192
193
|
return `
|
|
193
|
-
${
|
|
194
|
+
${_(e).trim().split("\n").map((e) => `> ${e}`).join("\n")}`;
|
|
194
195
|
},
|
|
195
196
|
image({ node: e }) {
|
|
196
197
|
return ``;
|
|
@@ -203,55 +204,55 @@ ${h(e).trim().split("\n").map((e) => `> ${e}`).join("\n")}`;
|
|
|
203
204
|
},
|
|
204
205
|
table({ children: e, node: t }) {
|
|
205
206
|
if (!Array.isArray(e)) return `
|
|
206
|
-
${
|
|
207
|
+
${_(e)}
|
|
207
208
|
`;
|
|
208
209
|
let n = t.children[0].childCount;
|
|
209
210
|
return `
|
|
210
|
-
${
|
|
211
|
-
${
|
|
211
|
+
${_(e[0])}| ${Array(n).fill("---").join(" | ")} |
|
|
212
|
+
${_(e.slice(1))}
|
|
212
213
|
`;
|
|
213
214
|
},
|
|
214
215
|
tableRow({ children: e }) {
|
|
215
216
|
return Array.isArray(e) ? `| ${e.join(" | ")} |
|
|
216
|
-
` : `${
|
|
217
|
+
` : `${_(e)}
|
|
217
218
|
`;
|
|
218
219
|
},
|
|
219
220
|
tableHeader({ children: e }) {
|
|
220
|
-
return
|
|
221
|
+
return _(e).trim();
|
|
221
222
|
},
|
|
222
223
|
tableCell({ children: e }) {
|
|
223
|
-
return
|
|
224
|
+
return _(e).trim();
|
|
224
225
|
},
|
|
225
226
|
...n?.nodeMapping
|
|
226
227
|
},
|
|
227
228
|
markMapping: {
|
|
228
229
|
bold({ children: e }) {
|
|
229
|
-
return `**${
|
|
230
|
+
return `**${_(e)}**`;
|
|
230
231
|
},
|
|
231
232
|
italic({ children: e, node: t }) {
|
|
232
233
|
let n = !1;
|
|
233
|
-
return t?.marks.some((e) => e.type.name === "bold") && (n = !0), n ? `*${
|
|
234
|
+
return t?.marks.some((e) => e.type.name === "bold") && (n = !0), n ? `*${_(e)}*` : `_${_(e)}_`;
|
|
234
235
|
},
|
|
235
236
|
code({ children: e }) {
|
|
236
|
-
return `\`${
|
|
237
|
+
return `\`${_(e)}\``;
|
|
237
238
|
},
|
|
238
239
|
strike({ children: e }) {
|
|
239
|
-
return `~~${
|
|
240
|
+
return `~~${_(e)}~~`;
|
|
240
241
|
},
|
|
241
242
|
underline({ children: e }) {
|
|
242
|
-
return `<u>${
|
|
243
|
+
return `<u>${_(e)}</u>`;
|
|
243
244
|
},
|
|
244
245
|
subscript({ children: e }) {
|
|
245
|
-
return `<sub>${
|
|
246
|
+
return `<sub>${_(e)}</sub>`;
|
|
246
247
|
},
|
|
247
248
|
superscript({ children: e }) {
|
|
248
|
-
return `<sup>${
|
|
249
|
+
return `<sup>${_(e)}</sup>`;
|
|
249
250
|
},
|
|
250
251
|
link({ mark: e, children: t }) {
|
|
251
|
-
return `[${
|
|
252
|
+
return `[${_(t)}](${e.attrs.href})`;
|
|
252
253
|
},
|
|
253
254
|
highlight({ children: e }) {
|
|
254
|
-
return `==${
|
|
255
|
+
return `==${_(e)}==`;
|
|
255
256
|
},
|
|
256
257
|
...n?.markMapping
|
|
257
258
|
}
|
|
@@ -260,21 +261,21 @@ ${h(e.slice(1))}
|
|
|
260
261
|
}
|
|
261
262
|
//#endregion
|
|
262
263
|
//#region components/RichTextEditor/MarkdownRenderer.js
|
|
263
|
-
var
|
|
264
|
+
var S = (e) => Array.isArray(e) ? e.join("") : e || "", C = (e, t, n) => {
|
|
264
265
|
let r = e.trim();
|
|
265
266
|
return r ? `${e.slice(0, e.length - e.trimStart().length)}${t}${r}${n}${e.slice(e.trimEnd().length)}` : e;
|
|
266
267
|
};
|
|
267
|
-
function
|
|
268
|
-
return
|
|
269
|
-
extensions:
|
|
270
|
-
content:
|
|
268
|
+
function w(n, r) {
|
|
269
|
+
return x({
|
|
270
|
+
extensions: r,
|
|
271
|
+
content: n,
|
|
271
272
|
options: {
|
|
272
273
|
nodeMapping: {
|
|
273
274
|
blockquote({ children: e }) {
|
|
274
|
-
return
|
|
275
|
+
return S(e).trim().split("\n").map((e) => e ? `> ${e}` : ">").join("\n") + "\n";
|
|
275
276
|
},
|
|
276
277
|
codeBlock({ node: e, children: t }) {
|
|
277
|
-
return `\`\`\`${e.attrs?.language || ""}\n${
|
|
278
|
+
return `\`\`\`${e.attrs?.language || ""}\n${S(t)}\n\`\`\`\n`;
|
|
278
279
|
},
|
|
279
280
|
mention({ node: e }) {
|
|
280
281
|
return `<!-- @mention: {"id": "${e.attrs?.id || ""}", "contactKey": "${e.attrs?.contactKey || ""}", "name": "${e.attrs?.name || ""}"} -->`;
|
|
@@ -285,8 +286,11 @@ function S(e, t) {
|
|
|
285
286
|
"slash-commands"({ node: e }) {
|
|
286
287
|
return `/${e.attrs?.command || ""}`;
|
|
287
288
|
},
|
|
288
|
-
emoji({ node:
|
|
289
|
-
|
|
289
|
+
emoji({ node: n }) {
|
|
290
|
+
let r = n.attrs?.code;
|
|
291
|
+
if (!r) return "";
|
|
292
|
+
let i = e(r);
|
|
293
|
+
return i ? t(i.unicode_output) : r;
|
|
290
294
|
},
|
|
291
295
|
variable({ node: e }) {
|
|
292
296
|
return `{{${e.attrs?.id || ""}=${e.attrs?.altText || ""}}}`;
|
|
@@ -294,29 +298,29 @@ function S(e, t) {
|
|
|
294
298
|
},
|
|
295
299
|
markMapping: {
|
|
296
300
|
bold({ children: e }) {
|
|
297
|
-
return
|
|
301
|
+
return C(S(e), "**", "**");
|
|
298
302
|
},
|
|
299
303
|
italic({ children: e }) {
|
|
300
|
-
return
|
|
304
|
+
return C(S(e), "*", "*");
|
|
301
305
|
},
|
|
302
306
|
strike({ children: e }) {
|
|
303
|
-
return
|
|
307
|
+
return C(S(e), "~~", "~~");
|
|
304
308
|
},
|
|
305
309
|
code({ children: e }) {
|
|
306
|
-
return
|
|
310
|
+
return C(S(e), "`", "`");
|
|
307
311
|
},
|
|
308
312
|
link({ mark: e, children: t }) {
|
|
309
|
-
let n =
|
|
313
|
+
let n = S(t), r = e.attrs?.href || "", i = n.trim();
|
|
310
314
|
return `${n.slice(0, n.length - n.trimStart().length)}[${i}](${r})${n.slice(n.trimEnd().length)}`;
|
|
311
315
|
},
|
|
312
316
|
underline({ children: e }) {
|
|
313
|
-
return
|
|
317
|
+
return S(e);
|
|
314
318
|
}
|
|
315
319
|
}
|
|
316
320
|
}
|
|
317
321
|
}).replace(/\n{3,}/g, "\n\n").replace(/^\n+|\n+$/g, "");
|
|
318
322
|
}
|
|
319
323
|
//#endregion
|
|
320
|
-
export {
|
|
324
|
+
export { w as t };
|
|
321
325
|
|
|
322
|
-
//# sourceMappingURL=MarkdownRenderer-
|
|
326
|
+
//# sourceMappingURL=MarkdownRenderer-D3rM2x-1.js.map
|