slate-react 0.71.0 → 0.72.0
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 +12 -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/editable.d.ts.map +1 -1
- 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 +129 -36
- package/dist/index.es.js.map +1 -1
- package/dist/index.js +140 -46
- package/dist/index.js.map +1 -1
- package/dist/slate-react.js +140 -46
- package/dist/slate-react.min.js +1 -1
- package/dist/utils/environment.d.ts +2 -0
- package/dist/utils/environment.d.ts.map +1 -1
- package/dist/utils/weak-maps.d.ts +2 -2
- package/dist/utils/weak-maps.d.ts.map +1 -1
- package/package.json +2 -2
- 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,17 @@
|
|
|
1
1
|
# slate-react
|
|
2
2
|
|
|
3
|
+
## 0.72.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- [#4702](https://github.com/ianstormtaylor/slate/pull/4702) [`8bc6a464`](https://github.com/ianstormtaylor/slate/commit/8bc6a464600d6820d85f55fdaf71e9ea01702eb5) Thanks [@ttitoo](https://github.com/ttitoo)! - Fix CJK IME (e.g. Chinese or Japanese) double input
|
|
8
|
+
|
|
9
|
+
### Patch Changes
|
|
10
|
+
|
|
11
|
+
- [#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
|
|
12
|
+
|
|
13
|
+
* [#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
|
|
14
|
+
|
|
3
15
|
## 0.71.0
|
|
4
16
|
|
|
5
17
|
### 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":"editable.d.ts","sourceRoot":"","sources":["../packages/slate-react/src/components/editable.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA4D,MAAM,OAAO,CAAA;AAChF,OAAO,EAEL,OAAO,EACP,SAAS,EAET,KAAK,EACL,IAAI,EAGL,MAAM,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"editable.d.ts","sourceRoot":"","sources":["../packages/slate-react/src/components/editable.tsx"],"names":[],"mappings":"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"}
|
|
@@ -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
|
*/
|
|
@@ -279,7 +279,11 @@ var IS_CHROME_LEGACY = typeof navigator !== 'undefined' && /Chrome?\/(?:[0-7][0-
|
|
|
279
279
|
|
|
280
280
|
var IS_FIREFOX_LEGACY = typeof navigator !== 'undefined' && /^(?!.*Seamonkey)(?=.*Firefox\/(?:[0-7][0-9]|[0-8][0-6])).*/i.test(navigator.userAgent); // qq browser
|
|
281
281
|
|
|
282
|
-
var IS_QQBROWSER = typeof navigator !== 'undefined' && /.*QQBrowser/.test(navigator.userAgent); //
|
|
282
|
+
var IS_QQBROWSER = typeof navigator !== 'undefined' && /.*QQBrowser/.test(navigator.userAgent); // UC mobile browser
|
|
283
|
+
|
|
284
|
+
var IS_UC_MOBILE = typeof navigator !== 'undefined' && /.*UCBrowser/.test(navigator.userAgent); // Wechat browser
|
|
285
|
+
|
|
286
|
+
var IS_WECHATBROWSER = typeof navigator !== 'undefined' && /.*Wechat/.test(navigator.userAgent); // Check if DOM is available as React does internally.
|
|
283
287
|
// https://github.com/facebook/react/blob/master/packages/shared/ExecutionEnvironment.js
|
|
284
288
|
|
|
285
289
|
var CAN_USE_DOM = !!(typeof window !== 'undefined' && typeof window.document !== 'undefined' && typeof window.document.createElement !== 'undefined'); // COMPAT: Firefox/Edge Legacy don't support the `beforeinput` event
|
|
@@ -327,6 +331,36 @@ var isDecoratorRangeListEqual = (list, another) => {
|
|
|
327
331
|
return true;
|
|
328
332
|
};
|
|
329
333
|
|
|
334
|
+
function useContentKey(node) {
|
|
335
|
+
var contentKeyRef = useRef(0);
|
|
336
|
+
var updateAnimationFrameRef = useRef(null);
|
|
337
|
+
var [, setForceRerenderCounter] = useState(0);
|
|
338
|
+
useEffect(() => {
|
|
339
|
+
NODE_TO_RESTORE_DOM.set(node, () => {
|
|
340
|
+
// Update is already queued and node hasn't re-render yet
|
|
341
|
+
if (updateAnimationFrameRef.current) {
|
|
342
|
+
return;
|
|
343
|
+
}
|
|
344
|
+
|
|
345
|
+
updateAnimationFrameRef.current = requestAnimationFrame(() => {
|
|
346
|
+
setForceRerenderCounter(state => state + 1);
|
|
347
|
+
updateAnimationFrameRef.current = null;
|
|
348
|
+
});
|
|
349
|
+
contentKeyRef.current++;
|
|
350
|
+
});
|
|
351
|
+
return () => {
|
|
352
|
+
NODE_TO_RESTORE_DOM.delete(node);
|
|
353
|
+
};
|
|
354
|
+
}, [node]); // Node was restored => clear scheduled update
|
|
355
|
+
|
|
356
|
+
if (updateAnimationFrameRef.current) {
|
|
357
|
+
cancelAnimationFrame(updateAnimationFrameRef.current);
|
|
358
|
+
updateAnimationFrameRef.current = null;
|
|
359
|
+
}
|
|
360
|
+
|
|
361
|
+
return contentKeyRef.current;
|
|
362
|
+
}
|
|
363
|
+
|
|
330
364
|
/**
|
|
331
365
|
* Text.
|
|
332
366
|
*/
|
|
@@ -372,9 +406,11 @@ var Text = props => {
|
|
|
372
406
|
NODE_TO_ELEMENT.delete(text);
|
|
373
407
|
}
|
|
374
408
|
});
|
|
409
|
+
var contentKey = IS_ANDROID ? useContentKey(text) : undefined;
|
|
375
410
|
return /*#__PURE__*/React.createElement("span", {
|
|
376
411
|
"data-slate-node": "text",
|
|
377
|
-
ref: ref
|
|
412
|
+
ref: ref,
|
|
413
|
+
key: contentKey
|
|
378
414
|
}, children);
|
|
379
415
|
};
|
|
380
416
|
|
|
@@ -472,11 +508,20 @@ var Element = props => {
|
|
|
472
508
|
NODE_TO_ELEMENT.delete(element);
|
|
473
509
|
}
|
|
474
510
|
});
|
|
475
|
-
|
|
511
|
+
var content = renderElement({
|
|
476
512
|
attributes,
|
|
477
513
|
children,
|
|
478
514
|
element
|
|
479
515
|
});
|
|
516
|
+
|
|
517
|
+
if (IS_ANDROID) {
|
|
518
|
+
var contentKey = useContentKey(element);
|
|
519
|
+
return /*#__PURE__*/React.createElement(Fragment, {
|
|
520
|
+
key: contentKey
|
|
521
|
+
}, content);
|
|
522
|
+
}
|
|
523
|
+
|
|
524
|
+
return content;
|
|
480
525
|
};
|
|
481
526
|
|
|
482
527
|
var MemoizedElement = /*#__PURE__*/React.memo(Element, (prev, next) => {
|
|
@@ -1526,7 +1571,7 @@ var Editable$1 = props => {
|
|
|
1526
1571
|
// type that we need. So instead, insert whenever a composition
|
|
1527
1572
|
// ends since it will already have been committed to the DOM.
|
|
1528
1573
|
|
|
1529
|
-
if (!IS_SAFARI && !IS_FIREFOX_LEGACY && !IS_IOS && !IS_QQBROWSER && event.data) {
|
|
1574
|
+
if (!IS_SAFARI && !IS_FIREFOX_LEGACY && !IS_IOS && !IS_QQBROWSER && !IS_WECHATBROWSER && !IS_UC_MOBILE && event.data) {
|
|
1530
1575
|
Editor.insertText(editor, event.data);
|
|
1531
1576
|
}
|
|
1532
1577
|
|
|
@@ -1656,7 +1701,7 @@ var Editable$1 = props => {
|
|
|
1656
1701
|
state.isDraggingInternally = true;
|
|
1657
1702
|
ReactEditor.setFragmentData(editor, event.dataTransfer);
|
|
1658
1703
|
}
|
|
1659
|
-
}, [attributes.onDragStart]),
|
|
1704
|
+
}, [readOnly, attributes.onDragStart]),
|
|
1660
1705
|
onDrop: useCallback(event => {
|
|
1661
1706
|
if (!readOnly && hasTarget(editor, event.target) && !isEventHandled(event, attributes.onDrop)) {
|
|
1662
1707
|
event.preventDefault(); // Keep a reference to the dragged range before updating selection
|
|
@@ -3032,19 +3077,6 @@ var isRemoveLeafNodes = (_, _ref7) => {
|
|
|
3032
3077
|
return removedNodes.length > 0 && addedNodes.length === 0 && characterDataMutations.length > 0;
|
|
3033
3078
|
};
|
|
3034
3079
|
|
|
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
3080
|
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
3081
|
|
|
3050
3082
|
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 +3101,14 @@ function _objectSpread$1(target) { for (var i = 1; i < arguments.length; i++) {
|
|
|
3069
3101
|
* - Line breaks
|
|
3070
3102
|
*
|
|
3071
3103
|
* @param editor
|
|
3104
|
+
* @param restoreDOM
|
|
3072
3105
|
*/
|
|
3073
3106
|
|
|
3074
3107
|
|
|
3075
3108
|
class AndroidInputManager {
|
|
3076
|
-
constructor(editor) {
|
|
3109
|
+
constructor(editor, restoreDOM) {
|
|
3077
3110
|
this.editor = editor;
|
|
3111
|
+
this.restoreDOM = restoreDOM;
|
|
3078
3112
|
/**
|
|
3079
3113
|
* Handle MutationObserver flush
|
|
3080
3114
|
*
|
|
@@ -3089,7 +3123,7 @@ class AndroidInputManager {
|
|
|
3089
3123
|
// eslint-disable-next-line no-console
|
|
3090
3124
|
console.error(err); // Failed to reconcile mutations, restore DOM to its previous state
|
|
3091
3125
|
|
|
3092
|
-
restoreDOM(
|
|
3126
|
+
this.restoreDOM();
|
|
3093
3127
|
}
|
|
3094
3128
|
};
|
|
3095
3129
|
/**
|
|
@@ -3161,10 +3195,8 @@ class AndroidInputManager {
|
|
|
3161
3195
|
var {
|
|
3162
3196
|
selection
|
|
3163
3197
|
} = this.editor;
|
|
3164
|
-
Editor.insertBreak(this.editor);
|
|
3165
|
-
|
|
3166
|
-
|
|
3167
|
-
restoreDOM(this.editor);
|
|
3198
|
+
Editor.insertBreak(this.editor);
|
|
3199
|
+
this.restoreDOM();
|
|
3168
3200
|
|
|
3169
3201
|
if (selection) {
|
|
3170
3202
|
// Compat: Move selection to the newly inserted block if it has not moved
|
|
@@ -3189,7 +3221,7 @@ class AndroidInputManager {
|
|
|
3189
3221
|
Editor.insertText(this.editor, text);
|
|
3190
3222
|
}
|
|
3191
3223
|
|
|
3192
|
-
restoreDOM(
|
|
3224
|
+
this.restoreDOM();
|
|
3193
3225
|
};
|
|
3194
3226
|
/**
|
|
3195
3227
|
* Handle `backspace` that merges blocks
|
|
@@ -3199,7 +3231,7 @@ class AndroidInputManager {
|
|
|
3199
3231
|
this.deleteBackward = () => {
|
|
3200
3232
|
Editor.deleteBackward(this.editor);
|
|
3201
3233
|
ReactEditor.focus(this.editor);
|
|
3202
|
-
restoreDOM(
|
|
3234
|
+
this.restoreDOM();
|
|
3203
3235
|
};
|
|
3204
3236
|
/**
|
|
3205
3237
|
* Handle mutations that remove specific leaves
|
|
@@ -3215,12 +3247,13 @@ class AndroidInputManager {
|
|
|
3215
3247
|
Transforms.delete(this.editor, {
|
|
3216
3248
|
at: path
|
|
3217
3249
|
});
|
|
3218
|
-
restoreDOM(
|
|
3250
|
+
this.restoreDOM();
|
|
3219
3251
|
}
|
|
3220
3252
|
}
|
|
3221
3253
|
};
|
|
3222
3254
|
|
|
3223
3255
|
this.editor = editor;
|
|
3256
|
+
this.restoreDOM = restoreDOM;
|
|
3224
3257
|
}
|
|
3225
3258
|
|
|
3226
3259
|
}
|
|
@@ -3243,6 +3276,70 @@ function useMutationObserver(node, callback, options) {
|
|
|
3243
3276
|
});
|
|
3244
3277
|
}
|
|
3245
3278
|
|
|
3279
|
+
var MUTATION_OBSERVER_CONFIG$1 = {
|
|
3280
|
+
childList: true,
|
|
3281
|
+
characterData: true,
|
|
3282
|
+
subtree: true
|
|
3283
|
+
};
|
|
3284
|
+
|
|
3285
|
+
function findClosestKnowSlateNode(domNode) {
|
|
3286
|
+
var _domEl;
|
|
3287
|
+
|
|
3288
|
+
var domEl = isDOMElement(domNode) ? domNode : domNode.parentElement;
|
|
3289
|
+
|
|
3290
|
+
if (domEl && !domEl.hasAttribute('data-slate-node')) {
|
|
3291
|
+
domEl = domEl.closest("[data-slate-node]");
|
|
3292
|
+
}
|
|
3293
|
+
|
|
3294
|
+
var slateNode = domEl && ELEMENT_TO_NODE.get(domEl);
|
|
3295
|
+
|
|
3296
|
+
if (slateNode) {
|
|
3297
|
+
return slateNode;
|
|
3298
|
+
} // Unknown dom element with a slate-slate-node attribute => the IME
|
|
3299
|
+
// most likely duplicated the node so we have to restore the parent
|
|
3300
|
+
|
|
3301
|
+
|
|
3302
|
+
return (_domEl = domEl) !== null && _domEl !== void 0 && _domEl.parentElement ? findClosestKnowSlateNode(domEl.parentElement) : null;
|
|
3303
|
+
}
|
|
3304
|
+
|
|
3305
|
+
function useRestoreDom(node, receivedUserInput) {
|
|
3306
|
+
var editor = useSlateStatic();
|
|
3307
|
+
var mutatedNodes = useRef(new Set());
|
|
3308
|
+
var handleDOMMutation = useCallback(mutations => {
|
|
3309
|
+
if (!receivedUserInput.current) {
|
|
3310
|
+
return;
|
|
3311
|
+
}
|
|
3312
|
+
|
|
3313
|
+
mutations.forEach(_ref => {
|
|
3314
|
+
var {
|
|
3315
|
+
target
|
|
3316
|
+
} = _ref;
|
|
3317
|
+
var slateNode = findClosestKnowSlateNode(target);
|
|
3318
|
+
|
|
3319
|
+
if (!slateNode) {
|
|
3320
|
+
return;
|
|
3321
|
+
}
|
|
3322
|
+
|
|
3323
|
+
return mutatedNodes.current.add(slateNode);
|
|
3324
|
+
});
|
|
3325
|
+
}, []);
|
|
3326
|
+
useMutationObserver(node, handleDOMMutation, MUTATION_OBSERVER_CONFIG$1); // Clear mutated nodes on every render
|
|
3327
|
+
|
|
3328
|
+
mutatedNodes.current.clear();
|
|
3329
|
+
var restore = useCallback(() => {
|
|
3330
|
+
var mutated = Array.from(mutatedNodes.current.values()); // Filter out child nodes of nodes that will be restored anyway
|
|
3331
|
+
|
|
3332
|
+
var nodesToRestore = mutated.filter(n => !mutated.some(m => Path.isParent(ReactEditor.findPath(editor, m), ReactEditor.findPath(editor, n))));
|
|
3333
|
+
nodesToRestore.forEach(n => {
|
|
3334
|
+
var _NODE_TO_RESTORE_DOM$;
|
|
3335
|
+
|
|
3336
|
+
(_NODE_TO_RESTORE_DOM$ = NODE_TO_RESTORE_DOM.get(n)) === null || _NODE_TO_RESTORE_DOM$ === void 0 ? void 0 : _NODE_TO_RESTORE_DOM$();
|
|
3337
|
+
});
|
|
3338
|
+
mutatedNodes.current.clear();
|
|
3339
|
+
}, []);
|
|
3340
|
+
return restore;
|
|
3341
|
+
}
|
|
3342
|
+
|
|
3246
3343
|
function useTrackUserInput() {
|
|
3247
3344
|
var editor = useSlateStatic();
|
|
3248
3345
|
var receivedUserInput = useRef(false);
|
|
@@ -3282,11 +3379,12 @@ var MUTATION_OBSERVER_CONFIG = {
|
|
|
3282
3379
|
};
|
|
3283
3380
|
function useAndroidInputManager(node) {
|
|
3284
3381
|
var editor = useSlateStatic();
|
|
3285
|
-
var [inputManager] = useState(() => new AndroidInputManager(editor));
|
|
3286
3382
|
var {
|
|
3287
3383
|
receivedUserInput,
|
|
3288
3384
|
onUserInput
|
|
3289
3385
|
} = useTrackUserInput();
|
|
3386
|
+
var restoreDom = useRestoreDom(node, receivedUserInput);
|
|
3387
|
+
var inputManager = useMemo(() => new AndroidInputManager(editor, restoreDom), [restoreDom, editor]);
|
|
3290
3388
|
var timeoutId = useRef(null);
|
|
3291
3389
|
var isReconciling = useRef(false);
|
|
3292
3390
|
var flush = useCallback(mutations => {
|
|
@@ -3347,10 +3445,7 @@ var AndroidEditable = props => {
|
|
|
3347
3445
|
isUpdatingSelection: false,
|
|
3348
3446
|
latestElement: null
|
|
3349
3447
|
}), []);
|
|
3350
|
-
var
|
|
3351
|
-
var onRestoreDOM = useCallback(() => {
|
|
3352
|
-
setContentKey(prev => prev + 1);
|
|
3353
|
-
}, [contentKey]); // Whenever the editor updates...
|
|
3448
|
+
var contentKey = useContentKey(editor); // Whenever the editor updates...
|
|
3354
3449
|
|
|
3355
3450
|
useIsomorphicLayoutEffect(() => {
|
|
3356
3451
|
// Update element-related weak maps with the DOM element ref.
|
|
@@ -3361,10 +3456,8 @@ var AndroidEditable = props => {
|
|
|
3361
3456
|
EDITOR_TO_ELEMENT.set(editor, ref.current);
|
|
3362
3457
|
NODE_TO_ELEMENT.set(editor, ref.current);
|
|
3363
3458
|
ELEMENT_TO_NODE.set(ref.current, editor);
|
|
3364
|
-
EDITOR_TO_RESTORE_DOM.set(editor, onRestoreDOM);
|
|
3365
3459
|
} else {
|
|
3366
3460
|
NODE_TO_ELEMENT.delete(editor);
|
|
3367
|
-
EDITOR_TO_RESTORE_DOM.delete(editor);
|
|
3368
3461
|
}
|
|
3369
3462
|
|
|
3370
3463
|
try {
|