@lexical/list 0.1.8 → 0.1.11

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.
@@ -84,28 +84,6 @@ function $getTopListNode(listItem) {
84
84
 
85
85
  return list$1;
86
86
  }
87
- function $isLastItemInList(listItem) {
88
- let isLast = true;
89
- const firstChild = listItem.getFirstChild();
90
-
91
- if (list.$isListNode(firstChild)) {
92
- return false;
93
- }
94
-
95
- let parent = listItem;
96
-
97
- while (parent !== null) {
98
- if (list.$isListItemNode(parent)) {
99
- if (parent.getNextSiblings().length > 0) {
100
- isLast = false;
101
- }
102
- }
103
-
104
- parent = parent.getParent();
105
- }
106
-
107
- return isLast;
108
- } // This should probably be $getAllChildrenOfType
109
87
 
110
88
  function $getAllListItems(node) {
111
89
  let listItemNodes = []; //$FlowFixMe - the result of this will always be an array of ListItemNodes.
@@ -154,6 +132,27 @@ function getUniqueListItemNodes(nodeList) {
154
132
 
155
133
  return Array.from(keys);
156
134
  }
135
+ function $removeHighestEmptyListParent(sublist) {
136
+ // Nodes may be repeatedly indented, to create deeply nested lists that each
137
+ // contain just one bullet.
138
+ // Our goal is to remove these (empty) deeply nested lists. The easiest
139
+ // way to do that is crawl back up the tree until we find a node that has siblings
140
+ // (e.g. is actually part of the list contents) and delete that, or delete
141
+ // the root of the list (if no list nodes have siblings.)
142
+ let emptyListPtr = sublist;
143
+
144
+ while (emptyListPtr.getNextSibling() == null && emptyListPtr.getPreviousSibling() == null) {
145
+ const parent = emptyListPtr.getParent();
146
+
147
+ if (parent == null || !(list.$isListItemNode(emptyListPtr) || list.$isListNode(emptyListPtr))) {
148
+ break;
149
+ }
150
+
151
+ emptyListPtr = parent;
152
+ }
153
+
154
+ emptyListPtr.remove();
155
+ }
157
156
 
158
157
  /**
159
158
  * Copyright (c) Meta Platforms, Inc. and affiliates.
@@ -165,10 +164,9 @@ function getUniqueListItemNodes(nodeList) {
165
164
  */
166
165
  function insertList(editor, listType) {
167
166
  editor.update(() => {
168
- lexical.$log('formatList');
169
167
  const selection = lexical.$getSelection();
170
168
 
171
- if (selection !== null) {
169
+ if (lexical.$isRangeSelection(selection)) {
172
170
  const nodes = selection.getNodes();
173
171
  const anchor = selection.anchor;
174
172
  const anchorNode = anchor.getNode();
@@ -267,10 +265,9 @@ function createListOrMerge(node, listType) {
267
265
 
268
266
  function removeList(editor) {
269
267
  editor.update(() => {
270
- lexical.$log('removeList');
271
268
  const selection = lexical.$getSelection();
272
269
 
273
- if (selection !== null) {
270
+ if (lexical.$isRangeSelection(selection)) {
274
271
  const listNodes = new Set();
275
272
  const nodes = selection.getNodes();
276
273
  const anchorNode = selection.anchor.getNode();
@@ -435,7 +432,7 @@ function $handleOutdent(listItemNodes) {
435
432
  function maybeIndentOrOutdent(direction) {
436
433
  const selection = lexical.$getSelection();
437
434
 
438
- if (selection === null) {
435
+ if (!lexical.$isRangeSelection(selection)) {
439
436
  return false;
440
437
  }
441
438
 
@@ -477,6 +474,64 @@ function indentList() {
477
474
  function outdentList() {
478
475
  return maybeIndentOrOutdent('outdent');
479
476
  }
477
+ function $handleListInsertParagraph() {
478
+ const selection = lexical.$getSelection();
479
+
480
+ if (selection === null || !selection.isCollapsed()) {
481
+ return false;
482
+ } // Only run this code on empty list items
483
+
484
+
485
+ const anchor = selection.anchor.getNode();
486
+
487
+ if (!list.$isListItemNode(anchor) || anchor.getTextContent() !== '') {
488
+ return false;
489
+ }
490
+
491
+ const topListNode = $getTopListNode(anchor);
492
+ const parent = anchor.getParent();
493
+
494
+ if (!list.$isListNode(parent)) {
495
+ throw Error(`A ListItemNode must have a ListNode for a parent.`);
496
+ }
497
+
498
+ const grandparent = parent.getParent();
499
+ let replacementNode;
500
+
501
+ if (lexical.$isRootNode(grandparent)) {
502
+ replacementNode = lexical.$createParagraphNode();
503
+ topListNode.insertAfter(replacementNode);
504
+ } else if (list.$isListItemNode(grandparent)) {
505
+ replacementNode = list.$createListItemNode();
506
+ grandparent.insertAfter(replacementNode);
507
+ } else {
508
+ return false;
509
+ }
510
+
511
+ replacementNode.select();
512
+ const nextSiblings = anchor.getNextSiblings();
513
+
514
+ if (nextSiblings.length > 0) {
515
+ const newList = list.$createListNode(parent.getTag());
516
+
517
+ if (lexical.$isParagraphNode(replacementNode)) {
518
+ replacementNode.insertAfter(newList);
519
+ } else {
520
+ const newListItem = list.$createListItemNode();
521
+ newListItem.append(newList);
522
+ replacementNode.insertAfter(newListItem);
523
+ }
524
+
525
+ nextSiblings.forEach(sibling => {
526
+ sibling.remove();
527
+ newList.append(sibling);
528
+ });
529
+ } // Don't leave hanging nested empty lists
530
+
531
+
532
+ $removeHighestEmptyListParent(anchor);
533
+ return true;
534
+ }
480
535
 
481
536
  /**
482
537
  * Copyright (c) Meta Platforms, Inc. and affiliates.
@@ -533,6 +588,15 @@ class ListItemNode extends lexical.ElementNode {
533
588
  dom.value = getListItemValue(this);
534
589
  $setListItemThemeClassNames(dom, config.theme, this);
535
590
  return false;
591
+ }
592
+
593
+ static convertDOM() {
594
+ return {
595
+ li: node => ({
596
+ conversion: convertListItemElement,
597
+ priority: 0
598
+ })
599
+ };
536
600
  } // Mutation
537
601
 
538
602
 
@@ -636,46 +700,8 @@ class ListItemNode extends lexical.ElementNode {
636
700
  }
637
701
 
638
702
  insertNewAfter() {
639
- const nextSibling = this.getNextSibling();
640
- const prevSibling = this.getPreviousSibling();
641
- const list$1 = $getTopListNode(this);
642
- const isLast = $isLastItemInList(this);
643
- let newElement;
644
-
645
- if (lexical.$isElementNode(list$1) && this.getTextContent() === '' && (prevSibling === null || nextSibling === null) && isLast) {
646
- if (nextSibling === null) {
647
- newElement = lexical.$createParagraphNode();
648
- list$1.insertAfter(newElement);
649
- } else {
650
- newElement = lexical.$createParagraphNode();
651
- list$1.insertBefore(newElement);
652
- } // The naive approach would be to remove this list item and then the list, if it's empty.
653
- // However, nodes may be repeatedly indented, to create deeply nested lists that each
654
- // contain just one bullet.
655
- // Our goal is to remove these (now-empty) deeply nested lists. The easiest way to do that
656
- // is crawl back up the tree until we find a node that has siblings (e.g. is actually part
657
- // of the list contents) and delete that, or delete the root of the list (if no list nodes
658
- // have siblings.)
659
-
660
-
661
- let emptyListPtr = this;
662
-
663
- while (emptyListPtr.getNextSibling() == null && emptyListPtr.getPreviousSibling() == null) {
664
- const parent = emptyListPtr.getParent();
665
-
666
- if (parent == null || !($isListItemNode(emptyListPtr) || list.$isListNode(emptyListPtr))) {
667
- break;
668
- }
669
-
670
- emptyListPtr = parent;
671
- }
672
-
673
- emptyListPtr.remove();
674
- } else {
675
- newElement = $createListItemNode();
676
- this.insertAfter(newElement);
677
- }
678
-
703
+ const newElement = $createListItemNode();
704
+ this.insertAfter(newElement);
679
705
  return newElement;
680
706
  }
681
707
 
@@ -833,6 +859,12 @@ function $setListItemThemeClassNames(dom, editorThemeClasses, node) {
833
859
  }
834
860
  }
835
861
 
862
+ function convertListItemElement(domNode) {
863
+ return {
864
+ node: $createListItemNode()
865
+ };
866
+ }
867
+
836
868
  function $createListItemNode() {
837
869
  return new ListItemNode();
838
870
  }
@@ -889,6 +921,19 @@ class ListNode extends lexical.ElementNode {
889
921
  return false;
890
922
  }
891
923
 
924
+ static convertDOM() {
925
+ return {
926
+ ol: node => ({
927
+ conversion: convertListNode,
928
+ priority: 0
929
+ }),
930
+ ul: node => ({
931
+ conversion: convertListNode,
932
+ priority: 0
933
+ })
934
+ };
935
+ }
936
+
892
937
  canBeEmpty() {
893
938
  return false;
894
939
  }
@@ -972,6 +1017,19 @@ function setListThemeClassNames(dom, editorThemeClasses, node) {
972
1017
  }
973
1018
  }
974
1019
 
1020
+ function convertListNode(domNode) {
1021
+ const nodeName = domNode.nodeName.toLowerCase();
1022
+ let node = null;
1023
+
1024
+ if (nodeName === 'ol' || nodeName === 'ul') {
1025
+ node = $createListNode(nodeName);
1026
+ }
1027
+
1028
+ return {
1029
+ node
1030
+ };
1031
+ }
1032
+
975
1033
  function $createListNode(tag, start = 1) {
976
1034
  return new ListNode(tag, start);
977
1035
  }
@@ -981,6 +1039,7 @@ function $isListNode(node) {
981
1039
 
982
1040
  exports.$createListItemNode = $createListItemNode;
983
1041
  exports.$createListNode = $createListNode;
1042
+ exports.$handleListInsertParagraph = $handleListInsertParagraph;
984
1043
  exports.$isListItemNode = $isListItemNode;
985
1044
  exports.$isListNode = $isListNode;
986
1045
  exports.ListItemNode = ListItemNode;
@@ -4,26 +4,27 @@
4
4
  * This source code is licensed under the MIT license found in the
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  */
7
- 'use strict';var f=require("@lexical/list"),k=require("lexical");function n(c,a){for(;null!=c&&!(c instanceof a);)c=c.getParent();return c}function p(c){throw Error(`Minified Lexical error #${c}; see codes.json for the full message or `+"use the non-minified dev environment for full errors and additional helpful warnings.");}function r(c){c=c.getParent();f.$isListNode(c)||p(2);let a=c;for(;null!==a;)a=a.getParent(),f.$isListNode(a)&&(c=a);return c}
8
- function t(c){let a=[];c=c.getChildren().filter(f.$isListItemNode);for(let b=0;b<c.length;b++){const d=c[b],e=d.getFirstChild();f.$isListNode(e)?a=a.concat(t(e)):a.push(d)}return a}function u(c){return f.$isListItemNode(c)&&f.$isListNode(c.getFirstChild())}
9
- function v(c,a){if(f.$isListNode(c))return c;const b=c.getPreviousSibling(),d=c.getNextSibling(),e=f.$createListItemNode();if(f.$isListNode(b)&&a===b.getTag())return e.append(c),b.append(e),f.$isListNode(d)&&a===d.getTag()&&(b.append(...d.getChildren()),d.remove()),b;if(f.$isListNode(d)&&a===d.getTag())return e.append(c),d.getFirstChildOrThrow().insertBefore(e),d;a=f.$createListNode(a);a.append(e);c.replace(a);e.append(c);return a}
10
- function w(c){c.forEach(a=>{if(!u(a)){var b=a.getParent(),d=a.getNextSibling(),e=a.getPreviousSibling();if(u(d)&&u(e))e=e.getFirstChild(),f.$isListNode(e)&&(e.append(a),a=d.getFirstChild(),f.$isListNode(a)&&(d=a.getChildren(),e.append(...d),a.remove()),e.getChildren().forEach(g=>g.markDirty()));else if(u(d))d=d.getFirstChild(),f.$isListNode(d)&&(e=d.getFirstChild(),null!==e&&e.insertBefore(a),d.getChildren().forEach(g=>g.markDirty()));else if(u(e))d=e.getFirstChild(),f.$isListNode(d)&&(d.append(a),
11
- d.getChildren().forEach(g=>g.markDirty()));else if(f.$isListNode(b)){const g=f.$createListItemNode(),h=f.$createListNode(b.getTag());g.append(h);h.append(a);e?e.insertAfter(g):d?d.insertBefore(g):b.append(g)}f.$isListNode(b)&&b.getChildren().forEach(g=>g.markDirty())}})}
12
- function x(c){c.forEach(a=>{if(!u(a)){var b=a.getParent(),d=b?b.getParent():void 0,e=d?d.getParent():void 0;if(f.$isListNode(e)&&f.$isListItemNode(d)&&f.$isListNode(b)){var g=b?b.getFirstChild():void 0,h=b?b.getLastChild():void 0;if(a.is(g))d.insertBefore(a),b.isEmpty()&&d.remove();else if(a.is(h))d.insertAfter(a),b.isEmpty()&&d.remove();else{var l=b.getTag();g=f.$createListItemNode();const m=f.$createListNode(l);g.append(m);a.getPreviousSiblings().forEach(q=>m.append(q));h=f.$createListItemNode();
13
- l=f.$createListNode(l);h.append(l);l.append(...a.getNextSiblings());d.insertBefore(g);d.insertAfter(h);d.replace(a)}b.getChildren().forEach(m=>m.markDirty());e.getChildren().forEach(m=>m.markDirty())}}})}
14
- function y(c){var a=k.$getSelection();if(null===a)return!1;var b=a.getNodes(),d=[];0===b.length&&b.push(a.anchor.getNode());if(1===b.length){a:{for(b=b[0];null!==b;){if(f.$isListItemNode(b))break a;b=b.getParent()}b=null}null!==b&&(d=[b])}else{d=new Set;for(a=0;a<b.length;a++){const e=b[a];f.$isListItemNode(e)&&d.add(e)}d=Array.from(d)}return 0<d.length?("indent"===c?w(d):x(d),!0):!1}function z(c,...a){a.forEach(b=>{null!=b&&"string"===typeof b&&c.classList.add(...b.split(" "))})}
15
- function A(c,...a){a.forEach(b=>{c.classList.remove(...b.split(" "))})}
16
- class B extends k.ElementNode{static getType(){return"listitem"}static clone(c){return new B(c.__key)}constructor(c){super(c)}createDOM(c){const a=document.createElement("li");a.value=C(this);D(a,c.theme,this);return a}updateDOM(c,a,b){a.value=C(this);D(a,b.theme,this);return!1}append(...c){for(let a=0;a<c.length;a++){const b=c[a];if(k.$isElementNode(b)&&this.canMergeWith(b)){const d=b.getChildren();this.append(...d);b.remove()}else super.append(b)}return this}replace(c){if(E(c))return super.replace(c);const a=
17
- this.getParentOrThrow();if(f.$isListNode(a)){var b=a.__children;const e=b.length;var d=b.indexOf(this.__key);if(0===d)a.insertBefore(c);else if(d===e-1)a.insertAfter(c);else{b=f.$createListNode(a.__tag);const g=a.getChildren();for(d+=1;d<e;d++)b.append(g[d]);a.insertAfter(c);c.insertAfter(b)}this.remove();1===e&&a.remove()}return c}insertAfter(c){var a=this.getNextSiblings();if(E(c))return a.forEach(d=>d.markDirty()),super.insertAfter(c);var b=this.getParentOrThrow();f.$isListNode(b)||p(1);if(f.$isListNode(c)&&
18
- c.getTag()===b.getTag()){a=c;c=c.getChildren();for(b=c.length-1;0<=b;b--)a=c[b],this.insertAfter(a);return a}b.insertAfter(c);if(0!==a.length){const d=f.$createListNode(b.getTag());a.forEach(e=>d.append(e));c.insertAfter(d)}return c}insertNewAfter(){var c=this.getNextSibling(),a=this.getPreviousSibling(),b=r(this);var d=!0;var e=this.getFirstChild();if(f.$isListNode(e))d=!1;else for(e=this;null!==e;)f.$isListItemNode(e)&&0<e.getNextSiblings().length&&(d=!1),e=e.getParent();if(k.$isElementNode(b)&&
19
- ""===this.getTextContent()&&(null===a||null===c)&&d){null===c?(c=k.$createParagraphNode(),b.insertAfter(c)):(c=k.$createParagraphNode(),b.insertBefore(c));for(b=this;null==b.getNextSibling()&&null==b.getPreviousSibling();){a=b.getParent();if(null==a||!E(b)&&!f.$isListNode(b))break;b=a}b.remove()}else c=F(),this.insertAfter(c);return c}collapseAtStart(c){const a=k.$createParagraphNode();this.getChildren().forEach(g=>a.append(g));var b=this.getParentOrThrow(),d=b.getParentOrThrow();const e=E(d);1===
20
- b.getChildrenSize()?e?(b.remove(),d.select()):(b.replace(a),b=c.anchor,c=c.focus,d=a.getKey(),"element"===b.type&&b.getNode().is(this)&&b.set(d,b.offset,"element"),"element"===c.type&&c.getNode().is(this)&&c.set(d,c.offset,"element")):(b.insertBefore(a),this.remove());return!0}getIndent(){let c=this.getParentOrThrow().getParentOrThrow(),a=0;for(;E(c);)c=c.getParentOrThrow().getParentOrThrow(),a++;return a}setIndent(c){let a=this.getIndent();for(;a!==c;)a<c?(w([this]),a++):(x([this]),a--);return this}insertBefore(c){const a=
21
- this.getNextSiblings();E(c)&&a.forEach(b=>b.markDirty());return super.insertBefore(c)}canInsertAfter(c){return E(c)}canReplaceWith(c){return E(c)}canMergeWith(c){return k.$isParagraphNode(c)||E(c)}}function C(c){var a=c.getParent();let b=1;null!=a&&(f.$isListNode(a)?b=a.__start:p(47));c=c.getPreviousSiblings();for(a=0;a<c.length;a++){const d=c[a];E(d)&&!f.$isListNode(d.getFirstChild())&&b++}return b}
22
- function D(c,a,b){const d=[],e=[],g=(a=a.list)?a.listitem:void 0;if(a&&a.nested)var h=a.nested.listitem;void 0!==g&&(a=g.split(" "),d.push(...a));void 0!==h&&(h=h.split(" "),b.getChildren().some(l=>f.$isListNode(l))?d.push(...h):e.push(...h));0<d.length&&z(c,...d);0<e.length&&A(c,...e)}function F(){return new B}function E(c){return c instanceof B}
23
- class G extends k.ElementNode{static getType(){return"list"}static clone(c){return new G(c.__tag,c.__start,c.__key)}constructor(c,a,b){super(b);this.__tag=c;this.__start=a}getTag(){return this.__tag}createDOM(c){const a=document.createElement(this.__tag);1!==this.__start&&a.setAttribute("start",String(this.__start));H(a,c.theme,this);return a}updateDOM(c,a,b){if(c.__tag!==this.__tag)return!0;H(a,b.theme,this);return!1}canBeEmpty(){return!1}append(...c){for(let b=0;b<c.length;b++){var a=c[b];if(f.$isListItemNode(a))super.append(a);
24
- else{const d=f.$createListItemNode();I(a)?d.append(a):(a=k.$createTextNode(a.getTextContent()),d.append(a));super.append(d)}}return this}}
25
- function H(c,a,b){const d=[],e=[];a=a.list;if(void 0!==a){a:{var g=1;for(var h=b.getParent();null!=h;){if(f.$isListItemNode(h)){h=h.getParent();if(f.$isListNode(h)){g++;h=h.getParent();continue}p(2)}break a}}h=g%5;const l=a[b.__tag+(0===h?5:h)],m=a[b.__tag];let q;a=a.nested;void 0!==a&&a.list&&(q=a.list);void 0!==m&&d.push(m);if(void 0!==l)for(a=l.split(" "),d.push(...a),a=1;6>a;a++)a!==h&&e.push(b.__tag+a);void 0!==q&&(b=q.split(" "),1<g?d.push(...b):e.push(...b))}0<d.length&&z(c,...d);0<e.length&&
26
- A(c,...e)}function I(c){return c instanceof G}exports.$createListItemNode=F;exports.$createListNode=function(c,a=1){return new G(c,a)};exports.$isListItemNode=E;exports.$isListNode=I;exports.ListItemNode=B;exports.ListNode=G;exports.indentList=function(){return y("indent")};
27
- exports.insertList=function(c,a){c.update(()=>{k.$log("formatList");var b=k.$getSelection();if(null!==b){var d=b.getNodes();b=b.anchor.getNode();var e=b.getParent();if(0===d.length)d=f.$createListNode(a),k.$isRootNode(e)?(b.replace(d),b=f.$createListItemNode(),d.append(b)):f.$isListItemNode(b)&&(b=b.getParentOrThrow(),d.append(...b.getChildren()),b.replace(d));else for(b=new Set,e=0;e<d.length;e++){var g=d[e];if(k.$isElementNode(g)&&g.isEmpty()&&!b.has(g.getKey()))v(g,a);else if(k.$isLeafNode(g))for(g=
28
- g.getParent();null!=g;){const l=g.getKey();if(f.$isListNode(g)){if(!b.has(l)){var h=f.$createListNode(a);h.append(...g.getChildren());g.replace(h);b.add(l)}break}else{h=g.getParent();if(k.$isRootNode(h)&&!b.has(l)){b.add(l);v(g,a);break}g=h}}}}})};exports.outdentList=function(){return y("outdent")};
29
- exports.removeList=function(c){c.update(()=>{k.$log("removeList");var a=k.$getSelection();if(null!==a){const d=new Set,e=a.getNodes();a=a.anchor.getNode();if(0===e.length&&f.$isListItemNode(a))d.add(r(a));else for(a=0;a<e.length;a++){var b=e[a];k.$isLeafNode(b)&&(b=n(b,f.ListItemNode),null!=b&&d.add(r(b)))}d.forEach(g=>{let h=g;t(g).forEach(l=>{if(null!=l){const m=k.$createParagraphNode();m.append(...l.getChildren());h.insertAfter(m);h=m;l.remove()}});g.remove()})}})};
7
+ var f=require("@lexical/list"),k=require("lexical");function n(b){throw Error(`Minified Lexical error #${b}; see codes.json for the full message or `+"use the non-minified dev environment for full errors and additional helpful warnings.");}function p(b,a){for(;null!=b&&!(b instanceof a);)b=b.getParent();return b}function q(b){b=b.getParent();f.$isListNode(b)||n(2);let a=b;for(;null!==a;)a=a.getParent(),f.$isListNode(a)&&(b=a);return b}
8
+ function t(b){let a=[];b=b.getChildren().filter(f.$isListItemNode);for(let c=0;c<b.length;c++){const d=b[c],e=d.getFirstChild();f.$isListNode(e)?a=a.concat(t(e)):a.push(d)}return a}function u(b){return f.$isListItemNode(b)&&f.$isListNode(b.getFirstChild())}function v(b){for(;null==b.getNextSibling()&&null==b.getPreviousSibling();){const a=b.getParent();if(null==a||!f.$isListItemNode(b)&&!f.$isListNode(b))break;b=a}b.remove()}
9
+ function w(b,a){if(f.$isListNode(b))return b;const c=b.getPreviousSibling(),d=b.getNextSibling(),e=f.$createListItemNode();if(f.$isListNode(c)&&a===c.getTag())return e.append(b),c.append(e),f.$isListNode(d)&&a===d.getTag()&&(c.append(...d.getChildren()),d.remove()),c;if(f.$isListNode(d)&&a===d.getTag())return e.append(b),d.getFirstChildOrThrow().insertBefore(e),d;a=f.$createListNode(a);a.append(e);b.replace(a);e.append(b);return a}
10
+ function x(b){b.forEach(a=>{if(!u(a)){var c=a.getParent(),d=a.getNextSibling(),e=a.getPreviousSibling();if(u(d)&&u(e))e=e.getFirstChild(),f.$isListNode(e)&&(e.append(a),a=d.getFirstChild(),f.$isListNode(a)&&(d=a.getChildren(),e.append(...d),a.remove()),e.getChildren().forEach(g=>g.markDirty()));else if(u(d))d=d.getFirstChild(),f.$isListNode(d)&&(e=d.getFirstChild(),null!==e&&e.insertBefore(a),d.getChildren().forEach(g=>g.markDirty()));else if(u(e))d=e.getFirstChild(),f.$isListNode(d)&&(d.append(a),
11
+ d.getChildren().forEach(g=>g.markDirty()));else if(f.$isListNode(c)){const g=f.$createListItemNode(),h=f.$createListNode(c.getTag());g.append(h);h.append(a);e?e.insertAfter(g):d?d.insertBefore(g):c.append(g)}f.$isListNode(c)&&c.getChildren().forEach(g=>g.markDirty())}})}
12
+ function y(b){b.forEach(a=>{if(!u(a)){var c=a.getParent(),d=c?c.getParent():void 0,e=d?d.getParent():void 0;if(f.$isListNode(e)&&f.$isListItemNode(d)&&f.$isListNode(c)){var g=c?c.getFirstChild():void 0,h=c?c.getLastChild():void 0;if(a.is(g))d.insertBefore(a),c.isEmpty()&&d.remove();else if(a.is(h))d.insertAfter(a),c.isEmpty()&&d.remove();else{var l=c.getTag();g=f.$createListItemNode();const m=f.$createListNode(l);g.append(m);a.getPreviousSiblings().forEach(r=>m.append(r));h=f.$createListItemNode();
13
+ l=f.$createListNode(l);h.append(l);l.append(...a.getNextSiblings());d.insertBefore(g);d.insertAfter(h);d.replace(a)}c.getChildren().forEach(m=>m.markDirty());e.getChildren().forEach(m=>m.markDirty())}}})}
14
+ function z(b){var a=k.$getSelection();if(!k.$isRangeSelection(a))return!1;var c=a.getNodes(),d=[];0===c.length&&c.push(a.anchor.getNode());if(1===c.length){a:{for(c=c[0];null!==c;){if(f.$isListItemNode(c))break a;c=c.getParent()}c=null}null!==c&&(d=[c])}else{d=new Set;for(a=0;a<c.length;a++){const e=c[a];f.$isListItemNode(e)&&d.add(e)}d=Array.from(d)}return 0<d.length?("indent"===b?x(d):y(d),!0):!1}function A(b,...a){a.forEach(c=>{null!=c&&"string"===typeof c&&b.classList.add(...c.split(" "))})}
15
+ function B(b,...a){a.forEach(c=>{b.classList.remove(...c.split(" "))})}
16
+ class C extends k.ElementNode{static getType(){return"listitem"}static clone(b){return new C(b.__key)}constructor(b){super(b)}createDOM(b){const a=document.createElement("li");a.value=D(this);E(a,b.theme,this);return a}updateDOM(b,a,c){a.value=D(this);E(a,c.theme,this);return!1}static convertDOM(){return{li:()=>({conversion:F,priority:0})}}append(...b){for(let a=0;a<b.length;a++){const c=b[a];if(k.$isElementNode(c)&&this.canMergeWith(c)){const d=c.getChildren();this.append(...d);c.remove()}else super.append(c)}return this}replace(b){if(G(b))return super.replace(b);
17
+ const a=this.getParentOrThrow();if(f.$isListNode(a)){var c=a.__children;const e=c.length;var d=c.indexOf(this.__key);if(0===d)a.insertBefore(b);else if(d===e-1)a.insertAfter(b);else{c=f.$createListNode(a.__tag);const g=a.getChildren();for(d+=1;d<e;d++)c.append(g[d]);a.insertAfter(b);b.insertAfter(c)}this.remove();1===e&&a.remove()}return b}insertAfter(b){var a=this.getNextSiblings();if(G(b))return a.forEach(d=>d.markDirty()),super.insertAfter(b);var c=this.getParentOrThrow();f.$isListNode(c)||n(1);
18
+ if(f.$isListNode(b)&&b.getTag()===c.getTag()){a=b;b=b.getChildren();for(c=b.length-1;0<=c;c--)a=b[c],this.insertAfter(a);return a}c.insertAfter(b);if(0!==a.length){const d=f.$createListNode(c.getTag());a.forEach(e=>d.append(e));b.insertAfter(d)}return b}insertNewAfter(){const b=H();this.insertAfter(b);return b}collapseAtStart(b){const a=k.$createParagraphNode();this.getChildren().forEach(g=>a.append(g));var c=this.getParentOrThrow(),d=c.getParentOrThrow();const e=G(d);1===c.getChildrenSize()?e?(c.remove(),
19
+ d.select()):(c.replace(a),c=b.anchor,b=b.focus,d=a.getKey(),"element"===c.type&&c.getNode().is(this)&&c.set(d,c.offset,"element"),"element"===b.type&&b.getNode().is(this)&&b.set(d,b.offset,"element")):(c.insertBefore(a),this.remove());return!0}getIndent(){let b=this.getParentOrThrow().getParentOrThrow(),a=0;for(;G(b);)b=b.getParentOrThrow().getParentOrThrow(),a++;return a}setIndent(b){let a=this.getIndent();for(;a!==b;)a<b?(x([this]),a++):(y([this]),a--);return this}insertBefore(b){const a=this.getNextSiblings();
20
+ G(b)&&a.forEach(c=>c.markDirty());return super.insertBefore(b)}canInsertAfter(b){return G(b)}canReplaceWith(b){return G(b)}canMergeWith(b){return k.$isParagraphNode(b)||G(b)}}function D(b){var a=b.getParent();let c=1;null!=a&&(f.$isListNode(a)?c=a.__start:n(47));b=b.getPreviousSiblings();for(a=0;a<b.length;a++){const d=b[a];G(d)&&!f.$isListNode(d.getFirstChild())&&c++}return c}
21
+ function E(b,a,c){const d=[],e=[],g=(a=a.list)?a.listitem:void 0;if(a&&a.nested)var h=a.nested.listitem;void 0!==g&&(a=g.split(" "),d.push(...a));void 0!==h&&(h=h.split(" "),c.getChildren().some(l=>f.$isListNode(l))?d.push(...h):e.push(...h));0<d.length&&A(b,...d);0<e.length&&B(b,...e)}function F(){return{node:H()}}function H(){return new C}function G(b){return b instanceof C}
22
+ class I extends k.ElementNode{static getType(){return"list"}static clone(b){return new I(b.__tag,b.__start,b.__key)}constructor(b,a,c){super(c);this.__tag=b;this.__start=a}getTag(){return this.__tag}createDOM(b){const a=document.createElement(this.__tag);1!==this.__start&&a.setAttribute("start",String(this.__start));J(a,b.theme,this);return a}updateDOM(b,a,c){if(b.__tag!==this.__tag)return!0;J(a,c.theme,this);return!1}static convertDOM(){return{ol:()=>({conversion:K,priority:0}),ul:()=>({conversion:K,
23
+ priority:0})}}canBeEmpty(){return!1}append(...b){for(let c=0;c<b.length;c++){var a=b[c];if(f.$isListItemNode(a))super.append(a);else{const d=f.$createListItemNode();L(a)?d.append(a):(a=k.$createTextNode(a.getTextContent()),d.append(a));super.append(d)}}return this}}
24
+ function J(b,a,c){const d=[],e=[];a=a.list;if(void 0!==a){a:{var g=1;for(var h=c.getParent();null!=h;){if(f.$isListItemNode(h)){h=h.getParent();if(f.$isListNode(h)){g++;h=h.getParent();continue}n(2)}break a}}h=g%5;const l=a[c.__tag+(0===h?5:h)],m=a[c.__tag];let r;a=a.nested;void 0!==a&&a.list&&(r=a.list);void 0!==m&&d.push(m);if(void 0!==l)for(a=l.split(" "),d.push(...a),a=1;6>a;a++)a!==h&&e.push(c.__tag+a);void 0!==r&&(c=r.split(" "),1<g?d.push(...c):e.push(...c))}0<d.length&&A(b,...d);0<e.length&&
25
+ B(b,...e)}function K(b){b=b.nodeName.toLowerCase();let a=null;if("ol"===b||"ul"===b)a=M(b);return{node:a}}function M(b,a=1){return new I(b,a)}function L(b){return b instanceof I}exports.$createListItemNode=H;exports.$createListNode=M;
26
+ exports.$handleListInsertParagraph=function(){var b=k.$getSelection();if(null===b||!b.isCollapsed())return!1;b=b.anchor.getNode();if(!f.$isListItemNode(b)||""!==b.getTextContent())return!1;var a=q(b),c=b.getParent();f.$isListNode(c)||n(2);const d=c.getParent();let e;if(k.$isRootNode(d))e=k.$createParagraphNode(),a.insertAfter(e);else if(f.$isListItemNode(d))e=f.$createListItemNode(),d.insertAfter(e);else return!1;e.select();a=b.getNextSiblings();if(0<a.length){const g=f.$createListNode(c.getTag());
27
+ k.$isParagraphNode(e)?e.insertAfter(g):(c=f.$createListItemNode(),c.append(g),e.insertAfter(c));a.forEach(h=>{h.remove();g.append(h)})}v(b);return!0};exports.$isListItemNode=G;exports.$isListNode=L;exports.ListItemNode=C;exports.ListNode=I;exports.indentList=function(){return z("indent")};
28
+ exports.insertList=function(b,a){b.update(()=>{var c=k.$getSelection();if(k.$isRangeSelection(c)){var d=c.getNodes();c=c.anchor.getNode();var e=c.getParent();if(0===d.length)d=f.$createListNode(a),k.$isRootNode(e)?(c.replace(d),c=f.$createListItemNode(),d.append(c)):f.$isListItemNode(c)&&(c=c.getParentOrThrow(),d.append(...c.getChildren()),c.replace(d));else for(c=new Set,e=0;e<d.length;e++){var g=d[e];if(k.$isElementNode(g)&&g.isEmpty()&&!c.has(g.getKey()))w(g,a);else if(k.$isLeafNode(g))for(g=g.getParent();null!=
29
+ g;){const l=g.getKey();if(f.$isListNode(g)){if(!c.has(l)){var h=f.$createListNode(a);h.append(...g.getChildren());g.replace(h);c.add(l)}break}else{h=g.getParent();if(k.$isRootNode(h)&&!c.has(l)){c.add(l);w(g,a);break}g=h}}}}})};exports.outdentList=function(){return z("outdent")};
30
+ exports.removeList=function(b){b.update(()=>{var a=k.$getSelection();if(k.$isRangeSelection(a)){const d=new Set,e=a.getNodes();a=a.anchor.getNode();if(0===e.length&&f.$isListItemNode(a))d.add(q(a));else for(a=0;a<e.length;a++){var c=e[a];k.$isLeafNode(c)&&(c=p(c,f.ListItemNode),null!=c&&d.add(q(c)))}d.forEach(g=>{let h=g;t(g).forEach(l=>{if(null!=l){const m=k.$createParagraphNode();m.append(...l.getChildren());h.insertAfter(m);h=m;l.remove()}});g.remove()})}})};
package/package.json CHANGED
@@ -12,10 +12,10 @@
12
12
  "list"
13
13
  ],
14
14
  "license": "MIT",
15
- "version": "0.1.8",
15
+ "version": "0.1.11",
16
16
  "main": "LexicalList.js",
17
17
  "peerDependencies": {
18
- "lexical": "0.1.8"
18
+ "lexical": "0.1.11"
19
19
  },
20
20
  "repository": {
21
21
  "type": "git",