@lexical/utils 0.6.5 → 0.7.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.
@@ -249,136 +249,6 @@ function registerNestedElementResolver(editor, targetNode, cloneNode, handleOver
249
249
  };
250
250
 
251
251
  return editor.registerNodeTransform(targetNode, elementNodeTransform);
252
- } // eslint-disable-next-line @typescript-eslint/no-explicit-any
253
-
254
- function unstable_internalCreateNodeFromParse(parsedNode, parsedNodeMap, editor, parentKey, activeEditorState) {
255
- const nodeType = parsedNode.__type;
256
-
257
- const registeredNode = editor._nodes.get(nodeType);
258
-
259
- if (registeredNode === undefined) {
260
- {
261
- throw Error(`createNodeFromParse: type "${nodeType}" + not found`);
262
- }
263
- } // Check for properties that are editors
264
-
265
-
266
- for (const property in parsedNode) {
267
- const value = parsedNode[property];
268
-
269
- if (value != null && typeof value === 'object') {
270
- const parsedEditorState = value.editorState;
271
-
272
- if (parsedEditorState != null) {
273
- const nestedEditor = lexical.createEditor({
274
- namespace: parsedEditorState.namespace
275
- });
276
- nestedEditor._nodes = editor._nodes;
277
- nestedEditor._parentEditor = editor._parentEditor;
278
- nestedEditor._pendingEditorState = unstable_convertLegacyJSONEditorState(nestedEditor, parsedEditorState);
279
- parsedNode[property] = nestedEditor;
280
- }
281
- }
282
- }
283
-
284
- const NodeKlass = registeredNode.klass;
285
- const parsedKey = parsedNode.__key; // We set the parsedKey to undefined before calling clone() so that
286
- // we get a new random key assigned.
287
-
288
- parsedNode.__key = undefined;
289
- const node = NodeKlass.clone(parsedNode);
290
- parsedNode.__key = parsedKey;
291
- const key = node.__key;
292
-
293
- activeEditorState._nodeMap.set(key, node);
294
-
295
- node.__parent = parentKey; // We will need to recursively handle the children in the case
296
- // of a ElementNode.
297
-
298
- if (lexical.$isElementNode(node)) {
299
- const children = parsedNode.__children;
300
- let prevNode = null;
301
-
302
- for (let i = 0; i < children.length; i++) {
303
- const childKey = children[i];
304
-
305
- if (i === 0) {
306
- node.__first = childKey;
307
- } else if (i === children.length - 1) {
308
- node.__last = childKey;
309
- }
310
-
311
- const parsedChild = parsedNodeMap.get(childKey);
312
-
313
- if (parsedChild !== undefined) {
314
- const child = unstable_internalCreateNodeFromParse(parsedChild, parsedNodeMap, editor, key, activeEditorState);
315
- const newChildKey = child.__key;
316
-
317
- if (prevNode !== null) {
318
- child.__prev = prevNode.__key;
319
- prevNode.__next = newChildKey;
320
- }
321
-
322
- node.__children.push(newChildKey);
323
-
324
- prevNode = child;
325
- }
326
- }
327
-
328
- node.__indent = parsedNode.__indent;
329
- node.__format = parsedNode.__format;
330
- node.__dir = parsedNode.__dir;
331
- } else if (lexical.$isTextNode(node)) {
332
- node.__format = parsedNode.__format;
333
- node.__style = parsedNode.__style;
334
- node.__mode = parsedNode.__mode;
335
- node.__detail = parsedNode.__detail;
336
- }
337
-
338
- return node;
339
- }
340
-
341
- function unstable_parseEditorState(parsedEditorState, editor) {
342
- // This is hacky, do not do this!
343
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
344
- const EditorStateClass = editor._editorState.constructor;
345
- const nodeMap = new Map();
346
- const editorState = new EditorStateClass(nodeMap);
347
- const parsedNodeMap = new Map(parsedEditorState._nodeMap); // root always exists in Map
348
-
349
- const parsedRoot = parsedNodeMap.get('root');
350
- const isUpdating = editor._updating;
351
-
352
- try {
353
- editor._updating = false;
354
- editor.update(() => {
355
- const dirtyElements = editor._dirtyElements;
356
- const dirtyLeaves = editor._dirtyLeaves;
357
- const dirtyType = editor._dirtyType;
358
- editor._dirtyElements = new Map();
359
- editor._dirtyLeaves = new Set();
360
- editor._dirtyType = 0;
361
-
362
- try {
363
- unstable_internalCreateNodeFromParse(parsedRoot, parsedNodeMap, editor, null, editorState);
364
- } finally {
365
- editor._dirtyElements = dirtyElements;
366
- editor._dirtyLeaves = dirtyLeaves;
367
- editor._dirtyType = dirtyType;
368
- }
369
- });
370
- } finally {
371
- editor._updating = isUpdating;
372
- }
373
-
374
- editorState._readOnly = true;
375
- return editorState;
376
- } // TODO: remove this function in version 0.4
377
-
378
-
379
- function unstable_convertLegacyJSONEditorState(editor, maybeStringifiedEditorState) {
380
- const parsedEditorState = typeof maybeStringifiedEditorState === 'string' ? JSON.parse(maybeStringifiedEditorState) : maybeStringifiedEditorState;
381
- return unstable_parseEditorState(parsedEditorState, editor);
382
252
  }
383
253
  function $restoreEditorState(editor, editorState) {
384
254
  const FULL_RECONCILE = 2;
@@ -503,4 +373,3 @@ exports.mediaFileReader = mediaFileReader;
503
373
  exports.mergeRegister = mergeRegister;
504
374
  exports.registerNestedElementResolver = registerNestedElementResolver;
505
375
  exports.removeClassNamesFromElement = removeClassNamesFromElement;
506
- exports.unstable_convertLegacyJSONEditorState = unstable_convertLegacyJSONEditorState;
@@ -4,16 +4,13 @@
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 m=require("lexical");function p(a){throw Error(`Minified Lexical error #${a}; visit https://lexical.dev/docs/error?code=${a} for the full message or `+"use the non-minified dev environment for full errors and additional helpful warnings.");}function q(a,b){for(let d of b)if(a.type.startsWith(d))return!0;return!1}function r(a,b){for(;a!==m.$getRoot()&&null!=a;){if(b(a))return a;a=a.getParent()}return null}
8
- function t(a,b,d,f,g){var c=d._nodes.get(a.__type);void 0===c&&p(5);for(var e in a){var l=a[e];if(null!=l&&"object"===typeof l&&(l=l.editorState,null!=l)){var h=m.createEditor({namespace:l.namespace});h._nodes=d._nodes;h._parentEditor=d._parentEditor;h._pendingEditorState=u(h,l);a[e]=h}}c=c.klass;e=a.__key;a.__key=void 0;c=c.clone(a);a.__key=e;e=c.__key;g._nodeMap.set(e,c);c.__parent=f;if(m.$isElementNode(c)){f=a.__children;l=null;for(h=0;h<f.length;h++){var k=f[h];0===h?c.__first=k:h===f.length-
9
- 1&&(c.__last=k);k=b.get(k);if(void 0!==k){k=t(k,b,d,e,g);let n=k.__key;null!==l&&(k.__prev=l.__key,l.__next=n);c.__children.push(n);l=k}}c.__indent=a.__indent;c.__format=a.__format;c.__dir=a.__dir}else m.$isTextNode(c)&&(c.__format=a.__format,c.__style=a.__style,c.__mode=a.__mode,c.__detail=a.__detail);return c}
10
- function v(a,b){let d=b._editorState.constructor,f=new Map,g=new d(f),c=new Map(a._nodeMap),e=c.get("root");a=b._updating;try{b._updating=!1,b.update(()=>{let l=b._dirtyElements,h=b._dirtyLeaves,k=b._dirtyType;b._dirtyElements=new Map;b._dirtyLeaves=new Set;b._dirtyType=0;try{t(e,c,b,null,g)}finally{b._dirtyElements=l,b._dirtyLeaves=h,b._dirtyType=k}})}finally{b._updating=a}g._readOnly=!0;return g}function u(a,b){b="string"===typeof b?JSON.parse(b):b;return v(b,a)}
11
- function w(a,b){let d=a.getChildAtIndex(b);null==d&&(d=a);if(m.$isRootOrShadowRoot(a))throw Error("Can not call $splitNode() on root element");let f=e=>{const l=e.getParentOrThrow(),h=m.$isRootOrShadowRoot(l),k=e!==d||h?m.$copyNode(e):e;if(h)return e.insertAfter(k),[e,k,k];const [n,x,y]=f(l);e=e.getNextSiblings();y.append(k,...e);return[n,x,k]},[g,c]=f(d);return[g,c]}
12
- exports.$dfs=function(a,b){let d=[];a=(a||m.$getRoot()).getLatest();b=b||(m.$isElementNode(a)?a.getLastDescendant():a);for(var f=a,g=0;null!==(f=f.getParent());)g++;for(f=g;null!==a&&!a.is(b);)if(d.push({depth:f,node:a}),m.$isElementNode(a)&&0<a.getChildrenSize())a=a.getFirstChild(),f++;else for(g=null;null===g&&null!==a;)g=a.getNextSibling(),null===g?(a=a.getParent(),f--):a=g;null!==a&&a.is(b)&&d.push({depth:f,node:a});return d};exports.$findMatchingParent=r;
13
- exports.$getNearestBlockElementAncestorOrThrow=function(a){a=r(a,b=>m.$isElementNode(b)&&!b.isInline());m.$isElementNode(a)||p(4);return a};exports.$getNearestNodeOfType=function(a,b){for(;null!=a;){if(a instanceof b)return a;a=a.getParent()}return null};
14
- exports.$insertNodeToNearestRoot=function(a){var b=m.$getSelection();if(m.$isRangeSelection(b)){var {focus:d}=b;b=d.getNode();d=d.offset;if(m.$isRootOrShadowRoot(b))d=b.getChildAtIndex(d),null==d?b.append(a):d.insertBefore(a),a.selectNext();else{let f,g;m.$isTextNode(b)?(f=b.getParentOrThrow(),g=b.getIndexWithinParent(),0<d&&(g+=1,b.splitText(d))):(f=b,g=d);[,b]=w(f,g);b.insertBefore(a);b.selectStart()}}else m.$isNodeSelection(b)||m.DEPRECATED_$isGridSelection(b)?(b=b.getNodes(),b[b.length-1].getTopLevelElementOrThrow().insertAfter(a)):
15
- m.$getRoot().append(a),b=m.$createParagraphNode(),a.insertAfter(b),b.select();return a.getLatest()};exports.$restoreEditorState=function(a,b){let d=new Map(b._nodeMap),f=a._pendingEditorState;f&&(f._nodeMap=d);a._dirtyType=2;a=b._selection;m.$setSelection(null===a?null:a.clone())};exports.$splitNode=w;exports.$wrapNodeInElement=function(a,b){b=b();a.replace(b);b.append(a);return b};
16
- exports.addClassNamesToElement=function(a,...b){b.forEach(d=>{"string"===typeof d&&(d=d.split(" ").filter(f=>""!==f),a.classList.add(...d))})};exports.isMimeType=q;
17
- exports.mediaFileReader=function(a,b){let d=a[Symbol.iterator]();return new Promise((f,g)=>{let c=[],e=()=>{const {done:l,value:h}=d.next();if(l)return f(c);const k=new FileReader;k.addEventListener("error",g);k.addEventListener("load",()=>{const n=k.result;"string"===typeof n&&c.push({file:h,result:n});e()});q(h,b)?k.readAsDataURL(h):e()};e()})};exports.mergeRegister=function(...a){return()=>{a.forEach(b=>b())}};
18
- exports.registerNestedElementResolver=function(a,b,d,f){return a.registerNodeTransform(b,g=>{a:{var c=g.getChildren();for(var e=0;e<c.length;e++)if(c[e]instanceof b){c=null;break a}for(c=g;null!==c;)if(e=c,c=c.getParent(),c instanceof b){c={child:e,parent:c};break a}c=null}if(null!==c){const {child:l,parent:h}=c;if(l.is(g)){f(h,g);g=l.getNextSiblings();c=g.length;h.insertAfter(l);if(0!==c){e=d(h);l.insertAfter(e);for(let k=0;k<c;k++)e.append(g[k])}h.canBeEmpty()||0!==h.getChildrenSize()||h.remove()}}})};
19
- exports.removeClassNamesFromElement=function(a,...b){b.forEach(d=>{"string"===typeof d&&a.classList.remove(...d.split(" "))})};exports.unstable_convertLegacyJSONEditorState=u
7
+ 'use strict';var h=require("lexical");function p(a,b){for(let c of b)if(a.type.startsWith(c))return!0;return!1}function q(a,b){for(;a!==h.$getRoot()&&null!=a;){if(b(a))return a;a=a.getParent()}return null}
8
+ function r(a,b){let c=a.getChildAtIndex(b);null==c&&(c=a);if(h.$isRootOrShadowRoot(a))throw Error("Can not call $splitNode() on root element");let e=f=>{const m=f.getParentOrThrow(),l=h.$isRootOrShadowRoot(m),k=f!==c||l?h.$copyNode(f):f;if(l)return f.insertAfter(k),[f,k,k];const [n,t,u]=e(m);f=f.getNextSiblings();u.append(k,...f);return[n,t,k]},[d,g]=e(c);return[d,g]}
9
+ exports.$dfs=function(a,b){let c=[];a=(a||h.$getRoot()).getLatest();b=b||(h.$isElementNode(a)?a.getLastDescendant():a);for(var e=a,d=0;null!==(e=e.getParent());)d++;for(e=d;null!==a&&!a.is(b);)if(c.push({depth:e,node:a}),h.$isElementNode(a)&&0<a.getChildrenSize())a=a.getFirstChild(),e++;else for(d=null;null===d&&null!==a;)d=a.getNextSibling(),null===d?(a=a.getParent(),e--):a=d;null!==a&&a.is(b)&&c.push({depth:e,node:a});return c};exports.$findMatchingParent=q;
10
+ exports.$getNearestBlockElementAncestorOrThrow=function(a){a=q(a,b=>h.$isElementNode(b)&&!b.isInline());if(!h.$isElementNode(a))throw Error("Minified Lexical error #4; visit https://lexical.dev/docs/error?code=4 for the full message or use the non-minified dev environment for full errors and additional helpful warnings.");return a};exports.$getNearestNodeOfType=function(a,b){for(;null!=a;){if(a instanceof b)return a;a=a.getParent()}return null};
11
+ exports.$insertNodeToNearestRoot=function(a){var b=h.$getSelection();if(h.$isRangeSelection(b)){var {focus:c}=b;b=c.getNode();c=c.offset;if(h.$isRootOrShadowRoot(b))c=b.getChildAtIndex(c),null==c?b.append(a):c.insertBefore(a),a.selectNext();else{let e,d;h.$isTextNode(b)?(e=b.getParentOrThrow(),d=b.getIndexWithinParent(),0<c&&(d+=1,b.splitText(c))):(e=b,d=c);[,b]=r(e,d);b.insertBefore(a);b.selectStart()}}else h.$isNodeSelection(b)||h.DEPRECATED_$isGridSelection(b)?(b=b.getNodes(),b[b.length-1].getTopLevelElementOrThrow().insertAfter(a)):
12
+ h.$getRoot().append(a),b=h.$createParagraphNode(),a.insertAfter(b),b.select();return a.getLatest()};exports.$restoreEditorState=function(a,b){let c=new Map(b._nodeMap),e=a._pendingEditorState;e&&(e._nodeMap=c);a._dirtyType=2;a=b._selection;h.$setSelection(null===a?null:a.clone())};exports.$splitNode=r;exports.$wrapNodeInElement=function(a,b){b=b();a.replace(b);b.append(a);return b};
13
+ exports.addClassNamesToElement=function(a,...b){b.forEach(c=>{"string"===typeof c&&(c=c.split(" ").filter(e=>""!==e),a.classList.add(...c))})};exports.isMimeType=p;
14
+ exports.mediaFileReader=function(a,b){let c=a[Symbol.iterator]();return new Promise((e,d)=>{let g=[],f=()=>{const {done:m,value:l}=c.next();if(m)return e(g);const k=new FileReader;k.addEventListener("error",d);k.addEventListener("load",()=>{const n=k.result;"string"===typeof n&&g.push({file:l,result:n});f()});p(l,b)?k.readAsDataURL(l):f()};f()})};exports.mergeRegister=function(...a){return()=>{a.forEach(b=>b())}};
15
+ exports.registerNestedElementResolver=function(a,b,c,e){return a.registerNodeTransform(b,d=>{a:{var g=d.getChildren();for(var f=0;f<g.length;f++)if(g[f]instanceof b){g=null;break a}for(g=d;null!==g;)if(f=g,g=g.getParent(),g instanceof b){g={child:f,parent:g};break a}g=null}if(null!==g){const {child:m,parent:l}=g;if(m.is(d)){e(l,d);d=m.getNextSiblings();g=d.length;l.insertAfter(m);if(0!==g){f=c(l);m.insertAfter(f);for(let k=0;k<g;k++)f.append(d[k])}l.canBeEmpty()||0!==l.getChildrenSize()||l.remove()}}})};
16
+ exports.removeClassNamesFromElement=function(a,...b){b.forEach(c=>{"string"===typeof c&&a.classList.remove(...c.split(" "))})}
package/index.d.ts CHANGED
@@ -38,7 +38,6 @@ export declare function $findMatchingParent(startingNode: LexicalNode, findFn: (
38
38
  declare type Func = () => void;
39
39
  export declare function mergeRegister(...func: Array<Func>): () => void;
40
40
  export declare function registerNestedElementResolver<N extends ElementNode>(editor: LexicalEditor, targetNode: Klass<N>, cloneNode: (from: N) => N, handleOverlap: (from: N, to: N) => void): () => void;
41
- export declare function unstable_convertLegacyJSONEditorState(editor: LexicalEditor, maybeStringifiedEditorState: string): EditorState;
42
41
  export declare function $restoreEditorState(editor: LexicalEditor, editorState: EditorState): void;
43
42
  export declare function $insertNodeToNearestRoot<T extends LexicalNode>(node: T): T;
44
43
  export declare function $wrapNodeInElement(node: LexicalNode, createElementNode: () => ElementNode): ElementNode;
package/package.json CHANGED
@@ -8,14 +8,14 @@
8
8
  "utils"
9
9
  ],
10
10
  "license": "MIT",
11
- "version": "0.6.5",
11
+ "version": "0.7.1",
12
12
  "main": "LexicalUtils.js",
13
13
  "peerDependencies": {
14
- "lexical": "0.6.5"
14
+ "lexical": "0.7.1"
15
15
  },
16
16
  "dependencies": {
17
- "@lexical/list": "0.6.5",
18
- "@lexical/table": "0.6.5"
17
+ "@lexical/list": "0.7.1",
18
+ "@lexical/table": "0.7.1"
19
19
  },
20
20
  "repository": {
21
21
  "type": "git",