@pega/cosmos-react-rte 10.0.0-build.4.6 → 10.0.0-build.4.8
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.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"markdownConverter.d.ts","sourceRoot":"","sources":["../../../../src/components/RichTextEditor/utils/markdownConverter.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAc,OAAO,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC;AAEvD,OAAO,KAAK,EAAE,WAAW,EAAU,MAAM,QAAQ,CAAC;AAKlD,OAAO,KAAK,EAAY,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"markdownConverter.d.ts","sourceRoot":"","sources":["../../../../src/components/RichTextEditor/utils/markdownConverter.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAc,OAAO,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC;AAEvD,OAAO,KAAK,EAAE,WAAW,EAAU,MAAM,QAAQ,CAAC;AAKlD,OAAO,KAAK,EAAY,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAmKnG,eAAO,MAAM,OAAO,GAClB,OAAO,WAAW,EAClB,uBAAuB,oBAAoB,EAAE,EAC7C,cAAc,mBAAmB,CAAC,aAAa,CAAC,KAC/C,OAAO,GAAG,IAyLZ,CAAC;AAEF,eAAO,MAAM,wBAAwB,GACnC,WAAO,EACP,kBAAkB,oBAAoB,EAAE,KACvC,CAAC,OAAO,GAAG,IAAI,CAAC,EAOlB,CAAC;AAIF,QAAA,MAAM,eAAe,GACnB,IAAI,MAAM,EACV,uBAAuB,oBAAoB,EAAE,EAC7C,cAAc,mBAAmB,CAAC,aAAa,CAAC,KAC/C,CAAC,OAAO,GAAG,IAAI,CAAC,EAIlB,CAAC;AAEF,eAAe,eAAe,CAAC"}
|
|
@@ -8,6 +8,9 @@ const getTableColumnAlignment = (alignment) => {
|
|
|
8
8
|
}
|
|
9
9
|
return undefined;
|
|
10
10
|
};
|
|
11
|
+
const flattenInlineNodes = (nodes) => nodes.flatMap(node => 'type' in node && node.type === 'text' && 'children' in node
|
|
12
|
+
? flattenInlineNodes(node.children)
|
|
13
|
+
: [node]);
|
|
11
14
|
const applyFormatting = (children, token, formatKey) => {
|
|
12
15
|
if (children.length === 1 && 'type' in children[0] && children[0].type === 'custom') {
|
|
13
16
|
return {
|
|
@@ -16,12 +19,13 @@ const applyFormatting = (children, token, formatKey) => {
|
|
|
16
19
|
};
|
|
17
20
|
}
|
|
18
21
|
if (children.length > 1) {
|
|
22
|
+
const formattedChildren = flattenInlineNodes(children).map(child => ({
|
|
23
|
+
...child,
|
|
24
|
+
[formatKey]: true
|
|
25
|
+
}));
|
|
19
26
|
return {
|
|
20
27
|
type: 'text',
|
|
21
|
-
children:
|
|
22
|
-
...child,
|
|
23
|
-
[formatKey]: true
|
|
24
|
-
}))
|
|
28
|
+
children: formattedChildren
|
|
25
29
|
};
|
|
26
30
|
}
|
|
27
31
|
const baseNode = children.length > 0 && !('type' in children[0])
|
|
@@ -59,10 +63,6 @@ const isMarkedToken = (token) => MARKED_TOKEN_TYPE_SET.has(token.type);
|
|
|
59
63
|
const getCustomComponentFromMarkdownMap = (token, markdownMap) => {
|
|
60
64
|
return markdownMap?.[token.type]?.(token);
|
|
61
65
|
};
|
|
62
|
-
/** Flattens inline text wrappers so table cells get a flat list of Text nodes. */
|
|
63
|
-
const flattenInlineNodes = (nodes) => nodes.flatMap(node => 'type' in node && node.type === 'text' && 'children' in node
|
|
64
|
-
? flattenInlineNodes(node.children)
|
|
65
|
-
: [node]);
|
|
66
66
|
const markDownToSlate = (tokens, interactionRenderers, markdownMap, convertTokenToSlateNode) => {
|
|
67
67
|
return tokens.map(token => {
|
|
68
68
|
return convertTokenToSlateNode(token, interactionRenderers, markdownMap);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"markdownConverter.js","sourceRoot":"","sources":["../../../../src/components/RichTextEditor/utils/markdownConverter.tsx"],"names":[],"mappings":"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","sourcesContent":["import type { PegaCustom, Element, Text } from 'slate';\nimport { marked } from 'marked';\nimport type { MarkedToken, Tokens } from 'marked';\nimport type { ComponentType } from 'react';\n\nimport { hasProp } from '@pega/cosmos-react-core';\n\nimport type { TokenMap, InteractionRenderers, RichTextViewerProps } from '../RichTextViewer.types';\n\nimport parseTextToCustomSlateNodes from './interactionRenderer';\n\ntype TableColumnAlignment = 'left' | 'center' | 'right';\n\ntype MarkedTokenToSlateNode = (\n token: MarkedToken,\n interactionRenderers?: InteractionRenderers[],\n markdownMap?: RichTextViewerProps['markdownMap']\n) => Element | Text;\n\nconst getTableColumnAlignment = (\n alignment: Tokens.Table['align'][number] | undefined\n): TableColumnAlignment | undefined => {\n if (alignment === 'left' || alignment === 'center' || alignment === 'right') {\n return alignment;\n }\n\n return undefined;\n};\n\nconst applyFormatting = (\n children: (Element | Text)[],\n token: MarkedToken,\n formatKey: 'italic' | 'bold' | 'code' | 'line-through'\n): Element | Text => {\n if (children.length === 1 && 'type' in children[0] && children[0].type === 'custom') {\n return {\n ...children[0],\n [formatKey]: true\n };\n }\n\n if (children.length > 1) {\n return {\n type: 'text',\n children: children.map(child => ({\n ...child,\n [formatKey]: true\n }))\n };\n }\n\n const baseNode =\n children.length > 0 && !('type' in children[0])\n ? children[0]\n : { text: 'text' in token ? token.text || '' : '' };\n\n return {\n ...baseNode,\n [formatKey]: true\n };\n};\n\nconst MARKED_TOKEN_TYPES = [\n 'blockquote',\n 'br',\n 'code',\n 'codespan',\n 'def',\n 'del',\n 'em',\n 'escape',\n 'heading',\n 'hr',\n 'html',\n 'image',\n 'link',\n 'list',\n 'list_item',\n 'paragraph',\n 'space',\n 'strong',\n 'table',\n 'text'\n] as const satisfies readonly MarkedToken['type'][];\nconst MARKED_TOKEN_TYPE_SET: ReadonlySet<string> = new Set(MARKED_TOKEN_TYPES);\n\nconst isMarkedToken = (token: MarkedToken | Tokens.Generic): token is MarkedToken =>\n MARKED_TOKEN_TYPE_SET.has(token.type);\n\nconst getCustomComponentFromMarkdownMap = <K extends keyof TokenMap>(\n token: TokenMap[K],\n markdownMap?: RichTextViewerProps['markdownMap']\n): ComponentType<{ token: TokenMap[K] }> | undefined => {\n return markdownMap?.[token.type]?.(token);\n};\n\n/** Flattens inline text wrappers so table cells get a flat list of Text nodes. */\nconst flattenInlineNodes = (nodes: (Element | Text)[]): (Element | Text)[] =>\n nodes.flatMap(node =>\n 'type' in node && node.type === 'text' && 'children' in node\n ? flattenInlineNodes(node.children)\n : [node]\n );\n\nconst markDownToSlate = (\n tokens: MarkedToken[],\n interactionRenderers: InteractionRenderers[] | undefined,\n markdownMap: RichTextViewerProps['markdownMap'] | undefined,\n convertTokenToSlateNode: MarkedTokenToSlateNode\n): (Element | Text)[] => {\n return tokens.map(token => {\n return convertTokenToSlateNode(token, interactionRenderers, markdownMap);\n });\n};\n\nconst convertTableCellToSlateNode = (\n cell: Tokens.TableCell,\n convertTokenToSlateNode: MarkedTokenToSlateNode,\n interactionRenderers?: InteractionRenderers[],\n markdownMap?: RichTextViewerProps['markdownMap'],\n align?: TableColumnAlignment,\n isHeaderCell?: boolean\n): PegaCustom.TableCellElement => {\n const children = cell.tokens?.length\n ? flattenInlineNodes(\n markDownToSlate(\n cell.tokens.filter(isMarkedToken),\n interactionRenderers,\n markdownMap,\n convertTokenToSlateNode\n )\n )\n : parseTextToCustomSlateNodes(cell.text || '', interactionRenderers);\n\n const tableCell: PegaCustom.TableCellElement = {\n type: 'table-cell',\n ...(align ? { align } : {}),\n ...(isHeaderCell ? { isHeaderCell: true } : {}),\n children: children.length > 0 ? children : [{ text: '' }]\n };\n\n return tableCell;\n};\n\nconst convertTableRowsToSlateNodes = (\n rows: Tokens.TableCell[][],\n convertTokenToSlateNode: MarkedTokenToSlateNode,\n interactionRenderers?: InteractionRenderers[],\n markdownMap?: RichTextViewerProps['markdownMap'],\n alignments?: Tokens.Table['align'],\n isHeaderCell?: boolean\n): PegaCustom.TableRowElement[] => {\n return rows.map(row => {\n return {\n type: 'table-row',\n children: row.map((cell, columnIndex) => {\n return convertTableCellToSlateNode(\n cell,\n convertTokenToSlateNode,\n interactionRenderers,\n markdownMap,\n getTableColumnAlignment(alignments?.[columnIndex]),\n isHeaderCell\n );\n })\n };\n });\n};\n\nexport const getNode = (\n token: MarkedToken,\n interactionRenderers?: InteractionRenderers[],\n markdownMap?: RichTextViewerProps['markdownMap']\n): Element | Text => {\n if (!hasProp(token, 'type') || token.type === 'def')\n return { type: 'paragraph', children: [{ text: '' }] };\n\n if (token.type === 'html') {\n if (/^<br\\s*\\/?>$/i.test(token.raw.trim())) {\n return { text: '\\n' };\n }\n\n const parsed = parseTextToCustomSlateNodes(token.raw, interactionRenderers);\n if (parsed.length === 1) {\n return parsed[0];\n }\n return {\n type: 'paragraph',\n children: parsed\n };\n }\n\n let children: (Element | Text)[];\n\n if (hasProp(token, 'tokens')) {\n children = markDownToSlate(\n (token.tokens as MarkedToken[]) || [],\n interactionRenderers,\n markdownMap,\n getNode\n );\n } else if (hasProp(token, 'items')) {\n children = markDownToSlate(token.items, interactionRenderers, markdownMap, getNode);\n } else {\n let mdText = '';\n\n if (token.type === 'text') mdText = token.raw;\n else if (hasProp(token, 'text')) mdText = token.text;\n\n children = parseTextToCustomSlateNodes(mdText, interactionRenderers);\n }\n\n if (markdownMap?.[token.type]) {\n const CustomComponent = getCustomComponentFromMarkdownMap(token, markdownMap);\n if (CustomComponent)\n return {\n type: 'override',\n component: <CustomComponent token={token} />,\n children: [{ text: '' }]\n };\n }\n\n if (!children.length) {\n return {\n type: 'paragraph',\n children: [{ text: token.raw }]\n };\n }\n\n switch (token.type) {\n case 'paragraph': {\n return {\n type: token.type,\n children\n };\n }\n case 'heading': {\n return {\n type:\n token.depth && token.depth <= 4\n ? (`heading-${token.depth}` as `heading-${1 | 2 | 3 | 4}`)\n : 'heading-4',\n children\n };\n }\n case 'link': {\n return {\n href: token.href,\n text: token.text || ''\n };\n }\n case 'em': {\n return applyFormatting(children, token, 'italic');\n }\n case 'strong': {\n return applyFormatting(children, token, 'bold');\n }\n case 'del': {\n return applyFormatting(children, token, 'line-through');\n }\n case 'codespan': {\n return applyFormatting(children, token, 'code');\n }\n case 'list': {\n if (token.ordered) {\n return {\n type: 'ordered-list',\n start: typeof token.start === 'number' ? token.start : 1,\n children: children as PegaCustom.ListItemElement[]\n };\n }\n\n return {\n type: 'unordered-list',\n children: children as PegaCustom.ListItemElement[]\n };\n }\n case 'list_item': {\n return {\n type: 'list-item',\n children: children as Element[]\n };\n }\n case 'blockquote': {\n return {\n type: 'block-quote',\n children\n };\n }\n case 'code': {\n return {\n type: 'code-block',\n language: token.lang,\n children: [{ text: token.text }]\n };\n }\n case 'table': {\n const headerRows = token.header?.length ? [token.header] : [];\n const bodyRows = token.rows || [];\n\n const headerSlateRows = convertTableRowsToSlateNodes(\n headerRows,\n getNode,\n interactionRenderers,\n markdownMap,\n token.align,\n true\n );\n\n const bodySlateRows = convertTableRowsToSlateNodes(\n bodyRows,\n getNode,\n interactionRenderers,\n markdownMap,\n token.align\n );\n\n const tableBody: PegaCustom.TableBodyElement = {\n type: 'table-body',\n children: bodySlateRows\n };\n\n const tableChildren:\n | [PegaCustom.TableHeadElement, PegaCustom.TableBodyElement]\n | [PegaCustom.TableBodyElement] =\n headerSlateRows.length > 0\n ? [{ type: 'table-head', children: headerSlateRows }, tableBody]\n : [tableBody];\n\n return {\n type: 'table',\n children: tableChildren\n };\n }\n case 'br': {\n return { text: '\\n' };\n }\n case 'hr': {\n return {\n type: 'horizontal-rule',\n children: [{ text: '' }]\n };\n }\n case 'image': {\n return {\n type: 'image',\n alt: token.text,\n src: token.href,\n children: [{ text: '' }]\n };\n }\n default: {\n return {\n type: token.type,\n children\n } as Element;\n }\n }\n};\n\nexport const convertMarkdownForEditor = (\n md = '',\n searchRenderers?: InteractionRenderers[]\n): (Element | Text)[] => {\n return [\n {\n type: 'paragraph',\n children: parseTextToCustomSlateNodes(md, searchRenderers)\n }\n ];\n};\n\n// Converts markdown into Slate compatible nodes, also takes regex used\n// in Feed Component to pass them down to custom elements\nconst convertMarkdown = (\n md: string,\n interactionRenderers?: InteractionRenderers[],\n markdownMap?: RichTextViewerProps['markdownMap']\n): (Element | Text)[] => {\n const lexer = new marked.Lexer({ gfm: true });\n const output = lexer.lex(md) as MarkedToken[];\n return markDownToSlate(output, interactionRenderers, markdownMap, getNode);\n};\n\nexport default convertMarkdown;\n"]}
|
|
1
|
+
{"version":3,"file":"markdownConverter.js","sourceRoot":"","sources":["../../../../src/components/RichTextEditor/utils/markdownConverter.tsx"],"names":[],"mappings":"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","sourcesContent":["import type { PegaCustom, Element, Text } from 'slate';\nimport { marked } from 'marked';\nimport type { MarkedToken, Tokens } from 'marked';\nimport type { ComponentType } from 'react';\n\nimport { hasProp } from '@pega/cosmos-react-core';\n\nimport type { TokenMap, InteractionRenderers, RichTextViewerProps } from '../RichTextViewer.types';\n\nimport parseTextToCustomSlateNodes from './interactionRenderer';\n\ntype TableColumnAlignment = 'left' | 'center' | 'right';\n\ntype MarkedTokenToSlateNode = (\n token: MarkedToken,\n interactionRenderers?: InteractionRenderers[],\n markdownMap?: RichTextViewerProps['markdownMap']\n) => Element | Text;\n\nconst getTableColumnAlignment = (\n alignment: Tokens.Table['align'][number] | undefined\n): TableColumnAlignment | undefined => {\n if (alignment === 'left' || alignment === 'center' || alignment === 'right') {\n return alignment;\n }\n\n return undefined;\n};\n\nconst flattenInlineNodes = (nodes: (Element | Text)[]): (Element | Text)[] =>\n nodes.flatMap(node =>\n 'type' in node && node.type === 'text' && 'children' in node\n ? flattenInlineNodes(node.children)\n : [node]\n );\n\nconst applyFormatting = (\n children: (Element | Text)[],\n token: MarkedToken,\n formatKey: 'italic' | 'bold' | 'code' | 'line-through'\n): Element | Text => {\n if (children.length === 1 && 'type' in children[0] && children[0].type === 'custom') {\n return {\n ...children[0],\n [formatKey]: true\n };\n }\n\n if (children.length > 1) {\n const formattedChildren = flattenInlineNodes(children).map(child => ({\n ...child,\n [formatKey]: true\n }));\n\n return {\n type: 'text',\n children: formattedChildren\n };\n }\n\n const baseNode =\n children.length > 0 && !('type' in children[0])\n ? children[0]\n : { text: 'text' in token ? token.text || '' : '' };\n\n return {\n ...baseNode,\n [formatKey]: true\n };\n};\n\nconst MARKED_TOKEN_TYPES = [\n 'blockquote',\n 'br',\n 'code',\n 'codespan',\n 'def',\n 'del',\n 'em',\n 'escape',\n 'heading',\n 'hr',\n 'html',\n 'image',\n 'link',\n 'list',\n 'list_item',\n 'paragraph',\n 'space',\n 'strong',\n 'table',\n 'text'\n] as const satisfies readonly MarkedToken['type'][];\nconst MARKED_TOKEN_TYPE_SET: ReadonlySet<string> = new Set(MARKED_TOKEN_TYPES);\n\nconst isMarkedToken = (token: MarkedToken | Tokens.Generic): token is MarkedToken =>\n MARKED_TOKEN_TYPE_SET.has(token.type);\n\nconst getCustomComponentFromMarkdownMap = <K extends keyof TokenMap>(\n token: TokenMap[K],\n markdownMap?: RichTextViewerProps['markdownMap']\n): ComponentType<{ token: TokenMap[K] }> | undefined => {\n return markdownMap?.[token.type]?.(token);\n};\n\nconst markDownToSlate = (\n tokens: MarkedToken[],\n interactionRenderers: InteractionRenderers[] | undefined,\n markdownMap: RichTextViewerProps['markdownMap'] | undefined,\n convertTokenToSlateNode: MarkedTokenToSlateNode\n): (Element | Text)[] => {\n return tokens.map(token => {\n return convertTokenToSlateNode(token, interactionRenderers, markdownMap);\n });\n};\n\nconst convertTableCellToSlateNode = (\n cell: Tokens.TableCell,\n convertTokenToSlateNode: MarkedTokenToSlateNode,\n interactionRenderers?: InteractionRenderers[],\n markdownMap?: RichTextViewerProps['markdownMap'],\n align?: TableColumnAlignment,\n isHeaderCell?: boolean\n): PegaCustom.TableCellElement => {\n const children = cell.tokens?.length\n ? flattenInlineNodes(\n markDownToSlate(\n cell.tokens.filter(isMarkedToken),\n interactionRenderers,\n markdownMap,\n convertTokenToSlateNode\n )\n )\n : parseTextToCustomSlateNodes(cell.text || '', interactionRenderers);\n\n const tableCell: PegaCustom.TableCellElement = {\n type: 'table-cell',\n ...(align ? { align } : {}),\n ...(isHeaderCell ? { isHeaderCell: true } : {}),\n children: children.length > 0 ? children : [{ text: '' }]\n };\n\n return tableCell;\n};\n\nconst convertTableRowsToSlateNodes = (\n rows: Tokens.TableCell[][],\n convertTokenToSlateNode: MarkedTokenToSlateNode,\n interactionRenderers?: InteractionRenderers[],\n markdownMap?: RichTextViewerProps['markdownMap'],\n alignments?: Tokens.Table['align'],\n isHeaderCell?: boolean\n): PegaCustom.TableRowElement[] => {\n return rows.map(row => {\n return {\n type: 'table-row',\n children: row.map((cell, columnIndex) => {\n return convertTableCellToSlateNode(\n cell,\n convertTokenToSlateNode,\n interactionRenderers,\n markdownMap,\n getTableColumnAlignment(alignments?.[columnIndex]),\n isHeaderCell\n );\n })\n };\n });\n};\n\nexport const getNode = (\n token: MarkedToken,\n interactionRenderers?: InteractionRenderers[],\n markdownMap?: RichTextViewerProps['markdownMap']\n): Element | Text => {\n if (!hasProp(token, 'type') || token.type === 'def')\n return { type: 'paragraph', children: [{ text: '' }] };\n\n if (token.type === 'html') {\n if (/^<br\\s*\\/?>$/i.test(token.raw.trim())) {\n return { text: '\\n' };\n }\n\n const parsed = parseTextToCustomSlateNodes(token.raw, interactionRenderers);\n if (parsed.length === 1) {\n return parsed[0];\n }\n return {\n type: 'paragraph',\n children: parsed\n };\n }\n\n let children: (Element | Text)[];\n\n if (hasProp(token, 'tokens')) {\n children = markDownToSlate(\n (token.tokens as MarkedToken[]) || [],\n interactionRenderers,\n markdownMap,\n getNode\n );\n } else if (hasProp(token, 'items')) {\n children = markDownToSlate(token.items, interactionRenderers, markdownMap, getNode);\n } else {\n let mdText = '';\n\n if (token.type === 'text') mdText = token.raw;\n else if (hasProp(token, 'text')) mdText = token.text;\n\n children = parseTextToCustomSlateNodes(mdText, interactionRenderers);\n }\n\n if (markdownMap?.[token.type]) {\n const CustomComponent = getCustomComponentFromMarkdownMap(token, markdownMap);\n if (CustomComponent)\n return {\n type: 'override',\n component: <CustomComponent token={token} />,\n children: [{ text: '' }]\n };\n }\n\n if (!children.length) {\n return {\n type: 'paragraph',\n children: [{ text: token.raw }]\n };\n }\n\n switch (token.type) {\n case 'paragraph': {\n return {\n type: token.type,\n children\n };\n }\n case 'heading': {\n return {\n type:\n token.depth && token.depth <= 4\n ? (`heading-${token.depth}` as `heading-${1 | 2 | 3 | 4}`)\n : 'heading-4',\n children\n };\n }\n case 'link': {\n return {\n href: token.href,\n text: token.text || ''\n };\n }\n case 'em': {\n return applyFormatting(children, token, 'italic');\n }\n case 'strong': {\n return applyFormatting(children, token, 'bold');\n }\n case 'del': {\n return applyFormatting(children, token, 'line-through');\n }\n case 'codespan': {\n return applyFormatting(children, token, 'code');\n }\n case 'list': {\n if (token.ordered) {\n return {\n type: 'ordered-list',\n start: typeof token.start === 'number' ? token.start : 1,\n children: children as PegaCustom.ListItemElement[]\n };\n }\n\n return {\n type: 'unordered-list',\n children: children as PegaCustom.ListItemElement[]\n };\n }\n case 'list_item': {\n return {\n type: 'list-item',\n children: children as Element[]\n };\n }\n case 'blockquote': {\n return {\n type: 'block-quote',\n children\n };\n }\n case 'code': {\n return {\n type: 'code-block',\n language: token.lang,\n children: [{ text: token.text }]\n };\n }\n case 'table': {\n const headerRows = token.header?.length ? [token.header] : [];\n const bodyRows = token.rows || [];\n\n const headerSlateRows = convertTableRowsToSlateNodes(\n headerRows,\n getNode,\n interactionRenderers,\n markdownMap,\n token.align,\n true\n );\n\n const bodySlateRows = convertTableRowsToSlateNodes(\n bodyRows,\n getNode,\n interactionRenderers,\n markdownMap,\n token.align\n );\n\n const tableBody: PegaCustom.TableBodyElement = {\n type: 'table-body',\n children: bodySlateRows\n };\n\n const tableChildren:\n | [PegaCustom.TableHeadElement, PegaCustom.TableBodyElement]\n | [PegaCustom.TableBodyElement] =\n headerSlateRows.length > 0\n ? [{ type: 'table-head', children: headerSlateRows }, tableBody]\n : [tableBody];\n\n return {\n type: 'table',\n children: tableChildren\n };\n }\n case 'br': {\n return { text: '\\n' };\n }\n case 'hr': {\n return {\n type: 'horizontal-rule',\n children: [{ text: '' }]\n };\n }\n case 'image': {\n return {\n type: 'image',\n alt: token.text,\n src: token.href,\n children: [{ text: '' }]\n };\n }\n default: {\n return {\n type: token.type,\n children\n } as Element;\n }\n }\n};\n\nexport const convertMarkdownForEditor = (\n md = '',\n searchRenderers?: InteractionRenderers[]\n): (Element | Text)[] => {\n return [\n {\n type: 'paragraph',\n children: parseTextToCustomSlateNodes(md, searchRenderers)\n }\n ];\n};\n\n// Converts markdown into Slate compatible nodes, also takes regex used\n// in Feed Component to pass them down to custom elements\nconst convertMarkdown = (\n md: string,\n interactionRenderers?: InteractionRenderers[],\n markdownMap?: RichTextViewerProps['markdownMap']\n): (Element | Text)[] => {\n const lexer = new marked.Lexer({ gfm: true });\n const output = lexer.lex(md) as MarkedToken[];\n return markDownToSlate(output, interactionRenderers, markdownMap, getNode);\n};\n\nexport default convertMarkdown;\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pega/cosmos-react-rte",
|
|
3
|
-
"version": "10.0.0-build.4.
|
|
3
|
+
"version": "10.0.0-build.4.8",
|
|
4
4
|
"license": "SEE LICENSE IN LICENSE",
|
|
5
5
|
"author": "Pegasystems",
|
|
6
6
|
"sideEffects": false,
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
},
|
|
16
16
|
"dependencies": {
|
|
17
17
|
"@intevation/tiptap-extension-office-paste": "^0.1.2",
|
|
18
|
-
"@pega/cosmos-react-core": "10.0.0-build.4.
|
|
18
|
+
"@pega/cosmos-react-core": "10.0.0-build.4.8",
|
|
19
19
|
"@popperjs/core": "^2.11.6",
|
|
20
20
|
"@tiptap/core": "^3.12.1",
|
|
21
21
|
"@tiptap/extension-blockquote": "^3.12.1",
|