@pega/cosmos-react-rte 3.0.0-dev.9.1 → 3.0.0-rc.10

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.
Files changed (79) hide show
  1. package/lib/components/Editor/Editor.d.ts +2 -0
  2. package/lib/components/Editor/Editor.d.ts.map +1 -1
  3. package/lib/components/Editor/Editor.js +111 -18
  4. package/lib/components/Editor/Editor.js.map +1 -1
  5. package/lib/components/Editor/Editor.styles.d.ts +2 -1
  6. package/lib/components/Editor/Editor.styles.d.ts.map +1 -1
  7. package/lib/components/Editor/Editor.styles.js +24 -9
  8. package/lib/components/Editor/Editor.styles.js.map +1 -1
  9. package/lib/components/Editor/Editor.types.d.ts +10 -3
  10. package/lib/components/Editor/Editor.types.d.ts.map +1 -1
  11. package/lib/components/Editor/Editor.types.js.map +1 -1
  12. package/lib/components/Editor/ImageEditor.d.ts +1 -0
  13. package/lib/components/Editor/ImageEditor.d.ts.map +1 -1
  14. package/lib/components/Editor/ImageEditor.js +29 -35
  15. package/lib/components/Editor/ImageEditor.js.map +1 -1
  16. package/lib/components/Editor/Toolbar/AnchorButton.d.ts.map +1 -1
  17. package/lib/components/Editor/Toolbar/AnchorButton.js +21 -7
  18. package/lib/components/Editor/Toolbar/AnchorButton.js.map +1 -1
  19. package/lib/components/Editor/Toolbar/TextSelect.d.ts.map +1 -1
  20. package/lib/components/Editor/Toolbar/TextSelect.js +15 -2
  21. package/lib/components/Editor/Toolbar/TextSelect.js.map +1 -1
  22. package/lib/components/Editor/Toolbar/Toolbar.d.ts.map +1 -1
  23. package/lib/components/Editor/Toolbar/Toolbar.js +18 -8
  24. package/lib/components/Editor/Toolbar/Toolbar.js.map +1 -1
  25. package/lib/components/RichTextEditor/DecoratorComponents/Image.js +2 -2
  26. package/lib/components/RichTextEditor/DecoratorComponents/Image.js.map +1 -1
  27. package/lib/components/RichTextEditor/DecoratorComponents/Link.js +3 -3
  28. package/lib/components/RichTextEditor/DecoratorComponents/Link.js.map +1 -1
  29. package/lib/components/RichTextEditor/RichTextEditor.d.ts.map +1 -1
  30. package/lib/components/RichTextEditor/RichTextEditor.js +53 -12
  31. package/lib/components/RichTextEditor/RichTextEditor.js.map +1 -1
  32. package/lib/components/RichTextEditor/RichTextEditor.types.d.ts +2 -10
  33. package/lib/components/RichTextEditor/RichTextEditor.types.d.ts.map +1 -1
  34. package/lib/components/RichTextEditor/RichTextEditor.types.js.map +1 -1
  35. package/lib/components/RichTextEditor/RichTextTreeRenderer.d.ts +9 -0
  36. package/lib/components/RichTextEditor/RichTextTreeRenderer.d.ts.map +1 -0
  37. package/lib/components/RichTextEditor/RichTextTreeRenderer.js +15 -0
  38. package/lib/components/RichTextEditor/RichTextTreeRenderer.js.map +1 -0
  39. package/lib/components/RichTextEditor/RichTextViewer.d.ts +1 -0
  40. package/lib/components/RichTextEditor/RichTextViewer.d.ts.map +1 -1
  41. package/lib/components/RichTextEditor/RichTextViewer.js +10 -18
  42. package/lib/components/RichTextEditor/RichTextViewer.js.map +1 -1
  43. package/lib/components/RichTextEditor/RichTextViewer.types.d.ts +7 -0
  44. package/lib/components/RichTextEditor/RichTextViewer.types.d.ts.map +1 -1
  45. package/lib/components/RichTextEditor/RichTextViewer.types.js.map +1 -1
  46. package/lib/components/RichTextEditor/Toolbar/AnchorButton.js +1 -1
  47. package/lib/components/RichTextEditor/Toolbar/AnchorButton.js.map +1 -1
  48. package/lib/components/RichTextEditor/Toolbar/IndentButton.d.ts.map +1 -1
  49. package/lib/components/RichTextEditor/Toolbar/IndentButton.js +5 -2
  50. package/lib/components/RichTextEditor/Toolbar/IndentButton.js.map +1 -1
  51. package/lib/components/RichTextEditor/Toolbar/Toolbar.d.ts.map +1 -1
  52. package/lib/components/RichTextEditor/Toolbar/Toolbar.js +14 -5
  53. package/lib/components/RichTextEditor/Toolbar/Toolbar.js.map +1 -1
  54. package/lib/components/RichTextEditor/Toolbar/ToolbarButton.d.ts.map +1 -1
  55. package/lib/components/RichTextEditor/Toolbar/ToolbarButton.js +3 -2
  56. package/lib/components/RichTextEditor/Toolbar/ToolbarButton.js.map +1 -1
  57. package/lib/components/RichTextEditor/index.d.ts +1 -0
  58. package/lib/components/RichTextEditor/index.d.ts.map +1 -1
  59. package/lib/components/RichTextEditor/index.js +1 -0
  60. package/lib/components/RichTextEditor/index.js.map +1 -1
  61. package/lib/components/RichTextEditor/utils/EditorCommands.d.ts +1 -1
  62. package/lib/components/RichTextEditor/utils/EditorCommands.d.ts.map +1 -1
  63. package/lib/components/RichTextEditor/utils/EditorCommands.js +25 -6
  64. package/lib/components/RichTextEditor/utils/EditorCommands.js.map +1 -1
  65. package/lib/components/RichTextEditor/utils/interactionRenderer.d.ts +2 -8
  66. package/lib/components/RichTextEditor/utils/interactionRenderer.d.ts.map +1 -1
  67. package/lib/components/RichTextEditor/utils/interactionRenderer.js +50 -23
  68. package/lib/components/RichTextEditor/utils/interactionRenderer.js.map +1 -1
  69. package/lib/components/RichTextEditor/utils/markdownConverter.d.ts +3 -4
  70. package/lib/components/RichTextEditor/utils/markdownConverter.d.ts.map +1 -1
  71. package/lib/components/RichTextEditor/utils/markdownConverter.js.map +1 -1
  72. package/lib/components/RichTextEditor/utils/renderers.d.ts +20 -3
  73. package/lib/components/RichTextEditor/utils/renderers.d.ts.map +1 -1
  74. package/lib/components/RichTextEditor/utils/renderers.js +85 -3
  75. package/lib/components/RichTextEditor/utils/renderers.js.map +1 -1
  76. package/lib/components/RichTextEditor/utils/search.d.ts.map +1 -1
  77. package/lib/components/RichTextEditor/utils/search.js +9 -1
  78. package/lib/components/RichTextEditor/utils/search.js.map +1 -1
  79. package/package.json +9 -10
@@ -1 +1 @@
1
- {"version":3,"file":"EditorCommands.js","sourceRoot":"","sources":["../../../../src/components/RichTextEditor/utils/EditorCommands.ts"],"names":[],"mappings":"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","sourcesContent":["import { KeyboardEvent } from 'react';\nimport {\n Editor,\n Transforms,\n Range,\n Path,\n NodeEntry,\n Node,\n Element,\n Text,\n CosmosCustom\n} from 'slate';\n\nimport ListCommands from './ListCommands';\n\nconst textKeyCodeMapping: { [key: number]: Element['type'] } = {\n 48: 'paragraph',\n 49: 'heading-1',\n 50: 'heading-2',\n 51: 'heading-3',\n 52: 'heading-4'\n};\n\nconst commands = {\n // Checks if an inline format is active\n isFormatActive: (format: Exclude<keyof Text, 'text'>, editor: Editor) => {\n const marks = Editor.marks(editor);\n return marks ? marks[format] === true : false;\n },\n // Toggles an inline format on or off\n toggleFormat: (format: Exclude<keyof Text, 'text'>, editor: Editor) => {\n const formatActive = commands.isFormatActive(format, editor);\n if (formatActive) {\n Editor.removeMark(editor, format);\n } else {\n Editor.addMark(editor, format, true);\n }\n },\n // Checks if a block level format is active\n isBlockActive: (format: Element['type'], editor: Editor) => {\n const [match] = Editor.nodes<Element>(editor, {\n match: n => Element.isElement(n) && n.type === format\n });\n\n return !!match;\n },\n // Gets the active block level type\n getActiveBlockType: (editor: Editor): string => {\n const [match] = Editor.nodes<Element>(editor, {\n at: editor.selection || undefined,\n match: Element.isElement,\n mode: 'lowest'\n });\n\n if (match) {\n return match[0].type;\n }\n return '';\n },\n // Sets the block type of the currently selected block\n setBlock: (format: Element['type'], editor: Editor) => {\n Transforms.setNodes(editor, { type: format }, { mode: 'lowest' });\n },\n // Replaces a target in the editor with the given text\n replaceWithText: (editor: Editor, target: Range | null, text: string) => {\n if (target) {\n Transforms.select(editor, target);\n }\n Transforms.insertText(editor, text);\n Transforms.move(editor);\n },\n // Replaces a target in the editor with the given node\n replaceWithNodes: (editor: Editor, target: Range | null, node: Node) => {\n if (target) {\n Transforms.select(editor, target);\n }\n Transforms.insertNodes(editor, node);\n Transforms.move(editor);\n },\n // Gets the highest selected block level node\n getSelectedNode: (editor: Editor): NodeEntry<Node> => {\n const [node] = Editor.nodes<Element>(editor, {\n at: editor.selection || undefined,\n match: n => Element.isElement(n),\n mode: 'highest'\n });\n return node;\n },\n // Appends a 3x3 table into the editor and adds a blank line to the bottom\n appendTable: (editor: Editor) => {\n const baseArr: unknown[][] = new Array(3).fill(new Array(3).fill(0));\n const table: [CosmosCustom.TableElement, CosmosCustom.ParagraphElement] = [\n {\n type: 'table',\n children: [\n {\n type: 'table-body',\n children: baseArr.map(row => {\n return {\n type: 'table-row',\n children: row.map(() => {\n return {\n type: 'table-cell',\n children: [{ type: 'paragraph', children: [{ text: '' }] }]\n };\n })\n };\n })\n }\n ]\n },\n {\n type: 'paragraph',\n children: [{ text: '' }]\n }\n ];\n\n Transforms.insertNodes(editor, table, { mode: 'highest' });\n const [firstTableCell] = Editor.nodes<CosmosCustom.ParagraphElement>(editor, {\n at: editor.selection?.anchor.path.slice(0, 1),\n match: n => Element.isElement(n) && n.type === 'paragraph',\n mode: 'highest'\n });\n if (firstTableCell) {\n const [, path] = firstTableCell;\n path.push(0);\n const nextPosition = { path, offset: 0 };\n Transforms.setSelection(editor, { anchor: nextPosition, focus: nextPosition });\n }\n },\n // Finds the image placeholder and replaces it with an image node\n appendImage: (editor: Editor, imageData: { src: string; alt: string }, id: string) => {\n const [node] = Editor.nodes<CosmosCustom.ImagePlaceholderElement>(editor, {\n match: n => Element.isElement(n) && n.type === 'image-placeholder',\n at: [Number(id)]\n });\n\n if (node) {\n const [, path] = node;\n Transforms.setNodes(\n editor,\n { type: 'image', src: imageData.src, alt: imageData.alt },\n { at: path }\n );\n Transforms.unsetNodes(editor, 'id', { at: path });\n return Editor.end(editor, path);\n }\n return null;\n },\n appendImagePlaceholder: (editor: Editor): string => {\n const node = commands.getSelectedNode(editor);\n\n if (node) {\n const [, path] = node;\n const next = Path.next(path);\n Transforms.insertNodes(\n editor,\n { type: 'image-placeholder', children: [{ text: '' }] },\n { at: next }\n );\n return next[0].toString();\n }\n return '';\n },\n // Creates a link at the given selection\n createLink: (editor: Editor, text: string, url: string, selection: Range | null) => {\n const linkNode = { text: text || url, href: url };\n if (selection) {\n if (Range.isCollapsed(selection)) {\n const [node] = Editor.node(editor, selection);\n if (Text.isText(node) && node.href) {\n const before = Editor.before(editor, selection, { unit: 'word' });\n const after = Editor.after(editor, selection, { unit: 'word' });\n\n if (before && after) {\n Transforms.insertNodes(editor, [linkNode], { at: { anchor: before, focus: after } });\n } else if (before) {\n const calculatedAfter = Editor.after(editor, before, { unit: 'word' });\n if (calculatedAfter) {\n Transforms.insertNodes(editor, [linkNode], {\n at: { anchor: before, focus: calculatedAfter }\n });\n }\n } else if (after) {\n const calculatedBefore = Editor.before(editor, after, { unit: 'word' });\n if (calculatedBefore) {\n Transforms.insertNodes(editor, [linkNode], {\n at: { anchor: calculatedBefore, focus: after }\n });\n }\n }\n } else {\n Transforms.insertNodes(editor, [linkNode]);\n }\n } else {\n Transforms.insertNodes(editor, [linkNode], {\n at: selection\n });\n }\n } else {\n Transforms.insertNodes(editor, [linkNode]);\n }\n },\n // Used to handle the enter key when the cursor is next to an image, inserts a new paragraph\n checkImageEnter: (editor: Editor, e: KeyboardEvent) => {\n const [image] = Editor.nodes<CosmosCustom.ImageElement>(editor, {\n match: n => Element.isElement(n) && n.type === 'image'\n });\n if (image) {\n if (e.keyCode < 37 && e.keyCode > 40) {\n e.preventDefault();\n }\n if (e.key === 'Enter') {\n e.preventDefault();\n const [, path] = image;\n const next = Path.next(path);\n Transforms.insertNodes(\n editor,\n { type: 'paragraph', children: [{ text: '' }] },\n { at: next }\n );\n Transforms.select(editor, next);\n }\n }\n },\n // Turns the href property off on the text node when space is pressed while on a link\n checkLinkBreak: (editor: Editor, e: KeyboardEvent) => {\n const [link] = Editor.nodes<Text>(editor, {\n match: n => Text.isText(n) && !!n.href\n });\n if (link && (e.key === ' ' || e.key === 'Enter')) {\n e.preventDefault();\n Editor.insertNode(editor, { text: e.key === 'Enter' ? '\\n' : ' ' });\n Editor.removeMark(editor, 'href');\n }\n },\n /**\n * Turns the searchResult property off on the text node when any key is pressed while on a searchResult.\n * Will delete the searchResult node if backspace key is hit.\n * Will re-position cursor to the start/end of the searchResult if arrow navigation is used.\n */\n checkSearchDownKeys: (editor: Editor, e: KeyboardEvent) => {\n const [text] = Editor.nodes<Text>(editor, {\n match: n => Text.isText(n)\n });\n\n if (text) {\n const [node, path] = text;\n const nextNode = Editor.next(editor)?.[0] as Text;\n const nextPath = Editor.next(editor)?.[1];\n const previousNode = Editor.previous(editor)?.[0] as Text;\n const previousPath = Editor.previous(editor)?.[1];\n\n const next = nextNode && nextNode.searchResult;\n const nextInline = next && path[0] === nextPath?.[0];\n const previous = previousNode && previousNode.searchResult;\n const previousInline = previous && path[0] === previousPath?.[0];\n\n // Checks if the current selection is a single cursor point rather than spanning multiple characters\n const singlePointSelection =\n editor.selection?.anchor.offset === editor.selection?.focus.offset &&\n editor.selection?.anchor.path[0] === editor.selection?.focus.path[0] &&\n editor.selection?.anchor.path[1] === editor.selection?.focus.path[1];\n\n // Checks if the current selected node is a search result, or directly adjacent inline with a search result\n if (node.searchResult || (next && nextInline) || (previous && previousInline)) {\n const atStart = node.searchResult && editor.selection?.anchor.offset === 0;\n const atEnd = node.searchResult && editor.selection?.anchor.offset === node.text.length;\n\n // Deletes the entire search result only if the cursor is at the end of the search result\n if (e.key === 'Backspace' && (atEnd || (previous && previousInline))) {\n if (singlePointSelection) e.preventDefault();\n Transforms.delete(editor, { at: previous ? previousPath : path });\n // Deletes the entire search result only if the cursor is at the start of the search result\n } else if (e.key === 'Delete' && (atStart || (next && nextInline))) {\n if (singlePointSelection) e.preventDefault();\n Transforms.delete(editor, { at: next ? nextPath : path });\n // Moves cursor to start of search result only if the cursor is at the end of the search result\n } else if (e.key === 'ArrowLeft' && (atEnd || (previous && previousInline))) {\n if (singlePointSelection) e.preventDefault();\n Transforms.move(editor, {\n distance: previous ? previousNode.text.length : node.text.length,\n unit: 'character',\n reverse: true\n });\n // Moves cursor to end of search result only if the cursor is at the start of the search result\n } else if (e.key === 'ArrowRight' && (atStart || (next && nextInline))) {\n if (singlePointSelection) e.preventDefault();\n Transforms.move(editor, {\n distance: next ? nextNode.text.length : node.text.length,\n unit: 'character'\n });\n // Ensures all other character (besides special key bindings) are inserted as plain text\n } else if (e.key.length === 1 && !e.altKey && !e.ctrlKey && !e.metaKey) {\n e.preventDefault();\n Editor.insertNode(editor, { text: e.key === 'Enter' ? '\\n' : e.key });\n }\n\n // Prevents partial search result selections from disabling the searchResult flag\n if (singlePointSelection) {\n Editor.removeMark(editor, 'searchResult');\n }\n }\n }\n },\n // Checks arrow navigation key up events around search results\n checkSearchUpKeys: (editor: Editor, e: KeyboardEvent) => {\n const [text] = Editor.nodes<Text>(editor, {\n match: n => Text.isText(n)\n });\n\n if (text) {\n const [node, path] = text;\n\n const cursorInSearchResult =\n node.searchResult &&\n editor.selection?.anchor.path[0] === path[0] &&\n editor.selection?.anchor.path[1] === path[1];\n\n if (cursorInSearchResult && editor.selection) {\n const distanceToStart = editor.selection.anchor.offset;\n const distanceToEnd = node.text.length - editor.selection.anchor.offset;\n // Moves cursor to the start of the search result\n if (e.key === 'ArrowLeft') {\n e.preventDefault();\n Transforms.move(editor, {\n distance: distanceToStart,\n unit: 'character',\n reverse: true\n });\n // Moves cursor to end of search result\n } else if (e.key === 'ArrowRight') {\n e.preventDefault();\n Transforms.move(editor, {\n distance: distanceToEnd,\n unit: 'character'\n });\n // Moves cursor to start or end of search result, whichever is closer\n } else if (e.key === 'ArrowUp' || e.key === 'ArrowDown') {\n e.preventDefault();\n Transforms.move(editor, {\n distance: distanceToStart <= distanceToEnd ? distanceToStart : distanceToEnd,\n unit: 'character',\n reverse: distanceToStart <= distanceToEnd\n });\n }\n }\n }\n },\n // Either adds a tab character or indents a list depending on the selection\n indent: (editor: Editor) => {\n const [nodeInListItem] = Editor.nodes<CosmosCustom.ListElement>(editor, {\n match: n => Element.isElement(n) && n.type === 'list-item'\n });\n\n if (nodeInListItem) {\n ListCommands.nestList(editor);\n return;\n }\n\n if (editor.selection) {\n let start = Editor.before(editor, editor.selection, { unit: 'block' });\n start = start || Editor.start(editor, editor.selection);\n Transforms.insertText(editor, '\\t', { at: start });\n }\n },\n // Either removes a tab character or un indents a list depending on the selection\n unindent: (editor: Editor) => {\n const [nodeInListItem] = Editor.nodes<CosmosCustom.ListItemElement>(editor, {\n match: n => Element.isElement(n) && n.type === 'list-item'\n });\n\n if (nodeInListItem) {\n ListCommands.unNestList(editor);\n return;\n }\n\n if (editor.selection) {\n let start = Editor.before(editor, editor.selection, { unit: 'block' });\n start = start || Editor.start(editor, editor.selection);\n let end = Editor.after(editor, editor.selection, { unit: 'block' });\n end = end || Editor.end(editor, editor.selection);\n if (start && end) {\n const text = Editor.string(editor, { anchor: start, focus: end });\n const newText = text.replace(/\\t/, '');\n Transforms.insertText(editor, newText, { at: { anchor: start, focus: end } });\n }\n }\n },\n checkKeyCommands: (editor: Editor, e: KeyboardEvent) => {\n const cmdOrCtrl = e.metaKey || e.ctrlKey;\n let commandExecuted = false;\n if (cmdOrCtrl) {\n // Command or Ctrl + Shift\n if (e.shiftKey) {\n switch (e.key) {\n case 'b':\n commands.toggleFormat('bold', editor);\n commandExecuted = true;\n break;\n case 'i':\n commands.toggleFormat('italic', editor);\n commandExecuted = true;\n break;\n case 'x':\n commands.toggleFormat('line-through', editor);\n commandExecuted = true;\n break;\n case 'l':\n ListCommands.toggleList('unordered-list', editor);\n commandExecuted = true;\n break;\n default:\n }\n // Command or Ctrl but not alt\n } else if (!e.shiftKey && !e.altKey) {\n switch (e.key) {\n case 'b':\n commands.toggleFormat('bold', editor);\n commandExecuted = true;\n break;\n case 'i':\n commands.toggleFormat('italic', editor);\n commandExecuted = true;\n break;\n default:\n }\n }\n }\n\n if (e.altKey) {\n if (cmdOrCtrl) {\n if (textKeyCodeMapping[e.keyCode]) {\n commands.setBlock(textKeyCodeMapping[e.keyCode], editor);\n commandExecuted = true;\n }\n } else if (e.keyCode === 77) {\n if (e.shiftKey) {\n commands.unindent(editor);\n commandExecuted = true;\n } else {\n commands.indent(editor);\n commandExecuted = true;\n }\n }\n }\n\n if (commandExecuted) e.preventDefault();\n }\n};\n\nexport default commands;\n"]}
1
+ {"version":3,"file":"EditorCommands.js","sourceRoot":"","sources":["../../../../src/components/RichTextEditor/utils/EditorCommands.ts"],"names":[],"mappings":"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","sourcesContent":["import { KeyboardEvent } from 'react';\nimport {\n Editor,\n Transforms,\n Range,\n Path,\n NodeEntry,\n Node,\n Element,\n Text,\n CosmosCustom\n} from 'slate';\n\nimport ListCommands from './ListCommands';\n\nconst textKeyCodeMapping: { [key: number]: Element['type'] } = {\n 48: 'paragraph',\n 49: 'heading-1',\n 50: 'heading-2',\n 51: 'heading-3',\n 52: 'heading-4'\n};\n\nconst commands = {\n // Checks if an inline format is active\n isFormatActive: (format: Exclude<keyof Text, 'text'>, editor: Editor) => {\n const marks = Editor.marks(editor);\n return marks ? marks[format] === true : false;\n },\n // Toggles an inline format on or off\n toggleFormat: (format: Exclude<keyof Text, 'text'>, editor: Editor) => {\n const formatActive = commands.isFormatActive(format, editor);\n if (formatActive) {\n Editor.removeMark(editor, format);\n } else {\n Editor.addMark(editor, format, true);\n }\n },\n // Checks if a block level format is active\n isBlockActive: (format: Element['type'], editor: Editor) => {\n const [match] = Editor.nodes<Element>(editor, {\n match: n => Element.isElement(n) && n.type === format\n });\n\n return !!match;\n },\n // Gets the active block level type\n getActiveBlockType: (editor: Editor): string => {\n const [match] = Editor.nodes<Element>(editor, {\n at: editor.selection || undefined,\n match: Element.isElement,\n mode: 'lowest'\n });\n\n if (match) {\n return match[0].type;\n }\n return '';\n },\n // Sets the block type of the currently selected block\n setBlock: (format: Element['type'], editor: Editor) => {\n Transforms.setNodes(editor, { type: format }, { mode: 'lowest' });\n },\n // Replaces a target in the editor with the given text\n replaceWithText: (editor: Editor, target: Range | null, text: string) => {\n if (target) {\n Transforms.select(editor, target);\n }\n Transforms.insertText(editor, text);\n Transforms.move(editor);\n },\n // Replaces a target in the editor with the given node\n replaceWithNodes: (editor: Editor, target: Range | null, node: Node) => {\n if (target) {\n Transforms.select(editor, target);\n }\n Transforms.insertNodes(editor, node);\n Transforms.move(editor);\n },\n // Gets the highest selected block level node\n getSelectedNode: (editor: Editor): NodeEntry<Node> => {\n const [node] = Editor.nodes<Element>(editor, {\n at: editor.selection || undefined,\n match: n => Element.isElement(n),\n mode: 'highest'\n });\n return node;\n },\n // Appends a 3x3 table into the editor and adds a blank line to the bottom\n appendTable: (editor: Editor) => {\n const baseArr: unknown[][] = new Array(3).fill(new Array(3).fill(0));\n const table: [CosmosCustom.TableElement, CosmosCustom.ParagraphElement] = [\n {\n type: 'table',\n children: [\n {\n type: 'table-body',\n children: baseArr.map(row => {\n return {\n type: 'table-row',\n children: row.map(() => {\n return {\n type: 'table-cell',\n children: [{ type: 'paragraph', children: [{ text: '' }] }]\n };\n })\n };\n })\n }\n ]\n },\n {\n type: 'paragraph',\n children: [{ text: '' }]\n }\n ];\n\n Transforms.insertNodes(editor, table, { mode: 'highest' });\n const [firstTableCell] = Editor.nodes<CosmosCustom.ParagraphElement>(editor, {\n at: editor.selection?.anchor.path.slice(0, 1),\n match: n => Element.isElement(n) && n.type === 'paragraph',\n mode: 'highest'\n });\n if (firstTableCell) {\n const [, path] = firstTableCell;\n path.push(0);\n const nextPosition = { path, offset: 0 };\n Transforms.setSelection(editor, { anchor: nextPosition, focus: nextPosition });\n }\n },\n // Finds the image placeholder and replaces it with an image node\n appendImage: (editor: Editor, imageData: { src: string; alt: string }, id: string) => {\n const [node] = Editor.nodes<CosmosCustom.ImagePlaceholderElement>(editor, {\n match: n => Element.isElement(n) && n.type === 'image-placeholder',\n at: [Number(id)]\n });\n\n if (node) {\n const [, path] = node;\n Transforms.setNodes(\n editor,\n { type: 'image', src: imageData.src, alt: imageData.alt },\n { at: path }\n );\n Transforms.unsetNodes(editor, 'id', { at: path });\n return Editor.end(editor, path);\n }\n return null;\n },\n appendImagePlaceholder: (editor: Editor): string => {\n const node = commands.getSelectedNode(editor);\n\n if (node) {\n const [, path] = node;\n const next = Path.next(path);\n Transforms.insertNodes(\n editor,\n { type: 'image-placeholder', children: [{ text: '' }] },\n { at: next }\n );\n return next[0].toString();\n }\n return '';\n },\n // Creates a link at the given selection\n createLink: (editor: Editor, text: string, url: string, selection: Range | null) => {\n const linkNode = { text: text || url, href: url };\n if (selection) {\n if (Range.isCollapsed(selection)) {\n const [node] = Editor.node(editor, selection);\n if (Text.isText(node) && node.href) {\n const before = Editor.before(editor, selection, { unit: 'word' });\n const after = Editor.after(editor, selection, { unit: 'word' });\n\n if (before && after) {\n Transforms.insertNodes(editor, [linkNode], { at: { anchor: before, focus: after } });\n } else if (before) {\n const calculatedAfter = Editor.after(editor, before, { unit: 'word' });\n if (calculatedAfter) {\n Transforms.insertNodes(editor, [linkNode], {\n at: { anchor: before, focus: calculatedAfter }\n });\n }\n } else if (after) {\n const calculatedBefore = Editor.before(editor, after, { unit: 'word' });\n if (calculatedBefore) {\n Transforms.insertNodes(editor, [linkNode], {\n at: { anchor: calculatedBefore, focus: after }\n });\n }\n }\n } else {\n Transforms.insertNodes(editor, [linkNode]);\n }\n } else {\n Transforms.insertNodes(editor, [linkNode], {\n at: selection\n });\n }\n } else {\n Transforms.insertNodes(editor, [linkNode]);\n }\n },\n // Used to handle the enter key when the cursor is next to an image, inserts a new paragraph\n checkImageEnter: (editor: Editor, e: KeyboardEvent) => {\n const [image] = Editor.nodes<CosmosCustom.ImageElement>(editor, {\n match: n => Element.isElement(n) && n.type === 'image'\n });\n if (image) {\n if (e.keyCode < 37 && e.keyCode > 40) {\n e.preventDefault();\n }\n if (e.key === 'Enter') {\n e.preventDefault();\n const [, path] = image;\n const next = Path.next(path);\n Transforms.insertNodes(\n editor,\n { type: 'paragraph', children: [{ text: '' }] },\n { at: next }\n );\n Transforms.select(editor, next);\n }\n }\n },\n // Turns the href and/or searchResult property off on the text node when space is pressed while on a link or mention\n checkLinkBreak: (editor: Editor, e: KeyboardEvent) => {\n const [link] = Editor.nodes<Text>(editor, {\n match: n => Text.isText(n) && !!n.href\n });\n const [searchResult] = Editor.nodes<Text>(editor, {\n match: n => Text.isText(n) && !!n.searchResult\n });\n if ((link || searchResult) && (e.key === ' ' || e.key === 'Enter')) {\n e.preventDefault();\n Editor.insertNode(editor, { text: e.key === 'Enter' ? '\\n' : ' ' });\n Editor.removeMark(editor, link ? 'href' : 'searchResult');\n }\n },\n /**\n * Turns the searchResult property off on the text node when any key is pressed while on a searchResult.\n * Will delete the searchResult node if backspace key is hit.\n * Will re-position cursor to the start/end of the searchResult if arrow navigation is used.\n */\n checkSearchDownKeys: (editor: Editor, e: KeyboardEvent) => {\n const [text] = Editor.nodes<Text>(editor, {\n match: n => Text.isText(n)\n });\n\n if (text) {\n const [node, path] = text;\n const nextNode = Editor.next(editor)?.[0] as Text;\n const nextPath = Editor.next(editor)?.[1];\n const previousNode = Editor.previous(editor)?.[0] as Text;\n const previousPath = Editor.previous(editor)?.[1];\n\n const next = nextNode && nextNode.searchResult;\n const nextInline = next && path[0] === nextPath?.[0];\n const previous = previousNode && previousNode.searchResult;\n const previousInline = previous && path[0] === previousPath?.[0];\n\n // Checks if the current selection is a single cursor point rather than spanning multiple characters\n const singlePointSelection =\n editor.selection?.anchor.offset === editor.selection?.focus.offset &&\n editor.selection?.anchor.path[0] === editor.selection?.focus.path[0] &&\n editor.selection?.anchor.path[1] === editor.selection?.focus.path[1];\n\n // Checks if the current selected node is a search result, or directly adjacent inline with a search result\n if (node.searchResult || (next && nextInline) || (previous && previousInline)) {\n const atStart = node.searchResult && editor.selection?.anchor.offset === 0;\n const atEnd = node.searchResult && editor.selection?.anchor.offset === node.text.length;\n\n // Deletes the entire search result only if the cursor is at the end of the search result\n if (e.key === 'Backspace' && (atEnd || (previous && previousInline))) {\n if (singlePointSelection) e.preventDefault();\n Transforms.delete(editor, { at: previous ? previousPath : path });\n // Deletes the entire search result only if the cursor is at the start of the search result\n } else if (e.key === 'Delete' && (atStart || (next && nextInline))) {\n if (singlePointSelection) e.preventDefault();\n Transforms.delete(editor, { at: next ? nextPath : path });\n // Moves cursor to start of search result only if the cursor is at the end of the search result\n } else if (e.key === 'ArrowLeft' && (atEnd || (previous && previousInline))) {\n if (singlePointSelection) e.preventDefault();\n Transforms.move(editor, {\n distance: previous ? previousNode.text.length : node.text.length,\n unit: 'character',\n reverse: true\n });\n // Moves cursor to end of search result only if the cursor is at the start of the search result\n } else if (e.key === 'ArrowRight' && (atStart || (next && nextInline))) {\n if (singlePointSelection) e.preventDefault();\n Transforms.move(editor, {\n distance: next ? nextNode.text.length : node.text.length,\n unit: 'character'\n });\n // Ensures all other character (besides special key bindings) are inserted as plain text\n } else if (e.key.length === 1 && !e.altKey && !e.ctrlKey && !e.metaKey) {\n e.preventDefault();\n Editor.insertNode(editor, { text: e.key === 'Enter' ? '\\n' : e.key });\n }\n\n // Prevents partial search result selections from disabling the searchResult flag\n if (singlePointSelection) {\n Editor.removeMark(editor, 'searchResult');\n }\n }\n }\n },\n // Checks arrow navigation key up events around search results\n checkSearchUpKeys: (editor: Editor, e: KeyboardEvent) => {\n const [text] = Editor.nodes<Text>(editor, {\n match: n => Text.isText(n)\n });\n\n if (text) {\n const [node, path] = text;\n\n const cursorInSearchResult =\n node.searchResult &&\n editor.selection?.anchor.path[0] === path[0] &&\n editor.selection?.anchor.path[1] === path[1];\n\n if (cursorInSearchResult && editor.selection) {\n const distanceToStart = editor.selection.anchor.offset;\n const distanceToEnd = node.text.length - editor.selection.anchor.offset;\n // Moves cursor to the start of the search result\n if (e.key === 'ArrowLeft') {\n e.preventDefault();\n Transforms.move(editor, {\n distance: distanceToStart,\n unit: 'character',\n reverse: true\n });\n // Moves cursor to end of search result\n } else if (e.key === 'ArrowRight') {\n e.preventDefault();\n Transforms.move(editor, {\n distance: distanceToEnd,\n unit: 'character'\n });\n // Moves cursor to start or end of search result, whichever is closer\n } else if (e.key === 'ArrowUp' || e.key === 'ArrowDown') {\n e.preventDefault();\n Transforms.move(editor, {\n distance: distanceToStart <= distanceToEnd ? distanceToStart : distanceToEnd,\n unit: 'character',\n reverse: distanceToStart <= distanceToEnd\n });\n }\n }\n }\n },\n // Either adds a tab character or indents a list depending on the selection\n indent: (editor: Editor) => {\n const [nodeInListItem] = Editor.nodes<CosmosCustom.ListElement>(editor, {\n match: n => Element.isElement(n) && n.type === 'list-item'\n });\n\n if (nodeInListItem) {\n ListCommands.nestList(editor);\n return;\n }\n\n if (editor.selection) {\n let start = Editor.before(editor, editor.selection, { unit: 'block' });\n start = start || Editor.start(editor, editor.selection);\n Transforms.insertText(editor, '\\t', { at: start });\n }\n },\n // Either removes a tab character or un indents a list depending on the selection\n unindent: (editor: Editor) => {\n const [nodeInListItem] = Editor.nodes<CosmosCustom.ListItemElement>(editor, {\n match: n => Element.isElement(n) && n.type === 'list-item'\n });\n\n if (nodeInListItem) {\n ListCommands.unNestList(editor);\n return;\n }\n\n if (editor.selection) {\n let start = Editor.before(editor, editor.selection, { unit: 'block' });\n start = start || Editor.start(editor, editor.selection);\n let end = Editor.after(editor, editor.selection, { unit: 'block' });\n end = end || Editor.end(editor, editor.selection);\n if (start && end) {\n const text = Editor.string(editor, { anchor: start, focus: end });\n const newText = text.replace(/\\t/, '');\n Transforms.insertText(editor, newText, { at: { anchor: start, focus: end } });\n }\n }\n },\n checkKeyCommands: (editor: Editor, e: KeyboardEvent, markdownOnly?: boolean) => {\n const cmdOrCtrl = e.metaKey || e.ctrlKey;\n let commandExecuted = false;\n if (cmdOrCtrl && !markdownOnly) {\n // Command or Ctrl + Shift\n if (e.shiftKey) {\n switch (e.key) {\n case 'b':\n commands.toggleFormat('bold', editor);\n commandExecuted = true;\n break;\n case 'i':\n commands.toggleFormat('italic', editor);\n commandExecuted = true;\n break;\n case 'x':\n commands.toggleFormat('line-through', editor);\n commandExecuted = true;\n break;\n case 'l':\n ListCommands.toggleList('unordered-list', editor);\n commandExecuted = true;\n break;\n default:\n }\n // Command or Ctrl but not alt\n } else if (!e.shiftKey && !e.altKey) {\n switch (e.key) {\n case 'b':\n commands.toggleFormat('bold', editor);\n commandExecuted = true;\n break;\n case 'i':\n commands.toggleFormat('italic', editor);\n commandExecuted = true;\n break;\n default:\n }\n }\n } else if (cmdOrCtrl && markdownOnly && !e.shiftKey && !e.altKey && e.key === 'x') {\n const [searchResult] = Editor.nodes<Text>(editor, {\n match: n => Text.isText(n) && !!n.searchResult\n });\n if (searchResult) {\n Editor.removeMark(editor, 'searchResult');\n }\n }\n\n if (e.altKey && !markdownOnly) {\n if (cmdOrCtrl) {\n if (textKeyCodeMapping[e.keyCode]) {\n commands.setBlock(textKeyCodeMapping[e.keyCode], editor);\n commandExecuted = true;\n }\n } else if (e.keyCode === 77) {\n if (e.shiftKey) {\n commands.unindent(editor);\n commandExecuted = true;\n } else {\n commands.indent(editor);\n commandExecuted = true;\n }\n }\n }\n\n if (markdownOnly && e.key === 'Backspace') {\n const [searchResult] = Editor.nodes<Text>(editor, {\n match: n => Text.isText(n) && !!n.searchResult\n });\n if (searchResult) {\n Editor.removeMark(editor, 'searchResult');\n }\n }\n\n if (commandExecuted) e.preventDefault();\n }\n};\n\nexport default commands;\n"]}
@@ -1,12 +1,6 @@
1
1
  import type * as slate from 'slate';
2
- import { SearchRenderers } from '../RichTextEditor.types';
3
2
  import { InteractionRenderers } from '../RichTextViewer.types';
4
- interface Renderers {
5
- regexPattern: InteractionRenderers['regexPattern'];
6
- type?: InteractionRenderers['type'];
7
- component?: InteractionRenderers['component'];
8
- getSearchAttributes?: SearchRenderers['getSearchAttributes'];
9
- }
10
- declare const parseTextToCustomSlateNodes: (text: string, renderers?: Renderers[] | undefined) => (slate.CosmosCustom.Element | slate.CosmosCustom.Text)[];
3
+ export declare const getXMLAttributes: (element: string) => Record<string, string> | undefined;
4
+ declare const parseTextToCustomSlateNodes: (text: string, renderers?: InteractionRenderers[]) => (slate.Element | slate.Text)[];
11
5
  export default parseTextToCustomSlateNodes;
12
6
  //# sourceMappingURL=interactionRenderer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"interactionRenderer.d.ts","sourceRoot":"","sources":["../../../../src/components/RichTextEditor/utils/interactionRenderer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,KAAK,MAAM,OAAO,CAAC;AAEpC,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAE/D,UAAU,SAAS;IACjB,YAAY,EAAE,oBAAoB,CAAC,cAAc,CAAC,CAAC;IACnD,IAAI,CAAC,EAAE,oBAAoB,CAAC,MAAM,CAAC,CAAC;IACpC,SAAS,CAAC,EAAE,oBAAoB,CAAC,WAAW,CAAC,CAAC;IAC9C,mBAAmB,CAAC,EAAE,eAAe,CAAC,qBAAqB,CAAC,CAAC;CAC9D;AA6BD,QAAA,MAAM,2BAA2B,SAAU,MAAM,kGA+FhD,CAAC;AAEF,eAAe,2BAA2B,CAAC"}
1
+ {"version":3,"file":"interactionRenderer.d.ts","sourceRoot":"","sources":["../../../../src/components/RichTextEditor/utils/interactionRenderer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,KAAK,MAAM,OAAO,CAAC;AAGpC,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAgC/D,eAAO,MAAM,gBAAgB,YAAa,MAAM,KAAG,OAAO,MAAM,EAAE,MAAM,CAAC,GAAG,SAc3E,CAAC;AAGF,QAAA,MAAM,2BAA2B,SACzB,MAAM,cACA,oBAAoB,EAAE,KACjC,CAAC,aAAa,GAAG,UAAU,CAAC,EAuG9B,CAAC;AAEF,eAAe,2BAA2B,CAAC"}
@@ -1,3 +1,5 @@
1
+ import { TLDs } from 'global-tld-list';
2
+ const parser = new DOMParser();
1
3
  // Checks a string for regex matches and returns an array of matches
2
4
  const checkRegex = (params) => {
3
5
  const regexMatches = [];
@@ -14,6 +16,21 @@ const checkRegex = (params) => {
14
16
  }
15
17
  return regexMatches;
16
18
  };
19
+ // Extracts all properties from an xml element represented as a string
20
+ export const getXMLAttributes = (element) => {
21
+ const document = parser.parseFromString(element, 'application/xml');
22
+ if (document.querySelector('parsererror'))
23
+ return undefined;
24
+ const attributes = {};
25
+ for (let i = 0; i < document.documentElement.attributes.length; i += 1) {
26
+ const attr = document.documentElement.attributes.item(i);
27
+ if (attr) {
28
+ attributes[attr.name] = attr.value;
29
+ }
30
+ }
31
+ attributes.rawText = element;
32
+ return attributes;
33
+ };
17
34
  // Parses text node to custom slate node
18
35
  const parseTextToCustomSlateNodes = (text, renderers) => {
19
36
  // Runs through an array of custom renderers and gets the matches
@@ -48,10 +65,13 @@ const parseTextToCustomSlateNodes = (text, renderers) => {
48
65
  });
49
66
  }
50
67
  if (pos.type === 'builtin-url' && pos.match.groups) {
51
- const { leadingChar, url, trailingChar } = pos.match.groups;
68
+ const { leadingChar, url } = pos.match.groups;
52
69
  try {
53
70
  // Check for valid URL since the regex isn't exhaustive.
54
71
  const { href } = new URL(pos.match.groups.protocol ? url : `https://${url}`);
72
+ if (!TLDs.includes(pos.match.groups.tld)) {
73
+ throw new Error('Invalid URL. Skipping formatting.');
74
+ }
55
75
  if (leadingChar) {
56
76
  nodes.push({ text: leadingChar });
57
77
  }
@@ -59,40 +79,47 @@ const parseTextToCustomSlateNodes = (text, renderers) => {
59
79
  text: url,
60
80
  href
61
81
  });
62
- if (trailingChar) {
63
- nodes.push({ text: trailingChar });
64
- }
65
82
  }
66
83
  catch {
67
84
  // Invalid URL, just render as text.
68
85
  nodes.push({ text: pos.match[0] });
69
86
  }
70
87
  }
71
- else if (pos.component) {
72
- nodes.push({
73
- type: 'custom',
74
- component: pos.component,
75
- content: pos.match,
76
- children: [{ text: '' }]
77
- });
78
- }
79
- else if (pos.getSearchAttributes) {
80
- const searchResult = pos.getSearchAttributes(pos.match);
81
- if (searchResult) {
88
+ else if (pos.xmlElement) {
89
+ const xmlAttributes = getXMLAttributes(pos.match[0]);
90
+ if (!xmlAttributes) {
91
+ // Invalid XML, just render as text.
92
+ nodes.push({ text: pos.match[0] });
93
+ }
94
+ else if (pos.component) {
82
95
  nodes.push({
83
- text: searchResult.text,
84
- searchResult: {
85
- markdown: searchResult.markdown,
86
- component: searchResult.component,
87
- props: searchResult.props,
88
- toJSON: () => undefined
89
- }
96
+ type: 'custom',
97
+ component: pos.component,
98
+ content: xmlAttributes,
99
+ children: [{ text: '' }]
90
100
  });
91
101
  }
102
+ else if (pos.getSearchAttributes) {
103
+ const searchResult = pos.getSearchAttributes(pos.xmlElement, pos.match[0]);
104
+ if (searchResult && searchResult.text) {
105
+ nodes.push({
106
+ text: searchResult.text,
107
+ searchResult: {
108
+ markdown: searchResult.markdown,
109
+ component: searchResult.component,
110
+ props: searchResult.props,
111
+ toJSON: () => undefined
112
+ }
113
+ });
114
+ }
115
+ else {
116
+ nodes.push({ text: pos.match[0] });
117
+ }
118
+ }
92
119
  }
93
120
  /* If we are at the end of the positions array, and there's still text left
94
121
  slice the text and add it as a new text node */
95
- if (i === positions.length - 1 && pos.end < text.length - 1) {
122
+ if (i === positions.length - 1 && pos.end < text.length) {
96
123
  nodes.push({
97
124
  text: text.slice(pos.end, text.length)
98
125
  });
@@ -1 +1 @@
1
- {"version":3,"file":"interactionRenderer.js","sourceRoot":"","sources":["../../../../src/components/RichTextEditor/utils/interactionRenderer.ts"],"names":[],"mappings":"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","sourcesContent":["import type * as slate from 'slate';\n\nimport { SearchRenderers } from '../RichTextEditor.types';\nimport { InteractionRenderers } from '../RichTextViewer.types';\n\ninterface Renderers {\n regexPattern: InteractionRenderers['regexPattern'];\n type?: InteractionRenderers['type'];\n component?: InteractionRenderers['component'];\n getSearchAttributes?: SearchRenderers['getSearchAttributes'];\n}\ninterface RegexMatch extends Renderers {\n start: number;\n end: number;\n match: RegExpExecArray;\n}\n\ninterface CheckRegexParams extends Renderers {\n text: string;\n}\n\n// Checks a string for regex matches and returns an array of matches\nconst checkRegex = (params: CheckRegexParams) => {\n const regexMatches: RegexMatch[] = [];\n let res;\n // eslint-disable-next-line no-cond-assign\n while ((res = params.regexPattern.exec(params.text))) {\n const start = res.index;\n regexMatches.push({\n start,\n end: start + res[0].length,\n match: res,\n ...params\n });\n }\n return regexMatches;\n};\n\n// Parses text node to custom slate node\nconst parseTextToCustomSlateNodes = (text: string, renderers?: Renderers[]) => {\n // Runs through an array of custom renderers and gets the matches\n const positions: RegexMatch[] =\n renderers?.flatMap(renderer => checkRegex({ text, ...renderer })) || [];\n\n // Early exit when no matched positions\n if (positions.length === 0) {\n return [{ text }];\n }\n\n // Sorts the matches based on the start positions of the matches\n positions.sort((a, b) => a.start - b.start);\n\n const nodes: (slate.Element | slate.Text)[] = [];\n\n // Use the regex match positions to slice the text into the correct text nodes and other custom nodes\n let lastPos: RegexMatch;\n positions.forEach((pos, i) => {\n /* If the first regex match isn't at the start of the text node,\n slice the text node up to the first match and insert it into the nodes array */\n\n if (i === 0 && pos.start !== 0) {\n nodes.push({\n text: text.slice(i, pos.start)\n });\n }\n\n /* If there was a last position, slice the text between the last position\n and the new position to insert it as a new text node */\n if (lastPos && lastPos.end < pos.start) {\n nodes.push({\n text: text.slice(lastPos.end, pos.start)\n });\n } else if (i !== 0) {\n nodes.push({\n text: ' '\n });\n }\n\n if (pos.type === 'builtin-url' && pos.match.groups) {\n const { leadingChar, url, trailingChar } = pos.match.groups;\n\n try {\n // Check for valid URL since the regex isn't exhaustive.\n const { href } = new URL(pos.match.groups.protocol ? url : `https://${url}`);\n\n if (leadingChar) {\n nodes.push({ text: leadingChar });\n }\n\n nodes.push({\n text: url,\n href\n });\n\n if (trailingChar) {\n nodes.push({ text: trailingChar });\n }\n } catch {\n // Invalid URL, just render as text.\n nodes.push({ text: pos.match[0] });\n }\n } else if (pos.component) {\n nodes.push({\n type: 'custom',\n component: pos.component,\n content: pos.match,\n children: [{ text: '' }]\n });\n } else if (pos.getSearchAttributes) {\n const searchResult = pos.getSearchAttributes(pos.match);\n if (searchResult) {\n nodes.push({\n text: searchResult.text,\n searchResult: {\n markdown: searchResult.markdown,\n component: searchResult.component,\n props: searchResult.props,\n toJSON: () => undefined\n }\n });\n }\n }\n\n /* If we are at the end of the positions array, and there's still text left\n slice the text and add it as a new text node */\n if (i === positions.length - 1 && pos.end < text.length - 1) {\n nodes.push({\n text: text.slice(pos.end, text.length)\n });\n }\n lastPos = pos;\n });\n\n return nodes.length > 0 ? nodes : [{ text: '' }];\n};\n\nexport default parseTextToCustomSlateNodes;\n"]}
1
+ {"version":3,"file":"interactionRenderer.js","sourceRoot":"","sources":["../../../../src/components/RichTextEditor/utils/interactionRenderer.ts"],"names":[],"mappings":"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","sourcesContent":["import type * as slate from 'slate';\nimport { TLDs } from 'global-tld-list';\n\nimport { InteractionRenderers } from '../RichTextViewer.types';\n\ninterface RegexMatch extends InteractionRenderers {\n start: number;\n end: number;\n match: RegExpExecArray;\n}\n\ninterface CheckRegexParams extends InteractionRenderers {\n text: string;\n}\n\nconst parser = new DOMParser();\n\n// Checks a string for regex matches and returns an array of matches\nconst checkRegex = (params: CheckRegexParams) => {\n const regexMatches: RegexMatch[] = [];\n let res;\n // eslint-disable-next-line no-cond-assign\n while ((res = params.regexPattern.exec(params.text))) {\n const start = res.index;\n regexMatches.push({\n start,\n end: start + res[0].length,\n match: res,\n ...params\n });\n }\n return regexMatches;\n};\n\n// Extracts all properties from an xml element represented as a string\nexport const getXMLAttributes = (element: string): Record<string, string> | undefined => {\n const document = parser.parseFromString(element, 'application/xml');\n if (document.querySelector('parsererror')) return undefined;\n const attributes: Record<string, string> = {};\n\n for (let i = 0; i < document.documentElement.attributes.length; i += 1) {\n const attr = document.documentElement.attributes.item(i);\n if (attr) {\n attributes[attr.name] = attr.value;\n }\n }\n attributes.rawText = element;\n\n return attributes;\n};\n\n// Parses text node to custom slate node\nconst parseTextToCustomSlateNodes = (\n text: string,\n renderers?: InteractionRenderers[]\n): (slate.Element | slate.Text)[] => {\n // Runs through an array of custom renderers and gets the matches\n const positions: RegexMatch[] =\n renderers?.flatMap(renderer => checkRegex({ text, ...renderer })) || [];\n\n // Early exit when no matched positions\n if (positions.length === 0) {\n return [{ text }];\n }\n\n // Sorts the matches based on the start positions of the matches\n positions.sort((a, b) => a.start - b.start);\n\n const nodes: (slate.Element | slate.Text)[] = [];\n\n // Use the regex match positions to slice the text into the correct text nodes and other custom nodes\n let lastPos: RegexMatch;\n positions.forEach((pos, i) => {\n /* If the first regex match isn't at the start of the text node,\n slice the text node up to the first match and insert it into the nodes array */\n\n if (i === 0 && pos.start !== 0) {\n nodes.push({\n text: text.slice(i, pos.start)\n });\n }\n\n /* If there was a last position, slice the text between the last position\n and the new position to insert it as a new text node */\n if (lastPos && lastPos.end < pos.start) {\n nodes.push({\n text: text.slice(lastPos.end, pos.start)\n });\n } else if (i !== 0) {\n nodes.push({\n text: ' '\n });\n }\n\n if (pos.type === 'builtin-url' && pos.match.groups) {\n const { leadingChar, url } = pos.match.groups;\n\n try {\n // Check for valid URL since the regex isn't exhaustive.\n const { href } = new URL(pos.match.groups.protocol ? url : `https://${url}`);\n if (!TLDs.includes(pos.match.groups.tld)) {\n throw new Error('Invalid URL. Skipping formatting.');\n }\n\n if (leadingChar) {\n nodes.push({ text: leadingChar });\n }\n\n nodes.push({\n text: url,\n href\n });\n } catch {\n // Invalid URL, just render as text.\n nodes.push({ text: pos.match[0] });\n }\n } else if (pos.xmlElement) {\n const xmlAttributes = getXMLAttributes(pos.match[0]);\n\n if (!xmlAttributes) {\n // Invalid XML, just render as text.\n nodes.push({ text: pos.match[0] });\n } else if (pos.component) {\n nodes.push({\n type: 'custom',\n component: pos.component,\n content: xmlAttributes,\n children: [{ text: '' }]\n });\n } else if (pos.getSearchAttributes) {\n const searchResult = pos.getSearchAttributes(pos.xmlElement, pos.match[0]);\n if (searchResult && searchResult.text) {\n nodes.push({\n text: searchResult.text,\n searchResult: {\n markdown: searchResult.markdown,\n component: searchResult.component,\n props: searchResult.props,\n toJSON: () => undefined\n }\n });\n } else {\n nodes.push({ text: pos.match[0] });\n }\n }\n }\n\n /* If we are at the end of the positions array, and there's still text left\n slice the text and add it as a new text node */\n if (i === positions.length - 1 && pos.end < text.length) {\n nodes.push({\n text: text.slice(pos.end, text.length)\n });\n }\n lastPos = pos;\n });\n\n return nodes.length > 0 ? nodes : [{ text: '' }];\n};\n\nexport default parseTextToCustomSlateNodes;\n"]}
@@ -1,7 +1,6 @@
1
1
  import { Element, Text } from 'slate';
2
- import { RichTextViewerProps } from '../RichTextViewer.types';
3
- import { RichTextEditorProps } from '../RichTextEditor.types';
4
- export declare const convertMarkdownForEditor: (md?: string, searchRenderers?: RichTextEditorProps['searchRenderers']) => (Element | Text)[];
5
- declare const convertMarkdown: (md: string, interactionRenderers?: RichTextViewerProps['interactionRenderers'], markdownMap?: RichTextViewerProps['markdownMap']) => (Element | Text)[];
2
+ import { InteractionRenderers, RichTextViewerProps } from '../RichTextViewer.types';
3
+ export declare const convertMarkdownForEditor: (md?: string, searchRenderers?: InteractionRenderers[]) => (Element | Text)[];
4
+ declare const convertMarkdown: (md: string, interactionRenderers?: InteractionRenderers[], markdownMap?: RichTextViewerProps['markdownMap']) => (Element | Text)[];
6
5
  export default convertMarkdown;
7
6
  //# sourceMappingURL=markdownConverter.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"markdownConverter.d.ts","sourceRoot":"","sources":["../../../../src/components/RichTextEditor/utils/markdownConverter.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAgB,OAAO,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC;AAKpD,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAoI9D,eAAO,MAAM,wBAAwB,kCAEjB,mBAAmB,CAAC,iBAAiB,CAAC,KACvD,CAAC,OAAO,GAAG,IAAI,CAAC,EAOlB,CAAC;AAIF,QAAA,MAAM,eAAe,OACf,MAAM,yBACa,mBAAmB,CAAC,sBAAsB,CAAC,gBACpD,mBAAmB,CAAC,aAAa,CAAC,KAC/C,CAAC,OAAO,GAAG,IAAI,CAAC,EAIlB,CAAC;AAEF,eAAe,eAAe,CAAC"}
1
+ {"version":3,"file":"markdownConverter.d.ts","sourceRoot":"","sources":["../../../../src/components/RichTextEditor/utils/markdownConverter.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAgB,OAAO,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC;AAKpD,OAAO,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAoIpF,eAAO,MAAM,wBAAwB,kCAEjB,oBAAoB,EAAE,KACvC,CAAC,OAAO,GAAG,IAAI,CAAC,EAOlB,CAAC;AAIF,QAAA,MAAM,eAAe,OACf,MAAM,yBACa,oBAAoB,EAAE,gBAC/B,mBAAmB,CAAC,aAAa,CAAC,KAC/C,CAAC,OAAO,GAAG,IAAI,CAAC,EAIlB,CAAC;AAEF,eAAe,eAAe,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"markdownConverter.js","sourceRoot":"","sources":["../../../../src/components/RichTextEditor/utils/markdownConverter.tsx"],"names":[],"mappings":"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","sourcesContent":["import { CosmosCustom, Element, Text } from 'slate';\nimport { marked } from 'marked';\n\nimport { hasProp } from '@pega/cosmos-react-core';\n\nimport { RichTextViewerProps } from '../RichTextViewer.types';\nimport { RichTextEditorProps } from '../RichTextEditor.types';\n\nimport parseTextToCustomSlateNodes from './interactionRenderer';\n\nmarked.setOptions({ mangle: false });\n\nconst getNode = (\n token: marked.Token,\n interactionRenderers?: RichTextViewerProps['interactionRenderers'],\n markdownMap?: RichTextViewerProps['markdownMap']\n): Element | Text => {\n if (!hasProp(token, 'type') || token.type === 'def')\n return { type: 'paragraph', children: [{ text: '' }] };\n\n let children;\n\n if (hasProp(token, 'tokens')) {\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n children = markDownToSlate(\n (token.tokens as marked.Tokens.Link['tokens']) || [],\n interactionRenderers,\n markdownMap\n );\n } else if (hasProp(token, 'items')) {\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n children = markDownToSlate(token.items, interactionRenderers, markdownMap);\n } else {\n let mdText = '';\n\n if (/* token.type === 'link' || */ 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 // Typed as any since typescript is unaware that token type matches argument\n const CustomComponent: any = markdownMap[token.type]?.(token as any);\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 {\n italic: true,\n text: token.text || ''\n };\n }\n case 'strong': {\n return {\n bold: true,\n text: token.text || ''\n };\n }\n case 'del': {\n return {\n 'line-through': true,\n text: token.text || ''\n };\n }\n case 'list': {\n return {\n type: token.ordered ? 'ordered-list' : 'unordered-list',\n children: children as CosmosCustom.ListItemElement[]\n };\n }\n case 'list_item': {\n return {\n type: 'list-item',\n children: children as Element[]\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\nconst markDownToSlate = (\n tokens: marked.Token[],\n interactionRenderers?: RichTextViewerProps['interactionRenderers'],\n markdownMap?: RichTextViewerProps['markdownMap']\n): (Element | Text)[] => {\n return tokens.map(token => {\n return getNode(token, interactionRenderers, markdownMap);\n });\n};\n\nexport const convertMarkdownForEditor = (\n md = '',\n searchRenderers?: RichTextEditorProps['searchRenderers']\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\nin Feed Component to pass them down to custom elements */\nconst convertMarkdown = (\n md: string,\n interactionRenderers?: RichTextViewerProps['interactionRenderers'],\n markdownMap?: RichTextViewerProps['markdownMap']\n): (Element | Text)[] => {\n const lexer = new marked.Lexer({ gfm: false });\n const output = lexer.lex(md);\n return markDownToSlate(output, interactionRenderers, markdownMap);\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 { CosmosCustom, Element, Text } from 'slate';\nimport { marked } from 'marked';\n\nimport { hasProp } from '@pega/cosmos-react-core';\n\nimport { InteractionRenderers, RichTextViewerProps } from '../RichTextViewer.types';\n\nimport parseTextToCustomSlateNodes from './interactionRenderer';\n\nmarked.setOptions({ mangle: false });\n\nconst getNode = (\n token: marked.Token,\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 let children;\n\n if (hasProp(token, 'tokens')) {\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n children = markDownToSlate(\n (token.tokens as marked.Tokens.Link['tokens']) || [],\n interactionRenderers,\n markdownMap\n );\n } else if (hasProp(token, 'items')) {\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n children = markDownToSlate(token.items, interactionRenderers, markdownMap);\n } else {\n let mdText = '';\n\n if (/* token.type === 'link' || */ 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 // Typed as any since typescript is unaware that token type matches argument\n const CustomComponent: any = markdownMap[token.type]?.(token as any);\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 {\n italic: true,\n text: token.text || ''\n };\n }\n case 'strong': {\n return {\n bold: true,\n text: token.text || ''\n };\n }\n case 'del': {\n return {\n 'line-through': true,\n text: token.text || ''\n };\n }\n case 'list': {\n return {\n type: token.ordered ? 'ordered-list' : 'unordered-list',\n children: children as CosmosCustom.ListItemElement[]\n };\n }\n case 'list_item': {\n return {\n type: 'list-item',\n children: children as Element[]\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\nconst markDownToSlate = (\n tokens: marked.Token[],\n interactionRenderers?: InteractionRenderers[],\n markdownMap?: RichTextViewerProps['markdownMap']\n): (Element | Text)[] => {\n return tokens.map(token => {\n return getNode(token, interactionRenderers, markdownMap);\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\nin 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: false });\n const output = lexer.lex(md);\n return markDownToSlate(output, interactionRenderers, markdownMap);\n};\n\nexport default convertMarkdown;\n"]}
@@ -1,5 +1,22 @@
1
- /// <reference types="react" />
2
1
  import { RenderElementProps, RenderLeafProps } from 'slate-react';
3
- export declare const nodeRenderer: (props: RenderElementProps) => JSX.Element;
4
- export declare const leafRenderer: (props: RenderLeafProps) => JSX.Element;
2
+ import { CosmosCustom } from 'slate';
3
+ import { ComponentType } from 'react';
4
+ import { Text } from '@pega/cosmos-react-core';
5
+ export declare const slateNodeRenderer: (props: RenderElementProps) => JSX.Element;
6
+ declare type Node = {
7
+ children: JSX.Element[];
8
+ type: string;
9
+ href?: string;
10
+ italic?: boolean;
11
+ bold?: boolean;
12
+ 'line-through'?: boolean;
13
+ component?: JSX.Element | ComponentType<any>;
14
+ src?: string;
15
+ alt?: string;
16
+ content?: Record<string, string>;
17
+ };
18
+ export declare const nodeRenderer: (node: Node) => JSX.Element;
19
+ export declare const slateLeafRenderer: (props: RenderLeafProps) => JSX.Element;
20
+ export declare const leafRenderer: (leaf: CosmosCustom.Text) => JSX.Element;
21
+ export {};
5
22
  //# sourceMappingURL=renderers.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"renderers.d.ts","sourceRoot":"","sources":["../../../../src/components/RichTextEditor/utils/renderers.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAOlE,eAAO,MAAM,YAAY,UAAW,kBAAkB,gBA6FrD,CAAC;AAGF,eAAO,MAAM,YAAY,UAAW,eAAe,gBAiClD,CAAC"}
1
+ {"version":3,"file":"renderers.d.ts","sourceRoot":"","sources":["../../../../src/components/RichTextEditor/utils/renderers.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAClE,OAAO,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AACrC,OAAO,EAAE,aAAa,EAAa,MAAM,OAAO,CAAC;AAGjD,OAAO,EAAE,IAAI,EAAe,MAAM,yBAAyB,CAAC;AAK5D,eAAO,MAAM,iBAAiB,UAAW,kBAAkB,gBA6F1D,CAAC;AAEF,aAAK,IAAI,GAAG;IACV,QAAQ,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,SAAS,CAAC,EAAE,GAAG,CAAC,OAAO,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC;IAC7C,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAClC,CAAC;AAGF,eAAO,MAAM,YAAY,SAAU,IAAI,gBAqEtC,CAAC;AAGF,eAAO,MAAM,iBAAiB,UAAW,eAAe,gBAiCvD,CAAC;AAMF,eAAO,MAAM,YAAY,SAAU,iBAAiB,gBAgCnD,CAAC"}
@@ -1,8 +1,9 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ import styled from 'styled-components';
2
3
  import { Text, Link, Image } from '@pega/cosmos-react-core';
3
4
  import { Table, TableRow, TableCell, TableBody } from '../DecoratorComponents/Table';
4
5
  // Renderer for block level elements
5
- export const nodeRenderer = (props) => {
6
+ export const slateNodeRenderer = (props) => {
6
7
  switch (props.element.type) {
7
8
  case 'heading-1':
8
9
  return (_jsx(Text, { variant: 'h1', ...props.attributes, children: props.children }));
@@ -57,8 +58,66 @@ export const nodeRenderer = (props) => {
57
58
  }
58
59
  }
59
60
  };
61
+ // Renderer for block level elements
62
+ export const nodeRenderer = (node) => {
63
+ switch (node.type) {
64
+ case 'heading-1':
65
+ return _jsx(Text, { variant: 'h1', children: node.children });
66
+ case 'heading-2':
67
+ return _jsx(Text, { variant: 'h2', children: node.children });
68
+ case 'heading-3':
69
+ return _jsx(Text, { variant: 'h3', children: node.children });
70
+ case 'heading-4':
71
+ return _jsx(Text, { variant: 'h4', children: node.children });
72
+ case 'ordered-list':
73
+ return _jsx("ol", { children: node.children });
74
+ case 'unordered-list':
75
+ return _jsx("ul", { children: node.children });
76
+ case 'list-item':
77
+ return _jsx("li", { children: node.children });
78
+ case 'custom': {
79
+ const CustomComponent = node.component;
80
+ let child = _jsx(CustomComponent, { children: node.content });
81
+ if (node.href) {
82
+ child = (_jsx(Link, { href: node.href, target: '_blank', children: child }));
83
+ }
84
+ if (node.italic) {
85
+ child = _jsx("em", { children: child });
86
+ }
87
+ if (node.bold) {
88
+ child = _jsx("strong", { children: child });
89
+ }
90
+ if (node['line-through']) {
91
+ child = _jsx("del", { children: child });
92
+ }
93
+ return child;
94
+ }
95
+ case 'override': {
96
+ return node.component;
97
+ }
98
+ case 'table':
99
+ return _jsx(Table, { children: node.children });
100
+ case 'table-body':
101
+ return _jsx(TableBody, { children: node.children });
102
+ case 'table-row':
103
+ return _jsx(TableRow, { children: node.children });
104
+ case 'table-cell':
105
+ return _jsx(TableCell, { children: node.children });
106
+ case 'paragraph':
107
+ return (_jsx("div", { children: _jsx(Text, { children: node.children }) }));
108
+ case 'image':
109
+ return (_jsxs("div", { children: [_jsx(Image, { src: node.src, alt: node.alt }), node.children] }));
110
+ case 'image-placeholder':
111
+ return _jsx("div", { children: node.children });
112
+ case 'space':
113
+ return _jsx("br", {});
114
+ default: {
115
+ return _jsx(_Fragment, { children: node.children });
116
+ }
117
+ }
118
+ };
60
119
  // Renderer for inline elements
61
- export const leafRenderer = (props) => {
120
+ export const slateLeafRenderer = (props) => {
62
121
  let child = props.children;
63
122
  if (props.leaf.searchResult) {
64
123
  const CustomComponent = props.leaf.searchResult.component;
@@ -78,4 +137,27 @@ export const leafRenderer = (props) => {
78
137
  }
79
138
  return _jsx("span", { ...props.attributes, children: child });
80
139
  };
140
+ const StyledSpan = styled.span `
141
+ white-space: pre-line;
142
+ `;
143
+ export const leafRenderer = (leaf) => {
144
+ let child = leaf.text;
145
+ if (leaf.searchResult) {
146
+ const CustomComponent = leaf.searchResult.component;
147
+ return (_jsx("span", { children: _jsx(CustomComponent, { ...leaf.searchResult.props, children: child }) }));
148
+ }
149
+ if (leaf['line-through']) {
150
+ child = _jsx("del", { children: child });
151
+ }
152
+ if (leaf.italic) {
153
+ child = _jsx("em", { children: child });
154
+ }
155
+ if (leaf.bold) {
156
+ child = _jsx("strong", { children: child });
157
+ }
158
+ if (leaf.href) {
159
+ child = (_jsx(Link, { href: leaf.href, target: '_blank', children: child }));
160
+ }
161
+ return _jsx(StyledSpan, { children: child });
162
+ };
81
163
  //# sourceMappingURL=renderers.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"renderers.js","sourceRoot":"","sources":["../../../../src/components/RichTextEditor/utils/renderers.tsx"],"names":[],"mappings":"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","sourcesContent":["import { RenderElementProps, RenderLeafProps } from 'slate-react';\n\nimport { Text, Link, Image } from '@pega/cosmos-react-core';\n\nimport { Table, TableRow, TableCell, TableBody } from '../DecoratorComponents/Table';\n\n// Renderer for block level elements\nexport const nodeRenderer = (props: RenderElementProps) => {\n switch (props.element.type) {\n case 'heading-1':\n return (\n <Text variant='h1' {...props.attributes}>\n {props.children}\n </Text>\n );\n case 'heading-2':\n return (\n <Text variant='h2' {...props.attributes}>\n {props.children}\n </Text>\n );\n case 'heading-3':\n return (\n <Text variant='h3' {...props.attributes}>\n {props.children}\n </Text>\n );\n case 'heading-4':\n return (\n <Text variant='h4' {...props.attributes}>\n {props.children}\n </Text>\n );\n case 'ordered-list':\n return <ol {...props.attributes}>{props.children}</ol>;\n case 'unordered-list':\n return <ul {...props.attributes}>{props.children}</ul>;\n case 'list-item':\n return (\n <li\n {...props.attributes}\n data-order={props.element.order}\n data-level={props.element.level}\n data-id={props.element.id}\n data-parent-id={props.element.parentId}\n >\n {props.children}\n </li>\n );\n case 'custom': {\n const CustomComponent = props.element.component;\n let child = <CustomComponent {...props.attributes}>{props.element.content}</CustomComponent>;\n if (props.element.href) {\n child = (\n <Link href={props.element.href} target='_blank'>\n {child}\n </Link>\n );\n }\n if (props.element.italic) {\n child = <em>{child}</em>;\n }\n if (props.element.bold) {\n child = <strong>{child}</strong>;\n }\n if (props.element['line-through']) {\n child = <del>{child}</del>;\n }\n return child;\n }\n case 'override': {\n return props.element.component;\n }\n case 'table':\n return <Table {...props.attributes}>{props.children}</Table>;\n case 'table-body':\n return <TableBody {...props.attributes}>{props.children}</TableBody>;\n case 'table-row':\n return <TableRow {...props.attributes}>{props.children}</TableRow>;\n case 'table-cell':\n return <TableCell {...props.attributes}>{props.children}</TableCell>;\n case 'paragraph':\n return (\n <div>\n <Text {...props.attributes}>{props.children}</Text>\n </div>\n );\n case 'image':\n return (\n <div {...props.attributes}>\n <Image src={props.element.src} alt={props.element.alt as string} />\n {props.children}\n </div>\n );\n case 'image-placeholder':\n return <div {...props.attributes}>{props.children}</div>;\n default: {\n return <span {...props.attributes}>{props.children}</span>;\n }\n }\n};\n\n// Renderer for inline elements\nexport const leafRenderer = (props: RenderLeafProps) => {\n let child = props.children;\n\n if (props.leaf.searchResult) {\n const CustomComponent = props.leaf.searchResult.component;\n return (\n <span {...props.attributes}>\n <CustomComponent {...props.leaf.searchResult.props}>{child}</CustomComponent>\n </span>\n );\n }\n\n if (props.leaf['line-through']) {\n child = <del>{child}</del>;\n }\n\n if (props.leaf.italic) {\n child = <em>{child}</em>;\n }\n\n if (props.leaf.bold) {\n child = <strong>{child}</strong>;\n }\n\n if (props.leaf.href) {\n child = (\n <Link href={props.leaf.href} target='_blank'>\n {child}\n </Link>\n );\n }\n\n return <span {...props.attributes}>{child}</span>;\n};\n"]}
1
+ {"version":3,"file":"renderers.js","sourceRoot":"","sources":["../../../../src/components/RichTextEditor/utils/renderers.tsx"],"names":[],"mappings":"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","sourcesContent":["import { RenderElementProps, RenderLeafProps } from 'slate-react';\nimport { CosmosCustom } from 'slate';\nimport { ComponentType, ReactNode } from 'react';\nimport styled from 'styled-components';\n\nimport { Text, Link, Image } from '@pega/cosmos-react-core';\n\nimport { Table, TableRow, TableCell, TableBody } from '../DecoratorComponents/Table';\n\n// Renderer for block level elements\nexport const slateNodeRenderer = (props: RenderElementProps) => {\n switch (props.element.type) {\n case 'heading-1':\n return (\n <Text variant='h1' {...props.attributes}>\n {props.children}\n </Text>\n );\n case 'heading-2':\n return (\n <Text variant='h2' {...props.attributes}>\n {props.children}\n </Text>\n );\n case 'heading-3':\n return (\n <Text variant='h3' {...props.attributes}>\n {props.children}\n </Text>\n );\n case 'heading-4':\n return (\n <Text variant='h4' {...props.attributes}>\n {props.children}\n </Text>\n );\n case 'ordered-list':\n return <ol {...props.attributes}>{props.children}</ol>;\n case 'unordered-list':\n return <ul {...props.attributes}>{props.children}</ul>;\n case 'list-item':\n return (\n <li\n {...props.attributes}\n data-order={props.element.order}\n data-level={props.element.level}\n data-id={props.element.id}\n data-parent-id={props.element.parentId}\n >\n {props.children}\n </li>\n );\n case 'custom': {\n const CustomComponent = props.element.component;\n let child = <CustomComponent {...props.attributes}>{props.element.content}</CustomComponent>;\n if (props.element.href) {\n child = (\n <Link href={props.element.href} target='_blank'>\n {child}\n </Link>\n );\n }\n if (props.element.italic) {\n child = <em>{child}</em>;\n }\n if (props.element.bold) {\n child = <strong>{child}</strong>;\n }\n if (props.element['line-through']) {\n child = <del>{child}</del>;\n }\n return child;\n }\n case 'override': {\n return props.element.component;\n }\n case 'table':\n return <Table {...props.attributes}>{props.children}</Table>;\n case 'table-body':\n return <TableBody {...props.attributes}>{props.children}</TableBody>;\n case 'table-row':\n return <TableRow {...props.attributes}>{props.children}</TableRow>;\n case 'table-cell':\n return <TableCell {...props.attributes}>{props.children}</TableCell>;\n case 'paragraph':\n return (\n <div>\n <Text {...props.attributes}>{props.children}</Text>\n </div>\n );\n case 'image':\n return (\n <div {...props.attributes}>\n <Image src={props.element.src} alt={props.element.alt as string} />\n {props.children}\n </div>\n );\n case 'image-placeholder':\n return <div {...props.attributes}>{props.children}</div>;\n default: {\n return <span {...props.attributes}>{props.children}</span>;\n }\n }\n};\n\ntype Node = {\n children: JSX.Element[];\n type: string;\n href?: string;\n italic?: boolean;\n bold?: boolean;\n 'line-through'?: boolean;\n component?: JSX.Element | ComponentType<any>;\n src?: string;\n alt?: string;\n content?: Record<string, string>;\n};\n\n// Renderer for block level elements\nexport const nodeRenderer = (node: Node) => {\n switch (node.type) {\n case 'heading-1':\n return <Text variant='h1'>{node.children}</Text>;\n case 'heading-2':\n return <Text variant='h2'>{node.children}</Text>;\n case 'heading-3':\n return <Text variant='h3'>{node.children}</Text>;\n case 'heading-4':\n return <Text variant='h4'>{node.children}</Text>;\n case 'ordered-list':\n return <ol>{node.children}</ol>;\n case 'unordered-list':\n return <ul>{node.children}</ul>;\n case 'list-item':\n return <li>{node.children}</li>;\n case 'custom': {\n const CustomComponent = node.component as ComponentType<any>;\n let child = <CustomComponent>{node.content}</CustomComponent>;\n if (node.href) {\n child = (\n <Link href={node.href} target='_blank'>\n {child}\n </Link>\n );\n }\n if (node.italic) {\n child = <em>{child}</em>;\n }\n if (node.bold) {\n child = <strong>{child}</strong>;\n }\n if (node['line-through']) {\n child = <del>{child}</del>;\n }\n return child;\n }\n case 'override': {\n return node.component as JSX.Element;\n }\n case 'table':\n return <Table>{node.children}</Table>;\n case 'table-body':\n return <TableBody>{node.children}</TableBody>;\n case 'table-row':\n return <TableRow>{node.children}</TableRow>;\n case 'table-cell':\n return <TableCell>{node.children}</TableCell>;\n case 'paragraph':\n return (\n <div>\n <Text>{node.children}</Text>\n </div>\n );\n case 'image':\n return (\n <div>\n <Image src={node.src} alt={node.alt as string} />\n {node.children}\n </div>\n );\n case 'image-placeholder':\n return <div>{node.children}</div>;\n case 'space':\n return <br />;\n default: {\n return <>{node.children}</>;\n }\n }\n};\n\n// Renderer for inline elements\nexport const slateLeafRenderer = (props: RenderLeafProps) => {\n let child = props.children;\n\n if (props.leaf.searchResult) {\n const CustomComponent = props.leaf.searchResult.component;\n return (\n <span {...props.attributes}>\n <CustomComponent {...props.leaf.searchResult.props}>{child}</CustomComponent>\n </span>\n );\n }\n\n if (props.leaf['line-through']) {\n child = <del>{child}</del>;\n }\n\n if (props.leaf.italic) {\n child = <em>{child}</em>;\n }\n\n if (props.leaf.bold) {\n child = <strong>{child}</strong>;\n }\n\n if (props.leaf.href) {\n child = (\n <Link href={props.leaf.href} target='_blank'>\n {child}\n </Link>\n );\n }\n\n return <span {...props.attributes}>{child}</span>;\n};\n\nconst StyledSpan = styled.span`\n white-space: pre-line;\n`;\n\nexport const leafRenderer = (leaf: CosmosCustom.Text) => {\n let child: string | ReactNode = leaf.text;\n if (leaf.searchResult) {\n const CustomComponent = leaf.searchResult.component;\n return (\n <span>\n <CustomComponent {...leaf.searchResult.props}>{child}</CustomComponent>\n </span>\n );\n }\n\n if (leaf['line-through']) {\n child = <del>{child}</del>;\n }\n\n if (leaf.italic) {\n child = <em>{child}</em>;\n }\n\n if (leaf.bold) {\n child = <strong>{child}</strong>;\n }\n\n if (leaf.href) {\n child = (\n <Link href={leaf.href} target='_blank'>\n {child}\n </Link>\n );\n }\n\n return <StyledSpan>{child}</StyledSpan>;\n};\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../../../src/components/RichTextEditor/utils/search.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAe,MAAM,OAAO,CAAC;AAG5C,eAAO,MAAM,cAAc,WACjB,MAAM;aAC0B,MAAM;WAAS,MAAM;aAAW,MAAM;;;;;aAiC/E,CAAC"}
1
+ {"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../../../src/components/RichTextEditor/utils/search.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAe,MAAM,OAAO,CAAC;AAG5C,eAAO,MAAM,cAAc,WACjB,MAAM;aAC0B,MAAM;WAAS,MAAM;aAAW,MAAM;;;;;aAyC/E,CAAC"}