@webiny/lexical-nodes 5.39.0-beta.1 → 5.39.0-beta.3
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.js +2 -4
- package/FontColorNode.js.map +1 -1
- package/HeadingNode.js +2 -2
- package/HeadingNode.js.map +1 -1
- package/ImageNode.js +1 -3
- package/ImageNode.js.map +1 -1
- package/ListItemNode.js +1 -1
- package/ListItemNode.js.map +1 -1
- package/ListNode.js +7 -11
- package/ListNode.js.map +1 -1
- package/ParagraphNode.js +2 -2
- package/ParagraphNode.js.map +1 -1
- package/QuoteNode.js +6 -7
- package/QuoteNode.js.map +1 -1
- package/TypographyNode.js +1 -1
- package/TypographyNode.js.map +1 -1
- package/package.json +5 -5
- package/utils/formatList.js +2 -2
- package/utils/formatList.js.map +1 -1
- package/utils/listNode.js +3 -3
- package/utils/listNode.js.map +1 -1
package/FontColorNode.js
CHANGED
|
@@ -45,10 +45,9 @@ var FontColorNode = /*#__PURE__*/function (_TextNode) {
|
|
|
45
45
|
}, {
|
|
46
46
|
key: "addColorValueToHTMLElement",
|
|
47
47
|
value: function addColorValueToHTMLElement(element, theme) {
|
|
48
|
-
var _theme$styles;
|
|
49
48
|
var hasThemeColor = this.__themeColor !== "custom";
|
|
50
49
|
// get the updated color from webiny theme
|
|
51
|
-
if (hasThemeColor && theme
|
|
50
|
+
if (hasThemeColor && theme?.styles?.colors) {
|
|
52
51
|
this.__color = theme.styles.colors[this.__themeColor];
|
|
53
52
|
}
|
|
54
53
|
element.setAttribute(FontColorNodeAttrName, this.__themeColor);
|
|
@@ -58,12 +57,11 @@ var FontColorNode = /*#__PURE__*/function (_TextNode) {
|
|
|
58
57
|
}, {
|
|
59
58
|
key: "updateDOM",
|
|
60
59
|
value: function updateDOM(prevNode, dom, config) {
|
|
61
|
-
var _theme$styles2;
|
|
62
60
|
var theme = config.theme;
|
|
63
61
|
var isUpdated = (0, _get2.default)((0, _getPrototypeOf2.default)(FontColorNode.prototype), "updateDOM", this).call(this, prevNode, dom, config);
|
|
64
62
|
var hasThemeColor = this.__themeColor !== "custom";
|
|
65
63
|
// get the updated color from webiny theme
|
|
66
|
-
if (hasThemeColor && theme
|
|
64
|
+
if (hasThemeColor && theme?.styles?.colors) {
|
|
67
65
|
this.__color = theme.styles.colors[this.__themeColor];
|
|
68
66
|
}
|
|
69
67
|
dom.setAttribute(FontColorNodeAttrName, this.__themeColor);
|
package/FontColorNode.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_lexical","require","ADD_FONT_COLOR_COMMAND","createCommand","exports","FontColorNodeAttrName","FontColorNode","_TextNode","_inherits2","default","_super","_createSuper2","text","color","themeColor","key","_this","_classCallCheck2","call","__themeColor","__color","_createClass2","value","exportJSON","_objectSpread2","_get2","_getPrototypeOf2","prototype","type","version","addColorValueToHTMLElement","element","theme","
|
|
1
|
+
{"version":3,"names":["_lexical","require","ADD_FONT_COLOR_COMMAND","createCommand","exports","FontColorNodeAttrName","FontColorNode","_TextNode","_inherits2","default","_super","_createSuper2","text","color","themeColor","key","_this","_classCallCheck2","call","__themeColor","__color","_createClass2","value","exportJSON","_objectSpread2","_get2","_getPrototypeOf2","prototype","type","version","addColorValueToHTMLElement","element","theme","hasThemeColor","styles","colors","setAttribute","style","updateDOM","prevNode","dom","config","isUpdated","getColorStyle","createDOM","getType","clone","node","__text","__key","importJSON","serializedNode","setTextContent","setFormat","format","setDetail","detail","setMode","mode","setStyle","TextNode","$createFontColorNode","$isFontColorNode","$applyStylesToNode","nodeStyleProvider"],"sources":["FontColorNode.ts"],"sourcesContent":["import {\n createCommand,\n EditorConfig,\n LexicalCommand,\n LexicalEditor,\n LexicalNode,\n NodeKey,\n RangeSelection,\n SerializedTextNode,\n Spread,\n TextNode\n} from \"lexical\";\nimport { EditorTheme } from \"@webiny/lexical-theme\";\n\nexport const ADD_FONT_COLOR_COMMAND: LexicalCommand<FontColorPayload> =\n createCommand(\"ADD_FONT_COLOR_COMMAND\");\nconst FontColorNodeAttrName = \"data-theme-font-color-name\";\n\nexport interface FontColorPayload {\n // This color can be hex string\n color: string;\n // webiny theme color variable like color1, color2...\n themeColorName: string | undefined;\n caption?: LexicalEditor;\n key?: NodeKey;\n}\n\ntype ThemeStyleColorName = string;\ntype ThemeColor = \"custom\" | ThemeStyleColorName;\n\nexport type SerializedFontColorNode = Spread<\n {\n themeColor: ThemeColor;\n color: string;\n type: \"font-color-node\";\n version: 1;\n },\n SerializedTextNode\n>;\n\n/**\n * Main responsibility of this node is to apply custom or Webiny theme color to selected text.\n * Extends the original TextNode node to add additional transformation and support for webiny theme font color.\n */\nexport class FontColorNode extends TextNode {\n __themeColor: ThemeColor;\n __color: string;\n\n constructor(text: string, color: string, themeColor?: ThemeColor, key?: NodeKey) {\n super(text, key);\n this.__themeColor = themeColor || \"custom\";\n this.__color = color;\n }\n\n static override getType(): string {\n return \"font-color-node\";\n }\n\n static override clone(node: FontColorNode): FontColorNode {\n return new FontColorNode(node.__text, node.__color, node.__themeColor, node.__key);\n }\n\n static override importJSON(serializedNode: SerializedFontColorNode): TextNode {\n const node = new FontColorNode(\n serializedNode.text,\n serializedNode.color,\n serializedNode.themeColor\n );\n node.setTextContent(serializedNode.text);\n node.setFormat(serializedNode.format);\n node.setDetail(serializedNode.detail);\n node.setMode(serializedNode.mode);\n node.setStyle(serializedNode.style);\n return node;\n }\n\n override exportJSON(): SerializedFontColorNode {\n return {\n ...super.exportJSON(),\n themeColor: this.__themeColor,\n color: this.__color,\n type: \"font-color-node\",\n version: 1\n };\n }\n\n addColorValueToHTMLElement(element: HTMLElement, theme: EditorTheme): HTMLElement {\n const hasThemeColor = this.__themeColor !== \"custom\";\n // get the updated color from webiny theme\n if (hasThemeColor && theme?.styles?.colors) {\n this.__color = theme.styles.colors[this.__themeColor];\n }\n\n element.setAttribute(FontColorNodeAttrName, this.__themeColor);\n element.style.color = this.__color;\n return element;\n }\n\n override updateDOM(prevNode: FontColorNode, dom: HTMLElement, config: EditorConfig): boolean {\n const theme = config.theme;\n const isUpdated = super.updateDOM(prevNode, dom, config);\n const hasThemeColor = this.__themeColor !== \"custom\";\n // get the updated color from webiny theme\n if (hasThemeColor && theme?.styles?.colors) {\n this.__color = theme.styles.colors[this.__themeColor];\n }\n\n dom.setAttribute(FontColorNodeAttrName, this.__themeColor);\n dom.style.color = this.__color;\n return isUpdated;\n }\n\n getColorStyle(): { color: string; themeColor: ThemeColor } {\n return {\n color: this.__color,\n themeColor: this.__themeColor\n };\n }\n\n override createDOM(config: EditorConfig): HTMLElement {\n const element = super.createDOM(config);\n return this.addColorValueToHTMLElement(element, config.theme);\n }\n}\n\nexport const $createFontColorNode = (\n text: string,\n color: string,\n themeColor?: ThemeColor,\n key?: NodeKey\n): FontColorNode => {\n return new FontColorNode(text, color, themeColor, key);\n};\n\nexport const $isFontColorNode = (node: LexicalNode): node is FontColorNode => {\n return node instanceof FontColorNode;\n};\n\nexport function $applyStylesToNode(node: FontColorNode, nodeStyleProvider: RangeSelection) {\n node.setFormat(nodeStyleProvider.format);\n node.setStyle(nodeStyleProvider.style);\n}\n"],"mappings":";;;;;;;;;;;;;;;AAAA,IAAAA,QAAA,GAAAC,OAAA;AAcO,IAAMC,sBAAwD,GACjE,IAAAC,sBAAa,EAAC,wBAAwB,CAAC;AAACC,OAAA,CAAAF,sBAAA,GAAAA,sBAAA;AAC5C,IAAMG,qBAAqB,GAAG,4BAA4B;AAwB1D;AACA;AACA;AACA;AAHA,IAIaC,aAAa,0BAAAC,SAAA;EAAA,IAAAC,UAAA,CAAAC,OAAA,EAAAH,aAAA,EAAAC,SAAA;EAAA,IAAAG,MAAA,OAAAC,aAAA,CAAAF,OAAA,EAAAH,aAAA;EAItB,SAAAA,cAAYM,IAAY,EAAEC,KAAa,EAAEC,UAAuB,EAAEC,GAAa,EAAE;IAAA,IAAAC,KAAA;IAAA,IAAAC,gBAAA,CAAAR,OAAA,QAAAH,aAAA;IAC7EU,KAAA,GAAAN,MAAA,CAAAQ,IAAA,OAAMN,IAAI,EAAEG,GAAG;IACfC,KAAA,CAAKG,YAAY,GAAGL,UAAU,IAAI,QAAQ;IAC1CE,KAAA,CAAKI,OAAO,GAAGP,KAAK;IAAC,OAAAG,KAAA;EACzB;EAAC,IAAAK,aAAA,CAAAZ,OAAA,EAAAH,aAAA;IAAAS,GAAA;IAAAO,KAAA,EAwBD,SAAAC,WAAA,EAA+C;MAC3C,WAAAC,cAAA,CAAAf,OAAA,MAAAe,cAAA,CAAAf,OAAA,UAAAgB,KAAA,CAAAhB,OAAA,MAAAiB,gBAAA,CAAAjB,OAAA,EAAAH,aAAA,CAAAqB,SAAA,uBAAAT,IAAA;QAEIJ,UAAU,EAAE,IAAI,CAACK,YAAY;QAC7BN,KAAK,EAAE,IAAI,CAACO,OAAO;QACnBQ,IAAI,EAAE,iBAAiB;QACvBC,OAAO,EAAE;MAAC;IAElB;EAAC;IAAAd,GAAA;IAAAO,KAAA,EAED,SAAAQ,2BAA2BC,OAAoB,EAAEC,KAAkB,EAAe;MAC9E,IAAMC,aAAa,GAAG,IAAI,CAACd,YAAY,KAAK,QAAQ;MACpD;MACA,IAAIc,aAAa,IAAID,KAAK,EAAEE,MAAM,EAAEC,MAAM,EAAE;QACxC,IAAI,CAACf,OAAO,GAAGY,KAAK,CAACE,MAAM,CAACC,MAAM,CAAC,IAAI,CAAChB,YAAY,CAAC;MACzD;MAEAY,OAAO,CAACK,YAAY,CAAC/B,qBAAqB,EAAE,IAAI,CAACc,YAAY,CAAC;MAC9DY,OAAO,CAACM,KAAK,CAACxB,KAAK,GAAG,IAAI,CAACO,OAAO;MAClC,OAAOW,OAAO;IAClB;EAAC;IAAAhB,GAAA;IAAAO,KAAA,EAED,SAAAgB,UAAmBC,QAAuB,EAAEC,GAAgB,EAAEC,MAAoB,EAAW;MACzF,IAAMT,KAAK,GAAGS,MAAM,CAACT,KAAK;MAC1B,IAAMU,SAAS,OAAAjB,KAAA,CAAAhB,OAAA,MAAAiB,gBAAA,CAAAjB,OAAA,EAAAH,aAAA,CAAAqB,SAAA,sBAAAT,IAAA,OAAmBqB,QAAQ,EAAEC,GAAG,EAAEC,MAAM,CAAC;MACxD,IAAMR,aAAa,GAAG,IAAI,CAACd,YAAY,KAAK,QAAQ;MACpD;MACA,IAAIc,aAAa,IAAID,KAAK,EAAEE,MAAM,EAAEC,MAAM,EAAE;QACxC,IAAI,CAACf,OAAO,GAAGY,KAAK,CAACE,MAAM,CAACC,MAAM,CAAC,IAAI,CAAChB,YAAY,CAAC;MACzD;MAEAqB,GAAG,CAACJ,YAAY,CAAC/B,qBAAqB,EAAE,IAAI,CAACc,YAAY,CAAC;MAC1DqB,GAAG,CAACH,KAAK,CAACxB,KAAK,GAAG,IAAI,CAACO,OAAO;MAC9B,OAAOsB,SAAS;IACpB;EAAC;IAAA3B,GAAA;IAAAO,KAAA,EAED,SAAAqB,cAAA,EAA2D;MACvD,OAAO;QACH9B,KAAK,EAAE,IAAI,CAACO,OAAO;QACnBN,UAAU,EAAE,IAAI,CAACK;MACrB,CAAC;IACL;EAAC;IAAAJ,GAAA;IAAAO,KAAA,EAED,SAAAsB,UAAmBH,MAAoB,EAAe;MAClD,IAAMV,OAAO,OAAAN,KAAA,CAAAhB,OAAA,MAAAiB,gBAAA,CAAAjB,OAAA,EAAAH,aAAA,CAAAqB,SAAA,sBAAAT,IAAA,OAAmBuB,MAAM,CAAC;MACvC,OAAO,IAAI,CAACX,0BAA0B,CAACC,OAAO,EAAEU,MAAM,CAACT,KAAK,CAAC;IACjE;EAAC;IAAAjB,GAAA;IAAAO,KAAA,EApED,SAAAuB,QAAA,EAAkC;MAC9B,OAAO,iBAAiB;IAC5B;EAAC;IAAA9B,GAAA;IAAAO,KAAA,EAED,SAAAwB,MAAsBC,IAAmB,EAAiB;MACtD,OAAO,IAAIzC,aAAa,CAACyC,IAAI,CAACC,MAAM,EAAED,IAAI,CAAC3B,OAAO,EAAE2B,IAAI,CAAC5B,YAAY,EAAE4B,IAAI,CAACE,KAAK,CAAC;IACtF;EAAC;IAAAlC,GAAA;IAAAO,KAAA,EAED,SAAA4B,WAA2BC,cAAuC,EAAY;MAC1E,IAAMJ,IAAI,GAAG,IAAIzC,aAAa,CAC1B6C,cAAc,CAACvC,IAAI,EACnBuC,cAAc,CAACtC,KAAK,EACpBsC,cAAc,CAACrC,UACnB,CAAC;MACDiC,IAAI,CAACK,cAAc,CAACD,cAAc,CAACvC,IAAI,CAAC;MACxCmC,IAAI,CAACM,SAAS,CAACF,cAAc,CAACG,MAAM,CAAC;MACrCP,IAAI,CAACQ,SAAS,CAACJ,cAAc,CAACK,MAAM,CAAC;MACrCT,IAAI,CAACU,OAAO,CAACN,cAAc,CAACO,IAAI,CAAC;MACjCX,IAAI,CAACY,QAAQ,CAACR,cAAc,CAACd,KAAK,CAAC;MACnC,OAAOU,IAAI;IACf;EAAC;EAAA,OAAAzC,aAAA;AAAA,EA9B8BsD,iBAAQ;AAAAxD,OAAA,CAAAE,aAAA,GAAAA,aAAA;AAiFpC,IAAMuD,oBAAoB,GAAG,SAAvBA,oBAAoBA,CAC7BjD,IAAY,EACZC,KAAa,EACbC,UAAuB,EACvBC,GAAa,EACG;EAChB,OAAO,IAAIT,aAAa,CAACM,IAAI,EAAEC,KAAK,EAAEC,UAAU,EAAEC,GAAG,CAAC;AAC1D,CAAC;AAACX,OAAA,CAAAyD,oBAAA,GAAAA,oBAAA;AAEK,IAAMC,gBAAgB,GAAG,SAAnBA,gBAAgBA,CAAIf,IAAiB,EAA4B;EAC1E,OAAOA,IAAI,YAAYzC,aAAa;AACxC,CAAC;AAACF,OAAA,CAAA0D,gBAAA,GAAAA,gBAAA;AAEK,SAASC,kBAAkBA,CAAChB,IAAmB,EAAEiB,iBAAiC,EAAE;EACvFjB,IAAI,CAACM,SAAS,CAACW,iBAAiB,CAACV,MAAM,CAAC;EACxCP,IAAI,CAACY,QAAQ,CAACK,iBAAiB,CAAC3B,KAAK,CAAC;AAC1C"}
|
package/HeadingNode.js
CHANGED
|
@@ -67,7 +67,7 @@ var HeadingNode = /*#__PURE__*/function (_BaseHeadingNode) {
|
|
|
67
67
|
var style = this.__styles.find(function (x) {
|
|
68
68
|
return x.type === "typography";
|
|
69
69
|
});
|
|
70
|
-
return
|
|
70
|
+
return style?.styleId || undefined;
|
|
71
71
|
}
|
|
72
72
|
}, {
|
|
73
73
|
key: "clearTypographyStyle",
|
|
@@ -99,7 +99,7 @@ var HeadingNode = /*#__PURE__*/function (_BaseHeadingNode) {
|
|
|
99
99
|
}, {
|
|
100
100
|
key: "updateElementWithThemeClasses",
|
|
101
101
|
value: function updateElementWithThemeClasses(element, theme) {
|
|
102
|
-
if (!
|
|
102
|
+
if (!theme?.emotionMap) {
|
|
103
103
|
return element;
|
|
104
104
|
}
|
|
105
105
|
if (!this.hasTypographyStyle()) {
|
package/HeadingNode.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_lexical","require","_utils","_richText","_lexicalTheme","HeadingNode","_BaseHeadingNode","_inherits2","default","_super","_createSuper2","tag","typographyStyleId","key","_this","_classCallCheck2","call","_defineProperty2","_assertThisInitialized2","__styles","push","styleId","type","_createClass2","value","setDefaultTypography","themeEmotionMap","typographyStyle","findTypographyStyleByHtmlTag","__tag","id","setTypography","self","_get2","_getPrototypeOf2","prototype","hasTypographyStyle","themeStyle","getTypographyStyleId","style","find","x","undefined","clearTypographyStyle","filter","s","getThemeStyles","setThemeStyles","styles","_toConsumableArray2","updateElementWithThemeClasses","element","theme","emotionMap","typoStyleId","themeClasses","className","addClassNamesToElement","createDOM","config","exportJSON","_objectSpread2","version","insertNewAfter","selection","restoreSelection","arguments","length","newElement","$createHeadingNode","getTag","direction","getDirection","setDirection","insertAfter","collapseAtStart","children","getChildren","forEach","child","append","replace","getType","clone","node","__key","importJSON","serializedNode","setFormat","format","setIndent","indent","BaseHeadingNode","exports","$applyNodeReplacement","$isHeadingNode"],"sources":["HeadingNode.ts"],"sourcesContent":["import {\n EditorConfig,\n $applyNodeReplacement,\n LexicalNode,\n NodeKey,\n RangeSelection,\n Spread\n} from \"lexical\";\nimport { addClassNamesToElement } from \"@lexical/utils\";\nimport {\n HeadingNode as BaseHeadingNode,\n HeadingTagType,\n SerializedHeadingNode as BaseSerializedHeadingNode\n} from \"@lexical/rich-text\";\nimport { WebinyTheme, ThemeEmotionMap, findTypographyStyleByHtmlTag } from \"@webiny/lexical-theme\";\nimport { ParagraphNode } from \"~/ParagraphNode\";\nimport { TypographyStylesNode, ThemeStyleValue, TextNodeThemeStyles } from \"~/types\";\n\nexport type SerializeHeadingNode = Spread<\n {\n styles: ThemeStyleValue[];\n type: \"heading-element\";\n },\n BaseSerializedHeadingNode\n>;\n\nexport class HeadingNode\n extends BaseHeadingNode\n implements TextNodeThemeStyles, TypographyStylesNode\n{\n __styles: ThemeStyleValue[] = [];\n\n constructor(tag: HeadingTagType, typographyStyleId?: string, key?: NodeKey) {\n super(tag, key);\n\n if (typographyStyleId) {\n this.__styles.push({ styleId: typographyStyleId, type: \"typography\" });\n }\n }\n\n protected setDefaultTypography(themeEmotionMap: ThemeEmotionMap) {\n const typographyStyle = findTypographyStyleByHtmlTag(this.__tag, themeEmotionMap);\n if (typographyStyle) {\n this.__styles.push({ styleId: typographyStyle.id, type: \"typography\" });\n }\n }\n\n setTypography(typographyStyleId: string): this {\n const self = super.getWritable();\n if (!this.hasTypographyStyle()) {\n const themeStyle = {\n styleId: typographyStyleId,\n type: \"typography\"\n } as ThemeStyleValue;\n self.__styles.push(themeStyle);\n }\n return self;\n }\n\n getTypographyStyleId(): string | undefined {\n const style = this.__styles.find(x => x.type === \"typography\");\n return style?.styleId || undefined;\n }\n\n clearTypographyStyle(): this {\n const self = super.getWritable();\n self.__styles = self.__styles.filter(s => s.type !== \"typography\");\n return self;\n }\n\n hasTypographyStyle(): boolean {\n return !!this.getTypographyStyleId();\n }\n\n getThemeStyles(): ThemeStyleValue[] {\n const self = super.getLatest();\n return self.__styles;\n }\n\n setThemeStyles(styles: ThemeStyleValue[]) {\n const self = super.getWritable();\n self.__styles = [...styles];\n return self;\n }\n\n static override getType(): string {\n return \"heading-element\";\n }\n\n static override clone(node: HeadingNode): HeadingNode {\n return new HeadingNode(node.getTag(), node.getTypographyStyleId(), node.__key);\n }\n\n protected updateElementWithThemeClasses(element: HTMLElement, theme: WebinyTheme): HTMLElement {\n if (!theme?.emotionMap) {\n return element;\n }\n\n if (!this.hasTypographyStyle()) {\n this.setDefaultTypography(theme.emotionMap);\n }\n\n const typoStyleId = this.getTypographyStyleId();\n\n let themeClasses;\n\n // Typography css class\n if (typoStyleId) {\n const typographyStyle = theme.emotionMap[typoStyleId];\n if (typographyStyle) {\n themeClasses = typographyStyle.className;\n }\n }\n\n if (themeClasses) {\n addClassNamesToElement(element, themeClasses);\n }\n\n return element;\n }\n\n override createDOM(config: EditorConfig): HTMLElement {\n const element = super.createDOM(config);\n return this.updateElementWithThemeClasses(element, config.theme as WebinyTheme);\n }\n\n static override importJSON(serializedNode: SerializeHeadingNode): BaseHeadingNode {\n const node = $createHeadingNode(serializedNode.tag);\n node.setFormat(serializedNode.format);\n node.setIndent(serializedNode.indent);\n node.setDirection(serializedNode.direction);\n node.setThemeStyles(serializedNode.styles);\n return node;\n }\n\n override exportJSON(): SerializeHeadingNode {\n return {\n ...super.exportJSON(),\n styles: this.__styles,\n type: \"heading-element\",\n version: 1\n };\n }\n\n // Mutation\n override insertNewAfter(\n selection?: RangeSelection,\n restoreSelection = true\n ): ParagraphNode | HeadingNode {\n // Next line for headings are always headings with the same tag\n const newElement = $createHeadingNode(this.getTag());\n const direction = this.getDirection();\n newElement.setDirection(direction);\n this.insertAfter(newElement, restoreSelection);\n return newElement;\n }\n\n override collapseAtStart(): true {\n const newElement = $createHeadingNode(this.getTag());\n const children = this.getChildren();\n children.forEach(child => newElement.append(child));\n this.replace(newElement);\n return true;\n }\n}\n\nexport function $createHeadingNode(tag: HeadingTagType, typographyStyleId?: string): HeadingNode {\n return $applyNodeReplacement(new HeadingNode(tag, typographyStyleId));\n}\n\nexport function $isHeadingNode(node: LexicalNode | null | undefined): node is HeadingNode {\n return node instanceof HeadingNode;\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["_lexical","require","_utils","_richText","_lexicalTheme","HeadingNode","_BaseHeadingNode","_inherits2","default","_super","_createSuper2","tag","typographyStyleId","key","_this","_classCallCheck2","call","_defineProperty2","_assertThisInitialized2","__styles","push","styleId","type","_createClass2","value","setDefaultTypography","themeEmotionMap","typographyStyle","findTypographyStyleByHtmlTag","__tag","id","setTypography","self","_get2","_getPrototypeOf2","prototype","hasTypographyStyle","themeStyle","getTypographyStyleId","style","find","x","undefined","clearTypographyStyle","filter","s","getThemeStyles","setThemeStyles","styles","_toConsumableArray2","updateElementWithThemeClasses","element","theme","emotionMap","typoStyleId","themeClasses","className","addClassNamesToElement","createDOM","config","exportJSON","_objectSpread2","version","insertNewAfter","selection","restoreSelection","arguments","length","newElement","$createHeadingNode","getTag","direction","getDirection","setDirection","insertAfter","collapseAtStart","children","getChildren","forEach","child","append","replace","getType","clone","node","__key","importJSON","serializedNode","setFormat","format","setIndent","indent","BaseHeadingNode","exports","$applyNodeReplacement","$isHeadingNode"],"sources":["HeadingNode.ts"],"sourcesContent":["import {\n EditorConfig,\n $applyNodeReplacement,\n LexicalNode,\n NodeKey,\n RangeSelection,\n Spread\n} from \"lexical\";\nimport { addClassNamesToElement } from \"@lexical/utils\";\nimport {\n HeadingNode as BaseHeadingNode,\n HeadingTagType,\n SerializedHeadingNode as BaseSerializedHeadingNode\n} from \"@lexical/rich-text\";\nimport { WebinyTheme, ThemeEmotionMap, findTypographyStyleByHtmlTag } from \"@webiny/lexical-theme\";\nimport { ParagraphNode } from \"~/ParagraphNode\";\nimport { TypographyStylesNode, ThemeStyleValue, TextNodeThemeStyles } from \"~/types\";\n\nexport type SerializeHeadingNode = Spread<\n {\n styles: ThemeStyleValue[];\n type: \"heading-element\";\n },\n BaseSerializedHeadingNode\n>;\n\nexport class HeadingNode\n extends BaseHeadingNode\n implements TextNodeThemeStyles, TypographyStylesNode\n{\n __styles: ThemeStyleValue[] = [];\n\n constructor(tag: HeadingTagType, typographyStyleId?: string, key?: NodeKey) {\n super(tag, key);\n\n if (typographyStyleId) {\n this.__styles.push({ styleId: typographyStyleId, type: \"typography\" });\n }\n }\n\n protected setDefaultTypography(themeEmotionMap: ThemeEmotionMap) {\n const typographyStyle = findTypographyStyleByHtmlTag(this.__tag, themeEmotionMap);\n if (typographyStyle) {\n this.__styles.push({ styleId: typographyStyle.id, type: \"typography\" });\n }\n }\n\n setTypography(typographyStyleId: string): this {\n const self = super.getWritable();\n if (!this.hasTypographyStyle()) {\n const themeStyle = {\n styleId: typographyStyleId,\n type: \"typography\"\n } as ThemeStyleValue;\n self.__styles.push(themeStyle);\n }\n return self;\n }\n\n getTypographyStyleId(): string | undefined {\n const style = this.__styles.find(x => x.type === \"typography\");\n return style?.styleId || undefined;\n }\n\n clearTypographyStyle(): this {\n const self = super.getWritable();\n self.__styles = self.__styles.filter(s => s.type !== \"typography\");\n return self;\n }\n\n hasTypographyStyle(): boolean {\n return !!this.getTypographyStyleId();\n }\n\n getThemeStyles(): ThemeStyleValue[] {\n const self = super.getLatest();\n return self.__styles;\n }\n\n setThemeStyles(styles: ThemeStyleValue[]) {\n const self = super.getWritable();\n self.__styles = [...styles];\n return self;\n }\n\n static override getType(): string {\n return \"heading-element\";\n }\n\n static override clone(node: HeadingNode): HeadingNode {\n return new HeadingNode(node.getTag(), node.getTypographyStyleId(), node.__key);\n }\n\n protected updateElementWithThemeClasses(element: HTMLElement, theme: WebinyTheme): HTMLElement {\n if (!theme?.emotionMap) {\n return element;\n }\n\n if (!this.hasTypographyStyle()) {\n this.setDefaultTypography(theme.emotionMap);\n }\n\n const typoStyleId = this.getTypographyStyleId();\n\n let themeClasses;\n\n // Typography css class\n if (typoStyleId) {\n const typographyStyle = theme.emotionMap[typoStyleId];\n if (typographyStyle) {\n themeClasses = typographyStyle.className;\n }\n }\n\n if (themeClasses) {\n addClassNamesToElement(element, themeClasses);\n }\n\n return element;\n }\n\n override createDOM(config: EditorConfig): HTMLElement {\n const element = super.createDOM(config);\n return this.updateElementWithThemeClasses(element, config.theme as WebinyTheme);\n }\n\n static override importJSON(serializedNode: SerializeHeadingNode): BaseHeadingNode {\n const node = $createHeadingNode(serializedNode.tag);\n node.setFormat(serializedNode.format);\n node.setIndent(serializedNode.indent);\n node.setDirection(serializedNode.direction);\n node.setThemeStyles(serializedNode.styles);\n return node;\n }\n\n override exportJSON(): SerializeHeadingNode {\n return {\n ...super.exportJSON(),\n styles: this.__styles,\n type: \"heading-element\",\n version: 1\n };\n }\n\n // Mutation\n override insertNewAfter(\n selection?: RangeSelection,\n restoreSelection = true\n ): ParagraphNode | HeadingNode {\n // Next line for headings are always headings with the same tag\n const newElement = $createHeadingNode(this.getTag());\n const direction = this.getDirection();\n newElement.setDirection(direction);\n this.insertAfter(newElement, restoreSelection);\n return newElement;\n }\n\n override collapseAtStart(): true {\n const newElement = $createHeadingNode(this.getTag());\n const children = this.getChildren();\n children.forEach(child => newElement.append(child));\n this.replace(newElement);\n return true;\n }\n}\n\nexport function $createHeadingNode(tag: HeadingTagType, typographyStyleId?: string): HeadingNode {\n return $applyNodeReplacement(new HeadingNode(tag, typographyStyleId));\n}\n\nexport function $isHeadingNode(node: LexicalNode | null | undefined): node is HeadingNode {\n return node instanceof HeadingNode;\n}\n"],"mappings":"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"}
|
package/ImageNode.js
CHANGED
|
@@ -23,9 +23,7 @@ var _lexical = require("lexical");
|
|
|
23
23
|
*
|
|
24
24
|
*/
|
|
25
25
|
|
|
26
|
-
var ImageComponent = /*#__PURE__*/_react.default.lazy(
|
|
27
|
-
// @ts-ignore
|
|
28
|
-
function () {
|
|
26
|
+
var ImageComponent = /*#__PURE__*/_react.default.lazy(function () {
|
|
29
27
|
return Promise.resolve().then(function () {
|
|
30
28
|
return (0, _interopRequireWildcard2.default)(require("./components/ImageNode/ImageComponent"));
|
|
31
29
|
});
|
package/ImageNode.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","_interopRequireWildcard3","require","_lexical","ImageComponent","React","lazy","Promise","resolve","then","_interopRequireWildcard2","default","ImageNode","_DecoratorNode","_inherits2","_super","_createSuper2","props","key","_this","_classCallCheck2","call","__id","id","__src","src","__altText","altText","__maxWidth","maxWidth","__width","width","__height","height","__showCaption","showCaption","__caption","caption","createEditor","__captionsEnabled","captionsEnabled","undefined","_createClass2","value","exportDOM","element","document","createElement","setAttribute","toString","exportJSON","getAltText","toJSON","getSrc","type","version","setWidthAndHeight","writable","getWritable","setShowCaption","createDOM","config","span","theme","className","image","updateDOM","decorate","Suspense","fallback","nodeKey","getKey","resizable","getType","clone","node","__key","importJSON","serializedNode","$createImageNode","nestedEditor","editorState","parseEditorState","isEmpty","setEditorState","importDOM","DecoratorNode","exports","$applyNodeReplacement","$isImageNode"],"sources":["ImageNode.tsx"],"sourcesContent":["/**\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 */\nimport React, { Suspense } from \"react\";\nimport type {\n DOMConversionMap,\n DOMExportOutput,\n EditorConfig,\n LexicalEditor,\n LexicalNode,\n NodeKey,\n SerializedEditor,\n SerializedLexicalNode,\n Spread\n} from \"lexical\";\nimport { $applyNodeReplacement, createEditor, DecoratorNode } from \"lexical\";\n\nconst ImageComponent = React.lazy(\n // @ts-ignore\n () => import(\"./components/ImageNode/ImageComponent\")\n);\n\nexport type SerializedImageNode = Spread<\n {\n id: string;\n altText: string;\n caption: SerializedEditor;\n height?: number;\n maxWidth: number;\n showCaption: boolean;\n src: string;\n width?: number;\n },\n SerializedLexicalNode\n>;\n\nexport interface ImageNodeProps {\n id: string;\n src: string;\n altText: string;\n maxWidth: number;\n width?: \"inherit\" | number;\n height?: \"inherit\" | number;\n showCaption?: boolean;\n caption?: LexicalEditor;\n captionsEnabled?: boolean;\n}\n\nexport class ImageNode extends DecoratorNode<JSX.Element> {\n __id: string;\n __src: string;\n __altText: string;\n __width: \"inherit\" | number;\n __height: \"inherit\" | number;\n __maxWidth: number;\n __showCaption: boolean;\n __caption: LexicalEditor;\n // Captions cannot yet be used within editor cells\n __captionsEnabled: boolean;\n\n static override getType(): string {\n return \"image\";\n }\n\n static override clone(node: ImageNode): ImageNode {\n return new ImageNode(\n {\n id: node.__id,\n src: node.__src,\n altText: node.__altText,\n maxWidth: node.__maxWidth,\n width: node.__width,\n height: node.__height,\n showCaption: node.__showCaption,\n caption: node.__caption,\n captionsEnabled: node.__captionsEnabled\n },\n node.__key\n );\n }\n\n static override importJSON(serializedNode: SerializedImageNode): ImageNode {\n const { id, altText, height, width, maxWidth, caption, src, showCaption } = serializedNode;\n const node = $createImageNode({\n id,\n altText,\n height,\n maxWidth,\n showCaption,\n src,\n width\n });\n const nestedEditor = node.__caption;\n const editorState = nestedEditor.parseEditorState(caption.editorState);\n if (!editorState.isEmpty()) {\n nestedEditor.setEditorState(editorState);\n }\n return node;\n }\n\n override exportDOM(): DOMExportOutput {\n const element = document.createElement(\"img\");\n element.setAttribute(\"id\", this.__id);\n element.setAttribute(\"src\", this.__src);\n element.setAttribute(\"alt\", this.__altText);\n element.setAttribute(\"width\", this.__width.toString());\n element.setAttribute(\"height\", this.__height.toString());\n return { element };\n }\n\n /**\n * Control how an HTMLElement is represented in Lexical.\n * DOM data comes from clipboard or parsing HTML to nodes with the available lexical functions.\n * (@see @lexical/html package: https://github.com/facebook/lexical/blob/main/packages/lexical-html/README.md).\n */\n static importDOM(): DOMConversionMap | null {\n /**\n * By returning 'null' value, we are preventing image node to be created.\n * Example of how to implement and create the node:\n * https://github.com/facebook/lexical/blob/main/packages/lexical-playground/src/nodes/ImageNode.tsx#L94\n */\n return null;\n }\n\n constructor(props: ImageNodeProps, key?: NodeKey) {\n super(key);\n this.__id = props.id;\n this.__src = props.src;\n this.__altText = props.altText;\n this.__maxWidth = props.maxWidth;\n this.__width = props.width || \"inherit\";\n this.__height = props.height || \"inherit\";\n this.__showCaption = props.showCaption || false;\n this.__caption = props.caption || createEditor();\n this.__captionsEnabled = props.captionsEnabled || props.captionsEnabled === undefined;\n }\n\n override exportJSON(): SerializedImageNode {\n return {\n id: this.__id,\n altText: this.getAltText(),\n caption: this.__caption.toJSON(),\n height: this.__height === \"inherit\" ? 0 : this.__height,\n maxWidth: this.__maxWidth,\n showCaption: this.__showCaption,\n src: this.getSrc(),\n type: \"image\",\n version: 1,\n width: this.__width === \"inherit\" ? 0 : this.__width\n };\n }\n\n setWidthAndHeight(width: \"inherit\" | number, height: \"inherit\" | number): void {\n const writable = this.getWritable();\n writable.__width = width;\n writable.__height = height;\n }\n\n setShowCaption(showCaption: boolean): void {\n const writable = this.getWritable();\n writable.__showCaption = showCaption;\n }\n\n // View\n override createDOM(config: EditorConfig): HTMLElement {\n const span = document.createElement(\"span\");\n const theme = config.theme;\n const className = theme.image;\n if (className !== undefined) {\n span.className = className;\n }\n return span;\n }\n\n override updateDOM(): false {\n return false;\n }\n\n getSrc(): string {\n return this.__src;\n }\n\n getAltText(): string {\n return this.__altText;\n }\n\n override decorate(): JSX.Element {\n return (\n <Suspense fallback={null}>\n <ImageComponent\n id={this.__id}\n src={this.__src}\n altText={this.__altText}\n width={this.__width}\n height={this.__height}\n maxWidth={this.__maxWidth}\n nodeKey={this.getKey()}\n showCaption={this.__showCaption}\n caption={this.__caption}\n captionsEnabled={this.__captionsEnabled}\n resizable={true}\n />\n </Suspense>\n );\n }\n}\n\nexport function $createImageNode(props: ImageNodeProps, key?: string): ImageNode {\n return $applyNodeReplacement(new ImageNode(props, key));\n}\n\nexport function $isImageNode(node: LexicalNode | null | undefined): node is ImageNode {\n return node instanceof ImageNode;\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireWildcard3","require","_lexical","ImageComponent","React","lazy","Promise","resolve","then","_interopRequireWildcard2","default","ImageNode","_DecoratorNode","_inherits2","_super","_createSuper2","props","key","_this","_classCallCheck2","call","__id","id","__src","src","__altText","altText","__maxWidth","maxWidth","__width","width","__height","height","__showCaption","showCaption","__caption","caption","createEditor","__captionsEnabled","captionsEnabled","undefined","_createClass2","value","exportDOM","element","document","createElement","setAttribute","toString","exportJSON","getAltText","toJSON","getSrc","type","version","setWidthAndHeight","writable","getWritable","setShowCaption","createDOM","config","span","theme","className","image","updateDOM","decorate","Suspense","fallback","nodeKey","getKey","resizable","getType","clone","node","__key","importJSON","serializedNode","$createImageNode","nestedEditor","editorState","parseEditorState","isEmpty","setEditorState","importDOM","DecoratorNode","exports","$applyNodeReplacement","$isImageNode"],"sources":["ImageNode.tsx"],"sourcesContent":["/**\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 */\nimport React, { Suspense } from \"react\";\nimport type {\n DOMConversionMap,\n DOMExportOutput,\n EditorConfig,\n LexicalEditor,\n LexicalNode,\n NodeKey,\n SerializedEditor,\n SerializedLexicalNode,\n Spread\n} from \"lexical\";\nimport { $applyNodeReplacement, createEditor, DecoratorNode } from \"lexical\";\n\nconst ImageComponent = React.lazy(() => import(\"./components/ImageNode/ImageComponent\"));\n\nexport type SerializedImageNode = Spread<\n {\n id: string;\n altText: string;\n caption: SerializedEditor;\n height?: number;\n maxWidth: number;\n showCaption: boolean;\n src: string;\n width?: number;\n },\n SerializedLexicalNode\n>;\n\nexport interface ImageNodeProps {\n id: string;\n src: string;\n altText: string;\n maxWidth: number;\n width?: \"inherit\" | number;\n height?: \"inherit\" | number;\n showCaption?: boolean;\n caption?: LexicalEditor;\n captionsEnabled?: boolean;\n}\n\nexport class ImageNode extends DecoratorNode<JSX.Element> {\n __id: string;\n __src: string;\n __altText: string;\n __width: \"inherit\" | number;\n __height: \"inherit\" | number;\n __maxWidth: number;\n __showCaption: boolean;\n __caption: LexicalEditor;\n // Captions cannot yet be used within editor cells\n __captionsEnabled: boolean;\n\n static override getType(): string {\n return \"image\";\n }\n\n static override clone(node: ImageNode): ImageNode {\n return new ImageNode(\n {\n id: node.__id,\n src: node.__src,\n altText: node.__altText,\n maxWidth: node.__maxWidth,\n width: node.__width,\n height: node.__height,\n showCaption: node.__showCaption,\n caption: node.__caption,\n captionsEnabled: node.__captionsEnabled\n },\n node.__key\n );\n }\n\n static override importJSON(serializedNode: SerializedImageNode): ImageNode {\n const { id, altText, height, width, maxWidth, caption, src, showCaption } = serializedNode;\n const node = $createImageNode({\n id,\n altText,\n height,\n maxWidth,\n showCaption,\n src,\n width\n });\n const nestedEditor = node.__caption;\n const editorState = nestedEditor.parseEditorState(caption.editorState);\n if (!editorState.isEmpty()) {\n nestedEditor.setEditorState(editorState);\n }\n return node;\n }\n\n override exportDOM(): DOMExportOutput {\n const element = document.createElement(\"img\");\n element.setAttribute(\"id\", this.__id);\n element.setAttribute(\"src\", this.__src);\n element.setAttribute(\"alt\", this.__altText);\n element.setAttribute(\"width\", this.__width.toString());\n element.setAttribute(\"height\", this.__height.toString());\n return { element };\n }\n\n /**\n * Control how an HTMLElement is represented in Lexical.\n * DOM data comes from clipboard or parsing HTML to nodes with the available lexical functions.\n * (@see @lexical/html package: https://github.com/facebook/lexical/blob/main/packages/lexical-html/README.md).\n */\n static importDOM(): DOMConversionMap | null {\n /**\n * By returning 'null' value, we are preventing image node to be created.\n * Example of how to implement and create the node:\n * https://github.com/facebook/lexical/blob/main/packages/lexical-playground/src/nodes/ImageNode.tsx#L94\n */\n return null;\n }\n\n constructor(props: ImageNodeProps, key?: NodeKey) {\n super(key);\n this.__id = props.id;\n this.__src = props.src;\n this.__altText = props.altText;\n this.__maxWidth = props.maxWidth;\n this.__width = props.width || \"inherit\";\n this.__height = props.height || \"inherit\";\n this.__showCaption = props.showCaption || false;\n this.__caption = props.caption || createEditor();\n this.__captionsEnabled = props.captionsEnabled || props.captionsEnabled === undefined;\n }\n\n override exportJSON(): SerializedImageNode {\n return {\n id: this.__id,\n altText: this.getAltText(),\n caption: this.__caption.toJSON(),\n height: this.__height === \"inherit\" ? 0 : this.__height,\n maxWidth: this.__maxWidth,\n showCaption: this.__showCaption,\n src: this.getSrc(),\n type: \"image\",\n version: 1,\n width: this.__width === \"inherit\" ? 0 : this.__width\n };\n }\n\n setWidthAndHeight(width: \"inherit\" | number, height: \"inherit\" | number): void {\n const writable = this.getWritable();\n writable.__width = width;\n writable.__height = height;\n }\n\n setShowCaption(showCaption: boolean): void {\n const writable = this.getWritable();\n writable.__showCaption = showCaption;\n }\n\n // View\n override createDOM(config: EditorConfig): HTMLElement {\n const span = document.createElement(\"span\");\n const theme = config.theme;\n const className = theme.image;\n if (className !== undefined) {\n span.className = className;\n }\n return span;\n }\n\n override updateDOM(): false {\n return false;\n }\n\n getSrc(): string {\n return this.__src;\n }\n\n getAltText(): string {\n return this.__altText;\n }\n\n override decorate(): JSX.Element {\n return (\n <Suspense fallback={null}>\n <ImageComponent\n id={this.__id}\n src={this.__src}\n altText={this.__altText}\n width={this.__width}\n height={this.__height}\n maxWidth={this.__maxWidth}\n nodeKey={this.getKey()}\n showCaption={this.__showCaption}\n caption={this.__caption}\n captionsEnabled={this.__captionsEnabled}\n resizable={true}\n />\n </Suspense>\n );\n }\n}\n\nexport function $createImageNode(props: ImageNodeProps, key?: string): ImageNode {\n return $applyNodeReplacement(new ImageNode(props, key));\n}\n\nexport function $isImageNode(node: LexicalNode | null | undefined): node is ImageNode {\n return node instanceof ImageNode;\n}\n"],"mappings":"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"}
|
package/ListItemNode.js
CHANGED
|
@@ -376,7 +376,7 @@ function $setListItemThemeClassNames(dom, editorThemeClasses, node) {
|
|
|
376
376
|
}
|
|
377
377
|
if (listTheme) {
|
|
378
378
|
var parentNode = node.getParent();
|
|
379
|
-
var isCheckList = (0, _ListNode.$isListNode)(parentNode) &&
|
|
379
|
+
var isCheckList = (0, _ListNode.$isListNode)(parentNode) && parentNode?.getListType() === "check";
|
|
380
380
|
var checked = node.getChecked();
|
|
381
381
|
if (!isCheckList || checked) {
|
|
382
382
|
classesToRemove.push(listTheme.listitemUnchecked);
|
package/ListItemNode.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_lexical","require","_ListNode","_utils","_formatList","_ParagraphNode","_listNode","ListItemNode","_ElementNode","_inherits2","default","_super","_createSuper2","value","checked","key","_this","_classCallCheck2","call","__value","undefined","__checked","_createClass2","createDOM","config","element","document","createElement","parent","getParent","$isListNode","getListType","updateListItemChecked","$setListItemThemeClassNames","theme","updateDOM","prevNode","dom","exportJSON","_objectSpread2","_get2","_getPrototypeOf2","prototype","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","exports","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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"}
|
|
1
|
+
{"version":3,"names":["_lexical","require","_ListNode","_utils","_formatList","_ParagraphNode","_listNode","ListItemNode","_ElementNode","_inherits2","default","_super","_createSuper2","value","checked","key","_this","_classCallCheck2","call","__value","undefined","__checked","_createClass2","createDOM","config","element","document","createElement","parent","getParent","$isListNode","getListType","updateListItemChecked","$setListItemThemeClassNames","theme","updateDOM","prevNode","dom","exportJSON","_objectSpread2","_get2","_getPrototypeOf2","prototype","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","exports","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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"}
|
package/ListNode.js
CHANGED
|
@@ -44,7 +44,7 @@ var ListNode = /*#__PURE__*/function (_ElementNode) {
|
|
|
44
44
|
(0, _createClass2.default)(ListNode, [{
|
|
45
45
|
key: "isStyleExistInTheme",
|
|
46
46
|
value: function isStyleExistInTheme(theme) {
|
|
47
|
-
return theme
|
|
47
|
+
return theme?.emotionMap ? !!theme?.emotionMap[this.__themeStyleId] : false;
|
|
48
48
|
}
|
|
49
49
|
}, {
|
|
50
50
|
key: "createDOM",
|
|
@@ -90,12 +90,9 @@ var ListNode = /*#__PURE__*/function (_ElementNode) {
|
|
|
90
90
|
}
|
|
91
91
|
}, {
|
|
92
92
|
key: "exportJSON",
|
|
93
|
-
value:
|
|
94
|
-
// @ts-ignore
|
|
95
|
-
function exportJSON() {
|
|
96
|
-
var _this$__themeStyleId;
|
|
93
|
+
value: function exportJSON() {
|
|
97
94
|
return (0, _objectSpread2.default)((0, _objectSpread2.default)({}, (0, _get2.default)((0, _getPrototypeOf2.default)(ListNode.prototype), "exportJSON", this).call(this)), {}, {
|
|
98
|
-
themeStyleId:
|
|
95
|
+
themeStyleId: this.__themeStyleId ?? "",
|
|
99
96
|
listType: this.getListType(),
|
|
100
97
|
start: this.getStart(),
|
|
101
98
|
tag: this.getTag(),
|
|
@@ -113,7 +110,7 @@ var ListNode = /*#__PURE__*/function (_ElementNode) {
|
|
|
113
110
|
if (!tag) {
|
|
114
111
|
return;
|
|
115
112
|
}
|
|
116
|
-
var themeEmotionMap = theme
|
|
113
|
+
var themeEmotionMap = theme?.emotionMap;
|
|
117
114
|
if (!themeEmotionMap) {
|
|
118
115
|
return;
|
|
119
116
|
}
|
|
@@ -197,14 +194,13 @@ function setListThemeClassNames(dom, editorTheme, node, themeStyleId) {
|
|
|
197
194
|
var classesToAdd = [];
|
|
198
195
|
var classesToRemove = [];
|
|
199
196
|
var listTheme = editorThemeClasses.list;
|
|
200
|
-
var emotionMap =
|
|
197
|
+
var emotionMap = editorTheme?.emotionMap || {};
|
|
201
198
|
if (listTheme !== undefined) {
|
|
202
|
-
var _emotionMap$themeStyl, _emotionMap$themeStyl2;
|
|
203
199
|
var listLevelsClassNames = listTheme["".concat(node.__tag, "Depth")] || [];
|
|
204
200
|
var listDepth = (0, _listNode.$getListDepth)(node) - 1;
|
|
205
201
|
var normalizedListDepth = listDepth % listLevelsClassNames.length;
|
|
206
202
|
var listLevelClassName = listLevelsClassNames[normalizedListDepth];
|
|
207
|
-
var listClassName = "".concat(listTheme[node.__tag], " ").concat(
|
|
203
|
+
var listClassName = "".concat(listTheme[node.__tag], " ").concat(emotionMap[themeStyleId]?.className ?? "");
|
|
208
204
|
var nestedListClassName;
|
|
209
205
|
var nestedListTheme = listTheme.nested;
|
|
210
206
|
if (nestedListTheme !== undefined && nestedListTheme.list) {
|
|
@@ -270,7 +266,7 @@ function convertListNode(domNode) {
|
|
|
270
266
|
node = $createListNode("bullet");
|
|
271
267
|
}
|
|
272
268
|
return {
|
|
273
|
-
// @ts-
|
|
269
|
+
// @ts-expect-error
|
|
274
270
|
after: normalizeChildren,
|
|
275
271
|
node: node
|
|
276
272
|
};
|
package/ListNode.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_lexical","require","_lexicalTheme","_utils","_listNode","_ListItemNode","TypographyStyleAttrName","ListNode","_ElementNode","_inherits2","default","_super","_createSuper2","listType","themeStyleId","start","key","_this","_classCallCheck2","call","__themeStyleId","_listType","TAG_TO_WEBINY_LIST_TYPE","__listType","__tag","__start","_createClass2","value","isStyleExistInTheme","theme","emotionMap","createDOM","config","tag","dom","document","createElement","wTheme","setAttribute","String","hasThemeStyle","setDefaultThemeListStyleByTag","__lexicalListType","setListThemeClassNames","getTag","getListType","getStart","getStyleId","exportJSON","_this$__themeStyleId","_objectSpread2","_get2","_getPrototypeOf2","prototype","type","version","themeEmotionMap","style","findTypographyStyleByHtmlTag","id","updateDOM","prevNode","extractWithChild","child","$isListItemNode","getType","clone","node","__key","importJSON","serializedNode","$createListNode","setFormat","format","setIndent","indent","setDirection","direction","importDomConversionMap","conversion","convertListNode","priority","importDOM","_this2","ol","ul","ElementNode","exports","editorTheme","editorThemeClasses","classesToAdd","classesToRemove","listTheme","list","undefined","_emotionMap$themeStyl","_emotionMap$themeStyl2","listLevelsClassNames","concat","listDepth","$getListDepth","normalizedListDepth","length","listLevelClassName","listClassName","className","nestedListClassName","nestedListTheme","nested","push","listItemClasses","split","apply","_toConsumableArray2","i","nestedListItemClasses","removeClassNamesFromElement","addClassNamesToElement","normalizeChildren","nodes","normalizedListItems","getChildren","forEach","$isListNode","wrapInListItem","domNode","nodeName","toLowerCase","after","arguments"],"sources":["ListNode.ts"],"sourcesContent":["import {\n DOMConversion,\n DOMConversionMap,\n DOMConversionOutput,\n EditorConfig,\n ElementNode,\n LexicalNode,\n NodeKey,\n SerializedElementNode,\n Spread\n} from \"lexical\";\nimport { 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 // @ts-ignore\n override exportJSON(): SerializedWebinyListNode {\n return {\n ...super.exportJSON(),\n themeStyleId: this.__themeStyleId ?? \"\",\n listType: this.getListType(),\n start: this.getStart(),\n tag: this.getTag(),\n type: \"webiny-list\",\n version: 1\n };\n }\n\n static importDomConversionMap(): DOMConversion<HTMLElement> | null {\n return {\n conversion: 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-ignore\n after: normalizeChildren,\n node\n };\n}\n\nconst TAG_TO_WEBINY_LIST_TYPE: Record<string, ListType> = {\n ol: \"number\",\n ul: \"bullet\"\n};\n\nexport function $createListNode(listType: ListType, themeStyleId?: string, start = 1): ListNode {\n return new ListNode(listType, themeStyleId, start);\n}\n\nexport function $isListNode(node: LexicalNode | null | undefined): node is ListNode {\n return node instanceof ListNode;\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["_lexical","require","_lexicalTheme","_utils","_listNode","_ListItemNode","TypographyStyleAttrName","ListNode","_ElementNode","_inherits2","default","_super","_createSuper2","listType","themeStyleId","start","key","_this","_classCallCheck2","call","__themeStyleId","_listType","TAG_TO_WEBINY_LIST_TYPE","__listType","__tag","__start","_createClass2","value","isStyleExistInTheme","theme","emotionMap","createDOM","config","tag","dom","document","createElement","wTheme","setAttribute","String","hasThemeStyle","setDefaultThemeListStyleByTag","__lexicalListType","setListThemeClassNames","getTag","getListType","getStart","getStyleId","exportJSON","_objectSpread2","_get2","_getPrototypeOf2","prototype","type","version","themeEmotionMap","style","findTypographyStyleByHtmlTag","id","updateDOM","prevNode","extractWithChild","child","$isListItemNode","getType","clone","node","__key","importJSON","serializedNode","$createListNode","setFormat","format","setIndent","indent","setDirection","direction","importDomConversionMap","conversion","convertListNode","priority","importDOM","_this2","ol","ul","ElementNode","exports","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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"}
|
package/ParagraphNode.js
CHANGED
|
@@ -64,7 +64,7 @@ var ParagraphNode = /*#__PURE__*/function (_BaseParagraphNode) {
|
|
|
64
64
|
var style = this.__styles.find(function (x) {
|
|
65
65
|
return x.type === "typography";
|
|
66
66
|
});
|
|
67
|
-
return
|
|
67
|
+
return style?.styleId || undefined;
|
|
68
68
|
}
|
|
69
69
|
}, {
|
|
70
70
|
key: "clearTypographyStyle",
|
|
@@ -101,7 +101,7 @@ var ParagraphNode = /*#__PURE__*/function (_BaseParagraphNode) {
|
|
|
101
101
|
}, {
|
|
102
102
|
key: "updateElementWithThemeClasses",
|
|
103
103
|
value: function updateElementWithThemeClasses(element, theme) {
|
|
104
|
-
if (!
|
|
104
|
+
if (!theme?.emotionMap) {
|
|
105
105
|
return element;
|
|
106
106
|
}
|
|
107
107
|
if (!this.hasTypographyStyle()) {
|
package/ParagraphNode.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_lexical","require","_lexicalTheme","_utils","ParagraphNode","_BaseParagraphNode","_inherits2","default","_super","_createSuper2","typographyStyleId","key","_this","_classCallCheck2","call","_defineProperty2","_assertThisInitialized2","__styles","push","styleId","type","_createClass2","value","setDefaultTypography","themeEmotionMap","typographyStyle","findTypographyStyleByHtmlTag","id","setTypography","self","_get2","_getPrototypeOf2","prototype","themeStyle","getTypographyStyleId","style","find","x","undefined","clearTypographyStyle","filter","s","hasTypographyStyle","getThemeStyles","setThemeStyles","styles","_toConsumableArray2","updateElementWithThemeClasses","element","theme","emotionMap","typoStyleId","themeClasses","className","addClassNamesToElement","createDOM","config","updateDOM","prevNode","dom","prevTypoStyleId","nextTypoStyleId","exportJSON","_objectSpread2","version","getType","clone","node","__key","importDOM","p","conversion","convertParagraphElement","priority","importJSON","serializedNode","$createParagraphNode","setFormat","format","setIndent","indent","setDirection","direction","BaseParagraphNode","exports","textAlign","$applyNodeReplacement","$isParagraphNode"],"sources":["ParagraphNode.ts"],"sourcesContent":["import {\n $applyNodeReplacement,\n DOMConversionMap,\n DOMConversionOutput,\n ElementFormatType,\n LexicalNode,\n NodeKey,\n ParagraphNode as BaseParagraphNode,\n SerializedParagraphNode as SerializedBaseParagraphNode,\n Spread\n} from \"lexical\";\nimport { EditorConfig } from \"lexical\";\nimport { WebinyTheme, ThemeEmotionMap, findTypographyStyleByHtmlTag } from \"@webiny/lexical-theme\";\nimport { addClassNamesToElement } from \"@lexical/utils\";\nimport { TypographyStylesNode, ThemeStyleValue, TextNodeThemeStyles } from \"~/types\";\n\nexport type SerializeParagraphNode = Spread<\n {\n styles: ThemeStyleValue[];\n type: \"paragraph-element\";\n },\n SerializedBaseParagraphNode\n>;\n\nexport class ParagraphNode\n extends BaseParagraphNode\n implements TextNodeThemeStyles, TypographyStylesNode\n{\n __styles: ThemeStyleValue[] = [];\n\n constructor(typographyStyleId?: string, key?: NodeKey) {\n super(key);\n\n if (typographyStyleId) {\n this.__styles.push({ styleId: typographyStyleId, type: \"typography\" });\n }\n }\n\n protected setDefaultTypography(themeEmotionMap: ThemeEmotionMap) {\n const typographyStyle = findTypographyStyleByHtmlTag(\"p\", themeEmotionMap);\n if (typographyStyle) {\n this.__styles.push({ styleId: typographyStyle.id, type: \"typography\" });\n }\n }\n\n setTypography(typographyStyleId: string): this {\n const self = super.getWritable();\n const themeStyle = {\n styleId: typographyStyleId,\n type: \"typography\"\n } as ThemeStyleValue;\n self.__styles.push(themeStyle);\n return self;\n }\n\n getTypographyStyleId(): string | undefined {\n const style = this.__styles.find(x => x.type === \"typography\");\n return style?.styleId || undefined;\n }\n\n clearTypographyStyle(): this {\n const self = super.getWritable();\n self.__styles = self.__styles.filter(s => s.type !== \"typography\");\n return self;\n }\n\n hasTypographyStyle(): boolean {\n return !!this.getTypographyStyleId();\n }\n\n getThemeStyles(): ThemeStyleValue[] {\n // getLatest() ensures we are getting the most\n // up-to-date value from the EditorState.\n const self = super.getLatest();\n return self.__styles;\n }\n\n setThemeStyles(styles: ThemeStyleValue[]) {\n // getWritable() creates a clone of the node\n // if needed, to ensure we don't try and mutate\n // a stale version of this node.\n const self = super.getWritable();\n self.__styles = [...styles];\n return self;\n }\n\n static override getType(): string {\n return \"paragraph-element\";\n }\n\n static override clone(node: ParagraphNode): ParagraphNode {\n return new ParagraphNode(node.getTypographyStyleId(), node.__key);\n }\n\n protected updateElementWithThemeClasses(element: HTMLElement, theme: WebinyTheme): HTMLElement {\n if (!theme?.emotionMap) {\n return element;\n }\n\n if (!this.hasTypographyStyle()) {\n this.setDefaultTypography(theme.emotionMap);\n }\n\n const typoStyleId = this.getTypographyStyleId();\n\n let themeClasses;\n\n // Typography css class\n if (typoStyleId) {\n const typographyStyle = theme.emotionMap[typoStyleId];\n if (typographyStyle) {\n themeClasses = typographyStyle.className;\n }\n }\n\n if (themeClasses) {\n addClassNamesToElement(element, themeClasses);\n }\n\n return element;\n }\n\n override createDOM(config: EditorConfig): HTMLElement {\n const element = super.createDOM(config);\n return this.updateElementWithThemeClasses(element, config.theme as WebinyTheme);\n }\n\n override updateDOM(\n prevNode: BaseParagraphNode,\n dom: HTMLElement,\n config: EditorConfig\n ): boolean {\n const prevTypoStyleId = prevNode.getTypographyStyleId();\n const nextTypoStyleId = this.getTypographyStyleId();\n\n if (!nextTypoStyleId) {\n this.updateElementWithThemeClasses(dom, config.theme as WebinyTheme);\n return false;\n }\n\n if (prevTypoStyleId !== nextTypoStyleId && nextTypoStyleId) {\n this.updateElementWithThemeClasses(dom, config.theme as WebinyTheme);\n }\n // Returning false tells Lexical that this node does not need its\n // DOM element replacing with a new copy from createDOM.\n return false;\n }\n\n /*\n * On copy/paste event this method will be executed in and create a node\n * */\n static override importDOM(): DOMConversionMap | null {\n return {\n p: () => ({\n conversion: convertParagraphElement,\n priority: 0\n })\n };\n }\n\n /*\n * Serialize the JSON data back into a node\n */\n static override importJSON(serializedNode: SerializeParagraphNode): BaseParagraphNode {\n const node = $createParagraphNode();\n node.setFormat(serializedNode.format);\n node.setIndent(serializedNode.indent);\n node.setDirection(serializedNode.direction);\n node.setThemeStyles(serializedNode.styles);\n return node;\n }\n\n /*\n * Serialize the node to JSON data representation.\n * */\n override exportJSON(): SerializeParagraphNode {\n return {\n ...super.exportJSON(),\n styles: this.__styles,\n type: \"paragraph-element\",\n version: 1\n };\n }\n}\n\nfunction convertParagraphElement(element: HTMLElement): DOMConversionOutput {\n const node = $createParagraphNode();\n if (element.style) {\n node.setFormat(element.style.textAlign as ElementFormatType);\n }\n\n return { node };\n}\n\nexport function $createParagraphNode(typographyStyleId?: string): ParagraphNode {\n return $applyNodeReplacement(new ParagraphNode(typographyStyleId));\n}\n\nexport function $isParagraphNode(node: LexicalNode | null | undefined): node is ParagraphNode {\n return node instanceof ParagraphNode;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAAA,IAAAA,QAAA,GAAAC,OAAA;AAYA,IAAAC,aAAA,GAAAD,OAAA;AACA,IAAAE,MAAA,GAAAF,OAAA;AAAwD,IAW3CG,aAAa,0BAAAC,kBAAA;EAAA,IAAAC,UAAA,CAAAC,OAAA,EAAAH,aAAA,EAAAC,kBAAA;EAAA,IAAAG,MAAA,OAAAC,aAAA,CAAAF,OAAA,EAAAH,aAAA;EAMtB,SAAAA,cAAYM,iBAA0B,EAAEC,GAAa,EAAE;IAAA,IAAAC,KAAA;IAAA,IAAAC,gBAAA,CAAAN,OAAA,QAAAH,aAAA;IACnDQ,KAAA,GAAAJ,MAAA,CAAAM,IAAA,OAAMH,GAAG;IAAE,IAAAI,gBAAA,CAAAR,OAAA,MAAAS,uBAAA,CAAAT,OAAA,EAAAK,KAAA,eAHe,EAAE;IAK5B,IAAIF,iBAAiB,EAAE;MACnBE,KAAA,CAAKK,QAAQ,CAACC,IAAI,CAAC;QAAEC,OAAO,EAAET,iBAAiB;QAAEU,IAAI,EAAE;MAAa,CAAC,CAAC;IAC1E;IAAC,OAAAR,KAAA;EACL;EAAC,IAAAS,aAAA,CAAAd,OAAA,EAAAH,aAAA;IAAAO,GAAA;IAAAW,KAAA,EAED,SAAAC,qBAA+BC,eAAgC,EAAE;MAC7D,IAAMC,eAAe,GAAG,IAAAC,0CAA4B,EAAC,GAAG,EAAEF,eAAe,CAAC;MAC1E,IAAIC,eAAe,EAAE;QACjB,IAAI,CAACR,QAAQ,CAACC,IAAI,CAAC;UAAEC,OAAO,EAAEM,eAAe,CAACE,EAAE;UAAEP,IAAI,EAAE;QAAa,CAAC,CAAC;MAC3E;IACJ;EAAC;IAAAT,GAAA;IAAAW,KAAA,EAED,SAAAM,cAAclB,iBAAyB,EAAQ;MAC3C,IAAMmB,IAAI,OAAAC,KAAA,CAAAvB,OAAA,MAAAwB,gBAAA,CAAAxB,OAAA,EAAAH,aAAA,CAAA4B,SAAA,wBAAAlB,IAAA,MAAsB;MAChC,IAAMmB,UAAU,GAAG;QACfd,OAAO,EAAET,iBAAiB;QAC1BU,IAAI,EAAE;MACV,CAAoB;MACpBS,IAAI,CAACZ,QAAQ,CAACC,IAAI,CAACe,UAAU,CAAC;MAC9B,OAAOJ,IAAI;IACf;EAAC;IAAAlB,GAAA;IAAAW,KAAA,EAED,SAAAY,qBAAA,EAA2C;MACvC,IAAMC,KAAK,GAAG,IAAI,CAAClB,QAAQ,CAACmB,IAAI,CAAC,UAAAC,CAAC;QAAA,OAAIA,CAAC,CAACjB,IAAI,KAAK,YAAY;MAAA,EAAC;MAC9D,OAAO,CAAAe,KAAK,aAALA,KAAK,uBAALA,KAAK,CAAEhB,OAAO,KAAImB,SAAS;IACtC;EAAC;IAAA3B,GAAA;IAAAW,KAAA,EAED,SAAAiB,qBAAA,EAA6B;MACzB,IAAMV,IAAI,OAAAC,KAAA,CAAAvB,OAAA,MAAAwB,gBAAA,CAAAxB,OAAA,EAAAH,aAAA,CAAA4B,SAAA,wBAAAlB,IAAA,MAAsB;MAChCe,IAAI,CAACZ,QAAQ,GAAGY,IAAI,CAACZ,QAAQ,CAACuB,MAAM,CAAC,UAAAC,CAAC;QAAA,OAAIA,CAAC,CAACrB,IAAI,KAAK,YAAY;MAAA,EAAC;MAClE,OAAOS,IAAI;IACf;EAAC;IAAAlB,GAAA;IAAAW,KAAA,EAED,SAAAoB,mBAAA,EAA8B;MAC1B,OAAO,CAAC,CAAC,IAAI,CAACR,oBAAoB,CAAC,CAAC;IACxC;EAAC;IAAAvB,GAAA;IAAAW,KAAA,EAED,SAAAqB,eAAA,EAAoC;MAChC;MACA;MACA,IAAMd,IAAI,OAAAC,KAAA,CAAAvB,OAAA,MAAAwB,gBAAA,CAAAxB,OAAA,EAAAH,aAAA,CAAA4B,SAAA,sBAAAlB,IAAA,MAAoB;MAC9B,OAAOe,IAAI,CAACZ,QAAQ;IACxB;EAAC;IAAAN,GAAA;IAAAW,KAAA,EAED,SAAAsB,eAAeC,MAAyB,EAAE;MACtC;MACA;MACA;MACA,IAAMhB,IAAI,OAAAC,KAAA,CAAAvB,OAAA,MAAAwB,gBAAA,CAAAxB,OAAA,EAAAH,aAAA,CAAA4B,SAAA,wBAAAlB,IAAA,MAAsB;MAChCe,IAAI,CAACZ,QAAQ,OAAA6B,mBAAA,CAAAvC,OAAA,EAAOsC,MAAM,CAAC;MAC3B,OAAOhB,IAAI;IACf;EAAC;IAAAlB,GAAA;IAAAW,KAAA,EAUD,SAAAyB,8BAAwCC,OAAoB,EAAEC,KAAkB,EAAe;MAC3F,IAAI,EAACA,KAAK,aAALA,KAAK,eAALA,KAAK,CAAEC,UAAU,GAAE;QACpB,OAAOF,OAAO;MAClB;MAEA,IAAI,CAAC,IAAI,CAACN,kBAAkB,CAAC,CAAC,EAAE;QAC5B,IAAI,CAACnB,oBAAoB,CAAC0B,KAAK,CAACC,UAAU,CAAC;MAC/C;MAEA,IAAMC,WAAW,GAAG,IAAI,CAACjB,oBAAoB,CAAC,CAAC;MAE/C,IAAIkB,YAAY;;MAEhB;MACA,IAAID,WAAW,EAAE;QACb,IAAM1B,eAAe,GAAGwB,KAAK,CAACC,UAAU,CAACC,WAAW,CAAC;QACrD,IAAI1B,eAAe,EAAE;UACjB2B,YAAY,GAAG3B,eAAe,CAAC4B,SAAS;QAC5C;MACJ;MAEA,IAAID,YAAY,EAAE;QACd,IAAAE,6BAAsB,EAACN,OAAO,EAAEI,YAAY,CAAC;MACjD;MAEA,OAAOJ,OAAO;IAClB;EAAC;IAAArC,GAAA;IAAAW,KAAA,EAED,SAAAiC,UAAmBC,MAAoB,EAAe;MAClD,IAAMR,OAAO,OAAAlB,KAAA,CAAAvB,OAAA,MAAAwB,gBAAA,CAAAxB,OAAA,EAAAH,aAAA,CAAA4B,SAAA,sBAAAlB,IAAA,OAAmB0C,MAAM,CAAC;MACvC,OAAO,IAAI,CAACT,6BAA6B,CAACC,OAAO,EAAEQ,MAAM,CAACP,KAAoB,CAAC;IACnF;EAAC;IAAAtC,GAAA;IAAAW,KAAA,EAED,SAAAmC,UACIC,QAA2B,EAC3BC,GAAgB,EAChBH,MAAoB,EACb;MACP,IAAMI,eAAe,GAAGF,QAAQ,CAACxB,oBAAoB,CAAC,CAAC;MACvD,IAAM2B,eAAe,GAAG,IAAI,CAAC3B,oBAAoB,CAAC,CAAC;MAEnD,IAAI,CAAC2B,eAAe,EAAE;QAClB,IAAI,CAACd,6BAA6B,CAACY,GAAG,EAAEH,MAAM,CAACP,KAAoB,CAAC;QACpE,OAAO,KAAK;MAChB;MAEA,IAAIW,eAAe,KAAKC,eAAe,IAAIA,eAAe,EAAE;QACxD,IAAI,CAACd,6BAA6B,CAACY,GAAG,EAAEH,MAAM,CAACP,KAAoB,CAAC;MACxE;MACA;MACA;MACA,OAAO,KAAK;IAChB;;IAEA;AACJ;AACA;EAFI;IAAAtC,GAAA;IAAAW,KAAA;IAwBA;AACJ;AACA;IACI,SAAAwC,WAAA,EAA8C;MAC1C,WAAAC,cAAA,CAAAxD,OAAA,MAAAwD,cAAA,CAAAxD,OAAA,UAAAuB,KAAA,CAAAvB,OAAA,MAAAwB,gBAAA,CAAAxB,OAAA,EAAAH,aAAA,CAAA4B,SAAA,uBAAAlB,IAAA;QAEI+B,MAAM,EAAE,IAAI,CAAC5B,QAAQ;QACrBG,IAAI,EAAE,mBAAmB;QACzB4C,OAAO,EAAE;MAAC;IAElB;EAAC;IAAArD,GAAA;IAAAW,KAAA,EAhGD,SAAA2C,QAAA,EAAkC;MAC9B,OAAO,mBAAmB;IAC9B;EAAC;IAAAtD,GAAA;IAAAW,KAAA,EAED,SAAA4C,MAAsBC,IAAmB,EAAiB;MACtD,OAAO,IAAI/D,aAAa,CAAC+D,IAAI,CAACjC,oBAAoB,CAAC,CAAC,EAAEiC,IAAI,CAACC,KAAK,CAAC;IACrE;EAAC;IAAAzD,GAAA;IAAAW,KAAA,EA2DD,SAAA+C,UAAA,EAAqD;MACjD,OAAO;QACHC,CAAC,EAAE,SAAAA,EAAA;UAAA,OAAO;YACNC,UAAU,EAAEC,uBAAuB;YACnCC,QAAQ,EAAE;UACd,CAAC;QAAA;MACL,CAAC;IACL;;IAEA;AACJ;AACA;EAFI;IAAA9D,GAAA;IAAAW,KAAA,EAGA,SAAAoD,WAA2BC,cAAsC,EAAqB;MAClF,IAAMR,IAAI,GAAGS,oBAAoB,CAAC,CAAC;MACnCT,IAAI,CAACU,SAAS,CAACF,cAAc,CAACG,MAAM,CAAC;MACrCX,IAAI,CAACY,SAAS,CAACJ,cAAc,CAACK,MAAM,CAAC;MACrCb,IAAI,CAACc,YAAY,CAACN,cAAc,CAACO,SAAS,CAAC;MAC3Cf,IAAI,CAACvB,cAAc,CAAC+B,cAAc,CAAC9B,MAAM,CAAC;MAC1C,OAAOsB,IAAI;IACf;EAAC;EAAA,OAAA/D,aAAA;AAAA,EAjJO+E,sBAAiB;AAAAC,OAAA,CAAAhF,aAAA,GAAAA,aAAA;AAgK7B,SAASoE,uBAAuBA,CAACxB,OAAoB,EAAuB;EACxE,IAAMmB,IAAI,GAAGS,oBAAoB,CAAC,CAAC;EACnC,IAAI5B,OAAO,CAACb,KAAK,EAAE;IACfgC,IAAI,CAACU,SAAS,CAAC7B,OAAO,CAACb,KAAK,CAACkD,SAA8B,CAAC;EAChE;EAEA,OAAO;IAAElB,IAAI,EAAJA;EAAK,CAAC;AACnB;AAEO,SAASS,oBAAoBA,CAAClE,iBAA0B,EAAiB;EAC5E,OAAO,IAAA4E,8BAAqB,EAAC,IAAIlF,aAAa,CAACM,iBAAiB,CAAC,CAAC;AACtE;AAEO,SAAS6E,gBAAgBA,CAACpB,IAAoC,EAAyB;EAC1F,OAAOA,IAAI,YAAY/D,aAAa;AACxC"}
|
|
1
|
+
{"version":3,"names":["_lexical","require","_lexicalTheme","_utils","ParagraphNode","_BaseParagraphNode","_inherits2","default","_super","_createSuper2","typographyStyleId","key","_this","_classCallCheck2","call","_defineProperty2","_assertThisInitialized2","__styles","push","styleId","type","_createClass2","value","setDefaultTypography","themeEmotionMap","typographyStyle","findTypographyStyleByHtmlTag","id","setTypography","self","_get2","_getPrototypeOf2","prototype","themeStyle","getTypographyStyleId","style","find","x","undefined","clearTypographyStyle","filter","s","hasTypographyStyle","getThemeStyles","setThemeStyles","styles","_toConsumableArray2","updateElementWithThemeClasses","element","theme","emotionMap","typoStyleId","themeClasses","className","addClassNamesToElement","createDOM","config","updateDOM","prevNode","dom","prevTypoStyleId","nextTypoStyleId","exportJSON","_objectSpread2","version","getType","clone","node","__key","importDOM","p","conversion","convertParagraphElement","priority","importJSON","serializedNode","$createParagraphNode","setFormat","format","setIndent","indent","setDirection","direction","BaseParagraphNode","exports","textAlign","$applyNodeReplacement","$isParagraphNode"],"sources":["ParagraphNode.ts"],"sourcesContent":["import {\n $applyNodeReplacement,\n DOMConversionMap,\n DOMConversionOutput,\n ElementFormatType,\n LexicalNode,\n NodeKey,\n ParagraphNode as BaseParagraphNode,\n SerializedParagraphNode as SerializedBaseParagraphNode,\n Spread\n} from \"lexical\";\nimport { EditorConfig } from \"lexical\";\nimport { WebinyTheme, ThemeEmotionMap, findTypographyStyleByHtmlTag } from \"@webiny/lexical-theme\";\nimport { addClassNamesToElement } from \"@lexical/utils\";\nimport { TypographyStylesNode, ThemeStyleValue, TextNodeThemeStyles } from \"~/types\";\n\nexport type SerializeParagraphNode = Spread<\n {\n styles: ThemeStyleValue[];\n type: \"paragraph-element\";\n },\n SerializedBaseParagraphNode\n>;\n\nexport class ParagraphNode\n extends BaseParagraphNode\n implements TextNodeThemeStyles, TypographyStylesNode\n{\n __styles: ThemeStyleValue[] = [];\n\n constructor(typographyStyleId?: string, key?: NodeKey) {\n super(key);\n\n if (typographyStyleId) {\n this.__styles.push({ styleId: typographyStyleId, type: \"typography\" });\n }\n }\n\n protected setDefaultTypography(themeEmotionMap: ThemeEmotionMap) {\n const typographyStyle = findTypographyStyleByHtmlTag(\"p\", themeEmotionMap);\n if (typographyStyle) {\n this.__styles.push({ styleId: typographyStyle.id, type: \"typography\" });\n }\n }\n\n setTypography(typographyStyleId: string): this {\n const self = super.getWritable();\n const themeStyle = {\n styleId: typographyStyleId,\n type: \"typography\"\n } as ThemeStyleValue;\n self.__styles.push(themeStyle);\n return self;\n }\n\n getTypographyStyleId(): string | undefined {\n const style = this.__styles.find(x => x.type === \"typography\");\n return style?.styleId || undefined;\n }\n\n clearTypographyStyle(): this {\n const self = super.getWritable();\n self.__styles = self.__styles.filter(s => s.type !== \"typography\");\n return self;\n }\n\n hasTypographyStyle(): boolean {\n return !!this.getTypographyStyleId();\n }\n\n getThemeStyles(): ThemeStyleValue[] {\n // getLatest() ensures we are getting the most\n // up-to-date value from the EditorState.\n const self = super.getLatest();\n return self.__styles;\n }\n\n setThemeStyles(styles: ThemeStyleValue[]) {\n // getWritable() creates a clone of the node\n // if needed, to ensure we don't try and mutate\n // a stale version of this node.\n const self = super.getWritable();\n self.__styles = [...styles];\n return self;\n }\n\n static override getType(): string {\n return \"paragraph-element\";\n }\n\n static override clone(node: ParagraphNode): ParagraphNode {\n return new ParagraphNode(node.getTypographyStyleId(), node.__key);\n }\n\n protected updateElementWithThemeClasses(element: HTMLElement, theme: WebinyTheme): HTMLElement {\n if (!theme?.emotionMap) {\n return element;\n }\n\n if (!this.hasTypographyStyle()) {\n this.setDefaultTypography(theme.emotionMap);\n }\n\n const typoStyleId = this.getTypographyStyleId();\n\n let themeClasses;\n\n // Typography css class\n if (typoStyleId) {\n const typographyStyle = theme.emotionMap[typoStyleId];\n if (typographyStyle) {\n themeClasses = typographyStyle.className;\n }\n }\n\n if (themeClasses) {\n addClassNamesToElement(element, themeClasses);\n }\n\n return element;\n }\n\n override createDOM(config: EditorConfig): HTMLElement {\n const element = super.createDOM(config);\n return this.updateElementWithThemeClasses(element, config.theme as WebinyTheme);\n }\n\n override updateDOM(\n prevNode: BaseParagraphNode,\n dom: HTMLElement,\n config: EditorConfig\n ): boolean {\n const prevTypoStyleId = prevNode.getTypographyStyleId();\n const nextTypoStyleId = this.getTypographyStyleId();\n\n if (!nextTypoStyleId) {\n this.updateElementWithThemeClasses(dom, config.theme as WebinyTheme);\n return false;\n }\n\n if (prevTypoStyleId !== nextTypoStyleId && nextTypoStyleId) {\n this.updateElementWithThemeClasses(dom, config.theme as WebinyTheme);\n }\n // Returning false tells Lexical that this node does not need its\n // DOM element replacing with a new copy from createDOM.\n return false;\n }\n\n /*\n * On copy/paste event this method will be executed in and create a node\n * */\n static override importDOM(): DOMConversionMap | null {\n return {\n p: () => ({\n conversion: convertParagraphElement,\n priority: 0\n })\n };\n }\n\n /*\n * Serialize the JSON data back into a node\n */\n static override importJSON(serializedNode: SerializeParagraphNode): BaseParagraphNode {\n const node = $createParagraphNode();\n node.setFormat(serializedNode.format);\n node.setIndent(serializedNode.indent);\n node.setDirection(serializedNode.direction);\n node.setThemeStyles(serializedNode.styles);\n return node;\n }\n\n /*\n * Serialize the node to JSON data representation.\n * */\n override exportJSON(): SerializeParagraphNode {\n return {\n ...super.exportJSON(),\n styles: this.__styles,\n type: \"paragraph-element\",\n version: 1\n };\n }\n}\n\nfunction convertParagraphElement(element: HTMLElement): DOMConversionOutput {\n const node = $createParagraphNode();\n if (element.style) {\n node.setFormat(element.style.textAlign as ElementFormatType);\n }\n\n return { node };\n}\n\nexport function $createParagraphNode(typographyStyleId?: string): ParagraphNode {\n return $applyNodeReplacement(new ParagraphNode(typographyStyleId));\n}\n\nexport function $isParagraphNode(node: LexicalNode | null | undefined): node is ParagraphNode {\n return node instanceof ParagraphNode;\n}\n"],"mappings":"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"}
|
package/QuoteNode.js
CHANGED
|
@@ -83,7 +83,7 @@ var QuoteNode = /*#__PURE__*/function (_BaseQuoteNode) {
|
|
|
83
83
|
var style = this.__styles.find(function (x) {
|
|
84
84
|
return x.type === "typography";
|
|
85
85
|
});
|
|
86
|
-
return
|
|
86
|
+
return style?.styleId || undefined;
|
|
87
87
|
}
|
|
88
88
|
}, {
|
|
89
89
|
key: "clearTypographyStyle",
|
|
@@ -115,7 +115,7 @@ var QuoteNode = /*#__PURE__*/function (_BaseQuoteNode) {
|
|
|
115
115
|
}, {
|
|
116
116
|
key: "addThemeStylesToHTMLElement",
|
|
117
117
|
value: function addThemeStylesToHTMLElement(element, theme) {
|
|
118
|
-
var themeEmotionMap = theme
|
|
118
|
+
var themeEmotionMap = theme?.emotionMap;
|
|
119
119
|
if (!themeEmotionMap) {
|
|
120
120
|
return element;
|
|
121
121
|
}
|
|
@@ -125,7 +125,7 @@ var QuoteNode = /*#__PURE__*/function (_BaseQuoteNode) {
|
|
|
125
125
|
var styleId = this.getTypographyStyleId();
|
|
126
126
|
if (styleId) {
|
|
127
127
|
var typographyValue = themeEmotionMap[styleId];
|
|
128
|
-
(0, _utils.addClassNamesToElement)(element, typographyValue
|
|
128
|
+
(0, _utils.addClassNamesToElement)(element, typographyValue?.className);
|
|
129
129
|
return element;
|
|
130
130
|
}
|
|
131
131
|
}
|
|
@@ -136,7 +136,7 @@ var QuoteNode = /*#__PURE__*/function (_BaseQuoteNode) {
|
|
|
136
136
|
value: function createDOM(config) {
|
|
137
137
|
var element = (0, _get2.default)((0, _getPrototypeOf2.default)(QuoteNode.prototype), "createDOM", this).call(this, config);
|
|
138
138
|
var wTheme = config.theme;
|
|
139
|
-
var emotionThemeMap = wTheme
|
|
139
|
+
var emotionThemeMap = wTheme?.emotionMap;
|
|
140
140
|
if (!emotionThemeMap) {
|
|
141
141
|
return element;
|
|
142
142
|
}
|
|
@@ -188,17 +188,16 @@ var QuoteNode = /*#__PURE__*/function (_BaseQuoteNode) {
|
|
|
188
188
|
}, {
|
|
189
189
|
key: "importJSON",
|
|
190
190
|
value: function importJSON(serializedNode) {
|
|
191
|
-
var _serializedNode$style;
|
|
192
191
|
var node = $createQuoteNode();
|
|
193
192
|
node.setFormat(serializedNode.format);
|
|
194
193
|
node.setIndent(serializedNode.indent);
|
|
195
194
|
node.setDirection(serializedNode.direction);
|
|
196
|
-
if (!!
|
|
195
|
+
if (!!serializedNode?.styles?.length) {
|
|
197
196
|
node.setThemeStyles(serializedNode.styles);
|
|
198
197
|
return node;
|
|
199
198
|
}
|
|
200
199
|
// for old nodes data migrate the style id into the list
|
|
201
|
-
if (!!
|
|
200
|
+
if (!!serializedNode?.styleId) {
|
|
202
201
|
var styles = [{
|
|
203
202
|
styleId: serializedNode.styleId,
|
|
204
203
|
type: "typography"
|
package/QuoteNode.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_lexicalTheme","require","_utils","_richText","QuoteNode","_BaseQuoteNode","_inherits2","default","_super","_createSuper2","themeStyleId","key","_this","_classCallCheck2","call","_defineProperty2","_assertThisInitialized2","__styles","push","styleId","type","_createClass2","value","setDefaultTypography","themeEmotionMap","typographyStyle","findTypographyStyleByHtmlTag","id","typographyStyleExist","getTypographyStyleId","style","setTypography","typographyStyleId","self","_get2","_getPrototypeOf2","prototype","hasTypographyStyle","themeStyle","find","x","undefined","clearTypographyStyle","filter","s","getThemeStyles","setThemeStyles","styles","_toConsumableArray2","addThemeStylesToHTMLElement","element","theme","emotionMap","typographyValue","addClassNamesToElement","className","createDOM","config","wTheme","emotionThemeMap","exportJSON","_objectSpread2","getType","clone","node","__key","importDomConversionMap","conversion","convertBlockquoteElement","priority","importDOM","_this2","blockquote","importJSON","serializedNode","_serializedNode$style","$createQuoteNode","setFormat","format","setIndent","indent","setDirection","direction","length","BaseQuoteNode","exports","$isQuoteNode"],"sources":["QuoteNode.ts"],"sourcesContent":["import {\n DOMConversion,\n DOMConversionMap,\n EditorConfig,\n LexicalNode,\n NodeKey,\n Spread\n} from \"lexical\";\nimport {\n EditorTheme,\n ThemeEmotionMap,\n WebinyTheme,\n findTypographyStyleByHtmlTag\n} from \"@webiny/lexical-theme\";\nimport { addClassNamesToElement } from \"@lexical/utils\";\nimport {\n QuoteNode as BaseQuoteNode,\n SerializedQuoteNode as BaseSerializedQuoteNode\n} from \"@lexical/rich-text\";\nimport { TextNodeThemeStyles, ThemeStyleValue, TypographyStylesNode } from \"~/types\";\n\nexport type SerializedQuoteNode = Spread<\n {\n styleId?: string;\n styles: ThemeStyleValue[];\n type: \"webiny-quote\";\n },\n BaseSerializedQuoteNode\n>;\n\nexport class QuoteNode extends BaseQuoteNode implements TextNodeThemeStyles, TypographyStylesNode {\n __styles: ThemeStyleValue[] = [];\n\n constructor(themeStyleId?: string, key?: NodeKey) {\n super(key);\n if (themeStyleId) {\n this.__styles.push({ styleId: themeStyleId, type: \"typography\" });\n }\n }\n\n /*\n * Find the first occurrence of the quoteblock in the theme styles and set as default.\n */\n protected setDefaultTypography(themeEmotionMap: ThemeEmotionMap) {\n const typographyStyle = findTypographyStyleByHtmlTag(\"quoteblock\", themeEmotionMap);\n if (typographyStyle) {\n this.__styles.push({ styleId: typographyStyle.id, type: \"typography\" });\n }\n }\n\n protected typographyStyleExist(themeEmotionMap: ThemeEmotionMap): boolean {\n const styleId = this.getTypographyStyleId();\n if (!styleId) {\n return false;\n }\n const style = themeEmotionMap[styleId];\n return !!style;\n }\n\n setTypography(typographyStyleId: string): this {\n const self = super.getWritable();\n if (!typographyStyleId) {\n return self;\n }\n\n if (!this.hasTypographyStyle()) {\n const themeStyle = {\n styleId: typographyStyleId,\n type: \"typography\"\n } as ThemeStyleValue;\n self.__styles.push(themeStyle);\n }\n return self;\n }\n\n getTypographyStyleId(): string | undefined {\n const style = this.__styles.find(x => x.type === \"typography\");\n return style?.styleId || undefined;\n }\n\n clearTypographyStyle(): this {\n const self = super.getWritable();\n self.__styles = self.__styles.filter(s => s.type !== \"typography\");\n return self;\n }\n\n hasTypographyStyle(): boolean {\n return !!this.getTypographyStyleId();\n }\n\n getThemeStyles(): ThemeStyleValue[] {\n const self = super.getLatest();\n return self.__styles;\n }\n\n setThemeStyles(styles: ThemeStyleValue[]) {\n const self = super.getWritable();\n self.__styles = [...styles];\n return self;\n }\n\n static override getType(): string {\n return \"webiny-quote\";\n }\n\n static override clone(node: QuoteNode): QuoteNode {\n return new QuoteNode(node.getTypographyStyleId(), node.__key);\n }\n\n addThemeStylesToHTMLElement(element: HTMLElement, theme: EditorTheme): HTMLElement {\n const themeEmotionMap = theme?.emotionMap;\n\n if (!themeEmotionMap) {\n return element;\n }\n\n // style exist and is in active use\n if (this.hasTypographyStyle() && this.typographyStyleExist(themeEmotionMap)) {\n const styleId = this.getTypographyStyleId();\n if (styleId) {\n const typographyValue = themeEmotionMap[styleId];\n addClassNamesToElement(element, typographyValue?.className);\n return element;\n }\n }\n\n return element;\n }\n\n override createDOM(config: EditorConfig): HTMLElement {\n const element = super.createDOM(config);\n const wTheme = config.theme as WebinyTheme;\n const emotionThemeMap = wTheme?.emotionMap;\n\n if (!emotionThemeMap) {\n return element;\n }\n\n // if styleId is not set or user removed the style from theme, set default style\n if (!this.hasTypographyStyle() || !this.typographyStyleExist(emotionThemeMap)) {\n this.setDefaultTypography(emotionThemeMap);\n }\n\n this.addThemeStylesToHTMLElement(element, config.theme);\n return element;\n }\n\n static importDomConversionMap(): DOMConversion<HTMLElement> | null {\n return {\n conversion: convertBlockquoteElement,\n priority: 0\n };\n }\n\n static override importDOM(): DOMConversionMap | null {\n return {\n blockquote: () => {\n return this.importDomConversionMap();\n }\n };\n }\n\n static override importJSON(serializedNode: SerializedQuoteNode): QuoteNode {\n const node = $createQuoteNode();\n node.setFormat(serializedNode.format);\n node.setIndent(serializedNode.indent);\n node.setDirection(serializedNode.direction);\n if (!!serializedNode?.styles?.length) {\n node.setThemeStyles(serializedNode.styles);\n return node;\n }\n // for old nodes data migrate the style id into the list\n if (!!serializedNode?.styleId) {\n const styles = [\n { styleId: serializedNode.styleId, type: \"typography\" }\n ] as ThemeStyleValue[];\n node.setThemeStyles(styles);\n }\n return node;\n }\n\n override exportJSON(): SerializedQuoteNode {\n return {\n ...super.exportJSON(),\n type: \"webiny-quote\",\n styles: this.__styles,\n styleId: this.getTypographyStyleId()\n };\n }\n}\n\nfunction convertBlockquoteElement() {\n const node = $createQuoteNode();\n return {\n node\n };\n}\n\nexport function $createQuoteNode(themeStyleId?: string, key?: NodeKey): QuoteNode {\n return new QuoteNode(themeStyleId, key);\n}\n\nexport function $isQuoteNode(node: LexicalNode | null | undefined): node is QuoteNode {\n return node instanceof QuoteNode;\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["_lexicalTheme","require","_utils","_richText","QuoteNode","_BaseQuoteNode","_inherits2","default","_super","_createSuper2","themeStyleId","key","_this","_classCallCheck2","call","_defineProperty2","_assertThisInitialized2","__styles","push","styleId","type","_createClass2","value","setDefaultTypography","themeEmotionMap","typographyStyle","findTypographyStyleByHtmlTag","id","typographyStyleExist","getTypographyStyleId","style","setTypography","typographyStyleId","self","_get2","_getPrototypeOf2","prototype","hasTypographyStyle","themeStyle","find","x","undefined","clearTypographyStyle","filter","s","getThemeStyles","setThemeStyles","styles","_toConsumableArray2","addThemeStylesToHTMLElement","element","theme","emotionMap","typographyValue","addClassNamesToElement","className","createDOM","config","wTheme","emotionThemeMap","exportJSON","_objectSpread2","getType","clone","node","__key","importDomConversionMap","conversion","convertBlockquoteElement","priority","importDOM","_this2","blockquote","importJSON","serializedNode","$createQuoteNode","setFormat","format","setIndent","indent","setDirection","direction","length","BaseQuoteNode","exports","$isQuoteNode"],"sources":["QuoteNode.ts"],"sourcesContent":["import {\n DOMConversion,\n DOMConversionMap,\n EditorConfig,\n LexicalNode,\n NodeKey,\n Spread\n} from \"lexical\";\nimport {\n EditorTheme,\n ThemeEmotionMap,\n WebinyTheme,\n findTypographyStyleByHtmlTag\n} from \"@webiny/lexical-theme\";\nimport { addClassNamesToElement } from \"@lexical/utils\";\nimport {\n QuoteNode as BaseQuoteNode,\n SerializedQuoteNode as BaseSerializedQuoteNode\n} from \"@lexical/rich-text\";\nimport { TextNodeThemeStyles, ThemeStyleValue, TypographyStylesNode } from \"~/types\";\n\nexport type SerializedQuoteNode = Spread<\n {\n styleId?: string;\n styles: ThemeStyleValue[];\n type: \"webiny-quote\";\n },\n BaseSerializedQuoteNode\n>;\n\nexport class QuoteNode extends BaseQuoteNode implements TextNodeThemeStyles, TypographyStylesNode {\n __styles: ThemeStyleValue[] = [];\n\n constructor(themeStyleId?: string, key?: NodeKey) {\n super(key);\n if (themeStyleId) {\n this.__styles.push({ styleId: themeStyleId, type: \"typography\" });\n }\n }\n\n /*\n * Find the first occurrence of the quoteblock in the theme styles and set as default.\n */\n protected setDefaultTypography(themeEmotionMap: ThemeEmotionMap) {\n const typographyStyle = findTypographyStyleByHtmlTag(\"quoteblock\", themeEmotionMap);\n if (typographyStyle) {\n this.__styles.push({ styleId: typographyStyle.id, type: \"typography\" });\n }\n }\n\n protected typographyStyleExist(themeEmotionMap: ThemeEmotionMap): boolean {\n const styleId = this.getTypographyStyleId();\n if (!styleId) {\n return false;\n }\n const style = themeEmotionMap[styleId];\n return !!style;\n }\n\n setTypography(typographyStyleId: string): this {\n const self = super.getWritable();\n if (!typographyStyleId) {\n return self;\n }\n\n if (!this.hasTypographyStyle()) {\n const themeStyle = {\n styleId: typographyStyleId,\n type: \"typography\"\n } as ThemeStyleValue;\n self.__styles.push(themeStyle);\n }\n return self;\n }\n\n getTypographyStyleId(): string | undefined {\n const style = this.__styles.find(x => x.type === \"typography\");\n return style?.styleId || undefined;\n }\n\n clearTypographyStyle(): this {\n const self = super.getWritable();\n self.__styles = self.__styles.filter(s => s.type !== \"typography\");\n return self;\n }\n\n hasTypographyStyle(): boolean {\n return !!this.getTypographyStyleId();\n }\n\n getThemeStyles(): ThemeStyleValue[] {\n const self = super.getLatest();\n return self.__styles;\n }\n\n setThemeStyles(styles: ThemeStyleValue[]) {\n const self = super.getWritable();\n self.__styles = [...styles];\n return self;\n }\n\n static override getType(): string {\n return \"webiny-quote\";\n }\n\n static override clone(node: QuoteNode): QuoteNode {\n return new QuoteNode(node.getTypographyStyleId(), node.__key);\n }\n\n addThemeStylesToHTMLElement(element: HTMLElement, theme: EditorTheme): HTMLElement {\n const themeEmotionMap = theme?.emotionMap;\n\n if (!themeEmotionMap) {\n return element;\n }\n\n // style exist and is in active use\n if (this.hasTypographyStyle() && this.typographyStyleExist(themeEmotionMap)) {\n const styleId = this.getTypographyStyleId();\n if (styleId) {\n const typographyValue = themeEmotionMap[styleId];\n addClassNamesToElement(element, typographyValue?.className);\n return element;\n }\n }\n\n return element;\n }\n\n override createDOM(config: EditorConfig): HTMLElement {\n const element = super.createDOM(config);\n const wTheme = config.theme as WebinyTheme;\n const emotionThemeMap = wTheme?.emotionMap;\n\n if (!emotionThemeMap) {\n return element;\n }\n\n // if styleId is not set or user removed the style from theme, set default style\n if (!this.hasTypographyStyle() || !this.typographyStyleExist(emotionThemeMap)) {\n this.setDefaultTypography(emotionThemeMap);\n }\n\n this.addThemeStylesToHTMLElement(element, config.theme);\n return element;\n }\n\n static importDomConversionMap(): DOMConversion<HTMLElement> | null {\n return {\n conversion: convertBlockquoteElement,\n priority: 0\n };\n }\n\n static override importDOM(): DOMConversionMap | null {\n return {\n blockquote: () => {\n return this.importDomConversionMap();\n }\n };\n }\n\n static override importJSON(serializedNode: SerializedQuoteNode): QuoteNode {\n const node = $createQuoteNode();\n node.setFormat(serializedNode.format);\n node.setIndent(serializedNode.indent);\n node.setDirection(serializedNode.direction);\n if (!!serializedNode?.styles?.length) {\n node.setThemeStyles(serializedNode.styles);\n return node;\n }\n // for old nodes data migrate the style id into the list\n if (!!serializedNode?.styleId) {\n const styles = [\n { styleId: serializedNode.styleId, type: \"typography\" }\n ] as ThemeStyleValue[];\n node.setThemeStyles(styles);\n }\n return node;\n }\n\n override exportJSON(): SerializedQuoteNode {\n return {\n ...super.exportJSON(),\n type: \"webiny-quote\",\n styles: this.__styles,\n styleId: this.getTypographyStyleId()\n };\n }\n}\n\nfunction convertBlockquoteElement() {\n const node = $createQuoteNode();\n return {\n node\n };\n}\n\nexport function $createQuoteNode(themeStyleId?: string, key?: NodeKey): QuoteNode {\n return new QuoteNode(themeStyleId, key);\n}\n\nexport function $isQuoteNode(node: LexicalNode | null | undefined): node is QuoteNode {\n return node instanceof QuoteNode;\n}\n"],"mappings":"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"}
|
package/TypographyNode.js
CHANGED
|
@@ -51,7 +51,7 @@ var TypographyNode = /*#__PURE__*/function (_ElementNode) {
|
|
|
51
51
|
}, {
|
|
52
52
|
key: "addStylesHTMLElement",
|
|
53
53
|
value: function addStylesHTMLElement(element, theme) {
|
|
54
|
-
var typographyStyleValue = theme
|
|
54
|
+
var typographyStyleValue = theme?.emotionMap ? theme?.emotionMap[this.__styleId] : undefined;
|
|
55
55
|
if (typographyStyleValue) {
|
|
56
56
|
this.__css = typographyStyleValue.styles;
|
|
57
57
|
(0, _utils.addClassNamesToElement)(element, typographyStyleValue.className);
|
package/TypographyNode.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_lexical","require","_utils","_ParagraphNode","ADD_TYPOGRAPHY_COMMAND","createCommand","exports","TypographyNodeAttrName","TypographyNode","_ElementNode","_inherits2","default","_super","_createSuper2","value","key","_this","_classCallCheck2","call","__tag","tag","__styleId","id","__name","name","__css","css","_createClass2","getTypographyValue","addStylesHTMLElement","element","theme","typographyStyleValue","emotionMap","undefined","styles","addClassNamesToElement","className","setAttribute","exportJSON","_objectSpread2","_get2","_getPrototypeOf2","prototype","typographyStyles","styleId","type","version","createDOM","config","document","createElement","updateDOM","insertNewAfter","newElement","$createTypographyNode","direction","getDirection","setDirection","insertAfter","collapseAtStart","paragraph","$createParagraphNode","children","getChildren","forEach","child","append","replace","getType","clone","node","__key","importJSON","serializedNode","setFormat","format","setIndent","indent","ElementNode","$isTypographyNode"],"sources":["TypographyNode.ts"],"sourcesContent":["import {\n createCommand,\n EditorConfig,\n ElementNode,\n LexicalCommand,\n LexicalEditor,\n LexicalNode,\n NodeKey,\n SerializedElementNode,\n Spread\n} from \"lexical\";\nimport { addClassNamesToElement } from \"@lexical/utils\";\nimport { EditorTheme, TypographyHTMLTag, TypographyValue } from \"@webiny/lexical-theme\";\nimport { $createParagraphNode } from \"~/ParagraphNode\";\n\n// Command and payload\nexport const ADD_TYPOGRAPHY_COMMAND: LexicalCommand<TypographyPayload> =\n createCommand(\"ADD_TYPOGRAPHY_COMMAND\");\n\nconst TypographyNodeAttrName = \"data-typography-style-id\";\n\nexport interface TypographyPayload {\n value: TypographyValue;\n caption?: LexicalEditor;\n key?: NodeKey;\n}\n\n// Node\nexport type SerializedTypographyNode = Spread<\n {\n tag: TypographyHTMLTag;\n styleId: string;\n name: string;\n typographyStyles: Record<string, any>;\n type: \"typography-el-node\";\n version: 1;\n },\n SerializedElementNode\n>;\n\n/**\n * Main responsibility of this node is to apply custom or Webiny theme typography to selected text.\n * Extends the original ElementNode node to add additional transformation and support for webiny theme typography.\n */\nexport class TypographyNode extends ElementNode {\n __styleId: string;\n __tag: TypographyHTMLTag;\n __name: string;\n __css: Record<string, any>;\n\n constructor(value: TypographyValue, key?: NodeKey) {\n super(key);\n this.__tag = value.tag;\n this.__styleId = value.id;\n this.__name = value.name;\n this.__css = value.css;\n }\n\n static override getType(): string {\n return \"typography-el-node\";\n }\n\n static override clone(node: TypographyNode): TypographyNode {\n return new TypographyNode(\n {\n css: node.__css,\n id: node.__styleId,\n name: node.__name,\n tag: node.__tag\n },\n node.__key\n );\n }\n getTypographyValue(): TypographyValue {\n return {\n tag: this.__tag,\n css: this.__css,\n id: this.__styleId,\n name: this.__name\n };\n }\n\n addStylesHTMLElement(element: HTMLElement, theme: EditorTheme): HTMLElement {\n const typographyStyleValue = theme?.emotionMap\n ? theme?.emotionMap[this.__styleId]\n : undefined;\n if (typographyStyleValue) {\n this.__css = typographyStyleValue.styles;\n addClassNamesToElement(element, typographyStyleValue.className);\n }\n element.setAttribute(TypographyNodeAttrName, this.__styleId);\n\n return element;\n }\n\n override exportJSON(): SerializedTypographyNode {\n return {\n ...super.exportJSON(),\n tag: this.__tag,\n typographyStyles: this.__css,\n name: this.__name,\n styleId: this.__styleId,\n type: \"typography-el-node\",\n version: 1\n };\n }\n\n static override importJSON(serializedNode: SerializedTypographyNode): TypographyNode {\n const node = new TypographyNode({\n id: serializedNode.styleId,\n css: serializedNode.typographyStyles,\n tag: serializedNode.tag,\n name: serializedNode.name\n });\n node.setFormat(serializedNode.format);\n node.setIndent(serializedNode.indent);\n node.setDirection(serializedNode.direction);\n return node;\n }\n\n override createDOM(config: EditorConfig): HTMLElement {\n const tag = this.__tag;\n const element = document.createElement(tag);\n return this.addStylesHTMLElement(element, config.theme);\n }\n\n override updateDOM(): boolean {\n return false;\n }\n\n override insertNewAfter(): TypographyNode {\n const newElement = $createTypographyNode({\n tag: this.__tag,\n name: this.__name,\n css: this.__css,\n id: this.__styleId\n });\n const direction = this.getDirection();\n newElement.setDirection(direction);\n this.insertAfter(newElement);\n return newElement;\n }\n\n override collapseAtStart(): true {\n const paragraph = $createParagraphNode();\n const children = this.getChildren();\n children.forEach(child => paragraph.append(child));\n this.replace(paragraph);\n return true;\n }\n}\n\nexport const $createTypographyNode = (value: TypographyValue, key?: NodeKey): TypographyNode => {\n return new TypographyNode(value, key);\n};\n\nexport const $isTypographyNode = (\n node: ElementNode | LexicalNode | null\n): node is TypographyNode => {\n return node instanceof TypographyNode;\n};\n"],"mappings":";;;;;;;;;;;;;;AAAA,IAAAA,QAAA,GAAAC,OAAA;AAWA,IAAAC,MAAA,GAAAD,OAAA;AAEA,IAAAE,cAAA,GAAAF,OAAA;AAEA;AACO,IAAMG,sBAAyD,GAClE,IAAAC,sBAAa,EAAC,wBAAwB,CAAC;AAACC,OAAA,CAAAF,sBAAA,GAAAA,sBAAA;AAE5C,IAAMG,sBAAsB,GAAG,0BAA0B;;AAQzD;AAaA;AACA;AACA;AACA;AAHA,IAIaC,cAAc,0BAAAC,YAAA;EAAA,IAAAC,UAAA,CAAAC,OAAA,EAAAH,cAAA,EAAAC,YAAA;EAAA,IAAAG,MAAA,OAAAC,aAAA,CAAAF,OAAA,EAAAH,cAAA;EAMvB,SAAAA,eAAYM,KAAsB,EAAEC,GAAa,EAAE;IAAA,IAAAC,KAAA;IAAA,IAAAC,gBAAA,CAAAN,OAAA,QAAAH,cAAA;IAC/CQ,KAAA,GAAAJ,MAAA,CAAAM,IAAA,OAAMH,GAAG;IACTC,KAAA,CAAKG,KAAK,GAAGL,KAAK,CAACM,GAAG;IACtBJ,KAAA,CAAKK,SAAS,GAAGP,KAAK,CAACQ,EAAE;IACzBN,KAAA,CAAKO,MAAM,GAAGT,KAAK,CAACU,IAAI;IACxBR,KAAA,CAAKS,KAAK,GAAGX,KAAK,CAACY,GAAG;IAAC,OAAAV,KAAA;EAC3B;EAAC,IAAAW,aAAA,CAAAhB,OAAA,EAAAH,cAAA;IAAAO,GAAA;IAAAD,KAAA,EAiBD,SAAAc,mBAAA,EAAsC;MAClC,OAAO;QACHR,GAAG,EAAE,IAAI,CAACD,KAAK;QACfO,GAAG,EAAE,IAAI,CAACD,KAAK;QACfH,EAAE,EAAE,IAAI,CAACD,SAAS;QAClBG,IAAI,EAAE,IAAI,CAACD;MACf,CAAC;IACL;EAAC;IAAAR,GAAA;IAAAD,KAAA,EAED,SAAAe,qBAAqBC,OAAoB,EAAEC,KAAkB,EAAe;MACxE,IAAMC,oBAAoB,GAAGD,KAAK,
|
|
1
|
+
{"version":3,"names":["_lexical","require","_utils","_ParagraphNode","ADD_TYPOGRAPHY_COMMAND","createCommand","exports","TypographyNodeAttrName","TypographyNode","_ElementNode","_inherits2","default","_super","_createSuper2","value","key","_this","_classCallCheck2","call","__tag","tag","__styleId","id","__name","name","__css","css","_createClass2","getTypographyValue","addStylesHTMLElement","element","theme","typographyStyleValue","emotionMap","undefined","styles","addClassNamesToElement","className","setAttribute","exportJSON","_objectSpread2","_get2","_getPrototypeOf2","prototype","typographyStyles","styleId","type","version","createDOM","config","document","createElement","updateDOM","insertNewAfter","newElement","$createTypographyNode","direction","getDirection","setDirection","insertAfter","collapseAtStart","paragraph","$createParagraphNode","children","getChildren","forEach","child","append","replace","getType","clone","node","__key","importJSON","serializedNode","setFormat","format","setIndent","indent","ElementNode","$isTypographyNode"],"sources":["TypographyNode.ts"],"sourcesContent":["import {\n createCommand,\n EditorConfig,\n ElementNode,\n LexicalCommand,\n LexicalEditor,\n LexicalNode,\n NodeKey,\n SerializedElementNode,\n Spread\n} from \"lexical\";\nimport { addClassNamesToElement } from \"@lexical/utils\";\nimport { EditorTheme, TypographyHTMLTag, TypographyValue } from \"@webiny/lexical-theme\";\nimport { $createParagraphNode } from \"~/ParagraphNode\";\n\n// Command and payload\nexport const ADD_TYPOGRAPHY_COMMAND: LexicalCommand<TypographyPayload> =\n createCommand(\"ADD_TYPOGRAPHY_COMMAND\");\n\nconst TypographyNodeAttrName = \"data-typography-style-id\";\n\nexport interface TypographyPayload {\n value: TypographyValue;\n caption?: LexicalEditor;\n key?: NodeKey;\n}\n\n// Node\nexport type SerializedTypographyNode = Spread<\n {\n tag: TypographyHTMLTag;\n styleId: string;\n name: string;\n typographyStyles: Record<string, any>;\n type: \"typography-el-node\";\n version: 1;\n },\n SerializedElementNode\n>;\n\n/**\n * Main responsibility of this node is to apply custom or Webiny theme typography to selected text.\n * Extends the original ElementNode node to add additional transformation and support for webiny theme typography.\n */\nexport class TypographyNode extends ElementNode {\n __styleId: string;\n __tag: TypographyHTMLTag;\n __name: string;\n __css: Record<string, any>;\n\n constructor(value: TypographyValue, key?: NodeKey) {\n super(key);\n this.__tag = value.tag;\n this.__styleId = value.id;\n this.__name = value.name;\n this.__css = value.css;\n }\n\n static override getType(): string {\n return \"typography-el-node\";\n }\n\n static override clone(node: TypographyNode): TypographyNode {\n return new TypographyNode(\n {\n css: node.__css,\n id: node.__styleId,\n name: node.__name,\n tag: node.__tag\n },\n node.__key\n );\n }\n getTypographyValue(): TypographyValue {\n return {\n tag: this.__tag,\n css: this.__css,\n id: this.__styleId,\n name: this.__name\n };\n }\n\n addStylesHTMLElement(element: HTMLElement, theme: EditorTheme): HTMLElement {\n const typographyStyleValue = theme?.emotionMap\n ? theme?.emotionMap[this.__styleId]\n : undefined;\n if (typographyStyleValue) {\n this.__css = typographyStyleValue.styles;\n addClassNamesToElement(element, typographyStyleValue.className);\n }\n element.setAttribute(TypographyNodeAttrName, this.__styleId);\n\n return element;\n }\n\n override exportJSON(): SerializedTypographyNode {\n return {\n ...super.exportJSON(),\n tag: this.__tag,\n typographyStyles: this.__css,\n name: this.__name,\n styleId: this.__styleId,\n type: \"typography-el-node\",\n version: 1\n };\n }\n\n static override importJSON(serializedNode: SerializedTypographyNode): TypographyNode {\n const node = new TypographyNode({\n id: serializedNode.styleId,\n css: serializedNode.typographyStyles,\n tag: serializedNode.tag,\n name: serializedNode.name\n });\n node.setFormat(serializedNode.format);\n node.setIndent(serializedNode.indent);\n node.setDirection(serializedNode.direction);\n return node;\n }\n\n override createDOM(config: EditorConfig): HTMLElement {\n const tag = this.__tag;\n const element = document.createElement(tag);\n return this.addStylesHTMLElement(element, config.theme);\n }\n\n override updateDOM(): boolean {\n return false;\n }\n\n override insertNewAfter(): TypographyNode {\n const newElement = $createTypographyNode({\n tag: this.__tag,\n name: this.__name,\n css: this.__css,\n id: this.__styleId\n });\n const direction = this.getDirection();\n newElement.setDirection(direction);\n this.insertAfter(newElement);\n return newElement;\n }\n\n override collapseAtStart(): true {\n const paragraph = $createParagraphNode();\n const children = this.getChildren();\n children.forEach(child => paragraph.append(child));\n this.replace(paragraph);\n return true;\n }\n}\n\nexport const $createTypographyNode = (value: TypographyValue, key?: NodeKey): TypographyNode => {\n return new TypographyNode(value, key);\n};\n\nexport const $isTypographyNode = (\n node: ElementNode | LexicalNode | null\n): node is TypographyNode => {\n return node instanceof TypographyNode;\n};\n"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@webiny/lexical-nodes",
|
|
3
|
-
"version": "5.39.0-beta.
|
|
3
|
+
"version": "5.39.0-beta.3",
|
|
4
4
|
"dependencies": {
|
|
5
5
|
"@lexical/code": "0.12.2",
|
|
6
6
|
"@lexical/hashtag": "0.12.2",
|
|
@@ -12,12 +12,12 @@
|
|
|
12
12
|
"@lexical/rich-text": "0.12.2",
|
|
13
13
|
"@lexical/selection": "0.12.2",
|
|
14
14
|
"@lexical/utils": "0.12.2",
|
|
15
|
-
"@webiny/lexical-theme": "5.39.0-beta.
|
|
15
|
+
"@webiny/lexical-theme": "5.39.0-beta.3",
|
|
16
16
|
"lexical": "0.12.2"
|
|
17
17
|
},
|
|
18
18
|
"devDependencies": {
|
|
19
|
-
"@webiny/cli": "5.39.0-beta.
|
|
20
|
-
"@webiny/project-utils": "5.39.0-beta.
|
|
19
|
+
"@webiny/cli": "5.39.0-beta.3",
|
|
20
|
+
"@webiny/project-utils": "5.39.0-beta.3",
|
|
21
21
|
"react": "17.0.2"
|
|
22
22
|
},
|
|
23
23
|
"publishConfig": {
|
|
@@ -28,5 +28,5 @@
|
|
|
28
28
|
"build": "yarn webiny run build",
|
|
29
29
|
"watch": "yarn webiny run watch"
|
|
30
30
|
},
|
|
31
|
-
"gitHead": "
|
|
31
|
+
"gitHead": "3846541fd9c1764e6a8041f0b4208d720eb9c314"
|
|
32
32
|
}
|
package/utils/formatList.js
CHANGED
|
@@ -413,7 +413,7 @@ function $handleListInsertParagraph() {
|
|
|
413
413
|
console.log("A WebinyListItemNode must have a WebinyListNode for a parent.");
|
|
414
414
|
return false;
|
|
415
415
|
}
|
|
416
|
-
var grandparent =
|
|
416
|
+
var grandparent = parent?.getParent() || null;
|
|
417
417
|
var replacementNode;
|
|
418
418
|
if ((0, _lexical.$isRootOrShadowRoot)(grandparent)) {
|
|
419
419
|
replacementNode = (0, _ParagraphNode.$createParagraphNode)();
|
|
@@ -427,7 +427,7 @@ function $handleListInsertParagraph() {
|
|
|
427
427
|
replacementNode.select();
|
|
428
428
|
var nextSiblings = anchor.getNextSiblings();
|
|
429
429
|
if (nextSiblings.length > 0) {
|
|
430
|
-
var newList = (0, _ListNode.$createListNode)(parent
|
|
430
|
+
var newList = (0, _ListNode.$createListNode)(parent?.getListType(), parent?.getStyleId());
|
|
431
431
|
if ((0, _lexical.$isParagraphNode)(replacementNode)) {
|
|
432
432
|
replacementNode.insertAfter(newList);
|
|
433
433
|
} else {
|
package/utils/formatList.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_lexical","require","_ListNode","_utils","_ListItemNode","_ParagraphNode","_listNode","DEFAULT_LIST_START_NUMBER","$isSelectingEmptyListItem","anchorNode","nodes","$isListItemNode","length","is","getChildrenSize","$getListItemValue","listItem","list","getParent","value","$isListNode","console","log","getStart","siblings","getPreviousSiblings","i","sibling","getFirstChild","insertList","editor","listType","styleId","update","selection","$getSelection","$isRangeSelection","DEPRECATED_$isGridSelection","getNodes","anchor","getNode","anchorNodeParent","$createListNode","$isRootOrShadowRoot","replace","$createListItemNode","$isElementNode","setFormat","getFormatType","setIndent","getIndent","append","parent","getParentOrThrow","getChildren","handled","Set","node","isEmpty","has","getKey","createListOrMerge","$isLeafNode","parentKey","newListNode","updateChildrenListItemValue","add","nextParent","nodesToAppend","splice","previousSibling","getPreviousSibling","nextSibling","getNextSibling","getListType","remove","getFirstChildOrThrow","insertBefore","mergeLists","list1","list2","listItem1","getLastChild","listItem2","isNestedListNode","toMerge","apply","_toConsumableArray2","default","removeList","listNodes","$getTopListNode","listItemNode","$getNearestNodeOfType","ListItemNode","_iterator","_createForOfIteratorHelper2","_step","s","n","done","listNode","insertionPoint","listItems","$getAllListItems","_iterator2","_step2","paragraph","$createParagraphNode","insertAfter","__key","key","set","focus","err","e","f","children","childrenOrExisting","undefined","child","prevValue","getValue","nextValue","setValue","$handleIndent","WebinyListItemNodes","removed","forEach","WebinyListItemNode","innerList","nextInnerList","firstChild","newListItem","newList","getStyleId","$handleOutdent","parentList","grandparentListItem","greatGrandparentList","lastChild","themeStyleId","previousSiblingsListItem","previousSiblingsList","nextSiblingsListItem","nextSiblingsList","getNextSiblings","maybeIndentOrOutdent","direction","selectedNodes","webinyListItemNodes","push","nearestWebinyListItemNode","findNearestListItemNode","getUniqueListItemNodes","indentList","outdentList","$handleListInsertParagraph","isCollapsed","getTextContent","topListNode","grandparent","replacementNode","select","nextSiblings","$isParagraphNode","$removeHighestEmptyListParent"],"sources":["formatList.ts"],"sourcesContent":["import {\n $getSelection,\n $isElementNode,\n $isLeafNode,\n $isParagraphNode,\n $isRangeSelection,\n $isRootOrShadowRoot,\n DEPRECATED_$isGridSelection,\n ElementNode,\n LexicalEditor,\n LexicalNode,\n NodeKey\n} from \"lexical\";\nimport { $createListNode, $isListNode, ListNode } from \"~/ListNode\";\nimport { $getNearestNodeOfType } from \"@lexical/utils\";\nimport { $createListItemNode, $isListItemNode, ListItemNode } from \"~/ListItemNode\";\nimport { ListType } from \"@lexical/list\";\nimport { $createParagraphNode, ParagraphNode } from \"~/ParagraphNode\";\nimport {\n $getAllListItems,\n $getTopListNode,\n $removeHighestEmptyListParent,\n findNearestListItemNode,\n getUniqueListItemNodes,\n isNestedListNode\n} from \"~/utils/listNode\";\n\nconst DEFAULT_LIST_START_NUMBER = 1;\n\nfunction $isSelectingEmptyListItem(\n anchorNode: ListItemNode | LexicalNode,\n nodes: Array<LexicalNode>\n): boolean {\n return (\n $isListItemNode(anchorNode) &&\n (nodes.length === 0 ||\n (nodes.length === 1 && anchorNode.is(nodes[0]) && anchorNode.getChildrenSize() === 0))\n );\n}\n\nfunction $getListItemValue(listItem: ListItemNode): number {\n const list = listItem.getParent();\n\n let value = 1;\n\n if (list !== null) {\n if (!$isListNode(list)) {\n console.log(\n \"$getListItemValue: webiny list node is not parent of webiny list item node\"\n );\n return DEFAULT_LIST_START_NUMBER;\n } else {\n value = list.getStart();\n }\n }\n\n const siblings = listItem.getPreviousSiblings();\n for (let i = 0; i < siblings.length; i++) {\n const sibling = siblings[i];\n\n if ($isListItemNode(sibling) && !$isListNode(sibling.getFirstChild())) {\n value++;\n }\n }\n return value;\n}\n\nexport function insertList(editor: LexicalEditor, listType: ListType, styleId?: string): void {\n editor.update(() => {\n const selection = $getSelection();\n\n if ($isRangeSelection(selection) || DEPRECATED_$isGridSelection(selection)) {\n const nodes = selection.getNodes();\n const anchor = selection.anchor;\n const anchorNode = anchor.getNode();\n const anchorNodeParent = anchorNode.getParent();\n\n if ($isSelectingEmptyListItem(anchorNode, nodes)) {\n const list = $createListNode(listType, styleId);\n\n if ($isRootOrShadowRoot(anchorNodeParent)) {\n anchorNode.replace(list);\n const listItem = $createListItemNode();\n if ($isElementNode(anchorNode)) {\n listItem.setFormat(anchorNode.getFormatType());\n listItem.setIndent(anchorNode.getIndent());\n }\n list.append(listItem);\n } else if ($isListItemNode(anchorNode)) {\n const parent = anchorNode.getParentOrThrow();\n append(list, parent.getChildren());\n parent.replace(list);\n }\n\n return;\n } else {\n const handled = new Set();\n for (let i = 0; i < nodes.length; i++) {\n const node = nodes[i];\n\n if ($isElementNode(node) && node.isEmpty() && !handled.has(node.getKey())) {\n createListOrMerge(node, listType, styleId);\n continue;\n }\n\n if ($isLeafNode(node)) {\n let parent = node.getParent();\n while (parent != null) {\n const parentKey = parent.getKey();\n\n if ($isListNode(parent)) {\n if (!handled.has(parentKey)) {\n const newListNode = $createListNode(listType, styleId);\n append(newListNode, parent.getChildren());\n parent.replace(newListNode);\n updateChildrenListItemValue(newListNode);\n handled.add(parentKey);\n }\n\n break;\n } else {\n const nextParent = parent.getParent();\n\n if ($isRootOrShadowRoot(nextParent) && !handled.has(parentKey)) {\n handled.add(parentKey);\n createListOrMerge(parent, listType, styleId);\n break;\n }\n\n parent = nextParent;\n }\n }\n }\n }\n }\n }\n });\n}\n\nfunction append(node: ElementNode, nodesToAppend: Array<LexicalNode>) {\n node.splice(node.getChildrenSize(), 0, nodesToAppend);\n}\n\nfunction createListOrMerge(node: ElementNode, listType: ListType, styleId?: string): ListNode {\n if ($isListNode(node)) {\n return node;\n }\n\n const previousSibling = node.getPreviousSibling();\n const nextSibling = node.getNextSibling();\n const listItem = $createListItemNode();\n listItem.setFormat(node.getFormatType());\n listItem.setIndent(node.getIndent());\n append(listItem, node.getChildren());\n\n if ($isListNode(previousSibling) && listType === previousSibling.getListType()) {\n previousSibling.append(listItem);\n node.remove();\n // if the same type of list is on both sides, merge them.\n\n if ($isListNode(nextSibling) && listType === nextSibling.getListType()) {\n append(previousSibling, nextSibling.getChildren());\n nextSibling.remove();\n }\n return previousSibling;\n } else if ($isListNode(nextSibling) && listType === nextSibling.getListType()) {\n nextSibling.getFirstChildOrThrow().insertBefore(listItem);\n node.remove();\n return nextSibling;\n } else {\n const list = $createListNode(listType, styleId);\n list.append(listItem);\n node.replace(list);\n updateChildrenListItemValue(list);\n return list;\n }\n}\n\n/**\n * A recursive function that goes through each list and their children, including nested lists,\n * appending list2 children after list1 children and updating ListItemNode values.\n * @param list1 - The first list to be merged.\n * @param list2 - The second list to be merged.\n */\nexport function mergeLists(list1: ListNode, list2: ListNode): void {\n const listItem1 = list1.getLastChild();\n const listItem2 = list2.getFirstChild();\n\n if (listItem1 && listItem2 && isNestedListNode(listItem1) && isNestedListNode(listItem2)) {\n mergeLists(listItem1.getFirstChild(), listItem2.getFirstChild());\n listItem2.remove();\n }\n\n const toMerge = list2.getChildren();\n if (toMerge.length > 0) {\n list1.append(...toMerge);\n updateChildrenListItemValue(list1);\n }\n\n list2.remove();\n}\n\nexport function removeList(editor: LexicalEditor): void {\n editor.update(() => {\n const selection = $getSelection();\n\n if ($isRangeSelection(selection)) {\n const listNodes = new Set<ListNode>();\n const nodes = selection.getNodes();\n const anchorNode = selection.anchor.getNode();\n\n if ($isSelectingEmptyListItem(anchorNode, nodes)) {\n listNodes.add($getTopListNode(anchorNode));\n } else {\n for (let i = 0; i < nodes.length; i++) {\n const node = nodes[i];\n\n if ($isLeafNode(node)) {\n const listItemNode = $getNearestNodeOfType(node, ListItemNode);\n\n if (listItemNode != null) {\n listNodes.add($getTopListNode(listItemNode));\n }\n }\n }\n }\n\n for (const listNode of listNodes) {\n let insertionPoint: ListNode | ParagraphNode = listNode;\n\n const listItems = $getAllListItems(listNode);\n\n for (const listItemNode of listItems) {\n const paragraph = $createParagraphNode();\n\n append(paragraph, listItemNode.getChildren());\n\n insertionPoint.insertAfter(paragraph);\n insertionPoint = paragraph;\n\n // When the anchor and focus fall on the textNode\n // we don't have to change the selection because the textNode will be appended to\n // the newly generated paragraph.\n // When selection is in empty nested list item, selection is actually on the listItemNode.\n // When the corresponding listItemNode is deleted and replaced by the newly generated paragraph\n // we should manually set the selection's focus and anchor to the newly generated paragraph.\n if (listItemNode.__key === selection.anchor.key) {\n selection.anchor.set(paragraph.getKey(), 0, \"element\");\n }\n if (listItemNode.__key === selection.focus.key) {\n selection.focus.set(paragraph.getKey(), 0, \"element\");\n }\n\n listItemNode.remove();\n }\n listNode.remove();\n }\n }\n });\n}\n\nexport function updateChildrenListItemValue(list: ListNode, children?: Array<LexicalNode>): void {\n const childrenOrExisting = children || list.getChildren();\n if (childrenOrExisting !== undefined) {\n for (let i = 0; i < childrenOrExisting.length; i++) {\n const child = childrenOrExisting[i];\n if ($isListItemNode(child)) {\n const prevValue = child.getValue();\n const nextValue = $getListItemValue(child);\n\n if (prevValue !== nextValue) {\n child.setValue(nextValue);\n }\n }\n }\n }\n}\n\nexport function $handleIndent(WebinyListItemNodes: Array<ListItemNode>): void {\n // go through each node and decide where to move it.\n const removed = new Set<NodeKey>();\n\n WebinyListItemNodes.forEach((WebinyListItemNode: ListItemNode) => {\n if (isNestedListNode(WebinyListItemNode) || removed.has(WebinyListItemNode.getKey())) {\n return;\n }\n\n const parent = WebinyListItemNode.getParent();\n\n // We can cast both of the below `isNestedListNode` only returns a boolean type instead of a user-defined type guards\n const nextSibling = WebinyListItemNode.getNextSibling<ListItemNode>() as ListItemNode;\n const previousSibling =\n WebinyListItemNode.getPreviousSibling<ListItemNode>() as ListItemNode;\n // if there are nested lists on either side, merge them all together.\n\n if (isNestedListNode(nextSibling) && isNestedListNode(previousSibling)) {\n const innerList = previousSibling.getFirstChild();\n\n if ($isListNode(innerList)) {\n innerList.append(WebinyListItemNode);\n const nextInnerList = nextSibling.getFirstChild();\n\n if ($isListNode(nextInnerList)) {\n const children = nextInnerList.getChildren();\n append(innerList, children);\n nextSibling.remove();\n removed.add(nextSibling.getKey());\n }\n updateChildrenListItemValue(innerList);\n }\n } else if (isNestedListNode(nextSibling)) {\n // if the WebinyListItemNode is next to a nested ListNode, merge them\n const innerList = nextSibling.getFirstChild();\n\n if ($isListNode(innerList)) {\n const firstChild = innerList.getFirstChild();\n\n if (firstChild !== null) {\n firstChild.insertBefore(WebinyListItemNode);\n }\n updateChildrenListItemValue(innerList);\n }\n } else if (isNestedListNode(previousSibling)) {\n const innerList = previousSibling.getFirstChild();\n\n if ($isListNode(innerList)) {\n innerList.append(WebinyListItemNode);\n updateChildrenListItemValue(innerList);\n }\n } else {\n // otherwise, we need to create a new nested ListNode\n\n if ($isListNode(parent)) {\n const newListItem = $createListItemNode();\n const newList = $createListNode(parent.getListType(), parent.getStyleId());\n newListItem.append(newList);\n newList.append(WebinyListItemNode);\n\n if (previousSibling) {\n previousSibling.insertAfter(newListItem);\n } else if (nextSibling) {\n nextSibling.insertBefore(newListItem);\n } else {\n parent.append(newListItem);\n }\n }\n }\n\n if ($isListNode(parent)) {\n updateChildrenListItemValue(parent);\n }\n });\n}\n\nexport function $handleOutdent(WebinyListItemNodes: Array<ListItemNode>): void {\n // go through each node and decide where to move it.\n\n WebinyListItemNodes.forEach(WebinyListItemNode => {\n if (isNestedListNode(WebinyListItemNode)) {\n return;\n }\n const parentList = WebinyListItemNode.getParent();\n const grandparentListItem = parentList ? parentList.getParent() : undefined;\n const greatGrandparentList = grandparentListItem\n ? grandparentListItem.getParent()\n : undefined;\n // If it doesn't have these ancestors, it's not indented.\n\n if (\n $isListNode(greatGrandparentList) &&\n $isListItemNode(grandparentListItem) &&\n $isListNode(parentList)\n ) {\n // if it's the first child in it's parent list, insert it into the\n // great grandparent list before the grandparent\n const firstChild = parentList ? parentList.getFirstChild() : undefined;\n const lastChild = parentList ? parentList.getLastChild() : undefined;\n\n if (WebinyListItemNode.is(firstChild)) {\n grandparentListItem.insertBefore(WebinyListItemNode);\n\n if (parentList.isEmpty()) {\n grandparentListItem.remove();\n }\n // if it's the last child in it's parent list, insert it into the\n // great grandparent list after the grandparent.\n } else if (WebinyListItemNode.is(lastChild)) {\n grandparentListItem.insertAfter(WebinyListItemNode);\n\n if (parentList.isEmpty()) {\n grandparentListItem.remove();\n }\n } else {\n // otherwise, we need to split the siblings into two new nested lists\n const listType = parentList.getListType();\n const themeStyleId = parentList.getStyleId();\n const previousSiblingsListItem = $createListItemNode();\n const previousSiblingsList = $createListNode(listType, themeStyleId);\n previousSiblingsListItem.append(previousSiblingsList);\n WebinyListItemNode.getPreviousSiblings().forEach(sibling =>\n previousSiblingsList.append(sibling)\n );\n const nextSiblingsListItem = $createListItemNode();\n const nextSiblingsList = $createListNode(listType, themeStyleId);\n nextSiblingsListItem.append(nextSiblingsList);\n append(nextSiblingsList, WebinyListItemNode.getNextSiblings());\n // put the sibling nested lists on either side of the grandparent list item in the great grandparent.\n grandparentListItem.insertBefore(previousSiblingsListItem);\n grandparentListItem.insertAfter(nextSiblingsListItem);\n // replace the grandparent list item (now between the siblings) with the outdented list item.\n grandparentListItem.replace(WebinyListItemNode);\n }\n updateChildrenListItemValue(parentList);\n updateChildrenListItemValue(greatGrandparentList);\n }\n });\n}\n\nfunction maybeIndentOrOutdent(direction: \"indent\" | \"outdent\"): void {\n const selection = $getSelection();\n\n if (!$isRangeSelection(selection)) {\n return;\n }\n const selectedNodes = selection.getNodes();\n let webinyListItemNodes: Array<ListItemNode> = [];\n\n if (selectedNodes.length === 0) {\n selectedNodes.push(selection.anchor.getNode());\n }\n\n if (selectedNodes.length === 1) {\n // Only 1 node selected. Selection may not contain the ListNodeItem so we traverse the tree to\n // find whether this is part of a WebinyListItemNode\n const nearestWebinyListItemNode = findNearestListItemNode(selectedNodes[0]);\n\n if (nearestWebinyListItemNode !== null) {\n webinyListItemNodes = [nearestWebinyListItemNode];\n }\n } else {\n webinyListItemNodes = getUniqueListItemNodes(selectedNodes);\n }\n\n if (webinyListItemNodes.length > 0) {\n if (direction === \"indent\") {\n $handleIndent(webinyListItemNodes);\n } else {\n $handleOutdent(webinyListItemNodes);\n }\n }\n}\n\nexport function indentList(): void {\n maybeIndentOrOutdent(\"indent\");\n}\n\nexport function outdentList(): void {\n maybeIndentOrOutdent(\"outdent\");\n}\n\nexport function $handleListInsertParagraph(): boolean {\n const selection = $getSelection();\n\n if (!$isRangeSelection(selection) || !selection.isCollapsed()) {\n return false;\n }\n\n // Only run this code on empty list items\n const anchor = selection.anchor.getNode();\n\n if (!$isListItemNode(anchor) || anchor.getTextContent() !== \"\") {\n return false;\n }\n const topListNode = $getTopListNode(anchor);\n const parent = anchor.getParent();\n\n if (!$isListNode(parent)) {\n console.log(\"A WebinyListItemNode must have a WebinyListNode for a parent.\");\n return false;\n }\n\n const grandparent = parent?.getParent() || null;\n\n let replacementNode;\n\n if ($isRootOrShadowRoot(grandparent)) {\n replacementNode = $createParagraphNode();\n topListNode.insertAfter(replacementNode);\n } else if ($isListItemNode(grandparent)) {\n replacementNode = $createListItemNode();\n grandparent.insertAfter(replacementNode);\n } else {\n return false;\n }\n replacementNode.select();\n\n const nextSiblings = anchor.getNextSiblings();\n\n if (nextSiblings.length > 0) {\n const newList = $createListNode(parent?.getListType(), parent?.getStyleId());\n\n if ($isParagraphNode(replacementNode)) {\n replacementNode.insertAfter(newList);\n } else {\n const newListItem = $createListItemNode();\n newListItem.append(newList);\n replacementNode.insertAfter(newListItem);\n }\n nextSiblings.forEach(sibling => {\n sibling.remove();\n newList.append(sibling);\n });\n }\n\n // Don't leave hanging nested empty lists\n $removeHighestEmptyListParent(anchor);\n\n return true;\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["_lexical","require","_ListNode","_utils","_ListItemNode","_ParagraphNode","_listNode","DEFAULT_LIST_START_NUMBER","$isSelectingEmptyListItem","anchorNode","nodes","$isListItemNode","length","is","getChildrenSize","$getListItemValue","listItem","list","getParent","value","$isListNode","console","log","getStart","siblings","getPreviousSiblings","i","sibling","getFirstChild","insertList","editor","listType","styleId","update","selection","$getSelection","$isRangeSelection","DEPRECATED_$isGridSelection","getNodes","anchor","getNode","anchorNodeParent","$createListNode","$isRootOrShadowRoot","replace","$createListItemNode","$isElementNode","setFormat","getFormatType","setIndent","getIndent","append","parent","getParentOrThrow","getChildren","handled","Set","node","isEmpty","has","getKey","createListOrMerge","$isLeafNode","parentKey","newListNode","updateChildrenListItemValue","add","nextParent","nodesToAppend","splice","previousSibling","getPreviousSibling","nextSibling","getNextSibling","getListType","remove","getFirstChildOrThrow","insertBefore","mergeLists","list1","list2","listItem1","getLastChild","listItem2","isNestedListNode","toMerge","apply","_toConsumableArray2","default","removeList","listNodes","$getTopListNode","listItemNode","$getNearestNodeOfType","ListItemNode","_iterator","_createForOfIteratorHelper2","_step","s","n","done","listNode","insertionPoint","listItems","$getAllListItems","_iterator2","_step2","paragraph","$createParagraphNode","insertAfter","__key","key","set","focus","err","e","f","children","childrenOrExisting","undefined","child","prevValue","getValue","nextValue","setValue","$handleIndent","WebinyListItemNodes","removed","forEach","WebinyListItemNode","innerList","nextInnerList","firstChild","newListItem","newList","getStyleId","$handleOutdent","parentList","grandparentListItem","greatGrandparentList","lastChild","themeStyleId","previousSiblingsListItem","previousSiblingsList","nextSiblingsListItem","nextSiblingsList","getNextSiblings","maybeIndentOrOutdent","direction","selectedNodes","webinyListItemNodes","push","nearestWebinyListItemNode","findNearestListItemNode","getUniqueListItemNodes","indentList","outdentList","$handleListInsertParagraph","isCollapsed","getTextContent","topListNode","grandparent","replacementNode","select","nextSiblings","$isParagraphNode","$removeHighestEmptyListParent"],"sources":["formatList.ts"],"sourcesContent":["import {\n $getSelection,\n $isElementNode,\n $isLeafNode,\n $isParagraphNode,\n $isRangeSelection,\n $isRootOrShadowRoot,\n DEPRECATED_$isGridSelection,\n ElementNode,\n LexicalEditor,\n LexicalNode,\n NodeKey\n} from \"lexical\";\nimport { $createListNode, $isListNode, ListNode } from \"~/ListNode\";\nimport { $getNearestNodeOfType } from \"@lexical/utils\";\nimport { $createListItemNode, $isListItemNode, ListItemNode } from \"~/ListItemNode\";\nimport { ListType } from \"@lexical/list\";\nimport { $createParagraphNode, ParagraphNode } from \"~/ParagraphNode\";\nimport {\n $getAllListItems,\n $getTopListNode,\n $removeHighestEmptyListParent,\n findNearestListItemNode,\n getUniqueListItemNodes,\n isNestedListNode\n} from \"~/utils/listNode\";\n\nconst DEFAULT_LIST_START_NUMBER = 1;\n\nfunction $isSelectingEmptyListItem(\n anchorNode: ListItemNode | LexicalNode,\n nodes: Array<LexicalNode>\n): boolean {\n return (\n $isListItemNode(anchorNode) &&\n (nodes.length === 0 ||\n (nodes.length === 1 && anchorNode.is(nodes[0]) && anchorNode.getChildrenSize() === 0))\n );\n}\n\nfunction $getListItemValue(listItem: ListItemNode): number {\n const list = listItem.getParent();\n\n let value = 1;\n\n if (list !== null) {\n if (!$isListNode(list)) {\n console.log(\n \"$getListItemValue: webiny list node is not parent of webiny list item node\"\n );\n return DEFAULT_LIST_START_NUMBER;\n } else {\n value = list.getStart();\n }\n }\n\n const siblings = listItem.getPreviousSiblings();\n for (let i = 0; i < siblings.length; i++) {\n const sibling = siblings[i];\n\n if ($isListItemNode(sibling) && !$isListNode(sibling.getFirstChild())) {\n value++;\n }\n }\n return value;\n}\n\nexport function insertList(editor: LexicalEditor, listType: ListType, styleId?: string): void {\n editor.update(() => {\n const selection = $getSelection();\n\n if ($isRangeSelection(selection) || DEPRECATED_$isGridSelection(selection)) {\n const nodes = selection.getNodes();\n const anchor = selection.anchor;\n const anchorNode = anchor.getNode();\n const anchorNodeParent = anchorNode.getParent();\n\n if ($isSelectingEmptyListItem(anchorNode, nodes)) {\n const list = $createListNode(listType, styleId);\n\n if ($isRootOrShadowRoot(anchorNodeParent)) {\n anchorNode.replace(list);\n const listItem = $createListItemNode();\n if ($isElementNode(anchorNode)) {\n listItem.setFormat(anchorNode.getFormatType());\n listItem.setIndent(anchorNode.getIndent());\n }\n list.append(listItem);\n } else if ($isListItemNode(anchorNode)) {\n const parent = anchorNode.getParentOrThrow();\n append(list, parent.getChildren());\n parent.replace(list);\n }\n\n return;\n } else {\n const handled = new Set();\n for (let i = 0; i < nodes.length; i++) {\n const node = nodes[i];\n\n if ($isElementNode(node) && node.isEmpty() && !handled.has(node.getKey())) {\n createListOrMerge(node, listType, styleId);\n continue;\n }\n\n if ($isLeafNode(node)) {\n let parent = node.getParent();\n while (parent != null) {\n const parentKey = parent.getKey();\n\n if ($isListNode(parent)) {\n if (!handled.has(parentKey)) {\n const newListNode = $createListNode(listType, styleId);\n append(newListNode, parent.getChildren());\n parent.replace(newListNode);\n updateChildrenListItemValue(newListNode);\n handled.add(parentKey);\n }\n\n break;\n } else {\n const nextParent = parent.getParent();\n\n if ($isRootOrShadowRoot(nextParent) && !handled.has(parentKey)) {\n handled.add(parentKey);\n createListOrMerge(parent, listType, styleId);\n break;\n }\n\n parent = nextParent;\n }\n }\n }\n }\n }\n }\n });\n}\n\nfunction append(node: ElementNode, nodesToAppend: Array<LexicalNode>) {\n node.splice(node.getChildrenSize(), 0, nodesToAppend);\n}\n\nfunction createListOrMerge(node: ElementNode, listType: ListType, styleId?: string): ListNode {\n if ($isListNode(node)) {\n return node;\n }\n\n const previousSibling = node.getPreviousSibling();\n const nextSibling = node.getNextSibling();\n const listItem = $createListItemNode();\n listItem.setFormat(node.getFormatType());\n listItem.setIndent(node.getIndent());\n append(listItem, node.getChildren());\n\n if ($isListNode(previousSibling) && listType === previousSibling.getListType()) {\n previousSibling.append(listItem);\n node.remove();\n // if the same type of list is on both sides, merge them.\n\n if ($isListNode(nextSibling) && listType === nextSibling.getListType()) {\n append(previousSibling, nextSibling.getChildren());\n nextSibling.remove();\n }\n return previousSibling;\n } else if ($isListNode(nextSibling) && listType === nextSibling.getListType()) {\n nextSibling.getFirstChildOrThrow().insertBefore(listItem);\n node.remove();\n return nextSibling;\n } else {\n const list = $createListNode(listType, styleId);\n list.append(listItem);\n node.replace(list);\n updateChildrenListItemValue(list);\n return list;\n }\n}\n\n/**\n * A recursive function that goes through each list and their children, including nested lists,\n * appending list2 children after list1 children and updating ListItemNode values.\n * @param list1 - The first list to be merged.\n * @param list2 - The second list to be merged.\n */\nexport function mergeLists(list1: ListNode, list2: ListNode): void {\n const listItem1 = list1.getLastChild();\n const listItem2 = list2.getFirstChild();\n\n if (listItem1 && listItem2 && isNestedListNode(listItem1) && isNestedListNode(listItem2)) {\n mergeLists(listItem1.getFirstChild(), listItem2.getFirstChild());\n listItem2.remove();\n }\n\n const toMerge = list2.getChildren();\n if (toMerge.length > 0) {\n list1.append(...toMerge);\n updateChildrenListItemValue(list1);\n }\n\n list2.remove();\n}\n\nexport function removeList(editor: LexicalEditor): void {\n editor.update(() => {\n const selection = $getSelection();\n\n if ($isRangeSelection(selection)) {\n const listNodes = new Set<ListNode>();\n const nodes = selection.getNodes();\n const anchorNode = selection.anchor.getNode();\n\n if ($isSelectingEmptyListItem(anchorNode, nodes)) {\n listNodes.add($getTopListNode(anchorNode));\n } else {\n for (let i = 0; i < nodes.length; i++) {\n const node = nodes[i];\n\n if ($isLeafNode(node)) {\n const listItemNode = $getNearestNodeOfType(node, ListItemNode);\n\n if (listItemNode != null) {\n listNodes.add($getTopListNode(listItemNode));\n }\n }\n }\n }\n\n for (const listNode of listNodes) {\n let insertionPoint: ListNode | ParagraphNode = listNode;\n\n const listItems = $getAllListItems(listNode);\n\n for (const listItemNode of listItems) {\n const paragraph = $createParagraphNode();\n\n append(paragraph, listItemNode.getChildren());\n\n insertionPoint.insertAfter(paragraph);\n insertionPoint = paragraph;\n\n // When the anchor and focus fall on the textNode\n // we don't have to change the selection because the textNode will be appended to\n // the newly generated paragraph.\n // When selection is in empty nested list item, selection is actually on the listItemNode.\n // When the corresponding listItemNode is deleted and replaced by the newly generated paragraph\n // we should manually set the selection's focus and anchor to the newly generated paragraph.\n if (listItemNode.__key === selection.anchor.key) {\n selection.anchor.set(paragraph.getKey(), 0, \"element\");\n }\n if (listItemNode.__key === selection.focus.key) {\n selection.focus.set(paragraph.getKey(), 0, \"element\");\n }\n\n listItemNode.remove();\n }\n listNode.remove();\n }\n }\n });\n}\n\nexport function updateChildrenListItemValue(list: ListNode, children?: Array<LexicalNode>): void {\n const childrenOrExisting = children || list.getChildren();\n if (childrenOrExisting !== undefined) {\n for (let i = 0; i < childrenOrExisting.length; i++) {\n const child = childrenOrExisting[i];\n if ($isListItemNode(child)) {\n const prevValue = child.getValue();\n const nextValue = $getListItemValue(child);\n\n if (prevValue !== nextValue) {\n child.setValue(nextValue);\n }\n }\n }\n }\n}\n\nexport function $handleIndent(WebinyListItemNodes: Array<ListItemNode>): void {\n // go through each node and decide where to move it.\n const removed = new Set<NodeKey>();\n\n WebinyListItemNodes.forEach((WebinyListItemNode: ListItemNode) => {\n if (isNestedListNode(WebinyListItemNode) || removed.has(WebinyListItemNode.getKey())) {\n return;\n }\n\n const parent = WebinyListItemNode.getParent();\n\n // We can cast both of the below `isNestedListNode` only returns a boolean type instead of a user-defined type guards\n const nextSibling = WebinyListItemNode.getNextSibling<ListItemNode>() as ListItemNode;\n const previousSibling =\n WebinyListItemNode.getPreviousSibling<ListItemNode>() as ListItemNode;\n // if there are nested lists on either side, merge them all together.\n\n if (isNestedListNode(nextSibling) && isNestedListNode(previousSibling)) {\n const innerList = previousSibling.getFirstChild();\n\n if ($isListNode(innerList)) {\n innerList.append(WebinyListItemNode);\n const nextInnerList = nextSibling.getFirstChild();\n\n if ($isListNode(nextInnerList)) {\n const children = nextInnerList.getChildren();\n append(innerList, children);\n nextSibling.remove();\n removed.add(nextSibling.getKey());\n }\n updateChildrenListItemValue(innerList);\n }\n } else if (isNestedListNode(nextSibling)) {\n // if the WebinyListItemNode is next to a nested ListNode, merge them\n const innerList = nextSibling.getFirstChild();\n\n if ($isListNode(innerList)) {\n const firstChild = innerList.getFirstChild();\n\n if (firstChild !== null) {\n firstChild.insertBefore(WebinyListItemNode);\n }\n updateChildrenListItemValue(innerList);\n }\n } else if (isNestedListNode(previousSibling)) {\n const innerList = previousSibling.getFirstChild();\n\n if ($isListNode(innerList)) {\n innerList.append(WebinyListItemNode);\n updateChildrenListItemValue(innerList);\n }\n } else {\n // otherwise, we need to create a new nested ListNode\n\n if ($isListNode(parent)) {\n const newListItem = $createListItemNode();\n const newList = $createListNode(parent.getListType(), parent.getStyleId());\n newListItem.append(newList);\n newList.append(WebinyListItemNode);\n\n if (previousSibling) {\n previousSibling.insertAfter(newListItem);\n } else if (nextSibling) {\n nextSibling.insertBefore(newListItem);\n } else {\n parent.append(newListItem);\n }\n }\n }\n\n if ($isListNode(parent)) {\n updateChildrenListItemValue(parent);\n }\n });\n}\n\nexport function $handleOutdent(WebinyListItemNodes: Array<ListItemNode>): void {\n // go through each node and decide where to move it.\n\n WebinyListItemNodes.forEach(WebinyListItemNode => {\n if (isNestedListNode(WebinyListItemNode)) {\n return;\n }\n const parentList = WebinyListItemNode.getParent();\n const grandparentListItem = parentList ? parentList.getParent() : undefined;\n const greatGrandparentList = grandparentListItem\n ? grandparentListItem.getParent()\n : undefined;\n // If it doesn't have these ancestors, it's not indented.\n\n if (\n $isListNode(greatGrandparentList) &&\n $isListItemNode(grandparentListItem) &&\n $isListNode(parentList)\n ) {\n // if it's the first child in it's parent list, insert it into the\n // great grandparent list before the grandparent\n const firstChild = parentList ? parentList.getFirstChild() : undefined;\n const lastChild = parentList ? parentList.getLastChild() : undefined;\n\n if (WebinyListItemNode.is(firstChild)) {\n grandparentListItem.insertBefore(WebinyListItemNode);\n\n if (parentList.isEmpty()) {\n grandparentListItem.remove();\n }\n // if it's the last child in it's parent list, insert it into the\n // great grandparent list after the grandparent.\n } else if (WebinyListItemNode.is(lastChild)) {\n grandparentListItem.insertAfter(WebinyListItemNode);\n\n if (parentList.isEmpty()) {\n grandparentListItem.remove();\n }\n } else {\n // otherwise, we need to split the siblings into two new nested lists\n const listType = parentList.getListType();\n const themeStyleId = parentList.getStyleId();\n const previousSiblingsListItem = $createListItemNode();\n const previousSiblingsList = $createListNode(listType, themeStyleId);\n previousSiblingsListItem.append(previousSiblingsList);\n WebinyListItemNode.getPreviousSiblings().forEach(sibling =>\n previousSiblingsList.append(sibling)\n );\n const nextSiblingsListItem = $createListItemNode();\n const nextSiblingsList = $createListNode(listType, themeStyleId);\n nextSiblingsListItem.append(nextSiblingsList);\n append(nextSiblingsList, WebinyListItemNode.getNextSiblings());\n // put the sibling nested lists on either side of the grandparent list item in the great grandparent.\n grandparentListItem.insertBefore(previousSiblingsListItem);\n grandparentListItem.insertAfter(nextSiblingsListItem);\n // replace the grandparent list item (now between the siblings) with the outdented list item.\n grandparentListItem.replace(WebinyListItemNode);\n }\n updateChildrenListItemValue(parentList);\n updateChildrenListItemValue(greatGrandparentList);\n }\n });\n}\n\nfunction maybeIndentOrOutdent(direction: \"indent\" | \"outdent\"): void {\n const selection = $getSelection();\n\n if (!$isRangeSelection(selection)) {\n return;\n }\n const selectedNodes = selection.getNodes();\n let webinyListItemNodes: Array<ListItemNode> = [];\n\n if (selectedNodes.length === 0) {\n selectedNodes.push(selection.anchor.getNode());\n }\n\n if (selectedNodes.length === 1) {\n // Only 1 node selected. Selection may not contain the ListNodeItem so we traverse the tree to\n // find whether this is part of a WebinyListItemNode\n const nearestWebinyListItemNode = findNearestListItemNode(selectedNodes[0]);\n\n if (nearestWebinyListItemNode !== null) {\n webinyListItemNodes = [nearestWebinyListItemNode];\n }\n } else {\n webinyListItemNodes = getUniqueListItemNodes(selectedNodes);\n }\n\n if (webinyListItemNodes.length > 0) {\n if (direction === \"indent\") {\n $handleIndent(webinyListItemNodes);\n } else {\n $handleOutdent(webinyListItemNodes);\n }\n }\n}\n\nexport function indentList(): void {\n maybeIndentOrOutdent(\"indent\");\n}\n\nexport function outdentList(): void {\n maybeIndentOrOutdent(\"outdent\");\n}\n\nexport function $handleListInsertParagraph(): boolean {\n const selection = $getSelection();\n\n if (!$isRangeSelection(selection) || !selection.isCollapsed()) {\n return false;\n }\n\n // Only run this code on empty list items\n const anchor = selection.anchor.getNode();\n\n if (!$isListItemNode(anchor) || anchor.getTextContent() !== \"\") {\n return false;\n }\n const topListNode = $getTopListNode(anchor);\n const parent = anchor.getParent();\n\n if (!$isListNode(parent)) {\n console.log(\"A WebinyListItemNode must have a WebinyListNode for a parent.\");\n return false;\n }\n\n const grandparent = parent?.getParent() || null;\n\n let replacementNode;\n\n if ($isRootOrShadowRoot(grandparent)) {\n replacementNode = $createParagraphNode();\n topListNode.insertAfter(replacementNode);\n } else if ($isListItemNode(grandparent)) {\n replacementNode = $createListItemNode();\n grandparent.insertAfter(replacementNode);\n } else {\n return false;\n }\n replacementNode.select();\n\n const nextSiblings = anchor.getNextSiblings();\n\n if (nextSiblings.length > 0) {\n const newList = $createListNode(parent?.getListType(), parent?.getStyleId());\n\n if ($isParagraphNode(replacementNode)) {\n replacementNode.insertAfter(newList);\n } else {\n const newListItem = $createListItemNode();\n newListItem.append(newList);\n replacementNode.insertAfter(newListItem);\n }\n nextSiblings.forEach(sibling => {\n sibling.remove();\n newList.append(sibling);\n });\n }\n\n // Don't leave hanging nested empty lists\n $removeHighestEmptyListParent(anchor);\n\n return true;\n}\n"],"mappings":"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"}
|
package/utils/listNode.js
CHANGED
|
@@ -21,7 +21,7 @@ function $getListDepth(listNode) {
|
|
|
21
21
|
var parentList = parent.getParent();
|
|
22
22
|
if ((0, _ListNode.$isListNode)(parentList)) {
|
|
23
23
|
depth++;
|
|
24
|
-
parent =
|
|
24
|
+
parent = parentList?.getParent() || null;
|
|
25
25
|
continue;
|
|
26
26
|
}
|
|
27
27
|
console.log("A WebinyListItemNode must have a WebinyListNode for a parent.");
|
|
@@ -50,7 +50,7 @@ function $getAllListItems(node) {
|
|
|
50
50
|
var listChildren = node.getChildren().filter(_ListItemNode.$isListItemNode);
|
|
51
51
|
for (var i = 0; i < listChildren.length; i++) {
|
|
52
52
|
var listItemNode = listChildren[i];
|
|
53
|
-
var firstChild = listItemNode
|
|
53
|
+
var firstChild = listItemNode?.getFirstChild();
|
|
54
54
|
if ((0, _ListNode.$isListNode)(firstChild)) {
|
|
55
55
|
listItemNodes = listItemNodes.concat($getAllListItems(firstChild));
|
|
56
56
|
} else {
|
|
@@ -60,7 +60,7 @@ function $getAllListItems(node) {
|
|
|
60
60
|
return listItemNodes;
|
|
61
61
|
}
|
|
62
62
|
function isNestedListNode(node) {
|
|
63
|
-
return (0, _ListItemNode.$isListItemNode)(node) && (0, _ListNode.$isListNode)(node
|
|
63
|
+
return (0, _ListItemNode.$isListItemNode)(node) && (0, _ListNode.$isListNode)(node?.getFirstChild());
|
|
64
64
|
}
|
|
65
65
|
|
|
66
66
|
// TODO: rewrite with $findMatchingParent or *nodeOfType
|
package/utils/listNode.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_ListNode","require","_ListItemNode","$getListDepth","listNode","depth","parent","getParent","$isListItemNode","parentList","$isListNode","console","log","$getTopListNode","listItem","list","$getAllListItems","node","listItemNodes","listChildren","getChildren","filter","i","length","listItemNode","firstChild","getFirstChild","concat","push","isNestedListNode","findNearestListItemNode","currentNode","getUniqueListItemNodes","nodeList","keys","Set","add","Array","from","$removeHighestEmptyListParent","sublist","emptyListPtr","getNextSibling","getPreviousSibling","remove","wrapInListItem","listItemWrapper","$createListItemNode","append"],"sources":["listNode.ts"],"sourcesContent":["import type { LexicalNode } from \"lexical\";\n\nimport { $isListNode, ListNode } from \"~/ListNode\";\nimport { $createListItemNode, $isListItemNode, ListItemNode } from \"~/ListItemNode\";\n\nexport function $getListDepth(listNode: ListNode): number {\n let depth = 1;\n let parent = listNode.getParent();\n\n while (parent !== null) {\n if ($isListItemNode(parent)) {\n const parentList = parent.getParent();\n\n if ($isListNode(parentList)) {\n depth++;\n parent = parentList?.getParent() || null;\n continue;\n }\n console.log(\"A WebinyListItemNode must have a WebinyListNode for a parent.\");\n }\n\n return depth;\n }\n\n return depth;\n}\n\nexport function $getTopListNode(listItem: LexicalNode): ListNode {\n let list = listItem.getParent<ListNode>();\n\n if (!$isListNode(list)) {\n console.log(\"A WebinyListItemNode must have a ListNode for a parent.\");\n return listItem as ListNode;\n }\n\n let parent: ListNode | null = list;\n\n while (parent !== null) {\n parent = parent.getParent();\n\n if ($isListNode(parent)) {\n list = parent;\n }\n }\n\n return list;\n}\n\nexport function $getAllListItems(node: ListNode): Array<ListItemNode> {\n let listItemNodes: Array<ListItemNode> = [];\n const listChildren: Array<ListItemNode> = node.getChildren().filter($isListItemNode);\n\n for (let i = 0; i < listChildren.length; i++) {\n const listItemNode = listChildren[i];\n const firstChild = listItemNode?.getFirstChild();\n\n if ($isListNode(firstChild)) {\n listItemNodes = listItemNodes.concat($getAllListItems(firstChild));\n } else {\n listItemNodes.push(listItemNode);\n }\n }\n\n return listItemNodes;\n}\n\nexport function isNestedListNode(node: LexicalNode | null | undefined): boolean {\n return $isListItemNode(node) && $isListNode(node?.getFirstChild());\n}\n\n// TODO: rewrite with $findMatchingParent or *nodeOfType\nexport function findNearestListItemNode(node: LexicalNode): ListItemNode | null {\n let currentNode: LexicalNode | null = node;\n\n while (currentNode !== null) {\n if ($isListItemNode(currentNode)) {\n return currentNode;\n }\n currentNode = currentNode.getParent();\n }\n\n return null;\n}\n\nexport function getUniqueListItemNodes(nodeList: Array<LexicalNode>): Array<ListItemNode> {\n const keys = new Set<ListItemNode>();\n\n for (let i = 0; i < nodeList.length; i++) {\n const node = nodeList[i];\n\n if ($isListItemNode(node)) {\n keys.add(node);\n }\n }\n\n return Array.from(keys);\n}\n\nexport function $removeHighestEmptyListParent(sublist: ListItemNode | ListNode) {\n // Nodes may be repeatedly indented, to create deeply nested lists that each\n // contain just one bullet.\n // Our goal is to remove these (empty) deeply nested lists. The easiest\n // way to do that is crawl back up the tree until we find a node that has siblings\n // (e.g. is actually part of the list contents) and delete that, or delete\n // the root of the list (if no list nodes have siblings.)\n let emptyListPtr = sublist;\n\n while (emptyListPtr.getNextSibling() == null && emptyListPtr.getPreviousSibling() == null) {\n const parent = emptyListPtr.getParent<ListItemNode | ListNode>();\n\n if (parent == null || !($isListItemNode(emptyListPtr) || $isListNode(emptyListPtr))) {\n break;\n }\n\n emptyListPtr = parent;\n }\n\n emptyListPtr.remove();\n}\n\nexport function wrapInListItem(node: LexicalNode): ListItemNode {\n const listItemWrapper = $createListItemNode();\n return listItemWrapper.append(node);\n}\n"],"mappings":";;;;;;;;;;;;;AAEA,IAAAA,SAAA,GAAAC,OAAA;AACA,IAAAC,aAAA,GAAAD,OAAA;AAEO,SAASE,aAAaA,CAACC,QAAkB,EAAU;EACtD,IAAIC,KAAK,GAAG,CAAC;EACb,IAAIC,MAAM,GAAGF,QAAQ,CAACG,SAAS,CAAC,CAAC;EAEjC,OAAOD,MAAM,KAAK,IAAI,EAAE;IACpB,IAAI,IAAAE,6BAAe,EAACF,MAAM,CAAC,EAAE;MACzB,IAAMG,UAAU,GAAGH,MAAM,CAACC,SAAS,CAAC,CAAC;MAErC,IAAI,IAAAG,qBAAW,EAACD,UAAU,CAAC,EAAE;QACzBJ,KAAK,EAAE;QACPC,MAAM,
|
|
1
|
+
{"version":3,"names":["_ListNode","require","_ListItemNode","$getListDepth","listNode","depth","parent","getParent","$isListItemNode","parentList","$isListNode","console","log","$getTopListNode","listItem","list","$getAllListItems","node","listItemNodes","listChildren","getChildren","filter","i","length","listItemNode","firstChild","getFirstChild","concat","push","isNestedListNode","findNearestListItemNode","currentNode","getUniqueListItemNodes","nodeList","keys","Set","add","Array","from","$removeHighestEmptyListParent","sublist","emptyListPtr","getNextSibling","getPreviousSibling","remove","wrapInListItem","listItemWrapper","$createListItemNode","append"],"sources":["listNode.ts"],"sourcesContent":["import type { LexicalNode } from \"lexical\";\n\nimport { $isListNode, ListNode } from \"~/ListNode\";\nimport { $createListItemNode, $isListItemNode, ListItemNode } from \"~/ListItemNode\";\n\nexport function $getListDepth(listNode: ListNode): number {\n let depth = 1;\n let parent = listNode.getParent();\n\n while (parent !== null) {\n if ($isListItemNode(parent)) {\n const parentList = parent.getParent();\n\n if ($isListNode(parentList)) {\n depth++;\n parent = parentList?.getParent() || null;\n continue;\n }\n console.log(\"A WebinyListItemNode must have a WebinyListNode for a parent.\");\n }\n\n return depth;\n }\n\n return depth;\n}\n\nexport function $getTopListNode(listItem: LexicalNode): ListNode {\n let list = listItem.getParent<ListNode>();\n\n if (!$isListNode(list)) {\n console.log(\"A WebinyListItemNode must have a ListNode for a parent.\");\n return listItem as ListNode;\n }\n\n let parent: ListNode | null = list;\n\n while (parent !== null) {\n parent = parent.getParent();\n\n if ($isListNode(parent)) {\n list = parent;\n }\n }\n\n return list;\n}\n\nexport function $getAllListItems(node: ListNode): Array<ListItemNode> {\n let listItemNodes: Array<ListItemNode> = [];\n const listChildren: Array<ListItemNode> = node.getChildren().filter($isListItemNode);\n\n for (let i = 0; i < listChildren.length; i++) {\n const listItemNode = listChildren[i];\n const firstChild = listItemNode?.getFirstChild();\n\n if ($isListNode(firstChild)) {\n listItemNodes = listItemNodes.concat($getAllListItems(firstChild));\n } else {\n listItemNodes.push(listItemNode);\n }\n }\n\n return listItemNodes;\n}\n\nexport function isNestedListNode(node: LexicalNode | null | undefined): boolean {\n return $isListItemNode(node) && $isListNode(node?.getFirstChild());\n}\n\n// TODO: rewrite with $findMatchingParent or *nodeOfType\nexport function findNearestListItemNode(node: LexicalNode): ListItemNode | null {\n let currentNode: LexicalNode | null = node;\n\n while (currentNode !== null) {\n if ($isListItemNode(currentNode)) {\n return currentNode;\n }\n currentNode = currentNode.getParent();\n }\n\n return null;\n}\n\nexport function getUniqueListItemNodes(nodeList: Array<LexicalNode>): Array<ListItemNode> {\n const keys = new Set<ListItemNode>();\n\n for (let i = 0; i < nodeList.length; i++) {\n const node = nodeList[i];\n\n if ($isListItemNode(node)) {\n keys.add(node);\n }\n }\n\n return Array.from(keys);\n}\n\nexport function $removeHighestEmptyListParent(sublist: ListItemNode | ListNode) {\n // Nodes may be repeatedly indented, to create deeply nested lists that each\n // contain just one bullet.\n // Our goal is to remove these (empty) deeply nested lists. The easiest\n // way to do that is crawl back up the tree until we find a node that has siblings\n // (e.g. is actually part of the list contents) and delete that, or delete\n // the root of the list (if no list nodes have siblings.)\n let emptyListPtr = sublist;\n\n while (emptyListPtr.getNextSibling() == null && emptyListPtr.getPreviousSibling() == null) {\n const parent = emptyListPtr.getParent<ListItemNode | ListNode>();\n\n if (parent == null || !($isListItemNode(emptyListPtr) || $isListNode(emptyListPtr))) {\n break;\n }\n\n emptyListPtr = parent;\n }\n\n emptyListPtr.remove();\n}\n\nexport function wrapInListItem(node: LexicalNode): ListItemNode {\n const listItemWrapper = $createListItemNode();\n return listItemWrapper.append(node);\n}\n"],"mappings":"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"}
|