@webiny/lexical-nodes 5.43.3 → 6.0.0-alpha.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 (75) hide show
  1. package/FontColorNode.d.ts +4 -4
  2. package/FontColorNode.js +96 -145
  3. package/FontColorNode.js.map +1 -1
  4. package/HeadingNode.d.ts +29 -17
  5. package/HeadingNode.js +181 -152
  6. package/HeadingNode.js.map +1 -1
  7. package/ImageNode.js +143 -188
  8. package/ImageNode.js.map +1 -1
  9. package/LinkNode.d.ts +2 -2
  10. package/LinkNode.js +251 -346
  11. package/LinkNode.js.map +1 -1
  12. package/ListItemNode.d.ts +4 -3
  13. package/ListItemNode.js +276 -354
  14. package/ListItemNode.js.map +1 -1
  15. package/ListNode.d.ts +28 -14
  16. package/ListNode.js +174 -208
  17. package/ListNode.js.map +1 -1
  18. package/ParagraphNode.d.ts +28 -16
  19. package/ParagraphNode.js +141 -179
  20. package/ParagraphNode.js.map +1 -1
  21. package/QuoteNode.d.ts +26 -19
  22. package/QuoteNode.js +104 -186
  23. package/QuoteNode.js.map +1 -1
  24. package/components/ImageNode/ContentEditable.js +7 -14
  25. package/components/ImageNode/ContentEditable.js.map +1 -1
  26. package/components/ImageNode/ImageComponent.js +104 -124
  27. package/components/ImageNode/ImageComponent.js.map +1 -1
  28. package/components/ImageNode/ImageResizer.js +78 -83
  29. package/components/ImageNode/ImageResizer.js.map +1 -1
  30. package/components/ImageNode/Placeholder.d.ts +1 -1
  31. package/components/ImageNode/Placeholder.js +10 -16
  32. package/components/ImageNode/Placeholder.js.map +1 -1
  33. package/components/ImageNode/SharedHistoryContext.d.ts +2 -2
  34. package/components/ImageNode/SharedHistoryContext.js +12 -20
  35. package/components/ImageNode/SharedHistoryContext.js.map +1 -1
  36. package/generateInitialLexicalValue.d.ts +4 -0
  37. package/generateInitialLexicalValue.js +27 -0
  38. package/generateInitialLexicalValue.js.map +1 -0
  39. package/index.d.ts +4 -8
  40. package/index.js +44 -230
  41. package/index.js.map +1 -1
  42. package/package.json +4 -4
  43. package/prepareLexicalState.d.ts +2 -0
  44. package/prepareLexicalState.js +53 -0
  45. package/prepareLexicalState.js.map +1 -0
  46. package/types.d.ts +4 -5
  47. package/types.js +1 -5
  48. package/types.js.map +1 -1
  49. package/utils/clearNodeFormating.d.ts +1 -1
  50. package/utils/clearNodeFormating.js +12 -18
  51. package/utils/clearNodeFormating.js.map +1 -1
  52. package/utils/formatList.d.ts +3 -3
  53. package/utils/formatList.js +171 -208
  54. package/utils/formatList.js.map +1 -1
  55. package/utils/formatToHeading.d.ts +2 -2
  56. package/utils/formatToHeading.js +8 -15
  57. package/utils/formatToHeading.js.map +1 -1
  58. package/utils/formatToParagraph.d.ts +1 -1
  59. package/utils/formatToParagraph.js +8 -16
  60. package/utils/formatToParagraph.js.map +1 -1
  61. package/utils/formatToQuote.d.ts +1 -1
  62. package/utils/formatToQuote.js +8 -15
  63. package/utils/formatToQuote.js.map +1 -1
  64. package/utils/getStyleId.d.ts +11 -0
  65. package/utils/getStyleId.js +14 -0
  66. package/utils/getStyleId.js.map +1 -0
  67. package/utils/listNode.d.ts +2 -2
  68. package/utils/listNode.js +37 -50
  69. package/utils/listNode.js.map +1 -1
  70. package/utils/toggleLink.d.ts +1 -1
  71. package/utils/toggleLink.js +41 -45
  72. package/utils/toggleLink.js.map +1 -1
  73. package/TypographyNode.d.ts +0 -39
  74. package/TypographyNode.js +0 -146
  75. package/TypographyNode.js.map +0 -1
package/LinkNode.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"names":["_utils","require","_lexical","SUPPORTED_URL_PROTOCOLS","Set","LinkNode","exports","_ElementNode","url","_this","attributes","arguments","length","undefined","key","_classCallCheck2","default","_callSuper2","_attributes$target","target","_attributes$rel","rel","_attributes$title","title","_attributes$alt","alt","__url","__target","__rel","__title","__alt","_inherits2","_createClass2","value","createDOM","config","element","document","createElement","href","sanitizeUrl","setAttribute","addClassNamesToElement","theme","link","updateDOM","prevNode","anchor","removeAttribute","parsedUrl","URL","has","protocol","_unused","exportJSON","_objectSpread2","_superPropGet2","getRel","getTarget","getTitle","getAlt","type","getURL","version","getLatest","setURL","writable","getWritable","setTarget","setRel","setTitle","setAlt","text","insertNewAfter","selection","restoreSelection","getParentOrThrow","$isElementNode","linkNode","$createLinkNode","append","canInsertTextBefore","canInsertTextAfter","canBeEmpty","isInline","extractWithChild","_","$isRangeSelection","anchorNode","getNode","focusNode","focus","isParentOf","getTextContent","getType","clone","node","__key","importDOM","a","conversion","convertAnchorElement","priority","importJSON","serializedNode","setFormat","format","setIndent","indent","setDirection","direction","ElementNode","domNode","isHTMLAnchorElement","content","textContent","children","getAttribute","$applyNodeReplacement","$isLinkNode","AutoLinkNode","_LinkNode","$createAutoLinkNode","$isAutoLinkNode","TOGGLE_LINK_COMMAND","createCommand"],"sources":["LinkNode.ts"],"sourcesContent":["/** @module @lexical/link */\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nimport type {\n DOMConversionMap,\n DOMConversionOutput,\n EditorConfig,\n RangeSelection,\n LexicalCommand,\n LexicalNode,\n NodeKey,\n SerializedElementNode\n} from \"lexical\";\n\nimport { addClassNamesToElement, isHTMLAnchorElement } from \"@lexical/utils\";\nimport {\n $applyNodeReplacement,\n $isElementNode,\n $isRangeSelection,\n createCommand,\n ElementNode,\n Spread\n} from \"lexical\";\n\nexport type LinkAttributes = {\n rel?: null | string;\n target?: null | string;\n title?: null | string;\n alt?: null | string;\n};\n\ndeclare global {\n interface HTMLAnchorElement {\n alt?: string;\n }\n}\n\nexport type SerializedLinkNode = Spread<\n {\n url: string;\n },\n Spread<LinkAttributes, SerializedElementNode>\n>;\n\nconst SUPPORTED_URL_PROTOCOLS = new Set([\"http:\", \"https:\", \"mailto:\", \"sms:\", \"tel:\"]);\n\n/** @noInheritDoc */\nexport class LinkNode extends ElementNode {\n /** @internal */\n __url: string;\n /** @internal */\n __target: null | string;\n /** @internal */\n __rel: null | string;\n /** @internal */\n __title: null | string;\n /** @internal */\n __alt: null | string;\n\n static override getType(): string {\n return \"link\";\n }\n\n static override clone(node: LinkNode): LinkNode {\n return new LinkNode(\n node.__url,\n { rel: node.__rel, target: node.__target, title: node.__title, alt: node.__alt },\n node.__key\n );\n }\n\n constructor(url: string, attributes: LinkAttributes = {}, key?: NodeKey) {\n super(key);\n const { target = null, rel = null, title = null, alt = null } = attributes;\n this.__url = url;\n this.__target = target;\n this.__rel = rel;\n this.__title = title;\n this.__alt = alt;\n }\n\n override createDOM(config: EditorConfig): HTMLAnchorElement {\n const element = document.createElement(\"a\") as HTMLAnchorElement;\n element.href = this.sanitizeUrl(this.__url);\n if (this.__target !== null) {\n element.target = this.__target;\n }\n if (this.__rel !== null) {\n element.rel = this.__rel;\n }\n if (this.__title !== null) {\n element.title = this.__title;\n }\n if (this.__alt) {\n element.setAttribute(\"alt\", this.__alt);\n }\n addClassNamesToElement(element, config.theme.link);\n return element;\n }\n\n override updateDOM(prevNode: LinkNode, anchor: HTMLAnchorElement): boolean {\n const url = this.__url;\n const target = this.__target;\n const rel = this.__rel;\n const title = this.__title;\n const alt = this.__alt;\n\n if (url !== prevNode.__url) {\n anchor.href = url;\n }\n\n if (target !== prevNode.__target) {\n if (target) {\n anchor.target = target;\n } else {\n anchor.removeAttribute(\"target\");\n }\n }\n\n if (rel !== prevNode.__rel) {\n if (rel) {\n anchor.rel = rel;\n } else {\n anchor.removeAttribute(\"rel\");\n }\n }\n\n if (title !== prevNode.__title) {\n if (title) {\n anchor.title = title;\n } else {\n anchor.removeAttribute(\"title\");\n }\n }\n\n if (alt !== prevNode.__alt) {\n if (alt) {\n anchor.setAttribute(\"alt\", alt);\n } else {\n anchor.removeAttribute(\"alt\");\n }\n }\n\n return false;\n }\n\n static override importDOM(): DOMConversionMap | null {\n return {\n a: () => ({\n conversion: convertAnchorElement,\n priority: 1\n })\n };\n }\n\n static override importJSON(\n serializedNode: SerializedLinkNode | SerializedAutoLinkNode\n ): LinkNode {\n const node = $createLinkNode(serializedNode.url, {\n rel: serializedNode.rel,\n target: serializedNode.target,\n title: serializedNode.title,\n alt: serializedNode.alt\n });\n node.setFormat(serializedNode.format);\n node.setIndent(serializedNode.indent);\n node.setDirection(serializedNode.direction);\n return node;\n }\n\n sanitizeUrl(url: string): string {\n try {\n const parsedUrl = new URL(url);\n // eslint-disable-next-line no-script-url\n if (!SUPPORTED_URL_PROTOCOLS.has(parsedUrl.protocol)) {\n return \"about:blank\";\n }\n } catch {\n return url;\n }\n return url;\n }\n\n override exportJSON(): SerializedLinkNode | SerializedAutoLinkNode {\n return {\n ...super.exportJSON(),\n rel: this.getRel(),\n target: this.getTarget(),\n title: this.getTitle(),\n alt: this.getAlt(),\n type: \"link\",\n url: this.getURL(),\n version: 1\n };\n }\n\n getURL(): string {\n return this.getLatest().__url;\n }\n\n setURL(url: string): void {\n const writable = this.getWritable();\n writable.__url = url;\n }\n\n getTarget(): null | string {\n return this.getLatest().__target;\n }\n\n setTarget(target: null | string): void {\n const writable = this.getWritable();\n writable.__target = target;\n }\n\n getRel(): null | string {\n return this.getLatest().__rel;\n }\n\n setRel(rel: null | string): void {\n const writable = this.getWritable();\n writable.__rel = rel;\n }\n\n getTitle(): null | string {\n return this.getLatest().__title;\n }\n\n setTitle(title: null | string): void {\n const writable = this.getWritable();\n writable.__title = title;\n }\n\n getAlt(): string | null {\n return this.__alt;\n }\n\n setAlt(text: string | null): void {\n const writable = super.getWritable();\n writable.__alt = text;\n }\n\n override insertNewAfter(\n selection: RangeSelection,\n restoreSelection = true\n ): null | ElementNode {\n const element = this.getParentOrThrow().insertNewAfter(selection, restoreSelection);\n if ($isElementNode(element)) {\n const linkNode = $createLinkNode(this.__url, {\n rel: this.__rel,\n target: this.__target,\n title: this.__title,\n alt: this.__alt\n });\n element.append(linkNode);\n return linkNode;\n }\n return null;\n }\n\n override canInsertTextBefore(): false {\n return false;\n }\n\n override canInsertTextAfter(): false {\n return false;\n }\n\n override canBeEmpty(): false {\n return false;\n }\n\n override isInline(): true {\n return true;\n }\n\n override extractWithChild(_: 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 selection.getTextContent().length > 0\n );\n }\n}\n\nfunction convertAnchorElement(domNode: Node): DOMConversionOutput {\n let node = null;\n if (isHTMLAnchorElement(domNode)) {\n const content = domNode.textContent;\n if ((content !== null && content !== \"\") || domNode.children.length > 0) {\n node = $createLinkNode(domNode.getAttribute(\"href\") || \"\", {\n rel: domNode.getAttribute(\"rel\"),\n target: domNode.getAttribute(\"target\"),\n title: domNode.getAttribute(\"title\"),\n alt: domNode.getAttribute(\"alt\")\n });\n }\n }\n return { node };\n}\n\n/**\n * Takes a URL and creates a LinkNode.\n * @param url - The URL the LinkNode should direct to.\n * @param attributes - Optional HTML a tag attributes { target, rel, title }\n * @returns The LinkNode.\n */\nexport function $createLinkNode(url: string, attributes?: LinkAttributes): LinkNode {\n return $applyNodeReplacement(new LinkNode(url, attributes));\n}\n\n/**\n * Determines if node is a LinkNode.\n * @param node - The node to be checked.\n * @returns true if node is a LinkNode, false otherwise.\n */\nexport function $isLinkNode(node: LexicalNode | null | undefined): node is LinkNode {\n return node instanceof LinkNode;\n}\n\nexport type SerializedAutoLinkNode = SerializedLinkNode;\n\n// Custom node type to override `canInsertTextAfter` that will\n// allow typing within the link\nexport class AutoLinkNode extends LinkNode {\n static override getType(): string {\n return \"autolink\";\n }\n\n static override clone(node: AutoLinkNode): AutoLinkNode {\n return new AutoLinkNode(\n node.__url,\n { rel: node.__rel, target: node.__target, title: node.__title },\n node.__key\n );\n }\n\n static override importJSON(serializedNode: SerializedAutoLinkNode): AutoLinkNode {\n const node = $createAutoLinkNode(serializedNode.url, {\n rel: serializedNode.rel,\n target: serializedNode.target,\n title: serializedNode.title\n });\n node.setFormat(serializedNode.format);\n node.setIndent(serializedNode.indent);\n node.setDirection(serializedNode.direction);\n return node;\n }\n\n static override importDOM(): null {\n // TODO: Should link node should handle the import over autolink?\n return null;\n }\n\n override exportJSON(): SerializedAutoLinkNode {\n return {\n ...super.exportJSON(),\n type: \"autolink\",\n version: 1\n };\n }\n\n override insertNewAfter(\n selection: RangeSelection,\n restoreSelection = true\n ): null | ElementNode {\n const element = this.getParentOrThrow().insertNewAfter(selection, restoreSelection);\n if ($isElementNode(element)) {\n const linkNode = $createAutoLinkNode(this.__url, {\n rel: this.__rel,\n target: this.__target,\n title: this.__title\n });\n element.append(linkNode);\n return linkNode;\n }\n return null;\n }\n}\n\n/**\n * Takes a URL and creates an AutoLinkNode. AutoLinkNodes are generally automatically generated\n * during typing, which is especially useful when a button to generate a LinkNode is not practical.\n * @param url - The URL the LinkNode should direct to.\n * @param attributes - Optional HTML a tag attributes. { target, rel, title }\n * @returns The LinkNode.\n */\nexport function $createAutoLinkNode(url: string, attributes?: LinkAttributes): AutoLinkNode {\n return $applyNodeReplacement(new AutoLinkNode(url, attributes));\n}\n\n/**\n * Determines if node is an AutoLinkNode.\n * @param node - The node to be checked.\n * @returns true if node is an AutoLinkNode, false otherwise.\n */\nexport function $isAutoLinkNode(node: LexicalNode | null | undefined): node is AutoLinkNode {\n return node instanceof AutoLinkNode;\n}\n\nexport const TOGGLE_LINK_COMMAND: LexicalCommand<\n string | ({ url: string } & LinkAttributes) | null\n> = createCommand(\"TOGGLE_LINK_COMMAND\");\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["addClassNamesToElement","isHTMLAnchorElement","$applyNodeReplacement","$isElementNode","$isRangeSelection","createCommand","ElementNode","SUPPORTED_URL_PROTOCOLS","Set","LinkNode","getType","clone","node","__url","rel","__rel","target","__target","title","__title","alt","__alt","__key","constructor","url","attributes","key","createDOM","config","element","document","createElement","href","sanitizeUrl","setAttribute","theme","link","updateDOM","prevNode","anchor","removeAttribute","importDOM","a","conversion","convertAnchorElement","priority","importJSON","serializedNode","$createLinkNode","setFormat","format","setIndent","indent","setDirection","direction","parsedUrl","URL","has","protocol","exportJSON","getRel","getTarget","getTitle","getAlt","type","getURL","getLatest","setURL","writable","getWritable","setTarget","setRel","setTitle","setAlt","text","insertNewAfter","selection","restoreSelection","getParentOrThrow","linkNode","append","canInsertTextBefore","canInsertTextAfter","canBeEmpty","isInline","extractWithChild","_","anchorNode","getNode","focusNode","focus","isParentOf","getTextContent","length","domNode","content","textContent","children","getAttribute","$isLinkNode","AutoLinkNode","$createAutoLinkNode","$isAutoLinkNode","TOGGLE_LINK_COMMAND"],"sources":["LinkNode.ts"],"sourcesContent":["/** @module @lexical/link */\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nimport type {\n DOMConversionMap,\n DOMConversionOutput,\n EditorConfig,\n RangeSelection,\n LexicalCommand,\n LexicalNode,\n NodeKey,\n SerializedElementNode,\n Spread\n} from \"lexical\";\n\nimport { addClassNamesToElement, isHTMLAnchorElement } from \"@lexical/utils\";\nimport {\n $applyNodeReplacement,\n $isElementNode,\n $isRangeSelection,\n createCommand,\n ElementNode\n} from \"lexical\";\n\nexport type LinkAttributes = {\n rel?: null | string;\n target?: null | string;\n title?: null | string;\n alt?: null | string;\n};\n\ndeclare global {\n interface HTMLAnchorElement {\n alt?: string;\n }\n}\n\nexport type SerializedLinkNode = Spread<\n {\n url: string;\n },\n Spread<LinkAttributes, SerializedElementNode>\n>;\n\nconst SUPPORTED_URL_PROTOCOLS = new Set([\"http:\", \"https:\", \"mailto:\", \"sms:\", \"tel:\"]);\n\n/** @noInheritDoc */\nexport class LinkNode extends ElementNode {\n /** @internal */\n __url: string;\n /** @internal */\n __target: null | string;\n /** @internal */\n __rel: null | string;\n /** @internal */\n __title: null | string;\n /** @internal */\n __alt: null | string;\n\n static override getType(): string {\n return \"wby-link\";\n }\n\n static override clone(node: LinkNode): LinkNode {\n return new LinkNode(\n node.__url,\n { rel: node.__rel, target: node.__target, title: node.__title, alt: node.__alt },\n node.__key\n );\n }\n\n constructor(url: string, attributes: LinkAttributes = {}, key?: NodeKey) {\n super(key);\n const { target = null, rel = null, title = null, alt = null } = attributes;\n this.__url = url;\n this.__target = target;\n this.__rel = rel;\n this.__title = title;\n this.__alt = alt;\n }\n\n override createDOM(config: EditorConfig): HTMLAnchorElement {\n const element = document.createElement(\"a\") as HTMLAnchorElement;\n element.href = this.sanitizeUrl(this.__url);\n if (this.__target !== null) {\n element.target = this.__target;\n }\n if (this.__rel !== null) {\n element.rel = this.__rel;\n }\n if (this.__title !== null) {\n element.title = this.__title;\n }\n if (this.__alt) {\n element.setAttribute(\"alt\", this.__alt);\n }\n addClassNamesToElement(element, config.theme.link);\n return element;\n }\n\n override updateDOM(prevNode: LinkNode, anchor: HTMLAnchorElement): boolean {\n const url = this.__url;\n const target = this.__target;\n const rel = this.__rel;\n const title = this.__title;\n const alt = this.__alt;\n\n if (url !== prevNode.__url) {\n anchor.href = url;\n }\n\n if (target !== prevNode.__target) {\n if (target) {\n anchor.target = target;\n } else {\n anchor.removeAttribute(\"target\");\n }\n }\n\n if (rel !== prevNode.__rel) {\n if (rel) {\n anchor.rel = rel;\n } else {\n anchor.removeAttribute(\"rel\");\n }\n }\n\n if (title !== prevNode.__title) {\n if (title) {\n anchor.title = title;\n } else {\n anchor.removeAttribute(\"title\");\n }\n }\n\n if (alt !== prevNode.__alt) {\n if (alt) {\n anchor.setAttribute(\"alt\", alt);\n } else {\n anchor.removeAttribute(\"alt\");\n }\n }\n\n return false;\n }\n\n static override importDOM(): DOMConversionMap | null {\n return {\n a: () => ({\n conversion: convertAnchorElement,\n priority: 1\n })\n };\n }\n\n static override importJSON(\n serializedNode: SerializedLinkNode | SerializedAutoLinkNode\n ): LinkNode {\n const node = $createLinkNode(serializedNode.url, {\n rel: serializedNode.rel,\n target: serializedNode.target,\n title: serializedNode.title,\n alt: serializedNode.alt\n });\n node.setFormat(serializedNode.format);\n node.setIndent(serializedNode.indent);\n node.setDirection(serializedNode.direction);\n return node;\n }\n\n sanitizeUrl(url: string): string {\n try {\n const parsedUrl = new URL(url);\n // eslint-disable-next-line no-script-url\n if (!SUPPORTED_URL_PROTOCOLS.has(parsedUrl.protocol)) {\n return \"about:blank\";\n }\n } catch {\n return url;\n }\n return url;\n }\n\n override exportJSON(): SerializedLinkNode | SerializedAutoLinkNode {\n return {\n ...super.exportJSON(),\n rel: this.getRel(),\n target: this.getTarget(),\n title: this.getTitle(),\n alt: this.getAlt(),\n type: \"wby-link\",\n url: this.getURL()\n };\n }\n\n getURL(): string {\n return this.getLatest().__url;\n }\n\n setURL(url: string): void {\n const writable = this.getWritable();\n writable.__url = url;\n }\n\n getTarget(): null | string {\n return this.getLatest().__target;\n }\n\n setTarget(target: null | string): void {\n const writable = this.getWritable();\n writable.__target = target;\n }\n\n getRel(): null | string {\n return this.getLatest().__rel;\n }\n\n setRel(rel: null | string): void {\n const writable = this.getWritable();\n writable.__rel = rel;\n }\n\n getTitle(): null | string {\n return this.getLatest().__title;\n }\n\n setTitle(title: null | string): void {\n const writable = this.getWritable();\n writable.__title = title;\n }\n\n getAlt(): string | null {\n return this.__alt;\n }\n\n setAlt(text: string | null): void {\n const writable = super.getWritable();\n writable.__alt = text;\n }\n\n override insertNewAfter(\n selection: RangeSelection,\n restoreSelection = true\n ): null | ElementNode {\n const element = this.getParentOrThrow().insertNewAfter(selection, restoreSelection);\n if ($isElementNode(element)) {\n const linkNode = $createLinkNode(this.__url, {\n rel: this.__rel,\n target: this.__target,\n title: this.__title,\n alt: this.__alt\n });\n element.append(linkNode);\n return linkNode;\n }\n return null;\n }\n\n override canInsertTextBefore(): false {\n return false;\n }\n\n override canInsertTextAfter(): false {\n return false;\n }\n\n override canBeEmpty(): false {\n return false;\n }\n\n override isInline(): true {\n return true;\n }\n\n override extractWithChild(_: 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 selection.getTextContent().length > 0\n );\n }\n}\n\nfunction convertAnchorElement(domNode: Node): DOMConversionOutput {\n let node = null;\n if (isHTMLAnchorElement(domNode)) {\n const content = domNode.textContent;\n if ((content !== null && content !== \"\") || domNode.children.length > 0) {\n node = $createLinkNode(domNode.getAttribute(\"href\") || \"\", {\n rel: domNode.getAttribute(\"rel\"),\n target: domNode.getAttribute(\"target\"),\n title: domNode.getAttribute(\"title\"),\n alt: domNode.getAttribute(\"alt\")\n });\n }\n }\n return { node };\n}\n\n/**\n * Takes a URL and creates a LinkNode.\n * @param url - The URL the LinkNode should direct to.\n * @param attributes - Optional HTML a tag attributes { target, rel, title }\n * @returns The LinkNode.\n */\nexport function $createLinkNode(url: string, attributes?: LinkAttributes): LinkNode {\n return $applyNodeReplacement(new LinkNode(url, attributes));\n}\n\n/**\n * Determines if node is a LinkNode.\n * @param node - The node to be checked.\n * @returns true if node is a LinkNode, false otherwise.\n */\nexport function $isLinkNode(node: LexicalNode | null | undefined): node is LinkNode {\n return node instanceof LinkNode;\n}\n\nexport type SerializedAutoLinkNode = SerializedLinkNode;\n\n// Custom node type to override `canInsertTextAfter` that will\n// allow typing within the link\nexport class AutoLinkNode extends LinkNode {\n static override getType(): string {\n return \"autolink\";\n }\n\n static override clone(node: AutoLinkNode): AutoLinkNode {\n return new AutoLinkNode(\n node.__url,\n { rel: node.__rel, target: node.__target, title: node.__title },\n node.__key\n );\n }\n\n static override importJSON(serializedNode: SerializedAutoLinkNode): AutoLinkNode {\n const node = $createAutoLinkNode(serializedNode.url, {\n rel: serializedNode.rel,\n target: serializedNode.target,\n title: serializedNode.title\n });\n node.setFormat(serializedNode.format);\n node.setIndent(serializedNode.indent);\n node.setDirection(serializedNode.direction);\n return node;\n }\n\n static override importDOM(): null {\n // TODO: Should link node should handle the import over autolink?\n return null;\n }\n\n override exportJSON(): SerializedAutoLinkNode {\n return {\n ...super.exportJSON(),\n type: \"autolink\"\n };\n }\n\n override insertNewAfter(\n selection: RangeSelection,\n restoreSelection = true\n ): null | ElementNode {\n const element = this.getParentOrThrow().insertNewAfter(selection, restoreSelection);\n if ($isElementNode(element)) {\n const linkNode = $createAutoLinkNode(this.__url, {\n rel: this.__rel,\n target: this.__target,\n title: this.__title\n });\n element.append(linkNode);\n return linkNode;\n }\n return null;\n }\n}\n\n/**\n * Takes a URL and creates an AutoLinkNode. AutoLinkNodes are generally automatically generated\n * during typing, which is especially useful when a button to generate a LinkNode is not practical.\n * @param url - The URL the LinkNode should direct to.\n * @param attributes - Optional HTML a tag attributes. { target, rel, title }\n * @returns The LinkNode.\n */\nexport function $createAutoLinkNode(url: string, attributes?: LinkAttributes): AutoLinkNode {\n return $applyNodeReplacement(new AutoLinkNode(url, attributes));\n}\n\n/**\n * Determines if node is an AutoLinkNode.\n * @param node - The node to be checked.\n * @returns true if node is an AutoLinkNode, false otherwise.\n */\nexport function $isAutoLinkNode(node: LexicalNode | null | undefined): node is AutoLinkNode {\n return node instanceof AutoLinkNode;\n}\n\nexport const TOGGLE_LINK_COMMAND: LexicalCommand<\n string | ({ url: string } & LinkAttributes) | null\n> = createCommand(\"TOGGLE_LINK_COMMAND\");\n"],"mappings":"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","ignoreList":[]}
package/ListItemNode.d.ts CHANGED
@@ -1,9 +1,10 @@
1
- import { DOMConversionMap, EditorConfig, ElementNode, LexicalNode, NodeKey, ParagraphNode, RangeSelection, SerializedElementNode, Spread } from "lexical";
1
+ import type { DOMConversionMap, EditorConfig, LexicalNode, NodeKey, ParagraphNode, RangeSelection, SerializedElementNode, Spread } from "lexical";
2
+ import { ElementNode } from "lexical";
3
+ export declare const LIST_ITEM_TYPE = "wby-list-item";
2
4
  export type SerializedWebinyListItemNode = Spread<{
3
5
  checked: boolean | undefined;
4
- type: "webiny-listitem";
6
+ type: typeof LIST_ITEM_TYPE;
5
7
  value: number;
6
- version: 1;
7
8
  }, SerializedElementNode>;
8
9
  /** @noInheritDoc */
9
10
  export declare class ListItemNode extends ElementNode {