@frontify/fondue 12.0.0-beta.134 → 12.0.0-beta.135
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/components/RichTextEditor/serializer/markdown/MarkdownToSlate.es.js +3 -3
- package/dist/components/RichTextEditor/serializer/markdown/MarkdownToSlate.es.js.map +1 -1
- package/dist/components/RichTextEditor/serializer/markdown/deserializer/deserialize.d.ts +2 -2
- package/dist/components/RichTextEditor/serializer/markdown/deserializer/deserialize.es.js +30 -28
- package/dist/components/RichTextEditor/serializer/markdown/deserializer/deserialize.es.js.map +1 -1
- package/dist/components/RichTextEditor/serializer/markdown/options.es.js +23 -22
- package/dist/components/RichTextEditor/serializer/markdown/options.es.js.map +1 -1
- package/dist/components/RichTextEditor/serializer/markdown/remarkFondue/extensions/list/index.d.ts +2 -0
- package/dist/components/RichTextEditor/serializer/markdown/remarkFondue/extensions/list/index.es.js +16 -0
- package/dist/components/RichTextEditor/serializer/markdown/remarkFondue/extensions/list/index.es.js.map +1 -0
- package/dist/components/RichTextEditor/serializer/markdown/remarkFondue/extensions/mention/index.d.ts +2 -0
- package/dist/components/RichTextEditor/serializer/markdown/remarkFondue/extensions/mention/index.es.js +52 -0
- package/dist/components/RichTextEditor/serializer/markdown/remarkFondue/extensions/mention/index.es.js.map +1 -0
- package/dist/components/RichTextEditor/serializer/markdown/remarkFondue/extensions/mention/types.d.ts +4 -0
- package/dist/components/RichTextEditor/serializer/markdown/remarkFondue/index.d.ts +2 -0
- package/dist/components/RichTextEditor/serializer/markdown/remarkFondue/index.es.js +12 -0
- package/dist/components/RichTextEditor/serializer/markdown/remarkFondue/index.es.js.map +1 -0
- package/dist/components/RichTextEditor/serializer/markdown/{remarkMention → remarkFondue}/types.d.ts +2 -6
- package/dist/components/RichTextEditor/serializer/markdown/serializer/applyFormattingToBlockNode.es.js +7 -4
- package/dist/components/RichTextEditor/serializer/markdown/serializer/applyFormattingToBlockNode.es.js.map +1 -1
- package/dist/components/RichTextEditor/serializer/markdown/types.d.ts +7 -2
- package/dist/components/RichTextEditor/serializer/markdown/types.es.js +1 -0
- package/dist/components/RichTextEditor/serializer/markdown/types.es.js.map +1 -1
- package/dist/index.cjs.js +20 -19
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.umd.js +24 -23
- package/dist/index.umd.js.map +1 -1
- package/package.json +1 -1
- package/dist/components/RichTextEditor/serializer/markdown/remarkMention/index.d.ts +0 -3
- package/dist/components/RichTextEditor/serializer/markdown/remarkMention/index.es.js +0 -49
- package/dist/components/RichTextEditor/serializer/markdown/remarkMention/index.es.js.map +0 -1
|
@@ -4,13 +4,13 @@ import m from "remark-gfm";
|
|
|
4
4
|
import s from "./deserializer/plugin.es.js";
|
|
5
5
|
import { options as t } from "./options.es.js";
|
|
6
6
|
import { MarkdownTransformer as i } from "./MarkdownTransformer.es.js";
|
|
7
|
-
import p from "./
|
|
8
|
-
class
|
|
7
|
+
import { remarkFondue as p } from "./remarkFondue/index.es.js";
|
|
8
|
+
class w extends i {
|
|
9
9
|
process(r) {
|
|
10
10
|
return o().use(e).use(m).use(p).use(s, t(this.editor)).processSync(r).result;
|
|
11
11
|
}
|
|
12
12
|
}
|
|
13
13
|
export {
|
|
14
|
-
|
|
14
|
+
w as MarkdownToSlate
|
|
15
15
|
};
|
|
16
16
|
//# sourceMappingURL=MarkdownToSlate.es.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MarkdownToSlate.es.js","sources":["../../../../../src/components/RichTextEditor/serializer/markdown/MarkdownToSlate.ts"],"sourcesContent":["/* (c) Copyright Frontify Ltd., all rights reserved. */\n\nimport { unified } from 'unified';\nimport parse from 'remark-parse';\nimport remarkGfm from 'remark-gfm';\nimport deserializer from './deserializer';\nimport { options } from './options';\nimport { MarkdownTransformer } from './MarkdownTransformer';\nimport { NodeType } from './types';\nimport
|
|
1
|
+
{"version":3,"file":"MarkdownToSlate.es.js","sources":["../../../../../src/components/RichTextEditor/serializer/markdown/MarkdownToSlate.ts"],"sourcesContent":["/* (c) Copyright Frontify Ltd., all rights reserved. */\n\nimport { unified } from 'unified';\nimport parse from 'remark-parse';\nimport remarkGfm from 'remark-gfm';\nimport deserializer from './deserializer';\nimport { options } from './options';\nimport { MarkdownTransformer } from './MarkdownTransformer';\nimport { NodeType } from './types';\nimport { remarkFondue } from './remarkFondue';\n\nexport class MarkdownToSlate extends MarkdownTransformer<string, NodeType[]> {\n process(value: string): NodeType[] {\n return unified()\n .use(parse)\n .use(remarkGfm)\n .use(remarkFondue)\n .use(deserializer, options(this.editor))\n .processSync(value).result as NodeType[];\n }\n}\n"],"names":["MarkdownToSlate","MarkdownTransformer","value","unified","parse","remarkGfm","remarkFondue","deserializer","options"],"mappings":";;;;;;;AAWO,MAAMA,UAAwBC,EAAwC;AAAA,EACzE,QAAQC,GAA2B;AACxB,WAAAC,EAAA,EACF,IAAIC,CAAK,EACT,IAAIC,CAAS,EACb,IAAIC,CAAY,EAChB,IAAIC,GAAcC,EAAQ,KAAK,MAAM,CAAC,EACtC,YAAYN,CAAK,EAAE;AAAA,EAC5B;AACJ;"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { BlockQuoteNode, CodeBlockNode, HeadingNode, ImageNode, InputNodeTypes, ItalicNode, LinkNode, ListItemNode, ListNode, MarkdownAstNode, OptionType, ParagraphNode, ThematicBreakNode } from '../types';
|
|
2
|
-
export default function deserialize<T extends InputNodeTypes>(node: MarkdownAstNode, options: OptionType): CodeBlockNode<T> | HeadingNode<T> | ListNode<T> | ListItemNode<T> | ParagraphNode<T> | LinkNode<T> | ImageNode<T> | BlockQuoteNode<T> | ThematicBreakNode<T> | ItalicNode<T> | {
|
|
1
|
+
import { BlockQuoteNode, CodeBlockNode, HeadingNode, ImageNode, InputNodeTypes, ItalicNode, LinkNode, ListItemChildNode, ListItemNode, ListNode, MarkdownAstNode, OptionType, ParagraphNode, ThematicBreakNode } from '../types';
|
|
2
|
+
export default function deserialize<T extends InputNodeTypes>(node: MarkdownAstNode, options: OptionType): CodeBlockNode<T> | HeadingNode<T> | ListNode<T> | ListItemNode<T> | ListItemChildNode<T> | ParagraphNode<T> | LinkNode<T> | ImageNode<T> | BlockQuoteNode<T> | ThematicBreakNode<T> | ItalicNode<T> | {
|
|
3
3
|
type: string;
|
|
4
4
|
category: string;
|
|
5
5
|
id: string;
|
|
@@ -1,19 +1,19 @@
|
|
|
1
|
-
import { MENTION_DESERIALIZE_REGEX as
|
|
2
|
-
function
|
|
1
|
+
import { MENTION_DESERIALIZE_REGEX as m } from "../utils.es.js";
|
|
2
|
+
function g(e, a) {
|
|
3
3
|
var s, u;
|
|
4
|
-
const t =
|
|
5
|
-
let
|
|
6
|
-
switch (o(e.children) && (
|
|
7
|
-
(c) =>
|
|
4
|
+
const t = a == null ? void 0 : a.nodeTypes, { linkDestinationKey: i, imageSourceKey: y, imageCaptionKey: h } = d(a);
|
|
5
|
+
let r = [{ text: "" }];
|
|
6
|
+
switch (o(e.children) && (r = e.children.flatMap(
|
|
7
|
+
(c) => g(
|
|
8
8
|
{
|
|
9
9
|
...c,
|
|
10
10
|
ordered: e.ordered || !1
|
|
11
11
|
},
|
|
12
|
-
|
|
12
|
+
a
|
|
13
13
|
)
|
|
14
14
|
)), e.type) {
|
|
15
15
|
case "mention":
|
|
16
|
-
const c = e.children ? e.children[0].value : void 0, p = c == null ? void 0 : c.match(
|
|
16
|
+
const c = e.children ? e.children[0].value : void 0, p = c == null ? void 0 : c.match(m);
|
|
17
17
|
return {
|
|
18
18
|
type: t.mention,
|
|
19
19
|
category: p[1],
|
|
@@ -23,22 +23,24 @@ function m(e, r) {
|
|
|
23
23
|
case "heading":
|
|
24
24
|
return {
|
|
25
25
|
type: t.heading[e.depth || 1],
|
|
26
|
-
children:
|
|
26
|
+
children: r
|
|
27
27
|
};
|
|
28
28
|
case "list":
|
|
29
29
|
return {
|
|
30
30
|
type: e.ordered ? t.olList : t.ulList,
|
|
31
|
-
children:
|
|
31
|
+
children: r
|
|
32
32
|
};
|
|
33
33
|
case "listItem":
|
|
34
|
-
return { type: t.listItem, children:
|
|
34
|
+
return { type: t.listItem, children: r };
|
|
35
|
+
case "listItemChild":
|
|
36
|
+
return { type: t.listItemChild, children: r };
|
|
35
37
|
case "paragraph":
|
|
36
|
-
return { type: t.paragraph, children:
|
|
38
|
+
return { type: t.paragraph, children: r };
|
|
37
39
|
case "link":
|
|
38
40
|
return {
|
|
39
41
|
type: t.link,
|
|
40
42
|
[i]: e.url,
|
|
41
|
-
children:
|
|
43
|
+
children: r
|
|
42
44
|
};
|
|
43
45
|
case "image":
|
|
44
46
|
return {
|
|
@@ -48,7 +50,7 @@ function m(e, r) {
|
|
|
48
50
|
[h]: e.alt
|
|
49
51
|
};
|
|
50
52
|
case "blockquote":
|
|
51
|
-
return { type: t.blockQuote, children:
|
|
53
|
+
return { type: t.blockQuote, children: r };
|
|
52
54
|
case "code":
|
|
53
55
|
return {
|
|
54
56
|
type: t.codeBlock,
|
|
@@ -64,26 +66,26 @@ function m(e, r) {
|
|
|
64
66
|
case "emphasis":
|
|
65
67
|
return {
|
|
66
68
|
[t.emphasisMark]: !0,
|
|
67
|
-
...l(
|
|
68
|
-
...n(
|
|
69
|
+
...l(r),
|
|
70
|
+
...n(r)
|
|
69
71
|
};
|
|
70
72
|
case "strong":
|
|
71
73
|
return {
|
|
72
74
|
[t.strongMark]: !0,
|
|
73
|
-
...l(
|
|
74
|
-
...n(
|
|
75
|
+
...l(r),
|
|
76
|
+
...n(r)
|
|
75
77
|
};
|
|
76
78
|
case "delete":
|
|
77
79
|
return {
|
|
78
80
|
[t.deleteMark]: !0,
|
|
79
|
-
...l(
|
|
80
|
-
...n(
|
|
81
|
+
...l(r),
|
|
82
|
+
...n(r)
|
|
81
83
|
};
|
|
82
84
|
case "inlineCode":
|
|
83
85
|
return {
|
|
84
86
|
[t.inlineCodeMark]: !0,
|
|
85
87
|
text: e.value,
|
|
86
|
-
...n(
|
|
88
|
+
...n(r)
|
|
87
89
|
};
|
|
88
90
|
case "thematicBreak":
|
|
89
91
|
return {
|
|
@@ -96,16 +98,16 @@ function m(e, r) {
|
|
|
96
98
|
}
|
|
97
99
|
}
|
|
98
100
|
const o = (e) => !!e && Array.isArray(e) && e.length > 0, l = (e) => ({
|
|
99
|
-
text: e.map((
|
|
100
|
-
}), n = (e) => e.reduce((
|
|
101
|
+
text: e.map((a) => a == null ? void 0 : a.text).join("")
|
|
102
|
+
}), n = (e) => e.reduce((a, t) => {
|
|
101
103
|
for (const i of Object.keys(t))
|
|
102
|
-
i === "children" || i === "type" || i === "text" || (
|
|
103
|
-
return
|
|
104
|
+
i === "children" || i === "type" || i === "text" || (a[i] = t[i]);
|
|
105
|
+
return a;
|
|
104
106
|
}, {}), d = (e) => {
|
|
105
|
-
const
|
|
106
|
-
return { linkDestinationKey:
|
|
107
|
+
const a = e.linkDestinationKey ?? "link", t = e.imageSourceKey ?? "link", i = e.imageCaptionKey ?? "caption";
|
|
108
|
+
return { linkDestinationKey: a, imageSourceKey: t, imageCaptionKey: i };
|
|
107
109
|
};
|
|
108
110
|
export {
|
|
109
|
-
|
|
111
|
+
g as default
|
|
110
112
|
};
|
|
111
113
|
//# sourceMappingURL=deserialize.es.js.map
|
package/dist/components/RichTextEditor/serializer/markdown/deserializer/deserialize.es.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deserialize.es.js","sources":["../../../../../../src/components/RichTextEditor/serializer/markdown/deserializer/deserialize.ts"],"sourcesContent":["/* (c) Copyright Frontify Ltd., all rights reserved. */\n\nimport {\n BlockQuoteNode,\n CodeBlockNode,\n DeserializedNode,\n HeadingNode,\n ImageNode,\n InputNodeTypes,\n ItalicNode,\n LinkNode,\n ListItemNode,\n ListNode,\n MarkdownAstNode,\n OptionType,\n ParagraphNode,\n TextNode,\n ThematicBreakNode,\n} from '../types';\nimport { MENTION_DESERIALIZE_REGEX } from '../utils';\n\nexport default function deserialize<T extends InputNodeTypes>(node: MarkdownAstNode, options: OptionType) {\n const types = options?.nodeTypes as InputNodeTypes;\n const { linkDestinationKey, imageSourceKey, imageCaptionKey } = getOptions(options);\n\n let children: Array<DeserializedNode<T>> = [{ text: '' }];\n\n if (hasNodeChildren(node.children)) {\n children = node.children.flatMap((c: MarkdownAstNode) =>\n deserialize(\n {\n ...c,\n ordered: node.ordered || false,\n },\n options,\n ),\n );\n }\n\n switch (node.type) {\n case 'mention':\n const value = node.children ? node.children[0].value : undefined;\n const matches = value?.match(MENTION_DESERIALIZE_REGEX) as RegExpMatchArray;\n return {\n type: types.mention,\n category: matches[1],\n id: matches[2],\n children: [{ text: '' }],\n };\n case 'heading':\n return {\n type: types.heading[node.depth || 1],\n children,\n } as HeadingNode<T>;\n case 'list':\n return {\n type: node.ordered ? types.olList : types.ulList,\n children,\n } as ListNode<T>;\n case 'listItem':\n return { type: types.listItem, children } as ListItemNode<T>;\n case 'paragraph':\n return { type: types.paragraph, children } as ParagraphNode<T>;\n case 'link':\n return {\n type: types.link,\n [linkDestinationKey]: node.url,\n children,\n } as LinkNode<T>;\n case 'image':\n return {\n type: types.image,\n children: [{ text: '' }],\n [imageSourceKey]: node.url,\n [imageCaptionKey]: node.alt,\n } as ImageNode<T>;\n case 'blockquote':\n return { type: types.blockQuote, children } as BlockQuoteNode<T>;\n case 'code':\n return {\n type: types.codeBlock,\n language: node.lang ?? undefined,\n children: [{ text: node.value }],\n } as CodeBlockNode<T>;\n\n case 'html':\n if (node.value?.includes('<br>')) {\n return {\n break: true,\n type: types.paragraph,\n children: [{ text: node.value?.replace(/<br>/g, '') || '' }],\n } as ParagraphNode<T>;\n }\n return { type: 'paragraph', children: [{ text: node.value || '' }] };\n\n case 'emphasis':\n return {\n [types.emphasisMark as string]: true,\n ...forceLeafNode(children as Array<TextNode>),\n ...persistLeafFormats(children as Array<MarkdownAstNode>),\n } as unknown as ItalicNode<T>;\n case 'strong':\n return {\n [types.strongMark as string]: true,\n ...forceLeafNode(children as Array<TextNode>),\n ...persistLeafFormats(children as Array<MarkdownAstNode>),\n };\n case 'delete':\n return {\n [types.deleteMark as string]: true,\n ...forceLeafNode(children as Array<TextNode>),\n ...persistLeafFormats(children as Array<MarkdownAstNode>),\n };\n case 'inlineCode':\n return {\n [types.inlineCodeMark as string]: true,\n text: node.value,\n ...persistLeafFormats(children as Array<MarkdownAstNode>),\n };\n case 'thematicBreak':\n return {\n type: types.thematicBreak,\n children: [{ text: '' }],\n } as ThematicBreakNode<T>;\n\n case 'text':\n default:\n return { text: node.value ?? '' };\n }\n}\n\nconst hasNodeChildren = (children: MarkdownAstNode['children']): children is MarkdownAstNode[] =>\n !!children && Array.isArray(children) && children.length > 0;\n\nconst forceLeafNode = (children: Array<TextNode>) => ({\n text: children.map((k) => k?.text).join(''),\n});\n\n// This function is will take any unknown keys, and bring them up a level\n// allowing leaf nodes to have many different formats at once\n// for example, bold and italic on the same node\nconst persistLeafFormats = (children: Array<MarkdownAstNode>): Omit<MarkdownAstNode, 'children' | 'type' | 'text'> => {\n return children.reduce((acc, node) => {\n for (const key of Object.keys(node) as Array<keyof MarkdownAstNode>) {\n if (key === 'children' || key === 'type' || key === 'text') {\n continue;\n }\n\n acc[key] = node[key];\n }\n\n return acc;\n }, {});\n};\n\nconst getOptions = (options: OptionType) => {\n const linkDestinationKey = options.linkDestinationKey ?? 'link';\n const imageSourceKey = options.imageSourceKey ?? 'link';\n const imageCaptionKey = options.imageCaptionKey ?? 'caption';\n\n return { linkDestinationKey, imageSourceKey, imageCaptionKey };\n};\n"],"names":["deserialize","node","options","types","linkDestinationKey","imageSourceKey","imageCaptionKey","getOptions","children","hasNodeChildren","value","matches","MENTION_DESERIALIZE_REGEX","_a","_b","forceLeafNode","persistLeafFormats","k","acc","key"],"mappings":";
|
|
1
|
+
{"version":3,"file":"deserialize.es.js","sources":["../../../../../../src/components/RichTextEditor/serializer/markdown/deserializer/deserialize.ts"],"sourcesContent":["/* (c) Copyright Frontify Ltd., all rights reserved. */\n\nimport {\n BlockQuoteNode,\n CodeBlockNode,\n DeserializedNode,\n HeadingNode,\n ImageNode,\n InputNodeTypes,\n ItalicNode,\n LinkNode,\n ListItemChildNode,\n ListItemNode,\n ListNode,\n MarkdownAstNode,\n OptionType,\n ParagraphNode,\n TextNode,\n ThematicBreakNode,\n} from '../types';\nimport { MENTION_DESERIALIZE_REGEX } from '../utils';\n\nexport default function deserialize<T extends InputNodeTypes>(node: MarkdownAstNode, options: OptionType) {\n const types = options?.nodeTypes as InputNodeTypes;\n const { linkDestinationKey, imageSourceKey, imageCaptionKey } = getOptions(options);\n\n let children: Array<DeserializedNode<T>> = [{ text: '' }];\n\n if (hasNodeChildren(node.children)) {\n children = node.children.flatMap((c: MarkdownAstNode) =>\n deserialize(\n {\n ...c,\n ordered: node.ordered || false,\n },\n options,\n ),\n );\n }\n\n switch (node.type) {\n case 'mention':\n const value = node.children ? node.children[0].value : undefined;\n const matches = value?.match(MENTION_DESERIALIZE_REGEX) as RegExpMatchArray;\n return {\n type: types.mention,\n category: matches[1],\n id: matches[2],\n children: [{ text: '' }],\n };\n case 'heading':\n return {\n type: types.heading[node.depth || 1],\n children,\n } as HeadingNode<T>;\n case 'list':\n return {\n type: node.ordered ? types.olList : types.ulList,\n children,\n } as ListNode<T>;\n case 'listItem':\n return { type: types.listItem, children } as ListItemNode<T>;\n case 'listItemChild':\n return { type: types.listItemChild, children } as ListItemChildNode<T>;\n case 'paragraph':\n return { type: types.paragraph, children } as ParagraphNode<T>;\n case 'link':\n return {\n type: types.link,\n [linkDestinationKey]: node.url,\n children,\n } as LinkNode<T>;\n case 'image':\n return {\n type: types.image,\n children: [{ text: '' }],\n [imageSourceKey]: node.url,\n [imageCaptionKey]: node.alt,\n } as ImageNode<T>;\n case 'blockquote':\n return { type: types.blockQuote, children } as BlockQuoteNode<T>;\n case 'code':\n return {\n type: types.codeBlock,\n language: node.lang ?? undefined,\n children: [{ text: node.value }],\n } as CodeBlockNode<T>;\n\n case 'html':\n if (node.value?.includes('<br>')) {\n return {\n break: true,\n type: types.paragraph,\n children: [{ text: node.value?.replace(/<br>/g, '') || '' }],\n } as ParagraphNode<T>;\n }\n return { type: 'paragraph', children: [{ text: node.value || '' }] };\n\n case 'emphasis':\n return {\n [types.emphasisMark as string]: true,\n ...forceLeafNode(children as Array<TextNode>),\n ...persistLeafFormats(children as Array<MarkdownAstNode>),\n } as unknown as ItalicNode<T>;\n case 'strong':\n return {\n [types.strongMark as string]: true,\n ...forceLeafNode(children as Array<TextNode>),\n ...persistLeafFormats(children as Array<MarkdownAstNode>),\n };\n case 'delete':\n return {\n [types.deleteMark as string]: true,\n ...forceLeafNode(children as Array<TextNode>),\n ...persistLeafFormats(children as Array<MarkdownAstNode>),\n };\n case 'inlineCode':\n return {\n [types.inlineCodeMark as string]: true,\n text: node.value,\n ...persistLeafFormats(children as Array<MarkdownAstNode>),\n };\n case 'thematicBreak':\n return {\n type: types.thematicBreak,\n children: [{ text: '' }],\n } as ThematicBreakNode<T>;\n\n case 'text':\n default:\n return { text: node.value ?? '' };\n }\n}\n\nconst hasNodeChildren = (children: MarkdownAstNode['children']): children is MarkdownAstNode[] =>\n !!children && Array.isArray(children) && children.length > 0;\n\nconst forceLeafNode = (children: Array<TextNode>) => ({\n text: children.map((k) => k?.text).join(''),\n});\n\n// This function is will take any unknown keys, and bring them up a level\n// allowing leaf nodes to have many different formats at once\n// for example, bold and italic on the same node\nconst persistLeafFormats = (children: Array<MarkdownAstNode>): Omit<MarkdownAstNode, 'children' | 'type' | 'text'> => {\n return children.reduce((acc, node) => {\n for (const key of Object.keys(node) as Array<keyof MarkdownAstNode>) {\n if (key === 'children' || key === 'type' || key === 'text') {\n continue;\n }\n\n acc[key] = node[key];\n }\n\n return acc;\n }, {});\n};\n\nconst getOptions = (options: OptionType) => {\n const linkDestinationKey = options.linkDestinationKey ?? 'link';\n const imageSourceKey = options.imageSourceKey ?? 'link';\n const imageCaptionKey = options.imageCaptionKey ?? 'caption';\n\n return { linkDestinationKey, imageSourceKey, imageCaptionKey };\n};\n"],"names":["deserialize","node","options","types","linkDestinationKey","imageSourceKey","imageCaptionKey","getOptions","children","hasNodeChildren","value","matches","MENTION_DESERIALIZE_REGEX","_a","_b","forceLeafNode","persistLeafFormats","k","acc","key"],"mappings":"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"}
|
|
@@ -1,29 +1,30 @@
|
|
|
1
|
-
import { getPluginType as
|
|
2
|
-
import { TextStyles as
|
|
1
|
+
import { getPluginType as L, ELEMENT_PARAGRAPH as T, ELEMENT_LINK as N, MARK_CODE as _, MARK_BOLD as l, MARK_ITALIC as n, MARK_STRIKETHROUGH as I, ELEMENT_IMAGE as a, ELEMENT_CODE_BLOCK as A, ELEMENT_HR as s, ELEMENT_UL as m, ELEMENT_OL as H, ELEMENT_LI as k, ELEMENT_LIC as p, ELEMENT_H5 as R, ELEMENT_H6 as D, ELEMENT_MENTION as K } from "@udecode/plate";
|
|
2
|
+
import { TextStyles as M } from "../../Plugins/TextStylePlugin/TextStyles/textStyles.es.js";
|
|
3
3
|
const G = (E) => ({
|
|
4
4
|
nodeTypes: {
|
|
5
|
-
paragraph:
|
|
6
|
-
link:
|
|
7
|
-
blockQuote:
|
|
8
|
-
inlineCodeMark:
|
|
9
|
-
strongMark:
|
|
10
|
-
emphasisMark:
|
|
11
|
-
deleteMark:
|
|
12
|
-
image:
|
|
13
|
-
codeBlock:
|
|
14
|
-
thematicBreak:
|
|
15
|
-
ulList:
|
|
16
|
-
olList:
|
|
17
|
-
listItem:
|
|
5
|
+
paragraph: L(E, T),
|
|
6
|
+
link: L(E, N),
|
|
7
|
+
blockQuote: L(E, M.ELEMENT_QUOTE),
|
|
8
|
+
inlineCodeMark: L(E, _),
|
|
9
|
+
strongMark: L(E, l),
|
|
10
|
+
emphasisMark: L(E, n),
|
|
11
|
+
deleteMark: L(E, I),
|
|
12
|
+
image: L(E, a),
|
|
13
|
+
codeBlock: L(E, A),
|
|
14
|
+
thematicBreak: L(E, s),
|
|
15
|
+
ulList: L(E, m),
|
|
16
|
+
olList: L(E, H),
|
|
17
|
+
listItem: L(E, k),
|
|
18
|
+
listItemChild: L(E, p),
|
|
18
19
|
heading: {
|
|
19
|
-
1:
|
|
20
|
-
2:
|
|
21
|
-
3:
|
|
22
|
-
4:
|
|
23
|
-
5:
|
|
24
|
-
6:
|
|
20
|
+
1: L(E, M.ELEMENT_HEADING1),
|
|
21
|
+
2: L(E, M.ELEMENT_HEADING2),
|
|
22
|
+
3: L(E, M.ELEMENT_HEADING3),
|
|
23
|
+
4: L(E, M.ELEMENT_HEADING4),
|
|
24
|
+
5: L(E, R),
|
|
25
|
+
6: L(E, D)
|
|
25
26
|
},
|
|
26
|
-
mention:
|
|
27
|
+
mention: L(E, K)
|
|
27
28
|
},
|
|
28
29
|
linkDestinationKey: "url"
|
|
29
30
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"options.es.js","sources":["../../../../../src/components/RichTextEditor/serializer/markdown/options.ts"],"sourcesContent":["/* (c) Copyright Frontify Ltd., all rights reserved. */\n\nimport { TextStyles } from '@components/RichTextEditor/Plugins/TextStylePlugin/TextStyles';\nimport {\n ELEMENT_CODE_BLOCK,\n ELEMENT_H5,\n ELEMENT_H6,\n ELEMENT_HR,\n ELEMENT_IMAGE,\n ELEMENT_LI,\n ELEMENT_LINK,\n ELEMENT_MENTION,\n ELEMENT_OL,\n ELEMENT_PARAGRAPH,\n ELEMENT_UL,\n MARK_BOLD,\n MARK_CODE,\n MARK_ITALIC,\n MARK_STRIKETHROUGH,\n PlateEditor,\n getPluginType,\n} from '@udecode/plate';\nimport { PartialOptionType } from './types';\n\nexport const options = (editor: PlateEditor): PartialOptionType => ({\n nodeTypes: {\n paragraph: getPluginType(editor, ELEMENT_PARAGRAPH),\n link: getPluginType(editor, ELEMENT_LINK),\n blockQuote: getPluginType(editor, TextStyles.ELEMENT_QUOTE),\n inlineCodeMark: getPluginType(editor, MARK_CODE),\n strongMark: getPluginType(editor, MARK_BOLD),\n emphasisMark: getPluginType(editor, MARK_ITALIC),\n deleteMark: getPluginType(editor, MARK_STRIKETHROUGH),\n image: getPluginType(editor, ELEMENT_IMAGE),\n codeBlock: getPluginType(editor, ELEMENT_CODE_BLOCK),\n thematicBreak: getPluginType(editor, ELEMENT_HR),\n ulList: getPluginType(editor, ELEMENT_UL),\n olList: getPluginType(editor, ELEMENT_OL),\n listItem: getPluginType(editor, ELEMENT_LI),\n heading: {\n 1: getPluginType(editor, TextStyles.ELEMENT_HEADING1),\n 2: getPluginType(editor, TextStyles.ELEMENT_HEADING2),\n 3: getPluginType(editor, TextStyles.ELEMENT_HEADING3),\n 4: getPluginType(editor, TextStyles.ELEMENT_HEADING4),\n 5: getPluginType(editor, ELEMENT_H5),\n 6: getPluginType(editor, ELEMENT_H6),\n },\n mention: getPluginType(editor, ELEMENT_MENTION),\n },\n linkDestinationKey: 'url',\n});\n"],"names":["options","editor","getPluginType","ELEMENT_PARAGRAPH","ELEMENT_LINK","TextStyles","MARK_CODE","MARK_BOLD","MARK_ITALIC","MARK_STRIKETHROUGH","ELEMENT_IMAGE","ELEMENT_CODE_BLOCK","ELEMENT_HR","ELEMENT_UL","ELEMENT_OL","ELEMENT_LI","ELEMENT_H5","ELEMENT_H6","ELEMENT_MENTION"],"mappings":";;
|
|
1
|
+
{"version":3,"file":"options.es.js","sources":["../../../../../src/components/RichTextEditor/serializer/markdown/options.ts"],"sourcesContent":["/* (c) Copyright Frontify Ltd., all rights reserved. */\n\nimport { TextStyles } from '@components/RichTextEditor/Plugins/TextStylePlugin/TextStyles';\nimport {\n ELEMENT_CODE_BLOCK,\n ELEMENT_H5,\n ELEMENT_H6,\n ELEMENT_HR,\n ELEMENT_IMAGE,\n ELEMENT_LI,\n ELEMENT_LIC,\n ELEMENT_LINK,\n ELEMENT_MENTION,\n ELEMENT_OL,\n ELEMENT_PARAGRAPH,\n ELEMENT_UL,\n MARK_BOLD,\n MARK_CODE,\n MARK_ITALIC,\n MARK_STRIKETHROUGH,\n PlateEditor,\n getPluginType,\n} from '@udecode/plate';\nimport { PartialOptionType } from './types';\n\nexport const options = (editor: PlateEditor): PartialOptionType => ({\n nodeTypes: {\n paragraph: getPluginType(editor, ELEMENT_PARAGRAPH),\n link: getPluginType(editor, ELEMENT_LINK),\n blockQuote: getPluginType(editor, TextStyles.ELEMENT_QUOTE),\n inlineCodeMark: getPluginType(editor, MARK_CODE),\n strongMark: getPluginType(editor, MARK_BOLD),\n emphasisMark: getPluginType(editor, MARK_ITALIC),\n deleteMark: getPluginType(editor, MARK_STRIKETHROUGH),\n image: getPluginType(editor, ELEMENT_IMAGE),\n codeBlock: getPluginType(editor, ELEMENT_CODE_BLOCK),\n thematicBreak: getPluginType(editor, ELEMENT_HR),\n ulList: getPluginType(editor, ELEMENT_UL),\n olList: getPluginType(editor, ELEMENT_OL),\n listItem: getPluginType(editor, ELEMENT_LI),\n listItemChild: getPluginType(editor, ELEMENT_LIC),\n heading: {\n 1: getPluginType(editor, TextStyles.ELEMENT_HEADING1),\n 2: getPluginType(editor, TextStyles.ELEMENT_HEADING2),\n 3: getPluginType(editor, TextStyles.ELEMENT_HEADING3),\n 4: getPluginType(editor, TextStyles.ELEMENT_HEADING4),\n 5: getPluginType(editor, ELEMENT_H5),\n 6: getPluginType(editor, ELEMENT_H6),\n },\n mention: getPluginType(editor, ELEMENT_MENTION),\n },\n linkDestinationKey: 'url',\n});\n"],"names":["options","editor","getPluginType","ELEMENT_PARAGRAPH","ELEMENT_LINK","TextStyles","MARK_CODE","MARK_BOLD","MARK_ITALIC","MARK_STRIKETHROUGH","ELEMENT_IMAGE","ELEMENT_CODE_BLOCK","ELEMENT_HR","ELEMENT_UL","ELEMENT_OL","ELEMENT_LI","ELEMENT_LIC","ELEMENT_H5","ELEMENT_H6","ELEMENT_MENTION"],"mappings":";;AAyBa,MAAAA,IAAU,CAACC,OAA4C;AAAA,EAChE,WAAW;AAAA,IACP,WAAWC,EAAcD,GAAQE,CAAiB;AAAA,IAClD,MAAMD,EAAcD,GAAQG,CAAY;AAAA,IACxC,YAAYF,EAAcD,GAAQI,EAAW,aAAa;AAAA,IAC1D,gBAAgBH,EAAcD,GAAQK,CAAS;AAAA,IAC/C,YAAYJ,EAAcD,GAAQM,CAAS;AAAA,IAC3C,cAAcL,EAAcD,GAAQO,CAAW;AAAA,IAC/C,YAAYN,EAAcD,GAAQQ,CAAkB;AAAA,IACpD,OAAOP,EAAcD,GAAQS,CAAa;AAAA,IAC1C,WAAWR,EAAcD,GAAQU,CAAkB;AAAA,IACnD,eAAeT,EAAcD,GAAQW,CAAU;AAAA,IAC/C,QAAQV,EAAcD,GAAQY,CAAU;AAAA,IACxC,QAAQX,EAAcD,GAAQa,CAAU;AAAA,IACxC,UAAUZ,EAAcD,GAAQc,CAAU;AAAA,IAC1C,eAAeb,EAAcD,GAAQe,CAAW;AAAA,IAChD,SAAS;AAAA,MACL,GAAGd,EAAcD,GAAQI,EAAW,gBAAgB;AAAA,MACpD,GAAGH,EAAcD,GAAQI,EAAW,gBAAgB;AAAA,MACpD,GAAGH,EAAcD,GAAQI,EAAW,gBAAgB;AAAA,MACpD,GAAGH,EAAcD,GAAQI,EAAW,gBAAgB;AAAA,MACpD,GAAGH,EAAcD,GAAQgB,CAAU;AAAA,MACnC,GAAGf,EAAcD,GAAQiB,CAAU;AAAA,IACvC;AAAA,IACA,SAAShB,EAAcD,GAAQkB,CAAe;AAAA,EAClD;AAAA,EACA,oBAAoB;AACxB;"}
|
package/dist/components/RichTextEditor/serializer/markdown/remarkFondue/extensions/list/index.es.js
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { visit as s } from "unist-util-visit";
|
|
2
|
+
function a() {
|
|
3
|
+
return r;
|
|
4
|
+
}
|
|
5
|
+
const r = (t) => {
|
|
6
|
+
s(t, "listItem", i);
|
|
7
|
+
function i(o) {
|
|
8
|
+
const { children: e } = o;
|
|
9
|
+
for (const n of e)
|
|
10
|
+
c(n, "paragraph") && f(n);
|
|
11
|
+
}
|
|
12
|
+
}, c = (t, i) => t.type === i, f = (t) => t.type = "listItemChild";
|
|
13
|
+
export {
|
|
14
|
+
a as default
|
|
15
|
+
};
|
|
16
|
+
//# sourceMappingURL=index.es.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.es.js","sources":["../../../../../../../../src/components/RichTextEditor/serializer/markdown/remarkFondue/extensions/list/index.ts"],"sourcesContent":["/* (c) Copyright Frontify Ltd., all rights reserved. */\n\nimport { VisitorResult, visit } from 'unist-util-visit';\nimport { NodeChild, ParagraphNode, RemarkExtension } from '../../types';\n\nexport default function Extension(): RemarkExtension {\n return transformer;\n}\n\nconst transformer = (tree: ParagraphNode) => {\n visit(tree, 'listItem', visitor);\n\n function visitor(node: ParagraphNode): VisitorResult {\n const { children } = node;\n\n for (const child of children) {\n if (!isType(child, 'paragraph')) {\n continue;\n }\n\n changeTypeToListItemChild(child);\n }\n }\n};\n\nconst isType = (node: NodeChild, type: string): boolean => node.type === type;\nconst changeTypeToListItemChild = (node: NodeChild) => (node.type = 'listItemChild');\n"],"names":["Extension","transformer","tree","visit","visitor","node","children","child","isType","changeTypeToListItemChild","type"],"mappings":";AAKA,SAAwBA,IAA6B;AAC1C,SAAAC;AACX;AAEA,MAAMA,IAAc,CAACC,MAAwB;AACnC,EAAAC,EAAAD,GAAM,YAAYE,CAAO;AAE/B,WAASA,EAAQC,GAAoC;AAC3C,UAAA,EAAE,UAAAC,EAAa,IAAAD;AAErB,eAAWE,KAASD;AAChB,MAAKE,EAAOD,GAAO,WAAW,KAI9BE,EAA0BF,CAAK;AAAA,EAEvC;AACJ,GAEMC,IAAS,CAACH,GAAiBK,MAA0BL,EAAK,SAASK,GACnED,IAA4B,CAACJ,MAAqBA,EAAK,OAAO;"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { visit as s } from "unist-util-visit";
|
|
2
|
+
import { MENTION_SERIALIZE_REGEX as h } from "../../../utils.es.js";
|
|
3
|
+
function a() {
|
|
4
|
+
return u;
|
|
5
|
+
}
|
|
6
|
+
const u = (t) => {
|
|
7
|
+
s(t, "paragraph", i);
|
|
8
|
+
function i(e) {
|
|
9
|
+
const { children: r } = e;
|
|
10
|
+
e.children = [];
|
|
11
|
+
for (const n of r) {
|
|
12
|
+
if (!o(n, "text") || !n.value) {
|
|
13
|
+
e.children.push(n);
|
|
14
|
+
continue;
|
|
15
|
+
}
|
|
16
|
+
const l = [...n.value.matchAll(h)];
|
|
17
|
+
if (l === null || l.length === 0) {
|
|
18
|
+
e.children.push(n);
|
|
19
|
+
continue;
|
|
20
|
+
}
|
|
21
|
+
p(l, e, n.value);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
}, o = (t, i) => t[i] !== "" && !!t.value, p = (t, i, e) => {
|
|
25
|
+
t[0].index > 0 && i.children.push({
|
|
26
|
+
type: "text",
|
|
27
|
+
value: e.slice(0, t[0].index)
|
|
28
|
+
});
|
|
29
|
+
for (const [n, l] of t.entries())
|
|
30
|
+
if (i.children.push({
|
|
31
|
+
type: "mention",
|
|
32
|
+
children: [{ type: "text", value: l[0] }]
|
|
33
|
+
}), t.length > n + 1 && e) {
|
|
34
|
+
const c = l.index + l[0].length;
|
|
35
|
+
i.children.push({
|
|
36
|
+
type: "text",
|
|
37
|
+
value: e.slice(c, t[n + 1].index)
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
const r = t[t.length - 1];
|
|
41
|
+
r.index + r[0].length < e.length ? i.children.push({
|
|
42
|
+
type: "text",
|
|
43
|
+
value: e.slice(r.index + r[0].length)
|
|
44
|
+
}) : i.children.push({
|
|
45
|
+
type: "text",
|
|
46
|
+
value: ""
|
|
47
|
+
});
|
|
48
|
+
};
|
|
49
|
+
export {
|
|
50
|
+
a as default
|
|
51
|
+
};
|
|
52
|
+
//# sourceMappingURL=index.es.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.es.js","sources":["../../../../../../../../src/components/RichTextEditor/serializer/markdown/remarkFondue/extensions/mention/index.ts"],"sourcesContent":["/* (c) Copyright Frontify Ltd., all rights reserved. */\n\nimport { VisitorResult, visit } from 'unist-util-visit';\nimport { NodeChild, NodeChildKey, ParagraphNode, RemarkExtension } from '../../types';\nimport { MENTION_SERIALIZE_REGEX } from '../../../utils';\nimport { RegExpMatchArray } from './types';\n\nexport default function Extension(): RemarkExtension {\n return transformer;\n}\n\nconst transformer = (tree: ParagraphNode) => {\n visit(tree, 'paragraph', visitor);\n\n function visitor(node: ParagraphNode): VisitorResult {\n const { children } = node;\n node.children = [];\n\n for (const child of children) {\n if (!is(child, 'text') || !child.value) {\n node.children.push(child);\n continue;\n }\n\n const matches = [...child.value.matchAll(MENTION_SERIALIZE_REGEX)] as RegExpMatchArray[];\n\n if (matches === null || matches.length === 0) {\n node.children.push(child);\n continue;\n }\n\n createNodes(matches, node, child.value);\n }\n }\n};\n\nconst is = (node: NodeChild, key: NodeChildKey): boolean => node[key] !== '' && !!node.value;\n\nconst createNodes = (matches: RegExpMatchArray[], node: ParagraphNode, value: string) => {\n if (matches[0].index > 0) {\n node.children.push({\n type: 'text',\n value: value.slice(0, matches[0].index),\n });\n }\n\n for (const [index, match] of matches.entries()) {\n node.children.push({\n type: 'mention',\n children: [{ type: 'text', value: match[0] }],\n });\n\n if (matches.length > index + 1 && value) {\n const startAt = match.index + match[0].length;\n node.children.push({\n type: 'text',\n value: value.slice(startAt, matches[index + 1].index),\n });\n }\n }\n\n const lastMatch = matches[matches.length - 1];\n\n if (lastMatch.index + lastMatch[0].length < value.length) {\n node.children.push({\n type: 'text',\n value: value.slice(lastMatch.index + lastMatch[0].length),\n });\n } else {\n node.children.push({\n type: 'text',\n value: '',\n });\n }\n};\n"],"names":["Extension","transformer","tree","visit","visitor","node","children","child","is","matches","MENTION_SERIALIZE_REGEX","createNodes","key","value","index","match","startAt","lastMatch"],"mappings":";;AAOA,SAAwBA,IAA6B;AAC1C,SAAAC;AACX;AAEA,MAAMA,IAAc,CAACC,MAAwB;AACnC,EAAAC,EAAAD,GAAM,aAAaE,CAAO;AAEhC,WAASA,EAAQC,GAAoC;AAC3C,UAAA,EAAE,UAAAC,EAAa,IAAAD;AACrB,IAAAA,EAAK,WAAW;AAEhB,eAAWE,KAASD,GAAU;AAC1B,UAAI,CAACE,EAAGD,GAAO,MAAM,KAAK,CAACA,EAAM,OAAO;AAC/B,QAAAF,EAAA,SAAS,KAAKE,CAAK;AACxB;AAAA,MACJ;AAEA,YAAME,IAAU,CAAC,GAAGF,EAAM,MAAM,SAASG,CAAuB,CAAC;AAEjE,UAAID,MAAY,QAAQA,EAAQ,WAAW,GAAG;AACrC,QAAAJ,EAAA,SAAS,KAAKE,CAAK;AACxB;AAAA,MACJ;AAEY,MAAAI,EAAAF,GAASJ,GAAME,EAAM,KAAK;AAAA,IAC1C;AAAA,EACJ;AACJ,GAEMC,IAAK,CAACH,GAAiBO,MAA+BP,EAAKO,CAAG,MAAM,MAAM,CAAC,CAACP,EAAK,OAEjFM,IAAc,CAACF,GAA6BJ,GAAqBQ,MAAkB;AACrF,EAAIJ,EAAQ,CAAC,EAAE,QAAQ,KACnBJ,EAAK,SAAS,KAAK;AAAA,IACf,MAAM;AAAA,IACN,OAAOQ,EAAM,MAAM,GAAGJ,EAAQ,CAAC,EAAE,KAAK;AAAA,EAAA,CACzC;AAGL,aAAW,CAACK,GAAOC,CAAK,KAAKN,EAAQ;AAMjC,QALAJ,EAAK,SAAS,KAAK;AAAA,MACf,MAAM;AAAA,MACN,UAAU,CAAC,EAAE,MAAM,QAAQ,OAAOU,EAAM,CAAC,GAAG;AAAA,IAAA,CAC/C,GAEGN,EAAQ,SAASK,IAAQ,KAAKD,GAAO;AACrC,YAAMG,IAAUD,EAAM,QAAQA,EAAM,CAAC,EAAE;AACvC,MAAAV,EAAK,SAAS,KAAK;AAAA,QACf,MAAM;AAAA,QACN,OAAOQ,EAAM,MAAMG,GAASP,EAAQK,IAAQ,CAAC,EAAE,KAAK;AAAA,MAAA,CACvD;AAAA,IACL;AAGJ,QAAMG,IAAYR,EAAQA,EAAQ,SAAS,CAAC;AAE5C,EAAIQ,EAAU,QAAQA,EAAU,CAAC,EAAE,SAASJ,EAAM,SAC9CR,EAAK,SAAS,KAAK;AAAA,IACf,MAAM;AAAA,IACN,OAAOQ,EAAM,MAAMI,EAAU,QAAQA,EAAU,CAAC,EAAE,MAAM;AAAA,EAAA,CAC3D,IAEDZ,EAAK,SAAS,KAAK;AAAA,IACf,MAAM;AAAA,IACN,OAAO;AAAA,EAAA,CACV;AAET;"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import e from "./extensions/mention/index.es.js";
|
|
2
|
+
import s from "./extensions/list/index.es.js";
|
|
3
|
+
const r = (o) => {
|
|
4
|
+
const n = /* @__PURE__ */ new Map();
|
|
5
|
+
n.set("mentionExtension", e()), n.set("listExtension", s());
|
|
6
|
+
for (const t of n.values())
|
|
7
|
+
t(o);
|
|
8
|
+
}, x = () => r;
|
|
9
|
+
export {
|
|
10
|
+
x as remarkFondue
|
|
11
|
+
};
|
|
12
|
+
//# sourceMappingURL=index.es.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.es.js","sources":["../../../../../../src/components/RichTextEditor/serializer/markdown/remarkFondue/index.ts"],"sourcesContent":["/* (c) Copyright Frontify Ltd., all rights reserved. */\n\nimport { ParagraphNode, RemarkExtension } from './types';\nimport remarkMention from './extensions/mention';\nimport remarkList from './extensions/list';\n\nconst transformer = (tree: ParagraphNode) => {\n const extensions = new Map<string, RemarkExtension>();\n\n extensions.set('mentionExtension', remarkMention());\n extensions.set('listExtension', remarkList());\n\n for (const extension of extensions.values()) {\n extension(tree);\n }\n};\n\nexport const remarkFondue = () => transformer;\n"],"names":["transformer","tree","extensions","remarkMention","remarkList","extension","remarkFondue"],"mappings":";;AAMA,MAAMA,IAAc,CAACC,MAAwB;AACnC,QAAAC,wBAAiB;AAEZ,EAAAA,EAAA,IAAI,oBAAoBC,EAAe,CAAA,GACvCD,EAAA,IAAI,iBAAiBE,EAAY,CAAA;AAEjC,aAAAC,KAAaH,EAAW;AAC/B,IAAAG,EAAUJ,CAAI;AAEtB,GAEaK,IAAe,MAAMN;"}
|
package/dist/components/RichTextEditor/serializer/markdown/{remarkMention → remarkFondue}/types.d.ts
RENAMED
|
@@ -4,13 +4,9 @@ export type NodeChild = {
|
|
|
4
4
|
text?: string;
|
|
5
5
|
children?: NodeChild[];
|
|
6
6
|
};
|
|
7
|
-
export type NodeChildKey = keyof NodeChild;
|
|
8
7
|
export type ParagraphNode = {
|
|
9
8
|
type: string;
|
|
10
9
|
children: NodeChild[];
|
|
11
10
|
};
|
|
12
|
-
export type
|
|
13
|
-
export type
|
|
14
|
-
index: number;
|
|
15
|
-
input: string;
|
|
16
|
-
};
|
|
11
|
+
export type NodeChildKey = keyof NodeChild;
|
|
12
|
+
export type RemarkExtension = (tree: ParagraphNode) => void;
|
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
import i from "escape-html";
|
|
2
2
|
import { isLeafNode as p } from "./isLeafNode.es.js";
|
|
3
|
-
const u = (o) => `@[${o.category}:${o.id}]`,
|
|
3
|
+
const u = (o) => `@[${o.category}:${o.id}]`, l = (o) => `${o}
|
|
4
|
+
`, g = (o, t, s, r) => {
|
|
4
5
|
const a = s && s.parentType === o.olList, c = s.children.length === 1 && p(s.children[0]);
|
|
5
6
|
let e = "";
|
|
6
7
|
for (let n = 0; r > n; n++)
|
|
7
8
|
a ? e += " " : e += " ";
|
|
8
9
|
return `${e}${a ? "1." : "-"} ${t}${c ? `
|
|
9
10
|
` : ""}`;
|
|
10
|
-
},
|
|
11
|
+
}, m = (o, t, s, r) => (r === t.codeBlock || s === t.codeBlock || (o = i(o)), o), L = (o, t, s, r, a, c) => {
|
|
11
12
|
const e = o.nodeTypes;
|
|
12
13
|
switch (a) {
|
|
13
14
|
case e.heading[1]:
|
|
@@ -49,6 +50,8 @@ ${t}
|
|
|
49
50
|
`;
|
|
50
51
|
case e.listItem:
|
|
51
52
|
return g(e, t, s, r);
|
|
53
|
+
case e.listItemChild:
|
|
54
|
+
return l(t);
|
|
52
55
|
case e.paragraph:
|
|
53
56
|
return `${t}
|
|
54
57
|
`;
|
|
@@ -60,10 +63,10 @@ ${t}
|
|
|
60
63
|
case e.mention:
|
|
61
64
|
return u(s);
|
|
62
65
|
default:
|
|
63
|
-
return
|
|
66
|
+
return m(t, e, a, c);
|
|
64
67
|
}
|
|
65
68
|
};
|
|
66
69
|
export {
|
|
67
|
-
|
|
70
|
+
L as applyFormattingToBlockNode
|
|
68
71
|
};
|
|
69
72
|
//# sourceMappingURL=applyFormattingToBlockNode.es.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"applyFormattingToBlockNode.es.js","sources":["../../../../../../src/components/RichTextEditor/serializer/markdown/serializer/applyFormattingToBlockNode.ts"],"sourcesContent":["/* (c) Copyright Frontify Ltd., all rights reserved. */\n\nimport escapeHtml from 'escape-html';\nimport { BlockType, InputNodeTypes, NodeType, OptionType } from '../types';\nimport { isLeafNode } from './isLeafNode';\n\nconst processMentionNode = (chunk: BlockType) => `@[${chunk.category}:${chunk.id}]`;\n\nconst processListItemNode = (\n nodeTypes: InputNodeTypes,\n children: string,\n chunk: NodeType,\n listDepth: number,\n): string => {\n const isOL = chunk && chunk.parentType === nodeTypes.olList;\n const treatAsLeaf = (chunk as BlockType).children.length === 1 && isLeafNode((chunk as BlockType).children[0]);\n\n let spacer = '';\n for (let k = 0; listDepth > k; k++) {\n if (isOL) {\n // https://github.com/remarkjs/remark-react/issues/65\n spacer += ' ';\n } else {\n spacer += ' ';\n }\n }\n return `${spacer}${isOL ? '1.' : '-'} ${children}${treatAsLeaf ? '\\n' : ''}`;\n};\n\nconst shouldEscapeNode = (children: string, nodeTypes: InputNodeTypes, type?: string, parentType?: string) => {\n // don't escape if: code block, image, img\n const isCodeBlock = parentType === nodeTypes.codeBlock || type === nodeTypes.codeBlock;\n if (!isCodeBlock) {\n children = escapeHtml(children);\n }\n\n return children;\n};\n\nexport const applyFormattingToBlockNode = (\n options: OptionType,\n children: string,\n chunk: NodeType,\n listDepth: number,\n type?: string,\n parentType?: string,\n) => {\n const nodeTypes = options.nodeTypes as InputNodeTypes;\n\n switch (type) {\n case nodeTypes.heading[1]:\n return `# ${children}\\n`;\n case nodeTypes.heading[2]:\n return `## ${children}\\n`;\n case nodeTypes.heading[3]:\n return `### ${children}\\n`;\n case nodeTypes.heading[4]:\n return `#### ${children}\\n`;\n case nodeTypes.heading[5]:\n return `##### ${children}\\n`;\n case nodeTypes.heading[6]:\n return `###### ${children}\\n`;\n\n case nodeTypes.blockQuote:\n /**\n * For some reason, marked is parsing blockquote w/ one new line as\n * continued blockquote, so adding two new lines ensures that doesn't\n * happen\n */\n return `> ${children}\\n`;\n\n case nodeTypes.codeBlock:\n return `\\`\\`\\`${(chunk as BlockType).language || ''}\\n${children}\\n\\`\\`\\`\\n`;\n\n case nodeTypes.link:\n const linkUrl = (chunk as BlockType).url ?? '';\n return `[${children}](${linkUrl})`;\n\n case nodeTypes.image:\n const imageUrl = (chunk as BlockType).link ?? '';\n return ``;\n\n case nodeTypes.ulList:\n case nodeTypes.olList:\n return `\\n${children}\\n`;\n\n case nodeTypes.listItem:\n return processListItemNode(nodeTypes, children, chunk, listDepth);\n\n case nodeTypes.paragraph:\n return `${children}\\n`;\n\n case nodeTypes.thematicBreak:\n return `\\n---${children}\\n\\n`;\n\n case nodeTypes.mention:\n return processMentionNode(chunk as BlockType);\n\n default:\n return shouldEscapeNode(children, nodeTypes, type, parentType);\n }\n};\n"],"names":["processMentionNode","chunk","
|
|
1
|
+
{"version":3,"file":"applyFormattingToBlockNode.es.js","sources":["../../../../../../src/components/RichTextEditor/serializer/markdown/serializer/applyFormattingToBlockNode.ts"],"sourcesContent":["/* (c) Copyright Frontify Ltd., all rights reserved. */\n\nimport escapeHtml from 'escape-html';\nimport { BlockType, InputNodeTypes, NodeType, OptionType } from '../types';\nimport { isLeafNode } from './isLeafNode';\n\nconst processMentionNode = (chunk: BlockType) => `@[${chunk.category}:${chunk.id}]`;\n\nconst processListItemChildNode = (children: string) => `${children}\\n`;\n\nconst processListItemNode = (\n nodeTypes: InputNodeTypes,\n children: string,\n chunk: NodeType,\n listDepth: number,\n): string => {\n const isOL = chunk && chunk.parentType === nodeTypes.olList;\n const treatAsLeaf = (chunk as BlockType).children.length === 1 && isLeafNode((chunk as BlockType).children[0]);\n\n let spacer = '';\n for (let k = 0; listDepth > k; k++) {\n if (isOL) {\n // https://github.com/remarkjs/remark-react/issues/65\n spacer += ' ';\n } else {\n spacer += ' ';\n }\n }\n return `${spacer}${isOL ? '1.' : '-'} ${children}${treatAsLeaf ? '\\n' : ''}`;\n};\n\nconst shouldEscapeNode = (children: string, nodeTypes: InputNodeTypes, type?: string, parentType?: string) => {\n // don't escape if: code block, image, img\n const isCodeBlock = parentType === nodeTypes.codeBlock || type === nodeTypes.codeBlock;\n if (!isCodeBlock) {\n children = escapeHtml(children);\n }\n\n return children;\n};\n\nexport const applyFormattingToBlockNode = (\n options: OptionType,\n children: string,\n chunk: NodeType,\n listDepth: number,\n type?: string,\n parentType?: string,\n) => {\n const nodeTypes = options.nodeTypes as InputNodeTypes;\n\n switch (type) {\n case nodeTypes.heading[1]:\n return `# ${children}\\n`;\n case nodeTypes.heading[2]:\n return `## ${children}\\n`;\n case nodeTypes.heading[3]:\n return `### ${children}\\n`;\n case nodeTypes.heading[4]:\n return `#### ${children}\\n`;\n case nodeTypes.heading[5]:\n return `##### ${children}\\n`;\n case nodeTypes.heading[6]:\n return `###### ${children}\\n`;\n\n case nodeTypes.blockQuote:\n /**\n * For some reason, marked is parsing blockquote w/ one new line as\n * continued blockquote, so adding two new lines ensures that doesn't\n * happen\n */\n return `> ${children}\\n`;\n\n case nodeTypes.codeBlock:\n return `\\`\\`\\`${(chunk as BlockType).language || ''}\\n${children}\\n\\`\\`\\`\\n`;\n\n case nodeTypes.link:\n const linkUrl = (chunk as BlockType).url ?? '';\n return `[${children}](${linkUrl})`;\n\n case nodeTypes.image:\n const imageUrl = (chunk as BlockType).link ?? '';\n return ``;\n\n case nodeTypes.ulList:\n case nodeTypes.olList:\n return `\\n${children}\\n`;\n\n case nodeTypes.listItem:\n return processListItemNode(nodeTypes, children, chunk, listDepth);\n\n case nodeTypes.listItemChild:\n return processListItemChildNode(children);\n\n case nodeTypes.paragraph:\n return `${children}\\n`;\n\n case nodeTypes.thematicBreak:\n return `\\n---${children}\\n\\n`;\n\n case nodeTypes.mention:\n return processMentionNode(chunk as BlockType);\n\n default:\n return shouldEscapeNode(children, nodeTypes, type, parentType);\n }\n};\n"],"names":["processMentionNode","chunk","processListItemChildNode","children","processListItemNode","nodeTypes","listDepth","isOL","treatAsLeaf","isLeafNode","spacer","k","shouldEscapeNode","type","parentType","escapeHtml","applyFormattingToBlockNode","options","linkUrl","imageUrl"],"mappings":";;AAMA,MAAMA,IAAqB,CAACC,MAAqB,KAAKA,EAAM,YAAYA,EAAM,OAExEC,IAA2B,CAACC,MAAqB,GAAGA;AAAA,GAEpDC,IAAsB,CACxBC,GACAF,GACAF,GACAK,MACS;AACT,QAAMC,IAAON,KAASA,EAAM,eAAeI,EAAU,QAC/CG,IAAeP,EAAoB,SAAS,WAAW,KAAKQ,EAAYR,EAAoB,SAAS,CAAC,CAAC;AAE7G,MAAIS,IAAS;AACb,WAASC,IAAI,GAAGL,IAAYK,GAAGA;AAC3B,IAAIJ,IAEUG,KAAA,QAEAA,KAAA;AAGlB,SAAO,GAAGA,IAASH,IAAO,OAAO,OAAOJ,IAAWK,IAAc;AAAA,IAAO;AAC5E,GAEMI,IAAmB,CAACT,GAAkBE,GAA2BQ,GAAeC,OAE9DA,MAAeT,EAAU,aAAaQ,MAASR,EAAU,cAEzEF,IAAWY,EAAWZ,CAAQ,IAG3BA,IAGEa,IAA6B,CACtCC,GACAd,GACAF,GACAK,GACAO,GACAC,MACC;AACD,QAAMT,IAAYY,EAAQ;AAE1B,UAAQJ,GAAM;AAAA,IACV,KAAKR,EAAU,QAAQ,CAAC;AACpB,aAAO,KAAKF;AAAA;AAAA,IAChB,KAAKE,EAAU,QAAQ,CAAC;AACpB,aAAO,MAAMF;AAAA;AAAA,IACjB,KAAKE,EAAU,QAAQ,CAAC;AACpB,aAAO,OAAOF;AAAA;AAAA,IAClB,KAAKE,EAAU,QAAQ,CAAC;AACpB,aAAO,QAAQF;AAAA;AAAA,IACnB,KAAKE,EAAU,QAAQ,CAAC;AACpB,aAAO,SAASF;AAAA;AAAA,IACpB,KAAKE,EAAU,QAAQ,CAAC;AACpB,aAAO,UAAUF;AAAA;AAAA,IAErB,KAAKE,EAAU;AAMX,aAAO,KAAKF;AAAA;AAAA,IAEhB,KAAKE,EAAU;AACJ,aAAA,SAAUJ,EAAoB,YAAY;AAAA,EAAOE;AAAA;AAAA;AAAA,IAE5D,KAAKE,EAAU;AACL,YAAAa,IAAWjB,EAAoB,OAAO;AAC5C,aAAO,IAAIE,MAAae;AAAA,IAE5B,KAAKb,EAAU;AACL,YAAAc,IAAYlB,EAAoB,QAAQ;AACvC,aAAA,KAAMA,EAAoB,YAAYkB;AAAA,IAEjD,KAAKd,EAAU;AAAA,IACf,KAAKA,EAAU;AACJ,aAAA;AAAA,EAAKF;AAAA;AAAA,IAEhB,KAAKE,EAAU;AACX,aAAOD,EAAoBC,GAAWF,GAAUF,GAAOK,CAAS;AAAA,IAEpE,KAAKD,EAAU;AACX,aAAOH,EAAyBC,CAAQ;AAAA,IAE5C,KAAKE,EAAU;AACX,aAAO,GAAGF;AAAA;AAAA,IAEd,KAAKE,EAAU;AACJ,aAAA;AAAA,KAAQF;AAAA;AAAA;AAAA,IAEnB,KAAKE,EAAU;AACX,aAAOL,EAAmBC,CAAkB;AAAA,IAEhD;AACI,aAAOW,EAAiBT,GAAUE,GAAWQ,GAAMC,CAAU;AAAA,EACrE;AACJ;"}
|
|
@@ -6,6 +6,7 @@ export type InputNodeTypes = {
|
|
|
6
6
|
ulList: string;
|
|
7
7
|
olList: string;
|
|
8
8
|
listItem: string;
|
|
9
|
+
listItemChild: string;
|
|
9
10
|
heading: {
|
|
10
11
|
1: string;
|
|
11
12
|
2: string;
|
|
@@ -22,7 +23,7 @@ export type InputNodeTypes = {
|
|
|
22
23
|
image: string;
|
|
23
24
|
mention: string;
|
|
24
25
|
};
|
|
25
|
-
export type MarkdownAstNodeType = 'paragraph' | 'heading' | 'list' | 'listItem' | 'link' | 'image' | 'blockquote' | 'code' | 'html' | 'emphasis' | 'strong' | 'delete' | 'inlineCode' | 'thematicBreak' | 'text' | 'mention';
|
|
26
|
+
export type MarkdownAstNodeType = 'paragraph' | 'heading' | 'list' | 'listItem' | 'listItemChild' | 'link' | 'image' | 'blockquote' | 'code' | 'html' | 'emphasis' | 'strong' | 'delete' | 'inlineCode' | 'thematicBreak' | 'text' | 'mention';
|
|
26
27
|
export declare const defaultNodeTypes: InputNodeTypes;
|
|
27
28
|
export type NodeType = BlockType | LeafType;
|
|
28
29
|
export type LeafType = {
|
|
@@ -92,6 +93,10 @@ export type ListItemNode<T extends InputNodeTypes> = {
|
|
|
92
93
|
type: T['listItem'];
|
|
93
94
|
children: Array<DeserializedNode<T>>;
|
|
94
95
|
};
|
|
96
|
+
export type ListItemChildNode<T extends InputNodeTypes> = {
|
|
97
|
+
type: T['listItemChild'];
|
|
98
|
+
children: Array<DeserializedNode<T>>;
|
|
99
|
+
};
|
|
95
100
|
export type ParagraphNode<T extends InputNodeTypes> = {
|
|
96
101
|
type: T['paragraph'];
|
|
97
102
|
break?: true;
|
|
@@ -137,4 +142,4 @@ export type InlineCodeNode = {
|
|
|
137
142
|
code: true;
|
|
138
143
|
text: string | undefined;
|
|
139
144
|
};
|
|
140
|
-
export type DeserializedNode<T extends InputNodeTypes> = CodeBlockNode<T> | HeadingNode<T> | ListNode<T> | ListItemNode<T> | ParagraphNode<T> | LinkNode<T> | ImageNode<T> | BlockQuoteNode<T> | InlineCodeMarkNode<T> | ThematicBreakNode<T> | ItalicNode<T> | BoldNode | StrikeThoughNode | InlineCodeNode | TextNode;
|
|
145
|
+
export type DeserializedNode<T extends InputNodeTypes> = CodeBlockNode<T> | HeadingNode<T> | ListNode<T> | ListItemNode<T> | ListItemChildNode<T> | ParagraphNode<T> | LinkNode<T> | ImageNode<T> | BlockQuoteNode<T> | InlineCodeMarkNode<T> | ThematicBreakNode<T> | ItalicNode<T> | BoldNode | StrikeThoughNode | InlineCodeNode | TextNode;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.es.js","sources":["../../../../../src/components/RichTextEditor/serializer/markdown/types.ts"],"sourcesContent":["/* (c) Copyright Frontify Ltd., all rights reserved. */\n\nexport type InputNodeTypes = {\n paragraph: string;\n blockQuote: string;\n codeBlock: string;\n link: string;\n ulList: string;\n olList: string;\n listItem: string;\n heading: {\n 1: string;\n 2: string;\n 3: string;\n 4: string;\n 5: string;\n 6: string;\n };\n emphasisMark: string;\n strongMark: string;\n deleteMark: string;\n inlineCodeMark: string;\n thematicBreak: string;\n image: string;\n mention: string;\n};\n\nexport type MarkdownAstNodeType =\n | 'paragraph'\n | 'heading'\n | 'list'\n | 'listItem'\n | 'link'\n | 'image'\n | 'blockquote'\n | 'code'\n | 'html'\n | 'emphasis'\n | 'strong'\n | 'delete'\n | 'inlineCode'\n | 'thematicBreak'\n | 'text'\n | 'mention';\n\nexport const defaultNodeTypes: InputNodeTypes = {\n paragraph: 'paragraph',\n blockQuote: 'block_quote',\n codeBlock: 'code_block',\n link: 'link',\n ulList: 'ul_list',\n olList: 'ol_list',\n listItem: 'list_item',\n heading: {\n 1: 'heading_one',\n 2: 'heading_two',\n 3: 'heading_three',\n 4: 'heading_four',\n 5: 'heading_five',\n 6: 'heading_six',\n },\n emphasisMark: 'italic',\n strongMark: 'bold',\n deleteMark: 'strikethrough',\n inlineCodeMark: 'code',\n thematicBreak: 'thematic_break',\n image: 'image',\n mention: 'mention',\n};\n\nexport type NodeType = BlockType | LeafType;\n\nexport type LeafType = {\n text: string;\n strikethrough?: boolean;\n bold?: boolean;\n italic?: boolean;\n code?: boolean;\n parentType?: string;\n};\n\nexport type BlockType = {\n type: string;\n children: NodeType[];\n parentType?: string;\n caption?: string;\n language?: string;\n break?: boolean;\n link?: string;\n url?: string;\n id?: string;\n category?: string;\n};\n\nexport type RecursivePartial<T> = {\n [P in keyof T]?: RecursivePartial<T[P]>;\n};\n\nexport type OptionType<T extends InputNodeTypes = InputNodeTypes> = {\n nodeTypes: RecursivePartial<T>;\n linkDestinationKey: string;\n ignoreParagraphNewline: boolean;\n listDepth: number;\n imageSourceKey?: string;\n imageCaptionKey?: string;\n};\n\nexport type PartialOptionType<T extends OptionType = OptionType> = Partial<T>;\n\nexport type MarkdownAstNode = {\n type?: MarkdownAstNodeType;\n ordered?: boolean;\n value?: string;\n text?: string;\n children?: Array<MarkdownAstNode>;\n depth?: 1 | 2 | 3 | 4 | 5 | 6;\n url?: string;\n alt?: string;\n lang?: string;\n // Markdown Ast metadata\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n position?: any;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n spread?: any;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n checked?: any;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n indent?: any;\n};\n\nexport type TextNode = { text?: string };\n\nexport type CodeBlockNode<T extends InputNodeTypes> = {\n type: T['codeBlock'];\n language: string | undefined;\n children: Array<TextNode>;\n};\n\nexport type HeadingNode<T extends InputNodeTypes> = {\n type: T['heading'][1] | T['heading'][2] | T['heading'][3] | T['heading'][4] | T['heading'][5] | T['heading'][6];\n children: Array<DeserializedNode<T>>;\n};\n\nexport type ListNode<T extends InputNodeTypes> = {\n type: T['olList'] | T['ulList'];\n children: Array<DeserializedNode<T>>;\n};\n\nexport type ListItemNode<T extends InputNodeTypes> = {\n type: T['listItem'];\n children: Array<DeserializedNode<T>>;\n};\n\nexport type ParagraphNode<T extends InputNodeTypes> = {\n type: T['paragraph'];\n break?: true;\n children: Array<DeserializedNode<T>>;\n};\n\nexport type LinkNode<T extends InputNodeTypes> = {\n type: T['link'];\n children: Array<DeserializedNode<T>>;\n [urlKey: string]: string | undefined | Array<DeserializedNode<T>>;\n};\n\nexport type ImageNode<T extends InputNodeTypes> = {\n type: T['image'];\n children: Array<DeserializedNode<T>>;\n [sourceOrCaptionKey: string]: string | undefined | Array<DeserializedNode<T>>;\n};\n\nexport type BlockQuoteNode<T extends InputNodeTypes> = {\n type: T['blockQuote'];\n children: Array<DeserializedNode<T>>;\n};\n\nexport type InlineCodeMarkNode<T extends InputNodeTypes> = {\n type: T['inlineCodeMark'];\n children: Array<TextNode>;\n language: string | undefined;\n};\n\nexport type ThematicBreakNode<T extends InputNodeTypes> = {\n type: T['thematicBreak'];\n children: Array<DeserializedNode<T>>;\n};\n\nexport type ItalicNode<T extends InputNodeTypes> = {\n [K in T['emphasisMark']]: true;\n} & {\n children: TextNode;\n};\n\nexport type BoldNode = {\n bold: true;\n children: TextNode;\n};\n\nexport type StrikeThoughNode = {\n strikethrough: true;\n children: TextNode;\n};\n\nexport type InlineCodeNode = {\n code: true;\n text: string | undefined;\n};\n\nexport type DeserializedNode<T extends InputNodeTypes> =\n | CodeBlockNode<T>\n | HeadingNode<T>\n | ListNode<T>\n | ListItemNode<T>\n | ParagraphNode<T>\n | LinkNode<T>\n | ImageNode<T>\n | BlockQuoteNode<T>\n | InlineCodeMarkNode<T>\n | ThematicBreakNode<T>\n | ItalicNode<T>\n | BoldNode\n | StrikeThoughNode\n | InlineCodeNode\n | TextNode;\n"],"names":["defaultNodeTypes"],"mappings":"
|
|
1
|
+
{"version":3,"file":"types.es.js","sources":["../../../../../src/components/RichTextEditor/serializer/markdown/types.ts"],"sourcesContent":["/* (c) Copyright Frontify Ltd., all rights reserved. */\n\nexport type InputNodeTypes = {\n paragraph: string;\n blockQuote: string;\n codeBlock: string;\n link: string;\n ulList: string;\n olList: string;\n listItem: string;\n listItemChild: string;\n heading: {\n 1: string;\n 2: string;\n 3: string;\n 4: string;\n 5: string;\n 6: string;\n };\n emphasisMark: string;\n strongMark: string;\n deleteMark: string;\n inlineCodeMark: string;\n thematicBreak: string;\n image: string;\n mention: string;\n};\n\nexport type MarkdownAstNodeType =\n | 'paragraph'\n | 'heading'\n | 'list'\n | 'listItem'\n | 'listItemChild'\n | 'link'\n | 'image'\n | 'blockquote'\n | 'code'\n | 'html'\n | 'emphasis'\n | 'strong'\n | 'delete'\n | 'inlineCode'\n | 'thematicBreak'\n | 'text'\n | 'mention';\n\nexport const defaultNodeTypes: InputNodeTypes = {\n paragraph: 'paragraph',\n blockQuote: 'block_quote',\n codeBlock: 'code_block',\n link: 'link',\n ulList: 'ul_list',\n olList: 'ol_list',\n listItem: 'list_item',\n listItemChild: 'lic',\n heading: {\n 1: 'heading_one',\n 2: 'heading_two',\n 3: 'heading_three',\n 4: 'heading_four',\n 5: 'heading_five',\n 6: 'heading_six',\n },\n emphasisMark: 'italic',\n strongMark: 'bold',\n deleteMark: 'strikethrough',\n inlineCodeMark: 'code',\n thematicBreak: 'thematic_break',\n image: 'image',\n mention: 'mention',\n};\n\nexport type NodeType = BlockType | LeafType;\n\nexport type LeafType = {\n text: string;\n strikethrough?: boolean;\n bold?: boolean;\n italic?: boolean;\n code?: boolean;\n parentType?: string;\n};\n\nexport type BlockType = {\n type: string;\n children: NodeType[];\n parentType?: string;\n caption?: string;\n language?: string;\n break?: boolean;\n link?: string;\n url?: string;\n id?: string;\n category?: string;\n};\n\nexport type RecursivePartial<T> = {\n [P in keyof T]?: RecursivePartial<T[P]>;\n};\n\nexport type OptionType<T extends InputNodeTypes = InputNodeTypes> = {\n nodeTypes: RecursivePartial<T>;\n linkDestinationKey: string;\n ignoreParagraphNewline: boolean;\n listDepth: number;\n imageSourceKey?: string;\n imageCaptionKey?: string;\n};\n\nexport type PartialOptionType<T extends OptionType = OptionType> = Partial<T>;\n\nexport type MarkdownAstNode = {\n type?: MarkdownAstNodeType;\n ordered?: boolean;\n value?: string;\n text?: string;\n children?: Array<MarkdownAstNode>;\n depth?: 1 | 2 | 3 | 4 | 5 | 6;\n url?: string;\n alt?: string;\n lang?: string;\n // Markdown Ast metadata\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n position?: any;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n spread?: any;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n checked?: any;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n indent?: any;\n};\n\nexport type TextNode = { text?: string };\n\nexport type CodeBlockNode<T extends InputNodeTypes> = {\n type: T['codeBlock'];\n language: string | undefined;\n children: Array<TextNode>;\n};\n\nexport type HeadingNode<T extends InputNodeTypes> = {\n type: T['heading'][1] | T['heading'][2] | T['heading'][3] | T['heading'][4] | T['heading'][5] | T['heading'][6];\n children: Array<DeserializedNode<T>>;\n};\n\nexport type ListNode<T extends InputNodeTypes> = {\n type: T['olList'] | T['ulList'];\n children: Array<DeserializedNode<T>>;\n};\n\nexport type ListItemNode<T extends InputNodeTypes> = {\n type: T['listItem'];\n children: Array<DeserializedNode<T>>;\n};\n\nexport type ListItemChildNode<T extends InputNodeTypes> = {\n type: T['listItemChild'];\n children: Array<DeserializedNode<T>>;\n};\n\nexport type ParagraphNode<T extends InputNodeTypes> = {\n type: T['paragraph'];\n break?: true;\n children: Array<DeserializedNode<T>>;\n};\n\nexport type LinkNode<T extends InputNodeTypes> = {\n type: T['link'];\n children: Array<DeserializedNode<T>>;\n [urlKey: string]: string | undefined | Array<DeserializedNode<T>>;\n};\n\nexport type ImageNode<T extends InputNodeTypes> = {\n type: T['image'];\n children: Array<DeserializedNode<T>>;\n [sourceOrCaptionKey: string]: string | undefined | Array<DeserializedNode<T>>;\n};\n\nexport type BlockQuoteNode<T extends InputNodeTypes> = {\n type: T['blockQuote'];\n children: Array<DeserializedNode<T>>;\n};\n\nexport type InlineCodeMarkNode<T extends InputNodeTypes> = {\n type: T['inlineCodeMark'];\n children: Array<TextNode>;\n language: string | undefined;\n};\n\nexport type ThematicBreakNode<T extends InputNodeTypes> = {\n type: T['thematicBreak'];\n children: Array<DeserializedNode<T>>;\n};\n\nexport type ItalicNode<T extends InputNodeTypes> = {\n [K in T['emphasisMark']]: true;\n} & {\n children: TextNode;\n};\n\nexport type BoldNode = {\n bold: true;\n children: TextNode;\n};\n\nexport type StrikeThoughNode = {\n strikethrough: true;\n children: TextNode;\n};\n\nexport type InlineCodeNode = {\n code: true;\n text: string | undefined;\n};\n\nexport type DeserializedNode<T extends InputNodeTypes> =\n | CodeBlockNode<T>\n | HeadingNode<T>\n | ListNode<T>\n | ListItemNode<T>\n | ListItemChildNode<T>\n | ParagraphNode<T>\n | LinkNode<T>\n | ImageNode<T>\n | BlockQuoteNode<T>\n | InlineCodeMarkNode<T>\n | ThematicBreakNode<T>\n | ItalicNode<T>\n | BoldNode\n | StrikeThoughNode\n | InlineCodeNode\n | TextNode;\n"],"names":["defaultNodeTypes"],"mappings":"AA+CO,MAAMA,IAAmC;AAAA,EAC5C,WAAW;AAAA,EACX,YAAY;AAAA,EACZ,WAAW;AAAA,EACX,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,UAAU;AAAA,EACV,eAAe;AAAA,EACf,SAAS;AAAA,IACL,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,EACP;AAAA,EACA,cAAc;AAAA,EACd,YAAY;AAAA,EACZ,YAAY;AAAA,EACZ,gBAAgB;AAAA,EAChB,eAAe;AAAA,EACf,OAAO;AAAA,EACP,SAAS;AACb;"}
|