@lexical/list
Advanced tools
Comparing version 0.2.9 to 0.3.0
@@ -10,2 +10,3 @@ /** | ||
import {ListNodeTagType} from './src/LexicalListNode'; | ||
import { | ||
@@ -18,3 +19,5 @@ ElementNode, | ||
LexicalCommand, | ||
SerializedElementNode, | ||
} from 'lexical'; | ||
import {Spread} from 'libdefs/globals'; | ||
@@ -31,3 +34,3 @@ export type ListType = 'number' | 'bullet' | 'check'; | ||
export declare class ListItemNode extends ElementNode { | ||
append(...nodes: LexicalNode[]): ListItemNode; | ||
append(...nodes: LexicalNode[]): this; | ||
replace<N extends LexicalNode>(replaceWithNode: N): N; | ||
@@ -46,9 +49,15 @@ insertAfter(node: LexicalNode): LexicalNode; | ||
toggleChecked(): void; | ||
static importJSON(serializedNode: SerializedListItemNode): ListItemNode; | ||
exportJSON(): SerializedListItemNode; | ||
} | ||
export declare class ListNode extends ElementNode { | ||
canBeEmpty(): false; | ||
append(...nodesToAppend: LexicalNode[]): ListNode; | ||
append(...nodesToAppend: LexicalNode[]): this; | ||
getTag(): ListNodeTagType; | ||
getStart(): number; | ||
getListType(): ListType; | ||
static importJSON(serializedNode: SerializedListNode): ListNode; | ||
exportJSON(): SerializedListNode; | ||
} | ||
export function outdentList(): void; | ||
@@ -61,1 +70,20 @@ export function removeList(editor: LexicalEditor): boolean; | ||
export var REMOVE_LIST_COMMAND: LexicalCommand<void>; | ||
export type SerializedListItemNode = Spread< | ||
{ | ||
checked: boolean | void; | ||
value: number; | ||
type: 'listitem'; | ||
}, | ||
SerializedElementNode | ||
>; | ||
export type SerializedListNode = Spread< | ||
{ | ||
listType: ListType; | ||
start: number; | ||
tag: ListNodeTagType; | ||
type: 'list'; | ||
}, | ||
SerializedElementNode | ||
>; |
@@ -18,3 +18,3 @@ /** | ||
* | ||
* | ||
* | ||
*/ | ||
@@ -68,4 +68,3 @@ function $getListDepth(listNode) { | ||
function $getAllListItems(node) { | ||
let listItemNodes = []; //$FlowFixMe - the result of this will always be an array of ListItemNodes. | ||
let listItemNodes = []; | ||
const listChildren = node.getChildren().filter($isListItemNode); | ||
@@ -144,3 +143,2 @@ | ||
* | ||
* | ||
*/ | ||
@@ -198,3 +196,3 @@ | ||
const parent = anchorNode.getParentOrThrow(); | ||
list.append(...parent.getChildren()); | ||
append(list, parent.getChildren()); | ||
parent.replace(list); | ||
@@ -224,3 +222,3 @@ } | ||
const newListNode = $createListNode(listType); | ||
newListNode.append(...parent.getChildren()); | ||
append(newListNode, parent.getChildren()); | ||
parent.replace(newListNode); | ||
@@ -251,2 +249,6 @@ updateChildrenListItemValue(newListNode); | ||
function append(node, nodesToAppend) { | ||
node.splice(node.getChildrenSize(), 0, nodesToAppend); | ||
} | ||
function createListOrMerge(node, listType) { | ||
@@ -260,9 +262,10 @@ if ($isListNode(node)) { | ||
const listItem = $createListItemNode(); | ||
append(listItem, node.getChildren()); | ||
if ($isListNode(previousSibling) && listType === previousSibling.getListType()) { | ||
listItem.append(node); | ||
previousSibling.append(listItem); // if the same type of list is on both sides, merge them. | ||
previousSibling.append(listItem); | ||
node.remove(); // if the same type of list is on both sides, merge them. | ||
if ($isListNode(nextSibling) && listType === nextSibling.getListType()) { | ||
previousSibling.append(...nextSibling.getChildren()); | ||
append(previousSibling, nextSibling.getChildren()); | ||
nextSibling.remove(); | ||
@@ -273,4 +276,4 @@ } | ||
} else if ($isListNode(nextSibling) && listType === nextSibling.getListType()) { | ||
listItem.append(node); | ||
nextSibling.getFirstChildOrThrow().insertBefore(listItem); | ||
node.remove(); | ||
return nextSibling; | ||
@@ -281,3 +284,2 @@ } else { | ||
node.replace(list); | ||
listItem.append(node); | ||
updateChildrenListItemValue(list); | ||
@@ -319,3 +321,3 @@ return list; | ||
const paragraph = lexical.$createParagraphNode(); | ||
paragraph.append(...listItemNode.getChildren()); | ||
append(paragraph, listItemNode.getChildren()); | ||
insertionPoint.insertAfter(paragraph); | ||
@@ -332,3 +334,2 @@ insertionPoint = paragraph; | ||
function updateChildrenListItemValue(list, children) { | ||
// $FlowFixMe: children are always list item nodes | ||
(children || list.getChildren()).forEach(child => { | ||
@@ -364,3 +365,3 @@ const prevValue = child.getValue(); | ||
const children = nextInnerList.getChildren(); | ||
innerList.append(...children); | ||
append(innerList, children); | ||
nextSibling.remove(); | ||
@@ -456,3 +457,3 @@ removed.add(nextSibling.getKey()); | ||
nextSiblingsListItem.append(nextSiblingsList); | ||
nextSiblingsList.append(...listItemNode.getNextSiblings()); // put the sibling nested lists on either side of the grandparent list item in the great grandparent. | ||
append(nextSiblingsList, listItemNode.getNextSiblings()); // put the sibling nested lists on either side of the grandparent list item in the great grandparent. | ||
@@ -577,3 +578,2 @@ grandparentListItem.insertBefore(previousSiblingsListItem); | ||
* | ||
* | ||
*/ | ||
@@ -615,3 +615,3 @@ class ListItemNode extends lexical.ElementNode { | ||
updateListItemChecked(dom, this, prevNode, parent); | ||
} // $FlowFixMe - this is always HTMLListItemElement | ||
} // @ts-expect-error - this is always HTMLListItemElement | ||
@@ -633,2 +633,18 @@ | ||
static importJSON(serializedNode) { | ||
const node = new ListItemNode(serializedNode.value, serializedNode.checked); | ||
node.setFormat(serializedNode.format); | ||
node.setIndent(serializedNode.indent); | ||
node.setDirection(serializedNode.direction); | ||
return node; | ||
} | ||
exportJSON() { | ||
return { ...super.exportJSON(), | ||
checked: this.getChecked(), | ||
type: 'listitem', | ||
value: this.getValue() | ||
}; | ||
} | ||
append(...nodes) { | ||
@@ -820,4 +836,11 @@ for (let i = 0; i < nodes.length; i++) { | ||
getIndent() { | ||
// ListItemNode should always have a ListNode for a parent. | ||
let listNodeParent = this.getParentOrThrow().getParentOrThrow(); | ||
// If we don't have a parent, we are likely serializing | ||
const parent = this.getParent(); | ||
if (parent === null) { | ||
return this.getLatest().__indent; | ||
} // ListItemNode should always have a ListNode for a parent. | ||
let listNodeParent = parent.getParentOrThrow(); | ||
let indentLevel = 0; | ||
@@ -988,3 +1011,3 @@ | ||
* | ||
* | ||
* | ||
*/ | ||
@@ -1002,3 +1025,3 @@ class ListNode extends lexical.ElementNode { | ||
constructor(listType, start, key) { | ||
super(key); // $FlowFixMe added for backward compatibility to map tags to list type | ||
super(key); | ||
@@ -1025,3 +1048,3 @@ const _listType = TAG_TO_LIST_TYPE[listType] || listType; | ||
createDOM(config) { | ||
createDOM(config, _editor) { | ||
const tag = this.__tag; | ||
@@ -1032,3 +1055,3 @@ const dom = document.createElement(tag); | ||
dom.setAttribute('start', String(this.__start)); | ||
} // $FlowFixMe internal field | ||
} // @ts-expect-error Internal field. | ||
@@ -1063,2 +1086,19 @@ | ||
static importJSON(serializedNode) { | ||
const node = $createListNode(serializedNode.listType, serializedNode.start); | ||
node.setFormat(serializedNode.format); | ||
node.setIndent(serializedNode.indent); | ||
node.setDirection(serializedNode.direction); | ||
return node; | ||
} | ||
exportJSON() { | ||
return { ...super.exportJSON(), | ||
listType: this.getListType(), | ||
start: this.getStart(), | ||
tag: this.getTag(), | ||
type: 'list' | ||
}; | ||
} | ||
canBeEmpty() { | ||
@@ -1186,3 +1226,2 @@ return false; | ||
* | ||
* | ||
*/ | ||
@@ -1189,0 +1228,0 @@ const INSERT_UNORDERED_LIST_COMMAND = lexical.createCommand(); |
@@ -7,26 +7,28 @@ /** | ||
*/ | ||
var h=require("lexical"),l=require("@lexical/utils");function m(a){throw Error(`Minified Lexical error #${a}; see codes.json for the full message or `+"use the non-minified dev environment for full errors and additional helpful warnings.");}function n(a){let b=1;for(a=a.getParent();null!=a;){if(p(a)){a=a.getParent();if(q(a)){b++;a=a.getParent();continue}m(9)}break}return b}function t(a){a=a.getParent();q(a)||m(9);let b=a;for(;null!==b;)b=b.getParent(),q(b)&&(a=b);return a} | ||
function u(a){let b=[];a=a.getChildren().filter(p);for(let c=0;c<a.length;c++){const d=a[c],e=d.getFirstChild();q(e)?b=b.concat(u(e)):b.push(d)}return b}function v(a){return p(a)&&q(a.getFirstChild())}function w(a){for(;null==a.getNextSibling()&&null==a.getPreviousSibling();){const b=a.getParent();if(null==b||!p(a)&&!q(a))break;a=b}a.remove()}function y(a,b){return p(a)&&(0===b.length||1===b.length&&a.is(b[0])&&0===a.getChildrenSize())} | ||
function z(a,b){if(q(a))return a;const c=a.getPreviousSibling(),d=a.getNextSibling(),e=B();if(q(c)&&b===c.getListType())return e.append(a),c.append(e),q(d)&&b===d.getListType()&&(c.append(...d.getChildren()),d.remove()),c;if(q(d)&&b===d.getListType())return e.append(a),d.getFirstChildOrThrow().insertBefore(e),d;b=C(b);b.append(e);a.replace(b);e.append(a);D(b);return b} | ||
function D(a,b){(b||a.getChildren()).forEach(c=>{const d=c.getValue();var e=c.getParent();var f=1;null!=e&&(q(e)?f=e.getStart():m(10));e=c.getPreviousSiblings();for(let g=0;g<e.length;g++){const k=e[g];p(k)&&!q(k.getFirstChild())&&f++}d!==f&&c.setValue(f)})} | ||
function E(a){const b=new Set;a.forEach(c=>{if(!v(c)&&!b.has(c.getKey())){var d=c.getParent(),e=c.getNextSibling(),f=c.getPreviousSibling();if(v(e)&&v(f))f=f.getFirstChild(),q(f)&&(f.append(c),c=e.getFirstChild(),q(c)&&(c=c.getChildren(),f.append(...c),e.remove(),b.add(e.getKey())),D(f));else if(v(e))e=e.getFirstChild(),q(e)&&(f=e.getFirstChild(),null!==f&&f.insertBefore(c),D(e));else if(v(f))e=f.getFirstChild(),q(e)&&(e.append(c),D(e));else if(q(d)){const g=B(),k=C(d.getListType());g.append(k);k.append(c); | ||
f?f.insertAfter(g):e?e.insertBefore(g):d.append(g)}q(d)&&D(d)}})} | ||
function F(a){a.forEach(b=>{if(!v(b)){var c=b.getParent(),d=c?c.getParent():void 0,e=d?d.getParent():void 0;if(q(e)&&p(d)&&q(c)){var f=c?c.getFirstChild():void 0,g=c?c.getLastChild():void 0;if(b.is(f))d.insertBefore(b),c.isEmpty()&&d.remove();else if(b.is(g))d.insertAfter(b),c.isEmpty()&&d.remove();else{var k=c.getListType();f=B();const r=C(k);f.append(r);b.getPreviousSiblings().forEach(x=>r.append(x));g=B();k=C(k);g.append(k);k.append(...b.getNextSiblings());d.insertBefore(f);d.insertAfter(g);d.replace(b)}D(c); | ||
D(e)}}})}function G(a){var b=h.$getSelection();if(h.$isRangeSelection(b)){var c=b.getNodes(),d=[];0===c.length&&c.push(b.anchor.getNode());if(1===c.length){a:{for(c=c[0];null!==c;){if(p(c))break a;c=c.getParent()}c=null}null!==c&&(d=[c])}else{d=new Set;for(b=0;b<c.length;b++){const e=c[b];p(e)&&d.add(e)}d=Array.from(d)}0<d.length&&("indent"===a?E(d):F(d))}} | ||
class H extends h.ElementNode{static getType(){return"listitem"}static clone(a){return new H(a.__value,a.__checked,a.__key)}constructor(a,b,c){super(c);this.__value=void 0===a?1:a;this.__checked=b}createDOM(a){const b=document.createElement("li"),c=this.getParent();q(c)&&(D(c),I(b,this,null,c));b.value=this.__value;J(b,a.theme,this);return b}updateDOM(a,b,c){const d=this.getParent();q(d)&&(D(d),I(b,this,a,d));b.value=this.__value;J(b,c.theme,this);return!1}static importDOM(){return{li:()=>({conversion:K, | ||
priority:0})}}append(...a){for(let b=0;b<a.length;b++){const c=a[b];if(h.$isElementNode(c)&&this.canMergeWith(c)){const d=c.getChildren();this.append(...d);c.remove()}else super.append(c)}return this}replace(a){if(p(a))return super.replace(a);const b=this.getParentOrThrow();if(q(b)){var c=b.__children;const e=c.length;var d=c.indexOf(this.__key);if(0===d)b.insertBefore(a);else if(d===e-1)b.insertAfter(a);else{c=C(b.getListType());const f=b.getChildren();for(d+=1;d<e;d++)c.append(f[d]);b.insertAfter(a); | ||
a.insertAfter(c)}this.remove();1===e&&b.remove()}return a}insertAfter(a){var b=this.getParentOrThrow();q(b)||m(11);var c=this.getNextSiblings();if(p(a))return b=super.insertAfter(a),a=a.getParentOrThrow(),q(a)&&D(a),b;if(q(a)&&a.getListType()===b.getListType()){b=a;a=a.getChildren();for(c=a.length-1;0<=c;c--)b=a[c],this.insertAfter(b);return b}b.insertAfter(a);if(0!==c.length){const d=C(b.getListType());c.forEach(e=>d.append(e));a.insertAfter(d)}return a}remove(a){const b=this.getNextSibling();super.remove(a); | ||
null!==b&&(a=b.getParent(),q(a)&&D(a))}insertNewAfter(){const a=B(null==this.__checked?void 0:!1);this.insertAfter(a);return a}collapseAtStart(a){const b=h.$createParagraphNode();this.getChildren().forEach(f=>b.append(f));var c=this.getParentOrThrow(),d=c.getParentOrThrow();const e=p(d);1===c.getChildrenSize()?e?(c.remove(),d.select()):(c.replace(b),c=a.anchor,a=a.focus,d=b.getKey(),"element"===c.type&&c.getNode().is(this)&&c.set(d,c.offset,"element"),"element"===a.type&&a.getNode().is(this)&&a.set(d, | ||
a.offset,"element")):(c.insertBefore(b),this.remove());return!0}getValue(){return this.getLatest().__value}setValue(a){this.getWritable().__value=a}getChecked(){return this.getLatest().__checked}setChecked(a){this.getWritable().__checked=a}toggleChecked(){this.setChecked(!this.__checked)}getIndent(){let a=this.getParentOrThrow().getParentOrThrow(),b=0;for(;p(a);)a=a.getParentOrThrow().getParentOrThrow(),b++;return b}setIndent(a){let b=this.getIndent();for(;b!==a;)b<a?(E([this]),b++):(F([this]),b--); | ||
return this}canIndent(){return!1}insertBefore(a){if(p(a)){const b=this.getParentOrThrow();if(q(b)){const c=this.getNextSiblings();D(b,c)}}return super.insertBefore(a)}canInsertAfter(a){return p(a)}canReplaceWith(a){return p(a)}canMergeWith(a){return h.$isParagraphNode(a)||p(a)}extractWithChild(a,b){if(!h.$isRangeSelection(b))return!1;a=b.anchor.getNode();const c=b.focus.getNode();return this.isParentOf(a)&&this.isParentOf(c)&&this.getTextContent().length===b.getTextContent().length}} | ||
function J(a,b,c){const d=[],e=[];var f=(b=b.list)?b.listitem:void 0;if(b&&b.nested)var g=b.nested.listitem;void 0!==f&&(f=f.split(" "),d.push(...f));if(b){f=c.getParent();f=q(f)&&"check"===f.getListType();const k=c.getChecked();f&&!k||e.push(b.listitemUnchecked);f&&k||e.push(b.listitemChecked);f&&d.push(k?b.listitemChecked:b.listitemUnchecked)}void 0!==g&&(g=g.split(" "),c.getChildren().some(k=>q(k))?d.push(...g):e.push(...g));0<e.length&&l.removeClassNamesFromElement(a,...e);0<d.length&&l.addClassNamesToElement(a, | ||
...d)}function I(a,b,c,d){"check"===d.getListType()?q(b.getFirstChild())?(a.removeAttribute("role"),a.removeAttribute("tabIndex"),a.removeAttribute("aria-checked")):(a.setAttribute("role","checkbox"),a.setAttribute("tabIndex","-1"),c&&b.__checked===c.__checked||a.setAttribute("aria-checked",b.getChecked()?"true":"false")):null!=b.getChecked()&&b.setChecked(void 0)}function K(){return{node:B()}}function B(a){return new H(void 0,a)}function p(a){return a instanceof H} | ||
class L extends h.ElementNode{static getType(){return"list"}static clone(a){return new L(a.__listType||M[a.__tag],a.__start,a.__key)}constructor(a,b,c){super(c);this.__listType=a=M[a]||a;this.__tag="number"===a?"ol":"ul";this.__start=b}getTag(){return this.__tag}getListType(){return this.__listType}getStart(){return this.__start}createDOM(a){const b=document.createElement(this.__tag);1!==this.__start&&b.setAttribute("start",String(this.__start));b.__lexicalListType=this.__listType;N(b,a.theme,this); | ||
return b}updateDOM(a,b,c){if(a.__tag!==this.__tag)return!0;N(b,c.theme,this);return!1}static importDOM(){return{ol:()=>({conversion:O,priority:0}),ul:()=>({conversion:O,priority:0})}}canBeEmpty(){return!1}canIndent(){return!1}append(...a){for(let c=0;c<a.length;c++){var b=a[c];if(p(b))super.append(b);else{const d=B();q(b)?d.append(b):(b=h.$createTextNode(b.getTextContent()),d.append(b));super.append(d)}}return this}extractWithChild(a){return p(a)}} | ||
function N(a,b,c){const d=[],e=[];var f=b.list;if(void 0!==f){const k=f[c.__tag+"Depth"]||[];b=n(c)-1;const r=b%k.length;var g=k[r];const x=f[c.__tag];let A;f=f.nested;void 0!==f&&f.list&&(A=f.list);void 0!==x&&d.push(x);if(void 0!==g)for(g=g.split(" "),d.push(...g),g=0;g<k.length;g++)g!==r&&e.push(c.__tag+g);void 0!==A&&(c=A.split(" "),1<b?d.push(...c):e.push(...c))}0<e.length&&l.removeClassNamesFromElement(a,...e);0<d.length&&l.addClassNamesToElement(a,...d)} | ||
function O(a){a=a.nodeName.toLowerCase();let b=null;"ol"===a?b=C("number"):"ul"===a&&(b=C("bullet"));return{node:b}}const M={ol:"number",ul:"bullet"};function C(a,b=1){return new L(a,b)}function q(a){return a instanceof L}const P=h.createCommand(),Q=h.createCommand(),R=h.createCommand(),S=h.createCommand();exports.$createListItemNode=B;exports.$createListNode=C;exports.$getListDepth=n; | ||
exports.$handleListInsertParagraph=function(){var a=h.$getSelection();if(!h.$isRangeSelection(a)||!a.isCollapsed())return!1;a=a.anchor.getNode();if(!p(a)||""!==a.getTextContent())return!1;var b=t(a),c=a.getParent();q(c)||m(9);const d=c.getParent();let e;if(h.$isRootNode(d))e=h.$createParagraphNode(),b.insertAfter(e);else if(p(d))e=B(),d.insertAfter(e);else return!1;e.select();b=a.getNextSiblings();if(0<b.length){const f=C(c.getListType());h.$isParagraphNode(e)?e.insertAfter(f):(c=B(),c.append(f), | ||
e.insertAfter(c));b.forEach(g=>{g.remove();f.append(g)})}w(a);return!0};exports.$isListItemNode=p;exports.$isListNode=q;exports.INSERT_CHECK_LIST_COMMAND=R;exports.INSERT_ORDERED_LIST_COMMAND=Q;exports.INSERT_UNORDERED_LIST_COMMAND=P;exports.ListItemNode=H;exports.ListNode=L;exports.REMOVE_LIST_COMMAND=S;exports.indentList=function(){G("indent")}; | ||
exports.insertList=function(a,b){a.update(()=>{var c=h.$getSelection();if(h.$isRangeSelection(c)){var d=c.getNodes();c=c.anchor.getNode();var e=c.getParent();if(y(c,d))d=C(b),h.$isRootNode(e)?(c.replace(d),c=B(),d.append(c)):p(c)&&(c=c.getParentOrThrow(),d.append(...c.getChildren()),c.replace(d));else for(c=new Set,e=0;e<d.length;e++){var f=d[e];if(h.$isElementNode(f)&&f.isEmpty()&&!c.has(f.getKey()))z(f,b);else if(h.$isLeafNode(f))for(f=f.getParent();null!=f;){const k=f.getKey();if(q(f)){if(!c.has(k)){var g= | ||
C(b);g.append(...f.getChildren());f.replace(g);D(g);c.add(k)}break}else{g=f.getParent();if(h.$isRootNode(g)&&!c.has(k)){c.add(k);z(f,b);break}f=g}}}}})};exports.outdentList=function(){G("outdent")}; | ||
exports.removeList=function(a){a.update(()=>{var b=h.$getSelection();if(h.$isRangeSelection(b)){const d=new Set,e=b.getNodes();b=b.anchor.getNode();if(y(b,e))d.add(t(b));else for(b=0;b<e.length;b++){var c=e[b];h.$isLeafNode(c)&&(c=l.$getNearestNodeOfType(c,H),null!=c&&d.add(t(c)))}d.forEach(f=>{let g=f;u(f).forEach(k=>{if(null!=k){const r=h.$createParagraphNode();r.append(...k.getChildren());g.insertAfter(r);g=r;k.remove()}});f.remove()})}})}; | ||
'use strict';var h=require("lexical"),l=require("@lexical/utils");function m(a){throw Error(`Minified Lexical error #${a}; see codes.json for the full message or `+"use the non-minified dev environment for full errors and additional helpful warnings.");}function n(a){let b=1;for(a=a.getParent();null!=a;){if(p(a)){a=a.getParent();if(q(a)){b++;a=a.getParent();continue}m(40)}break}return b}function t(a){a=a.getParent();q(a)||m(40);let b=a;for(;null!==b;)b=b.getParent(),q(b)&&(a=b);return a} | ||
function u(a){let b=[];a=a.getChildren().filter(p);for(let c=0;c<a.length;c++){let d=a[c],e=d.getFirstChild();q(e)?b=b.concat(u(e)):b.push(d)}return b}function v(a){return p(a)&&q(a.getFirstChild())}function w(a){for(;null==a.getNextSibling()&&null==a.getPreviousSibling();){let b=a.getParent();if(null==b||!p(a)&&!q(a))break;a=b}a.remove()}function x(a,b){return p(a)&&(0===b.length||1===b.length&&a.is(b[0])&&0===a.getChildrenSize())}function z(a,b){a.splice(a.getChildrenSize(),0,b)} | ||
function A(a,b){if(q(a))return a;let c=a.getPreviousSibling(),d=a.getNextSibling(),e=C();z(e,a.getChildren());if(q(c)&&b===c.getListType())return c.append(e),a.remove(),q(d)&&b===d.getListType()&&(z(c,d.getChildren()),d.remove()),c;if(q(d)&&b===d.getListType())return d.getFirstChildOrThrow().insertBefore(e),a.remove(),d;b=D(b);b.append(e);a.replace(b);E(b);return b} | ||
function E(a,b){(b||a.getChildren()).forEach(c=>{let d=c.getValue();var e=c.getParent();var f=1;null!=e&&(q(e)?f=e.getStart():m(44));e=c.getPreviousSiblings();for(let g=0;g<e.length;g++){let k=e[g];p(k)&&!q(k.getFirstChild())&&f++}d!==f&&c.setValue(f)})} | ||
function F(a){let b=new Set;a.forEach(c=>{if(!v(c)&&!b.has(c.getKey())){var d=c.getParent(),e=c.getNextSibling(),f=c.getPreviousSibling();if(v(e)&&v(f))f=f.getFirstChild(),q(f)&&(f.append(c),c=e.getFirstChild(),q(c)&&(c=c.getChildren(),z(f,c),e.remove(),b.add(e.getKey())),E(f));else if(v(e))e=e.getFirstChild(),q(e)&&(f=e.getFirstChild(),null!==f&&f.insertBefore(c),E(e));else if(v(f))e=f.getFirstChild(),q(e)&&(e.append(c),E(e));else if(q(d)){let g=C(),k=D(d.getListType());g.append(k);k.append(c);f? | ||
f.insertAfter(g):e?e.insertBefore(g):d.append(g)}q(d)&&E(d)}})} | ||
function G(a){a.forEach(b=>{if(!v(b)){var c=b.getParent(),d=c?c.getParent():void 0,e=d?d.getParent():void 0;if(q(e)&&p(d)&&q(c)){var f=c?c.getFirstChild():void 0,g=c?c.getLastChild():void 0;if(b.is(f))d.insertBefore(b),c.isEmpty()&&d.remove();else if(b.is(g))d.insertAfter(b),c.isEmpty()&&d.remove();else{var k=c.getListType();f=C();let r=D(k);f.append(r);b.getPreviousSiblings().forEach(y=>r.append(y));g=C();k=D(k);g.append(k);z(k,b.getNextSiblings());d.insertBefore(f);d.insertAfter(g);d.replace(b)}E(c); | ||
E(e)}}})}function H(a){var b=h.$getSelection();if(h.$isRangeSelection(b)){var c=b.getNodes(),d=[];0===c.length&&c.push(b.anchor.getNode());if(1===c.length){a:{for(c=c[0];null!==c;){if(p(c))break a;c=c.getParent()}c=null}null!==c&&(d=[c])}else{d=new Set;for(b=0;b<c.length;b++){let e=c[b];p(e)&&d.add(e)}d=Array.from(d)}0<d.length&&("indent"===a?F(d):G(d))}} | ||
class I extends h.ElementNode{static getType(){return"listitem"}static clone(a){return new I(a.__value,a.__checked,a.__key)}constructor(a,b,c){super(c);this.__value=void 0===a?1:a;this.__checked=b}createDOM(a){let b=document.createElement("li"),c=this.getParent();q(c)&&(E(c),J(b,this,null,c));b.value=this.__value;K(b,a.theme,this);return b}updateDOM(a,b,c){let d=this.getParent();q(d)&&(E(d),J(b,this,a,d));b.value=this.__value;K(b,c.theme,this);return!1}static importDOM(){return{li:()=>({conversion:L, | ||
priority:0})}}static importJSON(a){let b=new I(a.value,a.checked);b.setFormat(a.format);b.setIndent(a.indent);b.setDirection(a.direction);return b}exportJSON(){return{...super.exportJSON(),checked:this.getChecked(),type:"listitem",value:this.getValue()}}append(...a){for(let b=0;b<a.length;b++){let c=a[b];if(h.$isElementNode(c)&&this.canMergeWith(c)){let d=c.getChildren();this.append(...d);c.remove()}else super.append(c)}return this}replace(a){if(p(a))return super.replace(a);let b=this.getParentOrThrow(); | ||
if(q(b)){var c=b.__children;let e=c.length;var d=c.indexOf(this.__key);if(0===d)b.insertBefore(a);else if(d===e-1)b.insertAfter(a);else{c=D(b.getListType());let f=b.getChildren();for(d+=1;d<e;d++)c.append(f[d]);b.insertAfter(a);a.insertAfter(c)}this.remove();1===e&&b.remove()}return a}insertAfter(a){var b=this.getParentOrThrow();q(b)||m(39);var c=this.getNextSiblings();if(p(a))return b=super.insertAfter(a),a=a.getParentOrThrow(),q(a)&&E(a),b;if(q(a)&&a.getListType()===b.getListType()){b=a;a=a.getChildren(); | ||
for(c=a.length-1;0<=c;c--)b=a[c],this.insertAfter(b);return b}b.insertAfter(a);if(0!==c.length){let d=D(b.getListType());c.forEach(e=>d.append(e));a.insertAfter(d)}return a}remove(a){let b=this.getNextSibling();super.remove(a);null!==b&&(a=b.getParent(),q(a)&&E(a))}insertNewAfter(){let a=C(null==this.__checked?void 0:!1);this.insertAfter(a);return a}collapseAtStart(a){let b=h.$createParagraphNode();this.getChildren().forEach(f=>b.append(f));var c=this.getParentOrThrow(),d=c.getParentOrThrow();let e= | ||
p(d);1===c.getChildrenSize()?e?(c.remove(),d.select()):(c.replace(b),c=a.anchor,a=a.focus,d=b.getKey(),"element"===c.type&&c.getNode().is(this)&&c.set(d,c.offset,"element"),"element"===a.type&&a.getNode().is(this)&&a.set(d,a.offset,"element")):(c.insertBefore(b),this.remove());return!0}getValue(){return this.getLatest().__value}setValue(a){this.getWritable().__value=a}getChecked(){return this.getLatest().__checked}setChecked(a){this.getWritable().__checked=a}toggleChecked(){this.setChecked(!this.__checked)}getIndent(){var a= | ||
this.getParent();if(null===a)return this.getLatest().__indent;a=a.getParentOrThrow();let b=0;for(;p(a);)a=a.getParentOrThrow().getParentOrThrow(),b++;return b}setIndent(a){let b=this.getIndent();for(;b!==a;)b<a?(F([this]),b++):(G([this]),b--);return this}canIndent(){return!1}insertBefore(a){if(p(a)){let b=this.getParentOrThrow();if(q(b)){let c=this.getNextSiblings();E(b,c)}}return super.insertBefore(a)}canInsertAfter(a){return p(a)}canReplaceWith(a){return p(a)}canMergeWith(a){return h.$isParagraphNode(a)|| | ||
p(a)}extractWithChild(a,b){if(!h.$isRangeSelection(b))return!1;a=b.anchor.getNode();let c=b.focus.getNode();return this.isParentOf(a)&&this.isParentOf(c)&&this.getTextContent().length===b.getTextContent().length}} | ||
function K(a,b,c){let d=[],e=[];var f=(b=b.list)?b.listitem:void 0;if(b&&b.nested)var g=b.nested.listitem;void 0!==f&&(f=f.split(" "),d.push(...f));if(b){f=c.getParent();f=q(f)&&"check"===f.getListType();let k=c.getChecked();f&&!k||e.push(b.listitemUnchecked);f&&k||e.push(b.listitemChecked);f&&d.push(k?b.listitemChecked:b.listitemUnchecked)}void 0!==g&&(g=g.split(" "),c.getChildren().some(k=>q(k))?d.push(...g):e.push(...g));0<e.length&&l.removeClassNamesFromElement(a,...e);0<d.length&&l.addClassNamesToElement(a, | ||
...d)}function J(a,b,c,d){"check"===d.getListType()?q(b.getFirstChild())?(a.removeAttribute("role"),a.removeAttribute("tabIndex"),a.removeAttribute("aria-checked")):(a.setAttribute("role","checkbox"),a.setAttribute("tabIndex","-1"),c&&b.__checked===c.__checked||a.setAttribute("aria-checked",b.getChecked()?"true":"false")):null!=b.getChecked()&&b.setChecked(void 0)}function L(){return{node:C()}}function C(a){return new I(void 0,a)}function p(a){return a instanceof I} | ||
class M extends h.ElementNode{static getType(){return"list"}static clone(a){return new M(a.__listType||N[a.__tag],a.__start,a.__key)}constructor(a,b,c){super(c);this.__listType=a=N[a]||a;this.__tag="number"===a?"ol":"ul";this.__start=b}getTag(){return this.__tag}getListType(){return this.__listType}getStart(){return this.__start}createDOM(a){let b=document.createElement(this.__tag);1!==this.__start&&b.setAttribute("start",String(this.__start));b.__lexicalListType=this.__listType;O(b,a.theme,this); | ||
return b}updateDOM(a,b,c){if(a.__tag!==this.__tag)return!0;O(b,c.theme,this);return!1}static importDOM(){return{ol:()=>({conversion:P,priority:0}),ul:()=>({conversion:P,priority:0})}}static importJSON(a){let b=D(a.listType,a.start);b.setFormat(a.format);b.setIndent(a.indent);b.setDirection(a.direction);return b}exportJSON(){return{...super.exportJSON(),listType:this.getListType(),start:this.getStart(),tag:this.getTag(),type:"list"}}canBeEmpty(){return!1}canIndent(){return!1}append(...a){for(let c= | ||
0;c<a.length;c++){var b=a[c];if(p(b))super.append(b);else{let d=C();q(b)?d.append(b):(b=h.$createTextNode(b.getTextContent()),d.append(b));super.append(d)}}return this}extractWithChild(a){return p(a)}} | ||
function O(a,b,c){let d=[],e=[];var f=b.list;if(void 0!==f){let k=f[c.__tag+"Depth"]||[];b=n(c)-1;let r=b%k.length;var g=k[r];let y=f[c.__tag],B;f=f.nested;void 0!==f&&f.list&&(B=f.list);void 0!==y&&d.push(y);if(void 0!==g)for(g=g.split(" "),d.push(...g),g=0;g<k.length;g++)g!==r&&e.push(c.__tag+g);void 0!==B&&(c=B.split(" "),1<b?d.push(...c):e.push(...c))}0<e.length&&l.removeClassNamesFromElement(a,...e);0<d.length&&l.addClassNamesToElement(a,...d)} | ||
function P(a){a=a.nodeName.toLowerCase();let b=null;"ol"===a?b=D("number"):"ul"===a&&(b=D("bullet"));return{node:b}}let N={ol:"number",ul:"bullet"};function D(a,b=1){return new M(a,b)}function q(a){return a instanceof M}let Q=h.createCommand(),R=h.createCommand(),S=h.createCommand(),T=h.createCommand();exports.$createListItemNode=C;exports.$createListNode=D;exports.$getListDepth=n; | ||
exports.$handleListInsertParagraph=function(){var a=h.$getSelection();if(!h.$isRangeSelection(a)||!a.isCollapsed())return!1;a=a.anchor.getNode();if(!p(a)||""!==a.getTextContent())return!1;var b=t(a),c=a.getParent();q(c)||m(40);let d=c.getParent(),e;if(h.$isRootNode(d))e=h.$createParagraphNode(),b.insertAfter(e);else if(p(d))e=C(),d.insertAfter(e);else return!1;e.select();b=a.getNextSiblings();if(0<b.length){let f=D(c.getListType());h.$isParagraphNode(e)?e.insertAfter(f):(c=C(),c.append(f),e.insertAfter(c)); | ||
b.forEach(g=>{g.remove();f.append(g)})}w(a);return!0};exports.$isListItemNode=p;exports.$isListNode=q;exports.INSERT_CHECK_LIST_COMMAND=S;exports.INSERT_ORDERED_LIST_COMMAND=R;exports.INSERT_UNORDERED_LIST_COMMAND=Q;exports.ListItemNode=I;exports.ListNode=M;exports.REMOVE_LIST_COMMAND=T;exports.indentList=function(){H("indent")}; | ||
exports.insertList=function(a,b){a.update(()=>{var c=h.$getSelection();if(h.$isRangeSelection(c)){var d=c.getNodes();c=c.anchor.getNode();var e=c.getParent();if(x(c,d))d=D(b),h.$isRootNode(e)?(c.replace(d),c=C(),d.append(c)):p(c)&&(c=c.getParentOrThrow(),z(d,c.getChildren()),c.replace(d));else for(c=new Set,e=0;e<d.length;e++){var f=d[e];if(h.$isElementNode(f)&&f.isEmpty()&&!c.has(f.getKey()))A(f,b);else if(h.$isLeafNode(f))for(f=f.getParent();null!=f;){let k=f.getKey();if(q(f)){if(!c.has(k)){var g= | ||
D(b);z(g,f.getChildren());f.replace(g);E(g);c.add(k)}break}else{g=f.getParent();if(h.$isRootNode(g)&&!c.has(k)){c.add(k);A(f,b);break}f=g}}}}})};exports.outdentList=function(){H("outdent")}; | ||
exports.removeList=function(a){a.update(()=>{var b=h.$getSelection();if(h.$isRangeSelection(b)){let d=new Set,e=b.getNodes();b=b.anchor.getNode();if(x(b,e))d.add(t(b));else for(b=0;b<e.length;b++){var c=e[b];h.$isLeafNode(c)&&(c=l.$getNearestNodeOfType(c,I),null!=c&&d.add(t(c)))}d.forEach(f=>{let g=f;u(f).forEach(k=>{if(null!=k){let r=h.$createParagraphNode();z(r,k.getChildren());g.insertAfter(r);g=r;k.remove()}});f.remove()})}})} |
@@ -11,9 +11,9 @@ { | ||
"license": "MIT", | ||
"version": "0.2.9", | ||
"version": "0.3.0", | ||
"main": "LexicalList.js", | ||
"peerDependencies": { | ||
"lexical": "0.2.9" | ||
"lexical": "0.3.0" | ||
}, | ||
"dependencies": { | ||
"@lexical/utils": "0.2.9" | ||
"@lexical/utils": "0.3.0" | ||
}, | ||
@@ -20,0 +20,0 @@ "repository": { |
Sorry, the diff of this file is not supported yet
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
New author
Supply chain riskA new npm collaborator published a version of the package for the first time. New collaborators are usually benign additions to a project, but do indicate a change to the security surface area of a package.
Found 1 instance in 1 package
52725
1131
0
+ Added@lexical/table@0.3.0(transitive)
+ Added@lexical/utils@0.3.0(transitive)
+ Addedlexical@0.3.0(transitive)
- Removed@lexical/table@0.2.9(transitive)
- Removed@lexical/utils@0.2.9(transitive)
- Removedlexical@0.2.9(transitive)
Updated@lexical/utils@0.3.0