UNPKG

@lexical/list

Version:

This package provides the list feature for Lexical.

10 lines (8 loc) 20.9 kB
/** * Copyright (c) Meta Platforms, Inc. and affiliates. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. * */ import{effect as e,namedSignals as t}from"@lexical/extension";import{$getNearestNodeOfType as n,removeClassNamesFromElement as r,addClassNamesToElement as i,isHTMLElement as s,mergeRegister as o,$findMatchingParent as l,calculateZoomLevel as c}from"@lexical/utils";import{$getSelection as a,$isRangeSelection as u,$isRootOrShadowRoot as g,$createParagraphNode as h,$isElementNode as d,$isLeafNode as f,$setPointFromCaret as p,$normalizeCaret as m,$getChildCaret as _,$isTextNode as y,ElementNode as C,buildImportMap as T,$isParagraphNode as v,$applyNodeReplacement as S,normalizeClassNames as x,$createTextNode as k,createCommand as b,COMMAND_PRIORITY_LOW as L,KEY_ARROW_DOWN_COMMAND as N,KEY_ARROW_UP_COMMAND as P,KEY_ESCAPE_COMMAND as F,KEY_SPACE_COMMAND as O,$getNearestNodeFromDOMNode as A,KEY_ARROW_LEFT_COMMAND as E,getNearestEditorFromDOMNode as I,$addUpdateTag as w,SKIP_SELECTION_FOCUS_TAG as D,SKIP_DOM_SELECTION_TAG as M,defineExtension as R,safeCast as K,$getNodeByKey as B,INSERT_PARAGRAPH_COMMAND as W,TextNode as J}from"lexical";import{getStyleObjectFromCSS as U}from"@lexical/selection";function $(e,...t){const n=new URL("https://lexical.dev/docs/error"),r=new URLSearchParams;r.append("code",e);for(const e of t)r.append("v",e);throw n.search=r.toString(),Error(`Minified Lexical error #${e}; visit ${n.toString()} for the full message or use the non-minified dev environment for full errors and additional helpful warnings.`)}function V(e){let t=1,n=e.getParent();for(;null!=n;){if(ae(n)){const e=n.getParent();if(me(e)){t++,n=e.getParent();continue}$(40)}return t}return t}function z(e){let t=e.getParent();me(t)||$(40);let n=t;for(;null!==n;)n=n.getParent(),me(n)&&(t=n);return t}function X(e){let t=[];const n=e.getChildren().filter(ae);for(let e=0;e<n.length;e++){const r=n[e],i=r.getFirstChild();me(i)?t=t.concat(X(i)):t.push(r)}return t}function j(e){return ae(e)&&me(e.getFirstChild())}function q(e){return ce().append(e)}function H(e,t){return ae(e)&&(0===t.length||1===t.length&&e.is(t[0])&&0===e.getChildrenSize())}function G(e){const t=a();if(null!==t){let n=t.getNodes();if(u(t)){const r=t.getStartEndPoints();null===r&&$(143);const[i]=r,s=i.getNode(),o=s.getParent();if(g(s)){const e=s.getFirstChild();if(e)n=e.selectStart().getNodes();else{const e=h();s.append(e),n=e.select().getNodes()}}else if(H(s,n)){const t=pe(e);if(g(o)){s.replace(t);const e=ce();d(s)&&(e.setFormat(s.getFormatType()),e.setIndent(s.getIndent())),t.append(e)}else if(ae(s)){const e=s.getParentOrThrow();Q(t,e.getChildren()),e.replace(t)}return}}const r=new Set;for(let t=0;t<n.length;t++){const i=n[t];if(d(i)&&i.isEmpty()&&!ae(i)&&!r.has(i.getKey())){Y(i,e);continue}let s=f(i)?i.getParent():ae(i)&&i.isEmpty()?i:null;for(;null!=s;){const t=s.getKey();if(me(s)){if(!r.has(t)){const n=pe(e);Q(n,s.getChildren()),s.replace(n),r.add(t)}break}{const n=s.getParent();if(g(n)&&!r.has(t)){r.add(t),Y(s,e);break}s=n}}}}}function Q(e,t){e.splice(e.getChildrenSize(),0,t)}function Y(e,t){if(me(e))return e;const n=e.getPreviousSibling(),r=e.getNextSibling(),i=ce();let s;if(Q(i,e.getChildren()),me(n)&&t===n.getListType())n.append(i),me(r)&&t===r.getListType()&&(Q(n,r.getChildren()),r.remove()),s=n;else if(me(r)&&t===r.getListType())r.getFirstChildOrThrow().insertBefore(i),s=r;else{const n=pe(t);n.append(i),e.replace(n),s=n}i.setFormat(e.getFormatType()),i.setIndent(e.getIndent());const o=a();return u(o)&&(s.getKey()===o.anchor.key&&o.anchor.set(i.getKey(),o.anchor.offset,"element"),s.getKey()===o.focus.key&&o.focus.set(i.getKey(),o.focus.offset,"element")),e.remove(),s}function Z(e,t){const n=e.getLastChild(),r=t.getFirstChild();n&&r&&j(n)&&j(r)&&(Z(n.getFirstChild(),r.getFirstChild()),r.remove());const i=t.getChildren();i.length>0&&e.append(...i),t.remove()}function ee(){const e=a();if(u(e)){const t=new Set,r=e.getNodes(),i=e.anchor.getNode();if(H(i,r))t.add(z(i));else for(let e=0;e<r.length;e++){const i=r[e];if(f(i)){const e=n(i,se);null!=e&&t.add(z(e))}}for(const n of t){let t=n;const r=X(n);for(const n of r){const r=h().setTextStyle(e.style).setTextFormat(e.format);Q(r,n.getChildren()),t.insertAfter(r),t=r,n.__key===e.anchor.key&&p(e.anchor,m(_(r,"next"))),n.__key===e.focus.key&&p(e.focus,m(_(r,"next"))),n.remove()}n.remove()}}}function te(e){const t="check"!==e.getListType();let n=e.getStart();for(const r of e.getChildren())ae(r)&&(r.getValue()!==n&&r.setValue(n),t&&null!=r.getLatest().__checked&&r.setChecked(void 0),me(r.getFirstChild())||n++)}function ne(e){const t=new Set;if(j(e)||t.has(e.getKey()))return;const n=e.getParent(),r=e.getNextSibling(),i=e.getPreviousSibling();if(j(r)&&j(i)){const n=i.getFirstChild();if(me(n)){n.append(e);const i=r.getFirstChild();if(me(i)){Q(n,i.getChildren()),r.remove(),t.add(r.getKey())}}}else if(j(r)){const t=r.getFirstChild();if(me(t)){const n=t.getFirstChild();null!==n&&n.insertBefore(e)}}else if(j(i)){const t=i.getFirstChild();me(t)&&t.append(e)}else if(me(n)){const t=ce().setTextFormat(e.getTextFormat()).setTextStyle(e.getTextStyle()),s=pe(n.getListType()).setTextFormat(n.getTextFormat()).setTextStyle(n.getTextStyle());t.append(s),s.append(e),i?i.insertAfter(t):r?r.insertBefore(t):n.append(t)}}function re(e){if(j(e))return;const t=e.getParent(),n=t?t.getParent():void 0;if(me(n?n.getParent():void 0)&&ae(n)&&me(t)){const r=t?t.getFirstChild():void 0,i=t?t.getLastChild():void 0;if(e.is(r))n.insertBefore(e),t.isEmpty()&&n.remove();else if(e.is(i))n.insertAfter(e),t.isEmpty()&&n.remove();else{const r=t.getListType(),i=ce(),s=pe(r);i.append(s),e.getPreviousSiblings().forEach(e=>s.append(e));const o=ce(),l=pe(r);o.append(l),Q(l,e.getNextSiblings()),n.insertBefore(i),n.insertAfter(o),n.replace(e)}}}function ie(e=!1){const t=a();if(!u(t)||!t.isCollapsed())return!1;const n=t.anchor.getNode();let r=null;if(ae(n)&&0===n.getChildrenSize())r=n;else if(y(n)){const e=n.getParent();ae(e)&&e.getChildren().every(e=>y(e)&&""===e.getTextContent().trim())&&(r=e)}if(null===r)return!1;const i=z(r),s=r.getParent();me(s)||$(40);const o=s.getParent();let l;if(g(o))l=h(),i.insertAfter(l);else{if(!ae(o))return!1;l=ce(),o.insertAfter(l)}l.setTextStyle(t.style).setTextFormat(t.format).select();const c=r.getNextSiblings();if(c.length>0){const t=e?function(e,t){return e.getStart()+t.getIndexWithinParent()}(s,r):1,n=pe(s.getListType(),t);if(ae(l)){const e=ce();e.append(n),l.insertAfter(e)}else l.insertAfter(n);n.append(...c)}return function(e){let t=e;for(;null==t.getNextSibling()&&null==t.getPreviousSibling();){const e=t.getParent();if(null==e||!ae(e)&&!me(e))break;t=e}t.remove()}(r),!0}class se extends C{__value;__checked;$config(){return this.config("listitem",{$transform:e=>{if(null==e.__checked)return;const t=e.getParent();me(t)&&"check"!==t.getListType()&&null!=e.getChecked()&&e.setChecked(void 0)},extends:C,importDOM:T({li:()=>({conversion:oe,priority:0})})})}constructor(e=1,t=void 0,n){super(n),this.__value=void 0===e?1:e,this.__checked=t}afterCloneFrom(e){super.afterCloneFrom(e),this.__value=e.__value,this.__checked=e.__checked}createDOM(e){const t=document.createElement("li");return this.updateListItemDOM(null,t,e),t}updateListItemDOM(e,t,n){!function(e,t,n){const r=t.getParent();!me(r)||"check"!==r.getListType()||me(t.getFirstChild())?(e.removeAttribute("role"),e.removeAttribute("tabIndex"),e.removeAttribute("aria-checked")):(e.setAttribute("role","checkbox"),e.setAttribute("tabIndex","-1"),n&&t.__checked===n.__checked||e.setAttribute("aria-checked",t.getChecked()?"true":"false"))}(t,this,e),t.value=this.__value,function(e,t,n){const s=[],o=[],l=t.list,c=l?l.listitem:void 0;let a;l&&l.nested&&(a=l.nested.listitem);void 0!==c&&s.push(...x(c));if(l){const e=n.getParent(),t=me(e)&&"check"===e.getListType(),r=n.getChecked();t&&!r||o.push(l.listitemUnchecked),t&&r||o.push(l.listitemChecked),t&&s.push(r?l.listitemChecked:l.listitemUnchecked)}if(void 0!==a){const e=x(a);n.getChildren().some(e=>me(e))?s.push(...e):o.push(...e)}o.length>0&&r(e,...o);s.length>0&&i(e,...s)}(t,n.theme,this);const s=e?e.__style:"",o=this.__style;s!==o&&(""===o?t.removeAttribute("style"):t.style.cssText=o),function(e,t,n){const r=U(t.__textStyle);for(const t in r)e.style.setProperty(`--listitem-marker-${t}`,r[t]);if(n)for(const t in U(n.__textStyle))t in r||e.style.removeProperty(`--listitem-marker-${t}`)}(t,this,e)}updateDOM(e,t,n){const r=t;return this.updateListItemDOM(e,r,n),!1}updateFromJSON(e){return super.updateFromJSON(e).setValue(e.value).setChecked(e.checked)}exportDOM(e){const t=this.createDOM(e._config),n=this.getFormatType();n&&(t.style.textAlign=n);const r=this.getDirection();return r&&(t.dir=r),{element:t}}exportJSON(){return{...super.exportJSON(),checked:this.getChecked(),value:this.getValue()}}append(...e){for(let t=0;t<e.length;t++){const n=e[t];if(d(n)&&this.canMergeWith(n)){const e=n.getChildren();this.append(...e),n.remove()}else super.append(n)}return this}replace(e,t){if(ae(e))return super.replace(e);this.setIndent(0);const n=this.getParentOrThrow();if(!me(n))return e;if(n.__first===this.getKey())n.insertBefore(e);else if(n.__last===this.getKey())n.insertAfter(e);else{const t=pe(n.getListType());let r=this.getNextSibling();for(;r;){const e=r;r=r.getNextSibling(),t.append(e)}n.insertAfter(e),e.insertAfter(t)}return t&&(d(e)||$(139),this.getChildren().forEach(t=>{e.append(t)})),this.remove(),0===n.getChildrenSize()&&n.remove(),e}insertAfter(e,t=!0){const n=this.getParentOrThrow();if(me(n)||$(39),ae(e))return super.insertAfter(e,t);const r=this.getNextSiblings();if(n.insertAfter(e,t),0!==r.length){const i=pe(n.getListType());r.forEach(e=>i.append(e)),e.insertAfter(i,t)}return e}remove(e){const t=this.getPreviousSibling(),n=this.getNextSibling();super.remove(e),t&&n&&j(t)&&j(n)&&(Z(t.getFirstChild(),n.getFirstChild()),n.remove())}insertNewAfter(e,t=!0){const n=ce().updateFromJSON(this.exportJSON()).setChecked(!this.getChecked()&&void 0);return this.insertAfter(n,t),n}collapseAtStart(e){const t=h();this.getChildren().forEach(e=>t.append(e));const n=this.getParentOrThrow(),r=n.getParentOrThrow(),i=ae(r);if(1===n.getChildrenSize())if(i)n.remove(),r.select();else{n.insertBefore(t),n.remove();const r=e.anchor,i=e.focus,s=t.getKey();"element"===r.type&&r.getNode().is(this)&&r.set(s,r.offset,"element"),"element"===i.type&&i.getNode().is(this)&&i.set(s,i.offset,"element")}else n.insertBefore(t),this.remove();return!0}getValue(){return this.getLatest().__value}setValue(e){const t=this.getWritable();return t.__value=e,t}getChecked(){const e=this.getLatest();let t;const n=this.getParent();return me(n)&&(t=n.getListType()),"check"===t?Boolean(e.__checked):void 0}setChecked(e){const t=this.getWritable();return t.__checked=e,t}toggleChecked(){const e=this.getWritable();return e.setChecked(!e.__checked)}getIndent(){const e=this.getParent();if(null===e||!this.isAttached())return this.getLatest().__indent;let t=e.getParentOrThrow(),n=0;for(;ae(t);)t=t.getParentOrThrow().getParentOrThrow(),n++;return n}setIndent(e){"number"!=typeof e&&$(117),(e=Math.floor(e))>=0||$(199);let t=this.getIndent();for(;t!==e;)t<e?(ne(this),t++):(re(this),t--);return this}canInsertAfter(e){return ae(e)}canReplaceWith(e){return ae(e)}canMergeWith(e){return ae(e)||v(e)}extractWithChild(e,t){if(!u(t))return!1;const n=t.anchor.getNode(),r=t.focus.getNode();return this.isParentOf(n)&&this.isParentOf(r)&&this.getTextContent().length===t.getTextContent().length}isParentRequired(){return!0}createParentElementNode(){return pe("bullet")}canMergeWhenEmpty(){return!0}}function oe(e){if(e.classList.contains("task-list-item"))for(const t of e.children)if("INPUT"===t.tagName)return le(t);if(e.classList.contains("joplin-checkbox"))for(const t of e.children)if(t.classList.contains("checkbox-wrapper")&&t.children.length>0&&"INPUT"===t.children[0].tagName)return le(t.children[0]);const t=e.getAttribute("aria-checked");return{node:ce("true"===t||"false"!==t&&void 0)}}function le(e){if(!("checkbox"===e.getAttribute("type")))return{node:null};return{node:ce(e.hasAttribute("checked"))}}function ce(e){return S(new se(void 0,e))}function ae(e){return e instanceof se}class ue extends C{__tag;__start;__listType;$config(){return this.config("list",{$transform:e=>{!function(e){const t=e.getNextSibling();me(t)&&e.getListType()===t.getListType()&&Z(e,t)}(e),te(e)},extends:C,importDOM:T({ol:()=>({conversion:de,priority:0}),ul:()=>({conversion:de,priority:0})})})}constructor(e="number",t=1,n){super(n);const r=fe[e]||e;this.__listType=r,this.__tag="number"===r?"ol":"ul",this.__start=t}afterCloneFrom(e){super.afterCloneFrom(e),this.__listType=e.__listType,this.__tag=e.__tag,this.__start=e.__start}getTag(){return this.getLatest().__tag}setListType(e){const t=this.getWritable();return t.__listType=e,t.__tag="number"===e?"ol":"ul",t}getListType(){return this.getLatest().__listType}getStart(){return this.getLatest().__start}setStart(e){const t=this.getWritable();return t.__start=e,t}createDOM(e,t){const n=this.__tag,r=document.createElement(n);return 1!==this.__start&&r.setAttribute("start",String(this.__start)),r.__lexicalListType=this.__listType,ge(r,e.theme,this),r}updateDOM(e,t,n){return e.__tag!==this.__tag||e.__listType!==this.__listType||(ge(t,n.theme,this),e.__start!==this.__start&&t.setAttribute("start",String(this.__start)),!1)}updateFromJSON(e){return super.updateFromJSON(e).setListType(e.listType).setStart(e.start)}exportDOM(e){const t=this.createDOM(e._config,e);return s(t)&&(1!==this.__start&&t.setAttribute("start",String(this.__start)),"check"===this.__listType&&t.setAttribute("__lexicalListType","check")),{element:t}}exportJSON(){return{...super.exportJSON(),listType:this.getListType(),start:this.getStart(),tag:this.getTag()}}canBeEmpty(){return!1}canIndent(){return!1}splice(e,t,n){let r=n;for(let e=0;e<n.length;e++){const t=n[e];ae(t)||(r===n&&(r=[...n]),r[e]=ce().append(!d(t)||me(t)||t.isInline()?t:k(t.getTextContent())))}return super.splice(e,t,r)}extractWithChild(e){return ae(e)}}function ge(e,t,n){const s=[],o=[],l=t.list;if(void 0!==l){const e=l[`${n.__tag}Depth`]||[],t=V(n)-1,r=t%e.length,i=e[r],c=l[n.__tag];let a;const u=l.nested,g=l.checklist;if(void 0!==u&&u.list&&(a=u.list),void 0!==c&&s.push(c),void 0!==g&&"check"===n.__listType&&s.push(g),void 0!==i){s.push(...x(i));for(let t=0;t<e.length;t++)t!==r&&o.push(n.__tag+t)}if(void 0!==a){const e=x(a);t>1?s.push(...e):o.push(...e)}}o.length>0&&r(e,...o),s.length>0&&i(e,...s)}function he(e){const t=[];for(let n=0;n<e.length;n++){const r=e[n];if(ae(r)){t.push(r);const e=r.getChildren();e.length>1&&e.forEach(e=>{me(e)&&t.push(q(e))})}else t.push(q(r))}return t}function de(e){const t=e.nodeName.toLowerCase();let n=null;if("ol"===t){n=pe("number",e.start)}else"ul"===t&&(n=function(e){if("check"===e.getAttribute("__lexicallisttype")||e.classList.contains("contains-task-list")||"1"===e.getAttribute("data-is-checklist"))return!0;for(const t of e.childNodes)if(s(t)&&t.hasAttribute("aria-checked"))return!0;return!1}(e)?pe("check"):pe("bullet"));return{after:he,node:n}}const fe={ol:"number",ul:"bullet"};function pe(e="number",t=1){return S(new ue(e,t))}function me(e){return e instanceof ue}const _e=b("INSERT_CHECK_LIST_COMMAND");function ye(e,t){const n=t&&t.disableTakeFocusOnClick||!1,r=e=>{!function(e,t){Ce(e,()=>{if(s(e.target)){const n=e.target,r=I(n);null!=r&&r.isEditable()&&r.update(()=>{const e=A(n);ae(e)&&(t?(w(D),w(M)):n.focus(),e.toggleChecked())})}})}(e,n)},i=e=>{!function(e,t){Ce(e,()=>{e.preventDefault(),t&&e.stopPropagation()})}(e,n)};return o(e.registerCommand(_e,()=>(G("check"),!0),L),e.registerCommand(N,t=>ve(t,e,!1),L),e.registerCommand(P,t=>ve(t,e,!0),L),e.registerCommand(F,()=>{if(null!=Te()){const t=e.getRootElement();return null!=t&&t.focus(),!0}return!1},L),e.registerCommand(O,t=>{const n=Te();return!(null==n||!e.isEditable())&&(e.update(()=>{const e=A(n);ae(e)&&(t.preventDefault(),e.toggleChecked())}),!0)},L),e.registerCommand(E,t=>e.getEditorState().read(()=>{const n=a();if(u(n)&&n.isCollapsed()){const{anchor:r}=n,i="element"===r.type;if(i||0===r.offset){const n=r.getNode(),s=l(n,e=>d(e)&&!e.isInline());if(ae(s)){const r=s.getParent();if(me(r)&&"check"===r.getListType()&&(i||s.getFirstDescendant()===n)){const n=e.getElementByKey(s.__key);if(null!=n&&document.activeElement!==n)return n.focus(),t.preventDefault(),!0}}}}return!1}),L),e.registerRootListener((e,t)=>{null!==e&&(e.addEventListener("click",r),e.addEventListener("pointerdown",i,{capture:!0}),e.addEventListener("mousedown",i,{capture:!0}),e.addEventListener("touchstart",i,{capture:!0,passive:!1})),null!==t&&(t.removeEventListener("click",r),t.removeEventListener("pointerdown",i,{capture:!0}),t.removeEventListener("mousedown",i,{capture:!0}),t.removeEventListener("touchstart",i,{capture:!0}))}))}function Ce(e,t){const n=e.target;if(!s(n))return;const r=n.firstChild;if(s(r)&&("UL"===r.tagName||"OL"===r.tagName))return;const i=n.parentNode;if(!i||"check"!==i.__lexicalListType)return;let o=null,l=null;if("clientX"in e)o=e.clientX;else if("touches"in e){const t=e.touches;t.length>0&&(o=t[0].clientX,l="touch")}if(null==o)return;const a=n.getBoundingClientRect(),u=o/c(n),g=window.getComputedStyle?window.getComputedStyle(n,"::before"):{width:"0px"},h=parseFloat(g.width),d="touch"===l||"touch"===e.pointerType?32:0;("rtl"===n.dir?u<a.right+d&&u>a.right-h-d:u>a.left-d&&u<a.left+h+d)&&t()}function Te(){const e=document.activeElement;return s(e)&&"LI"===e.tagName&&null!=e.parentNode&&"check"===e.parentNode.__lexicalListType?e:null}function ve(e,t,n){const r=Te();return null!=r&&t.update(()=>{const i=A(r);if(!ae(i))return;const s=function(e,t){let n=t?e.getPreviousSibling():e.getNextSibling(),r=e;for(;null==n&&ae(r);)r=r.getParentOrThrow().getParent(),null!=r&&(n=t?r.getPreviousSibling():r.getNextSibling());for(;ae(n);){const e=t?n.getLastChild():n.getFirstChild();if(!me(e))return n;n=t?e.getLastChild():e.getFirstChild()}return null}(i,n);if(null!=s){s.selectStart();const n=t.getElementByKey(s.__key);null!=n&&(e.preventDefault(),setTimeout(()=>{n.focus()},0))}}),!1}const Se=b("UPDATE_LIST_START_COMMAND"),xe=b("INSERT_UNORDERED_LIST_COMMAND"),ke=b("INSERT_ORDERED_LIST_COMMAND"),be=b("REMOVE_LIST_COMMAND");function Le(e,t){return o(e.registerCommand(ke,()=>(G("number"),!0),L),e.registerCommand(Se,e=>{const{listNodeKey:t,newStart:n}=e,r=B(t);return!!me(r)&&("number"===r.getListType()&&(r.setStart(n),te(r)),!0)},L),e.registerCommand(xe,()=>(G("bullet"),!0),L),e.registerCommand(be,()=>(ee(),!0),L),e.registerCommand(W,()=>ie(!!(t&&t.restoreNumbering)),L),e.registerNodeTransform(se,e=>{const t=e.getFirstChild();if(t){if(y(t)){const n=t.getStyle(),r=t.getFormat();e.getTextStyle()!==n&&e.setTextStyle(n),e.getTextFormat()!==r&&e.setTextFormat(r)}}else{const t=a();u(t)&&(t.style!==e.getTextStyle()||t.format!==e.getTextFormat())&&t.isCollapsed()&&e.is(t.anchor.getNode())&&e.setTextStyle(t.style).setTextFormat(t.format)}}),e.registerNodeTransform(J,e=>{const t=e.getParent();if(ae(t)&&e.is(t.getFirstChild())){const n=e.getStyle(),r=e.getFormat();n===t.getTextStyle()&&r===t.getTextFormat()||t.setTextStyle(n).setTextFormat(r)}}))}function Ne(e){const t=e=>{const t=e.getParent();if(me(e.getFirstChild())||!me(t))return;const n=l(e,e=>ae(e)&&me(e.getParent())&&ae(e.getPreviousSibling()));if(null===n&&e.getIndent()>0)e.setIndent(0);else if(ae(n)){const r=n.getPreviousSibling();if(ae(r)){const n=function(e){let t=e,n=t.getFirstChild();for(;me(n);){const e=n.getLastChild();if(!ae(e))break;t=e,n=t.getFirstChild()}return t}(r),i=n.getParent();if(me(i)){const n=V(i);n+1<V(t)&&e.setIndent(n)}}}};return e.registerNodeTransform(ue,e=>{const n=[e];for(;n.length>0;){const e=n.shift();if(me(e))for(const r of e.getChildren())if(ae(r)){t(r);const e=r.getFirstChild();me(e)&&n.push(e)}}})}function Pe(e,t){e.update(()=>G(t))}function Fe(e){e.update(()=>ee())}const Oe=R({build:(e,n,r)=>t(n),config:K({hasStrictIndent:!1,shouldPreserveNumbering:!1}),name:"@lexical/list/List",nodes:()=>[ue,se],register(t,n,r){const i=r.getOutput();return o(e(()=>Le(t,{restoreNumbering:i.shouldPreserveNumbering.value})),e(()=>i.hasStrictIndent.value?Ne(t):void 0))}}),Ae=R({config:K({disableTakeFocusOnClick:!1}),dependencies:[Oe],name:"@lexical/list/CheckList",register:ye});export{ce as $createListItemNode,pe as $createListNode,V as $getListDepth,ie as $handleListInsertParagraph,G as $insertList,ae as $isListItemNode,me as $isListNode,ee as $removeList,Ae as CheckListExtension,_e as INSERT_CHECK_LIST_COMMAND,ke as INSERT_ORDERED_LIST_COMMAND,xe as INSERT_UNORDERED_LIST_COMMAND,Oe as ListExtension,se as ListItemNode,ue as ListNode,be as REMOVE_LIST_COMMAND,Se as UPDATE_LIST_START_COMMAND,Pe as insertList,ye as registerCheckList,Le as registerList,Ne as registerListStrictIndentTransform,Fe as removeList};