@webiny/lexical-nodes 5.40.0 → 5.40.1-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.
- package/FontColorNode.d.ts +19 -17
- package/FontColorNode.js +91 -35
- package/FontColorNode.js.map +1 -1
- package/HeadingNode.d.ts +3 -5
- package/HeadingNode.js +0 -22
- package/HeadingNode.js.map +1 -1
- package/ImageNode.js.map +1 -1
- package/LinkNode.d.ts +2 -2
- package/LinkNode.js +1 -1
- package/LinkNode.js.map +1 -1
- package/ListItemNode.d.ts +2 -2
- package/ListItemNode.js +3 -0
- package/ListItemNode.js.map +1 -1
- package/ListNode.d.ts +7 -8
- package/ListNode.js +41 -41
- package/ListNode.js.map +1 -1
- package/ParagraphNode.d.ts +4 -6
- package/ParagraphNode.js +0 -20
- package/ParagraphNode.js.map +1 -1
- package/QuoteNode.d.ts +4 -4
- package/QuoteNode.js +10 -29
- package/QuoteNode.js.map +1 -1
- package/components/ImageNode/ImageComponent.js +2 -2
- package/components/ImageNode/ImageComponent.js.map +1 -1
- package/package.json +24 -16
- package/types.d.ts +0 -3
- package/types.js.map +1 -1
- package/utils/clearNodeFormating.d.ts +2 -2
- package/utils/clearNodeFormating.js.map +1 -1
- package/utils/formatList.js +1 -1
- package/utils/formatList.js.map +1 -1
- package/utils/formatToHeading.js +1 -1
- package/utils/formatToHeading.js.map +1 -1
- package/utils/formatToParagraph.js +1 -1
- package/utils/formatToParagraph.js.map +1 -1
- package/utils/formatToQuote.js +3 -3
- package/utils/formatToQuote.js.map +1 -1
- package/utils/listNode.d.ts +12 -2
- package/utils/listNode.js +8 -1
- package/utils/listNode.js.map +1 -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","_get2","_getPrototypeOf2","prototype","call","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","_rel","$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 GridSelection,\n LexicalCommand,\n LexicalNode,\n NodeKey,\n NodeSelection,\n RangeSelection,\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 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(\n _: 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 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":";;;;;;;;;;;;;;;;;;AAsBA,IAAAA,MAAA,GAAAC,OAAA;AACA,IAAAC,QAAA,GAAAD,OAAA;AAvBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AA6CA,IAAME,uBAAuB,GAAG,IAAIC,GAAG,CAAC,CAAC,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;;AAEvF;AAAA,IACaC,QAAQ,GAAAC,OAAA,CAAAD,QAAA,0BAAAE,YAAA;EAwBjB,SAAAF,SAAYG,GAAW,EAAkD;IAAA,IAAAC,KAAA;IAAA,IAAhDC,UAA0B,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,CAAC,CAAC;IAAA,IAAEG,GAAa,GAAAH,SAAA,CAAAC,MAAA,OAAAD,SAAA,MAAAE,SAAA;IAAA,IAAAE,gBAAA,CAAAC,OAAA,QAAAX,QAAA;IACnEI,KAAA,OAAAQ,WAAA,CAAAD,OAAA,QAAAX,QAAA,GAAMS,GAAG;IACT,IAAAI,kBAAA,GAAgER,UAAU,CAAlES,MAAM;MAANA,MAAM,GAAAD,kBAAA,cAAG,IAAI,GAAAA,kBAAA;MAAAE,eAAA,GAA2CV,UAAU,CAAnDW,GAAG;MAAHA,GAAG,GAAAD,eAAA,cAAG,IAAI,GAAAA,eAAA;MAAAE,iBAAA,GAA+BZ,UAAU,CAAvCa,KAAK;MAALA,KAAK,GAAAD,iBAAA,cAAG,IAAI,GAAAA,iBAAA;MAAAE,eAAA,GAAiBd,UAAU,CAAzBe,GAAG;MAAHA,GAAG,GAAAD,eAAA,cAAG,IAAI,GAAAA,eAAA;IAC3Df,KAAA,CAAKiB,KAAK,GAAGlB,GAAG;IAChBC,KAAA,CAAKkB,QAAQ,GAAGR,MAAM;IACtBV,KAAA,CAAKmB,KAAK,GAAGP,GAAG;IAChBZ,KAAA,CAAKoB,OAAO,GAAGN,KAAK;IACpBd,KAAA,CAAKqB,KAAK,GAAGL,GAAG;IAAC,OAAAhB,KAAA;EACrB;EAAC,IAAAsB,UAAA,CAAAf,OAAA,EAAAX,QAAA,EAAAE,YAAA;EAAA,WAAAyB,aAAA,CAAAhB,OAAA,EAAAX,QAAA;IAAAS,GAAA;IAAAmB,KAAA,EAED,SAAAC,UAAmBC,MAAoB,EAAqB;MACxD,IAAMC,OAAO,GAAGC,QAAQ,CAACC,aAAa,CAAC,GAAG,CAAsB;MAChEF,OAAO,CAACG,IAAI,GAAG,IAAI,CAACC,WAAW,CAAC,IAAI,CAACd,KAAK,CAAC;MAC3C,IAAI,IAAI,CAACC,QAAQ,KAAK,IAAI,EAAE;QACxBS,OAAO,CAACjB,MAAM,GAAG,IAAI,CAACQ,QAAQ;MAClC;MACA,IAAI,IAAI,CAACC,KAAK,KAAK,IAAI,EAAE;QACrBQ,OAAO,CAACf,GAAG,GAAG,IAAI,CAACO,KAAK;MAC5B;MACA,IAAI,IAAI,CAACC,OAAO,KAAK,IAAI,EAAE;QACvBO,OAAO,CAACb,KAAK,GAAG,IAAI,CAACM,OAAO;MAChC;MACA,IAAI,IAAI,CAACC,KAAK,EAAE;QACZM,OAAO,CAACK,YAAY,CAAC,KAAK,EAAE,IAAI,CAACX,KAAK,CAAC;MAC3C;MACA,IAAAY,6BAAsB,EAACN,OAAO,EAAED,MAAM,CAACQ,KAAK,CAACC,IAAI,CAAC;MAClD,OAAOR,OAAO;IAClB;EAAC;IAAAtB,GAAA;IAAAmB,KAAA,EAED,SAAAY,UAAmBC,QAAkB,EAAEC,MAAyB,EAAW;MACvE,IAAMvC,GAAG,GAAG,IAAI,CAACkB,KAAK;MACtB,IAAMP,MAAM,GAAG,IAAI,CAACQ,QAAQ;MAC5B,IAAMN,GAAG,GAAG,IAAI,CAACO,KAAK;MACtB,IAAML,KAAK,GAAG,IAAI,CAACM,OAAO;MAC1B,IAAMJ,GAAG,GAAG,IAAI,CAACK,KAAK;MAEtB,IAAItB,GAAG,KAAKsC,QAAQ,CAACpB,KAAK,EAAE;QACxBqB,MAAM,CAACR,IAAI,GAAG/B,GAAG;MACrB;MAEA,IAAIW,MAAM,KAAK2B,QAAQ,CAACnB,QAAQ,EAAE;QAC9B,IAAIR,MAAM,EAAE;UACR4B,MAAM,CAAC5B,MAAM,GAAGA,MAAM;QAC1B,CAAC,MAAM;UACH4B,MAAM,CAACC,eAAe,CAAC,QAAQ,CAAC;QACpC;MACJ;MAEA,IAAI3B,GAAG,KAAKyB,QAAQ,CAAClB,KAAK,EAAE;QACxB,IAAIP,GAAG,EAAE;UACL0B,MAAM,CAAC1B,GAAG,GAAGA,GAAG;QACpB,CAAC,MAAM;UACH0B,MAAM,CAACC,eAAe,CAAC,KAAK,CAAC;QACjC;MACJ;MAEA,IAAIzB,KAAK,KAAKuB,QAAQ,CAACjB,OAAO,EAAE;QAC5B,IAAIN,KAAK,EAAE;UACPwB,MAAM,CAACxB,KAAK,GAAGA,KAAK;QACxB,CAAC,MAAM;UACHwB,MAAM,CAACC,eAAe,CAAC,OAAO,CAAC;QACnC;MACJ;MAEA,IAAIvB,GAAG,KAAKqB,QAAQ,CAAChB,KAAK,EAAE;QACxB,IAAIL,GAAG,EAAE;UACLsB,MAAM,CAACN,YAAY,CAAC,KAAK,EAAEhB,GAAG,CAAC;QACnC,CAAC,MAAM;UACHsB,MAAM,CAACC,eAAe,CAAC,KAAK,CAAC;QACjC;MACJ;MAEA,OAAO,KAAK;IAChB;EAAC;IAAAlC,GAAA;IAAAmB,KAAA,EA0BD,SAAAO,YAAYhC,GAAW,EAAU;MAC7B,IAAI;QACA,IAAMyC,SAAS,GAAG,IAAIC,GAAG,CAAC1C,GAAG,CAAC;QAC9B;QACA,IAAI,CAACL,uBAAuB,CAACgD,GAAG,CAACF,SAAS,CAACG,QAAQ,CAAC,EAAE;UAClD,OAAO,aAAa;QACxB;MACJ,CAAC,CAAC,OAAAC,OAAA,EAAM;QACJ,OAAO7C,GAAG;MACd;MACA,OAAOA,GAAG;IACd;EAAC;IAAAM,GAAA;IAAAmB,KAAA,EAED,SAAAqB,WAAA,EAAmE;MAC/D,WAAAC,cAAA,CAAAvC,OAAA,MAAAuC,cAAA,CAAAvC,OAAA,UAAAwC,KAAA,CAAAxC,OAAA,MAAAyC,gBAAA,CAAAzC,OAAA,EAAAX,QAAA,CAAAqD,SAAA,uBAAAC,IAAA;QAEItC,GAAG,EAAE,IAAI,CAACuC,MAAM,CAAC,CAAC;QAClBzC,MAAM,EAAE,IAAI,CAAC0C,SAAS,CAAC,CAAC;QACxBtC,KAAK,EAAE,IAAI,CAACuC,QAAQ,CAAC,CAAC;QACtBrC,GAAG,EAAE,IAAI,CAACsC,MAAM,CAAC,CAAC;QAClBC,IAAI,EAAE,MAAM;QACZxD,GAAG,EAAE,IAAI,CAACyD,MAAM,CAAC,CAAC;QAClBC,OAAO,EAAE;MAAC;IAElB;EAAC;IAAApD,GAAA;IAAAmB,KAAA,EAED,SAAAgC,OAAA,EAAiB;MACb,OAAO,IAAI,CAACE,SAAS,CAAC,CAAC,CAACzC,KAAK;IACjC;EAAC;IAAAZ,GAAA;IAAAmB,KAAA,EAED,SAAAmC,OAAO5D,GAAW,EAAQ;MACtB,IAAM6D,QAAQ,GAAG,IAAI,CAACC,WAAW,CAAC,CAAC;MACnCD,QAAQ,CAAC3C,KAAK,GAAGlB,GAAG;IACxB;EAAC;IAAAM,GAAA;IAAAmB,KAAA,EAED,SAAA4B,UAAA,EAA2B;MACvB,OAAO,IAAI,CAACM,SAAS,CAAC,CAAC,CAACxC,QAAQ;IACpC;EAAC;IAAAb,GAAA;IAAAmB,KAAA,EAED,SAAAsC,UAAUpD,MAAqB,EAAQ;MACnC,IAAMkD,QAAQ,GAAG,IAAI,CAACC,WAAW,CAAC,CAAC;MACnCD,QAAQ,CAAC1C,QAAQ,GAAGR,MAAM;IAC9B;EAAC;IAAAL,GAAA;IAAAmB,KAAA,EAED,SAAA2B,OAAA,EAAwB;MACpB,OAAO,IAAI,CAACO,SAAS,CAAC,CAAC,CAACvC,KAAK;IACjC;EAAC;IAAAd,GAAA;IAAAmB,KAAA,EAED,SAAAuC,OAAOnD,GAAkB,EAAQ;MAC7B,IAAMgD,QAAQ,GAAG,IAAI,CAACC,WAAW,CAAC,CAAC;MACnCD,QAAQ,CAACzC,KAAK,GAAGP,GAAG;IACxB;EAAC;IAAAP,GAAA;IAAAmB,KAAA,EAED,SAAA6B,SAAA,EAA0B;MACtB,OAAO,IAAI,CAACK,SAAS,CAAC,CAAC,CAACtC,OAAO;IACnC;EAAC;IAAAf,GAAA;IAAAmB,KAAA,EAED,SAAAwC,SAASlD,KAAoB,EAAQ;MACjC,IAAM8C,QAAQ,GAAG,IAAI,CAACC,WAAW,CAAC,CAAC;MACnCD,QAAQ,CAACxC,OAAO,GAAGN,KAAK;IAC5B;EAAC;IAAAT,GAAA;IAAAmB,KAAA,EAED,SAAA8B,OAAA,EAAwB;MACpB,OAAO,IAAI,CAACjC,KAAK;IACrB;EAAC;IAAAhB,GAAA;IAAAmB,KAAA,EAED,SAAAyC,OAAOC,IAAmB,EAAQ;MAC9B,IAAMN,QAAQ,OAAAb,KAAA,CAAAxC,OAAA,MAAAyC,gBAAA,CAAAzC,OAAA,EAAAX,QAAA,CAAAqD,SAAA,wBAAAC,IAAA,MAAsB;MACpCU,QAAQ,CAACvC,KAAK,GAAG6C,IAAI;IACzB;EAAC;IAAA7D,GAAA;IAAAmB,KAAA,EAED,SAAA2C,eACIC,SAAyB,EAEP;MAAA,IADlBC,gBAAgB,GAAAnE,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,IAAI;MAEvB,IAAMyB,OAAO,GAAG,IAAI,CAAC2C,gBAAgB,CAAC,CAAC,CAACH,cAAc,CAACC,SAAS,EAAEC,gBAAgB,CAAC;MACnF,IAAI,IAAAE,uBAAc,EAAC5C,OAAO,CAAC,EAAE;QACzB,IAAM6C,QAAQ,GAAGC,eAAe,CAAC,IAAI,CAACxD,KAAK,EAAE;UACzCL,GAAG,EAAE,IAAI,CAACO,KAAK;UACfT,MAAM,EAAE,IAAI,CAACQ,QAAQ;UACrBJ,KAAK,EAAE,IAAI,CAACM,OAAO;UACnBJ,GAAG,EAAE,IAAI,CAACK;QACd,CAAC,CAAC;QACFM,OAAO,CAAC+C,MAAM,CAACF,QAAQ,CAAC;QACxB,OAAOA,QAAQ;MACnB;MACA,OAAO,IAAI;IACf;EAAC;IAAAnE,GAAA;IAAAmB,KAAA,EAED,SAAAmD,oBAAA,EAAsC;MAClC,OAAO,KAAK;IAChB;EAAC;IAAAtE,GAAA;IAAAmB,KAAA,EAED,SAAAoD,mBAAA,EAAqC;MACjC,OAAO,KAAK;IAChB;EAAC;IAAAvE,GAAA;IAAAmB,KAAA,EAED,SAAAqD,WAAA,EAA6B;MACzB,OAAO,KAAK;IAChB;EAAC;IAAAxE,GAAA;IAAAmB,KAAA,EAED,SAAAsD,SAAA,EAA0B;MACtB,OAAO,IAAI;IACf;EAAC;IAAAzE,GAAA;IAAAmB,KAAA,EAED,SAAAuD,iBACIC,CAAc,EACdZ,SAAyD,EAClD;MACP,IAAI,CAAC,IAAAa,0BAAiB,EAACb,SAAS,CAAC,EAAE;QAC/B,OAAO,KAAK;MAChB;MAEA,IAAMc,UAAU,GAAGd,SAAS,CAAC9B,MAAM,CAAC6C,OAAO,CAAC,CAAC;MAC7C,IAAMC,SAAS,GAAGhB,SAAS,CAACiB,KAAK,CAACF,OAAO,CAAC,CAAC;MAE3C,OACI,IAAI,CAACG,UAAU,CAACJ,UAAU,CAAC,IAC3B,IAAI,CAACI,UAAU,CAACF,SAAS,CAAC,IAC1BhB,SAAS,CAACmB,cAAc,CAAC,CAAC,CAACpF,MAAM,GAAG,CAAC;IAE7C;EAAC;IAAAE,GAAA;IAAAmB,KAAA,EAnPD;;IAEA;;IAEA;;IAEA;;IAEA;;IAGA,SAAAgE,QAAA,EAAkC;MAC9B,OAAO,MAAM;IACjB;EAAC;IAAAnF,GAAA;IAAAmB,KAAA,EAED,SAAAiE,MAAsBC,IAAc,EAAY;MAC5C,OAAO,IAAI9F,QAAQ,CACf8F,IAAI,CAACzE,KAAK,EACV;QAAEL,GAAG,EAAE8E,IAAI,CAACvE,KAAK;QAAET,MAAM,EAAEgF,IAAI,CAACxE,QAAQ;QAAEJ,KAAK,EAAE4E,IAAI,CAACtE,OAAO;QAAEJ,GAAG,EAAE0E,IAAI,CAACrE;MAAM,CAAC,EAChFqE,IAAI,CAACC,KACT,CAAC;IACL;EAAC;IAAAtF,GAAA;IAAAmB,KAAA,EA6ED,SAAAoE,UAAA,EAA4C;MACxC,OAAO;QACHC,CAAC,EAAE,SAAAA,EAAA;UAAA,OAAO;YACNC,UAAU,EAAEC,oBAAoB;YAChCC,QAAQ,EAAE;UACd,CAAC;QAAA;MACL,CAAC;IACL;EAAC;IAAA3F,GAAA;IAAAmB,KAAA,EAED,SAAAyE,WACIC,cAA2D,EACnD;MACR,IAAMR,IAAI,GAAGjB,eAAe,CAACyB,cAAc,CAACnG,GAAG,EAAE;QAC7Ca,GAAG,EAAEsF,cAAc,CAACtF,GAAG;QACvBF,MAAM,EAAEwF,cAAc,CAACxF,MAAM;QAC7BI,KAAK,EAAEoF,cAAc,CAACpF,KAAK;QAC3BE,GAAG,EAAEkF,cAAc,CAAClF;MACxB,CAAC,CAAC;MACF0E,IAAI,CAACS,SAAS,CAACD,cAAc,CAACE,MAAM,CAAC;MACrCV,IAAI,CAACW,SAAS,CAACH,cAAc,CAACI,MAAM,CAAC;MACrCZ,IAAI,CAACa,YAAY,CAACL,cAAc,CAACM,SAAS,CAAC;MAC3C,OAAOd,IAAI;IACf;EAAC;AAAA,EAzHyBe,oBAAW;AAuPzC,SAASV,oBAAoBA,CAACW,OAAa,EAAuB;EAC9D,IAAIhB,IAAI,GAAG,IAAI;EACf,IAAI,IAAAiB,0BAAmB,EAACD,OAAO,CAAC,EAAE;IAC9B,IAAME,OAAO,GAAGF,OAAO,CAACG,WAAW;IACnC,IAAKD,OAAO,KAAK,IAAI,IAAIA,OAAO,KAAK,EAAE,IAAKF,OAAO,CAACI,QAAQ,CAAC3G,MAAM,GAAG,CAAC,EAAE;MACrEuF,IAAI,GAAGjB,eAAe,CAACiC,OAAO,CAACK,YAAY,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE;QACvDnG,GAAG,EAAE8F,OAAO,CAACK,YAAY,CAAC,KAAK,CAAC;QAChCrG,MAAM,EAAEgG,OAAO,CAACK,YAAY,CAAC,QAAQ,CAAC;QACtCjG,KAAK,EAAE4F,OAAO,CAACK,YAAY,CAAC,OAAO,CAAC;QACpC/F,GAAG,EAAE0F,OAAO,CAACK,YAAY,CAAC,KAAK;MACnC,CAAC,CAAC;IACN;EACJ;EACA,OAAO;IAAErB,IAAI,EAAJA;EAAK,CAAC;AACnB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACO,SAASjB,eAAeA,CAAC1E,GAAW,EAAEE,UAA2B,EAAY;EAChF,OAAO,IAAA+G,8BAAqB,EAAC,IAAIpH,QAAQ,CAACG,GAAG,EAAEE,UAAU,CAAC,CAAC;AAC/D;;AAEA;AACA;AACA;AACA;AACA;AACO,SAASgH,WAAWA,CAACvB,IAAoC,EAAoB;EAChF,OAAOA,IAAI,YAAY9F,QAAQ;AACnC;AAIA;AACA;AAAA,IACasH,YAAY,GAAArH,OAAA,CAAAqH,YAAA,0BAAAC,SAAA;EAAA,SAAAD,aAAA;IAAA,IAAA5G,gBAAA,CAAAC,OAAA,QAAA2G,YAAA;IAAA,WAAA1G,WAAA,CAAAD,OAAA,QAAA2G,YAAA,EAAAhH,SAAA;EAAA;EAAA,IAAAoB,UAAA,CAAAf,OAAA,EAAA2G,YAAA,EAAAC,SAAA;EAAA,WAAA5F,aAAA,CAAAhB,OAAA,EAAA2G,YAAA;IAAA7G,GAAA;IAAAmB,KAAA,EA8BrB,SAAAqB,WAAA,EAA8C;MAC1C,WAAAC,cAAA,CAAAvC,OAAA,MAAAuC,cAAA,CAAAvC,OAAA,UAAAwC,KAAA,CAAAxC,OAAA,MAAAyC,gBAAA,CAAAzC,OAAA,EAAA2G,YAAA,CAAAjE,SAAA,uBAAAC,IAAA;QAEIK,IAAI,EAAE,UAAU;QAChBE,OAAO,EAAE;MAAC;IAElB;EAAC;IAAApD,GAAA;IAAAmB,KAAA,EAED,SAAA2C,eACIC,SAAyB,EAEP;MAAA,IADlBC,gBAAgB,GAAAnE,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,IAAI;MAEvB,IAAMyB,OAAO,GAAG,IAAI,CAAC2C,gBAAgB,CAAC,CAAC,CAACH,cAAc,CAACC,SAAS,EAAEC,gBAAgB,CAAC;MACnF,IAAI,IAAAE,uBAAc,EAAC5C,OAAO,CAAC,EAAE;QACzB,IAAM6C,QAAQ,GAAG4C,mBAAmB,CAAC,IAAI,CAACnG,KAAK,EAAE;UAC7CL,GAAG,EAAE,IAAI,CAACyG,IAAI;UACd3G,MAAM,EAAE,IAAI,CAACQ,QAAQ;UACrBJ,KAAK,EAAE,IAAI,CAACM;QAChB,CAAC,CAAC;QACFO,OAAO,CAAC+C,MAAM,CAACF,QAAQ,CAAC;QACxB,OAAOA,QAAQ;MACnB;MACA,OAAO,IAAI;IACf;EAAC;IAAAnE,GAAA;IAAAmB,KAAA,EApDD,SAAAgE,QAAA,EAAkC;MAC9B,OAAO,UAAU;IACrB;EAAC;IAAAnF,GAAA;IAAAmB,KAAA,EAED,SAAAiE,MAAsBC,IAAkB,EAAgB;MACpD,OAAO,IAAIwB,YAAY,CACnBxB,IAAI,CAACzE,KAAK,EACV;QAAEL,GAAG,EAAE8E,IAAI,CAACvE,KAAK;QAAET,MAAM,EAAEgF,IAAI,CAACxE,QAAQ;QAAEJ,KAAK,EAAE4E,IAAI,CAACtE;MAAQ,CAAC,EAC/DsE,IAAI,CAACC,KACT,CAAC;IACL;EAAC;IAAAtF,GAAA;IAAAmB,KAAA,EAED,SAAAyE,WAA2BC,cAAsC,EAAgB;MAC7E,IAAMR,IAAI,GAAG0B,mBAAmB,CAAClB,cAAc,CAACnG,GAAG,EAAE;QACjDa,GAAG,EAAEsF,cAAc,CAACtF,GAAG;QACvBF,MAAM,EAAEwF,cAAc,CAACxF,MAAM;QAC7BI,KAAK,EAAEoF,cAAc,CAACpF;MAC1B,CAAC,CAAC;MACF4E,IAAI,CAACS,SAAS,CAACD,cAAc,CAACE,MAAM,CAAC;MACrCV,IAAI,CAACW,SAAS,CAACH,cAAc,CAACI,MAAM,CAAC;MACrCZ,IAAI,CAACa,YAAY,CAACL,cAAc,CAACM,SAAS,CAAC;MAC3C,OAAOd,IAAI;IACf;EAAC;IAAArF,GAAA;IAAAmB,KAAA,EAED,SAAAoE,UAAA,EAAkC;MAC9B;MACA,OAAO,IAAI;IACf;EAAC;AAAA,EA5B6BhG,QAAQ;AAwD1C;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASwH,mBAAmBA,CAACrH,GAAW,EAAEE,UAA2B,EAAgB;EACxF,OAAO,IAAA+G,8BAAqB,EAAC,IAAIE,YAAY,CAACnH,GAAG,EAAEE,UAAU,CAAC,CAAC;AACnE;;AAEA;AACA;AACA;AACA;AACA;AACO,SAASqH,eAAeA,CAAC5B,IAAoC,EAAwB;EACxF,OAAOA,IAAI,YAAYwB,YAAY;AACvC;AAEO,IAAMK,mBAEZ,GAAA1H,OAAA,CAAA0H,mBAAA,GAAG,IAAAC,sBAAa,EAAC,qBAAqB,CAAC","ignoreList":[]}
|
|
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","_get2","_getPrototypeOf2","prototype","call","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":[]}
|
package/ListItemNode.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { DOMConversionMap, EditorConfig, ElementNode,
|
|
1
|
+
import { DOMConversionMap, EditorConfig, ElementNode, LexicalNode, NodeKey, ParagraphNode, RangeSelection, SerializedElementNode, Spread } from "lexical";
|
|
2
2
|
export declare type SerializedWebinyListItemNode = Spread<{
|
|
3
3
|
checked: boolean | undefined;
|
|
4
4
|
type: "webiny-listitem";
|
|
@@ -36,7 +36,7 @@ export declare class ListItemNode extends ElementNode {
|
|
|
36
36
|
canInsertAfter(node: LexicalNode): boolean;
|
|
37
37
|
canReplaceWith(replacement: LexicalNode): boolean;
|
|
38
38
|
canMergeWith(node: LexicalNode): boolean;
|
|
39
|
-
extractWithChild(child: LexicalNode, selection: RangeSelection
|
|
39
|
+
extractWithChild(child: LexicalNode, selection: RangeSelection): boolean;
|
|
40
40
|
}
|
|
41
41
|
export declare function $createListItemNode(checked?: boolean): ListItemNode;
|
|
42
42
|
export declare function $isListItemNode(node: LexicalNode | null | undefined): node is ListItemNode;
|
package/ListItemNode.js
CHANGED
|
@@ -109,6 +109,9 @@ var ListItemNode = exports.ListItemNode = /*#__PURE__*/function (_ElementNode) {
|
|
|
109
109
|
replaceWithNode.insertAfter(newList);
|
|
110
110
|
}
|
|
111
111
|
if (includeChildren) {
|
|
112
|
+
if (!(0, _lexical.$isElementNode)(replaceWithNode)) {
|
|
113
|
+
throw Error("includeChildren should only be true for ElementNodes");
|
|
114
|
+
}
|
|
112
115
|
this.getChildren().forEach(function (child) {
|
|
113
116
|
replaceWithNode.append(child);
|
|
114
117
|
});
|
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","_get2","_getPrototypeOf2","prototype","call","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","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 GridSelection,\n LexicalNode,\n NodeKey,\n NodeSelection,\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 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 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(\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: 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":["_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","_get2","_getPrototypeOf2","prototype","call","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":[]}
|
package/ListNode.d.ts
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { DOMConversion, DOMConversionMap, EditorConfig, ElementNode, LexicalNode, NodeKey, SerializedElementNode, Spread } from "lexical";
|
|
2
|
-
import { WebinyTheme } from "@webiny/lexical-theme";
|
|
3
2
|
import { ListNodeTagType } from "@lexical/list/LexicalListNode";
|
|
4
3
|
import { ListType } from "@lexical/list";
|
|
5
4
|
export declare type SerializedWebinyListNode = Spread<{
|
|
@@ -17,24 +16,24 @@ export declare class ListNode extends ElementNode {
|
|
|
17
16
|
__start: number;
|
|
18
17
|
/** @internal */
|
|
19
18
|
__listType: ListType;
|
|
20
|
-
__themeStyleId
|
|
19
|
+
private __themeStyleId;
|
|
21
20
|
constructor(listType: ListType, themeStyleId?: string, start?: number, key?: NodeKey);
|
|
22
21
|
static getType(): string;
|
|
23
|
-
isStyleExistInTheme(theme: WebinyTheme): boolean;
|
|
24
22
|
createDOM(config: EditorConfig): HTMLElement;
|
|
25
23
|
static clone(node: ListNode): ListNode;
|
|
26
|
-
getTag(): ListNodeTagType;
|
|
27
|
-
getListType(): ListType;
|
|
28
|
-
getStart(): number;
|
|
29
24
|
getStyleId(): string;
|
|
30
25
|
static importJSON(serializedNode: SerializedWebinyListNode): ListNode;
|
|
31
26
|
exportJSON(): SerializedWebinyListNode;
|
|
32
27
|
static importDomConversionMap(): DOMConversion<HTMLElement> | null;
|
|
33
28
|
static importDOM(): DOMConversionMap | null;
|
|
34
|
-
setDefaultThemeListStyleByTag(tag: string, theme: WebinyTheme): void;
|
|
35
|
-
hasThemeStyle(): boolean;
|
|
36
29
|
updateDOM(prevNode: ListNode, dom: HTMLElement, config: EditorConfig): boolean;
|
|
37
30
|
extractWithChild(child: LexicalNode): boolean;
|
|
31
|
+
getListType(): ListType;
|
|
32
|
+
getStart(): number;
|
|
33
|
+
private setDefaultThemeListStyleByTag;
|
|
34
|
+
private hasThemeStyle;
|
|
35
|
+
private getTag;
|
|
36
|
+
private isStyleExistInTheme;
|
|
38
37
|
}
|
|
39
38
|
export declare function $createListNode(listType: ListType, themeStyleId?: string, start?: number): ListNode;
|
|
40
39
|
export declare function $isListNode(node: LexicalNode | null | undefined): node is ListNode;
|
package/ListNode.js
CHANGED
|
@@ -41,11 +41,6 @@ var ListNode = exports.ListNode = /*#__PURE__*/function (_ElementNode) {
|
|
|
41
41
|
}
|
|
42
42
|
(0, _inherits2.default)(ListNode, _ElementNode);
|
|
43
43
|
return (0, _createClass2.default)(ListNode, [{
|
|
44
|
-
key: "isStyleExistInTheme",
|
|
45
|
-
value: function isStyleExistInTheme(theme) {
|
|
46
|
-
return theme?.emotionMap ? !!theme?.emotionMap[this.__themeStyleId] : false;
|
|
47
|
-
}
|
|
48
|
-
}, {
|
|
49
44
|
key: "createDOM",
|
|
50
45
|
value: function createDOM(config) {
|
|
51
46
|
var tag = this.__tag;
|
|
@@ -67,21 +62,6 @@ var ListNode = exports.ListNode = /*#__PURE__*/function (_ElementNode) {
|
|
|
67
62
|
dom.setAttribute(TypographyStyleAttrName, this.__themeStyleId);
|
|
68
63
|
return dom;
|
|
69
64
|
}
|
|
70
|
-
}, {
|
|
71
|
-
key: "getTag",
|
|
72
|
-
value: function getTag() {
|
|
73
|
-
return this.__tag;
|
|
74
|
-
}
|
|
75
|
-
}, {
|
|
76
|
-
key: "getListType",
|
|
77
|
-
value: function getListType() {
|
|
78
|
-
return this.__listType;
|
|
79
|
-
}
|
|
80
|
-
}, {
|
|
81
|
-
key: "getStart",
|
|
82
|
-
value: function getStart() {
|
|
83
|
-
return this.__start;
|
|
84
|
-
}
|
|
85
65
|
}, {
|
|
86
66
|
key: "getStyleId",
|
|
87
67
|
value: function getStyleId() {
|
|
@@ -91,7 +71,7 @@ var ListNode = exports.ListNode = /*#__PURE__*/function (_ElementNode) {
|
|
|
91
71
|
key: "exportJSON",
|
|
92
72
|
value: function exportJSON() {
|
|
93
73
|
return (0, _objectSpread2.default)((0, _objectSpread2.default)({}, (0, _get2.default)((0, _getPrototypeOf2.default)(ListNode.prototype), "exportJSON", this).call(this)), {}, {
|
|
94
|
-
themeStyleId: this.
|
|
74
|
+
themeStyleId: this.getStyleId(),
|
|
95
75
|
listType: this.getListType(),
|
|
96
76
|
start: this.getStart(),
|
|
97
77
|
tag: this.getTag(),
|
|
@@ -100,12 +80,43 @@ var ListNode = exports.ListNode = /*#__PURE__*/function (_ElementNode) {
|
|
|
100
80
|
});
|
|
101
81
|
}
|
|
102
82
|
}, {
|
|
103
|
-
key: "
|
|
104
|
-
value:
|
|
83
|
+
key: "updateDOM",
|
|
84
|
+
value: function updateDOM(prevNode, dom, config) {
|
|
85
|
+
var wTheme = config.theme;
|
|
86
|
+
if (prevNode.__tag !== this.__tag) {
|
|
87
|
+
return true;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
// if styleId is not set or user removed from theme, set default style.
|
|
91
|
+
if (!this.hasThemeStyle() || !this.isStyleExistInTheme(wTheme)) {
|
|
92
|
+
this.setDefaultThemeListStyleByTag(this.__tag, wTheme);
|
|
93
|
+
}
|
|
94
|
+
setListThemeClassNames(dom, config.theme, this, this.__themeStyleId);
|
|
95
|
+
dom.setAttribute(TypographyStyleAttrName, this.__themeStyleId);
|
|
96
|
+
return false;
|
|
97
|
+
}
|
|
98
|
+
}, {
|
|
99
|
+
key: "extractWithChild",
|
|
100
|
+
value: function extractWithChild(child) {
|
|
101
|
+
return (0, _ListItemNode.$isListItemNode)(child);
|
|
102
|
+
}
|
|
103
|
+
}, {
|
|
104
|
+
key: "getListType",
|
|
105
|
+
value: function getListType() {
|
|
106
|
+
return this.__listType;
|
|
107
|
+
}
|
|
108
|
+
}, {
|
|
109
|
+
key: "getStart",
|
|
110
|
+
value: function getStart() {
|
|
111
|
+
return this.__start;
|
|
112
|
+
}
|
|
113
|
+
|
|
105
114
|
/*
|
|
106
115
|
* Set default styleId from first style that is found in the theme that contains current ul or ol tag
|
|
107
116
|
*/
|
|
108
|
-
|
|
117
|
+
}, {
|
|
118
|
+
key: "setDefaultThemeListStyleByTag",
|
|
119
|
+
value: function setDefaultThemeListStyleByTag(tag, theme) {
|
|
109
120
|
if (!tag) {
|
|
110
121
|
return;
|
|
111
122
|
}
|
|
@@ -124,25 +135,14 @@ var ListNode = exports.ListNode = /*#__PURE__*/function (_ElementNode) {
|
|
|
124
135
|
return !!this.__themeStyleId;
|
|
125
136
|
}
|
|
126
137
|
}, {
|
|
127
|
-
key: "
|
|
128
|
-
value: function
|
|
129
|
-
|
|
130
|
-
if (prevNode.__tag !== this.__tag) {
|
|
131
|
-
return true;
|
|
132
|
-
}
|
|
133
|
-
|
|
134
|
-
// if styleId is not set or user removed from theme, set default style.
|
|
135
|
-
if (!this.hasThemeStyle() || !this.isStyleExistInTheme(wTheme)) {
|
|
136
|
-
this.setDefaultThemeListStyleByTag(this.__tag, wTheme);
|
|
137
|
-
}
|
|
138
|
-
setListThemeClassNames(dom, config.theme, this, this.__themeStyleId);
|
|
139
|
-
dom.setAttribute(TypographyStyleAttrName, this.__themeStyleId);
|
|
140
|
-
return false;
|
|
138
|
+
key: "getTag",
|
|
139
|
+
value: function getTag() {
|
|
140
|
+
return this.__tag;
|
|
141
141
|
}
|
|
142
142
|
}, {
|
|
143
|
-
key: "
|
|
144
|
-
value: function
|
|
145
|
-
return
|
|
143
|
+
key: "isStyleExistInTheme",
|
|
144
|
+
value: function isStyleExistInTheme(theme) {
|
|
145
|
+
return theme?.emotionMap ? !!theme?.emotionMap[this.__themeStyleId] : false;
|
|
146
146
|
}
|
|
147
147
|
}], [{
|
|
148
148
|
key: "getType",
|
package/ListNode.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_lexical","require","_lexicalTheme","_utils","_listNode","_ListItemNode","TypographyStyleAttrName","ListNode","exports","_ElementNode","listType","themeStyleId","start","key","_this","_classCallCheck2","default","_callSuper2","__themeStyleId","_listType","TAG_TO_WEBINY_LIST_TYPE","__listType","__tag","__start","_inherits2","_createClass2","value","isStyleExistInTheme","theme","emotionMap","createDOM","config","tag","dom","document","createElement","wTheme","setAttribute","String","hasThemeStyle","setDefaultThemeListStyleByTag","__lexicalListType","setListThemeClassNames","getTag","getListType","getStart","getStyleId","exportJSON","_objectSpread2","_get2","_getPrototypeOf2","prototype","call","type","version","themeEmotionMap","style","findTypographyStyleByHtmlTag","id","updateDOM","prevNode","extractWithChild","child","$isListItemNode","getType","clone","node","__key","importJSON","serializedNode","$createListNode","setFormat","format","setIndent","indent","setDirection","direction","importDomConversionMap","conversion","convertListNode","priority","importDOM","_this2","ol","ul","ElementNode","editorTheme","editorThemeClasses","classesToAdd","classesToRemove","listTheme","list","undefined","listLevelsClassNames","concat","listDepth","$getListDepth","normalizedListDepth","length","listLevelClassName","listClassName","className","nestedListClassName","nestedListTheme","nested","push","listItemClasses","split","apply","_toConsumableArray2","i","nestedListItemClasses","removeClassNamesFromElement","addClassNamesToElement","normalizeChildren","nodes","normalizedListItems","getChildren","forEach","$isListNode","wrapInListItem","domNode","nodeName","toLowerCase","after","arguments"],"sources":["ListNode.ts"],"sourcesContent":["import {\n DOMConversion,\n DOMConversionMap,\n DOMConversionOutput,\n EditorConfig,\n ElementNode,\n LexicalNode,\n NodeKey,\n SerializedElementNode,\n Spread\n} from \"lexical\";\nimport { EditorTheme, WebinyTheme, findTypographyStyleByHtmlTag } from \"@webiny/lexical-theme\";\nimport { addClassNamesToElement, removeClassNamesFromElement } from \"@lexical/utils\";\nimport { ListNodeTagType } from \"@lexical/list/LexicalListNode\";\nimport { $getListDepth, wrapInListItem } from \"~/utils/listNode\";\nimport { $isListItemNode, ListItemNode } from \"./ListItemNode\";\nimport { ListType } from \"@lexical/list\";\n\nconst TypographyStyleAttrName = \"data-theme-list-style-id\";\n\nexport type SerializedWebinyListNode = Spread<\n {\n themeStyleId: string;\n listType: ListType;\n start: number;\n tag: ListNodeTagType;\n type: \"webiny-list\";\n version: 1;\n },\n SerializedElementNode\n>;\n\nexport class ListNode extends ElementNode {\n /** @internal */\n __tag: ListNodeTagType;\n /** @internal */\n __start: number;\n /** @internal */\n __listType: ListType;\n\n __themeStyleId: string;\n\n constructor(listType: ListType, themeStyleId?: string, start?: number, key?: NodeKey) {\n super(key);\n this.__themeStyleId = themeStyleId || \"\";\n const _listType = TAG_TO_WEBINY_LIST_TYPE[listType] || listType;\n this.__listType = _listType;\n this.__tag = _listType === \"number\" ? \"ol\" : \"ul\";\n this.__start = start || 1;\n }\n\n static override getType() {\n return \"webiny-list\";\n }\n\n isStyleExistInTheme(theme: WebinyTheme): boolean {\n return theme?.emotionMap ? !!theme?.emotionMap[this.__themeStyleId] : false;\n }\n\n override createDOM(config: EditorConfig): HTMLElement {\n const tag = this.__tag;\n const dom = document.createElement(tag);\n const wTheme = config.theme as WebinyTheme;\n\n if (this.__start !== 1) {\n dom.setAttribute(\"start\", String(this.__start));\n }\n\n // If styleId is not set or user removed from theme, set default style\n if (!this.hasThemeStyle() || !this.isStyleExistInTheme(wTheme)) {\n this.setDefaultThemeListStyleByTag(this.__tag, wTheme);\n }\n\n // @ts-expect-error Internal field.\n dom.__lexicalListType = this.__listType;\n const theme = config.theme as EditorTheme;\n setListThemeClassNames(dom, theme, this, this.__themeStyleId);\n dom.setAttribute(TypographyStyleAttrName, this.__themeStyleId);\n return dom;\n }\n\n static override clone(node: ListNode): ListNode {\n return new ListNode(node.getListType(), node.getStyleId(), node.getStart(), node.__key);\n }\n\n getTag(): ListNodeTagType {\n return this.__tag;\n }\n\n getListType(): ListType {\n return this.__listType;\n }\n\n getStart(): number {\n return this.__start;\n }\n\n getStyleId(): string {\n return this.__themeStyleId;\n }\n\n static override importJSON(serializedNode: SerializedWebinyListNode): ListNode {\n const node = $createListNode(\n serializedNode.listType,\n serializedNode.themeStyleId,\n serializedNode.start\n );\n node.setFormat(serializedNode.format);\n node.setIndent(serializedNode.indent);\n node.setDirection(serializedNode.direction);\n return node;\n }\n\n override exportJSON(): SerializedWebinyListNode {\n return {\n ...super.exportJSON(),\n themeStyleId: this.__themeStyleId ?? \"\",\n listType: this.getListType(),\n start: this.getStart(),\n tag: this.getTag(),\n type: \"webiny-list\",\n version: 1\n };\n }\n\n static importDomConversionMap(): DOMConversion<HTMLElement> | null {\n return {\n conversion: convertListNode,\n priority: 0\n };\n }\n\n static importDOM(): DOMConversionMap | null {\n return {\n ol: () => {\n return this.importDomConversionMap();\n },\n ul: () => {\n return this.importDomConversionMap();\n }\n };\n }\n\n /*\n * Set default styleId from first style that is found in the theme that contains current ul or ol tag\n */\n setDefaultThemeListStyleByTag(tag: string, theme: WebinyTheme) {\n if (!tag) {\n return;\n }\n\n const themeEmotionMap = theme?.emotionMap;\n if (!themeEmotionMap) {\n return;\n }\n\n const style = findTypographyStyleByHtmlTag(tag, themeEmotionMap);\n\n if (style) {\n this.__themeStyleId = style.id;\n }\n }\n\n hasThemeStyle(): boolean {\n return !!this.__themeStyleId;\n }\n\n override updateDOM(prevNode: ListNode, dom: HTMLElement, config: EditorConfig): boolean {\n const wTheme = config.theme as WebinyTheme;\n\n if (prevNode.__tag !== this.__tag) {\n return true;\n }\n\n // if styleId is not set or user removed from theme, set default style.\n if (!this.hasThemeStyle() || !this.isStyleExistInTheme(wTheme)) {\n this.setDefaultThemeListStyleByTag(this.__tag, wTheme);\n }\n\n setListThemeClassNames(dom, config.theme, this, this.__themeStyleId);\n dom.setAttribute(TypographyStyleAttrName, this.__themeStyleId);\n return false;\n }\n\n override extractWithChild(child: LexicalNode): boolean {\n return $isListItemNode(child);\n }\n}\n\nfunction setListThemeClassNames(\n dom: HTMLElement,\n editorTheme: EditorTheme,\n node: ListNode,\n themeStyleId: string\n): void {\n const editorThemeClasses = editorTheme;\n const classesToAdd = [];\n const classesToRemove = [];\n const listTheme = editorThemeClasses.list;\n const emotionMap = editorTheme?.emotionMap || {};\n if (listTheme !== undefined) {\n const listLevelsClassNames = listTheme[`${node.__tag}Depth`] || [];\n const listDepth = $getListDepth(node) - 1;\n const normalizedListDepth = listDepth % listLevelsClassNames.length;\n const listLevelClassName = listLevelsClassNames[normalizedListDepth];\n const listClassName = `${listTheme[node.__tag]} ${\n emotionMap[themeStyleId]?.className ?? \"\"\n }`;\n let nestedListClassName;\n const nestedListTheme = listTheme.nested;\n\n if (nestedListTheme !== undefined && nestedListTheme.list) {\n nestedListClassName = nestedListTheme.list;\n }\n\n if (listClassName) {\n classesToAdd.push(listClassName);\n }\n\n if (listLevelClassName !== undefined) {\n const listItemClasses = listLevelClassName.split(\" \");\n classesToAdd.push(...listItemClasses);\n for (let i = 0; i < listLevelsClassNames.length; i++) {\n if (i !== normalizedListDepth) {\n classesToRemove.push(node.__tag + i);\n }\n }\n }\n\n if (nestedListClassName !== undefined) {\n const nestedListItemClasses = nestedListClassName.split(\" \");\n\n if (listDepth > 1) {\n classesToAdd.push(...nestedListItemClasses);\n } else {\n classesToRemove.push(...nestedListItemClasses);\n }\n }\n }\n\n if (classesToRemove.length > 0) {\n removeClassNamesFromElement(dom, ...classesToRemove);\n }\n\n if (classesToAdd.length > 0) {\n addClassNamesToElement(dom, ...classesToAdd);\n }\n}\n\n/*\n * This function normalizes the children of a ListNode after the conversion from HTML,\n * ensuring that they are all ListItemNodes and contain either a single nested ListNode\n * or some other inline content.\n */\nfunction normalizeChildren(nodes: Array<ListNode>): Array<ListItemNode> {\n const normalizedListItems: Array<ListItemNode> = [];\n for (let i = 0; i < nodes.length; i++) {\n const node = nodes[i];\n if ($isListItemNode(node)) {\n normalizedListItems.push(node);\n node.getChildren().forEach(child => {\n if ($isListNode(child)) {\n normalizedListItems.push(wrapInListItem(child));\n }\n });\n } else {\n normalizedListItems.push(wrapInListItem(node));\n }\n }\n return normalizedListItems;\n}\n\nfunction convertListNode(domNode: Node): DOMConversionOutput {\n const nodeName = domNode.nodeName.toLowerCase();\n let node = null;\n\n if (nodeName === \"ol\") {\n node = $createListNode(\"number\");\n } else if (nodeName === \"ul\") {\n node = $createListNode(\"bullet\");\n }\n\n return {\n // @ts-expect-error\n after: normalizeChildren,\n node\n };\n}\n\nconst TAG_TO_WEBINY_LIST_TYPE: Record<string, ListType> = {\n ol: \"number\",\n ul: \"bullet\"\n};\n\nexport function $createListNode(listType: ListType, themeStyleId?: string, start = 1): ListNode {\n return new ListNode(listType, themeStyleId, start);\n}\n\nexport function $isListNode(node: LexicalNode | null | undefined): node is ListNode {\n return node instanceof ListNode;\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_lexical","require","_lexicalTheme","_utils","_listNode","_ListItemNode","TypographyStyleAttrName","ListNode","exports","_ElementNode","listType","themeStyleId","start","key","_this","_classCallCheck2","default","_callSuper2","__themeStyleId","_listType","TAG_TO_WEBINY_LIST_TYPE","__listType","__tag","__start","_inherits2","_createClass2","value","createDOM","config","tag","dom","document","createElement","wTheme","theme","setAttribute","String","hasThemeStyle","isStyleExistInTheme","setDefaultThemeListStyleByTag","__lexicalListType","setListThemeClassNames","getStyleId","exportJSON","_objectSpread2","_get2","_getPrototypeOf2","prototype","call","getListType","getStart","getTag","type","version","updateDOM","prevNode","extractWithChild","child","$isListItemNode","themeEmotionMap","emotionMap","style","findTypographyStyleByHtmlTag","id","getType","clone","node","__key","importJSON","serializedNode","$createListNode","setFormat","format","setIndent","indent","setDirection","direction","importDomConversionMap","conversion","convertListNode","priority","importDOM","_this2","ol","ul","ElementNode","editorTheme","editorThemeClasses","classesToAdd","classesToRemove","listTheme","list","undefined","listLevelsClassNames","concat","listDepth","$getListDepth","normalizedListDepth","length","listLevelClassName","listClassName","className","nestedListClassName","nestedListTheme","nested","push","listItemClasses","split","apply","_toConsumableArray2","i","nestedListItemClasses","removeClassNamesFromElement","addClassNamesToElement","normalizeChildren","nodes","normalizedListItems","getChildren","forEach","$isListNode","wrapInListItem","domNode","nodeName","toLowerCase","after","arguments"],"sources":["ListNode.ts"],"sourcesContent":["import {\n DOMConversion,\n DOMConversionMap,\n DOMConversionOutput,\n EditorConfig,\n ElementNode,\n LexicalNode,\n NodeKey,\n SerializedElementNode,\n Spread\n} from \"lexical\";\nimport { EditorTheme, WebinyTheme, findTypographyStyleByHtmlTag } from \"@webiny/lexical-theme\";\nimport { addClassNamesToElement, removeClassNamesFromElement } from \"@lexical/utils\";\nimport { ListNodeTagType } from \"@lexical/list/LexicalListNode\";\nimport { $getListDepth, wrapInListItem } from \"~/utils/listNode\";\nimport { $isListItemNode, ListItemNode } from \"./ListItemNode\";\nimport { ListType } from \"@lexical/list\";\n\nconst TypographyStyleAttrName = \"data-theme-list-style-id\";\n\nexport type SerializedWebinyListNode = Spread<\n {\n themeStyleId: string;\n listType: ListType;\n start: number;\n tag: ListNodeTagType;\n type: \"webiny-list\";\n version: 1;\n },\n SerializedElementNode\n>;\n\nexport class ListNode extends ElementNode {\n /** @internal */\n __tag: ListNodeTagType;\n /** @internal */\n __start: number;\n /** @internal */\n __listType: ListType;\n\n private __themeStyleId: string;\n\n constructor(listType: ListType, themeStyleId?: string, start?: number, key?: NodeKey) {\n super(key);\n this.__themeStyleId = themeStyleId || \"\";\n const _listType = TAG_TO_WEBINY_LIST_TYPE[listType] || listType;\n this.__listType = _listType;\n this.__tag = _listType === \"number\" ? \"ol\" : \"ul\";\n this.__start = start || 1;\n }\n\n static override getType() {\n return \"webiny-list\";\n }\n\n override createDOM(config: EditorConfig): HTMLElement {\n const tag = this.__tag;\n const dom = document.createElement(tag);\n const wTheme = config.theme as WebinyTheme;\n\n if (this.__start !== 1) {\n dom.setAttribute(\"start\", String(this.__start));\n }\n\n // If styleId is not set or user removed from theme, set default style\n if (!this.hasThemeStyle() || !this.isStyleExistInTheme(wTheme)) {\n this.setDefaultThemeListStyleByTag(this.__tag, wTheme);\n }\n\n // @ts-expect-error Internal field.\n dom.__lexicalListType = this.__listType;\n const theme = config.theme as EditorTheme;\n setListThemeClassNames(dom, theme, this, this.__themeStyleId);\n dom.setAttribute(TypographyStyleAttrName, this.__themeStyleId);\n return dom;\n }\n\n static override clone(node: ListNode): ListNode {\n return new ListNode(node.getListType(), node.getStyleId(), node.getStart(), node.__key);\n }\n\n getStyleId(): string {\n return this.__themeStyleId;\n }\n\n static override importJSON(serializedNode: SerializedWebinyListNode): ListNode {\n const node = $createListNode(\n serializedNode.listType,\n serializedNode.themeStyleId,\n serializedNode.start\n );\n node.setFormat(serializedNode.format);\n node.setIndent(serializedNode.indent);\n node.setDirection(serializedNode.direction);\n return node;\n }\n\n override exportJSON(): SerializedWebinyListNode {\n return {\n ...super.exportJSON(),\n themeStyleId: this.getStyleId(),\n listType: this.getListType(),\n start: this.getStart(),\n tag: this.getTag(),\n type: \"webiny-list\",\n version: 1\n };\n }\n\n static importDomConversionMap(): DOMConversion<HTMLElement> | null {\n return {\n conversion: convertListNode,\n priority: 0\n };\n }\n\n static override importDOM(): DOMConversionMap | null {\n return {\n ol: () => {\n return this.importDomConversionMap();\n },\n ul: () => {\n return this.importDomConversionMap();\n }\n };\n }\n\n override updateDOM(prevNode: ListNode, dom: HTMLElement, config: EditorConfig): boolean {\n const wTheme = config.theme as WebinyTheme;\n\n if (prevNode.__tag !== this.__tag) {\n return true;\n }\n\n // if styleId is not set or user removed from theme, set default style.\n if (!this.hasThemeStyle() || !this.isStyleExistInTheme(wTheme)) {\n this.setDefaultThemeListStyleByTag(this.__tag, wTheme);\n }\n\n setListThemeClassNames(dom, config.theme, this, this.__themeStyleId);\n dom.setAttribute(TypographyStyleAttrName, this.__themeStyleId);\n return false;\n }\n\n override extractWithChild(child: LexicalNode): boolean {\n return $isListItemNode(child);\n }\n\n public getListType(): ListType {\n return this.__listType;\n }\n\n public getStart(): number {\n return this.__start;\n }\n\n /*\n * Set default styleId from first style that is found in the theme that contains current ul or ol tag\n */\n private setDefaultThemeListStyleByTag(tag: string, theme: WebinyTheme) {\n if (!tag) {\n return;\n }\n\n const themeEmotionMap = theme?.emotionMap;\n if (!themeEmotionMap) {\n return;\n }\n\n const style = findTypographyStyleByHtmlTag(tag, themeEmotionMap);\n\n if (style) {\n this.__themeStyleId = style.id;\n }\n }\n\n private hasThemeStyle(): boolean {\n return !!this.__themeStyleId;\n }\n\n private getTag(): ListNodeTagType {\n return this.__tag;\n }\n\n private isStyleExistInTheme(theme: WebinyTheme): boolean {\n return theme?.emotionMap ? !!theme?.emotionMap[this.__themeStyleId] : false;\n }\n}\n\nfunction setListThemeClassNames(\n dom: HTMLElement,\n editorTheme: EditorTheme,\n node: ListNode,\n themeStyleId: string\n): void {\n const editorThemeClasses = editorTheme;\n const classesToAdd = [];\n const classesToRemove = [];\n const listTheme = editorThemeClasses.list;\n const emotionMap = editorTheme?.emotionMap || {};\n if (listTheme !== undefined) {\n const listLevelsClassNames = listTheme[`${node.__tag}Depth`] || [];\n const listDepth = $getListDepth(node) - 1;\n const normalizedListDepth = listDepth % listLevelsClassNames.length;\n const listLevelClassName = listLevelsClassNames[normalizedListDepth];\n const listClassName = `${listTheme[node.__tag]} ${\n emotionMap[themeStyleId]?.className ?? \"\"\n }`;\n let nestedListClassName;\n const nestedListTheme = listTheme.nested;\n\n if (nestedListTheme !== undefined && nestedListTheme.list) {\n nestedListClassName = nestedListTheme.list;\n }\n\n if (listClassName) {\n classesToAdd.push(listClassName);\n }\n\n if (listLevelClassName !== undefined) {\n const listItemClasses = listLevelClassName.split(\" \");\n classesToAdd.push(...listItemClasses);\n for (let i = 0; i < listLevelsClassNames.length; i++) {\n if (i !== normalizedListDepth) {\n classesToRemove.push(node.__tag + i);\n }\n }\n }\n\n if (nestedListClassName !== undefined) {\n const nestedListItemClasses = nestedListClassName.split(\" \");\n\n if (listDepth > 1) {\n classesToAdd.push(...nestedListItemClasses);\n } else {\n classesToRemove.push(...nestedListItemClasses);\n }\n }\n }\n\n if (classesToRemove.length > 0) {\n removeClassNamesFromElement(dom, ...classesToRemove);\n }\n\n if (classesToAdd.length > 0) {\n addClassNamesToElement(dom, ...classesToAdd);\n }\n}\n\n/*\n * This function normalizes the children of a ListNode after the conversion from HTML,\n * ensuring that they are all ListItemNodes and contain either a single nested ListNode\n * or some other inline content.\n */\nfunction normalizeChildren(nodes: Array<ListNode>): Array<ListItemNode> {\n const normalizedListItems: Array<ListItemNode> = [];\n for (let i = 0; i < nodes.length; i++) {\n const node = nodes[i];\n if ($isListItemNode(node)) {\n normalizedListItems.push(node);\n node.getChildren().forEach(child => {\n if ($isListNode(child)) {\n normalizedListItems.push(wrapInListItem(child));\n }\n });\n } else {\n normalizedListItems.push(wrapInListItem(node));\n }\n }\n return normalizedListItems;\n}\n\nfunction convertListNode(domNode: Node): DOMConversionOutput {\n const nodeName = domNode.nodeName.toLowerCase();\n let node = null;\n\n if (nodeName === \"ol\") {\n node = $createListNode(\"number\");\n } else if (nodeName === \"ul\") {\n node = $createListNode(\"bullet\");\n }\n\n return {\n // @ts-expect-error\n after: normalizeChildren,\n node\n };\n}\n\nconst TAG_TO_WEBINY_LIST_TYPE: Record<string, ListType> = {\n ol: \"number\",\n ul: \"bullet\"\n};\n\nexport function $createListNode(listType: ListType, themeStyleId?: string, start = 1): ListNode {\n return new ListNode(listType, themeStyleId, start);\n}\n\nexport function $isListNode(node: LexicalNode | null | undefined): node is ListNode {\n return node instanceof ListNode;\n}\n"],"mappings":"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","ignoreList":[]}
|
package/ParagraphNode.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { DOMConversionMap, LexicalNode, NodeKey, ParagraphNode as BaseParagraphNode, SerializedParagraphNode as SerializedBaseParagraphNode, Spread } from "lexical";
|
|
2
2
|
import { EditorConfig } from "lexical";
|
|
3
|
-
import {
|
|
3
|
+
import { ThemeEmotionMap } from "@webiny/lexical-theme";
|
|
4
4
|
import { TypographyStylesNode, ThemeStyleValue, TextNodeThemeStyles } from "./types";
|
|
5
5
|
export declare type SerializeParagraphNode = Spread<{
|
|
6
6
|
styles: ThemeStyleValue[];
|
|
@@ -10,17 +10,15 @@ export declare class ParagraphNode extends BaseParagraphNode implements TextNode
|
|
|
10
10
|
__styles: ThemeStyleValue[];
|
|
11
11
|
constructor(typographyStyleId?: string, key?: NodeKey);
|
|
12
12
|
protected setDefaultTypography(themeEmotionMap: ThemeEmotionMap): void;
|
|
13
|
-
setTypography(typographyStyleId: string): this;
|
|
14
13
|
getTypographyStyleId(): string | undefined;
|
|
15
|
-
|
|
16
|
-
hasTypographyStyle(): boolean;
|
|
14
|
+
private hasTypographyStyle;
|
|
17
15
|
getThemeStyles(): ThemeStyleValue[];
|
|
18
16
|
setThemeStyles(styles: ThemeStyleValue[]): this;
|
|
19
17
|
static getType(): string;
|
|
20
18
|
static clone(node: ParagraphNode): ParagraphNode;
|
|
21
|
-
|
|
19
|
+
private updateElementWithThemeClasses;
|
|
22
20
|
createDOM(config: EditorConfig): HTMLElement;
|
|
23
|
-
updateDOM(prevNode:
|
|
21
|
+
updateDOM(prevNode: ParagraphNode, dom: HTMLElement, config: EditorConfig): boolean;
|
|
24
22
|
static importDOM(): DOMConversionMap | null;
|
|
25
23
|
static importJSON(serializedNode: SerializeParagraphNode): BaseParagraphNode;
|
|
26
24
|
exportJSON(): SerializeParagraphNode;
|