slate-react 0.71.0 → 0.71.1-2021114161528
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/CHANGELOG.md +11 -0
- package/dist/components/android/android-editable.d.ts.map +1 -1
- package/dist/components/android/android-input-manager.d.ts +3 -1
- package/dist/components/android/android-input-manager.d.ts.map +1 -1
- package/dist/components/android/use-android-input-manager.d.ts.map +1 -1
- package/dist/components/android/use-restore-dom.d.ts +3 -0
- package/dist/components/android/use-restore-dom.d.ts.map +1 -0
- package/dist/components/element.d.ts.map +1 -1
- package/dist/components/text.d.ts.map +1 -1
- package/dist/hooks/use-children.d.ts.map +1 -1
- package/dist/hooks/use-content-key.d.ts +3 -0
- package/dist/hooks/use-content-key.d.ts.map +1 -0
- package/dist/index.es.js +123 -34
- package/dist/index.es.js.map +1 -1
- package/dist/index.js +134 -44
- package/dist/index.js.map +1 -1
- package/dist/slate-react.js +134 -44
- package/dist/slate-react.min.js +1 -1
- package/dist/utils/weak-maps.d.ts +2 -2
- package/dist/utils/weak-maps.d.ts.map +1 -1
- package/package.json +3 -3
- package/dist/components/android/restore-dom.d.ts +0 -3
- package/dist/components/android/restore-dom.d.ts.map +0 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,16 @@
|
|
|
1
1
|
# slate-react
|
|
2
2
|
|
|
3
|
+
## 0.71.1-2021114161528
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- [#4706](https://github.com/ianstormtaylor/slate/pull/4706) [`6d194077`](https://github.com/ianstormtaylor/slate/commit/6d194077763ec0a9d5642be5cafef20e65dbce8e) Thanks [@BitPhinix](https://github.com/BitPhinix)! - Update android restoreDOM to use partial dom restoring
|
|
8
|
+
|
|
9
|
+
* [#4707](https://github.com/ianstormtaylor/slate/pull/4707) [`c020ca23`](https://github.com/ianstormtaylor/slate/commit/c020ca23b6f5d2307eb62630566ec711def89fcf) Thanks [@ahoisl](https://github.com/ahoisl)! - fix: add 'readonly' dependency for onDragStart callback
|
|
10
|
+
|
|
11
|
+
* Updated dependencies [[`2fc7ad92`](https://github.com/ianstormtaylor/slate/commit/2fc7ad924cfbb75de59f685eeabb0375769201b9)]:
|
|
12
|
+
- slate@0.71.1-2021114161528
|
|
13
|
+
|
|
3
14
|
## 0.71.0
|
|
4
15
|
|
|
5
16
|
### Minor Changes
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"android-editable.d.ts","sourceRoot":"","sources":["../../packages/slate-react/src/components/android/android-editable.tsx"],"names":[],"mappings":";AACA,OAAO,EAAsB,OAAO,EAA2B,MAAM,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"android-editable.d.ts","sourceRoot":"","sources":["../../packages/slate-react/src/components/android/android-editable.tsx"],"names":[],"mappings":";AACA,OAAO,EAAsB,OAAO,EAA2B,MAAM,OAAO,CAAA;AAyB5E,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAa3C;;GAEG;AAEH,eAAO,MAAM,eAAe,UAAW,aAAa,KAAG,GAAG,CAAC,OAgb1D,CAAA"}
|
|
@@ -20,10 +20,12 @@ import { ReactEditor } from '../../plugin/react-editor';
|
|
|
20
20
|
* - Line breaks
|
|
21
21
|
*
|
|
22
22
|
* @param editor
|
|
23
|
+
* @param restoreDOM
|
|
23
24
|
*/
|
|
24
25
|
export declare class AndroidInputManager {
|
|
25
26
|
private editor;
|
|
26
|
-
|
|
27
|
+
private restoreDOM;
|
|
28
|
+
constructor(editor: ReactEditor, restoreDOM: () => void);
|
|
27
29
|
/**
|
|
28
30
|
* Handle MutationObserver flush
|
|
29
31
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"android-input-manager.d.ts","sourceRoot":"","sources":["../../packages/slate-react/src/components/android/android-input-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAA;
|
|
1
|
+
{"version":3,"file":"android-input-manager.d.ts","sourceRoot":"","sources":["../../packages/slate-react/src/components/android/android-input-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAA;AAsBvD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,qBAAa,mBAAmB;IAClB,OAAO,CAAC,MAAM;IAAe,OAAO,CAAC,UAAU;gBAAvC,MAAM,EAAE,WAAW,EAAU,UAAU,EAAE,MAAM,IAAI;IAKvE;;;;OAIG;IAEH,KAAK,cAAe,cAAc,EAAE,UAYnC;IAED;;;;OAIG;IAEH,OAAO,CAAC,kBAAkB,CAkBzB;IAED;;OAEG;IAEH,OAAO,CAAC,UAAU,CAuBjB;IAED;;OAEG;IAEH,OAAO,CAAC,WAAW,CAoBlB;IAED;;OAEG;IAEH,OAAO,CAAC,wBAAwB,CAY/B;IAED;;OAEG;IAEH,OAAO,CAAC,cAAc,CAOrB;IAED;;OAEG;IACH,OAAO,CAAC,eAAe,CAWtB;CACF;AAED,eAAe,mBAAmB,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-android-input-manager.d.ts","sourceRoot":"","sources":["../../packages/slate-react/src/components/android/use-android-input-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,
|
|
1
|
+
{"version":3,"file":"use-android-input-manager.d.ts","sourceRoot":"","sources":["../../packages/slate-react/src/components/android/use-android-input-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAA0C,MAAM,OAAO,CAAA;AAgBzE,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,SAAS,CAAC,WAAW,CAAC;;;EAqClE"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-restore-dom.d.ts","sourceRoot":"","sources":["../../packages/slate-react/src/components/android/use-restore-dom.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAyC,MAAM,OAAO,CAAA;AAgC7D,wBAAgB,aAAa,CAC3B,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC,EAClC,iBAAiB,EAAE,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,cA8C5C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"element.d.ts","sourceRoot":"","sources":["../packages/slate-react/src/components/element.tsx"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"element.d.ts","sourceRoot":"","sources":["../packages/slate-react/src/components/element.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA2B,MAAM,OAAO,CAAA;AAE/C,OAAO,EAAgB,KAAK,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,OAAO,CAAA;AAcpE,OAAO,EACL,kBAAkB,EAClB,eAAe,EACf,sBAAsB,EACvB,MAAM,YAAY,CAAA;AAInB;;GAEG;AAEH,QAAA,MAAM,OAAO;iBACE,KAAK,EAAE;aACX,YAAY;6BACG,kBAAkB,KAAK,GAAG,CAAC,OAAO;+BAC/B,sBAAsB,KAAK,GAAG,CAAC,OAAO;0BAC5C,eAAe,KAAK,GAAG,CAAC,OAAO;eACzC,KAAK,GAAG,IAAI;iBA6GxB,CAAA;AAED,QAAA,MAAM,eAAe;iBApHN,KAAK,EAAE;aACX,YAAY;6BACG,kBAAkB,KAAK,GAAG,CAAC,OAAO;+BAC/B,sBAAsB,KAAK,GAAG,CAAC,OAAO;0BAC5C,eAAe,KAAK,GAAG,CAAC,OAAO;eACzC,KAAK,GAAG,IAAI;kBA0HvB,CAAA;AAEF;;GAEG;AAEH,eAAO,MAAM,cAAc,UAAW,kBAAkB,gBASvD,CAAA;AAED,eAAe,eAAe,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"text.d.ts","sourceRoot":"","sources":["../packages/slate-react/src/components/text.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAiB,MAAM,OAAO,CAAA;AACrC,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,IAAI,SAAS,EAAE,MAAM,OAAO,CAAA;AAIzD,OAAO,EAAE,eAAe,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAA;
|
|
1
|
+
{"version":3,"file":"text.d.ts","sourceRoot":"","sources":["../packages/slate-react/src/components/text.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAiB,MAAM,OAAO,CAAA;AACrC,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,IAAI,SAAS,EAAE,MAAM,OAAO,CAAA;AAIzD,OAAO,EAAE,eAAe,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAA;AA2EpE,QAAA,MAAM,YAAY;iBA3DH,KAAK,EAAE;YACZ,OAAO;YACP,OAAO;+BACY,sBAAsB,KAAK,GAAG,CAAC,OAAO;0BAC5C,eAAe,KAAK,GAAG,CAAC,OAAO;UAC9C,SAAS;kBA8Df,CAAA;AAEF,eAAe,YAAY,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-children.d.ts","sourceRoot":"","sources":["../packages/slate-react/src/hooks/use-children.tsx"],"names":[],"mappings":";AACA,OAAO,EAAU,KAAK,EAAE,OAAO,
|
|
1
|
+
{"version":3,"file":"use-children.d.ts","sourceRoot":"","sources":["../packages/slate-react/src/hooks/use-children.tsx"],"names":[],"mappings":";AACA,OAAO,EAAU,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAc,MAAM,OAAO,CAAA;AAQpE,OAAO,EACL,kBAAkB,EAClB,eAAe,EACf,sBAAsB,EACvB,MAAM,wBAAwB,CAAA;AAG/B;;GAEG;AAEH,QAAA,MAAM,WAAW;iBACF,KAAK,EAAE;UACd,QAAQ;6BACU,kBAAkB,KAAK,GAAG,CAAC,OAAO;+BAC/B,sBAAsB,KAAK,GAAG,CAAC,OAAO;0BAC5C,eAAe,KAAK,GAAG,CAAC,OAAO;eACzC,KAAK,GAAG,IAAI;mBAoExB,CAAA;AAED,eAAe,WAAW,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-content-key.d.ts","sourceRoot":"","sources":["../packages/slate-react/src/hooks/use-content-key.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,IAAI,SAAS,EAAE,MAAM,OAAO,CAAA;AAGzC,wBAAgB,aAAa,CAAC,IAAI,EAAE,SAAS,UAiC5C"}
|
package/dist/index.es.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import React, { useRef, useEffect, useLayoutEffect, useContext, createContext,
|
|
1
|
+
import React, { useRef, useEffect, useLayoutEffect, useState, Fragment, useContext, createContext, useMemo, useCallback } from 'react';
|
|
2
2
|
import { Path, Node, Editor, Text as Text$1, Range, Element as Element$1, Transforms } from 'slate';
|
|
3
3
|
import getDirection from 'direction';
|
|
4
4
|
import debounce from 'lodash/debounce';
|
|
@@ -177,7 +177,7 @@ var IS_FOCUSED = new WeakMap();
|
|
|
177
177
|
*/
|
|
178
178
|
|
|
179
179
|
var EDITOR_TO_ON_CHANGE = new WeakMap();
|
|
180
|
-
var
|
|
180
|
+
var NODE_TO_RESTORE_DOM = new WeakMap();
|
|
181
181
|
/**
|
|
182
182
|
* Symbols.
|
|
183
183
|
*/
|
|
@@ -327,6 +327,36 @@ var isDecoratorRangeListEqual = (list, another) => {
|
|
|
327
327
|
return true;
|
|
328
328
|
};
|
|
329
329
|
|
|
330
|
+
function useContentKey(node) {
|
|
331
|
+
var contentKeyRef = useRef(0);
|
|
332
|
+
var updateAnimationFrameRef = useRef(null);
|
|
333
|
+
var [, setForceRerenderCounter] = useState(0);
|
|
334
|
+
useEffect(() => {
|
|
335
|
+
NODE_TO_RESTORE_DOM.set(node, () => {
|
|
336
|
+
// Update is already queued and node hasn't re-render yet
|
|
337
|
+
if (updateAnimationFrameRef.current) {
|
|
338
|
+
return;
|
|
339
|
+
}
|
|
340
|
+
|
|
341
|
+
updateAnimationFrameRef.current = requestAnimationFrame(() => {
|
|
342
|
+
setForceRerenderCounter(state => state + 1);
|
|
343
|
+
updateAnimationFrameRef.current = null;
|
|
344
|
+
});
|
|
345
|
+
contentKeyRef.current++;
|
|
346
|
+
});
|
|
347
|
+
return () => {
|
|
348
|
+
NODE_TO_RESTORE_DOM.delete(node);
|
|
349
|
+
};
|
|
350
|
+
}, [node]); // Node was restored => clear scheduled update
|
|
351
|
+
|
|
352
|
+
if (updateAnimationFrameRef.current) {
|
|
353
|
+
cancelAnimationFrame(updateAnimationFrameRef.current);
|
|
354
|
+
updateAnimationFrameRef.current = null;
|
|
355
|
+
}
|
|
356
|
+
|
|
357
|
+
return contentKeyRef.current;
|
|
358
|
+
}
|
|
359
|
+
|
|
330
360
|
/**
|
|
331
361
|
* Text.
|
|
332
362
|
*/
|
|
@@ -372,9 +402,11 @@ var Text = props => {
|
|
|
372
402
|
NODE_TO_ELEMENT.delete(text);
|
|
373
403
|
}
|
|
374
404
|
});
|
|
405
|
+
var contentKey = IS_ANDROID ? useContentKey(text) : undefined;
|
|
375
406
|
return /*#__PURE__*/React.createElement("span", {
|
|
376
407
|
"data-slate-node": "text",
|
|
377
|
-
ref: ref
|
|
408
|
+
ref: ref,
|
|
409
|
+
key: contentKey
|
|
378
410
|
}, children);
|
|
379
411
|
};
|
|
380
412
|
|
|
@@ -472,11 +504,20 @@ var Element = props => {
|
|
|
472
504
|
NODE_TO_ELEMENT.delete(element);
|
|
473
505
|
}
|
|
474
506
|
});
|
|
475
|
-
|
|
507
|
+
var content = renderElement({
|
|
476
508
|
attributes,
|
|
477
509
|
children,
|
|
478
510
|
element
|
|
479
511
|
});
|
|
512
|
+
|
|
513
|
+
if (IS_ANDROID) {
|
|
514
|
+
var contentKey = useContentKey(element);
|
|
515
|
+
return /*#__PURE__*/React.createElement(Fragment, {
|
|
516
|
+
key: contentKey
|
|
517
|
+
}, content);
|
|
518
|
+
}
|
|
519
|
+
|
|
520
|
+
return content;
|
|
480
521
|
};
|
|
481
522
|
|
|
482
523
|
var MemoizedElement = /*#__PURE__*/React.memo(Element, (prev, next) => {
|
|
@@ -1656,7 +1697,7 @@ var Editable$1 = props => {
|
|
|
1656
1697
|
state.isDraggingInternally = true;
|
|
1657
1698
|
ReactEditor.setFragmentData(editor, event.dataTransfer);
|
|
1658
1699
|
}
|
|
1659
|
-
}, [attributes.onDragStart]),
|
|
1700
|
+
}, [readOnly, attributes.onDragStart]),
|
|
1660
1701
|
onDrop: useCallback(event => {
|
|
1661
1702
|
if (!readOnly && hasTarget(editor, event.target) && !isEventHandled(event, attributes.onDrop)) {
|
|
1662
1703
|
event.preventDefault(); // Keep a reference to the dragged range before updating selection
|
|
@@ -3032,19 +3073,6 @@ var isRemoveLeafNodes = (_, _ref7) => {
|
|
|
3032
3073
|
return removedNodes.length > 0 && addedNodes.length === 0 && characterDataMutations.length > 0;
|
|
3033
3074
|
};
|
|
3034
3075
|
|
|
3035
|
-
function restoreDOM(editor) {
|
|
3036
|
-
try {
|
|
3037
|
-
var onRestoreDOM = EDITOR_TO_RESTORE_DOM.get(editor);
|
|
3038
|
-
|
|
3039
|
-
if (onRestoreDOM) {
|
|
3040
|
-
onRestoreDOM();
|
|
3041
|
-
}
|
|
3042
|
-
} catch (err) {
|
|
3043
|
-
// eslint-disable-next-line no-console
|
|
3044
|
-
console.error(err);
|
|
3045
|
-
}
|
|
3046
|
-
}
|
|
3047
|
-
|
|
3048
3076
|
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; }
|
|
3049
3077
|
|
|
3050
3078
|
function _objectSpread$1(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys$1(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys$1(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
|
@@ -3069,12 +3097,14 @@ function _objectSpread$1(target) { for (var i = 1; i < arguments.length; i++) {
|
|
|
3069
3097
|
* - Line breaks
|
|
3070
3098
|
*
|
|
3071
3099
|
* @param editor
|
|
3100
|
+
* @param restoreDOM
|
|
3072
3101
|
*/
|
|
3073
3102
|
|
|
3074
3103
|
|
|
3075
3104
|
class AndroidInputManager {
|
|
3076
|
-
constructor(editor) {
|
|
3105
|
+
constructor(editor, restoreDOM) {
|
|
3077
3106
|
this.editor = editor;
|
|
3107
|
+
this.restoreDOM = restoreDOM;
|
|
3078
3108
|
/**
|
|
3079
3109
|
* Handle MutationObserver flush
|
|
3080
3110
|
*
|
|
@@ -3089,7 +3119,7 @@ class AndroidInputManager {
|
|
|
3089
3119
|
// eslint-disable-next-line no-console
|
|
3090
3120
|
console.error(err); // Failed to reconcile mutations, restore DOM to its previous state
|
|
3091
3121
|
|
|
3092
|
-
restoreDOM(
|
|
3122
|
+
this.restoreDOM();
|
|
3093
3123
|
}
|
|
3094
3124
|
};
|
|
3095
3125
|
/**
|
|
@@ -3161,10 +3191,8 @@ class AndroidInputManager {
|
|
|
3161
3191
|
var {
|
|
3162
3192
|
selection
|
|
3163
3193
|
} = this.editor;
|
|
3164
|
-
Editor.insertBreak(this.editor);
|
|
3165
|
-
|
|
3166
|
-
|
|
3167
|
-
restoreDOM(this.editor);
|
|
3194
|
+
Editor.insertBreak(this.editor);
|
|
3195
|
+
this.restoreDOM();
|
|
3168
3196
|
|
|
3169
3197
|
if (selection) {
|
|
3170
3198
|
// Compat: Move selection to the newly inserted block if it has not moved
|
|
@@ -3189,7 +3217,7 @@ class AndroidInputManager {
|
|
|
3189
3217
|
Editor.insertText(this.editor, text);
|
|
3190
3218
|
}
|
|
3191
3219
|
|
|
3192
|
-
restoreDOM(
|
|
3220
|
+
this.restoreDOM();
|
|
3193
3221
|
};
|
|
3194
3222
|
/**
|
|
3195
3223
|
* Handle `backspace` that merges blocks
|
|
@@ -3199,7 +3227,7 @@ class AndroidInputManager {
|
|
|
3199
3227
|
this.deleteBackward = () => {
|
|
3200
3228
|
Editor.deleteBackward(this.editor);
|
|
3201
3229
|
ReactEditor.focus(this.editor);
|
|
3202
|
-
restoreDOM(
|
|
3230
|
+
this.restoreDOM();
|
|
3203
3231
|
};
|
|
3204
3232
|
/**
|
|
3205
3233
|
* Handle mutations that remove specific leaves
|
|
@@ -3215,12 +3243,13 @@ class AndroidInputManager {
|
|
|
3215
3243
|
Transforms.delete(this.editor, {
|
|
3216
3244
|
at: path
|
|
3217
3245
|
});
|
|
3218
|
-
restoreDOM(
|
|
3246
|
+
this.restoreDOM();
|
|
3219
3247
|
}
|
|
3220
3248
|
}
|
|
3221
3249
|
};
|
|
3222
3250
|
|
|
3223
3251
|
this.editor = editor;
|
|
3252
|
+
this.restoreDOM = restoreDOM;
|
|
3224
3253
|
}
|
|
3225
3254
|
|
|
3226
3255
|
}
|
|
@@ -3243,6 +3272,70 @@ function useMutationObserver(node, callback, options) {
|
|
|
3243
3272
|
});
|
|
3244
3273
|
}
|
|
3245
3274
|
|
|
3275
|
+
var MUTATION_OBSERVER_CONFIG$1 = {
|
|
3276
|
+
childList: true,
|
|
3277
|
+
characterData: true,
|
|
3278
|
+
subtree: true
|
|
3279
|
+
};
|
|
3280
|
+
|
|
3281
|
+
function findClosestKnowSlateNode(domNode) {
|
|
3282
|
+
var _domEl;
|
|
3283
|
+
|
|
3284
|
+
var domEl = isDOMElement(domNode) ? domNode : domNode.parentElement;
|
|
3285
|
+
|
|
3286
|
+
if (domEl && !domEl.hasAttribute('data-slate-node')) {
|
|
3287
|
+
domEl = domEl.closest("[data-slate-node]");
|
|
3288
|
+
}
|
|
3289
|
+
|
|
3290
|
+
var slateNode = domEl && ELEMENT_TO_NODE.get(domEl);
|
|
3291
|
+
|
|
3292
|
+
if (slateNode) {
|
|
3293
|
+
return slateNode;
|
|
3294
|
+
} // Unknown dom element with a slate-slate-node attribute => the IME
|
|
3295
|
+
// most likely duplicated the node so we have to restore the parent
|
|
3296
|
+
|
|
3297
|
+
|
|
3298
|
+
return (_domEl = domEl) !== null && _domEl !== void 0 && _domEl.parentElement ? findClosestKnowSlateNode(domEl.parentElement) : null;
|
|
3299
|
+
}
|
|
3300
|
+
|
|
3301
|
+
function useRestoreDom(node, receivedUserInput) {
|
|
3302
|
+
var editor = useSlateStatic();
|
|
3303
|
+
var mutatedNodes = useRef(new Set());
|
|
3304
|
+
var handleDOMMutation = useCallback(mutations => {
|
|
3305
|
+
if (!receivedUserInput.current) {
|
|
3306
|
+
return;
|
|
3307
|
+
}
|
|
3308
|
+
|
|
3309
|
+
mutations.forEach(_ref => {
|
|
3310
|
+
var {
|
|
3311
|
+
target
|
|
3312
|
+
} = _ref;
|
|
3313
|
+
var slateNode = findClosestKnowSlateNode(target);
|
|
3314
|
+
|
|
3315
|
+
if (!slateNode) {
|
|
3316
|
+
return;
|
|
3317
|
+
}
|
|
3318
|
+
|
|
3319
|
+
return mutatedNodes.current.add(slateNode);
|
|
3320
|
+
});
|
|
3321
|
+
}, []);
|
|
3322
|
+
useMutationObserver(node, handleDOMMutation, MUTATION_OBSERVER_CONFIG$1); // Clear mutated nodes on every render
|
|
3323
|
+
|
|
3324
|
+
mutatedNodes.current.clear();
|
|
3325
|
+
var restore = useCallback(() => {
|
|
3326
|
+
var mutated = Array.from(mutatedNodes.current.values()); // Filter out child nodes of nodes that will be restored anyway
|
|
3327
|
+
|
|
3328
|
+
var nodesToRestore = mutated.filter(n => !mutated.some(m => Path.isParent(ReactEditor.findPath(editor, m), ReactEditor.findPath(editor, n))));
|
|
3329
|
+
nodesToRestore.forEach(n => {
|
|
3330
|
+
var _NODE_TO_RESTORE_DOM$;
|
|
3331
|
+
|
|
3332
|
+
(_NODE_TO_RESTORE_DOM$ = NODE_TO_RESTORE_DOM.get(n)) === null || _NODE_TO_RESTORE_DOM$ === void 0 ? void 0 : _NODE_TO_RESTORE_DOM$();
|
|
3333
|
+
});
|
|
3334
|
+
mutatedNodes.current.clear();
|
|
3335
|
+
}, []);
|
|
3336
|
+
return restore;
|
|
3337
|
+
}
|
|
3338
|
+
|
|
3246
3339
|
function useTrackUserInput() {
|
|
3247
3340
|
var editor = useSlateStatic();
|
|
3248
3341
|
var receivedUserInput = useRef(false);
|
|
@@ -3282,11 +3375,12 @@ var MUTATION_OBSERVER_CONFIG = {
|
|
|
3282
3375
|
};
|
|
3283
3376
|
function useAndroidInputManager(node) {
|
|
3284
3377
|
var editor = useSlateStatic();
|
|
3285
|
-
var [inputManager] = useState(() => new AndroidInputManager(editor));
|
|
3286
3378
|
var {
|
|
3287
3379
|
receivedUserInput,
|
|
3288
3380
|
onUserInput
|
|
3289
3381
|
} = useTrackUserInput();
|
|
3382
|
+
var restoreDom = useRestoreDom(node, receivedUserInput);
|
|
3383
|
+
var inputManager = useMemo(() => new AndroidInputManager(editor, restoreDom), [restoreDom, editor]);
|
|
3290
3384
|
var timeoutId = useRef(null);
|
|
3291
3385
|
var isReconciling = useRef(false);
|
|
3292
3386
|
var flush = useCallback(mutations => {
|
|
@@ -3347,10 +3441,7 @@ var AndroidEditable = props => {
|
|
|
3347
3441
|
isUpdatingSelection: false,
|
|
3348
3442
|
latestElement: null
|
|
3349
3443
|
}), []);
|
|
3350
|
-
var
|
|
3351
|
-
var onRestoreDOM = useCallback(() => {
|
|
3352
|
-
setContentKey(prev => prev + 1);
|
|
3353
|
-
}, [contentKey]); // Whenever the editor updates...
|
|
3444
|
+
var contentKey = useContentKey(editor); // Whenever the editor updates...
|
|
3354
3445
|
|
|
3355
3446
|
useIsomorphicLayoutEffect(() => {
|
|
3356
3447
|
// Update element-related weak maps with the DOM element ref.
|
|
@@ -3361,10 +3452,8 @@ var AndroidEditable = props => {
|
|
|
3361
3452
|
EDITOR_TO_ELEMENT.set(editor, ref.current);
|
|
3362
3453
|
NODE_TO_ELEMENT.set(editor, ref.current);
|
|
3363
3454
|
ELEMENT_TO_NODE.set(ref.current, editor);
|
|
3364
|
-
EDITOR_TO_RESTORE_DOM.set(editor, onRestoreDOM);
|
|
3365
3455
|
} else {
|
|
3366
3456
|
NODE_TO_ELEMENT.delete(editor);
|
|
3367
|
-
EDITOR_TO_RESTORE_DOM.delete(editor);
|
|
3368
3457
|
}
|
|
3369
3458
|
|
|
3370
3459
|
try {
|