@webiny/lexical-nodes 5.44.1-beta.0 → 5.45.0-beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/FontColorNode.d.ts +6 -6
- package/FontColorNode.js +102 -145
- package/FontColorNode.js.map +1 -1
- package/HeadingNode.d.ts +29 -17
- package/HeadingNode.js +184 -152
- package/HeadingNode.js.map +1 -1
- package/ImageNode.d.ts +1 -11
- package/ImageNode.js +119 -190
- package/ImageNode.js.map +1 -1
- package/LinkNode.d.ts +2 -2
- package/LinkNode.js +249 -346
- package/LinkNode.js.map +1 -1
- package/ListItemNode.d.ts +4 -3
- package/ListItemNode.js +275 -354
- package/ListItemNode.js.map +1 -1
- package/ListNode.d.ts +28 -14
- package/ListNode.js +170 -209
- package/ListNode.js.map +1 -1
- package/ParagraphNode.d.ts +28 -16
- package/ParagraphNode.js +143 -179
- package/ParagraphNode.js.map +1 -1
- package/QuoteNode.d.ts +26 -19
- package/QuoteNode.js +102 -188
- package/QuoteNode.js.map +1 -1
- package/README.md +9 -4
- package/components/ImageNode/ImageComponent.d.ts +2 -7
- package/components/ImageNode/ImageComponent.js +72 -166
- package/components/ImageNode/ImageComponent.js.map +1 -1
- package/components/ImageNode/ImageResizer.d.ts +1 -8
- package/components/ImageNode/ImageResizer.js +74 -89
- package/components/ImageNode/ImageResizer.js.map +1 -1
- package/generateInitialLexicalValue.d.ts +4 -0
- package/generateInitialLexicalValue.js +27 -0
- package/generateInitialLexicalValue.js.map +1 -0
- package/index.d.ts +19 -23
- package/index.js +50 -233
- package/index.js.map +1 -1
- package/package.json +16 -20
- package/prepareLexicalState.d.ts +2 -0
- package/prepareLexicalState.js +53 -0
- package/prepareLexicalState.js.map +1 -0
- package/types.d.ts +4 -5
- package/types.js +1 -5
- package/types.js.map +1 -1
- package/utils/clearNodeFormating.d.ts +1 -1
- package/utils/clearNodeFormating.js +12 -18
- package/utils/clearNodeFormating.js.map +1 -1
- package/utils/formatList.d.ts +4 -4
- package/utils/formatList.js +171 -208
- package/utils/formatList.js.map +1 -1
- package/utils/formatToHeading.d.ts +2 -2
- package/utils/formatToHeading.js +8 -15
- package/utils/formatToHeading.js.map +1 -1
- package/utils/formatToParagraph.d.ts +1 -1
- package/utils/formatToParagraph.js +8 -16
- package/utils/formatToParagraph.js.map +1 -1
- package/utils/formatToQuote.d.ts +1 -1
- package/utils/formatToQuote.js +8 -15
- package/utils/formatToQuote.js.map +1 -1
- package/utils/getStyleId.d.ts +11 -0
- package/utils/getStyleId.js +14 -0
- package/utils/getStyleId.js.map +1 -0
- package/utils/listNode.d.ts +2 -2
- package/utils/listNode.js +37 -50
- package/utils/listNode.js.map +1 -1
- package/utils/toggleLink.d.ts +1 -1
- package/utils/toggleLink.js +41 -45
- package/utils/toggleLink.js.map +1 -1
- package/TypographyNode.d.ts +0 -39
- package/TypographyNode.js +0 -146
- package/TypographyNode.js.map +0 -1
- package/components/ImageNode/ContentEditable.css +0 -22
- package/components/ImageNode/ContentEditable.d.ts +0 -12
- package/components/ImageNode/ContentEditable.js +0 -26
- package/components/ImageNode/ContentEditable.js.map +0 -1
- package/components/ImageNode/ImageComponent.css +0 -43
- package/components/ImageNode/Placeholder.css +0 -20
- package/components/ImageNode/Placeholder.d.ts +0 -15
- package/components/ImageNode/Placeholder.js +0 -30
- package/components/ImageNode/Placeholder.js.map +0 -1
- package/components/ImageNode/SharedHistoryContext.d.ts +0 -10
- package/components/ImageNode/SharedHistoryContext.js +0 -27
- package/components/ImageNode/SharedHistoryContext.js.map +0 -1
package/ListItemNode.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_lexical","require","_ListNode","_utils","_formatList","_ParagraphNode","_listNode","ListItemNode","exports","_ElementNode","value","checked","key","_this","_classCallCheck2","default","_callSuper2","__value","undefined","__checked","_inherits2","_createClass2","createDOM","config","element","document","createElement","parent","getParent","$isListNode","getListType","updateListItemChecked","$setListItemThemeClassNames","theme","updateDOM","prevNode","dom","exportJSON","_objectSpread2","_superPropGet2","getChecked","type","getValue","version","append","i","arguments","length","node","$isElementNode","canMergeWith","children","getChildren","apply","_toConsumableArray2","remove","replace","replaceWithNode","includeChildren","$isListItemNode","setIndent","list","getParentOrThrow","__first","getKey","insertBefore","__last","insertAfter","newList","$createListNode","nextSibling","getNextSibling","nodeToAppend","Error","forEach","child","getChildrenSize","listNode","console","log","siblings","getNextSiblings","after","afterListNode","updateChildrenListItemValue","newListNode","sibling","preserveEmptyParent","prevSibling","getPreviousSibling","isNestedListNode","mergeLists","getFirstChild","insertNewAfter","newElement","$createListItemNode","collapseAtStart","selection","paragraph","$createParagraphNode","listNodeParent","isIndented","select","anchor","focus","getNode","is","set","offset","self","getLatest","setValue","getWritable","setChecked","getIndent","__indent","indentLevel","indent","currentIndent","$handleIndent","$handleOutdent","canIndent","nodeToInsert","canInsertAfter","canReplaceWith","replacement","$isParagraphNode","extractWithChild","$isRangeSelection","anchorNode","focusNode","isParentOf","getTextContent","getType","clone","__key","importDOM","li","conversion","convertListItemElement","priority","importJSON","serializedNode","setFormat","format","setDirection","direction","ElementNode","editorThemeClasses","classesToAdd","classesToRemove","listTheme","listItemClassName","listitem","nestedListItemClassName","nested","listItemClasses","split","push","parentNode","isCheckList","listitemUnchecked","listitemChecked","nestedListItemClasses","some","removeClassNamesFromElement","concat","addClassNamesToElement","listItemNode","prevListItemNode","removeAttribute","setAttribute"],"sources":["ListItemNode.ts"],"sourcesContent":["import {\n $isElementNode,\n $isRangeSelection,\n DOMConversionMap,\n DOMConversionOutput,\n EditorConfig,\n EditorThemeClasses,\n ElementNode,\n LexicalNode,\n NodeKey,\n ParagraphNode,\n RangeSelection,\n SerializedElementNode,\n Spread\n} from \"lexical\";\nimport { $createListNode, $isListNode, ListNode } from \"~/ListNode\";\nimport { addClassNamesToElement, removeClassNamesFromElement } from \"@lexical/utils\";\nimport {\n $handleIndent,\n $handleOutdent,\n mergeLists,\n updateChildrenListItemValue\n} from \"~/utils/formatList\";\nimport { $createParagraphNode, $isParagraphNode } from \"~/ParagraphNode\";\nimport { isNestedListNode } from \"~/utils/listNode\";\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 ListItemNode 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: ListItemNode): ListItemNode {\n return new ListItemNode(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 if ($isListNode(parent) && parent.getListType() === \"check\") {\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(prevNode: ListItemNode, dom: HTMLElement, config: EditorConfig): boolean {\n const parent = this.getParent();\n if ($isListNode(parent) && parent.getListType() === \"check\") {\n updateListItemChecked(dom, this, prevNode, parent);\n }\n // @ts-expect-error - this is always HTMLListItemElement\n dom.value = this.__value;\n $setListItemThemeClassNames(dom, config.theme, this);\n\n return false;\n }\n\n static override importDOM(): DOMConversionMap | null {\n return {\n li: () => ({\n conversion: convertListItemElement,\n priority: 0\n })\n };\n }\n\n static override importJSON(serializedNode: SerializedWebinyListItemNode): ListItemNode {\n const node = new ListItemNode(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, includeChildren?: boolean): N {\n if ($isListItemNode(replaceWithNode)) {\n return super.replace(replaceWithNode);\n }\n this.setIndent(0);\n const list = this.getParentOrThrow();\n if (!$isListNode(list)) {\n return replaceWithNode;\n }\n if (list.__first === this.getKey()) {\n list.insertBefore(replaceWithNode);\n } else if (list.__last === this.getKey()) {\n list.insertAfter(replaceWithNode);\n } else {\n // Split the list\n const newList = $createListNode(list.getListType());\n let nextSibling = this.getNextSibling();\n while (nextSibling) {\n const nodeToAppend = nextSibling;\n nextSibling = nextSibling.getNextSibling();\n newList.append(nodeToAppend);\n }\n list.insertAfter(replaceWithNode);\n replaceWithNode.insertAfter(newList);\n }\n if (includeChildren) {\n if (!$isElementNode(replaceWithNode)) {\n throw Error(\"includeChildren should only be true for ElementNodes\");\n }\n\n this.getChildren().forEach((child: LexicalNode) => {\n replaceWithNode.append(child);\n });\n }\n this.remove();\n if (list.getChildrenSize() === 0) {\n list.remove();\n }\n return replaceWithNode;\n }\n\n override insertAfter(node: LexicalNode): LexicalNode {\n const listNode = this.getParentOrThrow();\n\n if (!$isListNode(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 ($isListItemNode(node)) {\n const after = super.insertAfter(node);\n const afterListNode = node.getParentOrThrow();\n\n if ($isListNode(afterListNode)) {\n updateChildrenListItemValue(afterListNode);\n }\n\n return after;\n }\n\n // Attempt to merge if the list is of the same type.\n\n if ($isListNode(node) && node.getListType() === listNode.getListType()) {\n let child = node;\n const children = node.getChildren<ListNode>();\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 prevSibling = this.getPreviousSibling();\n const nextSibling = this.getNextSibling();\n super.remove(preserveEmptyParent);\n\n if (\n prevSibling &&\n nextSibling &&\n isNestedListNode(prevSibling) &&\n isNestedListNode(nextSibling)\n ) {\n mergeLists(prevSibling.getFirstChild(), nextSibling.getFirstChild());\n nextSibling.remove();\n } else if (nextSibling) {\n const parent = nextSibling.getParent();\n\n if ($isListNode(parent)) {\n updateChildrenListItemValue(parent);\n }\n }\n }\n\n override insertNewAfter(): ListItemNode | ParagraphNode {\n const newElement = $createListItemNode(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 = $isListItemNode(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 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 ($isListItemNode(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 ($isListItemNode(nodeToInsert)) {\n const parent = this.getParentOrThrow();\n\n if ($isListNode(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 $isListNode(node);\n }\n\n override canReplaceWith(replacement: LexicalNode): boolean {\n return $isListItemNode(replacement);\n }\n\n override canMergeWith(node: LexicalNode): boolean {\n return $isParagraphNode(node) || $isListItemNode(node);\n }\n\n override extractWithChild(child: LexicalNode, selection: RangeSelection): 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: ListItemNode\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 = $isListNode(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 => $isListNode(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: ListItemNode,\n prevListItemNode: ListItemNode | null,\n listNode: ListNode\n): void {\n const isCheckList = listNode.getListType() === \"check\";\n\n if (isCheckList) {\n // Only add attributes for leaf list items\n if ($isListNode(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: $createListItemNode() };\n}\n\nexport function $createListItemNode(checked?: boolean): ListItemNode {\n return new ListItemNode(undefined, checked);\n}\n\nexport function $isListItemNode(node: LexicalNode | null | undefined): node is ListItemNode {\n return node instanceof ListItemNode;\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["$isElementNode","$isRangeSelection","ElementNode","addClassNamesToElement","removeClassNamesFromElement","$createListNode","$isListNode","$handleIndent","$handleOutdent","mergeLists","updateChildrenListItemValue","$createParagraphNode","$isParagraphNode","isNestedListNode","LIST_ITEM_TYPE","ListItemNode","getType","clone","node","__value","__checked","__key","constructor","value","checked","key","undefined","createDOM","config","element","document","createElement","parent","getParent","getListType","updateListItemChecked","$setListItemThemeClassNames","theme","updateDOM","prevNode","dom","importDOM","li","conversion","convertListItemElement","priority","importJSON","serializedNode","setFormat","format","setIndent","indent","setDirection","direction","exportJSON","getChecked","type","getValue","append","nodes","i","length","canMergeWith","children","getChildren","remove","replace","replaceWithNode","includeChildren","$isListItemNode","list","getParentOrThrow","__first","getKey","insertBefore","__last","insertAfter","newList","nextSibling","getNextSibling","nodeToAppend","Error","forEach","child","getChildrenSize","listNode","console","log","siblings","getNextSiblings","after","afterListNode","newListNode","sibling","preserveEmptyParent","prevSibling","getPreviousSibling","getFirstChild","insertNewAfter","newElement","$createListItemNode","collapseAtStart","selection","paragraph","listNodeParent","isIndented","select","anchor","focus","getNode","is","set","offset","self","getLatest","setValue","getWritable","setChecked","getIndent","__indent","indentLevel","currentIndent","canIndent","nodeToInsert","canInsertAfter","canReplaceWith","replacement","extractWithChild","anchorNode","focusNode","isParentOf","getTextContent","editorThemeClasses","classesToAdd","classesToRemove","listTheme","listItemClassName","listitem","nestedListItemClassName","nested","listItemClasses","split","push","parentNode","isCheckList","listitemUnchecked","listitemChecked","nestedListItemClasses","some","listItemNode","prevListItemNode","removeAttribute","setAttribute"],"sources":["ListItemNode.ts"],"sourcesContent":["import type {\n DOMConversionMap,\n DOMConversionOutput,\n EditorConfig,\n EditorThemeClasses,\n LexicalNode,\n NodeKey,\n ParagraphNode,\n RangeSelection,\n SerializedElementNode,\n Spread\n} from \"lexical\";\nimport {\n $isElementNode,\n $isRangeSelection,\n ElementNode,\n addClassNamesToElement,\n removeClassNamesFromElement\n} from \"lexical\";\nimport type { ListNode } from \"~/ListNode.js\";\nimport { $createListNode, $isListNode } from \"~/ListNode.js\";\nimport {\n $handleIndent,\n $handleOutdent,\n mergeLists,\n updateChildrenListItemValue\n} from \"~/utils/formatList.js\";\nimport { $createParagraphNode, $isParagraphNode } from \"~/ParagraphNode.js\";\nimport { isNestedListNode } from \"~/utils/listNode.js\";\n\nexport const LIST_ITEM_TYPE = \"wby-list-item\";\n\nexport type SerializedWebinyListItemNode = Spread<\n {\n checked: boolean | undefined;\n type: typeof LIST_ITEM_TYPE;\n value: number;\n },\n SerializedElementNode\n>;\n\n/** @noInheritDoc */\nexport class ListItemNode extends ElementNode {\n /** @internal */\n __value: number;\n /** @internal */\n __checked?: boolean;\n\n static override getType(): string {\n return LIST_ITEM_TYPE;\n }\n\n static override clone(node: ListItemNode): ListItemNode {\n return new ListItemNode(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 if ($isListNode(parent) && parent.getListType() === \"check\") {\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(prevNode: ListItemNode, dom: HTMLElement, config: EditorConfig): boolean {\n const parent = this.getParent();\n if ($isListNode(parent) && parent.getListType() === \"check\") {\n updateListItemChecked(dom, this, prevNode, parent);\n }\n // @ts-expect-error - this is always HTMLListItemElement\n dom.value = this.__value;\n $setListItemThemeClassNames(dom, config.theme, this);\n\n return false;\n }\n\n static override importDOM(): DOMConversionMap | null {\n return {\n li: () => ({\n conversion: convertListItemElement,\n priority: 0\n })\n };\n }\n\n static override importJSON(serializedNode: SerializedWebinyListItemNode): ListItemNode {\n const node = new ListItemNode(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: LIST_ITEM_TYPE,\n value: this.getValue()\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, includeChildren?: boolean): N {\n if ($isListItemNode(replaceWithNode)) {\n return super.replace(replaceWithNode);\n }\n this.setIndent(0);\n const list = this.getParentOrThrow();\n if (!$isListNode(list)) {\n return replaceWithNode;\n }\n if (list.__first === this.getKey()) {\n list.insertBefore(replaceWithNode);\n } else if (list.__last === this.getKey()) {\n list.insertAfter(replaceWithNode);\n } else {\n // Split the list\n const newList = $createListNode(list.getListType());\n let nextSibling = this.getNextSibling();\n while (nextSibling) {\n const nodeToAppend = nextSibling;\n nextSibling = nextSibling.getNextSibling();\n newList.append(nodeToAppend);\n }\n list.insertAfter(replaceWithNode);\n replaceWithNode.insertAfter(newList);\n }\n if (includeChildren) {\n if (!$isElementNode(replaceWithNode)) {\n throw Error(\"includeChildren should only be true for ElementNodes\");\n }\n\n this.getChildren().forEach((child: LexicalNode) => {\n replaceWithNode.append(child);\n });\n }\n this.remove();\n if (list.getChildrenSize() === 0) {\n list.remove();\n }\n return replaceWithNode;\n }\n\n override insertAfter(node: LexicalNode): LexicalNode {\n const listNode = this.getParentOrThrow();\n\n if (!$isListNode(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 ($isListItemNode(node)) {\n const after = super.insertAfter(node);\n const afterListNode = node.getParentOrThrow();\n\n if ($isListNode(afterListNode)) {\n updateChildrenListItemValue(afterListNode);\n }\n\n return after;\n }\n\n // Attempt to merge if the list is of the same type.\n\n if ($isListNode(node) && node.getListType() === listNode.getListType()) {\n let child = node;\n const children = node.getChildren<ListNode>();\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 prevSibling = this.getPreviousSibling();\n const nextSibling = this.getNextSibling();\n super.remove(preserveEmptyParent);\n\n if (\n prevSibling &&\n nextSibling &&\n isNestedListNode(prevSibling) &&\n isNestedListNode(nextSibling)\n ) {\n mergeLists(prevSibling.getFirstChild(), nextSibling.getFirstChild());\n nextSibling.remove();\n } else if (nextSibling) {\n const parent = nextSibling.getParent();\n\n if ($isListNode(parent)) {\n updateChildrenListItemValue(parent);\n }\n }\n }\n\n override insertNewAfter(): ListItemNode | ParagraphNode {\n const newElement = $createListItemNode(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 = $isListItemNode(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 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 ($isListItemNode(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 ($isListItemNode(nodeToInsert)) {\n const parent = this.getParentOrThrow();\n\n if ($isListNode(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 $isListNode(node);\n }\n\n override canReplaceWith(replacement: LexicalNode): boolean {\n return $isListItemNode(replacement);\n }\n\n override canMergeWith(node: LexicalNode): boolean {\n return $isParagraphNode(node) || $isListItemNode(node);\n }\n\n override extractWithChild(child: LexicalNode, selection: RangeSelection): 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: ListItemNode\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 = $isListNode(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 => $isListNode(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: ListItemNode,\n prevListItemNode: ListItemNode | null,\n listNode: ListNode\n): void {\n const isCheckList = listNode.getListType() === \"check\";\n\n if (isCheckList) {\n // Only add attributes for leaf list items\n if ($isListNode(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: $createListItemNode() };\n}\n\nexport function $createListItemNode(checked?: boolean): ListItemNode {\n return new ListItemNode(undefined, checked);\n}\n\nexport function $isListItemNode(node: LexicalNode | null | undefined): node is ListItemNode {\n return node instanceof ListItemNode;\n}\n"],"mappings":"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","ignoreList":[]}
|
package/ListNode.d.ts
CHANGED
|
@@ -1,27 +1,41 @@
|
|
|
1
|
-
import { DOMConversion, DOMConversionMap, EditorConfig,
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
1
|
+
import type { DOMConversion, DOMConversionMap, DOMExportOutput, EditorConfig, LexicalEditor, LexicalNode, NodeKey, SerializedElementNode, Spread } from "lexical";
|
|
2
|
+
import { ElementNode } from "lexical";
|
|
3
|
+
import { Theme } from "@webiny/lexical-theme";
|
|
4
|
+
import type { ListNodeTagType } from "@lexical/list";
|
|
5
|
+
import type { ListType } from "@lexical/list";
|
|
6
|
+
import type { TypographyStylesNode } from "./types.js";
|
|
4
7
|
export type SerializedWebinyListNode = Spread<{
|
|
5
|
-
|
|
8
|
+
styleId?: string;
|
|
9
|
+
className?: string;
|
|
6
10
|
listType: ListType;
|
|
7
11
|
start: number;
|
|
8
12
|
tag: ListNodeTagType;
|
|
9
|
-
type: "
|
|
10
|
-
version: 1;
|
|
13
|
+
type: "wby-list";
|
|
11
14
|
}, SerializedElementNode>;
|
|
12
|
-
|
|
15
|
+
type ListNodeOptions = {
|
|
16
|
+
styleId?: string;
|
|
17
|
+
className?: string;
|
|
18
|
+
start?: number;
|
|
19
|
+
key?: NodeKey;
|
|
20
|
+
};
|
|
21
|
+
export declare class ListNode extends ElementNode implements TypographyStylesNode {
|
|
13
22
|
/** @internal */
|
|
14
23
|
__tag: ListNodeTagType;
|
|
15
24
|
/** @internal */
|
|
16
25
|
__start: number;
|
|
17
26
|
/** @internal */
|
|
18
27
|
__listType: ListType;
|
|
19
|
-
private
|
|
20
|
-
|
|
28
|
+
private __styleId;
|
|
29
|
+
private __className;
|
|
30
|
+
constructor(listType: ListType, options?: ListNodeOptions);
|
|
21
31
|
static getType(): string;
|
|
22
32
|
createDOM(config: EditorConfig): HTMLElement;
|
|
33
|
+
exportDOM(editor: LexicalEditor): DOMExportOutput;
|
|
23
34
|
static clone(node: ListNode): ListNode;
|
|
24
|
-
getStyleId(): string;
|
|
35
|
+
getStyleId(): string | undefined;
|
|
36
|
+
setStyleId(styleId: string | undefined): void;
|
|
37
|
+
setClassName(className: string | undefined): void;
|
|
38
|
+
getClassName(): string | undefined;
|
|
25
39
|
static importJSON(serializedNode: SerializedWebinyListNode): ListNode;
|
|
26
40
|
exportJSON(): SerializedWebinyListNode;
|
|
27
41
|
static importDomConversionMap(): DOMConversion<HTMLElement> | null;
|
|
@@ -30,10 +44,10 @@ export declare class ListNode extends ElementNode {
|
|
|
30
44
|
extractWithChild(child: LexicalNode): boolean;
|
|
31
45
|
getListType(): ListType;
|
|
32
46
|
getStart(): number;
|
|
33
|
-
private setDefaultThemeListStyleByTag;
|
|
34
|
-
private hasThemeStyle;
|
|
35
47
|
private getTag;
|
|
36
|
-
|
|
48
|
+
protected updateElementWithThemeClasses(element: HTMLElement, theme: Theme): HTMLElement;
|
|
49
|
+
private setDefaultTypography;
|
|
37
50
|
}
|
|
38
|
-
export declare function $createListNode(listType: ListType,
|
|
51
|
+
export declare function $createListNode(listType: ListType, styleId?: string, start?: number): ListNode;
|
|
39
52
|
export declare function $isListNode(node: LexicalNode | null | undefined): node is ListNode;
|
|
53
|
+
export {};
|