@webiny/lexical-nodes 5.38.0-beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/FontColorNode.d.ts +43 -0
- package/FontColorNode.js +125 -0
- package/FontColorNode.js.map +1 -0
- package/HeadingNode.d.ts +32 -0
- package/HeadingNode.js +193 -0
- package/HeadingNode.js.map +1 -0
- package/ImageNode.d.ts +58 -0
- package/ImageNode.js +217 -0
- package/ImageNode.js.map +1 -0
- package/LICENSE +21 -0
- package/LinkNode.d.ts +106 -0
- package/LinkNode.js +531 -0
- package/LinkNode.js.map +1 -0
- package/ListItemNode.d.ts +44 -0
- package/ListItemNode.js +442 -0
- package/ListItemNode.js.map +1 -0
- package/ListNode.d.ts +42 -0
- package/ListNode.js +290 -0
- package/ListNode.js.map +1 -0
- package/ParagraphNode.d.ts +31 -0
- package/ParagraphNode.js +220 -0
- package/ParagraphNode.js.map +1 -0
- package/QuoteNode.d.ts +33 -0
- package/QuoteNode.js +227 -0
- package/QuoteNode.js.map +1 -0
- package/README.md +6 -0
- package/TypographyNode.d.ts +41 -0
- package/TypographyNode.js +153 -0
- package/TypographyNode.js.map +1 -0
- package/components/ImageNode/ContentEditable.css +22 -0
- package/components/ImageNode/ContentEditable.d.ts +12 -0
- package/components/ImageNode/ContentEditable.js +26 -0
- package/components/ImageNode/ContentEditable.js.map +1 -0
- package/components/ImageNode/ImageComponent.css +43 -0
- package/components/ImageNode/ImageComponent.d.ts +16 -0
- package/components/ImageNode/ImageComponent.js +254 -0
- package/components/ImageNode/ImageComponent.js.map +1 -0
- package/components/ImageNode/ImageResizer.d.ts +26 -0
- package/components/ImageNode/ImageResizer.js +215 -0
- package/components/ImageNode/ImageResizer.js.map +1 -0
- package/components/ImageNode/Placeholder.css +20 -0
- package/components/ImageNode/Placeholder.d.ts +15 -0
- package/components/ImageNode/Placeholder.js +30 -0
- package/components/ImageNode/Placeholder.js.map +1 -0
- package/components/ImageNode/SharedHistoryContext.d.ts +11 -0
- package/components/ImageNode/SharedHistoryContext.js +28 -0
- package/components/ImageNode/SharedHistoryContext.js.map +1 -0
- package/index.d.ts +22 -0
- package/index.js +226 -0
- package/index.js.map +1 -0
- package/package.json +32 -0
- package/types.d.ts +15 -0
- package/types.js +7 -0
- package/types.js.map +1 -0
- package/utils/clearNodeFormating.d.ts +2 -0
- package/utils/clearNodeFormating.js +30 -0
- package/utils/clearNodeFormating.js.map +1 -0
- package/utils/formatList.d.ts +19 -0
- package/utils/formatList.js +449 -0
- package/utils/formatList.js.map +1 -0
- package/utils/formatToHeading.d.ts +3 -0
- package/utils/formatToHeading.js +27 -0
- package/utils/formatToHeading.js.map +1 -0
- package/utils/formatToParagraph.d.ts +2 -0
- package/utils/formatToParagraph.js +22 -0
- package/utils/formatToParagraph.js.map +1 -0
- package/utils/formatToQuote.d.ts +2 -0
- package/utils/formatToQuote.js +27 -0
- package/utils/formatToQuote.js.map +1 -0
- package/utils/listNode.d.ts +11 -0
- package/utils/listNode.js +109 -0
- package/utils/listNode.js.map +1 -0
package/ListItemNode.js
ADDED
|
@@ -0,0 +1,442 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.$createListItemNode = $createListItemNode;
|
|
8
|
+
exports.$isListItemNode = $isListItemNode;
|
|
9
|
+
exports.ListItemNode = void 0;
|
|
10
|
+
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
|
11
|
+
var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
|
|
12
|
+
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
13
|
+
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
14
|
+
var _get2 = _interopRequireDefault(require("@babel/runtime/helpers/get"));
|
|
15
|
+
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
|
|
16
|
+
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
|
|
17
|
+
var _createSuper2 = _interopRequireDefault(require("@babel/runtime/helpers/createSuper"));
|
|
18
|
+
var _lexical = require("lexical");
|
|
19
|
+
var _ListNode = require("./ListNode");
|
|
20
|
+
var _utils = require("@lexical/utils");
|
|
21
|
+
var _formatList = require("./utils/formatList");
|
|
22
|
+
var _ParagraphNode = require("./ParagraphNode");
|
|
23
|
+
var _listNode = require("./utils/listNode");
|
|
24
|
+
/** @noInheritDoc */
|
|
25
|
+
var ListItemNode = /*#__PURE__*/function (_ElementNode) {
|
|
26
|
+
(0, _inherits2.default)(ListItemNode, _ElementNode);
|
|
27
|
+
var _super = (0, _createSuper2.default)(ListItemNode);
|
|
28
|
+
function ListItemNode(value, checked, key) {
|
|
29
|
+
var _this;
|
|
30
|
+
(0, _classCallCheck2.default)(this, ListItemNode);
|
|
31
|
+
_this = _super.call(this, key);
|
|
32
|
+
_this.__value = value === undefined ? 1 : value;
|
|
33
|
+
_this.__checked = checked;
|
|
34
|
+
return _this;
|
|
35
|
+
}
|
|
36
|
+
(0, _createClass2.default)(ListItemNode, [{
|
|
37
|
+
key: "createDOM",
|
|
38
|
+
value: function createDOM(config) {
|
|
39
|
+
var element = document.createElement("li");
|
|
40
|
+
var parent = this.getParent();
|
|
41
|
+
if ((0, _ListNode.$isListNode)(parent) && parent.getListType() === "check") {
|
|
42
|
+
updateListItemChecked(element, this, null, parent);
|
|
43
|
+
}
|
|
44
|
+
element.value = this.__value;
|
|
45
|
+
$setListItemThemeClassNames(element, config.theme, this);
|
|
46
|
+
return element;
|
|
47
|
+
}
|
|
48
|
+
}, {
|
|
49
|
+
key: "updateDOM",
|
|
50
|
+
value: function updateDOM(prevNode, dom, config) {
|
|
51
|
+
var parent = this.getParent();
|
|
52
|
+
if ((0, _ListNode.$isListNode)(parent) && parent.getListType() === "check") {
|
|
53
|
+
updateListItemChecked(dom, this, prevNode, parent);
|
|
54
|
+
}
|
|
55
|
+
// @ts-expect-error - this is always HTMLListItemElement
|
|
56
|
+
dom.value = this.__value;
|
|
57
|
+
$setListItemThemeClassNames(dom, config.theme, this);
|
|
58
|
+
return false;
|
|
59
|
+
}
|
|
60
|
+
}, {
|
|
61
|
+
key: "exportJSON",
|
|
62
|
+
value: function exportJSON() {
|
|
63
|
+
return (0, _objectSpread2.default)((0, _objectSpread2.default)({}, (0, _get2.default)((0, _getPrototypeOf2.default)(ListItemNode.prototype), "exportJSON", this).call(this)), {}, {
|
|
64
|
+
checked: this.getChecked(),
|
|
65
|
+
type: "webiny-listitem",
|
|
66
|
+
value: this.getValue(),
|
|
67
|
+
version: 1
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
}, {
|
|
71
|
+
key: "append",
|
|
72
|
+
value: function append() {
|
|
73
|
+
for (var i = 0; i < arguments.length; i++) {
|
|
74
|
+
var node = i < 0 || arguments.length <= i ? undefined : arguments[i];
|
|
75
|
+
if ((0, _lexical.$isElementNode)(node) && this.canMergeWith(node)) {
|
|
76
|
+
var children = node.getChildren();
|
|
77
|
+
this.append.apply(this, (0, _toConsumableArray2.default)(children));
|
|
78
|
+
node.remove();
|
|
79
|
+
} else {
|
|
80
|
+
(0, _get2.default)((0, _getPrototypeOf2.default)(ListItemNode.prototype), "append", this).call(this, node);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
return this;
|
|
84
|
+
}
|
|
85
|
+
}, {
|
|
86
|
+
key: "replace",
|
|
87
|
+
value: function replace(replaceWithNode, includeChildren) {
|
|
88
|
+
if ($isListItemNode(replaceWithNode)) {
|
|
89
|
+
return (0, _get2.default)((0, _getPrototypeOf2.default)(ListItemNode.prototype), "replace", this).call(this, replaceWithNode);
|
|
90
|
+
}
|
|
91
|
+
this.setIndent(0);
|
|
92
|
+
var list = this.getParentOrThrow();
|
|
93
|
+
if (!(0, _ListNode.$isListNode)(list)) {
|
|
94
|
+
return replaceWithNode;
|
|
95
|
+
}
|
|
96
|
+
if (list.__first === this.getKey()) {
|
|
97
|
+
list.insertBefore(replaceWithNode);
|
|
98
|
+
} else if (list.__last === this.getKey()) {
|
|
99
|
+
list.insertAfter(replaceWithNode);
|
|
100
|
+
} else {
|
|
101
|
+
// Split the list
|
|
102
|
+
var newList = (0, _ListNode.$createListNode)(list.getListType());
|
|
103
|
+
var nextSibling = this.getNextSibling();
|
|
104
|
+
while (nextSibling) {
|
|
105
|
+
var nodeToAppend = nextSibling;
|
|
106
|
+
nextSibling = nextSibling.getNextSibling();
|
|
107
|
+
newList.append(nodeToAppend);
|
|
108
|
+
}
|
|
109
|
+
list.insertAfter(replaceWithNode);
|
|
110
|
+
replaceWithNode.insertAfter(newList);
|
|
111
|
+
}
|
|
112
|
+
if (includeChildren) {
|
|
113
|
+
this.getChildren().forEach(function (child) {
|
|
114
|
+
replaceWithNode.append(child);
|
|
115
|
+
});
|
|
116
|
+
}
|
|
117
|
+
this.remove();
|
|
118
|
+
if (list.getChildrenSize() === 0) {
|
|
119
|
+
list.remove();
|
|
120
|
+
}
|
|
121
|
+
return replaceWithNode;
|
|
122
|
+
}
|
|
123
|
+
}, {
|
|
124
|
+
key: "insertAfter",
|
|
125
|
+
value: function insertAfter(node) {
|
|
126
|
+
var listNode = this.getParentOrThrow();
|
|
127
|
+
if (!(0, _ListNode.$isListNode)(listNode)) {
|
|
128
|
+
console.log("insertAfter: webiny list node is not parent of list item node");
|
|
129
|
+
return listNode;
|
|
130
|
+
}
|
|
131
|
+
var siblings = this.getNextSiblings();
|
|
132
|
+
if ($isListItemNode(node)) {
|
|
133
|
+
var after = (0, _get2.default)((0, _getPrototypeOf2.default)(ListItemNode.prototype), "insertAfter", this).call(this, node);
|
|
134
|
+
var afterListNode = node.getParentOrThrow();
|
|
135
|
+
if ((0, _ListNode.$isListNode)(afterListNode)) {
|
|
136
|
+
(0, _formatList.updateChildrenListItemValue)(afterListNode);
|
|
137
|
+
}
|
|
138
|
+
return after;
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
// Attempt to merge if the list is of the same type.
|
|
142
|
+
|
|
143
|
+
if ((0, _ListNode.$isListNode)(node) && node.getListType() === listNode.getListType()) {
|
|
144
|
+
var child = node;
|
|
145
|
+
var children = node.getChildren();
|
|
146
|
+
for (var i = children.length - 1; i >= 0; i--) {
|
|
147
|
+
child = children[i];
|
|
148
|
+
this.insertAfter(child);
|
|
149
|
+
}
|
|
150
|
+
return child;
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
// Otherwise, split the list
|
|
154
|
+
// Split the lists and insert the node in between them
|
|
155
|
+
listNode.insertAfter(node);
|
|
156
|
+
if (siblings.length !== 0) {
|
|
157
|
+
var newListNode = (0, _ListNode.$createListNode)(listNode.getListType());
|
|
158
|
+
siblings.forEach(function (sibling) {
|
|
159
|
+
return newListNode.append(sibling);
|
|
160
|
+
});
|
|
161
|
+
node.insertAfter(newListNode);
|
|
162
|
+
}
|
|
163
|
+
return node;
|
|
164
|
+
}
|
|
165
|
+
}, {
|
|
166
|
+
key: "remove",
|
|
167
|
+
value: function remove(preserveEmptyParent) {
|
|
168
|
+
var prevSibling = this.getPreviousSibling();
|
|
169
|
+
var nextSibling = this.getNextSibling();
|
|
170
|
+
(0, _get2.default)((0, _getPrototypeOf2.default)(ListItemNode.prototype), "remove", this).call(this, preserveEmptyParent);
|
|
171
|
+
if (prevSibling && nextSibling && (0, _listNode.isNestedListNode)(prevSibling) && (0, _listNode.isNestedListNode)(nextSibling)) {
|
|
172
|
+
(0, _formatList.mergeLists)(prevSibling.getFirstChild(), nextSibling.getFirstChild());
|
|
173
|
+
nextSibling.remove();
|
|
174
|
+
} else if (nextSibling) {
|
|
175
|
+
var parent = nextSibling.getParent();
|
|
176
|
+
if ((0, _ListNode.$isListNode)(parent)) {
|
|
177
|
+
(0, _formatList.updateChildrenListItemValue)(parent);
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
}, {
|
|
182
|
+
key: "insertNewAfter",
|
|
183
|
+
value: function insertNewAfter() {
|
|
184
|
+
var newElement = $createListItemNode(this.__checked == null ? undefined : false);
|
|
185
|
+
this.insertAfter(newElement);
|
|
186
|
+
return newElement;
|
|
187
|
+
}
|
|
188
|
+
}, {
|
|
189
|
+
key: "collapseAtStart",
|
|
190
|
+
value: function collapseAtStart(selection) {
|
|
191
|
+
var paragraph = (0, _ParagraphNode.$createParagraphNode)();
|
|
192
|
+
var children = this.getChildren();
|
|
193
|
+
children.forEach(function (child) {
|
|
194
|
+
return paragraph.append(child);
|
|
195
|
+
});
|
|
196
|
+
var listNode = this.getParentOrThrow();
|
|
197
|
+
var listNodeParent = listNode.getParentOrThrow();
|
|
198
|
+
var isIndented = $isListItemNode(listNodeParent);
|
|
199
|
+
if (listNode.getChildrenSize() === 1) {
|
|
200
|
+
if (isIndented) {
|
|
201
|
+
// if the list node is nested, we just want to remove it,
|
|
202
|
+
// effectively unindenting it.
|
|
203
|
+
listNode.remove();
|
|
204
|
+
listNodeParent.select();
|
|
205
|
+
} else {
|
|
206
|
+
listNode.replace(paragraph);
|
|
207
|
+
// If we have selection on the list item, we'll need to move it
|
|
208
|
+
// to the paragraph
|
|
209
|
+
var anchor = selection.anchor;
|
|
210
|
+
var focus = selection.focus;
|
|
211
|
+
var key = paragraph.getKey();
|
|
212
|
+
if (anchor.type === "element" && anchor.getNode().is(this)) {
|
|
213
|
+
anchor.set(key, anchor.offset, "element");
|
|
214
|
+
}
|
|
215
|
+
if (focus.type === "element" && focus.getNode().is(this)) {
|
|
216
|
+
focus.set(key, focus.offset, "element");
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
} else {
|
|
220
|
+
listNode.insertBefore(paragraph);
|
|
221
|
+
this.remove();
|
|
222
|
+
}
|
|
223
|
+
return true;
|
|
224
|
+
}
|
|
225
|
+
}, {
|
|
226
|
+
key: "getValue",
|
|
227
|
+
value: function getValue() {
|
|
228
|
+
var self = this.getLatest();
|
|
229
|
+
return self.__value;
|
|
230
|
+
}
|
|
231
|
+
}, {
|
|
232
|
+
key: "setValue",
|
|
233
|
+
value: function setValue(value) {
|
|
234
|
+
var self = this.getWritable();
|
|
235
|
+
self.__value = value;
|
|
236
|
+
}
|
|
237
|
+
}, {
|
|
238
|
+
key: "getChecked",
|
|
239
|
+
value: function getChecked() {
|
|
240
|
+
var self = this.getLatest();
|
|
241
|
+
return self.__checked;
|
|
242
|
+
}
|
|
243
|
+
}, {
|
|
244
|
+
key: "setChecked",
|
|
245
|
+
value: function setChecked(checked) {
|
|
246
|
+
var self = this.getWritable();
|
|
247
|
+
self.__checked = checked;
|
|
248
|
+
}
|
|
249
|
+
}, {
|
|
250
|
+
key: "getIndent",
|
|
251
|
+
value: function getIndent() {
|
|
252
|
+
// If we don't have a parent, we are likely serializing
|
|
253
|
+
var parent = this.getParent();
|
|
254
|
+
if (parent === null) {
|
|
255
|
+
return this.getLatest().__indent;
|
|
256
|
+
}
|
|
257
|
+
// ListItemNode should always have a ListNode for a parent.
|
|
258
|
+
var listNodeParent = parent.getParentOrThrow();
|
|
259
|
+
var indentLevel = 0;
|
|
260
|
+
while ($isListItemNode(listNodeParent)) {
|
|
261
|
+
listNodeParent = listNodeParent.getParentOrThrow().getParentOrThrow();
|
|
262
|
+
indentLevel++;
|
|
263
|
+
}
|
|
264
|
+
return indentLevel;
|
|
265
|
+
}
|
|
266
|
+
}, {
|
|
267
|
+
key: "setIndent",
|
|
268
|
+
value: function setIndent(indent) {
|
|
269
|
+
var currentIndent = this.getIndent();
|
|
270
|
+
while (currentIndent !== indent) {
|
|
271
|
+
if (currentIndent < indent) {
|
|
272
|
+
(0, _formatList.$handleIndent)([this]);
|
|
273
|
+
currentIndent++;
|
|
274
|
+
} else {
|
|
275
|
+
(0, _formatList.$handleOutdent)([this]);
|
|
276
|
+
currentIndent--;
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
return this;
|
|
280
|
+
}
|
|
281
|
+
}, {
|
|
282
|
+
key: "canIndent",
|
|
283
|
+
value: function canIndent() {
|
|
284
|
+
// Indent/outdent is handled specifically in the RichText logic.
|
|
285
|
+
|
|
286
|
+
return false;
|
|
287
|
+
}
|
|
288
|
+
}, {
|
|
289
|
+
key: "insertBefore",
|
|
290
|
+
value: function insertBefore(nodeToInsert) {
|
|
291
|
+
if ($isListItemNode(nodeToInsert)) {
|
|
292
|
+
var parent = this.getParentOrThrow();
|
|
293
|
+
if ((0, _ListNode.$isListNode)(parent)) {
|
|
294
|
+
var siblings = this.getNextSiblings();
|
|
295
|
+
(0, _formatList.updateChildrenListItemValue)(parent, siblings);
|
|
296
|
+
}
|
|
297
|
+
}
|
|
298
|
+
return (0, _get2.default)((0, _getPrototypeOf2.default)(ListItemNode.prototype), "insertBefore", this).call(this, nodeToInsert);
|
|
299
|
+
}
|
|
300
|
+
}, {
|
|
301
|
+
key: "canInsertAfter",
|
|
302
|
+
value: function canInsertAfter(node) {
|
|
303
|
+
return (0, _ListNode.$isListNode)(node);
|
|
304
|
+
}
|
|
305
|
+
}, {
|
|
306
|
+
key: "canReplaceWith",
|
|
307
|
+
value: function canReplaceWith(replacement) {
|
|
308
|
+
return $isListItemNode(replacement);
|
|
309
|
+
}
|
|
310
|
+
}, {
|
|
311
|
+
key: "canMergeWith",
|
|
312
|
+
value: function canMergeWith(node) {
|
|
313
|
+
return (0, _ParagraphNode.$isParagraphNode)(node) || $isListItemNode(node);
|
|
314
|
+
}
|
|
315
|
+
}, {
|
|
316
|
+
key: "extractWithChild",
|
|
317
|
+
value: function extractWithChild(child, selection) {
|
|
318
|
+
if (!(0, _lexical.$isRangeSelection)(selection)) {
|
|
319
|
+
return false;
|
|
320
|
+
}
|
|
321
|
+
var anchorNode = selection.anchor.getNode();
|
|
322
|
+
var focusNode = selection.focus.getNode();
|
|
323
|
+
return this.isParentOf(anchorNode) && this.isParentOf(focusNode) && this.getTextContent().length === selection.getTextContent().length;
|
|
324
|
+
}
|
|
325
|
+
}], [{
|
|
326
|
+
key: "getType",
|
|
327
|
+
value: /** @internal */
|
|
328
|
+
|
|
329
|
+
/** @internal */
|
|
330
|
+
|
|
331
|
+
function getType() {
|
|
332
|
+
return "webiny-listitem";
|
|
333
|
+
}
|
|
334
|
+
}, {
|
|
335
|
+
key: "clone",
|
|
336
|
+
value: function clone(node) {
|
|
337
|
+
return new ListItemNode(node.__value, node.__checked, node.__key);
|
|
338
|
+
}
|
|
339
|
+
}, {
|
|
340
|
+
key: "importDOM",
|
|
341
|
+
value: function importDOM() {
|
|
342
|
+
return {
|
|
343
|
+
li: function li() {
|
|
344
|
+
return {
|
|
345
|
+
conversion: convertListItemElement,
|
|
346
|
+
priority: 0
|
|
347
|
+
};
|
|
348
|
+
}
|
|
349
|
+
};
|
|
350
|
+
}
|
|
351
|
+
}, {
|
|
352
|
+
key: "importJSON",
|
|
353
|
+
value: function importJSON(serializedNode) {
|
|
354
|
+
var node = new ListItemNode(serializedNode.value, serializedNode.checked);
|
|
355
|
+
node.setFormat(serializedNode.format);
|
|
356
|
+
node.setIndent(serializedNode.indent);
|
|
357
|
+
node.setDirection(serializedNode.direction);
|
|
358
|
+
return node;
|
|
359
|
+
}
|
|
360
|
+
}]);
|
|
361
|
+
return ListItemNode;
|
|
362
|
+
}(_lexical.ElementNode);
|
|
363
|
+
exports.ListItemNode = ListItemNode;
|
|
364
|
+
function $setListItemThemeClassNames(dom, editorThemeClasses, node) {
|
|
365
|
+
var classesToAdd = [];
|
|
366
|
+
var classesToRemove = [];
|
|
367
|
+
var listTheme = editorThemeClasses.list;
|
|
368
|
+
var listItemClassName = listTheme ? listTheme.listitem : undefined;
|
|
369
|
+
var nestedListItemClassName;
|
|
370
|
+
if (listTheme && listTheme.nested) {
|
|
371
|
+
nestedListItemClassName = listTheme.nested.listitem;
|
|
372
|
+
}
|
|
373
|
+
if (listItemClassName !== undefined) {
|
|
374
|
+
var listItemClasses = listItemClassName.split(" ");
|
|
375
|
+
classesToAdd.push.apply(classesToAdd, (0, _toConsumableArray2.default)(listItemClasses));
|
|
376
|
+
}
|
|
377
|
+
if (listTheme) {
|
|
378
|
+
var parentNode = node.getParent();
|
|
379
|
+
var isCheckList = (0, _ListNode.$isListNode)(parentNode) && (parentNode === null || parentNode === void 0 ? void 0 : parentNode.getListType()) === "check";
|
|
380
|
+
var checked = node.getChecked();
|
|
381
|
+
if (!isCheckList || checked) {
|
|
382
|
+
classesToRemove.push(listTheme.listitemUnchecked);
|
|
383
|
+
}
|
|
384
|
+
if (!isCheckList || !checked) {
|
|
385
|
+
classesToRemove.push(listTheme.listitemChecked);
|
|
386
|
+
}
|
|
387
|
+
if (isCheckList) {
|
|
388
|
+
classesToAdd.push(checked ? listTheme.listitemChecked : listTheme.listitemUnchecked);
|
|
389
|
+
}
|
|
390
|
+
}
|
|
391
|
+
if (nestedListItemClassName !== undefined) {
|
|
392
|
+
var nestedListItemClasses = nestedListItemClassName.split(" ");
|
|
393
|
+
if (node.getChildren().some(function (child) {
|
|
394
|
+
return (0, _ListNode.$isListNode)(child);
|
|
395
|
+
})) {
|
|
396
|
+
classesToAdd.push.apply(classesToAdd, (0, _toConsumableArray2.default)(nestedListItemClasses));
|
|
397
|
+
} else {
|
|
398
|
+
classesToRemove.push.apply(classesToRemove, (0, _toConsumableArray2.default)(nestedListItemClasses));
|
|
399
|
+
}
|
|
400
|
+
}
|
|
401
|
+
if (classesToRemove.length > 0) {
|
|
402
|
+
_utils.removeClassNamesFromElement.apply(void 0, [dom].concat(classesToRemove));
|
|
403
|
+
}
|
|
404
|
+
if (classesToAdd.length > 0) {
|
|
405
|
+
_utils.addClassNamesToElement.apply(void 0, [dom].concat(classesToAdd));
|
|
406
|
+
}
|
|
407
|
+
}
|
|
408
|
+
function updateListItemChecked(dom, listItemNode, prevListItemNode, listNode) {
|
|
409
|
+
var isCheckList = listNode.getListType() === "check";
|
|
410
|
+
if (isCheckList) {
|
|
411
|
+
// Only add attributes for leaf list items
|
|
412
|
+
if ((0, _ListNode.$isListNode)(listItemNode.getFirstChild())) {
|
|
413
|
+
dom.removeAttribute("role");
|
|
414
|
+
dom.removeAttribute("tabIndex");
|
|
415
|
+
dom.removeAttribute("aria-checked");
|
|
416
|
+
} else {
|
|
417
|
+
dom.setAttribute("role", "checkbox");
|
|
418
|
+
dom.setAttribute("tabIndex", "-1");
|
|
419
|
+
if (!prevListItemNode || listItemNode.__checked !== prevListItemNode.__checked) {
|
|
420
|
+
dom.setAttribute("aria-checked", listItemNode.getChecked() ? "true" : "false");
|
|
421
|
+
}
|
|
422
|
+
}
|
|
423
|
+
} else {
|
|
424
|
+
// Clean up checked state
|
|
425
|
+
if (listItemNode.getChecked() != null) {
|
|
426
|
+
listItemNode.setChecked(undefined);
|
|
427
|
+
}
|
|
428
|
+
}
|
|
429
|
+
}
|
|
430
|
+
function convertListItemElement() {
|
|
431
|
+
return {
|
|
432
|
+
node: $createListItemNode()
|
|
433
|
+
};
|
|
434
|
+
}
|
|
435
|
+
function $createListItemNode(checked) {
|
|
436
|
+
return new ListItemNode(undefined, checked);
|
|
437
|
+
}
|
|
438
|
+
function $isListItemNode(node) {
|
|
439
|
+
return node instanceof ListItemNode;
|
|
440
|
+
}
|
|
441
|
+
|
|
442
|
+
//# sourceMappingURL=ListItemNode.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_lexical","require","_ListNode","_utils","_formatList","_ParagraphNode","_listNode","ListItemNode","_ElementNode","_inherits2","default","_super","_createSuper2","value","checked","key","_this","_classCallCheck2","call","__value","undefined","__checked","_createClass2","createDOM","config","element","document","createElement","parent","getParent","$isListNode","getListType","updateListItemChecked","$setListItemThemeClassNames","theme","updateDOM","prevNode","dom","exportJSON","_objectSpread2","_get2","_getPrototypeOf2","prototype","getChecked","type","getValue","version","append","i","arguments","length","node","$isElementNode","canMergeWith","children","getChildren","apply","_toConsumableArray2","remove","replace","replaceWithNode","includeChildren","$isListItemNode","setIndent","list","getParentOrThrow","__first","getKey","insertBefore","__last","insertAfter","newList","$createListNode","nextSibling","getNextSibling","nodeToAppend","forEach","child","getChildrenSize","listNode","console","log","siblings","getNextSiblings","after","afterListNode","updateChildrenListItemValue","newListNode","sibling","preserveEmptyParent","prevSibling","getPreviousSibling","isNestedListNode","mergeLists","getFirstChild","insertNewAfter","newElement","$createListItemNode","collapseAtStart","selection","paragraph","$createParagraphNode","listNodeParent","isIndented","select","anchor","focus","getNode","is","set","offset","self","getLatest","setValue","getWritable","setChecked","getIndent","__indent","indentLevel","indent","currentIndent","$handleIndent","$handleOutdent","canIndent","nodeToInsert","canInsertAfter","canReplaceWith","replacement","$isParagraphNode","extractWithChild","$isRangeSelection","anchorNode","focusNode","isParentOf","getTextContent","getType","clone","__key","importDOM","li","conversion","convertListItemElement","priority","importJSON","serializedNode","setFormat","format","setDirection","direction","ElementNode","exports","editorThemeClasses","classesToAdd","classesToRemove","listTheme","listItemClassName","listitem","nestedListItemClassName","nested","listItemClasses","split","push","parentNode","isCheckList","listitemUnchecked","listitemChecked","nestedListItemClasses","some","removeClassNamesFromElement","concat","addClassNamesToElement","listItemNode","prevListItemNode","removeAttribute","setAttribute"],"sources":["ListItemNode.ts"],"sourcesContent":["import {\n $isElementNode,\n $isRangeSelection,\n DOMConversionMap,\n DOMConversionOutput,\n EditorConfig,\n EditorThemeClasses,\n ElementNode,\n GridSelection,\n LexicalNode,\n NodeKey,\n NodeSelection,\n ParagraphNode,\n RangeSelection,\n SerializedElementNode,\n Spread\n} from \"lexical\";\nimport { $createListNode, $isListNode, ListNode } from \"~/ListNode\";\nimport { addClassNamesToElement, removeClassNamesFromElement } from \"@lexical/utils\";\nimport {\n $handleIndent,\n $handleOutdent,\n mergeLists,\n updateChildrenListItemValue\n} from \"~/utils/formatList\";\nimport { $createParagraphNode, $isParagraphNode } from \"~/ParagraphNode\";\nimport { isNestedListNode } from \"~/utils/listNode\";\n\nexport type SerializedWebinyListItemNode = Spread<\n {\n checked: boolean | undefined;\n type: \"webiny-listitem\";\n value: number;\n version: 1;\n },\n SerializedElementNode\n>;\n\n/** @noInheritDoc */\nexport class ListItemNode extends ElementNode {\n /** @internal */\n __value: number;\n /** @internal */\n __checked?: boolean;\n\n static override getType(): string {\n return \"webiny-listitem\";\n }\n\n static override clone(node: ListItemNode): ListItemNode {\n return new ListItemNode(node.__value, node.__checked, node.__key);\n }\n\n constructor(value?: number, checked?: boolean, key?: NodeKey) {\n super(key);\n this.__value = value === undefined ? 1 : value;\n this.__checked = checked;\n }\n\n override createDOM(config: EditorConfig): HTMLElement {\n const element = document.createElement(\"li\");\n const parent = this.getParent();\n if ($isListNode(parent) && parent.getListType() === \"check\") {\n updateListItemChecked(element, this, null, parent);\n }\n element.value = this.__value;\n $setListItemThemeClassNames(element, config.theme, this);\n\n return element;\n }\n\n override updateDOM(prevNode: ListItemNode, dom: HTMLElement, config: EditorConfig): boolean {\n const parent = this.getParent();\n if ($isListNode(parent) && parent.getListType() === \"check\") {\n updateListItemChecked(dom, this, prevNode, parent);\n }\n // @ts-expect-error - this is always HTMLListItemElement\n dom.value = this.__value;\n $setListItemThemeClassNames(dom, config.theme, this);\n\n return false;\n }\n\n static importDOM(): DOMConversionMap | null {\n return {\n li: () => ({\n conversion: convertListItemElement,\n priority: 0\n })\n };\n }\n\n static override importJSON(serializedNode: SerializedWebinyListItemNode): ListItemNode {\n const node = new ListItemNode(serializedNode.value, serializedNode.checked);\n node.setFormat(serializedNode.format);\n node.setIndent(serializedNode.indent);\n node.setDirection(serializedNode.direction);\n return node;\n }\n\n override exportJSON(): SerializedWebinyListItemNode {\n return {\n ...super.exportJSON(),\n checked: this.getChecked(),\n type: \"webiny-listitem\",\n value: this.getValue(),\n version: 1\n };\n }\n\n override append(...nodes: LexicalNode[]): this {\n for (let i = 0; i < nodes.length; i++) {\n const node = nodes[i];\n\n if ($isElementNode(node) && this.canMergeWith(node)) {\n const children = node.getChildren();\n this.append(...children);\n node.remove();\n } else {\n super.append(node);\n }\n }\n\n return this;\n }\n\n override replace<N extends LexicalNode>(replaceWithNode: N, includeChildren?: boolean): N {\n if ($isListItemNode(replaceWithNode)) {\n return super.replace(replaceWithNode);\n }\n this.setIndent(0);\n const list = this.getParentOrThrow();\n if (!$isListNode(list)) {\n return replaceWithNode;\n }\n if (list.__first === this.getKey()) {\n list.insertBefore(replaceWithNode);\n } else if (list.__last === this.getKey()) {\n list.insertAfter(replaceWithNode);\n } else {\n // Split the list\n const newList = $createListNode(list.getListType());\n let nextSibling = this.getNextSibling();\n while (nextSibling) {\n const nodeToAppend = nextSibling;\n nextSibling = nextSibling.getNextSibling();\n newList.append(nodeToAppend);\n }\n list.insertAfter(replaceWithNode);\n replaceWithNode.insertAfter(newList);\n }\n if (includeChildren) {\n this.getChildren().forEach((child: LexicalNode) => {\n replaceWithNode.append(child);\n });\n }\n this.remove();\n if (list.getChildrenSize() === 0) {\n list.remove();\n }\n return replaceWithNode;\n }\n\n override insertAfter(node: LexicalNode): LexicalNode {\n const listNode = this.getParentOrThrow();\n\n if (!$isListNode(listNode)) {\n console.log(\"insertAfter: webiny list node is not parent of list item node\");\n return listNode;\n }\n\n const siblings = this.getNextSiblings();\n\n if ($isListItemNode(node)) {\n const after = super.insertAfter(node);\n const afterListNode = node.getParentOrThrow();\n\n if ($isListNode(afterListNode)) {\n updateChildrenListItemValue(afterListNode);\n }\n\n return after;\n }\n\n // Attempt to merge if the list is of the same type.\n\n if ($isListNode(node) && node.getListType() === listNode.getListType()) {\n let child = node;\n const children = node.getChildren<ListNode>();\n\n for (let i = children.length - 1; i >= 0; i--) {\n child = children[i];\n\n this.insertAfter(child);\n }\n\n return child;\n }\n\n // Otherwise, split the list\n // Split the lists and insert the node in between them\n listNode.insertAfter(node);\n\n if (siblings.length !== 0) {\n const newListNode = $createListNode(listNode.getListType());\n\n siblings.forEach(sibling => newListNode.append(sibling));\n\n node.insertAfter(newListNode);\n }\n\n return node;\n }\n\n override remove(preserveEmptyParent?: boolean): void {\n const prevSibling = this.getPreviousSibling();\n const nextSibling = this.getNextSibling();\n super.remove(preserveEmptyParent);\n\n if (\n prevSibling &&\n nextSibling &&\n isNestedListNode(prevSibling) &&\n isNestedListNode(nextSibling)\n ) {\n mergeLists(prevSibling.getFirstChild(), nextSibling.getFirstChild());\n nextSibling.remove();\n } else if (nextSibling) {\n const parent = nextSibling.getParent();\n\n if ($isListNode(parent)) {\n updateChildrenListItemValue(parent);\n }\n }\n }\n\n override insertNewAfter(): ListItemNode | ParagraphNode {\n const newElement = $createListItemNode(this.__checked == null ? undefined : false);\n this.insertAfter(newElement);\n\n return newElement;\n }\n\n override collapseAtStart(selection: RangeSelection): true {\n const paragraph = $createParagraphNode();\n const children = this.getChildren();\n children.forEach(child => paragraph.append(child));\n const listNode = this.getParentOrThrow();\n const listNodeParent = listNode.getParentOrThrow();\n const isIndented = $isListItemNode(listNodeParent);\n\n if (listNode.getChildrenSize() === 1) {\n if (isIndented) {\n // if the list node is nested, we just want to remove it,\n // effectively unindenting it.\n listNode.remove();\n listNodeParent.select();\n } else {\n listNode.replace(paragraph);\n // If we have selection on the list item, we'll need to move it\n // to the paragraph\n const anchor = selection.anchor;\n const focus = selection.focus;\n const key = paragraph.getKey();\n\n if (anchor.type === \"element\" && anchor.getNode().is(this)) {\n anchor.set(key, anchor.offset, \"element\");\n }\n\n if (focus.type === \"element\" && focus.getNode().is(this)) {\n focus.set(key, focus.offset, \"element\");\n }\n }\n } else {\n listNode.insertBefore(paragraph);\n this.remove();\n }\n\n return true;\n }\n\n getValue(): number {\n const self = this.getLatest();\n\n return self.__value;\n }\n\n setValue(value: number): void {\n const self = this.getWritable();\n self.__value = value;\n }\n\n getChecked(): boolean | undefined {\n const self = this.getLatest();\n\n return self.__checked;\n }\n\n setChecked(checked?: boolean): void {\n const self = this.getWritable();\n self.__checked = checked;\n }\n\n override getIndent(): number {\n // If we don't have a parent, we are likely serializing\n const parent = this.getParent();\n if (parent === null) {\n return this.getLatest().__indent;\n }\n // ListItemNode should always have a ListNode for a parent.\n let listNodeParent = parent.getParentOrThrow();\n let indentLevel = 0;\n while ($isListItemNode(listNodeParent)) {\n listNodeParent = listNodeParent.getParentOrThrow().getParentOrThrow();\n indentLevel++;\n }\n\n return indentLevel;\n }\n\n override setIndent(indent: number): this {\n let currentIndent = this.getIndent();\n while (currentIndent !== indent) {\n if (currentIndent < indent) {\n $handleIndent([this]);\n currentIndent++;\n } else {\n $handleOutdent([this]);\n currentIndent--;\n }\n }\n\n return this;\n }\n\n override canIndent(): false {\n // Indent/outdent is handled specifically in the RichText logic.\n\n return false;\n }\n\n override insertBefore(nodeToInsert: LexicalNode): LexicalNode {\n if ($isListItemNode(nodeToInsert)) {\n const parent = this.getParentOrThrow();\n\n if ($isListNode(parent)) {\n const siblings = this.getNextSiblings();\n updateChildrenListItemValue(parent, siblings);\n }\n }\n\n return super.insertBefore(nodeToInsert);\n }\n\n override canInsertAfter(node: LexicalNode): boolean {\n return $isListNode(node);\n }\n\n override canReplaceWith(replacement: LexicalNode): boolean {\n return $isListItemNode(replacement);\n }\n\n override canMergeWith(node: LexicalNode): boolean {\n return $isParagraphNode(node) || $isListItemNode(node);\n }\n\n override extractWithChild(\n child: LexicalNode,\n selection: RangeSelection | NodeSelection | GridSelection\n ): boolean {\n if (!$isRangeSelection(selection)) {\n return false;\n }\n\n const anchorNode = selection.anchor.getNode();\n const focusNode = selection.focus.getNode();\n\n return (\n this.isParentOf(anchorNode) &&\n this.isParentOf(focusNode) &&\n this.getTextContent().length === selection.getTextContent().length\n );\n }\n}\n\nfunction $setListItemThemeClassNames(\n dom: HTMLElement,\n editorThemeClasses: EditorThemeClasses,\n node: ListItemNode\n): void {\n const classesToAdd = [];\n const classesToRemove = [];\n const listTheme = editorThemeClasses.list;\n const listItemClassName = listTheme ? listTheme.listitem : undefined;\n let nestedListItemClassName;\n\n if (listTheme && listTheme.nested) {\n nestedListItemClassName = listTheme.nested.listitem;\n }\n\n if (listItemClassName !== undefined) {\n const listItemClasses = listItemClassName.split(\" \");\n classesToAdd.push(...listItemClasses);\n }\n\n if (listTheme) {\n const parentNode = node.getParent();\n const isCheckList = $isListNode(parentNode) && parentNode?.getListType() === \"check\";\n const checked = node.getChecked();\n\n if (!isCheckList || checked) {\n classesToRemove.push(listTheme.listitemUnchecked);\n }\n\n if (!isCheckList || !checked) {\n classesToRemove.push(listTheme.listitemChecked);\n }\n\n if (isCheckList) {\n classesToAdd.push(checked ? listTheme.listitemChecked : listTheme.listitemUnchecked);\n }\n }\n\n if (nestedListItemClassName !== undefined) {\n const nestedListItemClasses = nestedListItemClassName.split(\" \");\n\n if (node.getChildren().some(child => $isListNode(child))) {\n classesToAdd.push(...nestedListItemClasses);\n } else {\n classesToRemove.push(...nestedListItemClasses);\n }\n }\n\n if (classesToRemove.length > 0) {\n removeClassNamesFromElement(dom, ...classesToRemove);\n }\n\n if (classesToAdd.length > 0) {\n addClassNamesToElement(dom, ...classesToAdd);\n }\n}\n\nfunction updateListItemChecked(\n dom: HTMLElement,\n listItemNode: ListItemNode,\n prevListItemNode: ListItemNode | null,\n listNode: ListNode\n): void {\n const isCheckList = listNode.getListType() === \"check\";\n\n if (isCheckList) {\n // Only add attributes for leaf list items\n if ($isListNode(listItemNode.getFirstChild())) {\n dom.removeAttribute(\"role\");\n dom.removeAttribute(\"tabIndex\");\n dom.removeAttribute(\"aria-checked\");\n } else {\n dom.setAttribute(\"role\", \"checkbox\");\n dom.setAttribute(\"tabIndex\", \"-1\");\n\n if (!prevListItemNode || listItemNode.__checked !== prevListItemNode.__checked) {\n dom.setAttribute(\"aria-checked\", listItemNode.getChecked() ? \"true\" : \"false\");\n }\n }\n } else {\n // Clean up checked state\n if (listItemNode.getChecked() != null) {\n listItemNode.setChecked(undefined);\n }\n }\n}\n\nfunction convertListItemElement(): DOMConversionOutput {\n return { node: $createListItemNode() };\n}\n\nexport function $createListItemNode(checked?: boolean): ListItemNode {\n return new ListItemNode(undefined, checked);\n}\n\nexport function $isListItemNode(node: LexicalNode | null | undefined): node is ListItemNode {\n return node instanceof ListItemNode;\n}\n"],"mappings":"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"}
|
package/ListNode.d.ts
ADDED
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
/// <reference types="web" />
|
|
3
|
+
import { DOMConversion, DOMConversionMap, EditorConfig, ElementNode, LexicalNode, NodeKey, SerializedElementNode, Spread } from "lexical";
|
|
4
|
+
import { WebinyTheme } from "@webiny/lexical-theme";
|
|
5
|
+
import { ListNodeTagType } from "@lexical/list/LexicalListNode";
|
|
6
|
+
import { ListType } from "@lexical/list";
|
|
7
|
+
export declare type SerializedWebinyListNode = Spread<{
|
|
8
|
+
themeStyleId: string;
|
|
9
|
+
listType: ListType;
|
|
10
|
+
start: number;
|
|
11
|
+
tag: ListNodeTagType;
|
|
12
|
+
type: "webiny-list";
|
|
13
|
+
version: 1;
|
|
14
|
+
}, SerializedElementNode>;
|
|
15
|
+
export declare class ListNode extends ElementNode {
|
|
16
|
+
/** @internal */
|
|
17
|
+
__tag: ListNodeTagType;
|
|
18
|
+
/** @internal */
|
|
19
|
+
__start: number;
|
|
20
|
+
/** @internal */
|
|
21
|
+
__listType: ListType;
|
|
22
|
+
__themeStyleId: string;
|
|
23
|
+
constructor(listType: ListType, themeStyleId?: string, start?: number, key?: NodeKey);
|
|
24
|
+
static getType(): string;
|
|
25
|
+
isStyleExistInTheme(theme: WebinyTheme): boolean;
|
|
26
|
+
createDOM(config: EditorConfig): HTMLElement;
|
|
27
|
+
static clone(node: ListNode): ListNode;
|
|
28
|
+
getTag(): ListNodeTagType;
|
|
29
|
+
getListType(): ListType;
|
|
30
|
+
getStart(): number;
|
|
31
|
+
getStyleId(): string;
|
|
32
|
+
static importJSON(serializedNode: SerializedWebinyListNode): ListNode;
|
|
33
|
+
exportJSON(): SerializedWebinyListNode;
|
|
34
|
+
static importDomConversionMap(): DOMConversion<HTMLElement> | null;
|
|
35
|
+
static importDOM(): DOMConversionMap | null;
|
|
36
|
+
setDefaultThemeListStyleByTag(tag: string, theme: WebinyTheme): void;
|
|
37
|
+
hasThemeStyle(): boolean;
|
|
38
|
+
updateDOM(prevNode: ListNode, dom: HTMLElement, config: EditorConfig): boolean;
|
|
39
|
+
extractWithChild(child: LexicalNode): boolean;
|
|
40
|
+
}
|
|
41
|
+
export declare function $createListNode(listType: ListType, themeStyleId?: string, start?: number): ListNode;
|
|
42
|
+
export declare function $isListNode(node: LexicalNode | null | undefined): node is ListNode;
|