slate-react 0.91.8-202322171743 → 0.91.8

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.
@@ -1 +1 @@
1
- {"version":3,"file":"android-input-manager.d.ts","sourceRoot":"","sources":["../../packages/slate-react/src/hooks/android-input-manager/android-input-manager.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAA;AACtC,OAAO,EAAsB,KAAK,EAAE,KAAK,EAAoB,MAAM,OAAO,CAAA;AAC1E,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAA;AAuBvD,oBAAY,MAAM,GAAG;IAAE,EAAE,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC;IAAC,GAAG,EAAE,MAAM,IAAI,CAAA;CAAE,CAAA;AAY5D,oBAAY,gCAAgC,GAAG;IAC7C,MAAM,EAAE,WAAW,CAAA;IAEnB,4BAA4B,EAAE,aAAa,CAAC,MAAM,IAAI,CAAC,CAAA;IACvD,oBAAoB,EAAE,aAAa,CAAC,MAAM,IAAI,CAAC,CAAA;CAChD,CAAA;AAED,oBAAY,mBAAmB,GAAG;IAChC,KAAK,EAAE,MAAM,IAAI,CAAA;IACjB,aAAa,EAAE,MAAM,IAAI,CAAA;IAEzB,eAAe,EAAE,MAAM,OAAO,CAAA;IAC9B,gBAAgB,EAAE,MAAM,OAAO,CAAA;IAC/B,iBAAiB,EAAE,MAAM,OAAO,CAAA;IAChC,UAAU,EAAE,MAAM,OAAO,GAAG,QAAQ,CAAA;IAEpC,gBAAgB,EAAE,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,KAAK,IAAI,CAAA;IAC/C,oBAAoB,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,gBAAgB,CAAC,cAAc,CAAC,KAAK,IAAI,CAAA;IAC7E,sBAAsB,EAAE,CACtB,KAAK,EAAE,KAAK,CAAC,gBAAgB,CAAC,cAAc,CAAC,KAC1C,IAAI,CAAA;IACT,oBAAoB,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,CAAA;IACjD,aAAa,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,aAAa,CAAC,cAAc,CAAC,KAAK,IAAI,CAAA;IAEnE,kBAAkB,EAAE,CAAC,SAAS,EAAE,cAAc,EAAE,KAAK,IAAI,CAAA;IACzD,WAAW,EAAE,MAAM,IAAI,CAAA;CACxB,CAAA;AAED,wBAAgB,yBAAyB,CAAC,EACxC,MAAM,EACN,4BAA4B,EAC5B,oBAAoB,GACrB,EAAE,gCAAgC,GAAG,mBAAmB,CAmpBxD"}
1
+ {"version":3,"file":"android-input-manager.d.ts","sourceRoot":"","sources":["../../packages/slate-react/src/hooks/android-input-manager/android-input-manager.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAA;AACtC,OAAO,EAAsB,KAAK,EAAE,KAAK,EAAoB,MAAM,OAAO,CAAA;AAC1E,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAA;AAwBvD,oBAAY,MAAM,GAAG;IAAE,EAAE,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC;IAAC,GAAG,EAAE,MAAM,IAAI,CAAA;CAAE,CAAA;AAY5D,oBAAY,gCAAgC,GAAG;IAC7C,MAAM,EAAE,WAAW,CAAA;IAEnB,4BAA4B,EAAE,aAAa,CAAC,MAAM,IAAI,CAAC,CAAA;IACvD,oBAAoB,EAAE,aAAa,CAAC,MAAM,IAAI,CAAC,CAAA;CAChD,CAAA;AAED,oBAAY,mBAAmB,GAAG;IAChC,KAAK,EAAE,MAAM,IAAI,CAAA;IACjB,aAAa,EAAE,MAAM,IAAI,CAAA;IAEzB,eAAe,EAAE,MAAM,OAAO,CAAA;IAC9B,gBAAgB,EAAE,MAAM,OAAO,CAAA;IAC/B,iBAAiB,EAAE,MAAM,OAAO,CAAA;IAChC,UAAU,EAAE,MAAM,OAAO,GAAG,QAAQ,CAAA;IAEpC,gBAAgB,EAAE,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,KAAK,IAAI,CAAA;IAC/C,oBAAoB,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,gBAAgB,CAAC,cAAc,CAAC,KAAK,IAAI,CAAA;IAC7E,sBAAsB,EAAE,CACtB,KAAK,EAAE,KAAK,CAAC,gBAAgB,CAAC,cAAc,CAAC,KAC1C,IAAI,CAAA;IACT,oBAAoB,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,CAAA;IACjD,aAAa,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,aAAa,CAAC,cAAc,CAAC,KAAK,IAAI,CAAA;IAEnE,kBAAkB,EAAE,CAAC,SAAS,EAAE,cAAc,EAAE,KAAK,IAAI,CAAA;IACzD,WAAW,EAAE,MAAM,IAAI,CAAA;CACxB,CAAA;AAED,wBAAgB,yBAAyB,CAAC,EACxC,MAAM,EACN,4BAA4B,EAC5B,oBAAoB,GACrB,EAAE,gCAAgC,GAAG,mBAAmB,CA2rBxD"}
package/dist/index.es.js CHANGED
@@ -2004,7 +2004,6 @@ function verifyDiffState(editor, textDiff) {
2004
2004
  var nextNode = Node.get(editor, nextPath);
2005
2005
  return Text$1.isText(nextNode) && nextNode.text.startsWith(diff.text);
2006
2006
  }
2007
-
2008
2007
  function applyStringDiff(text) {
2009
2008
  for (var _len = arguments.length, diffs = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
2010
2009
  diffs[_key - 1] = arguments[_key];
@@ -2473,8 +2472,6 @@ function createAndroidInputManager(_ref) {
2473
2472
  };
2474
2473
 
2475
2474
  var flush = () => {
2476
- var _EDITOR_TO_PENDING_DI;
2477
-
2478
2475
  if (flushTimeoutId) {
2479
2476
  clearTimeout(flushTimeoutId);
2480
2477
  flushTimeoutId = null;
@@ -2504,11 +2501,11 @@ function createAndroidInputManager(_ref) {
2504
2501
  });
2505
2502
  EDITOR_TO_USER_MARKS.set(editor, editor.marks);
2506
2503
  debug('flush', EDITOR_TO_PENDING_ACTION.get(editor), EDITOR_TO_PENDING_DIFFS.get(editor));
2507
- var scheduleSelectionChange = !!((_EDITOR_TO_PENDING_DI = EDITOR_TO_PENDING_DIFFS.get(editor)) !== null && _EDITOR_TO_PENDING_DI !== void 0 && _EDITOR_TO_PENDING_DI.length);
2504
+ var scheduleSelectionChange = hasPendingDiffs();
2508
2505
  var diff;
2509
2506
 
2510
- while (diff = (_EDITOR_TO_PENDING_DI2 = EDITOR_TO_PENDING_DIFFS.get(editor)) === null || _EDITOR_TO_PENDING_DI2 === void 0 ? void 0 : _EDITOR_TO_PENDING_DI2[0]) {
2511
- var _EDITOR_TO_PENDING_DI2, _EDITOR_TO_PENDING_DI3;
2507
+ while (diff = (_EDITOR_TO_PENDING_DI = EDITOR_TO_PENDING_DIFFS.get(editor)) === null || _EDITOR_TO_PENDING_DI === void 0 ? void 0 : _EDITOR_TO_PENDING_DI[0]) {
2508
+ var _EDITOR_TO_PENDING_DI, _EDITOR_TO_PENDING_DI2;
2512
2509
 
2513
2510
  var pendingMarks = EDITOR_TO_PENDING_INSERTION_MARKS.get(editor);
2514
2511
 
@@ -2535,7 +2532,7 @@ function createAndroidInputManager(_ref) {
2535
2532
  // pending ranges.
2536
2533
 
2537
2534
 
2538
- EDITOR_TO_PENDING_DIFFS.set(editor, (_EDITOR_TO_PENDING_DI3 = EDITOR_TO_PENDING_DIFFS.get(editor)) === null || _EDITOR_TO_PENDING_DI3 === void 0 ? void 0 : _EDITOR_TO_PENDING_DI3.filter(_ref2 => {
2535
+ EDITOR_TO_PENDING_DIFFS.set(editor, (_EDITOR_TO_PENDING_DI2 = EDITOR_TO_PENDING_DIFFS.get(editor)) === null || _EDITOR_TO_PENDING_DI2 === void 0 ? void 0 : _EDITOR_TO_PENDING_DI2.filter(_ref2 => {
2539
2536
  var {
2540
2537
  id
2541
2538
  } = _ref2;
@@ -2623,8 +2620,8 @@ function createAndroidInputManager(_ref) {
2623
2620
  };
2624
2621
 
2625
2622
  var storeDiff = (path, diff) => {
2626
- var _EDITOR_TO_PENDING_DI4;
2627
- var pendingDiffs = (_EDITOR_TO_PENDING_DI4 = EDITOR_TO_PENDING_DIFFS.get(editor)) !== null && _EDITOR_TO_PENDING_DI4 !== void 0 ? _EDITOR_TO_PENDING_DI4 : [];
2623
+ var _EDITOR_TO_PENDING_DI3;
2624
+ var pendingDiffs = (_EDITOR_TO_PENDING_DI3 = EDITOR_TO_PENDING_DIFFS.get(editor)) !== null && _EDITOR_TO_PENDING_DI3 !== void 0 ? _EDITOR_TO_PENDING_DI3 : [];
2628
2625
  EDITOR_TO_PENDING_DIFFS.set(editor, pendingDiffs);
2629
2626
  var target = Node.leaf(editor, path);
2630
2627
  var idx = pendingDiffs.findIndex(change => Path.equals(change.path, path));
@@ -2724,49 +2721,77 @@ function createAndroidInputManager(_ref) {
2724
2721
 
2725
2722
  if (!targetRange) {
2726
2723
  return;
2727
- }
2724
+ } // By default, the input manager tries to store text diffs so that we can
2725
+ // defer flushing them at a later point in time. We don't want to flush
2726
+ // for every input event as this can be expensive. However, there are some
2727
+ // scenarios where we cannot safely store the text diff and must instead
2728
+ // schedule an action to let Slate normalize the editor state.
2728
2729
 
2729
- if (Range.isExpanded(targetRange) && type.startsWith('delete')) {
2730
- var [start, end] = Range.edges(targetRange);
2731
- var leaf = Node.leaf(editor, start.path);
2732
2730
 
2733
- if (leaf.text.length === start.offset && end.offset === 0) {
2734
- var next = Editor.next(editor, {
2735
- at: start.path,
2736
- match: Text$1.isText
2737
- });
2731
+ var canStoreDiff = true;
2738
2732
 
2739
- if (next && Path.equals(next[1], end.path)) {
2740
- targetRange = {
2741
- anchor: end,
2742
- focus: end
2743
- };
2733
+ if (type.startsWith('delete')) {
2734
+ if (Range.isExpanded(targetRange)) {
2735
+ var [_start, _end] = Range.edges(targetRange);
2736
+
2737
+ var _leaf = Node.leaf(editor, _start.path);
2738
+
2739
+ if (_leaf.text.length === _start.offset && _end.offset === 0) {
2740
+ var next = Editor.next(editor, {
2741
+ at: _start.path,
2742
+ match: Text$1.isText
2743
+ });
2744
+
2745
+ if (next && Path.equals(next[1], _end.path)) {
2746
+ targetRange = {
2747
+ anchor: _end,
2748
+ focus: _end
2749
+ };
2750
+ }
2744
2751
  }
2745
2752
  }
2746
- }
2747
2753
 
2748
- if (Range.isExpanded(targetRange) && type.startsWith('delete')) {
2749
- if (Path.equals(targetRange.anchor.path, targetRange.focus.path)) {
2750
- var [_start, _end] = Range.edges(targetRange);
2751
- var point = {
2752
- path: targetRange.anchor.path,
2753
- offset: _start.offset
2754
- };
2755
- var range = Editor.range(editor, point, point);
2756
- handleUserSelect(range);
2757
- return storeDiff(targetRange.anchor.path, {
2758
- text: '',
2759
- end: _end.offset,
2760
- start: _start.offset
2761
- });
2754
+ var direction = type.endsWith('Backward') ? 'backward' : 'forward';
2755
+ var [start, end] = Range.edges(targetRange);
2756
+ var [leaf, path] = Editor.leaf(editor, start.path);
2757
+ var diff = {
2758
+ text: '',
2759
+ start: start.offset,
2760
+ end: end.offset
2761
+ };
2762
+ var pendingDiffs = EDITOR_TO_PENDING_DIFFS.get(editor);
2763
+ var relevantPendingDiffs = pendingDiffs === null || pendingDiffs === void 0 ? void 0 : pendingDiffs.find(change => Path.equals(change.path, path));
2764
+ var diffs = relevantPendingDiffs ? [relevantPendingDiffs.diff, diff] : [diff];
2765
+ var text = applyStringDiff(leaf.text, ...diffs);
2766
+
2767
+ if (text.length === 0) {
2768
+ // Text leaf will be removed, so we need to schedule an
2769
+ // action to remove it so that Slate can normalize instead
2770
+ // of storing as a diff
2771
+ canStoreDiff = false;
2762
2772
  }
2763
2773
 
2764
- var direction = type.endsWith('Backward') ? 'backward' : 'forward';
2765
- return scheduleAction(() => Editor.deleteFragment(editor, {
2766
- direction
2767
- }), {
2768
- at: targetRange
2769
- });
2774
+ if (Range.isExpanded(targetRange)) {
2775
+ if (canStoreDiff && Path.equals(targetRange.anchor.path, targetRange.focus.path)) {
2776
+ var point = {
2777
+ path: targetRange.anchor.path,
2778
+ offset: start.offset
2779
+ };
2780
+ var range = Editor.range(editor, point, point);
2781
+ handleUserSelect(range);
2782
+ return storeDiff(targetRange.anchor.path, {
2783
+ text: '',
2784
+ end: end.offset,
2785
+ start: start.offset
2786
+ });
2787
+ }
2788
+
2789
+ return scheduleAction(() => Editor.deleteFragment(editor, {
2790
+ direction
2791
+ }), {
2792
+ at: targetRange
2793
+ });
2794
+ }
2770
2795
  }
2771
2796
 
2772
2797
  switch (type) {
@@ -2786,7 +2811,7 @@ function createAndroidInputManager(_ref) {
2786
2811
  anchor
2787
2812
  } = targetRange;
2788
2813
 
2789
- if (Range.isCollapsed(targetRange)) {
2814
+ if (canStoreDiff && Range.isCollapsed(targetRange)) {
2790
2815
  var targetNode = Node.leaf(editor, anchor.path);
2791
2816
 
2792
2817
  if (anchor.offset < targetNode.text.length) {
@@ -2815,7 +2840,7 @@ function createAndroidInputManager(_ref) {
2815
2840
 
2816
2841
  var nativeCollapsed = isDOMSelection(nativeTargetRange) ? nativeTargetRange.isCollapsed : !!((_nativeTargetRange = nativeTargetRange) !== null && _nativeTargetRange !== void 0 && _nativeTargetRange.collapsed);
2817
2842
 
2818
- if (nativeCollapsed && Range.isCollapsed(targetRange) && _anchor.offset > 0) {
2843
+ if (canStoreDiff && nativeCollapsed && Range.isCollapsed(targetRange) && _anchor.offset > 0) {
2819
2844
  return storeDiff(_anchor.path, {
2820
2845
  text: '',
2821
2846
  start: _anchor.offset - 1,
@@ -2931,19 +2956,20 @@ function createAndroidInputManager(_ref) {
2931
2956
  });
2932
2957
  }
2933
2958
 
2934
- var text = data !== null && data !== void 0 ? data : ''; // COMPAT: If we are writing inside a placeholder, the ime inserts the text inside
2959
+ var _text = data !== null && data !== void 0 ? data : ''; // COMPAT: If we are writing inside a placeholder, the ime inserts the text inside
2935
2960
  // the placeholder itself and thus includes the zero-width space inside edit events.
2936
2961
 
2962
+
2937
2963
  if (EDITOR_TO_PENDING_INSERTION_MARKS.get(editor)) {
2938
- text = text.replace('\uFEFF', '');
2964
+ _text = _text.replace('\uFEFF', '');
2939
2965
  }
2940
2966
 
2941
2967
  if (Path.equals(targetRange.anchor.path, targetRange.focus.path)) {
2942
2968
  var [_start2, _end2] = Range.edges(targetRange);
2943
- var diff = {
2969
+ var _diff = {
2944
2970
  start: _start2.offset,
2945
2971
  end: _end2.offset,
2946
- text
2972
+ text: _text
2947
2973
  }; // COMPAT: Swiftkey has a weird bug where the target range of the 2nd word
2948
2974
  // inserted after a mark placeholder is inserted with an anchor offset off by 1.
2949
2975
  // So writing 'some text' will result in 'some ttext'. Luckily all 'normal' insert
@@ -2951,12 +2977,13 @@ function createAndroidInputManager(_ref) {
2951
2977
  // isn't, so we can adjust the target range start offset if we are confident this is the
2952
2978
  // swiftkey insert causing the issue.
2953
2979
 
2954
- if (text && insertPositionHint && type === 'insertCompositionText') {
2980
+ if (_text && insertPositionHint && type === 'insertCompositionText') {
2955
2981
  var hintPosition = insertPositionHint.start + insertPositionHint.text.search(/\S|$/);
2956
- var diffPosition = diff.start + diff.text.search(/\S|$/);
2957
2982
 
2958
- if (diffPosition === hintPosition + 1 && diff.end === insertPositionHint.start + insertPositionHint.text.length) {
2959
- diff.start -= 1;
2983
+ var diffPosition = _diff.start + _diff.text.search(/\S|$/);
2984
+
2985
+ if (diffPosition === hintPosition + 1 && _diff.end === insertPositionHint.start + insertPositionHint.text.length) {
2986
+ _diff.start -= 1;
2960
2987
  insertPositionHint = null;
2961
2988
  scheduleFlush();
2962
2989
  } else {
@@ -2964,10 +2991,10 @@ function createAndroidInputManager(_ref) {
2964
2991
  }
2965
2992
  } else if (type === 'insertText') {
2966
2993
  if (insertPositionHint === null) {
2967
- insertPositionHint = diff;
2994
+ insertPositionHint = _diff;
2968
2995
  } else if (insertPositionHint && Range.isCollapsed(targetRange) && insertPositionHint.end + insertPositionHint.text.length === _start2.offset) {
2969
2996
  insertPositionHint = _objectSpread$3(_objectSpread$3({}, insertPositionHint), {}, {
2970
- text: insertPositionHint.text + text
2997
+ text: insertPositionHint.text + _text
2971
2998
  });
2972
2999
  } else {
2973
3000
  insertPositionHint = false;
@@ -2976,11 +3003,13 @@ function createAndroidInputManager(_ref) {
2976
3003
  insertPositionHint = false;
2977
3004
  }
2978
3005
 
2979
- storeDiff(_start2.path, diff);
2980
- return;
3006
+ if (canStoreDiff) {
3007
+ storeDiff(_start2.path, _diff);
3008
+ return;
3009
+ }
2981
3010
  }
2982
3011
 
2983
- return scheduleAction(() => Editor.insertText(editor, text), {
3012
+ return scheduleAction(() => Editor.insertText(editor, _text), {
2984
3013
  at: targetRange
2985
3014
  });
2986
3015
  }
@@ -2992,9 +3021,9 @@ function createAndroidInputManager(_ref) {
2992
3021
  };
2993
3022
 
2994
3023
  var hasPendingDiffs = () => {
2995
- var _EDITOR_TO_PENDING_DI5;
3024
+ var _EDITOR_TO_PENDING_DI4;
2996
3025
 
2997
- return !!((_EDITOR_TO_PENDING_DI5 = EDITOR_TO_PENDING_DIFFS.get(editor)) !== null && _EDITOR_TO_PENDING_DI5 !== void 0 && _EDITOR_TO_PENDING_DI5.length);
3026
+ return !!((_EDITOR_TO_PENDING_DI4 = EDITOR_TO_PENDING_DIFFS.get(editor)) !== null && _EDITOR_TO_PENDING_DI4 !== void 0 && _EDITOR_TO_PENDING_DI4.length);
2998
3027
  };
2999
3028
 
3000
3029
  var hasPendingChanges = () => {