@lexical/text 0.14.4 → 0.15.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -3,7 +3,9 @@
3
3
  *
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
  */
8
+
7
9
  'use strict';
8
10
 
9
11
  var lexical = require('lexical');
@@ -179,6 +181,7 @@ function $findTextIntersectionFromCharacters(root, targetCharacters) {
179
181
  * LICENSE file in the root directory of this source tree.
180
182
  *
181
183
  */
184
+
182
185
  /**
183
186
  * Returns a tuple that can be rested (...) into mergeRegister to clean up
184
187
  * node transforms listeners that transforms text into another node, eg. a HashtagNode.
@@ -202,7 +205,7 @@ function registerLexicalTextEntity(editor, getMatch, targetNode, createNode) {
202
205
  const isTargetNode = node => {
203
206
  return node instanceof targetNode;
204
207
  };
205
- const replaceWithSimpleText = node => {
208
+ const $replaceWithSimpleText = node => {
206
209
  const textNode = lexical.$createTextNode(node.getTextContent());
207
210
  textNode.setFormat(node.getFormat());
208
211
  node.replace(textNode);
@@ -210,11 +213,11 @@ function registerLexicalTextEntity(editor, getMatch, targetNode, createNode) {
210
213
  const getMode = node => {
211
214
  return node.getLatest().__mode;
212
215
  };
213
- const textNodeTransform = node => {
216
+ const $textNodeTransform = node => {
214
217
  if (!node.isSimpleText()) {
215
218
  return;
216
219
  }
217
- const prevSibling = node.getPreviousSibling();
220
+ let prevSibling = node.getPreviousSibling();
218
221
  let text = node.getTextContent();
219
222
  let currentNode = node;
220
223
  let match;
@@ -224,7 +227,7 @@ function registerLexicalTextEntity(editor, getMatch, targetNode, createNode) {
224
227
  const prevMatch = getMatch(combinedText);
225
228
  if (isTargetNode(prevSibling)) {
226
229
  if (prevMatch === null || getMode(prevSibling) !== 0) {
227
- replaceWithSimpleText(prevSibling);
230
+ $replaceWithSimpleText(prevSibling);
228
231
  return;
229
232
  } else {
230
233
  const diff = prevMatch.end - previousText.length;
@@ -246,7 +249,7 @@ function registerLexicalTextEntity(editor, getMatch, targetNode, createNode) {
246
249
  return;
247
250
  }
248
251
  }
249
-
252
+ let prevMatchLengthToSkip = 0;
250
253
  // eslint-disable-next-line no-constant-condition
251
254
  while (true) {
252
255
  match = getMatch(text);
@@ -259,7 +262,7 @@ function registerLexicalTextEntity(editor, getMatch, targetNode, createNode) {
259
262
  const nextMatch = getMatch(nextText);
260
263
  if (nextMatch === null) {
261
264
  if (isTargetNode(nextSibling)) {
262
- replaceWithSimpleText(nextSibling);
265
+ $replaceWithSimpleText(nextSibling);
263
266
  } else {
264
267
  nextSibling.markDirty();
265
268
  }
@@ -268,23 +271,22 @@ function registerLexicalTextEntity(editor, getMatch, targetNode, createNode) {
268
271
  return;
269
272
  }
270
273
  }
271
- } else {
272
- const nextMatch = getMatch(nextText);
273
- if (nextMatch !== null && nextMatch.start === 0) {
274
- return;
275
- }
276
274
  }
277
275
  if (match === null) {
278
276
  return;
279
277
  }
280
278
  if (match.start === 0 && lexical.$isTextNode(prevSibling) && prevSibling.isTextEntity()) {
279
+ prevMatchLengthToSkip += match.end;
281
280
  continue;
282
281
  }
283
282
  let nodeToReplace;
284
283
  if (match.start === 0) {
285
284
  [nodeToReplace, currentNode] = currentNode.splitText(match.end);
286
285
  } else {
287
- [, nodeToReplace, currentNode] = currentNode.splitText(match.start, match.end);
286
+ [, nodeToReplace, currentNode] = currentNode.splitText(match.start + prevMatchLengthToSkip, match.end + prevMatchLengthToSkip);
287
+ }
288
+ if (!(nodeToReplace !== undefined)) {
289
+ throw Error(`${'nodeToReplace'} should not be undefined. You may want to check splitOffsets passed to the splitText.`);
288
290
  }
289
291
  const replacementNode = createNode(nodeToReplace);
290
292
  replacementNode.setFormat(nodeToReplace.getFormat());
@@ -292,13 +294,15 @@ function registerLexicalTextEntity(editor, getMatch, targetNode, createNode) {
292
294
  if (currentNode == null) {
293
295
  return;
294
296
  }
297
+ prevMatchLengthToSkip = 0;
298
+ prevSibling = replacementNode;
295
299
  }
296
300
  };
297
- const reverseNodeTransform = node => {
301
+ const $reverseNodeTransform = node => {
298
302
  const text = node.getTextContent();
299
303
  const match = getMatch(text);
300
304
  if (match === null || match.start !== 0) {
301
- replaceWithSimpleText(node);
305
+ $replaceWithSimpleText(node);
302
306
  return;
303
307
  }
304
308
  if (text.length > match.end) {
@@ -308,21 +312,21 @@ function registerLexicalTextEntity(editor, getMatch, targetNode, createNode) {
308
312
  }
309
313
  const prevSibling = node.getPreviousSibling();
310
314
  if (lexical.$isTextNode(prevSibling) && prevSibling.isTextEntity()) {
311
- replaceWithSimpleText(prevSibling);
312
- replaceWithSimpleText(node);
315
+ $replaceWithSimpleText(prevSibling);
316
+ $replaceWithSimpleText(node);
313
317
  }
314
318
  const nextSibling = node.getNextSibling();
315
319
  if (lexical.$isTextNode(nextSibling) && nextSibling.isTextEntity()) {
316
- replaceWithSimpleText(nextSibling);
320
+ $replaceWithSimpleText(nextSibling);
317
321
 
318
322
  // This may have already been converted in the previous block
319
323
  if (isTargetNode(node)) {
320
- replaceWithSimpleText(node);
324
+ $replaceWithSimpleText(node);
321
325
  }
322
326
  }
323
327
  };
324
- const removePlainTextTransform = editor.registerNodeTransform(lexical.TextNode, textNodeTransform);
325
- const removeReverseNodeTransform = editor.registerNodeTransform(targetNode, reverseNodeTransform);
328
+ const removePlainTextTransform = editor.registerNodeTransform(lexical.TextNode, $textNodeTransform);
329
+ const removeReverseNodeTransform = editor.registerNodeTransform(targetNode, $reverseNodeTransform);
326
330
  return [removePlainTextTransform, removeReverseNodeTransform];
327
331
  }
328
332
 
@@ -3,7 +3,9 @@
3
3
  *
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
  */
8
+
7
9
  import { $getRoot, $isDecoratorNode, $isElementNode, $isParagraphNode, $isTextNode, TextNode, $createTextNode } from 'lexical';
8
10
 
9
11
  /**
@@ -177,6 +179,7 @@ function $findTextIntersectionFromCharacters(root, targetCharacters) {
177
179
  * LICENSE file in the root directory of this source tree.
178
180
  *
179
181
  */
182
+
180
183
  /**
181
184
  * Returns a tuple that can be rested (...) into mergeRegister to clean up
182
185
  * node transforms listeners that transforms text into another node, eg. a HashtagNode.
@@ -200,7 +203,7 @@ function registerLexicalTextEntity(editor, getMatch, targetNode, createNode) {
200
203
  const isTargetNode = node => {
201
204
  return node instanceof targetNode;
202
205
  };
203
- const replaceWithSimpleText = node => {
206
+ const $replaceWithSimpleText = node => {
204
207
  const textNode = $createTextNode(node.getTextContent());
205
208
  textNode.setFormat(node.getFormat());
206
209
  node.replace(textNode);
@@ -208,11 +211,11 @@ function registerLexicalTextEntity(editor, getMatch, targetNode, createNode) {
208
211
  const getMode = node => {
209
212
  return node.getLatest().__mode;
210
213
  };
211
- const textNodeTransform = node => {
214
+ const $textNodeTransform = node => {
212
215
  if (!node.isSimpleText()) {
213
216
  return;
214
217
  }
215
- const prevSibling = node.getPreviousSibling();
218
+ let prevSibling = node.getPreviousSibling();
216
219
  let text = node.getTextContent();
217
220
  let currentNode = node;
218
221
  let match;
@@ -222,7 +225,7 @@ function registerLexicalTextEntity(editor, getMatch, targetNode, createNode) {
222
225
  const prevMatch = getMatch(combinedText);
223
226
  if (isTargetNode(prevSibling)) {
224
227
  if (prevMatch === null || getMode(prevSibling) !== 0) {
225
- replaceWithSimpleText(prevSibling);
228
+ $replaceWithSimpleText(prevSibling);
226
229
  return;
227
230
  } else {
228
231
  const diff = prevMatch.end - previousText.length;
@@ -244,7 +247,7 @@ function registerLexicalTextEntity(editor, getMatch, targetNode, createNode) {
244
247
  return;
245
248
  }
246
249
  }
247
-
250
+ let prevMatchLengthToSkip = 0;
248
251
  // eslint-disable-next-line no-constant-condition
249
252
  while (true) {
250
253
  match = getMatch(text);
@@ -257,7 +260,7 @@ function registerLexicalTextEntity(editor, getMatch, targetNode, createNode) {
257
260
  const nextMatch = getMatch(nextText);
258
261
  if (nextMatch === null) {
259
262
  if (isTargetNode(nextSibling)) {
260
- replaceWithSimpleText(nextSibling);
263
+ $replaceWithSimpleText(nextSibling);
261
264
  } else {
262
265
  nextSibling.markDirty();
263
266
  }
@@ -266,23 +269,22 @@ function registerLexicalTextEntity(editor, getMatch, targetNode, createNode) {
266
269
  return;
267
270
  }
268
271
  }
269
- } else {
270
- const nextMatch = getMatch(nextText);
271
- if (nextMatch !== null && nextMatch.start === 0) {
272
- return;
273
- }
274
272
  }
275
273
  if (match === null) {
276
274
  return;
277
275
  }
278
276
  if (match.start === 0 && $isTextNode(prevSibling) && prevSibling.isTextEntity()) {
277
+ prevMatchLengthToSkip += match.end;
279
278
  continue;
280
279
  }
281
280
  let nodeToReplace;
282
281
  if (match.start === 0) {
283
282
  [nodeToReplace, currentNode] = currentNode.splitText(match.end);
284
283
  } else {
285
- [, nodeToReplace, currentNode] = currentNode.splitText(match.start, match.end);
284
+ [, nodeToReplace, currentNode] = currentNode.splitText(match.start + prevMatchLengthToSkip, match.end + prevMatchLengthToSkip);
285
+ }
286
+ if (!(nodeToReplace !== undefined)) {
287
+ throw Error(`${'nodeToReplace'} should not be undefined. You may want to check splitOffsets passed to the splitText.`);
286
288
  }
287
289
  const replacementNode = createNode(nodeToReplace);
288
290
  replacementNode.setFormat(nodeToReplace.getFormat());
@@ -290,13 +292,15 @@ function registerLexicalTextEntity(editor, getMatch, targetNode, createNode) {
290
292
  if (currentNode == null) {
291
293
  return;
292
294
  }
295
+ prevMatchLengthToSkip = 0;
296
+ prevSibling = replacementNode;
293
297
  }
294
298
  };
295
- const reverseNodeTransform = node => {
299
+ const $reverseNodeTransform = node => {
296
300
  const text = node.getTextContent();
297
301
  const match = getMatch(text);
298
302
  if (match === null || match.start !== 0) {
299
- replaceWithSimpleText(node);
303
+ $replaceWithSimpleText(node);
300
304
  return;
301
305
  }
302
306
  if (text.length > match.end) {
@@ -306,21 +310,21 @@ function registerLexicalTextEntity(editor, getMatch, targetNode, createNode) {
306
310
  }
307
311
  const prevSibling = node.getPreviousSibling();
308
312
  if ($isTextNode(prevSibling) && prevSibling.isTextEntity()) {
309
- replaceWithSimpleText(prevSibling);
310
- replaceWithSimpleText(node);
313
+ $replaceWithSimpleText(prevSibling);
314
+ $replaceWithSimpleText(node);
311
315
  }
312
316
  const nextSibling = node.getNextSibling();
313
317
  if ($isTextNode(nextSibling) && nextSibling.isTextEntity()) {
314
- replaceWithSimpleText(nextSibling);
318
+ $replaceWithSimpleText(nextSibling);
315
319
 
316
320
  // This may have already been converted in the previous block
317
321
  if (isTargetNode(node)) {
318
- replaceWithSimpleText(node);
322
+ $replaceWithSimpleText(node);
319
323
  }
320
324
  }
321
325
  };
322
- const removePlainTextTransform = editor.registerNodeTransform(TextNode, textNodeTransform);
323
- const removeReverseNodeTransform = editor.registerNodeTransform(targetNode, reverseNodeTransform);
326
+ const removePlainTextTransform = editor.registerNodeTransform(TextNode, $textNodeTransform);
327
+ const removeReverseNodeTransform = editor.registerNodeTransform(targetNode, $reverseNodeTransform);
324
328
  return [removePlainTextTransform, removeReverseNodeTransform];
325
329
  }
326
330
 
package/LexicalText.js CHANGED
@@ -3,7 +3,9 @@
3
3
  *
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
  */
8
+
7
9
  'use strict'
8
10
  const LexicalText = process.env.NODE_ENV === 'development' ? require('./LexicalText.dev.js') : require('./LexicalText.prod.js');
9
11
  module.exports = LexicalText;
package/LexicalText.mjs CHANGED
@@ -3,7 +3,9 @@
3
3
  *
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
  */
8
+
7
9
  import * as modDev from './LexicalText.dev.mjs';
8
10
  import * as modProd from './LexicalText.prod.mjs';
9
11
  const mod = process.env.NODE_ENV === 'development' ? modDev : modProd;
@@ -3,7 +3,9 @@
3
3
  *
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
  */
8
+
7
9
  const mod = await (process.env.NODE_ENV === 'development' ? import('./LexicalText.dev.mjs') : import('./LexicalText.prod.mjs'));
8
10
  export const $canShowPlaceholder = mod.$canShowPlaceholder;
9
11
  export const $canShowPlaceholderCurry = mod.$canShowPlaceholderCurry;
@@ -3,10 +3,13 @@
3
3
  *
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
  */
7
- 'use strict';var g=require("lexical");function r(){return g.$getRoot().getTextContent()}function t(c,h=!0){if(c)return!1;c=r();h&&(c=c.trim());return""===c}function u(c){if(!t(c,!1))return!1;c=g.$getRoot().getChildren();let h=c.length;if(1<h)return!1;for(let e=0;e<h;e++){var b=c[e];if(g.$isDecoratorNode(b))return!1;if(g.$isElementNode(b)){if(!g.$isParagraphNode(b)||0!==b.__indent)return!1;b=b.getChildren();let n=b.length;for(let q=0;q<n;q++)if(!g.$isTextNode(b[e]))return!1}}return!0}
8
- exports.$canShowPlaceholder=u;exports.$canShowPlaceholderCurry=function(c){return()=>u(c)};exports.$findTextIntersectionFromCharacters=function(c,h){var b=c.getFirstChild();c=0;a:for(;null!==b;){if(g.$isElementNode(b)){var e=b.getFirstChild();if(null!==e){b=e;continue}}else if(g.$isTextNode(b)){e=b.getTextContentSize();if(c+e>h)return{node:b,offset:h-c};c+=e}e=b.getNextSibling();if(null!==e)b=e;else{for(b=b.getParent();null!==b;){e=b.getNextSibling();if(null!==e){b=e;continue a}b=b.getParent()}break}}return null};
9
- exports.$isRootTextContentEmpty=t;exports.$isRootTextContentEmptyCurry=function(c,h){return()=>t(c,h)};exports.$rootTextContent=r;
10
- exports.registerLexicalTextEntity=function(c,h,b,e){let n=a=>{const d=g.$createTextNode(a.getTextContent());d.setFormat(a.getFormat());a.replace(d)},q=c.registerNodeTransform(g.TextNode,a=>{if(a.isSimpleText()){var d=a.getPreviousSibling(),l=a.getTextContent(),m=a;if(g.$isTextNode(d)){var k=d.getTextContent(),f=h(k+l);if(d instanceof b){if(null===f||0!==d.getLatest().__mode){n(d);return}f=f.end-k.length;if(0<f){m=l.slice(0,f);m=k+m;d.select();d.setTextContent(m);f===l.length?a.remove():(d=l.slice(f),
11
- a.setTextContent(d));return}}else if(null===f||f.start<k.length)return}for(;;){a=h(l);l=f=null===a?"":l.slice(a.end);if(""===f){if(k=m.getNextSibling(),g.$isTextNode(k))if(f=m.getTextContent()+k.getTextContent(),f=h(f),null===f){k instanceof b?n(k):k.markDirty();break}else if(0!==f.start)break}else if(k=h(f),null!==k&&0===k.start)break;if(null===a)break;if(0===a.start&&g.$isTextNode(d)&&d.isTextEntity())continue;let p;0===a.start?[p,m]=m.splitText(a.end):[,p,m]=m.splitText(a.start,a.end);a=e(p);a.setFormat(p.getFormat());
12
- p.replace(a);if(null==m)break}}});c=c.registerNodeTransform(b,a=>{var d=a.getTextContent();const l=h(d);null===l||0!==l.start?n(a):d.length>l.end?a.splitText(l.end):(d=a.getPreviousSibling(),g.$isTextNode(d)&&d.isTextEntity()&&(n(d),n(a)),d=a.getNextSibling(),g.$isTextNode(d)&&d.isTextEntity()&&(n(d),a instanceof b&&n(a)))});return[q,c]}
8
+
9
+ 'use strict';var g=require("lexical");function r(){return g.$getRoot().getTextContent()}function u(b,e=!0){if(b)return!1;b=r();e&&(b=b.trim());return""===b}function v(b){if(!u(b,!1))return!1;b=g.$getRoot().getChildren();let e=b.length;if(1<e)return!1;for(let f=0;f<e;f++){var a=b[f];if(g.$isDecoratorNode(a))return!1;if(g.$isElementNode(a)){if(!g.$isParagraphNode(a)||0!==a.__indent)return!1;a=a.getChildren();let n=a.length;for(let t=0;t<n;t++)if(!g.$isTextNode(a[f]))return!1}}return!0}var w;
10
+ function x(b){let e=new URLSearchParams;e.append("code",b);for(let a=1;a<arguments.length;a++)e.append("v",arguments[a]);throw Error(`Minified Lexical error #${b}; visit https://lexical.dev/docs/error?${e} for the full message or `+"use the non-minified dev environment for full errors and additional helpful warnings.");}w=x&&x.__esModule&&Object.prototype.hasOwnProperty.call(x,"default")?x["default"]:x;exports.$canShowPlaceholder=v;exports.$canShowPlaceholderCurry=function(b){return()=>v(b)};
11
+ exports.$findTextIntersectionFromCharacters=function(b,e){var a=b.getFirstChild();b=0;a:for(;null!==a;){if(g.$isElementNode(a)){var f=a.getFirstChild();if(null!==f){a=f;continue}}else if(g.$isTextNode(a)){f=a.getTextContentSize();if(b+f>e)return{node:a,offset:e-b};b+=f}f=a.getNextSibling();if(null!==f)a=f;else{for(a=a.getParent();null!==a;){f=a.getNextSibling();if(null!==f){a=f;continue a}a=a.getParent()}break}}return null};exports.$isRootTextContentEmpty=u;
12
+ exports.$isRootTextContentEmptyCurry=function(b,e){return()=>u(b,e)};exports.$rootTextContent=r;
13
+ exports.registerLexicalTextEntity=function(b,e,a,f){let n=d=>{const c=g.$createTextNode(d.getTextContent());c.setFormat(d.getFormat());d.replace(c)},t=b.registerNodeTransform(g.TextNode,d=>{if(d.isSimpleText()){var c=d.getPreviousSibling(),k=d.getTextContent(),m=d;if(g.$isTextNode(c)){var l=c.getTextContent();var h=e(l+k);if(c instanceof a){if(null===h||0!==c.getLatest().__mode){n(c);return}h=h.end-l.length;if(0<h){m=k.slice(0,h);m=l+m;c.select();c.setTextContent(m);h===k.length?d.remove():(k=k.slice(h),
14
+ d.setTextContent(k));return}}else if(null===h||h.start<l.length)return}for(d=0;;){l=e(k);var p=null===l?"":k.slice(l.end);k=p;if(""===p&&(h=m.getNextSibling(),g.$isTextNode(h)))if(p=m.getTextContent()+h.getTextContent(),p=e(p),null===p){h instanceof a?n(h):h.markDirty();break}else if(0!==p.start)break;if(null===l)break;if(0===l.start&&g.$isTextNode(c)&&c.isTextEntity()){d+=l.end;continue}let q;0===l.start?[q,m]=m.splitText(l.end):[,q,m]=m.splitText(l.start+d,l.end+d);void 0===q&&w(165,"nodeToReplace");
15
+ c=f(q);c.setFormat(q.getFormat());q.replace(c);if(null==m)break;d=0}}});b=b.registerNodeTransform(a,d=>{var c=d.getTextContent();const k=e(c);null===k||0!==k.start?n(d):c.length>k.end?d.splitText(k.end):(c=d.getPreviousSibling(),g.$isTextNode(c)&&c.isTextEntity()&&(n(c),n(d)),c=d.getNextSibling(),g.$isTextNode(c)&&c.isTextEntity()&&(n(c),d instanceof a&&n(d)))});return[t,b]}
@@ -3,5 +3,7 @@
3
3
  *
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
  */
7
- import{$getRoot as t,$isDecoratorNode as e,$isElementNode as n,$isParagraphNode as r,$isTextNode as i,TextNode as o,$createTextNode as l}from"lexical";function s(){return t().getTextContent()}function u(t,e=!0){if(t)return!1;let n=s();return e&&(n=n.trim()),""===n}function f(t,e){return()=>u(t,e)}function c(o){if(!u(o,!1))return!1;const l=t().getChildren(),s=l.length;if(s>1)return!1;for(let t=0;t<s;t++){const o=l[t];if(e(o))return!1;if(n(o)){if(!r(o))return!1;if(0!==o.__indent)return!1;const e=o.getChildren(),n=e.length;for(let r=0;r<n;r++){const n=e[t];if(!i(n))return!1}}}return!0}function g(t){return()=>c(t)}function x(t,e){let r=t.getFirstChild(),o=0;t:for(;null!==r;){if(n(r)){const t=r.getFirstChild();if(null!==t){r=t;continue}}else if(i(r)){const t=r.getTextContentSize();if(o+t>e)return{node:r,offset:e-o};o+=t}const t=r.getNextSibling();if(null!==t){r=t;continue}let l=r.getParent();for(;null!==l;){const t=l.getNextSibling();if(null!==t){r=t;continue t}l=l.getParent()}break}return null}function a(t,e,n,r){const s=t=>t instanceof n,u=t=>{const e=l(t.getTextContent());e.setFormat(t.getFormat()),t.replace(e)};return[t.registerNodeTransform(o,(t=>{if(!t.isSimpleText())return;const n=t.getPreviousSibling();let o,l=t.getTextContent(),f=t;if(i(n)){const r=n.getTextContent(),i=e(r+l);if(s(n)){if(null===i||0!==(t=>t.getLatest().__mode)(n))return void u(n);{const e=i.end-r.length;if(e>0){const i=r+l.slice(0,e);if(n.select(),n.setTextContent(i),e===l.length)t.remove();else{const n=l.slice(e);t.setTextContent(n)}return}}}else if(null===i||i.start<r.length)return}for(;;){o=e(l);let t,c=null===o?"":l.slice(o.end);if(l=c,""===c){const t=f.getNextSibling();if(i(t)){c=f.getTextContent()+t.getTextContent();const n=e(c);if(null===n)return void(s(t)?u(t):t.markDirty());if(0!==n.start)return}}else{const t=e(c);if(null!==t&&0===t.start)return}if(null===o)return;if(0===o.start&&i(n)&&n.isTextEntity())continue;0===o.start?[t,f]=f.splitText(o.end):[,t,f]=f.splitText(o.start,o.end);const g=r(t);if(g.setFormat(t.getFormat()),t.replace(g),null==f)return}})),t.registerNodeTransform(n,(t=>{const n=t.getTextContent(),r=e(n);if(null===r||0!==r.start)return void u(t);if(n.length>r.end)return void t.splitText(r.end);const o=t.getPreviousSibling();i(o)&&o.isTextEntity()&&(u(o),u(t));const l=t.getNextSibling();i(l)&&l.isTextEntity()&&(u(l),s(t)&&u(t))}))]}export{c as $canShowPlaceholder,g as $canShowPlaceholderCurry,x as $findTextIntersectionFromCharacters,u as $isRootTextContentEmpty,f as $isRootTextContentEmptyCurry,s as $rootTextContent,a as registerLexicalTextEntity};
8
+
9
+ import{$getRoot as t,$isDecoratorNode as e,$isElementNode as n,$isParagraphNode as r,$isTextNode as i,TextNode as o,$createTextNode as l}from"lexical";function s(){return t().getTextContent()}function u(t,e=!0){if(t)return!1;let n=s();return e&&(n=n.trim()),""===n}function f(t,e){return()=>u(t,e)}function c(o){if(!u(o,!1))return!1;const l=t().getChildren(),s=l.length;if(s>1)return!1;for(let t=0;t<s;t++){const o=l[t];if(e(o))return!1;if(n(o)){if(!r(o))return!1;if(0!==o.__indent)return!1;const e=o.getChildren(),n=e.length;for(let r=0;r<n;r++){const n=e[t];if(!i(n))return!1}}}return!0}function g(t){return()=>c(t)}function a(t,e){let r=t.getFirstChild(),o=0;t:for(;null!==r;){if(n(r)){const t=r.getFirstChild();if(null!==t){r=t;continue}}else if(i(r)){const t=r.getTextContentSize();if(o+t>e)return{node:r,offset:e-o};o+=t}const t=r.getNextSibling();if(null!==t){r=t;continue}let l=r.getParent();for(;null!==l;){const t=l.getNextSibling();if(null!==t){r=t;continue t}l=l.getParent()}break}return null}function d(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}var x=d((function(t){const e=new URLSearchParams;e.append("code",t);for(let t=1;t<arguments.length;t++)e.append("v",arguments[t]);throw Error(`Minified Lexical error #${t}; visit https://lexical.dev/docs/error?${e} for the full message or use the non-minified dev environment for full errors and additional helpful warnings.`)}));function T(t,e,n,r){const s=t=>t instanceof n,u=t=>{const e=l(t.getTextContent());e.setFormat(t.getFormat()),t.replace(e)};return[t.registerNodeTransform(o,(t=>{if(!t.isSimpleText())return;let n,o=t.getPreviousSibling(),l=t.getTextContent(),f=t;if(i(o)){const n=o.getTextContent(),r=e(n+l);if(s(o)){if(null===r||0!==(t=>t.getLatest().__mode)(o))return void u(o);{const e=r.end-n.length;if(e>0){const r=n+l.slice(0,e);if(o.select(),o.setTextContent(r),e===l.length)t.remove();else{const n=l.slice(e);t.setTextContent(n)}return}}}else if(null===r||r.start<n.length)return}let c=0;for(;;){n=e(l);let t,g=null===n?"":l.slice(n.end);if(l=g,""===g){const t=f.getNextSibling();if(i(t)){g=f.getTextContent()+t.getTextContent();const n=e(g);if(null===n)return void(s(t)?u(t):t.markDirty());if(0!==n.start)return}}if(null===n)return;if(0===n.start&&i(o)&&o.isTextEntity()){c+=n.end;continue}0===n.start?[t,f]=f.splitText(n.end):[,t,f]=f.splitText(n.start+c,n.end+c),void 0===t&&x(165,"nodeToReplace");const a=r(t);if(a.setFormat(t.getFormat()),t.replace(a),null==f)return;c=0,o=a}})),t.registerNodeTransform(n,(t=>{const n=t.getTextContent(),r=e(n);if(null===r||0!==r.start)return void u(t);if(n.length>r.end)return void t.splitText(r.end);const o=t.getPreviousSibling();i(o)&&o.isTextEntity()&&(u(o),u(t));const l=t.getNextSibling();i(l)&&l.isTextEntity()&&(u(l),s(t)&&u(t))}))]}export{c as $canShowPlaceholder,g as $canShowPlaceholderCurry,a as $findTextIntersectionFromCharacters,u as $isRootTextContentEmpty,f as $isRootTextContentEmptyCurry,s as $rootTextContent,T as registerLexicalTextEntity};
package/package.json CHANGED
@@ -9,7 +9,7 @@
9
9
  "text"
10
10
  ],
11
11
  "license": "MIT",
12
- "version": "0.14.4",
12
+ "version": "0.15.0",
13
13
  "main": "LexicalText.js",
14
14
  "types": "index.d.ts",
15
15
  "repository": {
@@ -37,6 +37,6 @@
37
37
  }
38
38
  },
39
39
  "dependencies": {
40
- "lexical": "0.14.4"
40
+ "lexical": "0.15.0"
41
41
  }
42
42
  }