@webiny/lexical-editor 5.37.1-beta.0 → 5.37.1-beta.2
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/hooks/useList.js +14 -0
- package/hooks/useList.js.map +1 -1
- package/nodes/ListItemNode.d.ts +1 -1
- package/nodes/ListItemNode.js +34 -24
- package/nodes/ListItemNode.js.map +1 -1
- package/nodes/ListNode/formatList.d.ts +7 -0
- package/nodes/ListNode/formatList.js +36 -13
- package/nodes/ListNode/formatList.js.map +1 -1
- package/package.json +18 -18
- package/utils/getLexicalTextSelectionState.js +1 -0
- package/utils/getLexicalTextSelectionState.js.map +1 -1
- package/utils/nodes/listNode.d.ts +2 -2
- package/utils/nodes/listNode.js +4 -4
- package/utils/nodes/listNode.js.map +1 -1
package/hooks/useList.js
CHANGED
|
@@ -9,6 +9,7 @@ var _lexical = require("lexical");
|
|
|
9
9
|
var _react = require("react");
|
|
10
10
|
var _formatList = require("../nodes/ListNode/formatList");
|
|
11
11
|
var _webinyList = require("../commands/webiny-list");
|
|
12
|
+
var _getLexicalTextSelectionState = require("../utils/getLexicalTextSelectionState");
|
|
12
13
|
function useList(editor) {
|
|
13
14
|
(0, _react.useEffect)(function () {
|
|
14
15
|
return (0, _utils.mergeRegister)(editor.registerCommand(_lexical.INDENT_CONTENT_COMMAND, function () {
|
|
@@ -25,6 +26,19 @@ function useList(editor) {
|
|
|
25
26
|
var themeStyleId = _ref2.themeStyleId;
|
|
26
27
|
(0, _formatList.insertList)(editor, "bullet", themeStyleId);
|
|
27
28
|
return true;
|
|
29
|
+
}, _lexical.COMMAND_PRIORITY_LOW), editor.registerCommand(_lexical.KEY_BACKSPACE_COMMAND, function (event) {
|
|
30
|
+
var selection = (0, _lexical.$getSelection)();
|
|
31
|
+
if ((0, _lexical.$isRangeSelection)(selection)) {
|
|
32
|
+
var _textSelection$state, _textSelection$elemen;
|
|
33
|
+
var textSelection = (0, _getLexicalTextSelectionState.getLexicalTextSelectionState)(editor, selection);
|
|
34
|
+
// Check if list have one list item remain, without text.
|
|
35
|
+
if (textSelection !== null && textSelection !== void 0 && (_textSelection$state = textSelection.state) !== null && _textSelection$state !== void 0 && _textSelection$state.list.isSelected && (textSelection === null || textSelection === void 0 ? void 0 : (_textSelection$elemen = textSelection.element) === null || _textSelection$elemen === void 0 ? void 0 : _textSelection$elemen.__size) === 1 && typeof (textSelection === null || textSelection === void 0 ? void 0 : textSelection.anchorNode.__text) === "undefined") {
|
|
36
|
+
event.preventDefault();
|
|
37
|
+
(0, _formatList.removeList)(editor);
|
|
38
|
+
return true;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
return false;
|
|
28
42
|
}, _lexical.COMMAND_PRIORITY_LOW), editor.registerCommand(_webinyList.REMOVE_WEBINY_LIST_COMMAND, function () {
|
|
29
43
|
(0, _formatList.removeList)(editor);
|
|
30
44
|
return true;
|
package/hooks/useList.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_utils","require","_lexical","_react","_formatList","_webinyList","useList","editor","useEffect","mergeRegister","registerCommand","INDENT_CONTENT_COMMAND","indentList","COMMAND_PRIORITY_LOW","OUTDENT_CONTENT_COMMAND","outdentList","INSERT_ORDERED_WEBINY_LIST_COMMAND","_ref","themeStyleId","insertList","INSERT_UNORDERED_WEBINY_LIST_COMMAND","_ref2","
|
|
1
|
+
{"version":3,"names":["_utils","require","_lexical","_react","_formatList","_webinyList","_getLexicalTextSelectionState","useList","editor","useEffect","mergeRegister","registerCommand","INDENT_CONTENT_COMMAND","indentList","COMMAND_PRIORITY_LOW","OUTDENT_CONTENT_COMMAND","outdentList","INSERT_ORDERED_WEBINY_LIST_COMMAND","_ref","themeStyleId","insertList","INSERT_UNORDERED_WEBINY_LIST_COMMAND","_ref2","KEY_BACKSPACE_COMMAND","event","selection","$getSelection","$isRangeSelection","_textSelection$state","_textSelection$elemen","textSelection","getLexicalTextSelectionState","state","list","isSelected","element","__size","anchorNode","__text","preventDefault","removeList","REMOVE_WEBINY_LIST_COMMAND","INSERT_PARAGRAPH_COMMAND","hasHandledInsertParagraph","$handleListInsertParagraph"],"sources":["useList.ts"],"sourcesContent":["import type { LexicalEditor } from \"lexical\";\nimport { mergeRegister } from \"@lexical/utils\";\nimport {\n $getSelection,\n $isRangeSelection,\n COMMAND_PRIORITY_LOW,\n INDENT_CONTENT_COMMAND,\n INSERT_PARAGRAPH_COMMAND,\n KEY_BACKSPACE_COMMAND,\n OUTDENT_CONTENT_COMMAND\n} from \"lexical\";\nimport { useEffect } from \"react\";\nimport {\n $handleListInsertParagraph,\n indentList,\n insertList,\n outdentList,\n removeList\n} from \"~/nodes/ListNode/formatList\";\nimport {\n INSERT_ORDERED_WEBINY_LIST_COMMAND,\n INSERT_UNORDERED_WEBINY_LIST_COMMAND,\n REMOVE_WEBINY_LIST_COMMAND\n} from \"~/commands/webiny-list\";\nimport { getLexicalTextSelectionState } from \"~/utils/getLexicalTextSelectionState\";\n\nexport function useList(editor: LexicalEditor): void {\n useEffect(() => {\n return mergeRegister(\n editor.registerCommand(\n INDENT_CONTENT_COMMAND,\n () => {\n indentList();\n return false;\n },\n COMMAND_PRIORITY_LOW\n ),\n editor.registerCommand(\n OUTDENT_CONTENT_COMMAND,\n () => {\n outdentList();\n return false;\n },\n COMMAND_PRIORITY_LOW\n ),\n editor.registerCommand(\n INSERT_ORDERED_WEBINY_LIST_COMMAND,\n ({ themeStyleId }) => {\n insertList(editor, \"number\", themeStyleId);\n return true;\n },\n COMMAND_PRIORITY_LOW\n ),\n editor.registerCommand(\n INSERT_UNORDERED_WEBINY_LIST_COMMAND,\n ({ themeStyleId }) => {\n insertList(editor, \"bullet\", themeStyleId);\n return true;\n },\n COMMAND_PRIORITY_LOW\n ),\n editor.registerCommand(\n KEY_BACKSPACE_COMMAND,\n (event: KeyboardEvent) => {\n const selection = $getSelection();\n if ($isRangeSelection(selection)) {\n const textSelection = getLexicalTextSelectionState(editor, selection);\n // Check if list have one list item remain, without text.\n if (\n textSelection?.state?.list.isSelected &&\n textSelection?.element?.__size === 1 &&\n typeof textSelection?.anchorNode.__text === \"undefined\"\n ) {\n event.preventDefault();\n removeList(editor);\n return true;\n }\n }\n return false;\n },\n COMMAND_PRIORITY_LOW\n ),\n editor.registerCommand(\n REMOVE_WEBINY_LIST_COMMAND,\n () => {\n removeList(editor);\n return true;\n },\n COMMAND_PRIORITY_LOW\n ),\n editor.registerCommand(\n INSERT_PARAGRAPH_COMMAND,\n () => {\n const hasHandledInsertParagraph = $handleListInsertParagraph();\n\n if (hasHandledInsertParagraph) {\n return true;\n }\n\n return false;\n },\n COMMAND_PRIORITY_LOW\n )\n );\n }, [editor]);\n}\n"],"mappings":";;;;;;AACA,IAAAA,MAAA,GAAAC,OAAA;AACA,IAAAC,QAAA,GAAAD,OAAA;AASA,IAAAE,MAAA,GAAAF,OAAA;AACA,IAAAG,WAAA,GAAAH,OAAA;AAOA,IAAAI,WAAA,GAAAJ,OAAA;AAKA,IAAAK,6BAAA,GAAAL,OAAA;AAEO,SAASM,OAAOA,CAACC,MAAqB,EAAQ;EACjD,IAAAC,gBAAS,EAAC,YAAM;IACZ,OAAO,IAAAC,oBAAa,EAChBF,MAAM,CAACG,eAAe,CAClBC,+BAAsB,EACtB,YAAM;MACF,IAAAC,sBAAU,EAAC,CAAC;MACZ,OAAO,KAAK;IAChB,CAAC,EACDC,6BACJ,CAAC,EACDN,MAAM,CAACG,eAAe,CAClBI,gCAAuB,EACvB,YAAM;MACF,IAAAC,uBAAW,EAAC,CAAC;MACb,OAAO,KAAK;IAChB,CAAC,EACDF,6BACJ,CAAC,EACDN,MAAM,CAACG,eAAe,CAClBM,8CAAkC,EAClC,UAAAC,IAAA,EAAsB;MAAA,IAAnBC,YAAY,GAAAD,IAAA,CAAZC,YAAY;MACX,IAAAC,sBAAU,EAACZ,MAAM,EAAE,QAAQ,EAAEW,YAAY,CAAC;MAC1C,OAAO,IAAI;IACf,CAAC,EACDL,6BACJ,CAAC,EACDN,MAAM,CAACG,eAAe,CAClBU,gDAAoC,EACpC,UAAAC,KAAA,EAAsB;MAAA,IAAnBH,YAAY,GAAAG,KAAA,CAAZH,YAAY;MACX,IAAAC,sBAAU,EAACZ,MAAM,EAAE,QAAQ,EAAEW,YAAY,CAAC;MAC1C,OAAO,IAAI;IACf,CAAC,EACDL,6BACJ,CAAC,EACDN,MAAM,CAACG,eAAe,CAClBY,8BAAqB,EACrB,UAACC,KAAoB,EAAK;MACtB,IAAMC,SAAS,GAAG,IAAAC,sBAAa,EAAC,CAAC;MACjC,IAAI,IAAAC,0BAAiB,EAACF,SAAS,CAAC,EAAE;QAAA,IAAAG,oBAAA,EAAAC,qBAAA;QAC9B,IAAMC,aAAa,GAAG,IAAAC,0DAA4B,EAACvB,MAAM,EAAEiB,SAAS,CAAC;QACrE;QACA,IACIK,aAAa,aAAbA,aAAa,gBAAAF,oBAAA,GAAbE,aAAa,CAAEE,KAAK,cAAAJ,oBAAA,eAApBA,oBAAA,CAAsBK,IAAI,CAACC,UAAU,IACrC,CAAAJ,aAAa,aAAbA,aAAa,wBAAAD,qBAAA,GAAbC,aAAa,CAAEK,OAAO,cAAAN,qBAAA,uBAAtBA,qBAAA,CAAwBO,MAAM,MAAK,CAAC,IACpC,QAAON,aAAa,aAAbA,aAAa,uBAAbA,aAAa,CAAEO,UAAU,CAACC,MAAM,MAAK,WAAW,EACzD;UACEd,KAAK,CAACe,cAAc,CAAC,CAAC;UACtB,IAAAC,sBAAU,EAAChC,MAAM,CAAC;UAClB,OAAO,IAAI;QACf;MACJ;MACA,OAAO,KAAK;IAChB,CAAC,EACDM,6BACJ,CAAC,EACDN,MAAM,CAACG,eAAe,CAClB8B,sCAA0B,EAC1B,YAAM;MACF,IAAAD,sBAAU,EAAChC,MAAM,CAAC;MAClB,OAAO,IAAI;IACf,CAAC,EACDM,6BACJ,CAAC,EACDN,MAAM,CAACG,eAAe,CAClB+B,iCAAwB,EACxB,YAAM;MACF,IAAMC,yBAAyB,GAAG,IAAAC,sCAA0B,EAAC,CAAC;MAE9D,IAAID,yBAAyB,EAAE;QAC3B,OAAO,IAAI;MACf;MAEA,OAAO,KAAK;IAChB,CAAC,EACD7B,6BACJ,CACJ,CAAC;EACL,CAAC,EAAE,CAACN,MAAM,CAAC,CAAC;AAChB"}
|
package/nodes/ListItemNode.d.ts
CHANGED
|
@@ -23,7 +23,7 @@ export declare class ListItemNode extends ElementNode {
|
|
|
23
23
|
static importJSON(serializedNode: SerializedWebinyListItemNode): ListItemNode;
|
|
24
24
|
exportJSON(): SerializedWebinyListItemNode;
|
|
25
25
|
append(...nodes: LexicalNode[]): this;
|
|
26
|
-
replace<N extends LexicalNode>(replaceWithNode: N): N;
|
|
26
|
+
replace<N extends LexicalNode>(replaceWithNode: N, includeChildren?: boolean): N;
|
|
27
27
|
insertAfter(node: LexicalNode): LexicalNode;
|
|
28
28
|
remove(preserveEmptyParent?: boolean): void;
|
|
29
29
|
insertNewAfter(): ListItemNode | ParagraphNode;
|
package/nodes/ListItemNode.js
CHANGED
|
@@ -20,6 +20,7 @@ var _ListNode = require("./ListNode");
|
|
|
20
20
|
var _utils = require("@lexical/utils");
|
|
21
21
|
var _formatList = require("./ListNode/formatList");
|
|
22
22
|
var _ParagraphNode = require("./ParagraphNode");
|
|
23
|
+
var _listNode = require("../utils/nodes/listNode");
|
|
23
24
|
/** @noInheritDoc */
|
|
24
25
|
var ListItemNode = /*#__PURE__*/function (_ElementNode) {
|
|
25
26
|
(0, _inherits2.default)(ListItemNode, _ElementNode);
|
|
@@ -85,34 +86,39 @@ var ListItemNode = /*#__PURE__*/function (_ElementNode) {
|
|
|
85
86
|
}
|
|
86
87
|
}, {
|
|
87
88
|
key: "replace",
|
|
88
|
-
value: function replace(replaceWithNode) {
|
|
89
|
+
value: function replace(replaceWithNode, includeChildren) {
|
|
89
90
|
if ($isListItemNode(replaceWithNode)) {
|
|
90
91
|
return (0, _get2.default)((0, _getPrototypeOf2.default)(ListItemNode.prototype), "replace", this).call(this, replaceWithNode);
|
|
91
92
|
}
|
|
93
|
+
this.setIndent(0);
|
|
92
94
|
var list = this.getParentOrThrow();
|
|
93
|
-
if ((0, _ListNode.$isListNode)(list)) {
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
}
|
|
109
|
-
list.insertAfter(replaceWithNode);
|
|
110
|
-
replaceWithNode.insertAfter(newList);
|
|
111
|
-
}
|
|
112
|
-
this.remove();
|
|
113
|
-
if (childrenLength === 1) {
|
|
114
|
-
list.remove();
|
|
95
|
+
if (!(0, _ListNode.$isListNode)(list)) {
|
|
96
|
+
return replaceWithNode;
|
|
97
|
+
}
|
|
98
|
+
if (list.__first === this.getKey()) {
|
|
99
|
+
list.insertBefore(replaceWithNode);
|
|
100
|
+
} else if (list.__last === this.getKey()) {
|
|
101
|
+
list.insertAfter(replaceWithNode);
|
|
102
|
+
} else {
|
|
103
|
+
// Split the list
|
|
104
|
+
var newList = (0, _ListNode.$createListNode)(list.getListType());
|
|
105
|
+
var nextSibling = this.getNextSibling();
|
|
106
|
+
while (nextSibling) {
|
|
107
|
+
var nodeToAppend = nextSibling;
|
|
108
|
+
nextSibling = nextSibling.getNextSibling();
|
|
109
|
+
newList.append(nodeToAppend);
|
|
115
110
|
}
|
|
111
|
+
list.insertAfter(replaceWithNode);
|
|
112
|
+
replaceWithNode.insertAfter(newList);
|
|
113
|
+
}
|
|
114
|
+
if (includeChildren) {
|
|
115
|
+
this.getChildren().forEach(function (child) {
|
|
116
|
+
replaceWithNode.append(child);
|
|
117
|
+
});
|
|
118
|
+
}
|
|
119
|
+
this.remove();
|
|
120
|
+
if (list.getChildrenSize() === 0) {
|
|
121
|
+
list.remove();
|
|
116
122
|
}
|
|
117
123
|
return replaceWithNode;
|
|
118
124
|
}
|
|
@@ -161,9 +167,13 @@ var ListItemNode = /*#__PURE__*/function (_ElementNode) {
|
|
|
161
167
|
}, {
|
|
162
168
|
key: "remove",
|
|
163
169
|
value: function remove(preserveEmptyParent) {
|
|
170
|
+
var prevSibling = this.getPreviousSibling();
|
|
164
171
|
var nextSibling = this.getNextSibling();
|
|
165
172
|
(0, _get2.default)((0, _getPrototypeOf2.default)(ListItemNode.prototype), "remove", this).call(this, preserveEmptyParent);
|
|
166
|
-
if (nextSibling
|
|
173
|
+
if (prevSibling && nextSibling && (0, _listNode.isNestedListNode)(prevSibling) && (0, _listNode.isNestedListNode)(nextSibling)) {
|
|
174
|
+
(0, _formatList.mergeLists)(prevSibling.getFirstChild(), nextSibling.getFirstChild());
|
|
175
|
+
nextSibling.remove();
|
|
176
|
+
} else if (nextSibling) {
|
|
167
177
|
var parent = nextSibling.getParent();
|
|
168
178
|
if ((0, _ListNode.$isListNode)(parent)) {
|
|
169
179
|
(0, _formatList.updateChildrenListItemValue)(parent);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_lexical","require","_ListNode","_utils","_formatList","_ParagraphNode","ListItemNode","_ElementNode","_inherits2","default","_super","_createSuper2","value","checked","key","_this","_classCallCheck2","call","__value","undefined","__checked","_createClass2","createDOM","config","element","document","createElement","parent","getParent","$isListNode","updateChildrenListItemValue","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","$isListItemNode","list","getParentOrThrow","childrenKeys","__children","childrenLength","index","indexOf","__key","insertBefore","insertAfter","newList","$createListNode","getListType","getStyleId","child","listNode","console","log","siblings","getNextSiblings","after","afterListNode","newListNode","forEach","sibling","preserveEmptyParent","nextSibling","getNextSibling","insertNewAfter","newElement","$createListItemNode","collapseAtStart","selection","paragraph","$createParagraphNode","listNodeParent","isIndented","getChildrenSize","select","anchor","focus","getKey","getNode","is","set","offset","self","getLatest","setValue","getWritable","setChecked","toggleChecked","getIndent","__indent","indentLevel","setIndent","indent","currentIndent","$handleIndent","$handleOutdent","canIndent","nodeToInsert","canInsertAfter","canReplaceWith","replacement","$isParagraphNode","extractWithChild","$isRangeSelection","anchorNode","focusNode","isParentOf","getTextContent","getType","clone","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","getFirstChild","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} from \"lexical\";\nimport { Spread } from \"lexical\";\nimport { $createListNode, $isListNode, ListNode } from \"~/nodes/ListNode\";\nimport { addClassNamesToElement, removeClassNamesFromElement } from \"@lexical/utils\";\nimport {\n $handleIndent,\n $handleOutdent,\n updateChildrenListItemValue\n} from \"~/nodes/ListNode/formatList\";\nimport { $createParagraphNode, $isParagraphNode } from \"~/nodes/ParagraphNode\";\n\nexport type SerializedWebinyListItemNode = Spread<\n {\n checked: boolean | undefined;\n type: \"webiny-listitem\";\n value: number;\n version: 1;\n },\n SerializedElementNode\n>;\n\n/** @noInheritDoc */\nexport class 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\n if ($isListNode(parent)) {\n updateChildrenListItemValue(parent);\n updateListItemChecked(element, this, null, parent);\n }\n element.value = this.__value;\n $setListItemThemeClassNames(element, config.theme, this);\n\n return element;\n }\n\n override updateDOM(prevNode: ListItemNode, dom: HTMLElement, config: EditorConfig): boolean {\n const parent = this.getParent();\n\n if ($isListNode(parent)) {\n updateChildrenListItemValue(parent);\n updateListItemChecked(dom, this, prevNode, parent);\n }\n // @ts-expect-error - this is always HTMLListItemElement\n dom.value = this.__value;\n\n $setListItemThemeClassNames(dom, config.theme, this);\n\n return false;\n }\n\n static importDOM(): DOMConversionMap | null {\n return {\n li: () => ({\n conversion: convertListItemElement,\n priority: 0\n })\n };\n }\n\n static override importJSON(serializedNode: SerializedWebinyListItemNode): 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): N {\n if ($isListItemNode(replaceWithNode)) {\n return super.replace(replaceWithNode);\n }\n\n const list = this.getParentOrThrow();\n\n if ($isListNode(list)) {\n const childrenKeys = list.__children;\n const childrenLength = childrenKeys.length;\n const index = childrenKeys.indexOf(this.__key);\n\n if (index === 0) {\n list.insertBefore(replaceWithNode);\n } else if (index === childrenLength - 1) {\n list.insertAfter(replaceWithNode);\n } else {\n // Split the list\n const newList = $createListNode(list.getListType(), list.getStyleId());\n const children = list.getChildren();\n\n for (let i = index + 1; i < childrenLength; i++) {\n const child = children[i];\n newList.append(child);\n }\n list.insertAfter(replaceWithNode);\n replaceWithNode.insertAfter(newList);\n }\n this.remove();\n\n if (childrenLength === 1) {\n list.remove();\n }\n }\n\n return replaceWithNode;\n }\n\n override insertAfter(node: LexicalNode): LexicalNode {\n const listNode = this.getParentOrThrow();\n\n if (!$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 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 nextSibling = this.getNextSibling();\n super.remove(preserveEmptyParent);\n\n if (nextSibling !== null) {\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 toggleChecked(): void {\n this.setChecked(!this.__checked);\n }\n\n override getIndent(): number {\n // If we don't have a parent, we are likely serializing\n const parent = this.getParent();\n if (parent === null) {\n return this.getLatest().__indent;\n }\n // ListItemNode should always have a ListNode for a parent.\n let listNodeParent = parent.getParentOrThrow();\n let indentLevel = 0;\n while ($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","updateChildrenListItemValue","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","getListType","nextSibling","getNextSibling","nodeToAppend","forEach","child","getChildrenSize","listNode","console","log","siblings","getNextSiblings","after","afterListNode","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","toggleChecked","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} from \"lexical\";\nimport { Spread } from \"lexical\";\nimport { $createListNode, $isListNode, ListNode } from \"~/nodes/ListNode\";\nimport { addClassNamesToElement, removeClassNamesFromElement } from \"@lexical/utils\";\nimport {\n $handleIndent,\n $handleOutdent,\n mergeLists,\n updateChildrenListItemValue\n} from \"~/nodes/ListNode/formatList\";\nimport { $createParagraphNode, $isParagraphNode } from \"~/nodes/ParagraphNode\";\nimport { isNestedListNode } from \"~/utils/nodes/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\n if ($isListNode(parent)) {\n updateChildrenListItemValue(parent);\n updateListItemChecked(element, this, null, parent);\n }\n element.value = this.__value;\n $setListItemThemeClassNames(element, config.theme, this);\n\n return element;\n }\n\n override updateDOM(prevNode: ListItemNode, dom: HTMLElement, config: EditorConfig): boolean {\n const parent = this.getParent();\n\n if ($isListNode(parent)) {\n updateChildrenListItemValue(parent);\n updateListItemChecked(dom, this, prevNode, parent);\n }\n // @ts-expect-error - this is always HTMLListItemElement\n dom.value = this.__value;\n\n $setListItemThemeClassNames(dom, config.theme, this);\n\n return false;\n }\n\n static importDOM(): DOMConversionMap | null {\n return {\n li: () => ({\n conversion: convertListItemElement,\n priority: 0\n })\n };\n }\n\n static override importJSON(serializedNode: SerializedWebinyListItemNode): 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 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 toggleChecked(): void {\n this.setChecked(!this.__checked);\n }\n\n override getIndent(): number {\n // If we don't have a parent, we are likely serializing\n const parent = this.getParent();\n if (parent === null) {\n return this.getLatest().__indent;\n }\n // ListItemNode should always have a ListNode for a parent.\n let listNodeParent = parent.getParentOrThrow();\n let indentLevel = 0;\n while ($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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"}
|
|
@@ -3,6 +3,13 @@ import { ListNode } from "../ListNode";
|
|
|
3
3
|
import { ListItemNode } from "../ListItemNode";
|
|
4
4
|
import { ListType } from "@lexical/list";
|
|
5
5
|
export declare function insertList(editor: LexicalEditor, listType: ListType, styleId?: string): void;
|
|
6
|
+
/**
|
|
7
|
+
* A recursive function that goes through each list and their children, including nested lists,
|
|
8
|
+
* appending list2 children after list1 children and updating ListItemNode values.
|
|
9
|
+
* @param list1 - The first list to be merged.
|
|
10
|
+
* @param list2 - The second list to be merged.
|
|
11
|
+
*/
|
|
12
|
+
export declare function mergeLists(list1: ListNode, list2: ListNode): void;
|
|
6
13
|
export declare function removeList(editor: LexicalEditor): void;
|
|
7
14
|
export declare function updateChildrenListItemValue(list: ListNode, children?: Array<LexicalNode>): void;
|
|
8
15
|
export declare function $handleIndent(WebinyListItemNodes: Array<ListItemNode>): void;
|
|
@@ -9,16 +9,18 @@ exports.$handleListInsertParagraph = $handleListInsertParagraph;
|
|
|
9
9
|
exports.$handleOutdent = $handleOutdent;
|
|
10
10
|
exports.indentList = indentList;
|
|
11
11
|
exports.insertList = insertList;
|
|
12
|
+
exports.mergeLists = mergeLists;
|
|
12
13
|
exports.outdentList = outdentList;
|
|
13
14
|
exports.removeList = removeList;
|
|
14
15
|
exports.updateChildrenListItemValue = updateChildrenListItemValue;
|
|
15
16
|
var _createForOfIteratorHelper2 = _interopRequireDefault(require("@babel/runtime/helpers/createForOfIteratorHelper"));
|
|
17
|
+
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
|
16
18
|
var _lexical = require("lexical");
|
|
17
19
|
var _ListNode = require("../ListNode");
|
|
18
|
-
var _listNode = require("../../utils/nodes/listNode");
|
|
19
20
|
var _utils = require("@lexical/utils");
|
|
20
21
|
var _ListItemNode = require("../ListItemNode");
|
|
21
22
|
var _ParagraphNode = require("../ParagraphNode");
|
|
23
|
+
var _listNode = require("../../utils/nodes/listNode");
|
|
22
24
|
var DEFAULT_LIST_START_NUMBER = 1;
|
|
23
25
|
function $isSelectingEmptyListItem(anchorNode, nodes) {
|
|
24
26
|
return (0, _ListItemNode.$isListItemNode)(anchorNode) && (nodes.length === 0 || nodes.length === 1 && anchorNode.is(nodes[0]) && anchorNode.getChildrenSize() === 0);
|
|
@@ -139,6 +141,27 @@ function createListOrMerge(node, listType, styleId) {
|
|
|
139
141
|
return list;
|
|
140
142
|
}
|
|
141
143
|
}
|
|
144
|
+
|
|
145
|
+
/**
|
|
146
|
+
* A recursive function that goes through each list and their children, including nested lists,
|
|
147
|
+
* appending list2 children after list1 children and updating ListItemNode values.
|
|
148
|
+
* @param list1 - The first list to be merged.
|
|
149
|
+
* @param list2 - The second list to be merged.
|
|
150
|
+
*/
|
|
151
|
+
function mergeLists(list1, list2) {
|
|
152
|
+
var listItem1 = list1.getLastChild();
|
|
153
|
+
var listItem2 = list2.getFirstChild();
|
|
154
|
+
if (listItem1 && listItem2 && (0, _listNode.isNestedListNode)(listItem1) && (0, _listNode.isNestedListNode)(listItem2)) {
|
|
155
|
+
mergeLists(listItem1.getFirstChild(), listItem2.getFirstChild());
|
|
156
|
+
listItem2.remove();
|
|
157
|
+
}
|
|
158
|
+
var toMerge = list2.getChildren();
|
|
159
|
+
if (toMerge.length > 0) {
|
|
160
|
+
list1.append.apply(list1, (0, _toConsumableArray2.default)(toMerge));
|
|
161
|
+
updateChildrenListItemValue(list1);
|
|
162
|
+
}
|
|
163
|
+
list2.remove();
|
|
164
|
+
}
|
|
142
165
|
function removeList(editor) {
|
|
143
166
|
editor.update(function () {
|
|
144
167
|
var selection = (0, _lexical.$getSelection)();
|
|
@@ -152,9 +175,9 @@ function removeList(editor) {
|
|
|
152
175
|
for (var i = 0; i < nodes.length; i++) {
|
|
153
176
|
var node = nodes[i];
|
|
154
177
|
if ((0, _lexical.$isLeafNode)(node)) {
|
|
155
|
-
var
|
|
156
|
-
if (
|
|
157
|
-
listNodes.add((0, _listNode.$getTopListNode)(
|
|
178
|
+
var listItemNode = (0, _utils.$getNearestNodeOfType)(node, _ListItemNode.ListItemNode);
|
|
179
|
+
if (listItemNode != null) {
|
|
180
|
+
listNodes.add((0, _listNode.$getTopListNode)(listItemNode));
|
|
158
181
|
}
|
|
159
182
|
}
|
|
160
183
|
}
|
|
@@ -170,25 +193,25 @@ function removeList(editor) {
|
|
|
170
193
|
_step2;
|
|
171
194
|
try {
|
|
172
195
|
for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
|
|
173
|
-
var
|
|
196
|
+
var _listItemNode = _step2.value;
|
|
174
197
|
var paragraph = (0, _ParagraphNode.$createParagraphNode)();
|
|
175
|
-
append(paragraph,
|
|
198
|
+
append(paragraph, _listItemNode.getChildren());
|
|
176
199
|
insertionPoint.insertAfter(paragraph);
|
|
177
200
|
insertionPoint = paragraph;
|
|
178
201
|
|
|
179
202
|
// When the anchor and focus fall on the textNode
|
|
180
203
|
// we don't have to change the selection because the textNode will be appended to
|
|
181
204
|
// the newly generated paragraph.
|
|
182
|
-
// When selection is in empty nested list item, selection is actually on the
|
|
183
|
-
// When the corresponding
|
|
205
|
+
// When selection is in empty nested list item, selection is actually on the listItemNode.
|
|
206
|
+
// When the corresponding listItemNode is deleted and replaced by the newly generated paragraph
|
|
184
207
|
// we should manually set the selection's focus and anchor to the newly generated paragraph.
|
|
185
|
-
if (
|
|
208
|
+
if (_listItemNode.__key === selection.anchor.key) {
|
|
186
209
|
selection.anchor.set(paragraph.getKey(), 0, "element");
|
|
187
210
|
}
|
|
188
|
-
if (
|
|
211
|
+
if (_listItemNode.__key === selection.focus.key) {
|
|
189
212
|
selection.focus.set(paragraph.getKey(), 0, "element");
|
|
190
213
|
}
|
|
191
|
-
|
|
214
|
+
_listItemNode.remove();
|
|
192
215
|
}
|
|
193
216
|
} catch (err) {
|
|
194
217
|
_iterator2.e(err);
|
|
@@ -352,12 +375,12 @@ function maybeIndentOrOutdent(direction) {
|
|
|
352
375
|
if (selectedNodes.length === 1) {
|
|
353
376
|
// Only 1 node selected. Selection may not contain the ListNodeItem so we traverse the tree to
|
|
354
377
|
// find whether this is part of a WebinyListItemNode
|
|
355
|
-
var nearestWebinyListItemNode = (0, _listNode.
|
|
378
|
+
var nearestWebinyListItemNode = (0, _listNode.findNearestListItemNode)(selectedNodes[0]);
|
|
356
379
|
if (nearestWebinyListItemNode !== null) {
|
|
357
380
|
webinyListItemNodes = [nearestWebinyListItemNode];
|
|
358
381
|
}
|
|
359
382
|
} else {
|
|
360
|
-
webinyListItemNodes = (0, _listNode.
|
|
383
|
+
webinyListItemNodes = (0, _listNode.getUniqueListItemNodes)(selectedNodes);
|
|
361
384
|
}
|
|
362
385
|
if (webinyListItemNodes.length > 0) {
|
|
363
386
|
if (direction === "indent") {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_lexical","require","_ListNode","_listNode","_utils","_ListItemNode","_ParagraphNode","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","removeList","listNodes","$getTopListNode","WebinyListItemNode","$getNearestNodeOfType","ListNode","_iterator","_createForOfIteratorHelper2","default","_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","isNestedListNode","innerList","nextInnerList","firstChild","newListItem","newList","getStyleId","$handleOutdent","parentList","grandparentListItem","greatGrandparentList","lastChild","getLastChild","themeStyleId","previousSiblingsListItem","previousSiblingsList","nextSiblingsListItem","nextSiblingsList","getNextSiblings","maybeIndentOrOutdent","direction","selectedNodes","webinyListItemNodes","push","nearestWebinyListItemNode","findNearestWebinyListItemNode","getUniqueWebinyListItemNodes","indentList","outdentList","$handleListInsertParagraph","isCollapsed","getTextContent","topListNode","grandparent","replacementNode","select","nextSiblings","$isParagraphNode","$removeHighestEmptyListParent"],"sources":["formatList.ts"],"sourcesContent":["import {\n $getSelection,\n $isElementNode,\n $isLeafNode,\n $isParagraphNode,\n $isRangeSelection,\n $isRootOrShadowRoot,\n DEPRECATED_$isGridSelection,\n ElementNode,\n LexicalEditor,\n LexicalNode,\n NodeKey,\n ParagraphNode as BaseParagraphNode\n} from \"lexical\";\nimport { $createListNode, $isListNode, ListNode } from \"../ListNode\";\nimport {\n $getAllListItems,\n $getTopListNode,\n $removeHighestEmptyListParent,\n findNearestWebinyListItemNode,\n getUniqueWebinyListItemNodes,\n isNestedListNode\n} from \"~/utils/nodes/listNode\";\nimport { $getNearestNodeOfType } from \"@lexical/utils\";\nimport { $createListItemNode, $isListItemNode, ListItemNode } from \"~/nodes/ListItemNode\";\nimport { ListType } from \"@lexical/list\";\nimport { $createParagraphNode } from \"~/nodes/ParagraphNode\";\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\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 WebinyListItemNode = $getNearestNodeOfType(node, ListNode);\n\n if (WebinyListItemNode != null) {\n listNodes.add($getTopListNode(WebinyListItemNode));\n }\n }\n }\n }\n\n for (const listNode of listNodes) {\n let insertionPoint: ListNode | BaseParagraphNode = listNode;\n\n const listItems = $getAllListItems(listNode);\n\n for (const WebinyListItemNode of listItems) {\n const paragraph = $createParagraphNode();\n\n append(paragraph, WebinyListItemNode.getChildren());\n\n insertionPoint.insertAfter(paragraph);\n insertionPoint = paragraph;\n\n // When the anchor and focus fall on the textNode\n // we don't have to change the selection because the textNode will be appended to\n // the newly generated paragraph.\n // When selection is in empty nested list item, selection is actually on the WebinyListItemNode.\n // When the corresponding WebinyListItemNode is deleted and replaced by the newly generated paragraph\n // we should manually set the selection's focus and anchor to the newly generated paragraph.\n if (WebinyListItemNode.__key === selection.anchor.key) {\n selection.anchor.set(paragraph.getKey(), 0, \"element\");\n }\n if (WebinyListItemNode.__key === selection.focus.key) {\n selection.focus.set(paragraph.getKey(), 0, \"element\");\n }\n\n WebinyListItemNode.remove();\n }\n listNode.remove();\n }\n }\n });\n}\n\nexport function updateChildrenListItemValue(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 = findNearestWebinyListItemNode(selectedNodes[0]);\n\n if (nearestWebinyListItemNode !== null) {\n webinyListItemNodes = [nearestWebinyListItemNode];\n }\n } else {\n webinyListItemNodes = getUniqueWebinyListItemNodes(selectedNodes);\n }\n\n if (webinyListItemNodes.length > 0) {\n if (direction === \"indent\") {\n $handleIndent(webinyListItemNodes);\n } else {\n $handleOutdent(webinyListItemNodes);\n }\n }\n}\n\nexport function indentList(): void {\n maybeIndentOrOutdent(\"indent\");\n}\n\nexport function outdentList(): void {\n maybeIndentOrOutdent(\"outdent\");\n}\n\nexport function $handleListInsertParagraph(): boolean {\n const selection = $getSelection();\n\n if (!$isRangeSelection(selection) || !selection.isCollapsed()) {\n return false;\n }\n\n // Only run this code on empty list items\n const anchor = selection.anchor.getNode();\n\n if (!$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 \"~/nodes/ListItemNode\";\nimport { ListType } from \"@lexical/list\";\nimport { $createParagraphNode, ParagraphNode } from \"~/nodes/ParagraphNode\";\nimport {\n $getAllListItems,\n $getTopListNode,\n $removeHighestEmptyListParent,\n findNearestListItemNode,\n getUniqueListItemNodes,\n isNestedListNode\n} from \"~/utils/nodes/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/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@webiny/lexical-editor",
|
|
3
|
-
"version": "5.37.1-beta.
|
|
3
|
+
"version": "5.37.1-beta.2",
|
|
4
4
|
"repository": {
|
|
5
5
|
"type": "git",
|
|
6
6
|
"url": "https://github.com/webiny/webiny-js.git"
|
|
@@ -8,27 +8,27 @@
|
|
|
8
8
|
"license": "MIT",
|
|
9
9
|
"dependencies": {
|
|
10
10
|
"@emotion/react": "11.10.8",
|
|
11
|
-
"@lexical/code": "0.
|
|
12
|
-
"@lexical/hashtag": "0.
|
|
13
|
-
"@lexical/history": "0.
|
|
14
|
-
"@lexical/link": "0.
|
|
15
|
-
"@lexical/list": "0.
|
|
16
|
-
"@lexical/mark": "0.
|
|
17
|
-
"@lexical/overflow": "0.
|
|
18
|
-
"@lexical/react": "0.
|
|
19
|
-
"@lexical/rich-text": "0.
|
|
20
|
-
"@lexical/selection": "0.
|
|
21
|
-
"@lexical/utils": "0.
|
|
22
|
-
"@webiny/react-composition": "5.37.1-beta.
|
|
23
|
-
"@webiny/react-properties": "5.37.1-beta.
|
|
24
|
-
"lexical": "0.
|
|
11
|
+
"@lexical/code": "0.11.3",
|
|
12
|
+
"@lexical/hashtag": "0.11.3",
|
|
13
|
+
"@lexical/history": "0.11.3",
|
|
14
|
+
"@lexical/link": "0.11.3",
|
|
15
|
+
"@lexical/list": "0.11.3",
|
|
16
|
+
"@lexical/mark": "0.11.3",
|
|
17
|
+
"@lexical/overflow": "0.11.3",
|
|
18
|
+
"@lexical/react": "0.11.3",
|
|
19
|
+
"@lexical/rich-text": "0.11.3",
|
|
20
|
+
"@lexical/selection": "0.11.3",
|
|
21
|
+
"@lexical/utils": "0.11.3",
|
|
22
|
+
"@webiny/react-composition": "5.37.1-beta.2",
|
|
23
|
+
"@webiny/react-properties": "5.37.1-beta.2",
|
|
24
|
+
"lexical": "0.11.3",
|
|
25
25
|
"react": "17.0.2",
|
|
26
26
|
"react-dom": "17.0.2",
|
|
27
27
|
"react-style-object-to-css": "1.1.2"
|
|
28
28
|
},
|
|
29
29
|
"devDependencies": {
|
|
30
|
-
"@webiny/cli": "5.37.1-beta.
|
|
31
|
-
"@webiny/project-utils": "5.37.1-beta.
|
|
30
|
+
"@webiny/cli": "5.37.1-beta.2",
|
|
31
|
+
"@webiny/project-utils": "5.37.1-beta.2"
|
|
32
32
|
},
|
|
33
33
|
"publishConfig": {
|
|
34
34
|
"access": "public",
|
|
@@ -38,5 +38,5 @@
|
|
|
38
38
|
"build": "yarn webiny run build",
|
|
39
39
|
"watch": "yarn webiny run watch"
|
|
40
40
|
},
|
|
41
|
-
"gitHead": "
|
|
41
|
+
"gitHead": "674dad566114ea2a68775c7a4108c49e393689b9"
|
|
42
42
|
}
|
|
@@ -87,6 +87,7 @@ var getToolbarState = function getToolbarState(selection, node, parent, element,
|
|
|
87
87
|
if ((0, _ListNode.$isListNode)(element)) {
|
|
88
88
|
var parentList = (0, _utils.$getNearestNodeOfType)(anchorNode, _ListNode.ListNode);
|
|
89
89
|
var type = parentList ? parentList.getListType() : element.getListType();
|
|
90
|
+
state.list.isSelected = true;
|
|
90
91
|
state.textType = type;
|
|
91
92
|
}
|
|
92
93
|
if ((0, _richText.$isHeadingNode)(element)) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_lexical","require","_utils","_getSelectedNode","_link","_ListNode","_richText","_TypographyElementNode","_FontColorNode","_ParagraphNode","_HeadingNode","_QuoteNode","_selection","getSelectionTextFormat","selection","$isRangeSelection","italic","bold","underline","code","hasFormat","exports","getDefaultToolbarState","isRTL","link","isSelected","list","typography","fontColor","quote","paragraph","heading","textType","undefined","getToolbarState","node","parent","element","anchorNode","textFormat","state","_objectSpread2","default","$isParentElementRTL","$isLinkNode","$isFontColorNode","$isListNode","parentList","$getNearestNodeOfType","ListNode","type","getListType","$isBaseHeadingNode","$isHeadingNode","$isBaseParagraphNode","$isParagraphNode","$isTypographyElementNode","value","getTypographyValue","tag","includes","$isQuoteNode","getLexicalTextSelectionState","activeEditor","anchor","getNode","getKey","$findMatchingParent","e","getParent","$isRootOrShadowRoot","getTopLevelElementOrThrow","elementKey","elementDOM","getElementByKey","getSelectedNode","isElementDom","selectedText","getTextContent"],"sources":["getLexicalTextSelectionState.ts"],"sourcesContent":["import { TextFormatting, TextBlockSelection, ToolbarState, TypographyValue } from \"~/types\";\nimport {\n $isParagraphNode as $isBaseParagraphNode,\n $isRangeSelection,\n $isRootOrShadowRoot,\n ElementNode,\n LexicalEditor,\n LexicalNode,\n RangeSelection,\n TextNode\n} from \"lexical\";\nimport { $findMatchingParent, $getNearestNodeOfType } from \"@lexical/utils\";\nimport { getSelectedNode } from \"~/utils/getSelectedNode\";\nimport { $isLinkNode } from \"@lexical/link\";\nimport { $isListNode, ListNode } from \"~/nodes/ListNode\";\nimport { $isHeadingNode as $isBaseHeadingNode } from \"@lexical/rich-text\";\nimport { $isTypographyElementNode } from \"~/nodes/TypographyElementNode\";\nimport { $isFontColorNode } from \"~/nodes/FontColorNode\";\nimport { $isParagraphNode } from \"~/nodes/ParagraphNode\";\nimport { $isHeadingNode } from \"~/nodes/HeadingNode\";\nimport { $isQuoteNode } from \"~/nodes/QuoteNode\";\nimport { $isParentElementRTL } from \"@lexical/selection\";\n\nexport const getSelectionTextFormat = (selection: RangeSelection | undefined): TextFormatting => {\n return !$isRangeSelection(selection)\n ? {\n italic: false,\n bold: false,\n underline: false,\n code: false\n }\n : {\n bold: selection.hasFormat(\"bold\"),\n italic: selection.hasFormat(\"italic\"),\n underline: selection.hasFormat(\"underline\"),\n code: selection.hasFormat(\"code\")\n };\n};\n\nconst getDefaultToolbarState = (): ToolbarState => {\n return {\n bold: false,\n italic: false,\n underline: false,\n code: false,\n isRTL: false,\n link: { isSelected: false },\n list: { isSelected: false },\n typography: { isSelected: false },\n fontColor: { isSelected: false },\n quote: { isSelected: false },\n paragraph: { isSelected: false },\n heading: { isSelected: false },\n textType: undefined\n };\n};\n\nexport const getToolbarState = (\n selection: RangeSelection,\n node: LexicalNode,\n parent: LexicalNode | null,\n element: LexicalNode | null,\n anchorNode: ElementNode | TextNode\n): ToolbarState => {\n const textFormat = getSelectionTextFormat(selection);\n let state: ToolbarState = getDefaultToolbarState();\n state = {\n ...state,\n bold: textFormat.bold,\n italic: textFormat.italic,\n underline: textFormat.underline,\n code: textFormat.code\n };\n\n state.isRTL = $isParentElementRTL(selection);\n\n // link\n state.link.isSelected = $isLinkNode(parent) || $isLinkNode(node);\n if (state.link.isSelected) {\n state.textType = \"link\";\n }\n\n // font color\n if ($isFontColorNode(node)) {\n state.fontColor.isSelected = true;\n }\n\n if ($isListNode(element)) {\n const parentList = $getNearestNodeOfType<ListNode>(anchorNode, ListNode);\n const type = parentList ? parentList.getListType() : element.getListType();\n state.textType = type;\n }\n\n if ($isBaseHeadingNode(element)) {\n state.textType = \"heading\";\n }\n\n if ($isHeadingNode(element)) {\n state.textType = \"heading\";\n state.heading.isSelected = true;\n }\n\n if ($isBaseParagraphNode(element)) {\n state.textType = \"paragraph\";\n }\n\n if ($isParagraphNode(element)) {\n state.textType = \"paragraph\";\n state.paragraph.isSelected = true;\n }\n\n if ($isTypographyElementNode(element)) {\n state.typography.isSelected = true;\n const value = element?.getTypographyValue() as TypographyValue;\n if (value.tag.includes(\"h\")) {\n state.textType = \"heading\";\n }\n if (value.tag.includes(\"p\")) {\n state.textType = \"paragraph\";\n }\n }\n\n if ($isTypographyElementNode(element)) {\n state.fontColor.isSelected = true;\n }\n\n if ($isQuoteNode(element)) {\n state.textType = \"quoteblock\";\n state.quote.isSelected = true;\n }\n\n return state;\n};\n\n/*\n * @desc Get selection data and provide processed toolbar state and data about the text, element and parent nodes.\n */\nexport const getLexicalTextSelectionState = (\n activeEditor: LexicalEditor,\n selection: RangeSelection\n): TextBlockSelection | null => {\n if ($isRangeSelection(selection)) {\n const anchorNode = selection.anchor.getNode();\n let element =\n anchorNode.getKey() === \"root\"\n ? anchorNode\n : $findMatchingParent(anchorNode, e => {\n const parent = e.getParent();\n return parent !== null && $isRootOrShadowRoot(parent);\n });\n\n if (element === null) {\n element = anchorNode.getTopLevelElementOrThrow();\n }\n\n const elementKey = element.getKey();\n const elementDOM = activeEditor.getElementByKey(elementKey);\n\n // Update links\n const node = getSelectedNode(selection);\n const parent = node.getParent();\n const isElementDom = elementDOM !== null;\n const selectedText = selection.getTextContent();\n\n return {\n // node/element data from selection\n elementKey,\n element,\n parent,\n node,\n anchorNode,\n selection,\n isElementDom,\n selectedText,\n state: getToolbarState(selection, node, parent, element, anchorNode)\n };\n }\n return null;\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["_lexical","require","_utils","_getSelectedNode","_link","_ListNode","_richText","_TypographyElementNode","_FontColorNode","_ParagraphNode","_HeadingNode","_QuoteNode","_selection","getSelectionTextFormat","selection","$isRangeSelection","italic","bold","underline","code","hasFormat","exports","getDefaultToolbarState","isRTL","link","isSelected","list","typography","fontColor","quote","paragraph","heading","textType","undefined","getToolbarState","node","parent","element","anchorNode","textFormat","state","_objectSpread2","default","$isParentElementRTL","$isLinkNode","$isFontColorNode","$isListNode","parentList","$getNearestNodeOfType","ListNode","type","getListType","$isBaseHeadingNode","$isHeadingNode","$isBaseParagraphNode","$isParagraphNode","$isTypographyElementNode","value","getTypographyValue","tag","includes","$isQuoteNode","getLexicalTextSelectionState","activeEditor","anchor","getNode","getKey","$findMatchingParent","e","getParent","$isRootOrShadowRoot","getTopLevelElementOrThrow","elementKey","elementDOM","getElementByKey","getSelectedNode","isElementDom","selectedText","getTextContent"],"sources":["getLexicalTextSelectionState.ts"],"sourcesContent":["import { TextFormatting, TextBlockSelection, ToolbarState, TypographyValue } from \"~/types\";\nimport {\n $isParagraphNode as $isBaseParagraphNode,\n $isRangeSelection,\n $isRootOrShadowRoot,\n ElementNode,\n LexicalEditor,\n LexicalNode,\n RangeSelection,\n TextNode\n} from \"lexical\";\nimport { $findMatchingParent, $getNearestNodeOfType } from \"@lexical/utils\";\nimport { getSelectedNode } from \"~/utils/getSelectedNode\";\nimport { $isLinkNode } from \"@lexical/link\";\nimport { $isListNode, ListNode } from \"~/nodes/ListNode\";\nimport { $isHeadingNode as $isBaseHeadingNode } from \"@lexical/rich-text\";\nimport { $isTypographyElementNode } from \"~/nodes/TypographyElementNode\";\nimport { $isFontColorNode } from \"~/nodes/FontColorNode\";\nimport { $isParagraphNode } from \"~/nodes/ParagraphNode\";\nimport { $isHeadingNode } from \"~/nodes/HeadingNode\";\nimport { $isQuoteNode } from \"~/nodes/QuoteNode\";\nimport { $isParentElementRTL } from \"@lexical/selection\";\n\nexport const getSelectionTextFormat = (selection: RangeSelection | undefined): TextFormatting => {\n return !$isRangeSelection(selection)\n ? {\n italic: false,\n bold: false,\n underline: false,\n code: false\n }\n : {\n bold: selection.hasFormat(\"bold\"),\n italic: selection.hasFormat(\"italic\"),\n underline: selection.hasFormat(\"underline\"),\n code: selection.hasFormat(\"code\")\n };\n};\n\nconst getDefaultToolbarState = (): ToolbarState => {\n return {\n bold: false,\n italic: false,\n underline: false,\n code: false,\n isRTL: false,\n link: { isSelected: false },\n list: { isSelected: false },\n typography: { isSelected: false },\n fontColor: { isSelected: false },\n quote: { isSelected: false },\n paragraph: { isSelected: false },\n heading: { isSelected: false },\n textType: undefined\n };\n};\n\nexport const getToolbarState = (\n selection: RangeSelection,\n node: LexicalNode,\n parent: LexicalNode | null,\n element: LexicalNode | null,\n anchorNode: ElementNode | TextNode\n): ToolbarState => {\n const textFormat = getSelectionTextFormat(selection);\n let state: ToolbarState = getDefaultToolbarState();\n state = {\n ...state,\n bold: textFormat.bold,\n italic: textFormat.italic,\n underline: textFormat.underline,\n code: textFormat.code\n };\n\n state.isRTL = $isParentElementRTL(selection);\n\n // link\n state.link.isSelected = $isLinkNode(parent) || $isLinkNode(node);\n if (state.link.isSelected) {\n state.textType = \"link\";\n }\n\n // font color\n if ($isFontColorNode(node)) {\n state.fontColor.isSelected = true;\n }\n\n if ($isListNode(element)) {\n const parentList = $getNearestNodeOfType<ListNode>(anchorNode, ListNode);\n const type = parentList ? parentList.getListType() : element.getListType();\n state.list.isSelected = true;\n state.textType = type;\n }\n\n if ($isBaseHeadingNode(element)) {\n state.textType = \"heading\";\n }\n\n if ($isHeadingNode(element)) {\n state.textType = \"heading\";\n state.heading.isSelected = true;\n }\n\n if ($isBaseParagraphNode(element)) {\n state.textType = \"paragraph\";\n }\n\n if ($isParagraphNode(element)) {\n state.textType = \"paragraph\";\n state.paragraph.isSelected = true;\n }\n\n if ($isTypographyElementNode(element)) {\n state.typography.isSelected = true;\n const value = element?.getTypographyValue() as TypographyValue;\n if (value.tag.includes(\"h\")) {\n state.textType = \"heading\";\n }\n if (value.tag.includes(\"p\")) {\n state.textType = \"paragraph\";\n }\n }\n\n if ($isTypographyElementNode(element)) {\n state.fontColor.isSelected = true;\n }\n\n if ($isQuoteNode(element)) {\n state.textType = \"quoteblock\";\n state.quote.isSelected = true;\n }\n\n return state;\n};\n\n/*\n * @desc Get selection data and provide processed toolbar state and data about the text, element and parent nodes.\n */\nexport const getLexicalTextSelectionState = (\n activeEditor: LexicalEditor,\n selection: RangeSelection\n): TextBlockSelection | null => {\n if ($isRangeSelection(selection)) {\n const anchorNode = selection.anchor.getNode();\n let element =\n anchorNode.getKey() === \"root\"\n ? anchorNode\n : $findMatchingParent(anchorNode, e => {\n const parent = e.getParent();\n return parent !== null && $isRootOrShadowRoot(parent);\n });\n\n if (element === null) {\n element = anchorNode.getTopLevelElementOrThrow();\n }\n\n const elementKey = element.getKey();\n const elementDOM = activeEditor.getElementByKey(elementKey);\n\n // Update links\n const node = getSelectedNode(selection);\n const parent = node.getParent();\n const isElementDom = elementDOM !== null;\n const selectedText = selection.getTextContent();\n\n return {\n // node/element data from selection\n elementKey,\n element,\n parent,\n node,\n anchorNode,\n selection,\n isElementDom,\n selectedText,\n state: getToolbarState(selection, node, parent, element, anchorNode)\n };\n }\n return null;\n};\n"],"mappings":"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"}
|
|
@@ -5,7 +5,7 @@ export declare function $getListDepth(listNode: ListNode): number;
|
|
|
5
5
|
export declare function $getTopListNode(listItem: LexicalNode): ListNode;
|
|
6
6
|
export declare function $getAllListItems(node: ListNode): Array<ListItemNode>;
|
|
7
7
|
export declare function isNestedListNode(node: LexicalNode | null | undefined): boolean;
|
|
8
|
-
export declare function
|
|
9
|
-
export declare function
|
|
8
|
+
export declare function findNearestListItemNode(node: LexicalNode): ListItemNode | null;
|
|
9
|
+
export declare function getUniqueListItemNodes(nodeList: Array<LexicalNode>): Array<ListItemNode>;
|
|
10
10
|
export declare function $removeHighestEmptyListParent(sublist: ListItemNode | ListNode): void;
|
|
11
11
|
export declare function wrapInListItem(node: LexicalNode): ListItemNode;
|
package/utils/nodes/listNode.js
CHANGED
|
@@ -7,8 +7,8 @@ exports.$getAllListItems = $getAllListItems;
|
|
|
7
7
|
exports.$getListDepth = $getListDepth;
|
|
8
8
|
exports.$getTopListNode = $getTopListNode;
|
|
9
9
|
exports.$removeHighestEmptyListParent = $removeHighestEmptyListParent;
|
|
10
|
-
exports.
|
|
11
|
-
exports.
|
|
10
|
+
exports.findNearestListItemNode = findNearestListItemNode;
|
|
11
|
+
exports.getUniqueListItemNodes = getUniqueListItemNodes;
|
|
12
12
|
exports.isNestedListNode = isNestedListNode;
|
|
13
13
|
exports.wrapInListItem = wrapInListItem;
|
|
14
14
|
var _ListNode = require("../../nodes/ListNode");
|
|
@@ -64,7 +64,7 @@ function isNestedListNode(node) {
|
|
|
64
64
|
}
|
|
65
65
|
|
|
66
66
|
// TODO: rewrite with $findMatchingParent or *nodeOfType
|
|
67
|
-
function
|
|
67
|
+
function findNearestListItemNode(node) {
|
|
68
68
|
var currentNode = node;
|
|
69
69
|
while (currentNode !== null) {
|
|
70
70
|
if ((0, _ListItemNode.$isListItemNode)(currentNode)) {
|
|
@@ -74,7 +74,7 @@ function findNearestWebinyListItemNode(node) {
|
|
|
74
74
|
}
|
|
75
75
|
return null;
|
|
76
76
|
}
|
|
77
|
-
function
|
|
77
|
+
function getUniqueListItemNodes(nodeList) {
|
|
78
78
|
var keys = new Set();
|
|
79
79
|
for (var i = 0; i < nodeList.length; i++) {
|
|
80
80
|
var node = nodeList[i];
|
|
@@ -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","
|
|
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 \"~/nodes/ListNode\";\nimport { $createListItemNode, $isListItemNode, ListItemNode } from \"~/nodes/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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"}
|