@lexical/selection 0.12.0 → 0.12.1
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/LexicalSelection.dev.js +30 -11
- package/LexicalSelection.prod.js +13 -12
- package/lexical-node.d.ts +2 -2
- package/package.json +2 -2
package/LexicalSelection.dev.js
CHANGED
|
@@ -251,20 +251,19 @@ function $updateTextNodeProperties(target, source) {
|
|
|
251
251
|
|
|
252
252
|
|
|
253
253
|
function $cloneWithProperties(node) {
|
|
254
|
-
const
|
|
255
|
-
const constructor = latest.constructor; // @ts-expect-error
|
|
254
|
+
const constructor = node.constructor; // @ts-expect-error
|
|
256
255
|
|
|
257
|
-
const clone = constructor.clone(
|
|
258
|
-
clone.__parent =
|
|
259
|
-
clone.__next =
|
|
260
|
-
clone.__prev =
|
|
256
|
+
const clone = constructor.clone(node);
|
|
257
|
+
clone.__parent = node.__parent;
|
|
258
|
+
clone.__next = node.__next;
|
|
259
|
+
clone.__prev = node.__prev;
|
|
261
260
|
|
|
262
|
-
if (lexical.$isElementNode(
|
|
263
|
-
return $updateElementNodeProperties(clone,
|
|
261
|
+
if (lexical.$isElementNode(node) && lexical.$isElementNode(clone)) {
|
|
262
|
+
return $updateElementNodeProperties(clone, node);
|
|
264
263
|
}
|
|
265
264
|
|
|
266
|
-
if (lexical.$isTextNode(
|
|
267
|
-
return $updateTextNodeProperties(clone,
|
|
265
|
+
if (lexical.$isTextNode(node) && lexical.$isTextNode(clone)) {
|
|
266
|
+
return $updateTextNodeProperties(clone, node);
|
|
268
267
|
}
|
|
269
268
|
|
|
270
269
|
return clone;
|
|
@@ -386,7 +385,7 @@ function trimTextContentFromAnchor(editor, anchor, delCount) {
|
|
|
386
385
|
text = '\n\n';
|
|
387
386
|
}
|
|
388
387
|
|
|
389
|
-
const currentNodeSize =
|
|
388
|
+
const currentNodeSize = text.length;
|
|
390
389
|
|
|
391
390
|
if (!lexical.$isTextNode(currentNode) || remaining >= currentNodeSize) {
|
|
392
391
|
const parent = currentNode.getParent();
|
|
@@ -497,6 +496,26 @@ function $patchStyle(target, patch) {
|
|
|
497
496
|
function $patchStyleText(selection, patch) {
|
|
498
497
|
const selectedNodes = selection.getNodes();
|
|
499
498
|
const selectedNodesLength = selectedNodes.length;
|
|
499
|
+
|
|
500
|
+
if (lexical.DEPRECATED_$isGridSelection(selection)) {
|
|
501
|
+
const cellSelection = lexical.$createRangeSelection();
|
|
502
|
+
const cellSelectionAnchor = cellSelection.anchor;
|
|
503
|
+
const cellSelectionFocus = cellSelection.focus;
|
|
504
|
+
|
|
505
|
+
for (let i = 0; i < selectedNodesLength; i++) {
|
|
506
|
+
const node = selectedNodes[i];
|
|
507
|
+
|
|
508
|
+
if (lexical.DEPRECATED_$isGridCellNode(node)) {
|
|
509
|
+
cellSelectionAnchor.set(node.getKey(), 0, 'element');
|
|
510
|
+
cellSelectionFocus.set(node.getKey(), node.getChildrenSize(), 'element');
|
|
511
|
+
$patchStyleText(lexical.$normalizeSelection__EXPERIMENTAL(cellSelection), patch);
|
|
512
|
+
}
|
|
513
|
+
}
|
|
514
|
+
|
|
515
|
+
lexical.$setSelection(selection);
|
|
516
|
+
return;
|
|
517
|
+
}
|
|
518
|
+
|
|
500
519
|
const lastIndex = selectedNodesLength - 1;
|
|
501
520
|
let firstNode = selectedNodes[0];
|
|
502
521
|
let lastNode = selectedNodes[lastIndex];
|
package/LexicalSelection.prod.js
CHANGED
|
@@ -5,25 +5,26 @@
|
|
|
5
5
|
* LICENSE file in the root directory of this source tree.
|
|
6
6
|
*/
|
|
7
7
|
'use strict';var k=require("lexical");let u=new Map;function v(a){for(;null!=a;){if(a.nodeType===Node.TEXT_NODE)return a;a=a.firstChild}return null}function w(a){let b=a.parentNode;if(null==b)throw Error("Should never happen");return[b,Array.from(b.childNodes).indexOf(a)]}function y(a){let b={};a=a.split(";");for(let c of a)if(""!==c){let [e,d]=c.split(/:([^]+)/);b[e.trim()]=d.trim()}return b}function z(a){let b=u.get(a);void 0===b&&(b=y(a),u.set(a,b));return b}
|
|
8
|
-
function A(a){let b="";for(let c in a)c&&(b+=`${c}: ${a[c]};`);return b}function B(a,b){var c=z("getStyle"in a?a.getStyle():a.style);b=Object.entries(b).reduce((e,[d,f])=>{null===f?delete e[d]:e[d]=f;return e},{...c});c=A(b);a.setStyle(c);u.set(c,b)}
|
|
9
|
-
function
|
|
10
|
-
r
|
|
8
|
+
function A(a){let b="";for(let c in a)c&&(b+=`${c}: ${a[c]};`);return b}function B(a,b){var c=z("getStyle"in a?a.getStyle():a.style);b=Object.entries(b).reduce((e,[d,f])=>{null===f?delete e[d]:e[d]=f;return e},{...c});c=A(b);a.setStyle(c);u.set(c,b)}
|
|
9
|
+
function C(a,b){var c=a.getNodes(),e=c.length;if(k.DEPRECATED_$isGridSelection(a)){var d=k.$createRangeSelection(),f=d.anchor,h=d.focus;for(var g=0;g<e;g++){var l=c[g];k.DEPRECATED_$isGridCellNode(l)&&(f.set(l.getKey(),0,"element"),h.set(l.getKey(),l.getChildrenSize(),"element"),C(k.$normalizeSelection__EXPERIMENTAL(d),b))}k.$setSelection(a)}else if(--e,d=c[0],f=c[e],a.isCollapsed())B(a,b);else{var m=a.anchor,p=a.focus;g=d.getTextContent().length;l=p.offset;var n=m.offset,r=m.isBefore(p);h=r?n:l;
|
|
10
|
+
a=r?l:n;var q=r?m.type:p.type,t=r?p.type:m.type;m=r?p.key:m.key;k.$isTextNode(d)&&h===g&&(p=d.getNextSibling(),k.$isTextNode(p)&&(h=n=0,d=p));if(1===c.length)k.$isTextNode(d)&&(h="element"===q?0:n>l?l:n,a="element"===t?g:n>l?n:l,h!==a&&(0===h&&a===g?(B(d,b),d.select(h,a)):(c=d.splitText(h,a),c=0===h?c[0]:c[1],B(c,b),c.select(0,a-h))));else for(k.$isTextNode(d)&&h<d.getTextContentSize()&&(0!==h&&(d=d.splitText(h)[1]),B(d,b)),k.$isTextNode(f)&&(h=f.getTextContent().length,f.__key!==m&&0!==a&&(a=h),
|
|
11
|
+
a!==h&&([f]=f.splitText(a)),0!==a&&B(f,b)),a=1;a<e;a++)h=c[a],g=h.getKey(),k.$isTextNode(h)&&g!==d.getKey()&&g!==f.getKey()&&!h.isToken()&&B(h,b)}}function D(a){for(;null!==a&&!k.$isRootOrShadowRoot(a);){let b=a.getLatest(),c=a.getParent();0===b.getChildrenSize()&&a.remove(!0);a=c}}
|
|
12
|
+
function E(a,b,c,e,d=null){if(0!==b.length){var f=b[0],h=new Map,g=[];f=k.$isElementNode(f)?f:f.getParentOrThrow();f.isInline()&&(f=f.getParentOrThrow());for(var l=!1;null!==f;){var m=f.getPreviousSibling();if(null!==m){f=m;l=!0;break}f=f.getParentOrThrow();if(k.$isRootOrShadowRoot(f))break}m=new Set;for(var p=0;p<c;p++){var n=b[p];k.$isElementNode(n)&&0===n.getChildrenSize()&&m.add(n.getKey())}var r=new Set;for(p=0;p<c;p++){n=b[p];var q=n.getParent();null!==q&&q.isInline()&&(q=q.getParent());if(null!==
|
|
13
|
+
q&&k.$isLeafNode(n)&&!r.has(n.getKey())){if(n=q.getKey(),void 0===h.get(n)){let t=e();t.setFormat(q.getFormatType());t.setIndent(q.getIndent());g.push(t);h.set(n,t);q.getChildren().forEach(x=>{t.append(x);r.add(x.getKey());k.$isElementNode(x)&&x.getChildrenKeys().forEach(H=>r.add(H))});D(q)}}else m.has(n.getKey())&&(q=e(),q.setFormat(n.getFormatType()),q.setIndent(n.getIndent()),g.push(q),n.remove(!0))}if(null!==d)for(b=0;b<g.length;b++)d.append(g[b]);b=null;if(k.$isRootOrShadowRoot(f))if(l)if(null!==
|
|
11
14
|
d)f.insertAfter(d);else for(d=g.length-1;0<=d;d--)f.insertAfter(g[d]);else if(l=f.getFirstChild(),k.$isElementNode(l)&&(f=l),null===l)if(d)f.append(d);else for(d=0;d<g.length;d++)l=g[d],f.append(l),b=l;else if(null!==d)l.insertBefore(d);else for(f=0;f<g.length;f++)d=g[f],l.insertBefore(d),b=d;else if(d)f.insertAfter(d);else for(d=g.length-1;0<=d;d--)l=g[d],f.insertAfter(l),b=l;g=k.$getPreviousSelection();k.$isRangeSelection(g)&&g.anchor.getNode().isAttached()&&g.focus.getNode().isAttached()?k.$setSelection(g.clone()):
|
|
12
|
-
null!==b?b.selectEnd():a.dirty=!0}}function
|
|
13
|
-
exports.$cloneWithProperties=function(a){
|
|
15
|
+
null!==b?b.selectEnd():a.dirty=!0}}function F(a,b,c,e){a.modify(b?"extend":"move",c,e)}function G(a){a=a.anchor.getNode();return"rtl"===(k.$isRootNode(a)?a:a.getParentOrThrow()).getDirection()}exports.$addNodeStyle=function(a){a=a.getStyle();let b=y(a);u.set(a,b)};
|
|
16
|
+
exports.$cloneWithProperties=function(a){let b=a.constructor.clone(a);b.__parent=a.__parent;b.__next=a.__next;b.__prev=a.__prev;if(k.$isElementNode(a)&&k.$isElementNode(b))return b.__first=a.__first,b.__last=a.__last,b.__size=a.__size,b.__format=a.__format,b.__indent=a.__indent,b.__dir=a.__dir,b;k.$isTextNode(a)&&k.$isTextNode(b)&&(b.__format=a.__format,b.__style=a.__style,b.__mode=a.__mode,b.__detail=a.__detail);return b};
|
|
14
17
|
exports.$getSelectionStyleValueForProperty=function(a,b,c=""){let e=null,d=a.getNodes();var f=a.anchor,h=a.focus,g=a.isBackward();let l=g?h.offset:f.offset;f=g?h.getNode():f.getNode();if(""!==a.style&&(a=z(a.style),null!==a&&b in a))return a[b];for(a=0;a<d.length;a++){var m=d[a];if((0===a||0!==l||!m.is(f))&&k.$isTextNode(m))if(h=b,g=c,m=m.getStyle(),m=z(m),h=null!==m?m[h]||g:g,null===e)e=h;else if(e!==h){e="";break}}return null===e?c:e};
|
|
15
|
-
exports.$isAtNodeEnd=function(a){return"text"===a.type?a.offset===a.getNode().getTextContentSize():a.offset===a.getNode().getChildrenSize()};exports.$isParentElementRTL=
|
|
16
|
-
exports.$patchStyleText=function(a,b){var c=a.getNodes();let e=c.length-1,d=c[0],f=c[e];if(a.isCollapsed())B(a,b);else{var h=a.anchor,g=a.focus,l=d.getTextContent().length,m=g.offset,q=h.offset,p=h.isBefore(g),n=p?q:m;a=p?m:q;var r=p?h.type:g.type,t=p?g.type:h.type;h=p?g.key:h.key;k.$isTextNode(d)&&n===l&&(g=d.getNextSibling(),k.$isTextNode(g)&&(n=q=0,d=g));if(1===c.length)k.$isTextNode(d)&&(n="element"===r?0:q>m?m:q,a="element"===t?l:q>m?q:m,n!==a&&(0===n&&a===l?(B(d,b),d.select(n,a)):(c=d.splitText(n,
|
|
17
|
-
a),c=0===n?c[0]:c[1],B(c,b),c.select(0,a-n))));else for(k.$isTextNode(d)&&n<d.getTextContentSize()&&(0!==n&&(d=d.splitText(n)[1]),B(d,b)),k.$isTextNode(f)&&(n=f.getTextContent().length,f.__key!==h&&0!==a&&(a=n),a!==n&&([f]=f.splitText(a)),0!==a&&B(f,b)),a=1;a<e;a++)n=c[a],l=n.getKey(),k.$isTextNode(n)&&l!==d.getKey()&&l!==f.getKey()&&!n.isToken()&&B(n,b)}};
|
|
18
|
+
exports.$isAtNodeEnd=function(a){return"text"===a.type?a.offset===a.getNode().getTextContentSize():a.offset===a.getNode().getChildrenSize()};exports.$isParentElementRTL=G;exports.$moveCaretSelection=F;exports.$moveCharacter=function(a,b,c){let e=G(a);F(a,b,c?!e:e,"character")};exports.$patchStyleText=C;
|
|
18
19
|
exports.$selectAll=function(a){let b=a.anchor;a=a.focus;var c=b.getNode().getTopLevelElementOrThrow().getParentOrThrow();let e=c.getFirstDescendant();c=c.getLastDescendant();let d="element",f="element",h=0;k.$isTextNode(e)?d="text":k.$isElementNode(e)||null===e||(e=e.getParentOrThrow());k.$isTextNode(c)?(f="text",h=c.getTextContentSize()):k.$isElementNode(c)||null===c||(c=c.getParentOrThrow());e&&c&&(b.set(e.getKey(),0,d),a.set(c.getKey(),h,f))};
|
|
19
20
|
exports.$setBlocksType=function(a,b){if("root"===a.anchor.key){b=b();var c=k.$getRoot();(a=c.getFirstChild())?a.replace(b,!0):c.append(b)}else for(c=a.getNodes(),a=a.anchor.getNode().getParentOrThrow(),-1===c.indexOf(a)&&c.push(a),a.isInline()&&(a=a.getParentOrThrow(),-1===c.indexOf(a)&&c.push(a)),a=0;a<c.length;a++){let f=c[a];var e=f;if(!k.$isElementNode(e)||k.$isRootOrShadowRoot(e))e=!1;else{var d=e.getFirstChild();d=null===d||k.$isLineBreakNode(d)||k.$isTextNode(d)||d.isInline();e=!e.isInline()&&
|
|
20
21
|
!1!==e.canBeEmpty()&&d}e&&(e=b(),e.setFormat(f.getFormatType()),e.setIndent(f.getIndent()),f.replace(e,!0))}};exports.$shouldOverrideDefaultCharacterSelection=function(a,b){a=k.$getAdjacentNode(a.focus,b);return k.$isDecoratorNode(a)&&!a.isIsolated()||k.$isElementNode(a)&&!a.isInline()&&!a.canBeEmpty()};
|
|
21
22
|
exports.$sliceSelectedTextNodeContent=function(a,b){if(b.isSelected()&&!b.isSegmented()&&!b.isToken()&&(k.$isRangeSelection(a)||k.DEPRECATED_$isGridSelection(a))){var c=a.anchor.getNode(),e=a.focus.getNode(),d=b.is(c),f=b.is(e);if(d||f){d=a.isBackward();let [h,g]=a.getCharacterOffsets();a=c.is(e);f=b.is(d?e:c);e=b.is(d?c:e);c=0;let l=void 0;a?(c=h>g?g:h,l=h>g?h:g):f?(c=d?g:h,l=void 0):e&&(d=d?h:g,c=0,l=d);b.__text=b.__text.slice(c,l)}}return b};
|
|
22
|
-
exports.$wrapNodes=function(a,b,c=null){var e=a.getNodes();let d=e.length;var f=a.anchor;if(0===d||1===d&&"element"===f.type&&0===f.getNode().getChildrenSize()){a="text"===f.type?f.getNode().getParentOrThrow():f.getNode();e=a.getChildren();let g=b();g.setFormat(a.getFormatType());g.setIndent(a.getIndent());e.forEach(l=>g.append(l));c&&(g=c.append(g));a.replace(g)}else{f=null;var h=[];for(let g=0;g<d;g++){let l=e[g];k.$isRootOrShadowRoot(l)?(
|
|
23
|
-
f)?h.push(l):(
|
|
23
|
+
exports.$wrapNodes=function(a,b,c=null){var e=a.getNodes();let d=e.length;var f=a.anchor;if(0===d||1===d&&"element"===f.type&&0===f.getNode().getChildrenSize()){a="text"===f.type?f.getNode().getParentOrThrow():f.getNode();e=a.getChildren();let g=b();g.setFormat(a.getFormatType());g.setIndent(a.getIndent());e.forEach(l=>g.append(l));c&&(g=c.append(g));a.replace(g)}else{f=null;var h=[];for(let g=0;g<d;g++){let l=e[g];k.$isRootOrShadowRoot(l)?(E(a,h,h.length,b,c),h=[],f=l):null===f||null!==f&&k.$hasAncestor(l,
|
|
24
|
+
f)?h.push(l):(E(a,h,h.length,b,c),h=[l])}E(a,h,h.length,b,c)}};
|
|
24
25
|
exports.createDOMRange=function(a,b,c,e,d){let f=b.getKey(),h=e.getKey(),g=document.createRange(),l=a.getElementByKey(f);a=a.getElementByKey(h);k.$isTextNode(b)&&(l=v(l));k.$isTextNode(e)&&(a=v(a));if(void 0===b||void 0===e||null===l||null===a)return null;"BR"===l.nodeName&&([l,c]=w(l));"BR"===a.nodeName&&([a,d]=w(a));b=l.firstChild;l===a&&null!=b&&"BR"===b.nodeName&&0===c&&0===d&&(d=1);try{g.setStart(l,c),g.setEnd(a,d)}catch(m){return null}!g.collapsed||c===d&&f===h||(g.setStart(a,d),g.setEnd(l,
|
|
25
26
|
c));return g};exports.createRectsFromDOMRange=function(a,b){var c=a.getRootElement();if(null===c)return[];a=c.getBoundingClientRect();c=getComputedStyle(c);c=parseFloat(c.paddingLeft)+parseFloat(c.paddingRight);b=Array.from(b.getClientRects());let e=b.length;b.sort((f,h)=>{let g=f.top-h.top;return 3>=Math.abs(g)?f.left-h.left:g});let d;for(let f=0;f<e;f++){let h=b[f],g=h.width+c===a.width;d&&d.top<=h.top&&d.top+d.height>h.top&&d.left+d.width>h.left||g?(b.splice(f--,1),e--):d=h}return b};
|
|
26
27
|
exports.getStyleObjectFromCSS=z;
|
|
27
28
|
exports.trimTextContentFromAnchor=function(a,b,c){let e=b.getNode();if(k.$isElementNode(e)){var d=e.getDescendantByIndex(b.offset);null!==d&&(e=d)}for(;0<c&&null!==e;){var f=e.getPreviousSibling(),h=0;if(null===f){d=e.getParentOrThrow();for(var g=d.getPreviousSibling();null===g;){d=d.getParent();if(null===d){f=null;break}g=d.getPreviousSibling()}null!==d&&(h=d.isInline()?0:2,f=k.$isElementNode(g)?g.getLastDescendant():g)}g=e.getTextContent();""===g&&k.$isElementNode(e)&&!e.isInline()&&(g="\n\n");
|
|
28
|
-
d=
|
|
29
|
-
|
|
29
|
+
d=g.length;if(!k.$isTextNode(e)||c>=d)g=e.getParent(),e.remove(),null==g||0!==g.getChildrenSize()||k.$isRootNode(g)||g.remove(),c-=d+h,e=f;else{let l=e.getKey();h=a.getEditorState().read(()=>{const p=k.$getNodeByKey(l);return k.$isTextNode(p)&&p.isSimpleText()?p.getTextContent():null});f=d-c;let m=g.slice(0,f);null!==h&&h!==g?(c=k.$getPreviousSelection(),d=e,e.isSimpleText()?e.setTextContent(h):(d=k.$createTextNode(h),e.replace(d)),k.$isRangeSelection(c)&&c.isCollapsed()&&(c=c.anchor.offset,d.select(c,
|
|
30
|
+
c))):e.isSimpleText()?(h=b.key===l,g=b.offset,g<c&&(g=d),c=h?g-c:0,d=h?g:f,h&&0===c?([c]=e.splitText(c,d),c.remove()):([,c]=e.splitText(c,d),c.remove())):(c=k.$createTextNode(m),e.replace(c));c=0}}}
|
package/lexical-node.d.ts
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
* LICENSE file in the root directory of this source tree.
|
|
6
6
|
*
|
|
7
7
|
*/
|
|
8
|
-
import
|
|
8
|
+
import { GridSelection, LexicalEditor, LexicalNode, NodeSelection, Point, RangeSelection, TextNode } from 'lexical';
|
|
9
9
|
/**
|
|
10
10
|
* Returns a copy of a node, but generates a new key for the copy.
|
|
11
11
|
* @param node - The node to be cloned.
|
|
@@ -47,4 +47,4 @@ export declare function $addNodeStyle(node: TextNode): void;
|
|
|
47
47
|
* @param selection - The selected node(s) to update.
|
|
48
48
|
* @param patch - The patch to apply, which can include multiple styles. { CSSProperty: value }
|
|
49
49
|
*/
|
|
50
|
-
export declare function $patchStyleText(selection: RangeSelection, patch: Record<string, string | null>): void;
|
|
50
|
+
export declare function $patchStyleText(selection: RangeSelection | GridSelection, patch: Record<string, string | null>): void;
|
package/package.json
CHANGED