@webiny/lexical-editor 5.36.2 → 5.37.0-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (205) hide show
  1. package/commands/insertFiles.d.ts +14 -0
  2. package/commands/insertFiles.js +9 -0
  3. package/commands/insertFiles.js.map +1 -0
  4. package/commands/webiny-list.js.map +1 -1
  5. package/commands/webiny-quote.js.map +1 -1
  6. package/components/Editor/HeadingEditor.js +7 -9
  7. package/components/Editor/HeadingEditor.js.map +1 -1
  8. package/components/Editor/ParagraphEditor.js +7 -10
  9. package/components/Editor/ParagraphEditor.js.map +1 -1
  10. package/components/Editor/RichTextEditor.d.ts +9 -1
  11. package/components/Editor/RichTextEditor.js +41 -20
  12. package/components/Editor/RichTextEditor.js.map +1 -1
  13. package/components/ImageComponent.d.ts +23 -0
  14. package/components/ImageComponent.js +252 -0
  15. package/components/ImageComponent.js.map +1 -0
  16. package/components/LexicalEditorConfig/LexicalEditorConfig.d.ts +19 -10
  17. package/components/LexicalEditorConfig/LexicalEditorConfig.js +63 -9
  18. package/components/LexicalEditorConfig/LexicalEditorConfig.js.map +1 -1
  19. package/components/LexicalEditorConfig/components/Node.d.ts +14 -0
  20. package/components/LexicalEditorConfig/components/Node.js +38 -0
  21. package/components/LexicalEditorConfig/components/Node.js.map +1 -0
  22. package/components/LexicalEditorConfig/components/Plugin.d.ts +13 -0
  23. package/components/LexicalEditorConfig/components/Plugin.js +38 -0
  24. package/components/LexicalEditorConfig/components/Plugin.js.map +1 -0
  25. package/components/LexicalEditorConfig/components/ToolbarElement.d.ts +13 -0
  26. package/components/LexicalEditorConfig/components/ToolbarElement.js +38 -0
  27. package/components/LexicalEditorConfig/components/ToolbarElement.js.map +1 -0
  28. package/components/LexicalHtmlRenderer.d.ts +2 -0
  29. package/components/LexicalHtmlRenderer.js +1 -1
  30. package/components/LexicalHtmlRenderer.js.map +1 -1
  31. package/components/Toolbar/StaticToolbar.css +260 -0
  32. package/components/Toolbar/StaticToolbar.d.ts +3 -0
  33. package/components/Toolbar/StaticToolbar.js +101 -0
  34. package/components/Toolbar/StaticToolbar.js.map +1 -0
  35. package/components/Toolbar/Toolbar.css +215 -4
  36. package/components/Toolbar/Toolbar.d.ts +2 -8
  37. package/components/Toolbar/Toolbar.js +25 -37
  38. package/components/Toolbar/Toolbar.js.map +1 -1
  39. package/components/ToolbarActions/BoldAction.js.map +1 -1
  40. package/components/ToolbarActions/BulletListAction.js +2 -2
  41. package/components/ToolbarActions/BulletListAction.js.map +1 -1
  42. package/components/ToolbarActions/CodeHighlightAction.js.map +1 -1
  43. package/components/ToolbarActions/FontColorAction.js +1 -1
  44. package/components/ToolbarActions/FontColorAction.js.map +1 -1
  45. package/components/ToolbarActions/FontSizeAction.js.map +1 -1
  46. package/components/ToolbarActions/ImageAction.d.ts +2 -0
  47. package/components/ToolbarActions/ImageAction.js +53 -0
  48. package/components/ToolbarActions/ImageAction.js.map +1 -0
  49. package/components/ToolbarActions/ItalicAction.js.map +1 -1
  50. package/components/ToolbarActions/LinkAction.js.map +1 -1
  51. package/components/ToolbarActions/NumberedListAction.js +16 -4
  52. package/components/ToolbarActions/NumberedListAction.js.map +1 -1
  53. package/components/ToolbarActions/QuoteAction.js.map +1 -1
  54. package/components/ToolbarActions/TextAlignmentAction.js.map +1 -1
  55. package/components/ToolbarActions/TypographyAction.js +1 -1
  56. package/components/ToolbarActions/TypographyAction.js.map +1 -1
  57. package/components/ToolbarActions/UnderlineAction.js.map +1 -1
  58. package/context/FontColorActionContext.js.map +1 -1
  59. package/context/RichTextEditorContext.d.ts +3 -1
  60. package/context/RichTextEditorContext.js +17 -11
  61. package/context/RichTextEditorContext.js.map +1 -1
  62. package/context/SharedHistoryContext.js.map +1 -1
  63. package/context/TextAlignmentActionContextProps.js.map +1 -1
  64. package/context/TypographyActionContext.js.map +1 -1
  65. package/hooks/useFontColorPicker.js.map +1 -1
  66. package/hooks/useList.js.map +1 -1
  67. package/hooks/useQuote.js.map +1 -1
  68. package/hooks/useRichTextEditor.js.map +1 -1
  69. package/hooks/useTextAlignmentAction.js.map +1 -1
  70. package/hooks/useTypographyAction.js.map +1 -1
  71. package/images/icons/insert-image.svg +4 -0
  72. package/index.d.ts +9 -9
  73. package/index.js +50 -44
  74. package/index.js.map +1 -1
  75. package/nodes/FontColorNode.js +0 -4
  76. package/nodes/FontColorNode.js.map +1 -1
  77. package/nodes/HeadingNode.js.map +1 -1
  78. package/nodes/ImageNode.d.ts +50 -0
  79. package/nodes/ImageNode.js +206 -0
  80. package/nodes/ImageNode.js.map +1 -0
  81. package/nodes/ListItemNode.js +0 -4
  82. package/nodes/ListItemNode.js.map +1 -1
  83. package/nodes/ListNode/formatList.js.map +1 -1
  84. package/nodes/ListNode.js +0 -6
  85. package/nodes/ListNode.js.map +1 -1
  86. package/nodes/ParagraphNode.js.map +1 -1
  87. package/nodes/QuoteNode.js.map +1 -1
  88. package/nodes/TypographyElementNode.js +2 -6
  89. package/nodes/TypographyElementNode.js.map +1 -1
  90. package/nodes/imageNode.css +43 -0
  91. package/nodes/webinyNodes.js +2 -1
  92. package/nodes/webinyNodes.js.map +1 -1
  93. package/package.json +6 -5
  94. package/plugins/BlurEventPlugin/BlurEventPlugin.js.map +1 -1
  95. package/plugins/CodeHighlightPlugin/CodeHighlightPlugin.js.map +1 -1
  96. package/plugins/CodeHighlightPlugin/index.js.map +1 -1
  97. package/plugins/FloatingLinkEditorPlugin/FloatingLinkEditorPlugin.css +5 -1
  98. package/plugins/FloatingLinkEditorPlugin/FloatingLinkEditorPlugin.js +52 -14
  99. package/plugins/FloatingLinkEditorPlugin/FloatingLinkEditorPlugin.js.map +1 -1
  100. package/plugins/FloatingLinkEditorPlugin/index.js.map +1 -1
  101. package/plugins/FontColorPlugin/FontColorPlugin.js.map +1 -1
  102. package/plugins/ImagesPlugin/ImagesPlugin.d.ts +13 -0
  103. package/plugins/ImagesPlugin/ImagesPlugin.js +152 -0
  104. package/plugins/ImagesPlugin/ImagesPlugin.js.map +1 -0
  105. package/plugins/LexicalUpdateStatePlugin/LexicalUpdateStatePlugin.js.map +1 -1
  106. package/plugins/LexicalUpdateStatePlugin/index.js.map +1 -1
  107. package/plugins/ListPLugin/ListPlugin.d.ts +1 -0
  108. package/plugins/{WebinyListPLugin/WebinyListPlugin.js → ListPLugin/ListPlugin.js} +3 -3
  109. package/plugins/ListPLugin/ListPlugin.js.map +1 -0
  110. package/plugins/TypographyPlugin/TypographyPlugin.js.map +1 -1
  111. package/plugins/WebinyQuoteNodePlugin/WebinyQuoteNodePlugin.js.map +1 -1
  112. package/themes/webinyLexicalTheme.css +0 -6
  113. package/themes/webinyLexicalTheme.js +4 -1
  114. package/themes/webinyLexicalTheme.js.map +1 -1
  115. package/types.d.ts +9 -0
  116. package/types.js +28 -1
  117. package/types.js.map +1 -1
  118. package/ui/ContentEditable.css +22 -0
  119. package/ui/ContentEditable.d.ts +12 -0
  120. package/ui/ContentEditable.js +24 -0
  121. package/ui/ContentEditable.js.map +1 -0
  122. package/ui/Divider.js.map +1 -1
  123. package/ui/DropDown.js.map +1 -1
  124. package/ui/ImageResizer.d.ts +26 -0
  125. package/ui/ImageResizer.js +213 -0
  126. package/ui/ImageResizer.js.map +1 -0
  127. package/ui/LinkPreview.js +7 -7
  128. package/ui/LinkPreview.js.map +1 -1
  129. package/ui/Placeholder.css +2 -5
  130. package/ui/Placeholder.d.ts +3 -1
  131. package/ui/Placeholder.js +5 -1
  132. package/ui/Placeholder.js.map +1 -1
  133. package/ui/TextInput.js.map +1 -1
  134. package/ui/ToolbarActionDialog.js.map +1 -1
  135. package/utils/canUseDOM.d.ts +1 -0
  136. package/utils/canUseDOM.js +8 -0
  137. package/utils/canUseDOM.js.map +1 -0
  138. package/utils/files.d.ts +12 -0
  139. package/utils/files.js +62 -0
  140. package/utils/files.js.map +1 -0
  141. package/utils/findTypographyStyleByHtmlTag.js.map +1 -1
  142. package/utils/generateInitialLexicalValue.js.map +1 -1
  143. package/utils/getDOMRangeRect.js.map +1 -1
  144. package/utils/getLexicalTextSelectionState.js.map +1 -1
  145. package/utils/getSelectedNode.js.map +1 -1
  146. package/utils/getTransparentImage.d.ts +1 -0
  147. package/utils/getTransparentImage.js +10 -0
  148. package/utils/getTransparentImage.js.map +1 -0
  149. package/{plugins/AutoLinkPlugin/AutoLinkPlugin.d.ts → utils/isHTMLElement.d.ts} +3 -4
  150. package/utils/isHTMLElement.js +16 -0
  151. package/utils/isHTMLElement.js.map +1 -0
  152. package/utils/isValidJSON.js.map +1 -1
  153. package/utils/isValidLexicalData.js.map +1 -1
  154. package/utils/nodes/clearNodeFormating.js.map +1 -1
  155. package/utils/nodes/formatToHeading.js.map +1 -1
  156. package/utils/nodes/formatToParagraph.js.map +1 -1
  157. package/utils/nodes/formatToQuote.js.map +1 -1
  158. package/utils/nodes/insertImage.d.ts +2 -0
  159. package/utils/nodes/insertImage.js +22 -0
  160. package/utils/nodes/insertImage.js.map +1 -0
  161. package/utils/nodes/listNode.js.map +1 -1
  162. package/utils/point.js +0 -3
  163. package/utils/point.js.map +1 -1
  164. package/utils/rect.js +0 -5
  165. package/utils/rect.js.map +1 -1
  166. package/utils/sanitizeUrl.js.map +1 -1
  167. package/utils/setFloatingElemPosition.js.map +1 -1
  168. package/utils/styleObjectToString.js.map +1 -1
  169. package/utils/toTypographyEmotionMap.d.ts +1 -1
  170. package/utils/toTypographyEmotionMap.js +7 -2
  171. package/utils/toTypographyEmotionMap.js.map +1 -1
  172. package/components/AddRichTextEditorNodeType.d.ts +0 -6
  173. package/components/AddRichTextEditorNodeType.js +0 -28
  174. package/components/AddRichTextEditorNodeType.js.map +0 -1
  175. package/components/AddRichTextEditorPlugin.d.ts +0 -12
  176. package/components/AddRichTextEditorPlugin.js +0 -33
  177. package/components/AddRichTextEditorPlugin.js.map +0 -1
  178. package/components/AddToolbarAction.d.ts +0 -7
  179. package/components/AddToolbarAction.js +0 -33
  180. package/components/AddToolbarAction.js.map +0 -1
  181. package/components/Toolbar/HeadingToolbar.d.ts +0 -12
  182. package/components/Toolbar/HeadingToolbar.js +0 -23
  183. package/components/Toolbar/HeadingToolbar.js.map +0 -1
  184. package/components/Toolbar/ParagraphToolbar.d.ts +0 -12
  185. package/components/Toolbar/ParagraphToolbar.js +0 -23
  186. package/components/Toolbar/ParagraphToolbar.js.map +0 -1
  187. package/components/ToolbarPresets/HeadingToolbarPreset.d.ts +0 -2
  188. package/components/ToolbarPresets/HeadingToolbarPreset.js +0 -56
  189. package/components/ToolbarPresets/HeadingToolbarPreset.js.map +0 -1
  190. package/components/ToolbarPresets/ParagraphToolbarPreset.d.ts +0 -2
  191. package/components/ToolbarPresets/ParagraphToolbarPreset.js +0 -71
  192. package/components/ToolbarPresets/ParagraphToolbarPreset.js.map +0 -1
  193. package/plugins/AutoLinkPlugin/AutoLinkPlugin.js +0 -46
  194. package/plugins/AutoLinkPlugin/AutoLinkPlugin.js.map +0 -1
  195. package/plugins/AutoLinkPlugin/index.d.ts +0 -1
  196. package/plugins/AutoLinkPlugin/index.js +0 -16
  197. package/plugins/AutoLinkPlugin/index.js.map +0 -1
  198. package/plugins/ClickableLinkPlugin/ClickableLinkPlugin.d.ts +0 -17
  199. package/plugins/ClickableLinkPlugin/ClickableLinkPlugin.js +0 -88
  200. package/plugins/ClickableLinkPlugin/ClickableLinkPlugin.js.map +0 -1
  201. package/plugins/ClickableLinkPlugin/index.d.ts +0 -1
  202. package/plugins/ClickableLinkPlugin/index.js +0 -16
  203. package/plugins/ClickableLinkPlugin/index.js.map +0 -1
  204. package/plugins/WebinyListPLugin/WebinyListPlugin.d.ts +0 -1
  205. package/plugins/WebinyListPLugin/WebinyListPlugin.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"names":["DEFAULT_LIST_START_NUMBER","$isSelectingEmptyListItem","anchorNode","nodes","$isListItemNode","length","is","getChildrenSize","$getListItemValue","listItem","list","getParent","value","$isListNode","console","log","getStart","siblings","getPreviousSiblings","i","sibling","getFirstChild","insertList","editor","listType","styleId","update","selection","$getSelection","$isRangeSelection","DEPRECATED_$isGridSelection","getNodes","anchor","getNode","anchorNodeParent","$createListNode","$isRootOrShadowRoot","replace","$createListItemNode","$isElementNode","setFormat","getFormatType","setIndent","getIndent","append","parent","getParentOrThrow","getChildren","handled","Set","node","isEmpty","has","getKey","createListOrMerge","$isLeafNode","parentKey","newListNode","updateChildrenListItemValue","add","nextParent","nodesToAppend","splice","previousSibling","getPreviousSibling","nextSibling","getNextSibling","getListType","remove","getFirstChildOrThrow","insertBefore","removeList","listNodes","$getTopListNode","WebinyListItemNode","$getNearestNodeOfType","ListNode","listNode","insertionPoint","listItems","$getAllListItems","paragraph","$createParagraphNode","insertAfter","__key","key","set","focus","children","childrenOrExisting","undefined","child","prevValue","getValue","nextValue","setValue","$handleIndent","WebinyListItemNodes","removed","forEach","isNestedListNode","innerList","nextInnerList","firstChild","newListItem","newList","getStyleId","$handleOutdent","parentList","grandparentListItem","greatGrandparentList","lastChild","getLastChild","themeStyleId","previousSiblingsListItem","previousSiblingsList","nextSiblingsListItem","nextSiblingsList","getNextSiblings","maybeIndentOrOutdent","direction","selectedNodes","webinyListItemNodes","push","nearestWebinyListItemNode","findNearestWebinyListItemNode","getUniqueWebinyListItemNodes","indentList","outdentList","$handleListInsertParagraph","isCollapsed","getTextContent","topListNode","grandparent","replacementNode","select","nextSiblings","$isParagraphNode","$removeHighestEmptyListParent"],"sources":["formatList.ts"],"sourcesContent":["import {\n $getSelection,\n $isElementNode,\n $isLeafNode,\n $isParagraphNode,\n $isRangeSelection,\n $isRootOrShadowRoot,\n DEPRECATED_$isGridSelection,\n ElementNode,\n LexicalEditor,\n LexicalNode,\n NodeKey,\n ParagraphNode as BaseParagraphNode\n} from \"lexical\";\nimport { $createListNode, $isListNode, ListNode } from \"../ListNode\";\nimport {\n $getAllListItems,\n $getTopListNode,\n $removeHighestEmptyListParent,\n findNearestWebinyListItemNode,\n getUniqueWebinyListItemNodes,\n isNestedListNode\n} from \"~/utils/nodes/listNode\";\nimport { $getNearestNodeOfType } from \"@lexical/utils\";\nimport { $createListItemNode, $isListItemNode, ListItemNode } from \"~/nodes/ListItemNode\";\nimport { ListType } from \"@lexical/list\";\nimport { $createParagraphNode } from \"~/nodes/ParagraphNode\";\n\nconst DEFAULT_LIST_START_NUMBER = 1;\n\nfunction $isSelectingEmptyListItem(\n anchorNode: ListItemNode | LexicalNode,\n nodes: Array<LexicalNode>\n): boolean {\n return (\n $isListItemNode(anchorNode) &&\n (nodes.length === 0 ||\n (nodes.length === 1 && anchorNode.is(nodes[0]) && anchorNode.getChildrenSize() === 0))\n );\n}\n\nfunction $getListItemValue(listItem: ListItemNode): number {\n const list = listItem.getParent();\n\n let value = 1;\n\n if (list !== null) {\n if (!$isListNode(list)) {\n console.log(\n \"$getListItemValue: webiny list node is not parent of webiny list item node\"\n );\n return DEFAULT_LIST_START_NUMBER;\n } else {\n value = list.getStart();\n }\n }\n\n const siblings = listItem.getPreviousSiblings();\n for (let i = 0; i < siblings.length; i++) {\n const sibling = siblings[i];\n\n if ($isListItemNode(sibling) && !$isListNode(sibling.getFirstChild())) {\n value++;\n }\n }\n return value;\n}\n\nexport function insertList(editor: LexicalEditor, listType: ListType, styleId?: string): void {\n editor.update(() => {\n const selection = $getSelection();\n\n if ($isRangeSelection(selection) || DEPRECATED_$isGridSelection(selection)) {\n const nodes = selection.getNodes();\n const anchor = selection.anchor;\n const anchorNode = anchor.getNode();\n const anchorNodeParent = anchorNode.getParent();\n\n if ($isSelectingEmptyListItem(anchorNode, nodes)) {\n const list = $createListNode(listType, styleId);\n\n if ($isRootOrShadowRoot(anchorNodeParent)) {\n anchorNode.replace(list);\n const listItem = $createListItemNode();\n if ($isElementNode(anchorNode)) {\n listItem.setFormat(anchorNode.getFormatType());\n listItem.setIndent(anchorNode.getIndent());\n }\n list.append(listItem);\n } else if ($isListItemNode(anchorNode)) {\n const parent = anchorNode.getParentOrThrow();\n append(list, parent.getChildren());\n parent.replace(list);\n }\n\n return;\n } else {\n const handled = new Set();\n for (let i = 0; i < nodes.length; i++) {\n const node = nodes[i];\n\n if ($isElementNode(node) && node.isEmpty() && !handled.has(node.getKey())) {\n createListOrMerge(node, listType, styleId);\n continue;\n }\n\n if ($isLeafNode(node)) {\n let parent = node.getParent();\n while (parent != null) {\n const parentKey = parent.getKey();\n\n if ($isListNode(parent)) {\n if (!handled.has(parentKey)) {\n const newListNode = $createListNode(listType, styleId);\n append(newListNode, parent.getChildren());\n parent.replace(newListNode);\n updateChildrenListItemValue(newListNode);\n handled.add(parentKey);\n }\n\n break;\n } else {\n const nextParent = parent.getParent();\n\n if ($isRootOrShadowRoot(nextParent) && !handled.has(parentKey)) {\n handled.add(parentKey);\n createListOrMerge(parent, listType, styleId);\n break;\n }\n\n parent = nextParent;\n }\n }\n }\n }\n }\n }\n });\n}\n\nfunction append(node: ElementNode, nodesToAppend: Array<LexicalNode>) {\n node.splice(node.getChildrenSize(), 0, nodesToAppend);\n}\n\nfunction createListOrMerge(node: ElementNode, listType: ListType, styleId?: string): ListNode {\n if ($isListNode(node)) {\n return node;\n }\n\n const previousSibling = node.getPreviousSibling();\n const nextSibling = node.getNextSibling();\n const listItem = $createListItemNode();\n listItem.setFormat(node.getFormatType());\n listItem.setIndent(node.getIndent());\n append(listItem, node.getChildren());\n\n if ($isListNode(previousSibling) && listType === previousSibling.getListType()) {\n previousSibling.append(listItem);\n node.remove();\n // if the same type of list is on both sides, merge them.\n\n if ($isListNode(nextSibling) && listType === nextSibling.getListType()) {\n append(previousSibling, nextSibling.getChildren());\n nextSibling.remove();\n }\n return previousSibling;\n } else if ($isListNode(nextSibling) && listType === nextSibling.getListType()) {\n nextSibling.getFirstChildOrThrow().insertBefore(listItem);\n node.remove();\n return nextSibling;\n } else {\n const list = $createListNode(listType, styleId);\n list.append(listItem);\n node.replace(list);\n updateChildrenListItemValue(list);\n return list;\n }\n}\n\nexport function removeList(editor: LexicalEditor): void {\n editor.update(() => {\n const selection = $getSelection();\n\n if ($isRangeSelection(selection)) {\n const listNodes = new Set<ListNode>();\n const nodes = selection.getNodes();\n const anchorNode = selection.anchor.getNode();\n\n if ($isSelectingEmptyListItem(anchorNode, nodes)) {\n listNodes.add($getTopListNode(anchorNode));\n } else {\n for (let i = 0; i < nodes.length; i++) {\n const node = nodes[i];\n\n if ($isLeafNode(node)) {\n const WebinyListItemNode = $getNearestNodeOfType(node, ListNode);\n\n if (WebinyListItemNode != null) {\n listNodes.add($getTopListNode(WebinyListItemNode));\n }\n }\n }\n }\n\n for (const listNode of listNodes) {\n let insertionPoint: ListNode | BaseParagraphNode = listNode;\n\n const listItems = $getAllListItems(listNode);\n\n for (const WebinyListItemNode of listItems) {\n const paragraph = $createParagraphNode();\n\n append(paragraph, WebinyListItemNode.getChildren());\n\n insertionPoint.insertAfter(paragraph);\n insertionPoint = paragraph;\n\n // When the anchor and focus fall on the textNode\n // we don't have to change the selection because the textNode will be appended to\n // the newly generated paragraph.\n // When selection is in empty nested list item, selection is actually on the WebinyListItemNode.\n // When the corresponding WebinyListItemNode is deleted and replaced by the newly generated paragraph\n // we should manually set the selection's focus and anchor to the newly generated paragraph.\n if (WebinyListItemNode.__key === selection.anchor.key) {\n selection.anchor.set(paragraph.getKey(), 0, \"element\");\n }\n if (WebinyListItemNode.__key === selection.focus.key) {\n selection.focus.set(paragraph.getKey(), 0, \"element\");\n }\n\n WebinyListItemNode.remove();\n }\n listNode.remove();\n }\n }\n });\n}\n\nexport function updateChildrenListItemValue(list: ListNode, children?: Array<LexicalNode>): void {\n const childrenOrExisting = children || list.getChildren();\n if (childrenOrExisting !== undefined) {\n for (let i = 0; i < childrenOrExisting.length; i++) {\n const child = childrenOrExisting[i];\n if ($isListItemNode(child)) {\n const prevValue = child.getValue();\n const nextValue = $getListItemValue(child);\n\n if (prevValue !== nextValue) {\n child.setValue(nextValue);\n }\n }\n }\n }\n}\n\nexport function $handleIndent(WebinyListItemNodes: Array<ListItemNode>): void {\n // go through each node and decide where to move it.\n const removed = new Set<NodeKey>();\n\n WebinyListItemNodes.forEach((WebinyListItemNode: ListItemNode) => {\n if (isNestedListNode(WebinyListItemNode) || removed.has(WebinyListItemNode.getKey())) {\n return;\n }\n\n const parent = WebinyListItemNode.getParent();\n\n // We can cast both of the below `isNestedListNode` only returns a boolean type instead of a user-defined type guards\n const nextSibling = WebinyListItemNode.getNextSibling<ListItemNode>() as ListItemNode;\n const previousSibling =\n WebinyListItemNode.getPreviousSibling<ListItemNode>() as ListItemNode;\n // if there are nested lists on either side, merge them all together.\n\n if (isNestedListNode(nextSibling) && isNestedListNode(previousSibling)) {\n const innerList = previousSibling.getFirstChild();\n\n if ($isListNode(innerList)) {\n innerList.append(WebinyListItemNode);\n const nextInnerList = nextSibling.getFirstChild();\n\n if ($isListNode(nextInnerList)) {\n const children = nextInnerList.getChildren();\n append(innerList, children);\n nextSibling.remove();\n removed.add(nextSibling.getKey());\n }\n updateChildrenListItemValue(innerList);\n }\n } else if (isNestedListNode(nextSibling)) {\n // if the WebinyListItemNode is next to a nested ListNode, merge them\n const innerList = nextSibling.getFirstChild();\n\n if ($isListNode(innerList)) {\n const firstChild = innerList.getFirstChild();\n\n if (firstChild !== null) {\n firstChild.insertBefore(WebinyListItemNode);\n }\n updateChildrenListItemValue(innerList);\n }\n } else if (isNestedListNode(previousSibling)) {\n const innerList = previousSibling.getFirstChild();\n\n if ($isListNode(innerList)) {\n innerList.append(WebinyListItemNode);\n updateChildrenListItemValue(innerList);\n }\n } else {\n // otherwise, we need to create a new nested ListNode\n\n if ($isListNode(parent)) {\n const newListItem = $createListItemNode();\n const newList = $createListNode(parent.getListType(), parent.getStyleId());\n newListItem.append(newList);\n newList.append(WebinyListItemNode);\n\n if (previousSibling) {\n previousSibling.insertAfter(newListItem);\n } else if (nextSibling) {\n nextSibling.insertBefore(newListItem);\n } else {\n parent.append(newListItem);\n }\n }\n }\n\n if ($isListNode(parent)) {\n updateChildrenListItemValue(parent);\n }\n });\n}\n\nexport function $handleOutdent(WebinyListItemNodes: Array<ListItemNode>): void {\n // go through each node and decide where to move it.\n\n WebinyListItemNodes.forEach(WebinyListItemNode => {\n if (isNestedListNode(WebinyListItemNode)) {\n return;\n }\n const parentList = WebinyListItemNode.getParent();\n const grandparentListItem = parentList ? parentList.getParent() : undefined;\n const greatGrandparentList = grandparentListItem\n ? grandparentListItem.getParent()\n : undefined;\n // If it doesn't have these ancestors, it's not indented.\n\n if (\n $isListNode(greatGrandparentList) &&\n $isListItemNode(grandparentListItem) &&\n $isListNode(parentList)\n ) {\n // if it's the first child in it's parent list, insert it into the\n // great grandparent list before the grandparent\n const firstChild = parentList ? parentList.getFirstChild() : undefined;\n const lastChild = parentList ? parentList.getLastChild() : undefined;\n\n if (WebinyListItemNode.is(firstChild)) {\n grandparentListItem.insertBefore(WebinyListItemNode);\n\n if (parentList.isEmpty()) {\n grandparentListItem.remove();\n }\n // if it's the last child in it's parent list, insert it into the\n // great grandparent list after the grandparent.\n } else if (WebinyListItemNode.is(lastChild)) {\n grandparentListItem.insertAfter(WebinyListItemNode);\n\n if (parentList.isEmpty()) {\n grandparentListItem.remove();\n }\n } else {\n // otherwise, we need to split the siblings into two new nested lists\n const listType = parentList.getListType();\n const themeStyleId = parentList.getStyleId();\n const previousSiblingsListItem = $createListItemNode();\n const previousSiblingsList = $createListNode(listType, themeStyleId);\n previousSiblingsListItem.append(previousSiblingsList);\n WebinyListItemNode.getPreviousSiblings().forEach(sibling =>\n previousSiblingsList.append(sibling)\n );\n const nextSiblingsListItem = $createListItemNode();\n const nextSiblingsList = $createListNode(listType, themeStyleId);\n nextSiblingsListItem.append(nextSiblingsList);\n append(nextSiblingsList, WebinyListItemNode.getNextSiblings());\n // put the sibling nested lists on either side of the grandparent list item in the great grandparent.\n grandparentListItem.insertBefore(previousSiblingsListItem);\n grandparentListItem.insertAfter(nextSiblingsListItem);\n // replace the grandparent list item (now between the siblings) with the outdented list item.\n grandparentListItem.replace(WebinyListItemNode);\n }\n updateChildrenListItemValue(parentList);\n updateChildrenListItemValue(greatGrandparentList);\n }\n });\n}\n\nfunction maybeIndentOrOutdent(direction: \"indent\" | \"outdent\"): void {\n const selection = $getSelection();\n\n if (!$isRangeSelection(selection)) {\n return;\n }\n const selectedNodes = selection.getNodes();\n let webinyListItemNodes: Array<ListItemNode> = [];\n\n if (selectedNodes.length === 0) {\n selectedNodes.push(selection.anchor.getNode());\n }\n\n if (selectedNodes.length === 1) {\n // Only 1 node selected. Selection may not contain the ListNodeItem so we traverse the tree to\n // find whether this is part of a WebinyListItemNode\n const nearestWebinyListItemNode = findNearestWebinyListItemNode(selectedNodes[0]);\n\n if (nearestWebinyListItemNode !== null) {\n webinyListItemNodes = [nearestWebinyListItemNode];\n }\n } else {\n webinyListItemNodes = getUniqueWebinyListItemNodes(selectedNodes);\n }\n\n if (webinyListItemNodes.length > 0) {\n if (direction === \"indent\") {\n $handleIndent(webinyListItemNodes);\n } else {\n $handleOutdent(webinyListItemNodes);\n }\n }\n}\n\nexport function indentList(): void {\n maybeIndentOrOutdent(\"indent\");\n}\n\nexport function outdentList(): void {\n maybeIndentOrOutdent(\"outdent\");\n}\n\nexport function $handleListInsertParagraph(): boolean {\n const selection = $getSelection();\n\n if (!$isRangeSelection(selection) || !selection.isCollapsed()) {\n return false;\n }\n\n // Only run this code on empty list items\n const anchor = selection.anchor.getNode();\n\n if (!$isListItemNode(anchor) || anchor.getTextContent() !== \"\") {\n return false;\n }\n const topListNode = $getTopListNode(anchor);\n const parent = anchor.getParent();\n\n if (!$isListNode(parent)) {\n console.log(\"A WebinyListItemNode must have a WebinyListNode for a parent.\");\n return false;\n }\n\n const grandparent = parent?.getParent() || null;\n\n let replacementNode;\n\n if ($isRootOrShadowRoot(grandparent)) {\n replacementNode = $createParagraphNode();\n topListNode.insertAfter(replacementNode);\n } else if ($isListItemNode(grandparent)) {\n replacementNode = $createListItemNode();\n grandparent.insertAfter(replacementNode);\n } else {\n return false;\n }\n replacementNode.select();\n\n const nextSiblings = anchor.getNextSiblings();\n\n if (nextSiblings.length > 0) {\n const newList = $createListNode(parent?.getListType(), parent?.getStyleId());\n\n if ($isParagraphNode(replacementNode)) {\n replacementNode.insertAfter(newList);\n } else {\n const newListItem = $createListItemNode();\n newListItem.append(newList);\n replacementNode.insertAfter(newListItem);\n }\n nextSiblings.forEach(sibling => {\n sibling.remove();\n newList.append(sibling);\n });\n }\n\n // Don't leave hanging nested empty lists\n $removeHighestEmptyListParent(anchor);\n\n return true;\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["_lexical","require","_ListNode","_listNode","_utils","_ListItemNode","_ParagraphNode","DEFAULT_LIST_START_NUMBER","$isSelectingEmptyListItem","anchorNode","nodes","$isListItemNode","length","is","getChildrenSize","$getListItemValue","listItem","list","getParent","value","$isListNode","console","log","getStart","siblings","getPreviousSiblings","i","sibling","getFirstChild","insertList","editor","listType","styleId","update","selection","$getSelection","$isRangeSelection","DEPRECATED_$isGridSelection","getNodes","anchor","getNode","anchorNodeParent","$createListNode","$isRootOrShadowRoot","replace","$createListItemNode","$isElementNode","setFormat","getFormatType","setIndent","getIndent","append","parent","getParentOrThrow","getChildren","handled","Set","node","isEmpty","has","getKey","createListOrMerge","$isLeafNode","parentKey","newListNode","updateChildrenListItemValue","add","nextParent","nodesToAppend","splice","previousSibling","getPreviousSibling","nextSibling","getNextSibling","getListType","remove","getFirstChildOrThrow","insertBefore","removeList","listNodes","$getTopListNode","WebinyListItemNode","$getNearestNodeOfType","ListNode","_iterator","_createForOfIteratorHelper2","default","_step","s","n","done","listNode","insertionPoint","listItems","$getAllListItems","_iterator2","_step2","paragraph","$createParagraphNode","insertAfter","__key","key","set","focus","err","e","f","children","childrenOrExisting","undefined","child","prevValue","getValue","nextValue","setValue","$handleIndent","WebinyListItemNodes","removed","forEach","isNestedListNode","innerList","nextInnerList","firstChild","newListItem","newList","getStyleId","$handleOutdent","parentList","grandparentListItem","greatGrandparentList","lastChild","getLastChild","themeStyleId","previousSiblingsListItem","previousSiblingsList","nextSiblingsListItem","nextSiblingsList","getNextSiblings","maybeIndentOrOutdent","direction","selectedNodes","webinyListItemNodes","push","nearestWebinyListItemNode","findNearestWebinyListItemNode","getUniqueWebinyListItemNodes","indentList","outdentList","$handleListInsertParagraph","isCollapsed","getTextContent","topListNode","grandparent","replacementNode","select","nextSiblings","$isParagraphNode","$removeHighestEmptyListParent"],"sources":["formatList.ts"],"sourcesContent":["import {\n $getSelection,\n $isElementNode,\n $isLeafNode,\n $isParagraphNode,\n $isRangeSelection,\n $isRootOrShadowRoot,\n DEPRECATED_$isGridSelection,\n ElementNode,\n LexicalEditor,\n LexicalNode,\n NodeKey,\n ParagraphNode as BaseParagraphNode\n} from \"lexical\";\nimport { $createListNode, $isListNode, ListNode } from \"../ListNode\";\nimport {\n $getAllListItems,\n $getTopListNode,\n $removeHighestEmptyListParent,\n findNearestWebinyListItemNode,\n getUniqueWebinyListItemNodes,\n isNestedListNode\n} from \"~/utils/nodes/listNode\";\nimport { $getNearestNodeOfType } from \"@lexical/utils\";\nimport { $createListItemNode, $isListItemNode, ListItemNode } from \"~/nodes/ListItemNode\";\nimport { ListType } from \"@lexical/list\";\nimport { $createParagraphNode } from \"~/nodes/ParagraphNode\";\n\nconst DEFAULT_LIST_START_NUMBER = 1;\n\nfunction $isSelectingEmptyListItem(\n anchorNode: ListItemNode | LexicalNode,\n nodes: Array<LexicalNode>\n): boolean {\n return (\n $isListItemNode(anchorNode) &&\n (nodes.length === 0 ||\n (nodes.length === 1 && anchorNode.is(nodes[0]) && anchorNode.getChildrenSize() === 0))\n );\n}\n\nfunction $getListItemValue(listItem: ListItemNode): number {\n const list = listItem.getParent();\n\n let value = 1;\n\n if (list !== null) {\n if (!$isListNode(list)) {\n console.log(\n \"$getListItemValue: webiny list node is not parent of webiny list item node\"\n );\n return DEFAULT_LIST_START_NUMBER;\n } else {\n value = list.getStart();\n }\n }\n\n const siblings = listItem.getPreviousSiblings();\n for (let i = 0; i < siblings.length; i++) {\n const sibling = siblings[i];\n\n if ($isListItemNode(sibling) && !$isListNode(sibling.getFirstChild())) {\n value++;\n }\n }\n return value;\n}\n\nexport function insertList(editor: LexicalEditor, listType: ListType, styleId?: string): void {\n editor.update(() => {\n const selection = $getSelection();\n\n if ($isRangeSelection(selection) || DEPRECATED_$isGridSelection(selection)) {\n const nodes = selection.getNodes();\n const anchor = selection.anchor;\n const anchorNode = anchor.getNode();\n const anchorNodeParent = anchorNode.getParent();\n\n if ($isSelectingEmptyListItem(anchorNode, nodes)) {\n const list = $createListNode(listType, styleId);\n\n if ($isRootOrShadowRoot(anchorNodeParent)) {\n anchorNode.replace(list);\n const listItem = $createListItemNode();\n if ($isElementNode(anchorNode)) {\n listItem.setFormat(anchorNode.getFormatType());\n listItem.setIndent(anchorNode.getIndent());\n }\n list.append(listItem);\n } else if ($isListItemNode(anchorNode)) {\n const parent = anchorNode.getParentOrThrow();\n append(list, parent.getChildren());\n parent.replace(list);\n }\n\n return;\n } else {\n const handled = new Set();\n for (let i = 0; i < nodes.length; i++) {\n const node = nodes[i];\n\n if ($isElementNode(node) && node.isEmpty() && !handled.has(node.getKey())) {\n createListOrMerge(node, listType, styleId);\n continue;\n }\n\n if ($isLeafNode(node)) {\n let parent = node.getParent();\n while (parent != null) {\n const parentKey = parent.getKey();\n\n if ($isListNode(parent)) {\n if (!handled.has(parentKey)) {\n const newListNode = $createListNode(listType, styleId);\n append(newListNode, parent.getChildren());\n parent.replace(newListNode);\n updateChildrenListItemValue(newListNode);\n handled.add(parentKey);\n }\n\n break;\n } else {\n const nextParent = parent.getParent();\n\n if ($isRootOrShadowRoot(nextParent) && !handled.has(parentKey)) {\n handled.add(parentKey);\n createListOrMerge(parent, listType, styleId);\n break;\n }\n\n parent = nextParent;\n }\n }\n }\n }\n }\n }\n });\n}\n\nfunction append(node: ElementNode, nodesToAppend: Array<LexicalNode>) {\n node.splice(node.getChildrenSize(), 0, nodesToAppend);\n}\n\nfunction createListOrMerge(node: ElementNode, listType: ListType, styleId?: string): ListNode {\n if ($isListNode(node)) {\n return node;\n }\n\n const previousSibling = node.getPreviousSibling();\n const nextSibling = node.getNextSibling();\n const listItem = $createListItemNode();\n listItem.setFormat(node.getFormatType());\n listItem.setIndent(node.getIndent());\n append(listItem, node.getChildren());\n\n if ($isListNode(previousSibling) && listType === previousSibling.getListType()) {\n previousSibling.append(listItem);\n node.remove();\n // if the same type of list is on both sides, merge them.\n\n if ($isListNode(nextSibling) && listType === nextSibling.getListType()) {\n append(previousSibling, nextSibling.getChildren());\n nextSibling.remove();\n }\n return previousSibling;\n } else if ($isListNode(nextSibling) && listType === nextSibling.getListType()) {\n nextSibling.getFirstChildOrThrow().insertBefore(listItem);\n node.remove();\n return nextSibling;\n } else {\n const list = $createListNode(listType, styleId);\n list.append(listItem);\n node.replace(list);\n updateChildrenListItemValue(list);\n return list;\n }\n}\n\nexport function removeList(editor: LexicalEditor): void {\n editor.update(() => {\n const selection = $getSelection();\n\n if ($isRangeSelection(selection)) {\n const listNodes = new Set<ListNode>();\n const nodes = selection.getNodes();\n const anchorNode = selection.anchor.getNode();\n\n if ($isSelectingEmptyListItem(anchorNode, nodes)) {\n listNodes.add($getTopListNode(anchorNode));\n } else {\n for (let i = 0; i < nodes.length; i++) {\n const node = nodes[i];\n\n if ($isLeafNode(node)) {\n const WebinyListItemNode = $getNearestNodeOfType(node, ListNode);\n\n if (WebinyListItemNode != null) {\n listNodes.add($getTopListNode(WebinyListItemNode));\n }\n }\n }\n }\n\n for (const listNode of listNodes) {\n let insertionPoint: ListNode | BaseParagraphNode = listNode;\n\n const listItems = $getAllListItems(listNode);\n\n for (const WebinyListItemNode of listItems) {\n const paragraph = $createParagraphNode();\n\n append(paragraph, WebinyListItemNode.getChildren());\n\n insertionPoint.insertAfter(paragraph);\n insertionPoint = paragraph;\n\n // When the anchor and focus fall on the textNode\n // we don't have to change the selection because the textNode will be appended to\n // the newly generated paragraph.\n // When selection is in empty nested list item, selection is actually on the WebinyListItemNode.\n // When the corresponding WebinyListItemNode is deleted and replaced by the newly generated paragraph\n // we should manually set the selection's focus and anchor to the newly generated paragraph.\n if (WebinyListItemNode.__key === selection.anchor.key) {\n selection.anchor.set(paragraph.getKey(), 0, \"element\");\n }\n if (WebinyListItemNode.__key === selection.focus.key) {\n selection.focus.set(paragraph.getKey(), 0, \"element\");\n }\n\n WebinyListItemNode.remove();\n }\n listNode.remove();\n }\n }\n });\n}\n\nexport function updateChildrenListItemValue(list: ListNode, children?: Array<LexicalNode>): void {\n const childrenOrExisting = children || list.getChildren();\n if (childrenOrExisting !== undefined) {\n for (let i = 0; i < childrenOrExisting.length; i++) {\n const child = childrenOrExisting[i];\n if ($isListItemNode(child)) {\n const prevValue = child.getValue();\n const nextValue = $getListItemValue(child);\n\n if (prevValue !== nextValue) {\n child.setValue(nextValue);\n }\n }\n }\n }\n}\n\nexport function $handleIndent(WebinyListItemNodes: Array<ListItemNode>): void {\n // go through each node and decide where to move it.\n const removed = new Set<NodeKey>();\n\n WebinyListItemNodes.forEach((WebinyListItemNode: ListItemNode) => {\n if (isNestedListNode(WebinyListItemNode) || removed.has(WebinyListItemNode.getKey())) {\n return;\n }\n\n const parent = WebinyListItemNode.getParent();\n\n // We can cast both of the below `isNestedListNode` only returns a boolean type instead of a user-defined type guards\n const nextSibling = WebinyListItemNode.getNextSibling<ListItemNode>() as ListItemNode;\n const previousSibling =\n WebinyListItemNode.getPreviousSibling<ListItemNode>() as ListItemNode;\n // if there are nested lists on either side, merge them all together.\n\n if (isNestedListNode(nextSibling) && isNestedListNode(previousSibling)) {\n const innerList = previousSibling.getFirstChild();\n\n if ($isListNode(innerList)) {\n innerList.append(WebinyListItemNode);\n const nextInnerList = nextSibling.getFirstChild();\n\n if ($isListNode(nextInnerList)) {\n const children = nextInnerList.getChildren();\n append(innerList, children);\n nextSibling.remove();\n removed.add(nextSibling.getKey());\n }\n updateChildrenListItemValue(innerList);\n }\n } else if (isNestedListNode(nextSibling)) {\n // if the WebinyListItemNode is next to a nested ListNode, merge them\n const innerList = nextSibling.getFirstChild();\n\n if ($isListNode(innerList)) {\n const firstChild = innerList.getFirstChild();\n\n if (firstChild !== null) {\n firstChild.insertBefore(WebinyListItemNode);\n }\n updateChildrenListItemValue(innerList);\n }\n } else if (isNestedListNode(previousSibling)) {\n const innerList = previousSibling.getFirstChild();\n\n if ($isListNode(innerList)) {\n innerList.append(WebinyListItemNode);\n updateChildrenListItemValue(innerList);\n }\n } else {\n // otherwise, we need to create a new nested ListNode\n\n if ($isListNode(parent)) {\n const newListItem = $createListItemNode();\n const newList = $createListNode(parent.getListType(), parent.getStyleId());\n newListItem.append(newList);\n newList.append(WebinyListItemNode);\n\n if (previousSibling) {\n previousSibling.insertAfter(newListItem);\n } else if (nextSibling) {\n nextSibling.insertBefore(newListItem);\n } else {\n parent.append(newListItem);\n }\n }\n }\n\n if ($isListNode(parent)) {\n updateChildrenListItemValue(parent);\n }\n });\n}\n\nexport function $handleOutdent(WebinyListItemNodes: Array<ListItemNode>): void {\n // go through each node and decide where to move it.\n\n WebinyListItemNodes.forEach(WebinyListItemNode => {\n if (isNestedListNode(WebinyListItemNode)) {\n return;\n }\n const parentList = WebinyListItemNode.getParent();\n const grandparentListItem = parentList ? parentList.getParent() : undefined;\n const greatGrandparentList = grandparentListItem\n ? grandparentListItem.getParent()\n : undefined;\n // If it doesn't have these ancestors, it's not indented.\n\n if (\n $isListNode(greatGrandparentList) &&\n $isListItemNode(grandparentListItem) &&\n $isListNode(parentList)\n ) {\n // if it's the first child in it's parent list, insert it into the\n // great grandparent list before the grandparent\n const firstChild = parentList ? parentList.getFirstChild() : undefined;\n const lastChild = parentList ? parentList.getLastChild() : undefined;\n\n if (WebinyListItemNode.is(firstChild)) {\n grandparentListItem.insertBefore(WebinyListItemNode);\n\n if (parentList.isEmpty()) {\n grandparentListItem.remove();\n }\n // if it's the last child in it's parent list, insert it into the\n // great grandparent list after the grandparent.\n } else if (WebinyListItemNode.is(lastChild)) {\n grandparentListItem.insertAfter(WebinyListItemNode);\n\n if (parentList.isEmpty()) {\n grandparentListItem.remove();\n }\n } else {\n // otherwise, we need to split the siblings into two new nested lists\n const listType = parentList.getListType();\n const themeStyleId = parentList.getStyleId();\n const previousSiblingsListItem = $createListItemNode();\n const previousSiblingsList = $createListNode(listType, themeStyleId);\n previousSiblingsListItem.append(previousSiblingsList);\n WebinyListItemNode.getPreviousSiblings().forEach(sibling =>\n previousSiblingsList.append(sibling)\n );\n const nextSiblingsListItem = $createListItemNode();\n const nextSiblingsList = $createListNode(listType, themeStyleId);\n nextSiblingsListItem.append(nextSiblingsList);\n append(nextSiblingsList, WebinyListItemNode.getNextSiblings());\n // put the sibling nested lists on either side of the grandparent list item in the great grandparent.\n grandparentListItem.insertBefore(previousSiblingsListItem);\n grandparentListItem.insertAfter(nextSiblingsListItem);\n // replace the grandparent list item (now between the siblings) with the outdented list item.\n grandparentListItem.replace(WebinyListItemNode);\n }\n updateChildrenListItemValue(parentList);\n updateChildrenListItemValue(greatGrandparentList);\n }\n });\n}\n\nfunction maybeIndentOrOutdent(direction: \"indent\" | \"outdent\"): void {\n const selection = $getSelection();\n\n if (!$isRangeSelection(selection)) {\n return;\n }\n const selectedNodes = selection.getNodes();\n let webinyListItemNodes: Array<ListItemNode> = [];\n\n if (selectedNodes.length === 0) {\n selectedNodes.push(selection.anchor.getNode());\n }\n\n if (selectedNodes.length === 1) {\n // Only 1 node selected. Selection may not contain the ListNodeItem so we traverse the tree to\n // find whether this is part of a WebinyListItemNode\n const nearestWebinyListItemNode = findNearestWebinyListItemNode(selectedNodes[0]);\n\n if (nearestWebinyListItemNode !== null) {\n webinyListItemNodes = [nearestWebinyListItemNode];\n }\n } else {\n webinyListItemNodes = getUniqueWebinyListItemNodes(selectedNodes);\n }\n\n if (webinyListItemNodes.length > 0) {\n if (direction === \"indent\") {\n $handleIndent(webinyListItemNodes);\n } else {\n $handleOutdent(webinyListItemNodes);\n }\n }\n}\n\nexport function indentList(): void {\n maybeIndentOrOutdent(\"indent\");\n}\n\nexport function outdentList(): void {\n maybeIndentOrOutdent(\"outdent\");\n}\n\nexport function $handleListInsertParagraph(): boolean {\n const selection = $getSelection();\n\n if (!$isRangeSelection(selection) || !selection.isCollapsed()) {\n return false;\n }\n\n // Only run this code on empty list items\n const anchor = selection.anchor.getNode();\n\n if (!$isListItemNode(anchor) || anchor.getTextContent() !== \"\") {\n return false;\n }\n const topListNode = $getTopListNode(anchor);\n const parent = anchor.getParent();\n\n if (!$isListNode(parent)) {\n console.log(\"A WebinyListItemNode must have a WebinyListNode for a parent.\");\n return false;\n }\n\n const grandparent = parent?.getParent() || null;\n\n let replacementNode;\n\n if ($isRootOrShadowRoot(grandparent)) {\n replacementNode = $createParagraphNode();\n topListNode.insertAfter(replacementNode);\n } else if ($isListItemNode(grandparent)) {\n replacementNode = $createListItemNode();\n grandparent.insertAfter(replacementNode);\n } else {\n return false;\n }\n replacementNode.select();\n\n const nextSiblings = anchor.getNextSiblings();\n\n if (nextSiblings.length > 0) {\n const newList = $createListNode(parent?.getListType(), parent?.getStyleId());\n\n if ($isParagraphNode(replacementNode)) {\n replacementNode.insertAfter(newList);\n } else {\n const newListItem = $createListItemNode();\n newListItem.append(newList);\n replacementNode.insertAfter(newListItem);\n }\n nextSiblings.forEach(sibling => {\n sibling.remove();\n newList.append(sibling);\n });\n }\n\n // Don't leave hanging nested empty lists\n $removeHighestEmptyListParent(anchor);\n\n return true;\n}\n"],"mappings":"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"}
package/nodes/ListNode.js CHANGED
@@ -11,12 +11,10 @@ var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers
11
11
  var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
12
12
  var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
13
13
  var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
14
- var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
15
14
  var _get2 = _interopRequireDefault(require("@babel/runtime/helpers/get"));
16
15
  var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
17
16
  var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
18
17
  var _createSuper2 = _interopRequireDefault(require("@babel/runtime/helpers/createSuper"));
19
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
20
18
  var _lexical = require("lexical");
21
19
  var _utils = require("@lexical/utils");
22
20
  var _listNode = require("../utils/nodes/listNode");
@@ -36,10 +34,6 @@ var ListNode = /*#__PURE__*/function (_ElementNode) {
36
34
  var _this;
37
35
  (0, _classCallCheck2.default)(this, ListNode);
38
36
  _this = _super.call(this, key);
39
- (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "__tag", void 0);
40
- (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "__start", void 0);
41
- (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "__listType", void 0);
42
- (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "__themeStyleId", void 0);
43
37
  _this.__themeStyleId = themeStyleId || "";
44
38
  var _listType = TAG_TO_WEBINY_LIST_TYPE[listType] || listType;
45
39
  _this.__listType = _listType;
@@ -1 +1 @@
1
- {"version":3,"names":["TypographyStyleAttrName","ListNode","listType","themeStyleId","start","key","__themeStyleId","_listType","TAG_TO_WEBINY_LIST_TYPE","__listType","__tag","__start","theme","emotionMap","config","tag","dom","document","createElement","wTheme","setAttribute","String","hasThemeStyle","isStyleExistInTheme","setDefaultThemeListStyleByTag","__lexicalListType","setListThemeClassNames","getListType","getStart","getTag","type","version","themeEmotionMap","style","findTypographyStyleByHtmlTag","id","prevNode","child","$isListItemNode","node","getStyleId","__key","serializedNode","$createListNode","setFormat","format","setIndent","indent","setDirection","direction","conversion","convertWebinyListNode","priority","ol","importDomConversionMap","ul","ElementNode","editorTheme","editorThemeClasses","classesToAdd","classesToRemove","listTheme","list","undefined","listLevelsClassNames","listDepth","$getListDepth","normalizedListDepth","length","listLevelClassName","listClassName","className","nestedListClassName","nestedListTheme","nested","push","listItemClasses","split","i","nestedListItemClasses","removeClassNamesFromElement","addClassNamesToElement","normalizeChildren","nodes","normalizedListItems","getChildren","forEach","$isListNode","wrapInListItem","domNode","nodeName","toLowerCase","after"],"sources":["ListNode.ts"],"sourcesContent":["import {\n DOMConversion,\n DOMConversionMap,\n DOMConversionOutput,\n EditorConfig,\n ElementNode,\n LexicalNode,\n NodeKey,\n SerializedElementNode,\n Spread\n} from \"lexical\";\nimport { WebinyEditorTheme, WebinyTheme } from \"~/themes/webinyLexicalTheme\";\nimport { addClassNamesToElement, removeClassNamesFromElement } from \"@lexical/utils\";\nimport { ListNodeTagType } from \"@lexical/list/LexicalListNode\";\nimport { $getListDepth, wrapInListItem } from \"~/utils/nodes/listNode\";\nimport { ListType } from \"@lexical/list\";\nimport { $isListItemNode, ListItemNode } from \"~/nodes/ListItemNode\";\nimport { findTypographyStyleByHtmlTag } from \"~/utils/findTypographyStyleByHtmlTag\";\n\nconst TypographyStyleAttrName = \"data-theme-list-style-id\";\n\nexport type SerializedWebinyListNode = Spread<\n {\n themeStyleId: string;\n listType: ListType;\n start: number;\n tag: ListNodeTagType;\n type: \"webiny-list\";\n version: 1;\n },\n SerializedElementNode\n>;\n\nexport class ListNode extends ElementNode {\n /** @internal */\n __tag: ListNodeTagType;\n /** @internal */\n __start: number;\n /** @internal */\n __listType: ListType;\n\n __themeStyleId: string;\n\n constructor(listType: ListType, themeStyleId?: string, start?: number, key?: NodeKey) {\n super(key);\n this.__themeStyleId = themeStyleId || \"\";\n const _listType = TAG_TO_WEBINY_LIST_TYPE[listType] || listType;\n this.__listType = _listType;\n this.__tag = _listType === \"number\" ? \"ol\" : \"ul\";\n this.__start = start || 1;\n }\n\n static override getType() {\n return \"webiny-list\";\n }\n\n isStyleExistInTheme(theme: WebinyTheme): boolean {\n return theme?.emotionMap ? !!theme?.emotionMap[this.__themeStyleId] : false;\n }\n\n override createDOM(config: EditorConfig): HTMLElement {\n const tag = this.__tag;\n const dom = document.createElement(tag);\n const wTheme = config.theme as WebinyTheme;\n\n if (this.__start !== 1) {\n dom.setAttribute(\"start\", String(this.__start));\n }\n\n // If styleId is not set or user removed from theme, set default style\n if (!this.hasThemeStyle() || !this.isStyleExistInTheme(wTheme)) {\n this.setDefaultThemeListStyleByTag(this.__tag, wTheme);\n }\n\n // @ts-expect-error Internal field.\n dom.__lexicalListType = this.__listType;\n const theme = config.theme as WebinyEditorTheme;\n setListThemeClassNames(dom, theme, this, this.__themeStyleId);\n dom.setAttribute(TypographyStyleAttrName, this.__themeStyleId);\n return dom;\n }\n\n static override clone(node: ListNode): ListNode {\n return new ListNode(node.getListType(), node.getStyleId(), node.getStart(), node.__key);\n }\n\n getTag(): ListNodeTagType {\n return this.__tag;\n }\n\n getListType(): ListType {\n return this.__listType;\n }\n\n getStart(): number {\n return this.__start;\n }\n\n getStyleId(): string {\n return this.__themeStyleId;\n }\n\n static override importJSON(serializedNode: SerializedWebinyListNode): ListNode {\n const node = $createListNode(\n serializedNode.listType,\n serializedNode.themeStyleId,\n serializedNode.start\n );\n node.setFormat(serializedNode.format);\n node.setIndent(serializedNode.indent);\n node.setDirection(serializedNode.direction);\n return node;\n }\n\n // @ts-ignore\n override exportJSON(): SerializedWebinyListNode {\n return {\n ...super.exportJSON(),\n themeStyleId: this.__themeStyleId ?? \"\",\n listType: this.getListType(),\n start: this.getStart(),\n tag: this.getTag(),\n type: \"webiny-list\",\n version: 1\n };\n }\n\n static importDomConversionMap(): DOMConversion<HTMLElement> | null {\n return {\n conversion: convertWebinyListNode,\n priority: 0\n };\n }\n\n static importDOM(): DOMConversionMap | null {\n return {\n ol: () => {\n return this.importDomConversionMap();\n },\n ul: () => {\n return this.importDomConversionMap();\n }\n };\n }\n\n /*\n * Set default styleId from first style that is found in the theme that contains current ul or ol tag\n */\n setDefaultThemeListStyleByTag(tag: string, theme: WebinyTheme) {\n if (!tag) {\n return;\n }\n\n const themeEmotionMap = theme?.emotionMap;\n if (!themeEmotionMap) {\n return;\n }\n\n const style = findTypographyStyleByHtmlTag(tag, themeEmotionMap);\n\n if (style) {\n this.__themeStyleId = style.id;\n }\n }\n\n hasThemeStyle(): boolean {\n return !!this.__themeStyleId;\n }\n\n override updateDOM(prevNode: ListNode, dom: HTMLElement, config: EditorConfig): boolean {\n const wTheme = config.theme as WebinyTheme;\n\n if (prevNode.__tag !== this.__tag) {\n return true;\n }\n\n // if styleId is not set or user removed from theme, set default style.\n if (!this.hasThemeStyle() || !this.isStyleExistInTheme(wTheme)) {\n this.setDefaultThemeListStyleByTag(this.__tag, wTheme);\n }\n\n setListThemeClassNames(dom, config.theme, this, this.__themeStyleId);\n dom.setAttribute(TypographyStyleAttrName, this.__themeStyleId);\n return false;\n }\n\n override extractWithChild(child: LexicalNode): boolean {\n return $isListItemNode(child);\n }\n}\n\nfunction setListThemeClassNames(\n dom: HTMLElement,\n editorTheme: WebinyEditorTheme,\n node: ListNode,\n themeStyleId: string\n): void {\n const editorThemeClasses = editorTheme;\n const classesToAdd = [];\n const classesToRemove = [];\n const listTheme = editorThemeClasses.list;\n const emotionMap = editorTheme?.emotionMap || {};\n if (listTheme !== undefined) {\n const listLevelsClassNames = listTheme[`${node.__tag}Depth`] || [];\n const listDepth = $getListDepth(node) - 1;\n const normalizedListDepth = listDepth % listLevelsClassNames.length;\n const listLevelClassName = listLevelsClassNames[normalizedListDepth];\n const listClassName = `${listTheme[node.__tag]} ${\n emotionMap[themeStyleId]?.className ?? \"\"\n }`;\n let nestedListClassName;\n const nestedListTheme = listTheme.nested;\n\n if (nestedListTheme !== undefined && nestedListTheme.list) {\n nestedListClassName = nestedListTheme.list;\n }\n\n if (listClassName) {\n classesToAdd.push(listClassName);\n }\n\n if (listLevelClassName !== undefined) {\n const listItemClasses = listLevelClassName.split(\" \");\n classesToAdd.push(...listItemClasses);\n for (let i = 0; i < listLevelsClassNames.length; i++) {\n if (i !== normalizedListDepth) {\n classesToRemove.push(node.__tag + i);\n }\n }\n }\n\n if (nestedListClassName !== undefined) {\n const nestedListItemClasses = nestedListClassName.split(\" \");\n\n if (listDepth > 1) {\n classesToAdd.push(...nestedListItemClasses);\n } else {\n classesToRemove.push(...nestedListItemClasses);\n }\n }\n }\n\n if (classesToRemove.length > 0) {\n removeClassNamesFromElement(dom, ...classesToRemove);\n }\n\n if (classesToAdd.length > 0) {\n addClassNamesToElement(dom, ...classesToAdd);\n }\n}\n\n/*\n * This function normalizes the children of a ListNode after the conversion from HTML,\n * ensuring that they are all ListItemNodes and contain either a single nested ListNode\n * or some other inline content.\n */\nfunction normalizeChildren(nodes: Array<ListNode>): Array<ListItemNode> {\n const normalizedListItems: Array<ListItemNode> = [];\n for (let i = 0; i < nodes.length; i++) {\n const node = nodes[i];\n if ($isListItemNode(node)) {\n normalizedListItems.push(node);\n node.getChildren().forEach(child => {\n if ($isListNode(child)) {\n normalizedListItems.push(wrapInListItem(child));\n }\n });\n } else {\n normalizedListItems.push(wrapInListItem(node));\n }\n }\n return normalizedListItems;\n}\n\nfunction convertWebinyListNode(domNode: Node): DOMConversionOutput {\n const nodeName = domNode.nodeName.toLowerCase();\n let node = null;\n\n if (nodeName === \"ol\") {\n node = $createListNode(\"number\");\n } else if (nodeName === \"ul\") {\n node = $createListNode(\"bullet\");\n }\n\n return {\n // @ts-ignore\n after: normalizeChildren,\n node\n };\n}\n\nconst TAG_TO_WEBINY_LIST_TYPE: Record<string, ListType> = {\n ol: \"number\",\n ul: \"bullet\"\n};\n\nexport function $createListNode(listType: ListType, themeStyleId?: string, start = 1): ListNode {\n return new ListNode(listType, themeStyleId, start);\n}\n\nexport function $isListNode(node: LexicalNode | null | undefined): node is ListNode {\n return node instanceof ListNode;\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["_lexical","require","_utils","_listNode","_ListItemNode","_findTypographyStyleByHtmlTag","TypographyStyleAttrName","ListNode","_ElementNode","_inherits2","default","_super","_createSuper2","listType","themeStyleId","start","key","_this","_classCallCheck2","call","__themeStyleId","_listType","TAG_TO_WEBINY_LIST_TYPE","__listType","__tag","__start","_createClass2","value","isStyleExistInTheme","theme","emotionMap","createDOM","config","tag","dom","document","createElement","wTheme","setAttribute","String","hasThemeStyle","setDefaultThemeListStyleByTag","__lexicalListType","setListThemeClassNames","getTag","getListType","getStart","getStyleId","exportJSON","_this$__themeStyleId","_objectSpread2","_get2","_getPrototypeOf2","prototype","type","version","themeEmotionMap","style","findTypographyStyleByHtmlTag","id","updateDOM","prevNode","extractWithChild","child","$isListItemNode","getType","clone","node","__key","importJSON","serializedNode","$createListNode","setFormat","format","setIndent","indent","setDirection","direction","importDomConversionMap","conversion","convertWebinyListNode","priority","importDOM","_this2","ol","ul","ElementNode","exports","editorTheme","editorThemeClasses","classesToAdd","classesToRemove","listTheme","list","undefined","_emotionMap$themeStyl","_emotionMap$themeStyl2","listLevelsClassNames","concat","listDepth","$getListDepth","normalizedListDepth","length","listLevelClassName","listClassName","className","nestedListClassName","nestedListTheme","nested","push","listItemClasses","split","apply","_toConsumableArray2","i","nestedListItemClasses","removeClassNamesFromElement","addClassNamesToElement","normalizeChildren","nodes","normalizedListItems","getChildren","forEach","$isListNode","wrapInListItem","domNode","nodeName","toLowerCase","after","arguments"],"sources":["ListNode.ts"],"sourcesContent":["import {\n DOMConversion,\n DOMConversionMap,\n DOMConversionOutput,\n EditorConfig,\n ElementNode,\n LexicalNode,\n NodeKey,\n SerializedElementNode,\n Spread\n} from \"lexical\";\nimport { WebinyEditorTheme, WebinyTheme } from \"~/themes/webinyLexicalTheme\";\nimport { addClassNamesToElement, removeClassNamesFromElement } from \"@lexical/utils\";\nimport { ListNodeTagType } from \"@lexical/list/LexicalListNode\";\nimport { $getListDepth, wrapInListItem } from \"~/utils/nodes/listNode\";\nimport { ListType } from \"@lexical/list\";\nimport { $isListItemNode, ListItemNode } from \"~/nodes/ListItemNode\";\nimport { findTypographyStyleByHtmlTag } from \"~/utils/findTypographyStyleByHtmlTag\";\n\nconst TypographyStyleAttrName = \"data-theme-list-style-id\";\n\nexport type SerializedWebinyListNode = Spread<\n {\n themeStyleId: string;\n listType: ListType;\n start: number;\n tag: ListNodeTagType;\n type: \"webiny-list\";\n version: 1;\n },\n SerializedElementNode\n>;\n\nexport class ListNode extends ElementNode {\n /** @internal */\n __tag: ListNodeTagType;\n /** @internal */\n __start: number;\n /** @internal */\n __listType: ListType;\n\n __themeStyleId: string;\n\n constructor(listType: ListType, themeStyleId?: string, start?: number, key?: NodeKey) {\n super(key);\n this.__themeStyleId = themeStyleId || \"\";\n const _listType = TAG_TO_WEBINY_LIST_TYPE[listType] || listType;\n this.__listType = _listType;\n this.__tag = _listType === \"number\" ? \"ol\" : \"ul\";\n this.__start = start || 1;\n }\n\n static override getType() {\n return \"webiny-list\";\n }\n\n isStyleExistInTheme(theme: WebinyTheme): boolean {\n return theme?.emotionMap ? !!theme?.emotionMap[this.__themeStyleId] : false;\n }\n\n override createDOM(config: EditorConfig): HTMLElement {\n const tag = this.__tag;\n const dom = document.createElement(tag);\n const wTheme = config.theme as WebinyTheme;\n\n if (this.__start !== 1) {\n dom.setAttribute(\"start\", String(this.__start));\n }\n\n // If styleId is not set or user removed from theme, set default style\n if (!this.hasThemeStyle() || !this.isStyleExistInTheme(wTheme)) {\n this.setDefaultThemeListStyleByTag(this.__tag, wTheme);\n }\n\n // @ts-expect-error Internal field.\n dom.__lexicalListType = this.__listType;\n const theme = config.theme as WebinyEditorTheme;\n setListThemeClassNames(dom, theme, this, this.__themeStyleId);\n dom.setAttribute(TypographyStyleAttrName, this.__themeStyleId);\n return dom;\n }\n\n static override clone(node: ListNode): ListNode {\n return new ListNode(node.getListType(), node.getStyleId(), node.getStart(), node.__key);\n }\n\n getTag(): ListNodeTagType {\n return this.__tag;\n }\n\n getListType(): ListType {\n return this.__listType;\n }\n\n getStart(): number {\n return this.__start;\n }\n\n getStyleId(): string {\n return this.__themeStyleId;\n }\n\n static override importJSON(serializedNode: SerializedWebinyListNode): ListNode {\n const node = $createListNode(\n serializedNode.listType,\n serializedNode.themeStyleId,\n serializedNode.start\n );\n node.setFormat(serializedNode.format);\n node.setIndent(serializedNode.indent);\n node.setDirection(serializedNode.direction);\n return node;\n }\n\n // @ts-ignore\n override exportJSON(): SerializedWebinyListNode {\n return {\n ...super.exportJSON(),\n themeStyleId: this.__themeStyleId ?? \"\",\n listType: this.getListType(),\n start: this.getStart(),\n tag: this.getTag(),\n type: \"webiny-list\",\n version: 1\n };\n }\n\n static importDomConversionMap(): DOMConversion<HTMLElement> | null {\n return {\n conversion: convertWebinyListNode,\n priority: 0\n };\n }\n\n static importDOM(): DOMConversionMap | null {\n return {\n ol: () => {\n return this.importDomConversionMap();\n },\n ul: () => {\n return this.importDomConversionMap();\n }\n };\n }\n\n /*\n * Set default styleId from first style that is found in the theme that contains current ul or ol tag\n */\n setDefaultThemeListStyleByTag(tag: string, theme: WebinyTheme) {\n if (!tag) {\n return;\n }\n\n const themeEmotionMap = theme?.emotionMap;\n if (!themeEmotionMap) {\n return;\n }\n\n const style = findTypographyStyleByHtmlTag(tag, themeEmotionMap);\n\n if (style) {\n this.__themeStyleId = style.id;\n }\n }\n\n hasThemeStyle(): boolean {\n return !!this.__themeStyleId;\n }\n\n override updateDOM(prevNode: ListNode, dom: HTMLElement, config: EditorConfig): boolean {\n const wTheme = config.theme as WebinyTheme;\n\n if (prevNode.__tag !== this.__tag) {\n return true;\n }\n\n // if styleId is not set or user removed from theme, set default style.\n if (!this.hasThemeStyle() || !this.isStyleExistInTheme(wTheme)) {\n this.setDefaultThemeListStyleByTag(this.__tag, wTheme);\n }\n\n setListThemeClassNames(dom, config.theme, this, this.__themeStyleId);\n dom.setAttribute(TypographyStyleAttrName, this.__themeStyleId);\n return false;\n }\n\n override extractWithChild(child: LexicalNode): boolean {\n return $isListItemNode(child);\n }\n}\n\nfunction setListThemeClassNames(\n dom: HTMLElement,\n editorTheme: WebinyEditorTheme,\n node: ListNode,\n themeStyleId: string\n): void {\n const editorThemeClasses = editorTheme;\n const classesToAdd = [];\n const classesToRemove = [];\n const listTheme = editorThemeClasses.list;\n const emotionMap = editorTheme?.emotionMap || {};\n if (listTheme !== undefined) {\n const listLevelsClassNames = listTheme[`${node.__tag}Depth`] || [];\n const listDepth = $getListDepth(node) - 1;\n const normalizedListDepth = listDepth % listLevelsClassNames.length;\n const listLevelClassName = listLevelsClassNames[normalizedListDepth];\n const listClassName = `${listTheme[node.__tag]} ${\n emotionMap[themeStyleId]?.className ?? \"\"\n }`;\n let nestedListClassName;\n const nestedListTheme = listTheme.nested;\n\n if (nestedListTheme !== undefined && nestedListTheme.list) {\n nestedListClassName = nestedListTheme.list;\n }\n\n if (listClassName) {\n classesToAdd.push(listClassName);\n }\n\n if (listLevelClassName !== undefined) {\n const listItemClasses = listLevelClassName.split(\" \");\n classesToAdd.push(...listItemClasses);\n for (let i = 0; i < listLevelsClassNames.length; i++) {\n if (i !== normalizedListDepth) {\n classesToRemove.push(node.__tag + i);\n }\n }\n }\n\n if (nestedListClassName !== undefined) {\n const nestedListItemClasses = nestedListClassName.split(\" \");\n\n if (listDepth > 1) {\n classesToAdd.push(...nestedListItemClasses);\n } else {\n classesToRemove.push(...nestedListItemClasses);\n }\n }\n }\n\n if (classesToRemove.length > 0) {\n removeClassNamesFromElement(dom, ...classesToRemove);\n }\n\n if (classesToAdd.length > 0) {\n addClassNamesToElement(dom, ...classesToAdd);\n }\n}\n\n/*\n * This function normalizes the children of a ListNode after the conversion from HTML,\n * ensuring that they are all ListItemNodes and contain either a single nested ListNode\n * or some other inline content.\n */\nfunction normalizeChildren(nodes: Array<ListNode>): Array<ListItemNode> {\n const normalizedListItems: Array<ListItemNode> = [];\n for (let i = 0; i < nodes.length; i++) {\n const node = nodes[i];\n if ($isListItemNode(node)) {\n normalizedListItems.push(node);\n node.getChildren().forEach(child => {\n if ($isListNode(child)) {\n normalizedListItems.push(wrapInListItem(child));\n }\n });\n } else {\n normalizedListItems.push(wrapInListItem(node));\n }\n }\n return normalizedListItems;\n}\n\nfunction convertWebinyListNode(domNode: Node): DOMConversionOutput {\n const nodeName = domNode.nodeName.toLowerCase();\n let node = null;\n\n if (nodeName === \"ol\") {\n node = $createListNode(\"number\");\n } else if (nodeName === \"ul\") {\n node = $createListNode(\"bullet\");\n }\n\n return {\n // @ts-ignore\n after: normalizeChildren,\n node\n };\n}\n\nconst TAG_TO_WEBINY_LIST_TYPE: Record<string, ListType> = {\n ol: \"number\",\n ul: \"bullet\"\n};\n\nexport function $createListNode(listType: ListType, themeStyleId?: string, start = 1): ListNode {\n return new ListNode(listType, themeStyleId, start);\n}\n\nexport function $isListNode(node: LexicalNode | null | undefined): node is ListNode {\n return node instanceof ListNode;\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"names":["ParagraphNode","typographyStyleId","key","__styles","push","styleId","type","themeEmotionMap","typographyStyle","findTypographyStyleByHtmlTag","id","self","themeStyle","style","find","x","undefined","filter","s","getTypographyStyleId","styles","element","theme","emotionMap","hasTypographyStyle","setDefaultTypography","typoStyleId","themeClasses","className","addClassNamesToElement","config","updateElementWithThemeClasses","prevNode","dom","prevTypoStyleId","nextTypoStyleId","version","node","__key","p","conversion","convertParagraphElement","priority","serializedNode","$createParagraphNode","setFormat","format","setIndent","indent","setDirection","direction","setThemeStyles","BaseParagraphNode","textAlign","$applyNodeReplacement","$isParagraphNode"],"sources":["ParagraphNode.ts"],"sourcesContent":["import {\n $applyNodeReplacement,\n DOMConversionMap,\n DOMConversionOutput,\n ElementFormatType,\n LexicalNode,\n NodeKey,\n ParagraphNode as BaseParagraphNode,\n SerializedParagraphNode as SerializedBaseParagraphNode,\n Spread\n} from \"lexical\";\nimport { EditorConfig } from \"lexical\";\nimport { TypographyStylesNode, ThemeStyleValue, TextNodeThemeStyles } from \"~/nodes/types\";\nimport { WebinyTheme } from \"~/themes/webinyLexicalTheme\";\nimport { addClassNamesToElement } from \"@lexical/utils\";\nimport { findTypographyStyleByHtmlTag } from \"~/utils/findTypographyStyleByHtmlTag\";\nimport { ThemeEmotionMap } from \"~/types\";\n\nexport type SerializeParagraphNode = Spread<\n {\n styles: ThemeStyleValue[];\n type: \"paragraph-element\";\n },\n SerializedBaseParagraphNode\n>;\n\nexport class ParagraphNode\n extends BaseParagraphNode\n implements TextNodeThemeStyles, TypographyStylesNode\n{\n __styles: ThemeStyleValue[] = [];\n\n constructor(typographyStyleId?: string, key?: NodeKey) {\n super(key);\n\n if (typographyStyleId) {\n this.__styles.push({ styleId: typographyStyleId, type: \"typography\" });\n }\n }\n\n protected setDefaultTypography(themeEmotionMap: ThemeEmotionMap) {\n const typographyStyle = findTypographyStyleByHtmlTag(\"p\", themeEmotionMap);\n if (typographyStyle) {\n this.__styles.push({ styleId: typographyStyle.id, type: \"typography\" });\n }\n }\n\n setTypography(typographyStyleId: string): this {\n const self = super.getWritable();\n const themeStyle = {\n styleId: typographyStyleId,\n type: \"typography\"\n } as ThemeStyleValue;\n self.__styles.push(themeStyle);\n return self;\n }\n\n getTypographyStyleId(): string | undefined {\n const style = this.__styles.find(x => x.type === \"typography\");\n return style?.styleId || undefined;\n }\n\n clearTypographyStyle(): this {\n const self = super.getWritable();\n self.__styles = self.__styles.filter(s => s.type !== \"typography\");\n return self;\n }\n\n hasTypographyStyle(): boolean {\n return !!this.getTypographyStyleId();\n }\n\n getThemeStyles(): ThemeStyleValue[] {\n // getLatest() ensures we are getting the most\n // up-to-date value from the EditorState.\n const self = super.getLatest();\n return self.__styles;\n }\n\n setThemeStyles(styles: ThemeStyleValue[]) {\n // getWritable() creates a clone of the node\n // if needed, to ensure we don't try and mutate\n // a stale version of this node.\n const self = super.getWritable();\n self.__styles = [...styles];\n return self;\n }\n\n static override getType(): string {\n return \"paragraph-element\";\n }\n\n static override clone(node: ParagraphNode): ParagraphNode {\n return new ParagraphNode(node.getTypographyStyleId(), node.__key);\n }\n\n protected updateElementWithThemeClasses(element: HTMLElement, theme: WebinyTheme): HTMLElement {\n if (!theme?.emotionMap) {\n return element;\n }\n\n if (!this.hasTypographyStyle()) {\n this.setDefaultTypography(theme.emotionMap);\n }\n\n const typoStyleId = this.getTypographyStyleId();\n\n let themeClasses;\n\n // Typography css class\n if (typoStyleId) {\n const typographyStyle = theme.emotionMap[typoStyleId];\n if (typographyStyle) {\n themeClasses = typographyStyle.className;\n }\n }\n\n if (themeClasses) {\n addClassNamesToElement(element, themeClasses);\n }\n\n return element;\n }\n\n override createDOM(config: EditorConfig): HTMLElement {\n const element = super.createDOM(config);\n return this.updateElementWithThemeClasses(element, config.theme as WebinyTheme);\n }\n\n override updateDOM(\n prevNode: BaseParagraphNode,\n dom: HTMLElement,\n config: EditorConfig\n ): boolean {\n const prevTypoStyleId = prevNode.getTypographyStyleId();\n const nextTypoStyleId = this.getTypographyStyleId();\n\n if (!nextTypoStyleId) {\n this.updateElementWithThemeClasses(dom, config.theme as WebinyTheme);\n return false;\n }\n\n if (prevTypoStyleId !== nextTypoStyleId && nextTypoStyleId) {\n this.updateElementWithThemeClasses(dom, config.theme as WebinyTheme);\n }\n // Returning false tells Lexical that this node does not need its\n // DOM element replacing with a new copy from createDOM.\n return false;\n }\n\n /*\n * On copy/paste event this method will be executed in and create a node\n * */\n static override importDOM(): DOMConversionMap | null {\n return {\n p: () => ({\n conversion: convertParagraphElement,\n priority: 0\n })\n };\n }\n\n /*\n * Serialize the JSON data back into a node\n */\n static override importJSON(serializedNode: SerializeParagraphNode): BaseParagraphNode {\n const node = $createParagraphNode();\n node.setFormat(serializedNode.format);\n node.setIndent(serializedNode.indent);\n node.setDirection(serializedNode.direction);\n node.setThemeStyles(serializedNode.styles);\n return node;\n }\n\n /*\n * Serialize the node to JSON data representation.\n * */\n override exportJSON(): SerializeParagraphNode {\n return {\n ...super.exportJSON(),\n styles: this.__styles,\n type: \"paragraph-element\",\n version: 1\n };\n }\n}\n\nfunction convertParagraphElement(element: HTMLElement): DOMConversionOutput {\n const node = $createParagraphNode();\n if (element.style) {\n node.setFormat(element.style.textAlign as ElementFormatType);\n }\n\n return { node };\n}\n\nexport function $createParagraphNode(typographyStyleId?: string): ParagraphNode {\n return $applyNodeReplacement(new ParagraphNode(typographyStyleId));\n}\n\nexport function $isParagraphNode(node: LexicalNode | null | undefined): node is ParagraphNode {\n return node instanceof ParagraphNode;\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["_lexical","require","_utils","_findTypographyStyleByHtmlTag","ParagraphNode","_BaseParagraphNode","_inherits2","default","_super","_createSuper2","typographyStyleId","key","_this","_classCallCheck2","call","_defineProperty2","_assertThisInitialized2","__styles","push","styleId","type","_createClass2","value","setDefaultTypography","themeEmotionMap","typographyStyle","findTypographyStyleByHtmlTag","id","setTypography","self","_get2","_getPrototypeOf2","prototype","themeStyle","getTypographyStyleId","style","find","x","undefined","clearTypographyStyle","filter","s","hasTypographyStyle","getThemeStyles","setThemeStyles","styles","_toConsumableArray2","updateElementWithThemeClasses","element","theme","emotionMap","typoStyleId","themeClasses","className","addClassNamesToElement","createDOM","config","updateDOM","prevNode","dom","prevTypoStyleId","nextTypoStyleId","exportJSON","_objectSpread2","version","getType","clone","node","__key","importDOM","p","conversion","convertParagraphElement","priority","importJSON","serializedNode","$createParagraphNode","setFormat","format","setIndent","indent","setDirection","direction","BaseParagraphNode","exports","textAlign","$applyNodeReplacement","$isParagraphNode"],"sources":["ParagraphNode.ts"],"sourcesContent":["import {\n $applyNodeReplacement,\n DOMConversionMap,\n DOMConversionOutput,\n ElementFormatType,\n LexicalNode,\n NodeKey,\n ParagraphNode as BaseParagraphNode,\n SerializedParagraphNode as SerializedBaseParagraphNode,\n Spread\n} from \"lexical\";\nimport { EditorConfig } from \"lexical\";\nimport { TypographyStylesNode, ThemeStyleValue, TextNodeThemeStyles } from \"~/nodes/types\";\nimport { WebinyTheme } from \"~/themes/webinyLexicalTheme\";\nimport { addClassNamesToElement } from \"@lexical/utils\";\nimport { findTypographyStyleByHtmlTag } from \"~/utils/findTypographyStyleByHtmlTag\";\nimport { ThemeEmotionMap } from \"~/types\";\n\nexport type SerializeParagraphNode = Spread<\n {\n styles: ThemeStyleValue[];\n type: \"paragraph-element\";\n },\n SerializedBaseParagraphNode\n>;\n\nexport class ParagraphNode\n extends BaseParagraphNode\n implements TextNodeThemeStyles, TypographyStylesNode\n{\n __styles: ThemeStyleValue[] = [];\n\n constructor(typographyStyleId?: string, key?: NodeKey) {\n super(key);\n\n if (typographyStyleId) {\n this.__styles.push({ styleId: typographyStyleId, type: \"typography\" });\n }\n }\n\n protected setDefaultTypography(themeEmotionMap: ThemeEmotionMap) {\n const typographyStyle = findTypographyStyleByHtmlTag(\"p\", themeEmotionMap);\n if (typographyStyle) {\n this.__styles.push({ styleId: typographyStyle.id, type: \"typography\" });\n }\n }\n\n setTypography(typographyStyleId: string): this {\n const self = super.getWritable();\n const themeStyle = {\n styleId: typographyStyleId,\n type: \"typography\"\n } as ThemeStyleValue;\n self.__styles.push(themeStyle);\n return self;\n }\n\n getTypographyStyleId(): string | undefined {\n const style = this.__styles.find(x => x.type === \"typography\");\n return style?.styleId || undefined;\n }\n\n clearTypographyStyle(): this {\n const self = super.getWritable();\n self.__styles = self.__styles.filter(s => s.type !== \"typography\");\n return self;\n }\n\n hasTypographyStyle(): boolean {\n return !!this.getTypographyStyleId();\n }\n\n getThemeStyles(): ThemeStyleValue[] {\n // getLatest() ensures we are getting the most\n // up-to-date value from the EditorState.\n const self = super.getLatest();\n return self.__styles;\n }\n\n setThemeStyles(styles: ThemeStyleValue[]) {\n // getWritable() creates a clone of the node\n // if needed, to ensure we don't try and mutate\n // a stale version of this node.\n const self = super.getWritable();\n self.__styles = [...styles];\n return self;\n }\n\n static override getType(): string {\n return \"paragraph-element\";\n }\n\n static override clone(node: ParagraphNode): ParagraphNode {\n return new ParagraphNode(node.getTypographyStyleId(), node.__key);\n }\n\n protected updateElementWithThemeClasses(element: HTMLElement, theme: WebinyTheme): HTMLElement {\n if (!theme?.emotionMap) {\n return element;\n }\n\n if (!this.hasTypographyStyle()) {\n this.setDefaultTypography(theme.emotionMap);\n }\n\n const typoStyleId = this.getTypographyStyleId();\n\n let themeClasses;\n\n // Typography css class\n if (typoStyleId) {\n const typographyStyle = theme.emotionMap[typoStyleId];\n if (typographyStyle) {\n themeClasses = typographyStyle.className;\n }\n }\n\n if (themeClasses) {\n addClassNamesToElement(element, themeClasses);\n }\n\n return element;\n }\n\n override createDOM(config: EditorConfig): HTMLElement {\n const element = super.createDOM(config);\n return this.updateElementWithThemeClasses(element, config.theme as WebinyTheme);\n }\n\n override updateDOM(\n prevNode: BaseParagraphNode,\n dom: HTMLElement,\n config: EditorConfig\n ): boolean {\n const prevTypoStyleId = prevNode.getTypographyStyleId();\n const nextTypoStyleId = this.getTypographyStyleId();\n\n if (!nextTypoStyleId) {\n this.updateElementWithThemeClasses(dom, config.theme as WebinyTheme);\n return false;\n }\n\n if (prevTypoStyleId !== nextTypoStyleId && nextTypoStyleId) {\n this.updateElementWithThemeClasses(dom, config.theme as WebinyTheme);\n }\n // Returning false tells Lexical that this node does not need its\n // DOM element replacing with a new copy from createDOM.\n return false;\n }\n\n /*\n * On copy/paste event this method will be executed in and create a node\n * */\n static override importDOM(): DOMConversionMap | null {\n return {\n p: () => ({\n conversion: convertParagraphElement,\n priority: 0\n })\n };\n }\n\n /*\n * Serialize the JSON data back into a node\n */\n static override importJSON(serializedNode: SerializeParagraphNode): BaseParagraphNode {\n const node = $createParagraphNode();\n node.setFormat(serializedNode.format);\n node.setIndent(serializedNode.indent);\n node.setDirection(serializedNode.direction);\n node.setThemeStyles(serializedNode.styles);\n return node;\n }\n\n /*\n * Serialize the node to JSON data representation.\n * */\n override exportJSON(): SerializeParagraphNode {\n return {\n ...super.exportJSON(),\n styles: this.__styles,\n type: \"paragraph-element\",\n version: 1\n };\n }\n}\n\nfunction convertParagraphElement(element: HTMLElement): DOMConversionOutput {\n const node = $createParagraphNode();\n if (element.style) {\n node.setFormat(element.style.textAlign as ElementFormatType);\n }\n\n return { node };\n}\n\nexport function $createParagraphNode(typographyStyleId?: string): ParagraphNode {\n return $applyNodeReplacement(new ParagraphNode(typographyStyleId));\n}\n\nexport function $isParagraphNode(node: LexicalNode | null | undefined): node is ParagraphNode {\n return node instanceof ParagraphNode;\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"names":["QuoteNode","themeStyleId","key","__styles","push","styleId","type","themeEmotionMap","typographyStyle","findTypographyStyleByHtmlTag","id","getTypographyStyleId","style","typographyStyleId","self","hasTypographyStyle","themeStyle","find","x","undefined","filter","s","styles","element","theme","emotionMap","typographyStyleExist","typographyValue","addClassNamesToElement","className","config","wTheme","emotionThemeMap","setDefaultTypography","addThemeStylesToHTMLElement","node","__key","conversion","convertBlockquoteElement","priority","blockquote","importDomConversionMap","serializedNode","$createQuoteNode","setFormat","format","setIndent","indent","setDirection","direction","length","setThemeStyles","BaseQuoteNode","$isQuoteNode"],"sources":["QuoteNode.ts"],"sourcesContent":["import {\n DOMConversion,\n DOMConversionMap,\n EditorConfig,\n LexicalNode,\n NodeKey,\n Spread\n} from \"lexical\";\nimport { WebinyEditorTheme, WebinyTheme } from \"~/themes/webinyLexicalTheme\";\nimport { ThemeEmotionMap } from \"~/types\";\nimport { addClassNamesToElement } from \"@lexical/utils\";\nimport { findTypographyStyleByHtmlTag } from \"~/utils/findTypographyStyleByHtmlTag\";\nimport {\n QuoteNode as BaseQuoteNode,\n SerializedQuoteNode as BaseSerializedQuoteNode\n} from \"@lexical/rich-text\";\nimport { TextNodeThemeStyles, ThemeStyleValue, TypographyStylesNode } from \"~/nodes/types\";\n\nexport type SerializedQuoteNode = Spread<\n {\n styleId?: string;\n styles: ThemeStyleValue[];\n type: \"webiny-quote\";\n },\n BaseSerializedQuoteNode\n>;\n\nexport class QuoteNode extends BaseQuoteNode implements TextNodeThemeStyles, TypographyStylesNode {\n __styles: ThemeStyleValue[] = [];\n\n constructor(themeStyleId?: string, key?: NodeKey) {\n super(key);\n if (themeStyleId) {\n this.__styles.push({ styleId: themeStyleId, type: \"typography\" });\n }\n }\n\n /*\n * Find the first occurrence of the quoteblock in the theme styles and set as default.\n */\n protected setDefaultTypography(themeEmotionMap: ThemeEmotionMap) {\n const typographyStyle = findTypographyStyleByHtmlTag(\"quoteblock\", themeEmotionMap);\n if (typographyStyle) {\n this.__styles.push({ styleId: typographyStyle.id, type: \"typography\" });\n }\n }\n\n protected typographyStyleExist(themeEmotionMap: ThemeEmotionMap): boolean {\n const styleId = this.getTypographyStyleId();\n if (!styleId) {\n return false;\n }\n const style = themeEmotionMap[styleId];\n return !!style;\n }\n\n setTypography(typographyStyleId: string): this {\n const self = super.getWritable();\n if (!typographyStyleId) {\n return self;\n }\n\n if (!this.hasTypographyStyle()) {\n const themeStyle = {\n styleId: typographyStyleId,\n type: \"typography\"\n } as ThemeStyleValue;\n self.__styles.push(themeStyle);\n }\n return self;\n }\n\n getTypographyStyleId(): string | undefined {\n const style = this.__styles.find(x => x.type === \"typography\");\n return style?.styleId || undefined;\n }\n\n clearTypographyStyle(): this {\n const self = super.getWritable();\n self.__styles = self.__styles.filter(s => s.type !== \"typography\");\n return self;\n }\n\n hasTypographyStyle(): boolean {\n return !!this.getTypographyStyleId();\n }\n\n getThemeStyles(): ThemeStyleValue[] {\n const self = super.getLatest();\n return self.__styles;\n }\n\n setThemeStyles(styles: ThemeStyleValue[]) {\n const self = super.getWritable();\n self.__styles = [...styles];\n return self;\n }\n\n static override getType(): string {\n return \"webiny-quote\";\n }\n\n static override clone(node: QuoteNode): QuoteNode {\n return new QuoteNode(node.getTypographyStyleId(), node.__key);\n }\n\n addThemeStylesToHTMLElement(element: HTMLElement, theme: WebinyEditorTheme): HTMLElement {\n const themeEmotionMap = theme?.emotionMap;\n\n if (!themeEmotionMap) {\n return element;\n }\n\n // style exist and is in active use\n if (this.hasTypographyStyle() && this.typographyStyleExist(themeEmotionMap)) {\n const styleId = this.getTypographyStyleId();\n if (styleId) {\n const typographyValue = themeEmotionMap[styleId];\n addClassNamesToElement(element, typographyValue?.className);\n return element;\n }\n }\n\n return element;\n }\n\n override createDOM(config: EditorConfig): HTMLElement {\n const element = super.createDOM(config);\n const wTheme = config.theme as WebinyTheme;\n const emotionThemeMap = wTheme?.emotionMap;\n\n if (!emotionThemeMap) {\n return element;\n }\n\n // if styleId is not set or user removed the style from theme, set default style\n if (!this.hasTypographyStyle() || !this.typographyStyleExist(emotionThemeMap)) {\n this.setDefaultTypography(emotionThemeMap);\n }\n\n this.addThemeStylesToHTMLElement(element, config.theme);\n return element;\n }\n\n static importDomConversionMap(): DOMConversion<HTMLElement> | null {\n return {\n conversion: convertBlockquoteElement,\n priority: 0\n };\n }\n\n static override importDOM(): DOMConversionMap | null {\n return {\n blockquote: () => {\n return this.importDomConversionMap();\n }\n };\n }\n\n static override importJSON(serializedNode: SerializedQuoteNode): QuoteNode {\n const node = $createQuoteNode();\n node.setFormat(serializedNode.format);\n node.setIndent(serializedNode.indent);\n node.setDirection(serializedNode.direction);\n if (!!serializedNode?.styles?.length) {\n node.setThemeStyles(serializedNode.styles);\n return node;\n }\n // for old nodes data migrate the style id into the list\n if (!!serializedNode?.styleId) {\n const styles = [\n { styleId: serializedNode.styleId, type: \"typography\" }\n ] as ThemeStyleValue[];\n node.setThemeStyles(styles);\n }\n return node;\n }\n\n override exportJSON(): SerializedQuoteNode {\n return {\n ...super.exportJSON(),\n type: \"webiny-quote\",\n styles: this.__styles,\n styleId: this.getTypographyStyleId()\n };\n }\n}\n\nfunction convertBlockquoteElement() {\n const node = $createQuoteNode();\n return {\n node\n };\n}\n\nexport function $createQuoteNode(themeStyleId?: string, key?: NodeKey): QuoteNode {\n return new QuoteNode(themeStyleId, key);\n}\n\nexport function $isQuoteNode(node: LexicalNode | null | undefined): node is QuoteNode {\n return node instanceof QuoteNode;\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["_utils","require","_findTypographyStyleByHtmlTag","_richText","QuoteNode","_BaseQuoteNode","_inherits2","default","_super","_createSuper2","themeStyleId","key","_this","_classCallCheck2","call","_defineProperty2","_assertThisInitialized2","__styles","push","styleId","type","_createClass2","value","setDefaultTypography","themeEmotionMap","typographyStyle","findTypographyStyleByHtmlTag","id","typographyStyleExist","getTypographyStyleId","style","setTypography","typographyStyleId","self","_get2","_getPrototypeOf2","prototype","hasTypographyStyle","themeStyle","find","x","undefined","clearTypographyStyle","filter","s","getThemeStyles","setThemeStyles","styles","_toConsumableArray2","addThemeStylesToHTMLElement","element","theme","emotionMap","typographyValue","addClassNamesToElement","className","createDOM","config","wTheme","emotionThemeMap","exportJSON","_objectSpread2","getType","clone","node","__key","importDomConversionMap","conversion","convertBlockquoteElement","priority","importDOM","_this2","blockquote","importJSON","serializedNode","_serializedNode$style","$createQuoteNode","setFormat","format","setIndent","indent","setDirection","direction","length","BaseQuoteNode","exports","$isQuoteNode"],"sources":["QuoteNode.ts"],"sourcesContent":["import {\n DOMConversion,\n DOMConversionMap,\n EditorConfig,\n LexicalNode,\n NodeKey,\n Spread\n} from \"lexical\";\nimport { WebinyEditorTheme, WebinyTheme } from \"~/themes/webinyLexicalTheme\";\nimport { ThemeEmotionMap } from \"~/types\";\nimport { addClassNamesToElement } from \"@lexical/utils\";\nimport { findTypographyStyleByHtmlTag } from \"~/utils/findTypographyStyleByHtmlTag\";\nimport {\n QuoteNode as BaseQuoteNode,\n SerializedQuoteNode as BaseSerializedQuoteNode\n} from \"@lexical/rich-text\";\nimport { TextNodeThemeStyles, ThemeStyleValue, TypographyStylesNode } from \"~/nodes/types\";\n\nexport type SerializedQuoteNode = Spread<\n {\n styleId?: string;\n styles: ThemeStyleValue[];\n type: \"webiny-quote\";\n },\n BaseSerializedQuoteNode\n>;\n\nexport class QuoteNode extends BaseQuoteNode implements TextNodeThemeStyles, TypographyStylesNode {\n __styles: ThemeStyleValue[] = [];\n\n constructor(themeStyleId?: string, key?: NodeKey) {\n super(key);\n if (themeStyleId) {\n this.__styles.push({ styleId: themeStyleId, type: \"typography\" });\n }\n }\n\n /*\n * Find the first occurrence of the quoteblock in the theme styles and set as default.\n */\n protected setDefaultTypography(themeEmotionMap: ThemeEmotionMap) {\n const typographyStyle = findTypographyStyleByHtmlTag(\"quoteblock\", themeEmotionMap);\n if (typographyStyle) {\n this.__styles.push({ styleId: typographyStyle.id, type: \"typography\" });\n }\n }\n\n protected typographyStyleExist(themeEmotionMap: ThemeEmotionMap): boolean {\n const styleId = this.getTypographyStyleId();\n if (!styleId) {\n return false;\n }\n const style = themeEmotionMap[styleId];\n return !!style;\n }\n\n setTypography(typographyStyleId: string): this {\n const self = super.getWritable();\n if (!typographyStyleId) {\n return self;\n }\n\n if (!this.hasTypographyStyle()) {\n const themeStyle = {\n styleId: typographyStyleId,\n type: \"typography\"\n } as ThemeStyleValue;\n self.__styles.push(themeStyle);\n }\n return self;\n }\n\n getTypographyStyleId(): string | undefined {\n const style = this.__styles.find(x => x.type === \"typography\");\n return style?.styleId || undefined;\n }\n\n clearTypographyStyle(): this {\n const self = super.getWritable();\n self.__styles = self.__styles.filter(s => s.type !== \"typography\");\n return self;\n }\n\n hasTypographyStyle(): boolean {\n return !!this.getTypographyStyleId();\n }\n\n getThemeStyles(): ThemeStyleValue[] {\n const self = super.getLatest();\n return self.__styles;\n }\n\n setThemeStyles(styles: ThemeStyleValue[]) {\n const self = super.getWritable();\n self.__styles = [...styles];\n return self;\n }\n\n static override getType(): string {\n return \"webiny-quote\";\n }\n\n static override clone(node: QuoteNode): QuoteNode {\n return new QuoteNode(node.getTypographyStyleId(), node.__key);\n }\n\n addThemeStylesToHTMLElement(element: HTMLElement, theme: WebinyEditorTheme): HTMLElement {\n const themeEmotionMap = theme?.emotionMap;\n\n if (!themeEmotionMap) {\n return element;\n }\n\n // style exist and is in active use\n if (this.hasTypographyStyle() && this.typographyStyleExist(themeEmotionMap)) {\n const styleId = this.getTypographyStyleId();\n if (styleId) {\n const typographyValue = themeEmotionMap[styleId];\n addClassNamesToElement(element, typographyValue?.className);\n return element;\n }\n }\n\n return element;\n }\n\n override createDOM(config: EditorConfig): HTMLElement {\n const element = super.createDOM(config);\n const wTheme = config.theme as WebinyTheme;\n const emotionThemeMap = wTheme?.emotionMap;\n\n if (!emotionThemeMap) {\n return element;\n }\n\n // if styleId is not set or user removed the style from theme, set default style\n if (!this.hasTypographyStyle() || !this.typographyStyleExist(emotionThemeMap)) {\n this.setDefaultTypography(emotionThemeMap);\n }\n\n this.addThemeStylesToHTMLElement(element, config.theme);\n return element;\n }\n\n static importDomConversionMap(): DOMConversion<HTMLElement> | null {\n return {\n conversion: convertBlockquoteElement,\n priority: 0\n };\n }\n\n static override importDOM(): DOMConversionMap | null {\n return {\n blockquote: () => {\n return this.importDomConversionMap();\n }\n };\n }\n\n static override importJSON(serializedNode: SerializedQuoteNode): QuoteNode {\n const node = $createQuoteNode();\n node.setFormat(serializedNode.format);\n node.setIndent(serializedNode.indent);\n node.setDirection(serializedNode.direction);\n if (!!serializedNode?.styles?.length) {\n node.setThemeStyles(serializedNode.styles);\n return node;\n }\n // for old nodes data migrate the style id into the list\n if (!!serializedNode?.styleId) {\n const styles = [\n { styleId: serializedNode.styleId, type: \"typography\" }\n ] as ThemeStyleValue[];\n node.setThemeStyles(styles);\n }\n return node;\n }\n\n override exportJSON(): SerializedQuoteNode {\n return {\n ...super.exportJSON(),\n type: \"webiny-quote\",\n styles: this.__styles,\n styleId: this.getTypographyStyleId()\n };\n }\n}\n\nfunction convertBlockquoteElement() {\n const node = $createQuoteNode();\n return {\n node\n };\n}\n\nexport function $createQuoteNode(themeStyleId?: string, key?: NodeKey): QuoteNode {\n return new QuoteNode(themeStyleId, key);\n}\n\nexport function $isQuoteNode(node: LexicalNode | null | undefined): node is QuoteNode {\n return node instanceof QuoteNode;\n}\n"],"mappings":"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"}
@@ -8,12 +8,10 @@ exports.TypographyElementNode = exports.ADD_TYPOGRAPHY_ELEMENT_COMMAND = exports
8
8
  var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
9
9
  var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
10
10
  var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
11
- var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
12
11
  var _get2 = _interopRequireDefault(require("@babel/runtime/helpers/get"));
13
12
  var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
14
13
  var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
15
14
  var _createSuper2 = _interopRequireDefault(require("@babel/runtime/helpers/createSuper"));
16
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
17
15
  var _lexical = require("lexical");
18
16
  var _utils = require("@lexical/utils");
19
17
  var _ParagraphNode = require("./ParagraphNode");
@@ -21,6 +19,8 @@ var _ParagraphNode = require("./ParagraphNode");
21
19
  var ADD_TYPOGRAPHY_ELEMENT_COMMAND = (0, _lexical.createCommand)("ADD_TYPOGRAPHY_ELEMENT_COMMAND");
22
20
  exports.ADD_TYPOGRAPHY_ELEMENT_COMMAND = ADD_TYPOGRAPHY_ELEMENT_COMMAND;
23
21
  var TypographyNodeAttrName = "data-typography-style-id";
22
+
23
+ // Node
24
24
  /**
25
25
  * Main responsibility of this node is to apply custom or Webiny theme typography to selected text.
26
26
  * Extends the original ElementNode node to add additional transformation and support for webiny theme typography.
@@ -32,10 +32,6 @@ var TypographyElementNode = /*#__PURE__*/function (_ElementNode) {
32
32
  var _this;
33
33
  (0, _classCallCheck2.default)(this, TypographyElementNode);
34
34
  _this = _super.call(this, key);
35
- (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "__styleId", void 0);
36
- (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "__tag", void 0);
37
- (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "__name", void 0);
38
- (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "__css", void 0);
39
35
  _this.__tag = value.tag;
40
36
  _this.__styleId = value.id;
41
37
  _this.__name = value.name;
@@ -1 +1 @@
1
- {"version":3,"names":["ADD_TYPOGRAPHY_ELEMENT_COMMAND","createCommand","TypographyNodeAttrName","TypographyElementNode","value","key","__tag","tag","__styleId","id","__name","name","__css","css","element","theme","typographyStyleValue","emotionMap","undefined","styles","addClassNamesToElement","className","setAttribute","typographyStyles","styleId","type","version","config","document","createElement","addStylesHTMLElement","newElement","$createTypographyNode","direction","getDirection","setDirection","insertAfter","paragraph","$createParagraphNode","children","getChildren","forEach","child","append","replace","node","__key","serializedNode","setFormat","format","setIndent","indent","ElementNode","$isTypographyElementNode"],"sources":["TypographyElementNode.ts"],"sourcesContent":["import {\n createCommand,\n EditorConfig,\n ElementNode,\n LexicalCommand,\n LexicalEditor,\n LexicalNode,\n NodeKey,\n SerializedElementNode,\n Spread\n} from \"lexical\";\nimport { WebinyEditorTheme } from \"~/themes/webinyLexicalTheme\";\nimport { TypographyHTMLTag, TypographyValue } from \"~/types\";\nimport { addClassNamesToElement } from \"@lexical/utils\";\nimport { $createParagraphNode } from \"~/nodes/ParagraphNode\";\n\n// Command and payload\nexport const ADD_TYPOGRAPHY_ELEMENT_COMMAND: LexicalCommand<TypographyPayload> = createCommand(\n \"ADD_TYPOGRAPHY_ELEMENT_COMMAND\"\n);\nconst TypographyNodeAttrName = \"data-typography-style-id\";\n\nexport interface TypographyPayload {\n value: TypographyValue;\n caption?: LexicalEditor;\n key?: NodeKey;\n}\n\n// Node\nexport type SerializedTypographyNode = Spread<\n {\n tag: TypographyHTMLTag;\n styleId: string;\n name: string;\n typographyStyles: Record<string, any>;\n type: \"typography-el-node\";\n version: 1;\n },\n SerializedElementNode\n>;\n\n/**\n * Main responsibility of this node is to apply custom or Webiny theme typography to selected text.\n * Extends the original ElementNode node to add additional transformation and support for webiny theme typography.\n */\nexport class TypographyElementNode extends ElementNode {\n __styleId: string;\n __tag: TypographyHTMLTag;\n __name: string;\n __css: Record<string, any>;\n\n constructor(value: TypographyValue, key?: NodeKey) {\n super(key);\n this.__tag = value.tag;\n this.__styleId = value.id;\n this.__name = value.name;\n this.__css = value.css;\n }\n\n static override getType(): string {\n return \"typography-el-node\";\n }\n\n static override clone(node: TypographyElementNode): TypographyElementNode {\n return new TypographyElementNode(\n {\n css: node.__css,\n id: node.__styleId,\n name: node.__name,\n tag: node.__tag\n },\n node.__key\n );\n }\n getTypographyValue(): TypographyValue {\n return {\n tag: this.__tag,\n css: this.__css,\n id: this.__styleId,\n name: this.__name\n };\n }\n\n addStylesHTMLElement(element: HTMLElement, theme: WebinyEditorTheme): HTMLElement {\n const typographyStyleValue = theme?.emotionMap\n ? theme?.emotionMap[this.__styleId]\n : undefined;\n if (typographyStyleValue) {\n this.__css = typographyStyleValue.styles;\n addClassNamesToElement(element, typographyStyleValue.className);\n }\n element.setAttribute(TypographyNodeAttrName, this.__styleId);\n\n return element;\n }\n\n override exportJSON(): SerializedTypographyNode {\n return {\n ...super.exportJSON(),\n tag: this.__tag,\n typographyStyles: this.__css,\n name: this.__name,\n styleId: this.__styleId,\n type: \"typography-el-node\",\n version: 1\n };\n }\n\n static override importJSON(serializedNode: SerializedTypographyNode): TypographyElementNode {\n const node = new TypographyElementNode({\n id: serializedNode.styleId,\n css: serializedNode.typographyStyles,\n tag: serializedNode.tag,\n name: serializedNode.name\n });\n node.setFormat(serializedNode.format);\n node.setIndent(serializedNode.indent);\n node.setDirection(serializedNode.direction);\n return node;\n }\n\n override createDOM(config: EditorConfig): HTMLElement {\n const tag = this.__tag;\n const element = document.createElement(tag);\n return this.addStylesHTMLElement(element, config.theme);\n }\n\n override updateDOM(): boolean {\n return false;\n }\n\n override insertNewAfter(): TypographyElementNode {\n const newElement = $createTypographyNode({\n tag: this.__tag,\n name: this.__name,\n css: this.__css,\n id: this.__styleId\n });\n const direction = this.getDirection();\n newElement.setDirection(direction);\n this.insertAfter(newElement);\n return newElement;\n }\n\n override collapseAtStart(): true {\n const paragraph = $createParagraphNode();\n const children = this.getChildren();\n children.forEach(child => paragraph.append(child));\n this.replace(paragraph);\n return true;\n }\n}\n\nexport const $createTypographyNode = (\n value: TypographyValue,\n key?: NodeKey\n): TypographyElementNode => {\n return new TypographyElementNode(value, key);\n};\n\nexport const $isTypographyElementNode = (node: ElementNode | LexicalNode | null): boolean => {\n return node instanceof TypographyElementNode;\n};\n"],"mappings":"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"}
1
+ {"version":3,"names":["_lexical","require","_utils","_ParagraphNode","ADD_TYPOGRAPHY_ELEMENT_COMMAND","createCommand","exports","TypographyNodeAttrName","TypographyElementNode","_ElementNode","_inherits2","default","_super","_createSuper2","value","key","_this","_classCallCheck2","call","__tag","tag","__styleId","id","__name","name","__css","css","_createClass2","getTypographyValue","addStylesHTMLElement","element","theme","typographyStyleValue","emotionMap","undefined","styles","addClassNamesToElement","className","setAttribute","exportJSON","_objectSpread2","_get2","_getPrototypeOf2","prototype","typographyStyles","styleId","type","version","createDOM","config","document","createElement","updateDOM","insertNewAfter","newElement","$createTypographyNode","direction","getDirection","setDirection","insertAfter","collapseAtStart","paragraph","$createParagraphNode","children","getChildren","forEach","child","append","replace","getType","clone","node","__key","importJSON","serializedNode","setFormat","format","setIndent","indent","ElementNode","$isTypographyElementNode"],"sources":["TypographyElementNode.ts"],"sourcesContent":["import {\n createCommand,\n EditorConfig,\n ElementNode,\n LexicalCommand,\n LexicalEditor,\n LexicalNode,\n NodeKey,\n SerializedElementNode,\n Spread\n} from \"lexical\";\nimport { WebinyEditorTheme } from \"~/themes/webinyLexicalTheme\";\nimport { TypographyHTMLTag, TypographyValue } from \"~/types\";\nimport { addClassNamesToElement } from \"@lexical/utils\";\nimport { $createParagraphNode } from \"~/nodes/ParagraphNode\";\n\n// Command and payload\nexport const ADD_TYPOGRAPHY_ELEMENT_COMMAND: LexicalCommand<TypographyPayload> = createCommand(\n \"ADD_TYPOGRAPHY_ELEMENT_COMMAND\"\n);\nconst TypographyNodeAttrName = \"data-typography-style-id\";\n\nexport interface TypographyPayload {\n value: TypographyValue;\n caption?: LexicalEditor;\n key?: NodeKey;\n}\n\n// Node\nexport type SerializedTypographyNode = Spread<\n {\n tag: TypographyHTMLTag;\n styleId: string;\n name: string;\n typographyStyles: Record<string, any>;\n type: \"typography-el-node\";\n version: 1;\n },\n SerializedElementNode\n>;\n\n/**\n * Main responsibility of this node is to apply custom or Webiny theme typography to selected text.\n * Extends the original ElementNode node to add additional transformation and support for webiny theme typography.\n */\nexport class TypographyElementNode extends ElementNode {\n __styleId: string;\n __tag: TypographyHTMLTag;\n __name: string;\n __css: Record<string, any>;\n\n constructor(value: TypographyValue, key?: NodeKey) {\n super(key);\n this.__tag = value.tag;\n this.__styleId = value.id;\n this.__name = value.name;\n this.__css = value.css;\n }\n\n static override getType(): string {\n return \"typography-el-node\";\n }\n\n static override clone(node: TypographyElementNode): TypographyElementNode {\n return new TypographyElementNode(\n {\n css: node.__css,\n id: node.__styleId,\n name: node.__name,\n tag: node.__tag\n },\n node.__key\n );\n }\n getTypographyValue(): TypographyValue {\n return {\n tag: this.__tag,\n css: this.__css,\n id: this.__styleId,\n name: this.__name\n };\n }\n\n addStylesHTMLElement(element: HTMLElement, theme: WebinyEditorTheme): HTMLElement {\n const typographyStyleValue = theme?.emotionMap\n ? theme?.emotionMap[this.__styleId]\n : undefined;\n if (typographyStyleValue) {\n this.__css = typographyStyleValue.styles;\n addClassNamesToElement(element, typographyStyleValue.className);\n }\n element.setAttribute(TypographyNodeAttrName, this.__styleId);\n\n return element;\n }\n\n override exportJSON(): SerializedTypographyNode {\n return {\n ...super.exportJSON(),\n tag: this.__tag,\n typographyStyles: this.__css,\n name: this.__name,\n styleId: this.__styleId,\n type: \"typography-el-node\",\n version: 1\n };\n }\n\n static override importJSON(serializedNode: SerializedTypographyNode): TypographyElementNode {\n const node = new TypographyElementNode({\n id: serializedNode.styleId,\n css: serializedNode.typographyStyles,\n tag: serializedNode.tag,\n name: serializedNode.name\n });\n node.setFormat(serializedNode.format);\n node.setIndent(serializedNode.indent);\n node.setDirection(serializedNode.direction);\n return node;\n }\n\n override createDOM(config: EditorConfig): HTMLElement {\n const tag = this.__tag;\n const element = document.createElement(tag);\n return this.addStylesHTMLElement(element, config.theme);\n }\n\n override updateDOM(): boolean {\n return false;\n }\n\n override insertNewAfter(): TypographyElementNode {\n const newElement = $createTypographyNode({\n tag: this.__tag,\n name: this.__name,\n css: this.__css,\n id: this.__styleId\n });\n const direction = this.getDirection();\n newElement.setDirection(direction);\n this.insertAfter(newElement);\n return newElement;\n }\n\n override collapseAtStart(): true {\n const paragraph = $createParagraphNode();\n const children = this.getChildren();\n children.forEach(child => paragraph.append(child));\n this.replace(paragraph);\n return true;\n }\n}\n\nexport const $createTypographyNode = (\n value: TypographyValue,\n key?: NodeKey\n): TypographyElementNode => {\n return new TypographyElementNode(value, key);\n};\n\nexport const $isTypographyElementNode = (node: ElementNode | LexicalNode | null): boolean => {\n return node instanceof TypographyElementNode;\n};\n"],"mappings":"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"}
@@ -0,0 +1,43 @@
1
+ /**
2
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ *
7
+ *
8
+ */
9
+
10
+ .ImageNode__contentEditable {
11
+ min-height: 20px;
12
+ border: 0px;
13
+ resize: none;
14
+ cursor: text;
15
+ caret-color: rgb(5, 5, 5);
16
+ display: block;
17
+ position: relative;
18
+ outline: 0px;
19
+ padding: 10px;
20
+ user-select: text;
21
+ font-size: 12px;
22
+ width: calc(100% - 20px);
23
+ white-space: pre-wrap;
24
+ word-break: break-word;
25
+ }
26
+
27
+ .ImageNode__placeholder {
28
+ font-size: 12px;
29
+ color: #888;
30
+ overflow: hidden;
31
+ position: absolute;
32
+ text-overflow: ellipsis;
33
+ top: 10px;
34
+ left: 10px;
35
+ user-select: none;
36
+ white-space: nowrap;
37
+ display: inline-block;
38
+ pointer-events: none;
39
+ }
40
+
41
+ .image-control-wrapper--resizing {
42
+ touch-action: none;
43
+ }
@@ -18,10 +18,11 @@ var _HeadingNode = require("./HeadingNode");
18
18
  var _ParagraphNode = require("./ParagraphNode");
19
19
  var _richText = require("@lexical/rich-text");
20
20
  var _QuoteNode = require("./QuoteNode");
21
+ var _ImageNode = require("./ImageNode");
21
22
  /*
22
23
  * This is a list of all the nodes that Webiny's Lexical implementation supports OOTB.
23
24
  * */
24
- var WebinyNodes = [_ListNode.ListNode, _ListItemNode.ListItemNode, _code.CodeNode, _hashtag.HashtagNode, _code.CodeHighlightNode, _link.AutoLinkNode, _link.LinkNode, _overflow.OverflowNode, _mark.MarkNode, _FontColorNode.FontColorNode, _TypographyElementNode.TypographyElementNode,
25
+ var WebinyNodes = [_ImageNode.ImageNode, _ListNode.ListNode, _ListItemNode.ListItemNode, _code.CodeNode, _hashtag.HashtagNode, _code.CodeHighlightNode, _link.AutoLinkNode, _link.LinkNode, _overflow.OverflowNode, _mark.MarkNode, _FontColorNode.FontColorNode, _TypographyElementNode.TypographyElementNode,
25
26
  /*
26
27
  * In order to provide additional Webiny-related functionality, we override Lexical's ParagraphNode and HeadingNode nodes.
27
28
  * More info on overriding can be found here: https://lexical.dev/docs/concepts/node-replacement.
@@ -1 +1 @@
1
- {"version":3,"names":["WebinyNodes","ListNode","ListItemNode","CodeNode","HashtagNode","CodeHighlightNode","AutoLinkNode","LinkNode","OverflowNode","MarkNode","FontColorNode","TypographyElementNode","ParagraphNode","replace","BaseParagraphNode","with","HeadingNode","BaseHeadingNode","node","getTag","QuoteNode","BaseQuoteNode"],"sources":["webinyNodes.ts"],"sourcesContent":["import type { Klass, LexicalNode } from \"lexical\";\n\nimport { CodeHighlightNode, CodeNode } from \"@lexical/code\";\nimport { HashtagNode } from \"@lexical/hashtag\";\nimport { AutoLinkNode, LinkNode } from \"@lexical/link\";\nimport { MarkNode } from \"@lexical/mark\";\nimport { OverflowNode } from \"@lexical/overflow\";\nimport { FontColorNode } from \"~/nodes/FontColorNode\";\nimport { TypographyElementNode } from \"~/nodes/TypographyElementNode\";\nimport { ListNode } from \"~/nodes/ListNode\";\nimport { ListItemNode } from \"~/nodes/ListItemNode\";\nimport { ParagraphNode as BaseParagraphNode } from \"lexical\";\nimport { HeadingNode } from \"~/nodes/HeadingNode\";\nimport { ParagraphNode } from \"~/nodes/ParagraphNode\";\nimport { HeadingNode as BaseHeadingNode, QuoteNode as BaseQuoteNode } from \"@lexical/rich-text\";\nimport { QuoteNode } from \"~/nodes/QuoteNode\";\n\n/*\n * This is a list of all the nodes that Webiny's Lexical implementation supports OOTB.\n * */\nexport const WebinyNodes: ReadonlyArray<\n | Klass<LexicalNode>\n | {\n replace: Klass<LexicalNode>;\n with: <T extends { new (...args: any): any }>(node: InstanceType<T>) => LexicalNode;\n }\n> = [\n ListNode,\n ListItemNode,\n CodeNode,\n HashtagNode,\n CodeHighlightNode,\n AutoLinkNode,\n LinkNode,\n OverflowNode,\n MarkNode,\n FontColorNode,\n TypographyElementNode,\n /*\n * In order to provide additional Webiny-related functionality, we override Lexical's ParagraphNode and HeadingNode nodes.\n * More info on overriding can be found here: https://lexical.dev/docs/concepts/node-replacement.\n * */\n ParagraphNode,\n {\n replace: BaseParagraphNode,\n with: () => {\n return new ParagraphNode();\n }\n },\n HeadingNode,\n {\n replace: BaseHeadingNode,\n with: (node: BaseHeadingNode) => {\n return new HeadingNode(node.getTag());\n }\n },\n QuoteNode,\n {\n replace: BaseQuoteNode,\n with: () => {\n return new QuoteNode();\n }\n }\n];\n"],"mappings":";;;;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACO,IAAMA,WAMZ,GAAG,CACAC,kBAAQ,EACRC,0BAAY,EACZC,cAAQ,EACRC,oBAAW,EACXC,uBAAiB,EACjBC,kBAAY,EACZC,cAAQ,EACRC,sBAAY,EACZC,cAAQ,EACRC,4BAAa,EACbC,4CAAqB;AACrB;AACJ;AACA;AACA;AACIC,4BAAa,EACb;EACIC,OAAO,EAAEC,sBAAiB;EAC1BC,IAAI,EAAE,iBAAM;IACR,OAAO,IAAIH,4BAAa,EAAE;EAC9B;AACJ,CAAC,EACDI,wBAAW,EACX;EACIH,OAAO,EAAEI,qBAAe;EACxBF,IAAI,EAAE,eAACG,IAAqB,EAAK;IAC7B,OAAO,IAAIF,wBAAW,CAACE,IAAI,CAACC,MAAM,EAAE,CAAC;EACzC;AACJ,CAAC,EACDC,oBAAS,EACT;EACIP,OAAO,EAAEQ,mBAAa;EACtBN,IAAI,EAAE,iBAAM;IACR,OAAO,IAAIK,oBAAS,EAAE;EAC1B;AACJ,CAAC,CACJ;AAAC"}
1
+ {"version":3,"names":["_code","require","_hashtag","_link","_mark","_overflow","_FontColorNode","_TypographyElementNode","_ListNode","_ListItemNode","_lexical","_HeadingNode","_ParagraphNode","_richText","_QuoteNode","_ImageNode","WebinyNodes","ImageNode","ListNode","ListItemNode","CodeNode","HashtagNode","CodeHighlightNode","AutoLinkNode","LinkNode","OverflowNode","MarkNode","FontColorNode","TypographyElementNode","ParagraphNode","replace","BaseParagraphNode","with","_with","HeadingNode","BaseHeadingNode","node","getTag","QuoteNode","BaseQuoteNode","exports"],"sources":["webinyNodes.ts"],"sourcesContent":["import type { Klass, LexicalNode } from \"lexical\";\n\nimport { CodeHighlightNode, CodeNode } from \"@lexical/code\";\nimport { HashtagNode } from \"@lexical/hashtag\";\nimport { AutoLinkNode, LinkNode } from \"@lexical/link\";\nimport { MarkNode } from \"@lexical/mark\";\nimport { OverflowNode } from \"@lexical/overflow\";\nimport { FontColorNode } from \"~/nodes/FontColorNode\";\nimport { TypographyElementNode } from \"~/nodes/TypographyElementNode\";\nimport { ListNode } from \"~/nodes/ListNode\";\nimport { ListItemNode } from \"~/nodes/ListItemNode\";\nimport { ParagraphNode as BaseParagraphNode } from \"lexical\";\nimport { HeadingNode } from \"~/nodes/HeadingNode\";\nimport { ParagraphNode } from \"~/nodes/ParagraphNode\";\nimport { HeadingNode as BaseHeadingNode, QuoteNode as BaseQuoteNode } from \"@lexical/rich-text\";\nimport { QuoteNode } from \"~/nodes/QuoteNode\";\nimport { ImageNode } from \"~/nodes/ImageNode\";\n\n/*\n * This is a list of all the nodes that Webiny's Lexical implementation supports OOTB.\n * */\nexport const WebinyNodes: ReadonlyArray<\n | Klass<LexicalNode>\n | {\n replace: Klass<LexicalNode>;\n with: <T extends { new (...args: any): any }>(node: InstanceType<T>) => LexicalNode;\n }\n> = [\n ImageNode,\n ListNode,\n ListItemNode,\n CodeNode,\n HashtagNode,\n CodeHighlightNode,\n AutoLinkNode,\n LinkNode,\n OverflowNode,\n MarkNode,\n FontColorNode,\n TypographyElementNode,\n /*\n * In order to provide additional Webiny-related functionality, we override Lexical's ParagraphNode and HeadingNode nodes.\n * More info on overriding can be found here: https://lexical.dev/docs/concepts/node-replacement.\n * */\n ParagraphNode,\n {\n replace: BaseParagraphNode,\n with: () => {\n return new ParagraphNode();\n }\n },\n HeadingNode,\n {\n replace: BaseHeadingNode,\n with: (node: BaseHeadingNode) => {\n return new HeadingNode(node.getTag());\n }\n },\n QuoteNode,\n {\n replace: BaseQuoteNode,\n with: () => {\n return new QuoteNode();\n }\n }\n];\n"],"mappings":";;;;;;AAEA,IAAAA,KAAA,GAAAC,OAAA;AACA,IAAAC,QAAA,GAAAD,OAAA;AACA,IAAAE,KAAA,GAAAF,OAAA;AACA,IAAAG,KAAA,GAAAH,OAAA;AACA,IAAAI,SAAA,GAAAJ,OAAA;AACA,IAAAK,cAAA,GAAAL,OAAA;AACA,IAAAM,sBAAA,GAAAN,OAAA;AACA,IAAAO,SAAA,GAAAP,OAAA;AACA,IAAAQ,aAAA,GAAAR,OAAA;AACA,IAAAS,QAAA,GAAAT,OAAA;AACA,IAAAU,YAAA,GAAAV,OAAA;AACA,IAAAW,cAAA,GAAAX,OAAA;AACA,IAAAY,SAAA,GAAAZ,OAAA;AACA,IAAAa,UAAA,GAAAb,OAAA;AACA,IAAAc,UAAA,GAAAd,OAAA;AAEA;AACA;AACA;AACO,IAAMe,WAMZ,GAAG,CACAC,oBAAS,EACTC,kBAAQ,EACRC,0BAAY,EACZC,cAAQ,EACRC,oBAAW,EACXC,uBAAiB,EACjBC,kBAAY,EACZC,cAAQ,EACRC,sBAAY,EACZC,cAAQ,EACRC,4BAAa,EACbC,4CAAqB;AACrB;AACJ;AACA;AACA;AACIC,4BAAa,EACb;EACIC,OAAO,EAAEC,sBAAiB;EAC1BC,IAAI,EAAE,SAAAC,MAAA,EAAM;IACR,OAAO,IAAIJ,4BAAa,CAAC,CAAC;EAC9B;AACJ,CAAC,EACDK,wBAAW,EACX;EACIJ,OAAO,EAAEK,qBAAe;EACxBH,IAAI,EAAE,SAAAC,MAACG,IAAqB,EAAK;IAC7B,OAAO,IAAIF,wBAAW,CAACE,IAAI,CAACC,MAAM,CAAC,CAAC,CAAC;EACzC;AACJ,CAAC,EACDC,oBAAS,EACT;EACIR,OAAO,EAAES,mBAAa;EACtBP,IAAI,EAAE,SAAAC,MAAA,EAAM;IACR,OAAO,IAAIK,oBAAS,CAAC,CAAC;EAC1B;AACJ,CAAC,CACJ;AAACE,OAAA,CAAAxB,WAAA,GAAAA,WAAA"}