slate-react 0.82.0 → 0.82.1-2022718122533
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/components/editable.d.ts.map +1 -1
- package/dist/hooks/android-input-manager/android-input-manager.d.ts +3 -2
- package/dist/hooks/android-input-manager/android-input-manager.d.ts.map +1 -1
- package/dist/index.es.js +185 -89
- package/dist/index.es.js.map +1 -1
- package/dist/index.js +175 -86
- package/dist/index.js.map +1 -1
- package/dist/plugin/with-react.d.ts.map +1 -1
- package/dist/slate-react.js +175 -86
- package/dist/slate-react.min.js +1 -1
- package/package.json +3 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"editable.d.ts","sourceRoot":"","sources":["../packages/slate-react/src/components/editable.tsx"],"names":[],"mappings":"AAGA,OAAO,KAON,MAAM,OAAO,CAAA;AAEd,OAAO,EAEL,OAAO,EAEP,SAAS,EAET,KAAK,EACL,IAAI,EAEL,MAAM,OAAO,CAAA;AACd,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAA;AAOpD,OAAO,EAEL,OAAO,EACP,QAAQ,EAMT,MAAM,cAAc,CAAA;AAwCrB;;GAEG;AAEH,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,GAAG,CAAA;IACb,OAAO,EAAE,OAAO,CAAA;IAChB,UAAU,EAAE;QACV,iBAAiB,EAAE,SAAS,CAAA;QAC5B,mBAAmB,CAAC,EAAE,IAAI,CAAA;QAC1B,iBAAiB,CAAC,EAAE,IAAI,CAAA;QACxB,GAAG,CAAC,EAAE,KAAK,CAAA;QACX,GAAG,EAAE,GAAG,CAAA;KACT,CAAA;CACF;AAED;;GAEG;AAEH,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,GAAG,CAAA;IACb,IAAI,EAAE,IAAI,CAAA;IACV,IAAI,EAAE,IAAI,CAAA;IACV,UAAU,EAAE;QACV,iBAAiB,EAAE,IAAI,CAAA;KACxB,CAAA;CACF;AAED;;GAEG;AAEH,oBAAY,aAAa,GAAG;IAC1B,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,KAAK,EAAE,CAAA;IACxC,gBAAgB,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,CAAA;IAC9C,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAA;IAC3B,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,kBAAkB,KAAK,GAAG,CAAC,OAAO,CAAA;IAC1D,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,eAAe,KAAK,GAAG,CAAC,OAAO,CAAA;IACpD,iBAAiB,CAAC,EAAE,CAAC,KAAK,EAAE,sBAAsB,KAAK,GAAG,CAAC,OAAO,CAAA;IAClE,uBAAuB,CAAC,EAAE,CAAC,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,KAAK,IAAI,CAAA;IAC3E,EAAE,CAAC,EAAE,KAAK,CAAC,WAAW,CAAA;CACvB,GAAG,KAAK,CAAC,sBAAsB,CAAC,cAAc,CAAC,CAAA;AAEhD;;GAEG;AAEH,eAAO,MAAM,QAAQ,UAAW,aAAa,
|
|
1
|
+
{"version":3,"file":"editable.d.ts","sourceRoot":"","sources":["../packages/slate-react/src/components/editable.tsx"],"names":[],"mappings":"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"}
|
|
@@ -3,7 +3,7 @@ import { DebouncedFunc } from 'lodash';
|
|
|
3
3
|
import { Point, Range } from 'slate';
|
|
4
4
|
import { ReactEditor } from '../../plugin/react-editor';
|
|
5
5
|
export declare type Action = {
|
|
6
|
-
at
|
|
6
|
+
at?: Point | Range;
|
|
7
7
|
run: () => void;
|
|
8
8
|
};
|
|
9
9
|
export declare type CreateAndroidInputManagerOptions = {
|
|
@@ -16,14 +16,15 @@ export declare type AndroidInputManager = {
|
|
|
16
16
|
scheduleFlush: () => void;
|
|
17
17
|
hasPendingDiffs: () => boolean;
|
|
18
18
|
hasPendingAction: () => boolean;
|
|
19
|
+
hasPendingChanges: () => boolean;
|
|
19
20
|
isFlushing: () => boolean | 'action';
|
|
20
21
|
handleUserSelect: (range: Range | null) => void;
|
|
21
22
|
handleCompositionEnd: (event: React.CompositionEvent<HTMLDivElement>) => void;
|
|
22
23
|
handleCompositionStart: (event: React.CompositionEvent<HTMLDivElement>) => void;
|
|
23
24
|
handleDOMBeforeInput: (event: InputEvent) => void;
|
|
25
|
+
handleKeyDown: (event: React.KeyboardEvent<HTMLDivElement>) => void;
|
|
24
26
|
handleDomMutations: (mutations: MutationRecord[]) => void;
|
|
25
27
|
handleInput: () => void;
|
|
26
28
|
};
|
|
27
|
-
export declare function forceSwiftKeyUpdate(editor: ReactEditor): void;
|
|
28
29
|
export declare function createAndroidInputManager({ editor, scheduleOnDOMSelectionChange, onDOMSelectionChange, }: CreateAndroidInputManagerOptions): AndroidInputManager;
|
|
29
30
|
//# sourceMappingURL=android-input-manager.d.ts.map
|
|
@@ -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,EAAE,KAAK,GAAG,KAAK,CAAC;IAAC,GAAG,EAAE,MAAM,IAAI,CAAA;CAAE,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;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,CA8oBxD"}
|
package/dist/index.es.js
CHANGED
|
@@ -2264,28 +2264,6 @@ var FLUSH_DELAY = 200; // Replace with `const debug = console.log` to debug
|
|
|
2264
2264
|
|
|
2265
2265
|
var debug = function debug() {};
|
|
2266
2266
|
|
|
2267
|
-
function forceSwiftKeyUpdate(editor) {
|
|
2268
|
-
var _div$parentElement;
|
|
2269
|
-
|
|
2270
|
-
var {
|
|
2271
|
-
document
|
|
2272
|
-
} = ReactEditor.getWindow(editor);
|
|
2273
|
-
var div = document.createElement('div');
|
|
2274
|
-
div.setAttribute('contenteditable', 'true');
|
|
2275
|
-
div.setAttribute('display', 'none');
|
|
2276
|
-
div.setAttribute('position', 'absolute');
|
|
2277
|
-
div.setAttribute('top', '0');
|
|
2278
|
-
div.setAttribute('left', '0');
|
|
2279
|
-
div.textContent = ' ';
|
|
2280
|
-
document.body.appendChild(div);
|
|
2281
|
-
var range = document.createRange();
|
|
2282
|
-
range.selectNodeContents(div);
|
|
2283
|
-
var selection = window.getSelection();
|
|
2284
|
-
selection === null || selection === void 0 ? void 0 : selection.removeAllRanges();
|
|
2285
|
-
selection === null || selection === void 0 ? void 0 : selection.addRange(range);
|
|
2286
|
-
(_div$parentElement = div.parentElement) === null || _div$parentElement === void 0 ? void 0 : _div$parentElement.removeChild(div);
|
|
2287
|
-
ReactEditor.focus(editor);
|
|
2288
|
-
}
|
|
2289
2267
|
function createAndroidInputManager(_ref) {
|
|
2290
2268
|
var {
|
|
2291
2269
|
editor,
|
|
@@ -2297,7 +2275,7 @@ function createAndroidInputManager(_ref) {
|
|
|
2297
2275
|
var flushTimeoutId = null;
|
|
2298
2276
|
var actionTimeoutId = null;
|
|
2299
2277
|
var idCounter = 0;
|
|
2300
|
-
var
|
|
2278
|
+
var insertPositionHint = false;
|
|
2301
2279
|
|
|
2302
2280
|
var applyPendingSelection = () => {
|
|
2303
2281
|
var pendingSelection = EDITOR_TO_PENDING_SELECTION.get(editor);
|
|
@@ -2323,16 +2301,18 @@ function createAndroidInputManager(_ref) {
|
|
|
2323
2301
|
return;
|
|
2324
2302
|
}
|
|
2325
2303
|
|
|
2326
|
-
|
|
2304
|
+
if (action.at) {
|
|
2305
|
+
var target = Point.isPoint(action.at) ? normalizePoint(editor, action.at) : normalizeRange(editor, action.at);
|
|
2327
2306
|
|
|
2328
|
-
|
|
2329
|
-
|
|
2330
|
-
|
|
2307
|
+
if (!target) {
|
|
2308
|
+
return;
|
|
2309
|
+
}
|
|
2331
2310
|
|
|
2332
|
-
|
|
2311
|
+
var _targetRange = Editor.range(editor, target);
|
|
2333
2312
|
|
|
2334
|
-
|
|
2335
|
-
|
|
2313
|
+
if (!editor.selection || !Range.equals(editor.selection, _targetRange)) {
|
|
2314
|
+
Transforms.select(editor, target);
|
|
2315
|
+
}
|
|
2336
2316
|
}
|
|
2337
2317
|
|
|
2338
2318
|
action.run();
|
|
@@ -2383,8 +2363,8 @@ function createAndroidInputManager(_ref) {
|
|
|
2383
2363
|
editor.marks = pendingMarks;
|
|
2384
2364
|
}
|
|
2385
2365
|
|
|
2386
|
-
if (pendingMarks) {
|
|
2387
|
-
|
|
2366
|
+
if (pendingMarks && insertPositionHint === false) {
|
|
2367
|
+
insertPositionHint = null;
|
|
2388
2368
|
}
|
|
2389
2369
|
|
|
2390
2370
|
var range = targetRange(diff);
|
|
@@ -2424,7 +2404,7 @@ function createAndroidInputManager(_ref) {
|
|
|
2424
2404
|
|
|
2425
2405
|
var selection = selectionRef === null || selectionRef === void 0 ? void 0 : selectionRef.unref();
|
|
2426
2406
|
|
|
2427
|
-
if (selection && (!editor.selection || !Range.equals(selection, editor.selection))) {
|
|
2407
|
+
if (selection && !EDITOR_TO_PENDING_SELECTION.get(editor) && (!editor.selection || !Range.equals(selection, editor.selection))) {
|
|
2428
2408
|
Transforms.select(editor, selection);
|
|
2429
2409
|
}
|
|
2430
2410
|
|
|
@@ -2448,6 +2428,7 @@ function createAndroidInputManager(_ref) {
|
|
|
2448
2428
|
|
|
2449
2429
|
if (userMarks !== undefined) {
|
|
2450
2430
|
editor.marks = userMarks;
|
|
2431
|
+
editor.onChange();
|
|
2451
2432
|
}
|
|
2452
2433
|
};
|
|
2453
2434
|
|
|
@@ -2471,19 +2452,20 @@ function createAndroidInputManager(_ref) {
|
|
|
2471
2452
|
}
|
|
2472
2453
|
};
|
|
2473
2454
|
|
|
2474
|
-
var updatePlaceholderVisibility = ()
|
|
2455
|
+
var updatePlaceholderVisibility = function updatePlaceholderVisibility() {
|
|
2456
|
+
var forceHide = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
|
|
2475
2457
|
var placeholderElement = EDITOR_TO_PLACEHOLDER_ELEMENT.get(editor);
|
|
2476
2458
|
|
|
2477
2459
|
if (!placeholderElement) {
|
|
2478
2460
|
return;
|
|
2479
2461
|
}
|
|
2480
2462
|
|
|
2481
|
-
if (hasPendingDiffs()) {
|
|
2482
|
-
placeholderElement.style.
|
|
2463
|
+
if (hasPendingDiffs() || forceHide) {
|
|
2464
|
+
placeholderElement.style.display = 'none';
|
|
2483
2465
|
return;
|
|
2484
2466
|
}
|
|
2485
2467
|
|
|
2486
|
-
placeholderElement.style.removeProperty('
|
|
2468
|
+
placeholderElement.style.removeProperty('display');
|
|
2487
2469
|
};
|
|
2488
2470
|
|
|
2489
2471
|
var storeDiff = (path, diff) => {
|
|
@@ -2521,7 +2503,11 @@ function createAndroidInputManager(_ref) {
|
|
|
2521
2503
|
});
|
|
2522
2504
|
};
|
|
2523
2505
|
|
|
2524
|
-
var scheduleAction = (
|
|
2506
|
+
var scheduleAction = function scheduleAction(run) {
|
|
2507
|
+
var {
|
|
2508
|
+
at
|
|
2509
|
+
} = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
2510
|
+
insertPositionHint = false;
|
|
2525
2511
|
EDITOR_TO_PENDING_SELECTION.delete(editor);
|
|
2526
2512
|
scheduleOnDOMSelectionChange.cancel();
|
|
2527
2513
|
onDOMSelectionChange.cancel();
|
|
@@ -2541,7 +2527,7 @@ function createAndroidInputManager(_ref) {
|
|
|
2541
2527
|
};
|
|
2542
2528
|
|
|
2543
2529
|
var handleDOMBeforeInput = event => {
|
|
2544
|
-
var
|
|
2530
|
+
var _targetRange2;
|
|
2545
2531
|
|
|
2546
2532
|
if (flushTimeoutId) {
|
|
2547
2533
|
clearTimeout(flushTimeoutId);
|
|
@@ -2553,6 +2539,11 @@ function createAndroidInputManager(_ref) {
|
|
|
2553
2539
|
} = event;
|
|
2554
2540
|
var targetRange = null;
|
|
2555
2541
|
var data = event.dataTransfer || event.data || undefined;
|
|
2542
|
+
|
|
2543
|
+
if (insertPositionHint !== false && type !== 'insertText' && type !== 'insertCompositionText') {
|
|
2544
|
+
insertPositionHint = false;
|
|
2545
|
+
}
|
|
2546
|
+
|
|
2556
2547
|
var [nativeTargetRange] = event.getTargetRanges();
|
|
2557
2548
|
|
|
2558
2549
|
if (nativeTargetRange) {
|
|
@@ -2575,7 +2566,7 @@ function createAndroidInputManager(_ref) {
|
|
|
2575
2566
|
});
|
|
2576
2567
|
}
|
|
2577
2568
|
|
|
2578
|
-
targetRange = (
|
|
2569
|
+
targetRange = (_targetRange2 = targetRange) !== null && _targetRange2 !== void 0 ? _targetRange2 : editor.selection;
|
|
2579
2570
|
|
|
2580
2571
|
if (!targetRange) {
|
|
2581
2572
|
return;
|
|
@@ -2611,9 +2602,11 @@ function createAndroidInputManager(_ref) {
|
|
|
2611
2602
|
}
|
|
2612
2603
|
|
|
2613
2604
|
var direction = type.endsWith('Backward') ? 'backward' : 'forward';
|
|
2614
|
-
return scheduleAction(
|
|
2605
|
+
return scheduleAction(() => Editor.deleteFragment(editor, {
|
|
2615
2606
|
direction
|
|
2616
|
-
})
|
|
2607
|
+
}), {
|
|
2608
|
+
at: targetRange
|
|
2609
|
+
});
|
|
2617
2610
|
}
|
|
2618
2611
|
|
|
2619
2612
|
switch (type) {
|
|
@@ -2621,7 +2614,9 @@ function createAndroidInputManager(_ref) {
|
|
|
2621
2614
|
case 'deleteByCut':
|
|
2622
2615
|
case 'deleteByDrag':
|
|
2623
2616
|
{
|
|
2624
|
-
return scheduleAction(
|
|
2617
|
+
return scheduleAction(() => Editor.deleteFragment(editor), {
|
|
2618
|
+
at: targetRange
|
|
2619
|
+
});
|
|
2625
2620
|
}
|
|
2626
2621
|
|
|
2627
2622
|
case 'deleteContent':
|
|
@@ -2643,7 +2638,9 @@ function createAndroidInputManager(_ref) {
|
|
|
2643
2638
|
}
|
|
2644
2639
|
}
|
|
2645
2640
|
|
|
2646
|
-
return scheduleAction(
|
|
2641
|
+
return scheduleAction(() => Editor.deleteForward(editor), {
|
|
2642
|
+
at: targetRange
|
|
2643
|
+
});
|
|
2647
2644
|
}
|
|
2648
2645
|
|
|
2649
2646
|
case 'deleteContentBackward':
|
|
@@ -2666,71 +2663,91 @@ function createAndroidInputManager(_ref) {
|
|
|
2666
2663
|
});
|
|
2667
2664
|
}
|
|
2668
2665
|
|
|
2669
|
-
return scheduleAction(
|
|
2666
|
+
return scheduleAction(() => Editor.deleteBackward(editor), {
|
|
2667
|
+
at: targetRange
|
|
2668
|
+
});
|
|
2670
2669
|
}
|
|
2671
2670
|
|
|
2672
2671
|
case 'deleteEntireSoftLine':
|
|
2673
2672
|
{
|
|
2674
|
-
return scheduleAction(
|
|
2673
|
+
return scheduleAction(() => {
|
|
2675
2674
|
Editor.deleteBackward(editor, {
|
|
2676
2675
|
unit: 'line'
|
|
2677
2676
|
});
|
|
2678
2677
|
Editor.deleteForward(editor, {
|
|
2679
2678
|
unit: 'line'
|
|
2680
2679
|
});
|
|
2680
|
+
}, {
|
|
2681
|
+
at: targetRange
|
|
2681
2682
|
});
|
|
2682
2683
|
}
|
|
2683
2684
|
|
|
2684
2685
|
case 'deleteHardLineBackward':
|
|
2685
2686
|
{
|
|
2686
|
-
return scheduleAction(
|
|
2687
|
+
return scheduleAction(() => Editor.deleteBackward(editor, {
|
|
2687
2688
|
unit: 'block'
|
|
2688
|
-
})
|
|
2689
|
+
}), {
|
|
2690
|
+
at: targetRange
|
|
2691
|
+
});
|
|
2689
2692
|
}
|
|
2690
2693
|
|
|
2691
2694
|
case 'deleteSoftLineBackward':
|
|
2692
2695
|
{
|
|
2693
|
-
return scheduleAction(
|
|
2696
|
+
return scheduleAction(() => Editor.deleteBackward(editor, {
|
|
2694
2697
|
unit: 'line'
|
|
2695
|
-
})
|
|
2698
|
+
}), {
|
|
2699
|
+
at: targetRange
|
|
2700
|
+
});
|
|
2696
2701
|
}
|
|
2697
2702
|
|
|
2698
2703
|
case 'deleteHardLineForward':
|
|
2699
2704
|
{
|
|
2700
|
-
return scheduleAction(
|
|
2705
|
+
return scheduleAction(() => Editor.deleteForward(editor, {
|
|
2701
2706
|
unit: 'block'
|
|
2702
|
-
})
|
|
2707
|
+
}), {
|
|
2708
|
+
at: targetRange
|
|
2709
|
+
});
|
|
2703
2710
|
}
|
|
2704
2711
|
|
|
2705
2712
|
case 'deleteSoftLineForward':
|
|
2706
2713
|
{
|
|
2707
|
-
return scheduleAction(
|
|
2714
|
+
return scheduleAction(() => Editor.deleteForward(editor, {
|
|
2708
2715
|
unit: 'line'
|
|
2709
|
-
})
|
|
2716
|
+
}), {
|
|
2717
|
+
at: targetRange
|
|
2718
|
+
});
|
|
2710
2719
|
}
|
|
2711
2720
|
|
|
2712
2721
|
case 'deleteWordBackward':
|
|
2713
2722
|
{
|
|
2714
|
-
return scheduleAction(
|
|
2723
|
+
return scheduleAction(() => Editor.deleteBackward(editor, {
|
|
2715
2724
|
unit: 'word'
|
|
2716
|
-
})
|
|
2725
|
+
}), {
|
|
2726
|
+
at: targetRange
|
|
2727
|
+
});
|
|
2717
2728
|
}
|
|
2718
2729
|
|
|
2719
2730
|
case 'deleteWordForward':
|
|
2720
2731
|
{
|
|
2721
|
-
return scheduleAction(
|
|
2732
|
+
return scheduleAction(() => Editor.deleteForward(editor, {
|
|
2722
2733
|
unit: 'word'
|
|
2723
|
-
})
|
|
2734
|
+
}), {
|
|
2735
|
+
at: targetRange
|
|
2736
|
+
});
|
|
2724
2737
|
}
|
|
2725
2738
|
|
|
2726
2739
|
case 'insertLineBreak':
|
|
2727
2740
|
{
|
|
2728
|
-
return scheduleAction(
|
|
2741
|
+
return scheduleAction(() => Editor.insertSoftBreak(editor), {
|
|
2742
|
+
at: targetRange
|
|
2743
|
+
});
|
|
2729
2744
|
}
|
|
2730
2745
|
|
|
2731
2746
|
case 'insertParagraph':
|
|
2732
2747
|
{
|
|
2733
|
-
return scheduleAction(
|
|
2748
|
+
return scheduleAction(() => Editor.insertBreak(editor), {
|
|
2749
|
+
at: targetRange
|
|
2750
|
+
});
|
|
2734
2751
|
}
|
|
2735
2752
|
|
|
2736
2753
|
case 'insertCompositionText':
|
|
@@ -2743,11 +2760,15 @@ function createAndroidInputManager(_ref) {
|
|
|
2743
2760
|
case 'insertText':
|
|
2744
2761
|
{
|
|
2745
2762
|
if ((data === null || data === void 0 ? void 0 : data.constructor.name) === 'DataTransfer') {
|
|
2746
|
-
return scheduleAction(
|
|
2763
|
+
return scheduleAction(() => ReactEditor.insertData(editor, data), {
|
|
2764
|
+
at: targetRange
|
|
2765
|
+
});
|
|
2747
2766
|
}
|
|
2748
2767
|
|
|
2749
2768
|
if (typeof data === 'string' && data.includes('\n')) {
|
|
2750
|
-
return scheduleAction(
|
|
2769
|
+
return scheduleAction(() => Editor.insertSoftBreak(editor), {
|
|
2770
|
+
at: Range.end(targetRange)
|
|
2771
|
+
});
|
|
2751
2772
|
}
|
|
2752
2773
|
|
|
2753
2774
|
var text = data !== null && data !== void 0 ? data : ''; // COMPAT: If we are writing inside a placeholder, the ime inserts the text inside
|
|
@@ -2758,31 +2779,56 @@ function createAndroidInputManager(_ref) {
|
|
|
2758
2779
|
}
|
|
2759
2780
|
|
|
2760
2781
|
if (Path.equals(targetRange.anchor.path, targetRange.focus.path)) {
|
|
2761
|
-
// COMPAT: Swiftkey has a weird bug where the target range of the 2nd word
|
|
2762
|
-
// inserted after a mark placeholder is inserted with a anchor offset off by 1.
|
|
2763
|
-
// So writing 'some text' will result in 'some ttext'. If we force a IME update
|
|
2764
|
-
// after inserting the first word, swiftkey will insert with the correct offset
|
|
2765
|
-
if (text.endsWith(' ') && isInsertAfterMarkPlaceholder) {
|
|
2766
|
-
isInsertAfterMarkPlaceholder = false;
|
|
2767
|
-
forceSwiftKeyUpdate(editor);
|
|
2768
|
-
return scheduleAction(targetRange, () => Editor.insertText(editor, text));
|
|
2769
|
-
}
|
|
2770
|
-
|
|
2771
2782
|
var [_start2, _end2] = Range.edges(targetRange);
|
|
2772
|
-
|
|
2783
|
+
var diff = {
|
|
2773
2784
|
start: _start2.offset,
|
|
2774
2785
|
end: _end2.offset,
|
|
2775
2786
|
text
|
|
2776
|
-
}
|
|
2787
|
+
}; // COMPAT: Swiftkey has a weird bug where the target range of the 2nd word
|
|
2788
|
+
// inserted after a mark placeholder is inserted with an anchor offset off by 1.
|
|
2789
|
+
// So writing 'some text' will result in 'some ttext'. Luckily all 'normal' insert
|
|
2790
|
+
// text events are fired with the correct target ranges, only the final 'insertComposition'
|
|
2791
|
+
// isn't, so we can adjust the target range start offset if we are confident this is the
|
|
2792
|
+
// swiftkey insert causing the issue.
|
|
2793
|
+
|
|
2794
|
+
if (text && insertPositionHint && type === 'insertCompositionText') {
|
|
2795
|
+
var hintPosition = insertPositionHint.start + insertPositionHint.text.search(/\S|$/);
|
|
2796
|
+
var diffPosition = diff.start + diff.text.search(/\S|$/);
|
|
2797
|
+
|
|
2798
|
+
if (diffPosition === hintPosition + 1 && diff.end === insertPositionHint.start + insertPositionHint.text.length) {
|
|
2799
|
+
diff.start -= 1;
|
|
2800
|
+
insertPositionHint = null;
|
|
2801
|
+
scheduleFlush();
|
|
2802
|
+
} else {
|
|
2803
|
+
insertPositionHint = false;
|
|
2804
|
+
}
|
|
2805
|
+
} else if (type === 'insertText') {
|
|
2806
|
+
if (insertPositionHint === null) {
|
|
2807
|
+
insertPositionHint = diff;
|
|
2808
|
+
} else if (insertPositionHint && Range.isCollapsed(targetRange) && insertPositionHint.end + insertPositionHint.text.length === _start2.offset) {
|
|
2809
|
+
insertPositionHint = _objectSpread$3(_objectSpread$3({}, insertPositionHint), {}, {
|
|
2810
|
+
text: insertPositionHint.text + text
|
|
2811
|
+
});
|
|
2812
|
+
} else {
|
|
2813
|
+
insertPositionHint = false;
|
|
2814
|
+
}
|
|
2815
|
+
} else {
|
|
2816
|
+
insertPositionHint = false;
|
|
2817
|
+
}
|
|
2818
|
+
|
|
2819
|
+
storeDiff(_start2.path, diff);
|
|
2820
|
+
return;
|
|
2777
2821
|
}
|
|
2778
2822
|
|
|
2779
|
-
return scheduleAction(
|
|
2823
|
+
return scheduleAction(() => Editor.insertText(editor, text), {
|
|
2824
|
+
at: targetRange
|
|
2825
|
+
});
|
|
2780
2826
|
}
|
|
2781
2827
|
}
|
|
2782
2828
|
};
|
|
2783
2829
|
|
|
2784
2830
|
var hasPendingAction = () => {
|
|
2785
|
-
return !!EDITOR_TO_PENDING_ACTION.get(editor)
|
|
2831
|
+
return !!EDITOR_TO_PENDING_ACTION.get(editor);
|
|
2786
2832
|
};
|
|
2787
2833
|
|
|
2788
2834
|
var hasPendingDiffs = () => {
|
|
@@ -2791,6 +2837,10 @@ function createAndroidInputManager(_ref) {
|
|
|
2791
2837
|
return !!((_EDITOR_TO_PENDING_DI5 = EDITOR_TO_PENDING_DIFFS.get(editor)) !== null && _EDITOR_TO_PENDING_DI5 !== void 0 && _EDITOR_TO_PENDING_DI5.length);
|
|
2792
2838
|
};
|
|
2793
2839
|
|
|
2840
|
+
var hasPendingChanges = () => {
|
|
2841
|
+
return hasPendingAction() || hasPendingDiffs();
|
|
2842
|
+
};
|
|
2843
|
+
|
|
2794
2844
|
var isFlushing = () => {
|
|
2795
2845
|
return flushing;
|
|
2796
2846
|
};
|
|
@@ -2803,10 +2853,19 @@ function createAndroidInputManager(_ref) {
|
|
|
2803
2853
|
flushTimeoutId = null;
|
|
2804
2854
|
}
|
|
2805
2855
|
|
|
2806
|
-
var
|
|
2856
|
+
var {
|
|
2857
|
+
selection
|
|
2858
|
+
} = editor;
|
|
2859
|
+
|
|
2860
|
+
if (!range) {
|
|
2861
|
+
return;
|
|
2862
|
+
}
|
|
2863
|
+
|
|
2864
|
+
var pathChanged = !selection || !Path.equals(selection.anchor.path, range.anchor.path);
|
|
2865
|
+
var parentPathChanged = !selection || !Path.equals(selection.anchor.path.slice(0, -1), range.anchor.path.slice(0, -1));
|
|
2807
2866
|
|
|
2808
|
-
if (pathChanged) {
|
|
2809
|
-
|
|
2867
|
+
if (pathChanged && insertPositionHint || parentPathChanged) {
|
|
2868
|
+
insertPositionHint = false;
|
|
2810
2869
|
}
|
|
2811
2870
|
|
|
2812
2871
|
if (pathChanged || !hasPendingDiffs()) {
|
|
@@ -2820,6 +2879,18 @@ function createAndroidInputManager(_ref) {
|
|
|
2820
2879
|
}
|
|
2821
2880
|
};
|
|
2822
2881
|
|
|
2882
|
+
var handleKeyDown = _ => {
|
|
2883
|
+
// COMPAT: Swiftkey closes the keyboard when typing inside a empty node
|
|
2884
|
+
// directly next to a non-contenteditable element (= the placeholder).
|
|
2885
|
+
// The only event fired soon enough for us to allow hiding the placeholder
|
|
2886
|
+
// without swiftkey picking it up is the keydown event, so we have to hide it
|
|
2887
|
+
// here. See https://github.com/ianstormtaylor/slate/pull/4988#issuecomment-1201050535
|
|
2888
|
+
if (!hasPendingDiffs()) {
|
|
2889
|
+
updatePlaceholderVisibility(true);
|
|
2890
|
+
setTimeout(updatePlaceholderVisibility);
|
|
2891
|
+
}
|
|
2892
|
+
};
|
|
2893
|
+
|
|
2823
2894
|
var scheduleFlush = () => {
|
|
2824
2895
|
if (!hasPendingAction()) {
|
|
2825
2896
|
actionTimeoutId = setTimeout(flush);
|
|
@@ -2845,11 +2916,13 @@ function createAndroidInputManager(_ref) {
|
|
|
2845
2916
|
scheduleFlush,
|
|
2846
2917
|
hasPendingDiffs,
|
|
2847
2918
|
hasPendingAction,
|
|
2919
|
+
hasPendingChanges,
|
|
2848
2920
|
isFlushing,
|
|
2849
2921
|
handleUserSelect,
|
|
2850
2922
|
handleCompositionEnd,
|
|
2851
2923
|
handleCompositionStart,
|
|
2852
2924
|
handleDOMBeforeInput,
|
|
2925
|
+
handleKeyDown,
|
|
2853
2926
|
handleDomMutations,
|
|
2854
2927
|
handleInput
|
|
2855
2928
|
};
|
|
@@ -2942,7 +3015,8 @@ function useTrackUserInput() {
|
|
|
2942
3015
|
}
|
|
2943
3016
|
|
|
2944
3017
|
var _excluded$1 = ["autoFocus", "decorate", "onDOMBeforeInput", "placeholder", "readOnly", "renderElement", "renderLeaf", "renderPlaceholder", "scrollSelectionIntoView", "style", "as"],
|
|
2945
|
-
_excluded2 = ["text"]
|
|
3018
|
+
_excluded2 = ["text"],
|
|
3019
|
+
_excluded3 = ["text"];
|
|
2946
3020
|
|
|
2947
3021
|
function ownKeys$1(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
|
|
2948
3022
|
|
|
@@ -3036,7 +3110,7 @@ var Editable = props => {
|
|
|
3036
3110
|
});
|
|
3037
3111
|
|
|
3038
3112
|
if (range) {
|
|
3039
|
-
if (!ReactEditor.isComposing(editor) && !(androidInputManager !== null && androidInputManager !== void 0 && androidInputManager.
|
|
3113
|
+
if (!ReactEditor.isComposing(editor) && !(androidInputManager !== null && androidInputManager !== void 0 && androidInputManager.hasPendingChanges()) && !(androidInputManager !== null && androidInputManager !== void 0 && androidInputManager.isFlushing())) {
|
|
3040
3114
|
Transforms.select(editor, range);
|
|
3041
3115
|
} else {
|
|
3042
3116
|
androidInputManager === null || androidInputManager === void 0 ? void 0 : androidInputManager.handleUserSelect(range);
|
|
@@ -3549,11 +3623,27 @@ var Editable = props => {
|
|
|
3549
3623
|
|
|
3550
3624
|
useEffect(() => {
|
|
3551
3625
|
setTimeout(() => {
|
|
3552
|
-
|
|
3553
|
-
|
|
3554
|
-
}
|
|
3555
|
-
|
|
3626
|
+
var {
|
|
3627
|
+
selection
|
|
3628
|
+
} = editor;
|
|
3629
|
+
|
|
3630
|
+
if (selection) {
|
|
3631
|
+
var {
|
|
3632
|
+
anchor: _anchor
|
|
3633
|
+
} = selection;
|
|
3634
|
+
|
|
3635
|
+
var _Node$leaf2 = Node.leaf(editor, _anchor.path),
|
|
3636
|
+
rest = _objectWithoutProperties(_Node$leaf2, _excluded3);
|
|
3637
|
+
|
|
3638
|
+
if (!Text$1.equals(rest, marks, {
|
|
3639
|
+
loose: true
|
|
3640
|
+
})) {
|
|
3641
|
+
EDITOR_TO_PENDING_INSERTION_MARKS.set(editor, marks);
|
|
3642
|
+
return;
|
|
3643
|
+
}
|
|
3556
3644
|
}
|
|
3645
|
+
|
|
3646
|
+
EDITOR_TO_PENDING_INSERTION_MARKS.delete(editor);
|
|
3557
3647
|
});
|
|
3558
3648
|
});
|
|
3559
3649
|
return /*#__PURE__*/React.createElement(ReadOnlyContext.Provider, {
|
|
@@ -3602,8 +3692,8 @@ var Editable = props => {
|
|
|
3602
3692
|
event.preventDefault();
|
|
3603
3693
|
|
|
3604
3694
|
if (!ReactEditor.isComposing(editor)) {
|
|
3605
|
-
var
|
|
3606
|
-
Editor.insertText(editor,
|
|
3695
|
+
var _text2 = event.data;
|
|
3696
|
+
Editor.insertText(editor, _text2);
|
|
3607
3697
|
}
|
|
3608
3698
|
}
|
|
3609
3699
|
}, [readOnly]),
|
|
@@ -3926,6 +4016,7 @@ var Editable = props => {
|
|
|
3926
4016
|
}, [readOnly, attributes.onFocus]),
|
|
3927
4017
|
onKeyDown: useCallback(event => {
|
|
3928
4018
|
if (!readOnly && hasEditableTarget(editor, event.target)) {
|
|
4019
|
+
androidInputManager === null || androidInputManager === void 0 ? void 0 : androidInputManager.handleKeyDown(event);
|
|
3929
4020
|
var {
|
|
3930
4021
|
nativeEvent
|
|
3931
4022
|
} = event; // COMPAT: The composition end event isn't fired reliably in all browsers,
|
|
@@ -4244,7 +4335,12 @@ var DefaultPlaceholder = _ref => {
|
|
|
4244
4335
|
attributes,
|
|
4245
4336
|
children
|
|
4246
4337
|
} = _ref;
|
|
4247
|
-
return
|
|
4338
|
+
return (
|
|
4339
|
+
/*#__PURE__*/
|
|
4340
|
+
// COMPAT: Artificially add a line-break to the end on the placeholder element
|
|
4341
|
+
// to prevent Android IMEs to pick up its content in autocorrect and to auto-capitalize the first letter
|
|
4342
|
+
React.createElement("span", Object.assign({}, attributes), children, IS_ANDROID && /*#__PURE__*/React.createElement("br", null))
|
|
4343
|
+
);
|
|
4248
4344
|
};
|
|
4249
4345
|
/**
|
|
4250
4346
|
* A default memoized decorate function.
|
|
@@ -4735,7 +4831,7 @@ var withReact = editor => {
|
|
|
4735
4831
|
|
|
4736
4832
|
var pendingAction = EDITOR_TO_PENDING_ACTION.get(editor);
|
|
4737
4833
|
|
|
4738
|
-
if (pendingAction) {
|
|
4834
|
+
if (pendingAction !== null && pendingAction !== void 0 && pendingAction.at) {
|
|
4739
4835
|
var at = Point.isPoint(pendingAction === null || pendingAction === void 0 ? void 0 : pendingAction.at) ? transformPendingPoint(editor, pendingAction.at, op) : transformPendingRange(editor, pendingAction.at, op);
|
|
4740
4836
|
EDITOR_TO_PENDING_ACTION.set(editor, at ? _objectSpread(_objectSpread({}, pendingAction), {}, {
|
|
4741
4837
|
at
|