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.
- package/dist/hooks/android-input-manager/android-input-manager.d.ts.map +1 -1
- package/dist/index.es.js +90 -61
- package/dist/index.es.js.map +1 -1
- package/dist/index.js +103 -68
- package/dist/index.js.map +1 -1
- package/dist/slate-react.js +103 -68
- package/dist/slate-react.min.js +1 -1
- package/dist/utils/diff-text.d.ts +1 -0
- package/dist/utils/diff-text.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -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;
|
|
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 =
|
|
2504
|
+
var scheduleSelectionChange = hasPendingDiffs();
|
|
2508
2505
|
var diff;
|
|
2509
2506
|
|
|
2510
|
-
while (diff = (
|
|
2511
|
-
var
|
|
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, (
|
|
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
|
|
2627
|
-
var pendingDiffs = (
|
|
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
|
-
|
|
2734
|
-
var next = Editor.next(editor, {
|
|
2735
|
-
at: start.path,
|
|
2736
|
-
match: Text$1.isText
|
|
2737
|
-
});
|
|
2731
|
+
var canStoreDiff = true;
|
|
2738
2732
|
|
|
2739
|
-
|
|
2740
|
-
|
|
2741
|
-
|
|
2742
|
-
|
|
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
|
-
|
|
2749
|
-
|
|
2750
|
-
|
|
2751
|
-
|
|
2752
|
-
|
|
2753
|
-
|
|
2754
|
-
|
|
2755
|
-
|
|
2756
|
-
|
|
2757
|
-
|
|
2758
|
-
|
|
2759
|
-
|
|
2760
|
-
|
|
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
|
-
|
|
2765
|
-
|
|
2766
|
-
|
|
2767
|
-
|
|
2768
|
-
|
|
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
|
|
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
|
-
|
|
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
|
|
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 (
|
|
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
|
-
|
|
2959
|
-
|
|
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 =
|
|
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 +
|
|
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
|
-
|
|
2980
|
-
|
|
3006
|
+
if (canStoreDiff) {
|
|
3007
|
+
storeDiff(_start2.path, _diff);
|
|
3008
|
+
return;
|
|
3009
|
+
}
|
|
2981
3010
|
}
|
|
2982
3011
|
|
|
2983
|
-
return scheduleAction(() => Editor.insertText(editor,
|
|
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
|
|
3024
|
+
var _EDITOR_TO_PENDING_DI4;
|
|
2996
3025
|
|
|
2997
|
-
return !!((
|
|
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 = () => {
|