@webiny/lexical-editor 5.35.2 → 5.36.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 (64) hide show
  1. package/components/Editor/HeadingEditor.js +1 -1
  2. package/components/Editor/HeadingEditor.js.map +1 -1
  3. package/components/Editor/RichTextEditor.js +1 -1
  4. package/components/Editor/RichTextEditor.js.map +1 -1
  5. package/components/ToolbarActions/QuoteAction.js +0 -2
  6. package/components/ToolbarActions/QuoteAction.js.map +1 -1
  7. package/components/ToolbarActions/TypographyAction.js +30 -3
  8. package/components/ToolbarActions/TypographyAction.js.map +1 -1
  9. package/hooks/useQuote.d.ts +2 -0
  10. package/hooks/{useWebinyQuote.js → useQuote.js} +2 -2
  11. package/hooks/useQuote.js.map +1 -0
  12. package/nodes/HeadingNode.d.ts +34 -0
  13. package/nodes/HeadingNode.js +192 -0
  14. package/nodes/HeadingNode.js.map +1 -0
  15. package/nodes/ParagraphNode.d.ts +32 -0
  16. package/nodes/ParagraphNode.js +218 -0
  17. package/nodes/ParagraphNode.js.map +1 -0
  18. package/nodes/QuoteNode.d.ts +34 -0
  19. package/nodes/QuoteNode.js +225 -0
  20. package/nodes/QuoteNode.js.map +1 -0
  21. package/nodes/TypographyElementNode.js +2 -1
  22. package/nodes/TypographyElementNode.js.map +1 -1
  23. package/nodes/list-node/WebinyListItemNode.js +2 -1
  24. package/nodes/list-node/WebinyListItemNode.js.map +1 -1
  25. package/nodes/list-node/formatList.js +3 -2
  26. package/nodes/list-node/formatList.js.map +1 -1
  27. package/nodes/types.d.ts +15 -0
  28. package/nodes/types.js +5 -0
  29. package/nodes/types.js.map +1 -0
  30. package/nodes/webinyNodes.js +29 -5
  31. package/nodes/webinyNodes.js.map +1 -1
  32. package/package.json +17 -17
  33. package/plugins/FontColorPlugin/FontColorPlugin.js +2 -1
  34. package/plugins/FontColorPlugin/FontColorPlugin.js.map +1 -1
  35. package/plugins/TypographyPlugin/TypographyPlugin.js +9 -5
  36. package/plugins/TypographyPlugin/TypographyPlugin.js.map +1 -1
  37. package/plugins/WebinyQuoteNodePlugin/WebinyQuoteNodePlugin.d.ts +1 -1
  38. package/plugins/WebinyQuoteNodePlugin/WebinyQuoteNodePlugin.js +7 -7
  39. package/plugins/WebinyQuoteNodePlugin/WebinyQuoteNodePlugin.js.map +1 -1
  40. package/themes/webinyLexicalTheme.css +18 -9
  41. package/types.d.ts +2 -3
  42. package/types.js.map +1 -1
  43. package/ui/DropDown.js +52 -19
  44. package/ui/DropDown.js.map +1 -1
  45. package/utils/findTypographyStyleByHtmlTag.d.ts +8 -0
  46. package/utils/findTypographyStyleByHtmlTag.js +16 -0
  47. package/utils/findTypographyStyleByHtmlTag.js.map +1 -0
  48. package/utils/generateInitialLexicalValue.js +2 -1
  49. package/utils/generateInitialLexicalValue.js.map +1 -1
  50. package/utils/getLexicalTextSelectionState.js +19 -3
  51. package/utils/getLexicalTextSelectionState.js.map +1 -1
  52. package/utils/nodes/formatToHeading.d.ts +3 -0
  53. package/utils/nodes/formatToHeading.js +25 -0
  54. package/utils/nodes/formatToHeading.js.map +1 -0
  55. package/utils/nodes/formatToParagraph.d.ts +1 -1
  56. package/utils/nodes/formatToParagraph.js +4 -3
  57. package/utils/nodes/formatToParagraph.js.map +1 -1
  58. package/utils/nodes/formatToQuote.js +8 -3
  59. package/utils/nodes/formatToQuote.js.map +1 -1
  60. package/hooks/useWebinyQuote.d.ts +0 -2
  61. package/hooks/useWebinyQuote.js.map +0 -1
  62. package/nodes/WebinyQuoteNode.d.ts +0 -29
  63. package/nodes/WebinyQuoteNode.js +0 -148
  64. package/nodes/WebinyQuoteNode.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"names":["WebinyListItemNode","value","checked","key","__value","undefined","__checked","config","element","document","createElement","parent","getParent","$isWebinyListNode","updateChildrenListItemValue","updateListItemChecked","$setListItemThemeClassNames","theme","prevNode","dom","getChecked","type","getValue","version","i","length","node","$isElementNode","canMergeWith","children","getChildren","append","remove","replaceWithNode","$isWebinyListItemNode","list","getParentOrThrow","childrenKeys","__children","childrenLength","index","indexOf","__key","insertBefore","insertAfter","newList","$createWebinyListNode","getListType","getStyleId","child","listNode","console","log","siblings","getNextSiblings","after","afterListNode","newListNode","$createListNode","forEach","sibling","preserveEmptyParent","nextSibling","getNextSibling","newElement","$createWebinyListItemNode","selection","paragraph","$createParagraphNode","listNodeParent","isIndented","getChildrenSize","select","replace","anchor","focus","getKey","getNode","is","set","offset","self","getLatest","getWritable","setChecked","__indent","indentLevel","indent","currentIndent","getIndent","$handleIndent","$handleOutdent","nodeToInsert","replacement","$isParagraphNode","$isRangeSelection","anchorNode","focusNode","isParentOf","getTextContent","li","conversion","convertListItemElement","priority","serializedNode","setFormat","format","setIndent","setDirection","direction","ElementNode","editorThemeClasses","classesToAdd","classesToRemove","listTheme","listItemClassName","listitem","nestedListItemClassName","nested","listItemClasses","split","push","parentNode","isCheckList","listitemUnchecked","listitemChecked","nestedListItemClasses","some","removeClassNamesFromElement","addClassNamesToElement","listItemNode","prevListItemNode","getFirstChild","removeAttribute","setAttribute"],"sources":["WebinyListItemNode.ts"],"sourcesContent":["import {\n $createParagraphNode,\n $isElementNode,\n $isParagraphNode,\n $isRangeSelection,\n DOMConversionMap,\n DOMConversionOutput,\n EditorConfig,\n EditorThemeClasses,\n ElementNode,\n GridSelection,\n LexicalNode,\n NodeKey,\n NodeSelection,\n ParagraphNode,\n RangeSelection,\n SerializedElementNode\n} from \"lexical\";\nimport { Spread } from \"lexical\";\nimport {\n $createWebinyListNode,\n $isWebinyListNode,\n WebinyListNode\n} from \"~/nodes/list-node/WebinyListNode\";\nimport { $createListNode } from \"@lexical/list\";\nimport { addClassNamesToElement, removeClassNamesFromElement } from \"@lexical/utils\";\nimport {\n $handleIndent,\n $handleOutdent,\n updateChildrenListItemValue\n} from \"~/nodes/list-node/formatList\";\n\nexport type SerializedWebinyListItemNode = Spread<\n {\n checked: boolean | undefined;\n type: \"webiny-listitem\";\n value: number;\n version: 1;\n },\n SerializedElementNode\n>;\n\n/** @noInheritDoc */\nexport class WebinyListItemNode extends ElementNode {\n /** @internal */\n __value: number;\n /** @internal */\n __checked?: boolean;\n\n static override getType(): string {\n return \"webiny-listitem\";\n }\n\n static override clone(node: WebinyListItemNode): WebinyListItemNode {\n return new WebinyListItemNode(node.__value, node.__checked, node.__key);\n }\n\n constructor(value?: number, checked?: boolean, key?: NodeKey) {\n super(key);\n this.__value = value === undefined ? 1 : value;\n this.__checked = checked;\n }\n\n override createDOM(config: EditorConfig): HTMLElement {\n const element = document.createElement(\"li\");\n const parent = this.getParent();\n\n if ($isWebinyListNode(parent)) {\n updateChildrenListItemValue(parent);\n updateListItemChecked(element, this, null, parent);\n }\n element.value = this.__value;\n $setListItemThemeClassNames(element, config.theme, this);\n\n return element;\n }\n\n override updateDOM(\n prevNode: WebinyListItemNode,\n dom: HTMLElement,\n config: EditorConfig\n ): boolean {\n const parent = this.getParent();\n\n if ($isWebinyListNode(parent)) {\n updateChildrenListItemValue(parent);\n updateListItemChecked(dom, this, prevNode, parent);\n }\n // @ts-expect-error - this is always HTMLListItemElement\n dom.value = this.__value;\n\n $setListItemThemeClassNames(dom, config.theme, this);\n\n return false;\n }\n\n static importDOM(): DOMConversionMap | null {\n return {\n li: () => ({\n conversion: convertListItemElement,\n priority: 0\n })\n };\n }\n\n static override importJSON(serializedNode: SerializedWebinyListItemNode): WebinyListItemNode {\n const node = new WebinyListItemNode(serializedNode.value, serializedNode.checked);\n node.setFormat(serializedNode.format);\n node.setIndent(serializedNode.indent);\n node.setDirection(serializedNode.direction);\n return node;\n }\n\n override exportJSON(): SerializedWebinyListItemNode {\n return {\n ...super.exportJSON(),\n checked: this.getChecked(),\n type: \"webiny-listitem\",\n value: this.getValue(),\n version: 1\n };\n }\n\n override append(...nodes: LexicalNode[]): this {\n for (let i = 0; i < nodes.length; i++) {\n const node = nodes[i];\n\n if ($isElementNode(node) && this.canMergeWith(node)) {\n const children = node.getChildren();\n this.append(...children);\n node.remove();\n } else {\n super.append(node);\n }\n }\n\n return this;\n }\n\n override replace<N extends LexicalNode>(replaceWithNode: N): N {\n if ($isWebinyListItemNode(replaceWithNode)) {\n return super.replace(replaceWithNode);\n }\n\n const list = this.getParentOrThrow();\n\n if ($isWebinyListNode(list)) {\n const childrenKeys = list.__children;\n const childrenLength = childrenKeys.length;\n const index = childrenKeys.indexOf(this.__key);\n\n if (index === 0) {\n list.insertBefore(replaceWithNode);\n } else if (index === childrenLength - 1) {\n list.insertAfter(replaceWithNode);\n } else {\n // Split the list\n const newList = $createWebinyListNode(list.getListType(), list.getStyleId());\n const children = list.getChildren();\n\n for (let i = index + 1; i < childrenLength; i++) {\n const child = children[i];\n newList.append(child);\n }\n list.insertAfter(replaceWithNode);\n replaceWithNode.insertAfter(newList);\n }\n this.remove();\n\n if (childrenLength === 1) {\n list.remove();\n }\n }\n\n return replaceWithNode;\n }\n\n override insertAfter(node: LexicalNode): LexicalNode {\n const listNode = this.getParentOrThrow();\n\n if (!$isWebinyListNode(listNode)) {\n console.log(\"insertAfter: webiny list node is not parent of list item node\");\n return listNode;\n }\n\n const siblings = this.getNextSiblings();\n\n if ($isWebinyListItemNode(node)) {\n const after = super.insertAfter(node);\n const afterListNode = node.getParentOrThrow();\n\n if ($isWebinyListNode(afterListNode)) {\n afterListNode;\n }\n\n return after;\n }\n\n // Attempt to merge if the list is of the same type.\n\n if ($isWebinyListNode(node) && node.getListType() === listNode.getListType()) {\n let child = node;\n const children = node.getChildren<WebinyListNode>();\n\n for (let i = children.length - 1; i >= 0; i--) {\n child = children[i];\n\n this.insertAfter(child);\n }\n\n return child;\n }\n\n // Otherwise, split the list\n // Split the lists and insert the node in between them\n listNode.insertAfter(node);\n\n if (siblings.length !== 0) {\n const newListNode = $createListNode(listNode.getListType());\n\n siblings.forEach(sibling => newListNode.append(sibling));\n\n node.insertAfter(newListNode);\n }\n\n return node;\n }\n\n override remove(preserveEmptyParent?: boolean): void {\n const nextSibling = this.getNextSibling();\n super.remove(preserveEmptyParent);\n\n if (nextSibling !== null) {\n const parent = nextSibling.getParent();\n\n if ($isWebinyListNode(parent)) {\n updateChildrenListItemValue(parent);\n }\n }\n }\n\n override insertNewAfter(): WebinyListItemNode | ParagraphNode {\n const newElement = $createWebinyListItemNode(this.__checked == null ? undefined : false);\n this.insertAfter(newElement);\n\n return newElement;\n }\n\n override collapseAtStart(selection: RangeSelection): true {\n const paragraph = $createParagraphNode();\n const children = this.getChildren();\n children.forEach(child => paragraph.append(child));\n const listNode = this.getParentOrThrow();\n const listNodeParent = listNode.getParentOrThrow();\n const isIndented = $isWebinyListItemNode(listNodeParent);\n\n if (listNode.getChildrenSize() === 1) {\n if (isIndented) {\n // if the list node is nested, we just want to remove it,\n // effectively unindenting it.\n listNode.remove();\n listNodeParent.select();\n } else {\n listNode.replace(paragraph);\n // If we have selection on the list item, we'll need to move it\n // to the paragraph\n const anchor = selection.anchor;\n const focus = selection.focus;\n const key = paragraph.getKey();\n\n if (anchor.type === \"element\" && anchor.getNode().is(this)) {\n anchor.set(key, anchor.offset, \"element\");\n }\n\n if (focus.type === \"element\" && focus.getNode().is(this)) {\n focus.set(key, focus.offset, \"element\");\n }\n }\n } else {\n listNode.insertBefore(paragraph);\n this.remove();\n }\n\n return true;\n }\n\n getValue(): number {\n const self = this.getLatest();\n\n return self.__value;\n }\n\n setValue(value: number): void {\n const self = this.getWritable();\n self.__value = value;\n }\n\n getChecked(): boolean | undefined {\n const self = this.getLatest();\n\n return self.__checked;\n }\n\n setChecked(checked?: boolean): void {\n const self = this.getWritable();\n self.__checked = checked;\n }\n\n toggleChecked(): void {\n this.setChecked(!this.__checked);\n }\n\n override getIndent(): number {\n // If we don't have a parent, we are likely serializing\n const parent = this.getParent();\n if (parent === null) {\n return this.getLatest().__indent;\n }\n // ListItemNode should always have a ListNode for a parent.\n let listNodeParent = parent.getParentOrThrow();\n let indentLevel = 0;\n while ($isWebinyListItemNode(listNodeParent)) {\n listNodeParent = listNodeParent.getParentOrThrow().getParentOrThrow();\n indentLevel++;\n }\n\n return indentLevel;\n }\n\n override setIndent(indent: number): this {\n let currentIndent = this.getIndent();\n while (currentIndent !== indent) {\n if (currentIndent < indent) {\n $handleIndent([this]);\n currentIndent++;\n } else {\n $handleOutdent([this]);\n currentIndent--;\n }\n }\n\n return this;\n }\n\n override canIndent(): false {\n // Indent/outdent is handled specifically in the RichText logic.\n\n return false;\n }\n\n override insertBefore(nodeToInsert: LexicalNode): LexicalNode {\n if ($isWebinyListItemNode(nodeToInsert)) {\n const parent = this.getParentOrThrow();\n\n if ($isWebinyListNode(parent)) {\n const siblings = this.getNextSiblings();\n updateChildrenListItemValue(parent, siblings);\n }\n }\n\n return super.insertBefore(nodeToInsert);\n }\n\n override canInsertAfter(node: LexicalNode): boolean {\n return $isWebinyListNode(node);\n }\n\n override canReplaceWith(replacement: LexicalNode): boolean {\n return $isWebinyListItemNode(replacement);\n }\n\n override canMergeWith(node: LexicalNode): boolean {\n return $isParagraphNode(node) || $isWebinyListItemNode(node);\n }\n\n override extractWithChild(\n child: LexicalNode,\n selection: RangeSelection | NodeSelection | GridSelection\n ): boolean {\n if (!$isRangeSelection(selection)) {\n return false;\n }\n\n const anchorNode = selection.anchor.getNode();\n const focusNode = selection.focus.getNode();\n\n return (\n this.isParentOf(anchorNode) &&\n this.isParentOf(focusNode) &&\n this.getTextContent().length === selection.getTextContent().length\n );\n }\n}\n\nfunction $setListItemThemeClassNames(\n dom: HTMLElement,\n editorThemeClasses: EditorThemeClasses,\n node: WebinyListItemNode\n): void {\n const classesToAdd = [];\n const classesToRemove = [];\n const listTheme = editorThemeClasses.list;\n const listItemClassName = listTheme ? listTheme.listitem : undefined;\n let nestedListItemClassName;\n\n if (listTheme && listTheme.nested) {\n nestedListItemClassName = listTheme.nested.listitem;\n }\n\n if (listItemClassName !== undefined) {\n const listItemClasses = listItemClassName.split(\" \");\n classesToAdd.push(...listItemClasses);\n }\n\n if (listTheme) {\n const parentNode = node.getParent();\n const isCheckList = $isWebinyListNode(parentNode) && parentNode?.getListType() === \"check\";\n const checked = node.getChecked();\n\n if (!isCheckList || checked) {\n classesToRemove.push(listTheme.listitemUnchecked);\n }\n\n if (!isCheckList || !checked) {\n classesToRemove.push(listTheme.listitemChecked);\n }\n\n if (isCheckList) {\n classesToAdd.push(checked ? listTheme.listitemChecked : listTheme.listitemUnchecked);\n }\n }\n\n if (nestedListItemClassName !== undefined) {\n const nestedListItemClasses = nestedListItemClassName.split(\" \");\n\n if (node.getChildren().some(child => $isWebinyListNode(child))) {\n classesToAdd.push(...nestedListItemClasses);\n } else {\n classesToRemove.push(...nestedListItemClasses);\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\nfunction updateListItemChecked(\n dom: HTMLElement,\n listItemNode: WebinyListItemNode,\n prevListItemNode: WebinyListItemNode | null,\n listNode: WebinyListNode\n): void {\n const isCheckList = listNode.getListType() === \"check\";\n\n if (isCheckList) {\n // Only add attributes for leaf list items\n if ($isWebinyListNode(listItemNode.getFirstChild())) {\n dom.removeAttribute(\"role\");\n dom.removeAttribute(\"tabIndex\");\n dom.removeAttribute(\"aria-checked\");\n } else {\n dom.setAttribute(\"role\", \"checkbox\");\n dom.setAttribute(\"tabIndex\", \"-1\");\n\n if (!prevListItemNode || listItemNode.__checked !== prevListItemNode.__checked) {\n dom.setAttribute(\"aria-checked\", listItemNode.getChecked() ? \"true\" : \"false\");\n }\n }\n } else {\n // Clean up checked state\n if (listItemNode.getChecked() != null) {\n listItemNode.setChecked(undefined);\n }\n }\n}\n\nfunction convertListItemElement(): DOMConversionOutput {\n return { node: $createWebinyListItemNode() };\n}\n\nexport function $createWebinyListItemNode(checked?: boolean): WebinyListItemNode {\n return new WebinyListItemNode(undefined, checked);\n}\n\nexport function $isWebinyListItemNode(\n node: LexicalNode | null | undefined\n): node is WebinyListItemNode {\n return node instanceof WebinyListItemNode;\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["WebinyListItemNode","value","checked","key","__value","undefined","__checked","config","element","document","createElement","parent","getParent","$isWebinyListNode","updateChildrenListItemValue","updateListItemChecked","$setListItemThemeClassNames","theme","prevNode","dom","getChecked","type","getValue","version","i","length","node","$isElementNode","canMergeWith","children","getChildren","append","remove","replaceWithNode","$isWebinyListItemNode","list","getParentOrThrow","childrenKeys","__children","childrenLength","index","indexOf","__key","insertBefore","insertAfter","newList","$createWebinyListNode","getListType","getStyleId","child","listNode","console","log","siblings","getNextSiblings","after","afterListNode","newListNode","$createListNode","forEach","sibling","preserveEmptyParent","nextSibling","getNextSibling","newElement","$createWebinyListItemNode","selection","paragraph","$createParagraphNode","listNodeParent","isIndented","getChildrenSize","select","replace","anchor","focus","getKey","getNode","is","set","offset","self","getLatest","getWritable","setChecked","__indent","indentLevel","indent","currentIndent","getIndent","$handleIndent","$handleOutdent","nodeToInsert","replacement","$isBaseParagraphNode","$isRangeSelection","anchorNode","focusNode","isParentOf","getTextContent","li","conversion","convertListItemElement","priority","serializedNode","setFormat","format","setIndent","setDirection","direction","ElementNode","editorThemeClasses","classesToAdd","classesToRemove","listTheme","listItemClassName","listitem","nestedListItemClassName","nested","listItemClasses","split","push","parentNode","isCheckList","listitemUnchecked","listitemChecked","nestedListItemClasses","some","removeClassNamesFromElement","addClassNamesToElement","listItemNode","prevListItemNode","getFirstChild","removeAttribute","setAttribute"],"sources":["WebinyListItemNode.ts"],"sourcesContent":["import {\n $isElementNode,\n $isParagraphNode as $isBaseParagraphNode,\n $isRangeSelection,\n DOMConversionMap,\n DOMConversionOutput,\n EditorConfig,\n EditorThemeClasses,\n ElementNode,\n GridSelection,\n LexicalNode,\n NodeKey,\n NodeSelection,\n ParagraphNode,\n RangeSelection,\n SerializedElementNode\n} from \"lexical\";\nimport { Spread } from \"lexical\";\nimport {\n $createWebinyListNode,\n $isWebinyListNode,\n WebinyListNode\n} from \"~/nodes/list-node/WebinyListNode\";\nimport { $createListNode } from \"@lexical/list\";\nimport { addClassNamesToElement, removeClassNamesFromElement } from \"@lexical/utils\";\nimport {\n $handleIndent,\n $handleOutdent,\n updateChildrenListItemValue\n} from \"~/nodes/list-node/formatList\";\nimport { $createParagraphNode } from \"~/nodes/ParagraphNode\";\n\nexport type SerializedWebinyListItemNode = Spread<\n {\n checked: boolean | undefined;\n type: \"webiny-listitem\";\n value: number;\n version: 1;\n },\n SerializedElementNode\n>;\n\n/** @noInheritDoc */\nexport class WebinyListItemNode extends ElementNode {\n /** @internal */\n __value: number;\n /** @internal */\n __checked?: boolean;\n\n static override getType(): string {\n return \"webiny-listitem\";\n }\n\n static override clone(node: WebinyListItemNode): WebinyListItemNode {\n return new WebinyListItemNode(node.__value, node.__checked, node.__key);\n }\n\n constructor(value?: number, checked?: boolean, key?: NodeKey) {\n super(key);\n this.__value = value === undefined ? 1 : value;\n this.__checked = checked;\n }\n\n override createDOM(config: EditorConfig): HTMLElement {\n const element = document.createElement(\"li\");\n const parent = this.getParent();\n\n if ($isWebinyListNode(parent)) {\n updateChildrenListItemValue(parent);\n updateListItemChecked(element, this, null, parent);\n }\n element.value = this.__value;\n $setListItemThemeClassNames(element, config.theme, this);\n\n return element;\n }\n\n override updateDOM(\n prevNode: WebinyListItemNode,\n dom: HTMLElement,\n config: EditorConfig\n ): boolean {\n const parent = this.getParent();\n\n if ($isWebinyListNode(parent)) {\n updateChildrenListItemValue(parent);\n updateListItemChecked(dom, this, prevNode, parent);\n }\n // @ts-expect-error - this is always HTMLListItemElement\n dom.value = this.__value;\n\n $setListItemThemeClassNames(dom, config.theme, this);\n\n return false;\n }\n\n static importDOM(): DOMConversionMap | null {\n return {\n li: () => ({\n conversion: convertListItemElement,\n priority: 0\n })\n };\n }\n\n static override importJSON(serializedNode: SerializedWebinyListItemNode): WebinyListItemNode {\n const node = new WebinyListItemNode(serializedNode.value, serializedNode.checked);\n node.setFormat(serializedNode.format);\n node.setIndent(serializedNode.indent);\n node.setDirection(serializedNode.direction);\n return node;\n }\n\n override exportJSON(): SerializedWebinyListItemNode {\n return {\n ...super.exportJSON(),\n checked: this.getChecked(),\n type: \"webiny-listitem\",\n value: this.getValue(),\n version: 1\n };\n }\n\n override append(...nodes: LexicalNode[]): this {\n for (let i = 0; i < nodes.length; i++) {\n const node = nodes[i];\n\n if ($isElementNode(node) && this.canMergeWith(node)) {\n const children = node.getChildren();\n this.append(...children);\n node.remove();\n } else {\n super.append(node);\n }\n }\n\n return this;\n }\n\n override replace<N extends LexicalNode>(replaceWithNode: N): N {\n if ($isWebinyListItemNode(replaceWithNode)) {\n return super.replace(replaceWithNode);\n }\n\n const list = this.getParentOrThrow();\n\n if ($isWebinyListNode(list)) {\n const childrenKeys = list.__children;\n const childrenLength = childrenKeys.length;\n const index = childrenKeys.indexOf(this.__key);\n\n if (index === 0) {\n list.insertBefore(replaceWithNode);\n } else if (index === childrenLength - 1) {\n list.insertAfter(replaceWithNode);\n } else {\n // Split the list\n const newList = $createWebinyListNode(list.getListType(), list.getStyleId());\n const children = list.getChildren();\n\n for (let i = index + 1; i < childrenLength; i++) {\n const child = children[i];\n newList.append(child);\n }\n list.insertAfter(replaceWithNode);\n replaceWithNode.insertAfter(newList);\n }\n this.remove();\n\n if (childrenLength === 1) {\n list.remove();\n }\n }\n\n return replaceWithNode;\n }\n\n override insertAfter(node: LexicalNode): LexicalNode {\n const listNode = this.getParentOrThrow();\n\n if (!$isWebinyListNode(listNode)) {\n console.log(\"insertAfter: webiny list node is not parent of list item node\");\n return listNode;\n }\n\n const siblings = this.getNextSiblings();\n\n if ($isWebinyListItemNode(node)) {\n const after = super.insertAfter(node);\n const afterListNode = node.getParentOrThrow();\n\n if ($isWebinyListNode(afterListNode)) {\n afterListNode;\n }\n\n return after;\n }\n\n // Attempt to merge if the list is of the same type.\n\n if ($isWebinyListNode(node) && node.getListType() === listNode.getListType()) {\n let child = node;\n const children = node.getChildren<WebinyListNode>();\n\n for (let i = children.length - 1; i >= 0; i--) {\n child = children[i];\n\n this.insertAfter(child);\n }\n\n return child;\n }\n\n // Otherwise, split the list\n // Split the lists and insert the node in between them\n listNode.insertAfter(node);\n\n if (siblings.length !== 0) {\n const newListNode = $createListNode(listNode.getListType());\n\n siblings.forEach(sibling => newListNode.append(sibling));\n\n node.insertAfter(newListNode);\n }\n\n return node;\n }\n\n override remove(preserveEmptyParent?: boolean): void {\n const nextSibling = this.getNextSibling();\n super.remove(preserveEmptyParent);\n\n if (nextSibling !== null) {\n const parent = nextSibling.getParent();\n\n if ($isWebinyListNode(parent)) {\n updateChildrenListItemValue(parent);\n }\n }\n }\n\n override insertNewAfter(): WebinyListItemNode | ParagraphNode {\n const newElement = $createWebinyListItemNode(this.__checked == null ? undefined : false);\n this.insertAfter(newElement);\n\n return newElement;\n }\n\n override collapseAtStart(selection: RangeSelection): true {\n const paragraph = $createParagraphNode();\n const children = this.getChildren();\n children.forEach(child => paragraph.append(child));\n const listNode = this.getParentOrThrow();\n const listNodeParent = listNode.getParentOrThrow();\n const isIndented = $isWebinyListItemNode(listNodeParent);\n\n if (listNode.getChildrenSize() === 1) {\n if (isIndented) {\n // if the list node is nested, we just want to remove it,\n // effectively unindenting it.\n listNode.remove();\n listNodeParent.select();\n } else {\n listNode.replace(paragraph);\n // If we have selection on the list item, we'll need to move it\n // to the paragraph\n const anchor = selection.anchor;\n const focus = selection.focus;\n const key = paragraph.getKey();\n\n if (anchor.type === \"element\" && anchor.getNode().is(this)) {\n anchor.set(key, anchor.offset, \"element\");\n }\n\n if (focus.type === \"element\" && focus.getNode().is(this)) {\n focus.set(key, focus.offset, \"element\");\n }\n }\n } else {\n listNode.insertBefore(paragraph);\n this.remove();\n }\n\n return true;\n }\n\n getValue(): number {\n const self = this.getLatest();\n\n return self.__value;\n }\n\n setValue(value: number): void {\n const self = this.getWritable();\n self.__value = value;\n }\n\n getChecked(): boolean | undefined {\n const self = this.getLatest();\n\n return self.__checked;\n }\n\n setChecked(checked?: boolean): void {\n const self = this.getWritable();\n self.__checked = checked;\n }\n\n toggleChecked(): void {\n this.setChecked(!this.__checked);\n }\n\n override getIndent(): number {\n // If we don't have a parent, we are likely serializing\n const parent = this.getParent();\n if (parent === null) {\n return this.getLatest().__indent;\n }\n // ListItemNode should always have a ListNode for a parent.\n let listNodeParent = parent.getParentOrThrow();\n let indentLevel = 0;\n while ($isWebinyListItemNode(listNodeParent)) {\n listNodeParent = listNodeParent.getParentOrThrow().getParentOrThrow();\n indentLevel++;\n }\n\n return indentLevel;\n }\n\n override setIndent(indent: number): this {\n let currentIndent = this.getIndent();\n while (currentIndent !== indent) {\n if (currentIndent < indent) {\n $handleIndent([this]);\n currentIndent++;\n } else {\n $handleOutdent([this]);\n currentIndent--;\n }\n }\n\n return this;\n }\n\n override canIndent(): false {\n // Indent/outdent is handled specifically in the RichText logic.\n\n return false;\n }\n\n override insertBefore(nodeToInsert: LexicalNode): LexicalNode {\n if ($isWebinyListItemNode(nodeToInsert)) {\n const parent = this.getParentOrThrow();\n\n if ($isWebinyListNode(parent)) {\n const siblings = this.getNextSiblings();\n updateChildrenListItemValue(parent, siblings);\n }\n }\n\n return super.insertBefore(nodeToInsert);\n }\n\n override canInsertAfter(node: LexicalNode): boolean {\n return $isWebinyListNode(node);\n }\n\n override canReplaceWith(replacement: LexicalNode): boolean {\n return $isWebinyListItemNode(replacement);\n }\n\n override canMergeWith(node: LexicalNode): boolean {\n return $isBaseParagraphNode(node) || $isWebinyListItemNode(node);\n }\n\n override extractWithChild(\n child: LexicalNode,\n selection: RangeSelection | NodeSelection | GridSelection\n ): boolean {\n if (!$isRangeSelection(selection)) {\n return false;\n }\n\n const anchorNode = selection.anchor.getNode();\n const focusNode = selection.focus.getNode();\n\n return (\n this.isParentOf(anchorNode) &&\n this.isParentOf(focusNode) &&\n this.getTextContent().length === selection.getTextContent().length\n );\n }\n}\n\nfunction $setListItemThemeClassNames(\n dom: HTMLElement,\n editorThemeClasses: EditorThemeClasses,\n node: WebinyListItemNode\n): void {\n const classesToAdd = [];\n const classesToRemove = [];\n const listTheme = editorThemeClasses.list;\n const listItemClassName = listTheme ? listTheme.listitem : undefined;\n let nestedListItemClassName;\n\n if (listTheme && listTheme.nested) {\n nestedListItemClassName = listTheme.nested.listitem;\n }\n\n if (listItemClassName !== undefined) {\n const listItemClasses = listItemClassName.split(\" \");\n classesToAdd.push(...listItemClasses);\n }\n\n if (listTheme) {\n const parentNode = node.getParent();\n const isCheckList = $isWebinyListNode(parentNode) && parentNode?.getListType() === \"check\";\n const checked = node.getChecked();\n\n if (!isCheckList || checked) {\n classesToRemove.push(listTheme.listitemUnchecked);\n }\n\n if (!isCheckList || !checked) {\n classesToRemove.push(listTheme.listitemChecked);\n }\n\n if (isCheckList) {\n classesToAdd.push(checked ? listTheme.listitemChecked : listTheme.listitemUnchecked);\n }\n }\n\n if (nestedListItemClassName !== undefined) {\n const nestedListItemClasses = nestedListItemClassName.split(\" \");\n\n if (node.getChildren().some(child => $isWebinyListNode(child))) {\n classesToAdd.push(...nestedListItemClasses);\n } else {\n classesToRemove.push(...nestedListItemClasses);\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\nfunction updateListItemChecked(\n dom: HTMLElement,\n listItemNode: WebinyListItemNode,\n prevListItemNode: WebinyListItemNode | null,\n listNode: WebinyListNode\n): void {\n const isCheckList = listNode.getListType() === \"check\";\n\n if (isCheckList) {\n // Only add attributes for leaf list items\n if ($isWebinyListNode(listItemNode.getFirstChild())) {\n dom.removeAttribute(\"role\");\n dom.removeAttribute(\"tabIndex\");\n dom.removeAttribute(\"aria-checked\");\n } else {\n dom.setAttribute(\"role\", \"checkbox\");\n dom.setAttribute(\"tabIndex\", \"-1\");\n\n if (!prevListItemNode || listItemNode.__checked !== prevListItemNode.__checked) {\n dom.setAttribute(\"aria-checked\", listItemNode.getChecked() ? \"true\" : \"false\");\n }\n }\n } else {\n // Clean up checked state\n if (listItemNode.getChecked() != null) {\n listItemNode.setChecked(undefined);\n }\n }\n}\n\nfunction convertListItemElement(): DOMConversionOutput {\n return { node: $createWebinyListItemNode() };\n}\n\nexport function $createWebinyListItemNode(checked?: boolean): WebinyListItemNode {\n return new WebinyListItemNode(undefined, checked);\n}\n\nexport function $isWebinyListItemNode(\n node: LexicalNode | null | undefined\n): node is WebinyListItemNode {\n return node instanceof WebinyListItemNode;\n}\n"],"mappings":"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"}
@@ -18,6 +18,7 @@ var _WebinyListNode = require("./WebinyListNode");
18
18
  var _listNode = require("../../utils/nodes/list-node");
19
19
  var _utils = require("@lexical/utils");
20
20
  var _WebinyListItemNode2 = require("./WebinyListItemNode");
21
+ var _ParagraphNode = require("../ParagraphNode");
21
22
  var DEFAULT_LIST_START_NUMBER = 1;
22
23
  function $isSelectingEmptyListItem(anchorNode, nodes) {
23
24
  return (0, _WebinyListItemNode2.$isWebinyListItemNode)(anchorNode) && (nodes.length === 0 || nodes.length === 1 && anchorNode.is(nodes[0]) && anchorNode.getChildrenSize() === 0);
@@ -170,7 +171,7 @@ function removeList(editor) {
170
171
  try {
171
172
  for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
172
173
  var _WebinyListItemNode = _step2.value;
173
- var paragraph = (0, _lexical.$createParagraphNode)();
174
+ var paragraph = (0, _ParagraphNode.$createParagraphNode)();
174
175
  append(paragraph, _WebinyListItemNode.getChildren());
175
176
  insertionPoint.insertAfter(paragraph);
176
177
  insertionPoint = paragraph;
@@ -392,7 +393,7 @@ function $handleListInsertParagraph() {
392
393
  var grandparent = (parent === null || parent === void 0 ? void 0 : parent.getParent()) || null;
393
394
  var replacementNode;
394
395
  if ((0, _lexical.$isRootOrShadowRoot)(grandparent)) {
395
- replacementNode = (0, _lexical.$createParagraphNode)();
396
+ replacementNode = (0, _ParagraphNode.$createParagraphNode)();
396
397
  topListNode.insertAfter(replacementNode);
397
398
  } else if ((0, _WebinyListItemNode2.$isWebinyListItemNode)(grandparent)) {
398
399
  replacementNode = (0, _WebinyListItemNode2.$createWebinyListItemNode)();
@@ -1 +1 @@
1
- {"version":3,"names":["DEFAULT_LIST_START_NUMBER","$isSelectingEmptyListItem","anchorNode","nodes","$isWebinyListItemNode","length","is","getChildrenSize","$getListItemValue","listItem","list","getParent","value","$isWebinyListNode","console","log","getStart","siblings","getPreviousSiblings","i","sibling","getFirstChild","insertList","editor","listType","styleId","update","selection","$getSelection","$isRangeSelection","DEPRECATED_$isGridSelection","getNodes","anchor","getNode","anchorNodeParent","$createWebinyListNode","$isRootOrShadowRoot","replace","$createWebinyListItemNode","$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","WebinyListNode","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 $createParagraphNode,\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\n} from \"lexical\";\nimport { $createWebinyListNode, $isWebinyListNode, WebinyListNode } from \"./WebinyListNode\";\nimport {\n $getAllListItems,\n $getTopListNode,\n $removeHighestEmptyListParent,\n findNearestWebinyListItemNode,\n getUniqueWebinyListItemNodes,\n isNestedListNode\n} from \"~/utils/nodes/list-node\";\nimport { $getNearestNodeOfType } from \"@lexical/utils\";\nimport {\n $createWebinyListItemNode,\n $isWebinyListItemNode,\n WebinyListItemNode\n} from \"~/nodes/list-node/WebinyListItemNode\";\nimport { ListType } from \"@lexical/list\";\n\nconst DEFAULT_LIST_START_NUMBER = 1;\n\nfunction $isSelectingEmptyListItem(\n anchorNode: WebinyListItemNode | LexicalNode,\n nodes: Array<LexicalNode>\n): boolean {\n return (\n $isWebinyListItemNode(anchorNode) &&\n (nodes.length === 0 ||\n (nodes.length === 1 && anchorNode.is(nodes[0]) && anchorNode.getChildrenSize() === 0))\n );\n}\n\nfunction $getListItemValue(listItem: WebinyListItemNode): number {\n const list = listItem.getParent();\n\n let value = 1;\n\n if (list !== null) {\n if (!$isWebinyListNode(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 ($isWebinyListItemNode(sibling) && !$isWebinyListNode(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 = $createWebinyListNode(listType, styleId);\n\n if ($isRootOrShadowRoot(anchorNodeParent)) {\n anchorNode.replace(list);\n const listItem = $createWebinyListItemNode();\n if ($isElementNode(anchorNode)) {\n listItem.setFormat(anchorNode.getFormatType());\n listItem.setIndent(anchorNode.getIndent());\n }\n list.append(listItem);\n } else if ($isWebinyListItemNode(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 ($isWebinyListNode(parent)) {\n if (!handled.has(parentKey)) {\n const newListNode = $createWebinyListNode(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): WebinyListNode {\n if ($isWebinyListNode(node)) {\n return node;\n }\n\n const previousSibling = node.getPreviousSibling();\n const nextSibling = node.getNextSibling();\n const listItem = $createWebinyListItemNode();\n listItem.setFormat(node.getFormatType());\n listItem.setIndent(node.getIndent());\n append(listItem, node.getChildren());\n\n if ($isWebinyListNode(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 ($isWebinyListNode(nextSibling) && listType === nextSibling.getListType()) {\n append(previousSibling, nextSibling.getChildren());\n nextSibling.remove();\n }\n return previousSibling;\n } else if ($isWebinyListNode(nextSibling) && listType === nextSibling.getListType()) {\n nextSibling.getFirstChildOrThrow().insertBefore(listItem);\n node.remove();\n return nextSibling;\n } else {\n const list = $createWebinyListNode(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<WebinyListNode>();\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, WebinyListNode);\n\n if (WebinyListItemNode != null) {\n listNodes.add($getTopListNode(WebinyListItemNode));\n }\n }\n }\n }\n\n for (const listNode of listNodes) {\n let insertionPoint: WebinyListNode | ParagraphNode = 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(\n list: WebinyListNode,\n children?: Array<LexicalNode>\n): 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 ($isWebinyListItemNode(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<WebinyListItemNode>): void {\n // go through each node and decide where to move it.\n const removed = new Set<NodeKey>();\n\n WebinyListItemNodes.forEach((WebinyListItemNode: WebinyListItemNode) => {\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 =\n WebinyListItemNode.getNextSibling<WebinyListItemNode>() as WebinyListItemNode;\n const previousSibling =\n WebinyListItemNode.getPreviousSibling<WebinyListItemNode>() as WebinyListItemNode;\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 ($isWebinyListNode(innerList)) {\n innerList.append(WebinyListItemNode);\n const nextInnerList = nextSibling.getFirstChild();\n\n if ($isWebinyListNode(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 ($isWebinyListNode(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 ($isWebinyListNode(innerList)) {\n innerList.append(WebinyListItemNode);\n updateChildrenListItemValue(innerList);\n }\n } else {\n // otherwise, we need to create a new nested ListNode\n\n if ($isWebinyListNode(parent)) {\n const newListItem = $createWebinyListItemNode();\n const newList = $createWebinyListNode(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 ($isWebinyListNode(parent)) {\n updateChildrenListItemValue(parent);\n }\n });\n}\n\nexport function $handleOutdent(WebinyListItemNodes: Array<WebinyListItemNode>): 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 $isWebinyListNode(greatGrandparentList) &&\n $isWebinyListItemNode(grandparentListItem) &&\n $isWebinyListNode(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 = $createWebinyListItemNode();\n const previousSiblingsList = $createWebinyListNode(listType, themeStyleId);\n previousSiblingsListItem.append(previousSiblingsList);\n WebinyListItemNode.getPreviousSiblings().forEach(sibling =>\n previousSiblingsList.append(sibling)\n );\n const nextSiblingsListItem = $createWebinyListItemNode();\n const nextSiblingsList = $createWebinyListNode(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<WebinyListItemNode> = [];\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 (!$isWebinyListItemNode(anchor) || anchor.getTextContent() !== \"\") {\n return false;\n }\n const topListNode = $getTopListNode(anchor);\n const parent = anchor.getParent();\n\n if (!$isWebinyListNode(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 ($isWebinyListItemNode(grandparent)) {\n replacementNode = $createWebinyListItemNode();\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 = $createWebinyListNode(parent?.getListType(), parent?.getStyleId());\n\n if ($isParagraphNode(replacementNode)) {\n replacementNode.insertAfter(newList);\n } else {\n const newListItem = $createWebinyListItemNode();\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":["DEFAULT_LIST_START_NUMBER","$isSelectingEmptyListItem","anchorNode","nodes","$isWebinyListItemNode","length","is","getChildrenSize","$getListItemValue","listItem","list","getParent","value","$isWebinyListNode","console","log","getStart","siblings","getPreviousSiblings","i","sibling","getFirstChild","insertList","editor","listType","styleId","update","selection","$getSelection","$isRangeSelection","DEPRECATED_$isGridSelection","getNodes","anchor","getNode","anchorNodeParent","$createWebinyListNode","$isRootOrShadowRoot","replace","$createWebinyListItemNode","$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","WebinyListNode","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 { $createWebinyListNode, $isWebinyListNode, WebinyListNode } from \"./WebinyListNode\";\nimport {\n $getAllListItems,\n $getTopListNode,\n $removeHighestEmptyListParent,\n findNearestWebinyListItemNode,\n getUniqueWebinyListItemNodes,\n isNestedListNode\n} from \"~/utils/nodes/list-node\";\nimport { $getNearestNodeOfType } from \"@lexical/utils\";\nimport {\n $createWebinyListItemNode,\n $isWebinyListItemNode,\n WebinyListItemNode\n} from \"~/nodes/list-node/WebinyListItemNode\";\nimport { ListType } from \"@lexical/list\";\nimport { $createParagraphNode } from \"~/nodes/ParagraphNode\";\n\nconst DEFAULT_LIST_START_NUMBER = 1;\n\nfunction $isSelectingEmptyListItem(\n anchorNode: WebinyListItemNode | LexicalNode,\n nodes: Array<LexicalNode>\n): boolean {\n return (\n $isWebinyListItemNode(anchorNode) &&\n (nodes.length === 0 ||\n (nodes.length === 1 && anchorNode.is(nodes[0]) && anchorNode.getChildrenSize() === 0))\n );\n}\n\nfunction $getListItemValue(listItem: WebinyListItemNode): number {\n const list = listItem.getParent();\n\n let value = 1;\n\n if (list !== null) {\n if (!$isWebinyListNode(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 ($isWebinyListItemNode(sibling) && !$isWebinyListNode(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 = $createWebinyListNode(listType, styleId);\n\n if ($isRootOrShadowRoot(anchorNodeParent)) {\n anchorNode.replace(list);\n const listItem = $createWebinyListItemNode();\n if ($isElementNode(anchorNode)) {\n listItem.setFormat(anchorNode.getFormatType());\n listItem.setIndent(anchorNode.getIndent());\n }\n list.append(listItem);\n } else if ($isWebinyListItemNode(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 ($isWebinyListNode(parent)) {\n if (!handled.has(parentKey)) {\n const newListNode = $createWebinyListNode(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): WebinyListNode {\n if ($isWebinyListNode(node)) {\n return node;\n }\n\n const previousSibling = node.getPreviousSibling();\n const nextSibling = node.getNextSibling();\n const listItem = $createWebinyListItemNode();\n listItem.setFormat(node.getFormatType());\n listItem.setIndent(node.getIndent());\n append(listItem, node.getChildren());\n\n if ($isWebinyListNode(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 ($isWebinyListNode(nextSibling) && listType === nextSibling.getListType()) {\n append(previousSibling, nextSibling.getChildren());\n nextSibling.remove();\n }\n return previousSibling;\n } else if ($isWebinyListNode(nextSibling) && listType === nextSibling.getListType()) {\n nextSibling.getFirstChildOrThrow().insertBefore(listItem);\n node.remove();\n return nextSibling;\n } else {\n const list = $createWebinyListNode(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<WebinyListNode>();\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, WebinyListNode);\n\n if (WebinyListItemNode != null) {\n listNodes.add($getTopListNode(WebinyListItemNode));\n }\n }\n }\n }\n\n for (const listNode of listNodes) {\n let insertionPoint: WebinyListNode | 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(\n list: WebinyListNode,\n children?: Array<LexicalNode>\n): 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 ($isWebinyListItemNode(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<WebinyListItemNode>): void {\n // go through each node and decide where to move it.\n const removed = new Set<NodeKey>();\n\n WebinyListItemNodes.forEach((WebinyListItemNode: WebinyListItemNode) => {\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 =\n WebinyListItemNode.getNextSibling<WebinyListItemNode>() as WebinyListItemNode;\n const previousSibling =\n WebinyListItemNode.getPreviousSibling<WebinyListItemNode>() as WebinyListItemNode;\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 ($isWebinyListNode(innerList)) {\n innerList.append(WebinyListItemNode);\n const nextInnerList = nextSibling.getFirstChild();\n\n if ($isWebinyListNode(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 ($isWebinyListNode(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 ($isWebinyListNode(innerList)) {\n innerList.append(WebinyListItemNode);\n updateChildrenListItemValue(innerList);\n }\n } else {\n // otherwise, we need to create a new nested ListNode\n\n if ($isWebinyListNode(parent)) {\n const newListItem = $createWebinyListItemNode();\n const newList = $createWebinyListNode(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 ($isWebinyListNode(parent)) {\n updateChildrenListItemValue(parent);\n }\n });\n}\n\nexport function $handleOutdent(WebinyListItemNodes: Array<WebinyListItemNode>): 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 $isWebinyListNode(greatGrandparentList) &&\n $isWebinyListItemNode(grandparentListItem) &&\n $isWebinyListNode(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 = $createWebinyListItemNode();\n const previousSiblingsList = $createWebinyListNode(listType, themeStyleId);\n previousSiblingsListItem.append(previousSiblingsList);\n WebinyListItemNode.getPreviousSiblings().forEach(sibling =>\n previousSiblingsList.append(sibling)\n );\n const nextSiblingsListItem = $createWebinyListItemNode();\n const nextSiblingsList = $createWebinyListNode(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<WebinyListItemNode> = [];\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 (!$isWebinyListItemNode(anchor) || anchor.getTextContent() !== \"\") {\n return false;\n }\n const topListNode = $getTopListNode(anchor);\n const parent = anchor.getParent();\n\n if (!$isWebinyListNode(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 ($isWebinyListItemNode(grandparent)) {\n replacementNode = $createWebinyListItemNode();\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 = $createWebinyListNode(parent?.getListType(), parent?.getStyleId());\n\n if ($isParagraphNode(replacementNode)) {\n replacementNode.insertAfter(newList);\n } else {\n const newListItem = $createWebinyListItemNode();\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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"}
@@ -0,0 +1,15 @@
1
+ export declare type ThemeStyleType = "typography" | "colors" | "fonts";
2
+ export interface ThemeStyleValue {
3
+ styleId: string;
4
+ type: ThemeStyleType;
5
+ }
6
+ export interface TextNodeThemeStyles {
7
+ getThemeStyles: () => ThemeStyleValue[];
8
+ setThemeStyles: (styles: ThemeStyleValue[]) => void;
9
+ }
10
+ export interface TypographyStylesNode {
11
+ setTypography: (typographyStyleId: string) => void;
12
+ getTypographyStyleId: () => string | undefined;
13
+ clearTypographyStyle: () => void;
14
+ hasTypographyStyle: () => boolean;
15
+ }
package/nodes/types.js ADDED
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sources":["types.ts"],"sourcesContent":["export type ThemeStyleType = \"typography\" | \"colors\" | \"fonts\";\n\nexport interface ThemeStyleValue {\n styleId: string;\n type: ThemeStyleType;\n}\n\nexport interface TextNodeThemeStyles {\n getThemeStyles: () => ThemeStyleValue[];\n setThemeStyles: (styles: ThemeStyleValue[]) => void;\n}\n\n/*\n * Indicates that the node is implementing the typography styles\n */\nexport interface TypographyStylesNode {\n setTypography: (typographyStyleId: string) => void;\n getTypographyStyleId: () => string | undefined;\n clearTypographyStyle: () => void;\n hasTypographyStyle: () => boolean;\n}\n"],"mappings":""}
@@ -9,13 +9,37 @@ var _hashtag = require("@lexical/hashtag");
9
9
  var _link = require("@lexical/link");
10
10
  var _mark = require("@lexical/mark");
11
11
  var _overflow = require("@lexical/overflow");
12
- var _richText = require("@lexical/rich-text");
13
12
  var _FontColorNode = require("./FontColorNode");
14
13
  var _TypographyElementNode = require("./TypographyElementNode");
15
14
  var _WebinyListNode = require("./list-node/WebinyListNode");
16
15
  var _WebinyListItemNode = require("./list-node/WebinyListItemNode");
17
- var _WebinyQuoteNode = require("./WebinyQuoteNode");
18
- var WebinyNodes = [_richText.HeadingNode,
19
- // Don't forget to register your custom node separately!
20
- _WebinyListNode.WebinyListNode, _WebinyListItemNode.WebinyListItemNode, _WebinyQuoteNode.WebinyQuoteNode, _code.CodeNode, _hashtag.HashtagNode, _code.CodeHighlightNode, _link.AutoLinkNode, _link.LinkNode, _overflow.OverflowNode, _mark.MarkNode, _FontColorNode.FontColorNode, _TypographyElementNode.TypographyElementNode];
16
+ var _lexical = require("lexical");
17
+ var _HeadingNode = require("./HeadingNode");
18
+ var _ParagraphNode = require("./ParagraphNode");
19
+ var _richText = require("@lexical/rich-text");
20
+ var _QuoteNode = require("./QuoteNode");
21
+ /*
22
+ * This is a list of all the nodes that Webiny's Lexical implementation supports OOTB.
23
+ * */
24
+ var WebinyNodes = [_WebinyListNode.WebinyListNode, _WebinyListItemNode.WebinyListItemNode, _code.CodeNode, _hashtag.HashtagNode, _code.CodeHighlightNode, _link.AutoLinkNode, _link.LinkNode, _overflow.OverflowNode, _mark.MarkNode, _FontColorNode.FontColorNode, _TypographyElementNode.TypographyElementNode,
25
+ /*
26
+ * In order to provide additional Webiny-related functionality, we override Lexical's ParagraphNode and HeadingNode nodes.
27
+ * More info on overriding can be found here: https://lexical.dev/docs/concepts/node-replacement.
28
+ * */
29
+ _ParagraphNode.ParagraphNode, {
30
+ replace: _lexical.ParagraphNode,
31
+ with: function _with() {
32
+ return new _ParagraphNode.ParagraphNode();
33
+ }
34
+ }, _HeadingNode.HeadingNode, {
35
+ replace: _richText.HeadingNode,
36
+ with: function _with(node) {
37
+ return new _HeadingNode.HeadingNode(node.getTag());
38
+ }
39
+ }, _QuoteNode.QuoteNode, {
40
+ replace: _richText.QuoteNode,
41
+ with: function _with() {
42
+ return new _QuoteNode.QuoteNode();
43
+ }
44
+ }];
21
45
  exports.WebinyNodes = WebinyNodes;
@@ -1 +1 @@
1
- {"version":3,"names":["WebinyNodes","HeadingNode","WebinyListNode","WebinyListItemNode","WebinyQuoteNode","CodeNode","HashtagNode","CodeHighlightNode","AutoLinkNode","LinkNode","OverflowNode","MarkNode","FontColorNode","TypographyElementNode"],"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 { HeadingNode } from \"@lexical/rich-text\";\nimport { FontColorNode } from \"~/nodes/FontColorNode\";\nimport { TypographyElementNode } from \"~/nodes/TypographyElementNode\";\nimport { WebinyListNode } from \"~/nodes/list-node/WebinyListNode\";\nimport { WebinyListItemNode } from \"~/nodes/list-node/WebinyListItemNode\";\nimport { WebinyQuoteNode } from \"~/nodes/WebinyQuoteNode\";\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 HeadingNode,\n // Don't forget to register your custom node separately!\n WebinyListNode,\n WebinyListItemNode,\n WebinyQuoteNode,\n CodeNode,\n HashtagNode,\n CodeHighlightNode,\n AutoLinkNode,\n LinkNode,\n OverflowNode,\n MarkNode,\n FontColorNode,\n TypographyElementNode\n];\n"],"mappings":";;;;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEO,IAAMA,WAMZ,GAAG,CACAC,qBAAW;AACX;AACAC,8BAAc,EACdC,sCAAkB,EAClBC,gCAAe,EACfC,cAAQ,EACRC,oBAAW,EACXC,uBAAiB,EACjBC,kBAAY,EACZC,cAAQ,EACRC,sBAAY,EACZC,cAAQ,EACRC,4BAAa,EACbC,4CAAqB,CACxB;AAAC"}
1
+ {"version":3,"names":["WebinyNodes","WebinyListNode","WebinyListItemNode","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 { WebinyListNode } from \"~/nodes/list-node/WebinyListNode\";\nimport { WebinyListItemNode } from \"~/nodes/list-node/WebinyListItemNode\";\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 WebinyListNode,\n WebinyListItemNode,\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,8BAAc,EACdC,sCAAkB,EAClBC,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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@webiny/lexical-editor",
3
- "version": "5.35.2",
3
+ "version": "5.36.0-beta.1",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "https://github.com/webiny/webiny-js.git"
@@ -8,26 +8,26 @@
8
8
  "license": "MIT",
9
9
  "dependencies": {
10
10
  "@emotion/react": "11.10.8",
11
- "@lexical/code": "0.8.1",
12
- "@lexical/hashtag": "0.8.1",
13
- "@lexical/history": "0.8.1",
14
- "@lexical/link": "0.8.1",
15
- "@lexical/list": "0.8.1",
16
- "@lexical/mark": "0.8.1",
17
- "@lexical/overflow": "0.8.1",
18
- "@lexical/react": "0.8.1",
19
- "@lexical/rich-text": "0.8.1",
20
- "@lexical/selection": "0.8.1",
21
- "@lexical/utils": "0.8.1",
22
- "@webiny/react-composition": "^5.35.2",
23
- "lexical": "0.8.1",
11
+ "@lexical/code": "0.10.0",
12
+ "@lexical/hashtag": "0.10.0",
13
+ "@lexical/history": "0.10.0",
14
+ "@lexical/link": "0.10.0",
15
+ "@lexical/list": "0.10.0",
16
+ "@lexical/mark": "0.10.0",
17
+ "@lexical/overflow": "0.10.0",
18
+ "@lexical/react": "0.10.0",
19
+ "@lexical/rich-text": "0.10.0",
20
+ "@lexical/selection": "0.10.0",
21
+ "@lexical/utils": "0.10.0",
22
+ "@webiny/react-composition": "5.36.0-beta.1",
23
+ "lexical": "0.10.0",
24
24
  "react": "17.0.2",
25
25
  "react-dom": "17.0.2",
26
26
  "react-style-object-to-css": "1.1.2"
27
27
  },
28
28
  "devDependencies": {
29
- "@webiny/cli": "^5.35.2",
30
- "@webiny/project-utils": "^5.35.2"
29
+ "@webiny/cli": "5.36.0-beta.1",
30
+ "@webiny/project-utils": "5.36.0-beta.1"
31
31
  },
32
32
  "publishConfig": {
33
33
  "access": "public",
@@ -37,5 +37,5 @@
37
37
  "build": "yarn webiny run build",
38
38
  "watch": "yarn webiny run watch"
39
39
  },
40
- "gitHead": "d3f7b134892b6c5ea794e9e7dd4811b27cdf6eb1"
40
+ "gitHead": "db7103cc3e74c3c71c2b88e50ef0fd19ae7c3fd2"
41
41
  }
@@ -11,6 +11,7 @@ var _LexicalComposerContext = require("@lexical/react/LexicalComposerContext");
11
11
  var _FontColorNode = require("../../nodes/FontColorNode");
12
12
  var _lexical = require("lexical");
13
13
  var _utils = require("@lexical/utils");
14
+ var _ParagraphNode = require("../../nodes/ParagraphNode");
14
15
  var FontColorPlugin = function FontColorPlugin() {
15
16
  var _useLexicalComposerCo = (0, _LexicalComposerContext.useLexicalComposerContext)(),
16
17
  _useLexicalComposerCo2 = (0, _slicedToArray2.default)(_useLexicalComposerCo, 1),
@@ -26,7 +27,7 @@ var FontColorPlugin = function FontColorPlugin() {
26
27
  (0, _FontColorNode.$applyStylesToNode)(fontColorNode, selection);
27
28
  (0, _lexical.$insertNodes)([fontColorNode]);
28
29
  if ((0, _lexical.$isRootOrShadowRoot)(fontColorNode.getParentOrThrow())) {
29
- (0, _utils.$wrapNodeInElement)(fontColorNode, _lexical.$createParagraphNode).selectEnd();
30
+ (0, _utils.$wrapNodeInElement)(fontColorNode, _ParagraphNode.$createParagraphNode).selectEnd();
30
31
  }
31
32
  }
32
33
  });
@@ -1 +1 @@
1
- {"version":3,"names":["FontColorPlugin","useLexicalComposerContext","editor","useEffect","registerCommand","ADD_FONT_COLOR_COMMAND","payload","update","color","themeColorName","selection","$getSelection","$isRangeSelection","fontColorNode","$createFontColorNode","getTextContent","$applyStylesToNode","$insertNodes","$isRootOrShadowRoot","getParentOrThrow","$wrapNodeInElement","$createParagraphNode","selectEnd","COMMAND_PRIORITY_EDITOR"],"sources":["FontColorPlugin.tsx"],"sourcesContent":["import React, { useEffect } from \"react\";\nimport { useLexicalComposerContext } from \"@lexical/react/LexicalComposerContext\";\nimport {\n $applyStylesToNode,\n $createFontColorNode,\n ADD_FONT_COLOR_COMMAND,\n FontColorPayload\n} from \"~/nodes/FontColorNode\";\nimport {\n $createParagraphNode,\n $getSelection,\n $insertNodes,\n $isRangeSelection,\n $isRootOrShadowRoot,\n COMMAND_PRIORITY_EDITOR\n} from \"lexical\";\nimport { $wrapNodeInElement } from \"@lexical/utils\";\n\nexport const FontColorPlugin: React.FC = () => {\n const [editor] = useLexicalComposerContext();\n\n useEffect(() => {\n return editor.registerCommand<FontColorPayload>(\n ADD_FONT_COLOR_COMMAND,\n payload => {\n editor.update(() => {\n const { color, themeColorName } = payload;\n const selection = $getSelection();\n\n if ($isRangeSelection(selection)) {\n const fontColorNode = $createFontColorNode(\n selection.getTextContent(),\n color,\n themeColorName\n );\n $applyStylesToNode(fontColorNode, selection);\n $insertNodes([fontColorNode]);\n if ($isRootOrShadowRoot(fontColorNode.getParentOrThrow())) {\n $wrapNodeInElement(fontColorNode, $createParagraphNode).selectEnd();\n }\n }\n });\n return true;\n },\n COMMAND_PRIORITY_EDITOR\n );\n }, [editor]);\n\n return null;\n};\n"],"mappings":";;;;;;;;AAAA;AACA;AACA;AAMA;AAQA;AAEO,IAAMA,eAAyB,GAAG,SAA5BA,eAAyB,GAAS;EAC3C,4BAAiB,IAAAC,iDAAyB,GAAE;IAAA;IAArCC,MAAM;EAEb,IAAAC,gBAAS,EAAC,YAAM;IACZ,OAAOD,MAAM,CAACE,eAAe,CACzBC,qCAAsB,EACtB,UAAAC,OAAO,EAAI;MACPJ,MAAM,CAACK,MAAM,CAAC,YAAM;QAChB,IAAQC,KAAK,GAAqBF,OAAO,CAAjCE,KAAK;UAAEC,cAAc,GAAKH,OAAO,CAA1BG,cAAc;QAC7B,IAAMC,SAAS,GAAG,IAAAC,sBAAa,GAAE;QAEjC,IAAI,IAAAC,0BAAiB,EAACF,SAAS,CAAC,EAAE;UAC9B,IAAMG,aAAa,GAAG,IAAAC,mCAAoB,EACtCJ,SAAS,CAACK,cAAc,EAAE,EAC1BP,KAAK,EACLC,cAAc,CACjB;UACD,IAAAO,iCAAkB,EAACH,aAAa,EAAEH,SAAS,CAAC;UAC5C,IAAAO,qBAAY,EAAC,CAACJ,aAAa,CAAC,CAAC;UAC7B,IAAI,IAAAK,4BAAmB,EAACL,aAAa,CAACM,gBAAgB,EAAE,CAAC,EAAE;YACvD,IAAAC,yBAAkB,EAACP,aAAa,EAAEQ,6BAAoB,CAAC,CAACC,SAAS,EAAE;UACvE;QACJ;MACJ,CAAC,CAAC;MACF,OAAO,IAAI;IACf,CAAC,EACDC,gCAAuB,CAC1B;EACL,CAAC,EAAE,CAACrB,MAAM,CAAC,CAAC;EAEZ,OAAO,IAAI;AACf,CAAC;AAAC"}
1
+ {"version":3,"names":["FontColorPlugin","useLexicalComposerContext","editor","useEffect","registerCommand","ADD_FONT_COLOR_COMMAND","payload","update","color","themeColorName","selection","$getSelection","$isRangeSelection","fontColorNode","$createFontColorNode","getTextContent","$applyStylesToNode","$insertNodes","$isRootOrShadowRoot","getParentOrThrow","$wrapNodeInElement","$createParagraphNode","selectEnd","COMMAND_PRIORITY_EDITOR"],"sources":["FontColorPlugin.tsx"],"sourcesContent":["import React, { useEffect } from \"react\";\nimport { useLexicalComposerContext } from \"@lexical/react/LexicalComposerContext\";\nimport {\n $applyStylesToNode,\n $createFontColorNode,\n ADD_FONT_COLOR_COMMAND,\n FontColorPayload\n} from \"~/nodes/FontColorNode\";\nimport {\n $getSelection,\n $insertNodes,\n $isRangeSelection,\n $isRootOrShadowRoot,\n COMMAND_PRIORITY_EDITOR\n} from \"lexical\";\nimport { $wrapNodeInElement } from \"@lexical/utils\";\nimport { $createParagraphNode } from \"~/nodes/ParagraphNode\";\n\nexport const FontColorPlugin: React.FC = () => {\n const [editor] = useLexicalComposerContext();\n\n useEffect(() => {\n return editor.registerCommand<FontColorPayload>(\n ADD_FONT_COLOR_COMMAND,\n payload => {\n editor.update(() => {\n const { color, themeColorName } = payload;\n const selection = $getSelection();\n\n if ($isRangeSelection(selection)) {\n const fontColorNode = $createFontColorNode(\n selection.getTextContent(),\n color,\n themeColorName\n );\n $applyStylesToNode(fontColorNode, selection);\n $insertNodes([fontColorNode]);\n if ($isRootOrShadowRoot(fontColorNode.getParentOrThrow())) {\n $wrapNodeInElement(fontColorNode, $createParagraphNode).selectEnd();\n }\n }\n });\n return true;\n },\n COMMAND_PRIORITY_EDITOR\n );\n }, [editor]);\n\n return null;\n};\n"],"mappings":";;;;;;;;AAAA;AACA;AACA;AAMA;AAOA;AACA;AAEO,IAAMA,eAAyB,GAAG,SAA5BA,eAAyB,GAAS;EAC3C,4BAAiB,IAAAC,iDAAyB,GAAE;IAAA;IAArCC,MAAM;EAEb,IAAAC,gBAAS,EAAC,YAAM;IACZ,OAAOD,MAAM,CAACE,eAAe,CACzBC,qCAAsB,EACtB,UAAAC,OAAO,EAAI;MACPJ,MAAM,CAACK,MAAM,CAAC,YAAM;QAChB,IAAQC,KAAK,GAAqBF,OAAO,CAAjCE,KAAK;UAAEC,cAAc,GAAKH,OAAO,CAA1BG,cAAc;QAC7B,IAAMC,SAAS,GAAG,IAAAC,sBAAa,GAAE;QAEjC,IAAI,IAAAC,0BAAiB,EAACF,SAAS,CAAC,EAAE;UAC9B,IAAMG,aAAa,GAAG,IAAAC,mCAAoB,EACtCJ,SAAS,CAACK,cAAc,EAAE,EAC1BP,KAAK,EACLC,cAAc,CACjB;UACD,IAAAO,iCAAkB,EAACH,aAAa,EAAEH,SAAS,CAAC;UAC5C,IAAAO,qBAAY,EAAC,CAACJ,aAAa,CAAC,CAAC;UAC7B,IAAI,IAAAK,4BAAmB,EAACL,aAAa,CAACM,gBAAgB,EAAE,CAAC,EAAE;YACvD,IAAAC,yBAAkB,EAACP,aAAa,EAAEQ,mCAAoB,CAAC,CAACC,SAAS,EAAE;UACvE;QACJ;MACJ,CAAC,CAAC;MACF,OAAO,IAAI;IACf,CAAC,EACDC,gCAAuB,CAC1B;EACL,CAAC,EAAE,CAACrB,MAAM,CAAC,CAAC;EAEZ,OAAO,IAAI;AACf,CAAC;AAAC"}
@@ -10,7 +10,8 @@ var _react = require("react");
10
10
  var _LexicalComposerContext = require("@lexical/react/LexicalComposerContext");
11
11
  var _lexical = require("lexical");
12
12
  var _TypographyElementNode = require("../../nodes/TypographyElementNode");
13
- var _selection = require("@lexical/selection");
13
+ var _formatToParagraph = require("../../utils/nodes/formatToParagraph");
14
+ var _formatToHeading = require("../../utils/nodes/formatToHeading");
14
15
  var TypographyPlugin = function TypographyPlugin() {
15
16
  var _useLexicalComposerCo = (0, _LexicalComposerContext.useLexicalComposerContext)(),
16
17
  _useLexicalComposerCo2 = (0, _slicedToArray2.default)(_useLexicalComposerCo, 1),
@@ -18,10 +19,13 @@ var TypographyPlugin = function TypographyPlugin() {
18
19
  (0, _react.useEffect)(function () {
19
20
  return editor.registerCommand(_TypographyElementNode.ADD_TYPOGRAPHY_ELEMENT_COMMAND, function (payload) {
20
21
  var selection = (0, _lexical.$getSelection)();
21
- if ((0, _lexical.$isRangeSelection)(selection)) {
22
- (0, _selection.$wrapNodes)(selection, function () {
23
- return (0, _TypographyElementNode.$createTypographyNode)(payload.value);
24
- });
22
+ // paragraph
23
+ if ((0, _lexical.$isRangeSelection)(selection) && payload.value.id && payload.value.tag === "p") {
24
+ (0, _formatToParagraph.formatToParagraph)(editor, payload.value.id);
25
+ }
26
+ // heading
27
+ if ((0, _lexical.$isRangeSelection)(selection) && payload.value.id && payload.value.tag.includes("h")) {
28
+ (0, _formatToHeading.formatToHeading)(editor, payload.value.tag, payload.value.id);
25
29
  }
26
30
  return true;
27
31
  }, _lexical.COMMAND_PRIORITY_EDITOR);
@@ -1 +1 @@
1
- {"version":3,"names":["TypographyPlugin","useLexicalComposerContext","editor","useEffect","registerCommand","ADD_TYPOGRAPHY_ELEMENT_COMMAND","payload","selection","$getSelection","$isRangeSelection","$wrapNodes","$createTypographyNode","value","COMMAND_PRIORITY_EDITOR"],"sources":["TypographyPlugin.tsx"],"sourcesContent":["import React, { useEffect } from \"react\";\nimport { useLexicalComposerContext } from \"@lexical/react/LexicalComposerContext\";\nimport { $getSelection, $isRangeSelection, COMMAND_PRIORITY_EDITOR } from \"lexical\";\nimport {\n $createTypographyNode,\n ADD_TYPOGRAPHY_ELEMENT_COMMAND,\n TypographyPayload\n} from \"~/nodes/TypographyElementNode\";\nimport { $wrapNodes } from \"@lexical/selection\";\n\nexport const TypographyPlugin: React.FC = () => {\n const [editor] = useLexicalComposerContext();\n\n useEffect(() => {\n return editor.registerCommand<TypographyPayload>(\n ADD_TYPOGRAPHY_ELEMENT_COMMAND,\n payload => {\n const selection = $getSelection();\n if ($isRangeSelection(selection)) {\n $wrapNodes(selection, () => $createTypographyNode(payload.value));\n }\n return true;\n },\n COMMAND_PRIORITY_EDITOR\n );\n }, [editor]);\n\n return null;\n};\n"],"mappings":";;;;;;;;AAAA;AACA;AACA;AACA;AAKA;AAEO,IAAMA,gBAA0B,GAAG,SAA7BA,gBAA0B,GAAS;EAC5C,4BAAiB,IAAAC,iDAAyB,GAAE;IAAA;IAArCC,MAAM;EAEb,IAAAC,gBAAS,EAAC,YAAM;IACZ,OAAOD,MAAM,CAACE,eAAe,CACzBC,qDAA8B,EAC9B,UAAAC,OAAO,EAAI;MACP,IAAMC,SAAS,GAAG,IAAAC,sBAAa,GAAE;MACjC,IAAI,IAAAC,0BAAiB,EAACF,SAAS,CAAC,EAAE;QAC9B,IAAAG,qBAAU,EAACH,SAAS,EAAE;UAAA,OAAM,IAAAI,4CAAqB,EAACL,OAAO,CAACM,KAAK,CAAC;QAAA,EAAC;MACrE;MACA,OAAO,IAAI;IACf,CAAC,EACDC,gCAAuB,CAC1B;EACL,CAAC,EAAE,CAACX,MAAM,CAAC,CAAC;EAEZ,OAAO,IAAI;AACf,CAAC;AAAC"}
1
+ {"version":3,"names":["TypographyPlugin","useLexicalComposerContext","editor","useEffect","registerCommand","ADD_TYPOGRAPHY_ELEMENT_COMMAND","payload","selection","$getSelection","$isRangeSelection","value","id","tag","formatToParagraph","includes","formatToHeading","COMMAND_PRIORITY_EDITOR"],"sources":["TypographyPlugin.tsx"],"sourcesContent":["import React, { useEffect } from \"react\";\nimport { useLexicalComposerContext } from \"@lexical/react/LexicalComposerContext\";\nimport { $getSelection, $isRangeSelection, COMMAND_PRIORITY_EDITOR } from \"lexical\";\nimport { ADD_TYPOGRAPHY_ELEMENT_COMMAND, TypographyPayload } from \"~/nodes/TypographyElementNode\";\nimport { formatToParagraph } from \"~/utils/nodes/formatToParagraph\";\nimport { formatToHeading } from \"~/utils/nodes/formatToHeading\";\nimport { HeadingTagType } from \"@lexical/rich-text\";\n\nexport const TypographyPlugin: React.FC = () => {\n const [editor] = useLexicalComposerContext();\n\n useEffect(() => {\n return editor.registerCommand<TypographyPayload>(\n ADD_TYPOGRAPHY_ELEMENT_COMMAND,\n payload => {\n const selection = $getSelection();\n // paragraph\n if ($isRangeSelection(selection) && payload.value.id && payload.value.tag === \"p\") {\n formatToParagraph(editor, payload.value.id);\n }\n // heading\n if (\n $isRangeSelection(selection) &&\n payload.value.id &&\n payload.value.tag.includes(\"h\")\n ) {\n formatToHeading(editor, payload.value.tag as HeadingTagType, payload.value.id);\n }\n return true;\n },\n COMMAND_PRIORITY_EDITOR\n );\n }, [editor]);\n\n return null;\n};\n"],"mappings":";;;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AAGO,IAAMA,gBAA0B,GAAG,SAA7BA,gBAA0B,GAAS;EAC5C,4BAAiB,IAAAC,iDAAyB,GAAE;IAAA;IAArCC,MAAM;EAEb,IAAAC,gBAAS,EAAC,YAAM;IACZ,OAAOD,MAAM,CAACE,eAAe,CACzBC,qDAA8B,EAC9B,UAAAC,OAAO,EAAI;MACP,IAAMC,SAAS,GAAG,IAAAC,sBAAa,GAAE;MACjC;MACA,IAAI,IAAAC,0BAAiB,EAACF,SAAS,CAAC,IAAID,OAAO,CAACI,KAAK,CAACC,EAAE,IAAIL,OAAO,CAACI,KAAK,CAACE,GAAG,KAAK,GAAG,EAAE;QAC/E,IAAAC,oCAAiB,EAACX,MAAM,EAAEI,OAAO,CAACI,KAAK,CAACC,EAAE,CAAC;MAC/C;MACA;MACA,IACI,IAAAF,0BAAiB,EAACF,SAAS,CAAC,IAC5BD,OAAO,CAACI,KAAK,CAACC,EAAE,IAChBL,OAAO,CAACI,KAAK,CAACE,GAAG,CAACE,QAAQ,CAAC,GAAG,CAAC,EACjC;QACE,IAAAC,gCAAe,EAACb,MAAM,EAAEI,OAAO,CAACI,KAAK,CAACE,GAAG,EAAoBN,OAAO,CAACI,KAAK,CAACC,EAAE,CAAC;MAClF;MACA,OAAO,IAAI;IACf,CAAC,EACDK,gCAAuB,CAC1B;EACL,CAAC,EAAE,CAACd,MAAM,CAAC,CAAC;EAEZ,OAAO,IAAI;AACf,CAAC;AAAC"}
@@ -1 +1 @@
1
- export declare function WebinyQuotePlugin(): null;
1
+ export declare function QuotePlugin(): null;