slate-react 0.70.2 → 0.71.1-20211141648
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 +22 -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 +128 -36
- package/dist/index.es.js.map +1 -1
- package/dist/index.js +139 -46
- package/dist/index.js.map +1 -1
- package/dist/slate-react.js +139 -46
- 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,27 @@
|
|
|
1
1
|
# slate-react
|
|
2
2
|
|
|
3
|
+
## 0.71.1-20211141648
|
|
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
|
+
- Updated dependencies [[`2fc7ad92`](https://github.com/ianstormtaylor/slate/commit/2fc7ad924cfbb75de59f685eeabb0375769201b9)]:
|
|
10
|
+
- slate@0.71.1-20211141648
|
|
11
|
+
|
|
12
|
+
## 0.71.0
|
|
13
|
+
|
|
14
|
+
### Minor Changes
|
|
15
|
+
|
|
16
|
+
- [#4682](https://github.com/ianstormtaylor/slate/pull/4682) [`e5380655`](https://github.com/ianstormtaylor/slate/commit/e53806557217b08bce6217b7d871cd5ae7dad31c) Thanks [@matthewkeil](https://github.com/matthewkeil)! - Support SSR for autoCorrect, spellCheck and autoCapitalize.
|
|
17
|
+
Fixes prop mismatch between server and client.
|
|
18
|
+
Removes the need to add
|
|
19
|
+
<Editable
|
|
20
|
+
spellCheck={false}
|
|
21
|
+
autoCorrect="false"
|
|
22
|
+
autoCapitalize="false"
|
|
23
|
+
/>
|
|
24
|
+
|
|
3
25
|
## 0.70.2
|
|
4
26
|
|
|
5
27
|
### Patch 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":"AAAA,OAAO,KAA4D,MAAM,OAAO,CAAA;AAChF,OAAO,EAEL,OAAO,EACP,SAAS,EAET,KAAK,EACL,IAAI,EAGL,MAAM,OAAO,CAAA;AAkBd,OAAO,EAAE,WAAW,EAAE,MAAM,IAAI,CAAA;AAKhC,OAAO,EAEL,OAAO,EACP,QAAQ,EAKT,MAAM,cAAc,CAAA;AAkBrB;;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,gBA+qC5C,CAAA;AAED;;GAEG;AACH,oBAAY,sBAAsB,GAAG;IACnC,QAAQ,EAAE,GAAG,CAAA;IACb,UAAU,EAAE;QACV,wBAAwB,EAAE,OAAO,CAAA;QACjC,GAAG,CAAC,EAAE,KAAK,CAAA;QACX,eAAe,EAAE,OAAO,CAAA;QACxB,GAAG,EAAE,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAA;QACzB,KAAK,EAAE,KAAK,CAAC,aAAa,CAAA;KAC3B,CAAA;CACF,CAAA;AAED;;GAEG;AAEH,eAAO,MAAM,kBAAkB,8BAG5B,sBAAsB,gBAA4C,CAAA;AAErE;;GAEG;AAEH,eAAO,MAAM,eAAe,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,KAAK,EAAa,CAAA;AAyBtE;;GAEG;AAEH,eAAO,MAAM,YAAY,MAAO,QAAQ,KAAK,QAAQ,YAWpD,CAAA;AAED;;GAEG;AAEH,eAAO,MAAM,SAAS,WACZ,WAAW,UACX,WAAW,GAAG,IAAI,sBAG3B,CAAA;AAED;;GAEG;AAEH,eAAO,MAAM,iBAAiB,WACpB,WAAW,UACX,WAAW,GAAG,IAAI,sBAM3B,CAAA;AAED;;GAEG;AAEH,eAAO,MAAM,kBAAkB,WACrB,WAAW,UACX,WAAW,GAAG,IAAI,KACzB,OAIF,CAAA;AAED;;GAEG;AAEH,eAAO,MAAM,cAAc,gHAIO,IAAI,GAAG,OAAO,yBAc/C,CAAA;AAED;;GAEG;AAEH,eAAO,MAAM,iBAAiB,uDAEJ,IAAI,GAAG,OAAO,yBAevC,CAAA"}
|
|
@@ -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) => {
|
|
@@ -1385,9 +1426,12 @@ var Editable$1 = props => {
|
|
|
1385
1426
|
}, attributes, {
|
|
1386
1427
|
// COMPAT: Certain browsers don't support the `beforeinput` event, so we'd
|
|
1387
1428
|
// have to use hacks to make these replacement-based features work.
|
|
1388
|
-
|
|
1389
|
-
|
|
1390
|
-
|
|
1429
|
+
// For SSR situations HAS_BEFORE_INPUT_SUPPORT is false and results in prop
|
|
1430
|
+
// mismatch warning app moves to browser. Pass-through consumer props when
|
|
1431
|
+
// not CAN_USE_DOM (SSR) and default to falsy value
|
|
1432
|
+
spellCheck: HAS_BEFORE_INPUT_SUPPORT || !CAN_USE_DOM ? attributes.spellCheck : false,
|
|
1433
|
+
autoCorrect: HAS_BEFORE_INPUT_SUPPORT || !CAN_USE_DOM ? attributes.autoCorrect : 'false',
|
|
1434
|
+
autoCapitalize: HAS_BEFORE_INPUT_SUPPORT || !CAN_USE_DOM ? attributes.autoCapitalize : 'false',
|
|
1391
1435
|
"data-slate-editor": true,
|
|
1392
1436
|
"data-slate-node": "value",
|
|
1393
1437
|
// explicitly set this
|
|
@@ -3029,19 +3073,6 @@ var isRemoveLeafNodes = (_, _ref7) => {
|
|
|
3029
3073
|
return removedNodes.length > 0 && addedNodes.length === 0 && characterDataMutations.length > 0;
|
|
3030
3074
|
};
|
|
3031
3075
|
|
|
3032
|
-
function restoreDOM(editor) {
|
|
3033
|
-
try {
|
|
3034
|
-
var onRestoreDOM = EDITOR_TO_RESTORE_DOM.get(editor);
|
|
3035
|
-
|
|
3036
|
-
if (onRestoreDOM) {
|
|
3037
|
-
onRestoreDOM();
|
|
3038
|
-
}
|
|
3039
|
-
} catch (err) {
|
|
3040
|
-
// eslint-disable-next-line no-console
|
|
3041
|
-
console.error(err);
|
|
3042
|
-
}
|
|
3043
|
-
}
|
|
3044
|
-
|
|
3045
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; }
|
|
3046
3077
|
|
|
3047
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; }
|
|
@@ -3066,12 +3097,14 @@ function _objectSpread$1(target) { for (var i = 1; i < arguments.length; i++) {
|
|
|
3066
3097
|
* - Line breaks
|
|
3067
3098
|
*
|
|
3068
3099
|
* @param editor
|
|
3100
|
+
* @param restoreDOM
|
|
3069
3101
|
*/
|
|
3070
3102
|
|
|
3071
3103
|
|
|
3072
3104
|
class AndroidInputManager {
|
|
3073
|
-
constructor(editor) {
|
|
3105
|
+
constructor(editor, restoreDOM) {
|
|
3074
3106
|
this.editor = editor;
|
|
3107
|
+
this.restoreDOM = restoreDOM;
|
|
3075
3108
|
/**
|
|
3076
3109
|
* Handle MutationObserver flush
|
|
3077
3110
|
*
|
|
@@ -3086,7 +3119,7 @@ class AndroidInputManager {
|
|
|
3086
3119
|
// eslint-disable-next-line no-console
|
|
3087
3120
|
console.error(err); // Failed to reconcile mutations, restore DOM to its previous state
|
|
3088
3121
|
|
|
3089
|
-
restoreDOM(
|
|
3122
|
+
this.restoreDOM();
|
|
3090
3123
|
}
|
|
3091
3124
|
};
|
|
3092
3125
|
/**
|
|
@@ -3158,10 +3191,8 @@ class AndroidInputManager {
|
|
|
3158
3191
|
var {
|
|
3159
3192
|
selection
|
|
3160
3193
|
} = this.editor;
|
|
3161
|
-
Editor.insertBreak(this.editor);
|
|
3162
|
-
|
|
3163
|
-
|
|
3164
|
-
restoreDOM(this.editor);
|
|
3194
|
+
Editor.insertBreak(this.editor);
|
|
3195
|
+
this.restoreDOM();
|
|
3165
3196
|
|
|
3166
3197
|
if (selection) {
|
|
3167
3198
|
// Compat: Move selection to the newly inserted block if it has not moved
|
|
@@ -3186,7 +3217,7 @@ class AndroidInputManager {
|
|
|
3186
3217
|
Editor.insertText(this.editor, text);
|
|
3187
3218
|
}
|
|
3188
3219
|
|
|
3189
|
-
restoreDOM(
|
|
3220
|
+
this.restoreDOM();
|
|
3190
3221
|
};
|
|
3191
3222
|
/**
|
|
3192
3223
|
* Handle `backspace` that merges blocks
|
|
@@ -3196,7 +3227,7 @@ class AndroidInputManager {
|
|
|
3196
3227
|
this.deleteBackward = () => {
|
|
3197
3228
|
Editor.deleteBackward(this.editor);
|
|
3198
3229
|
ReactEditor.focus(this.editor);
|
|
3199
|
-
restoreDOM(
|
|
3230
|
+
this.restoreDOM();
|
|
3200
3231
|
};
|
|
3201
3232
|
/**
|
|
3202
3233
|
* Handle mutations that remove specific leaves
|
|
@@ -3212,12 +3243,13 @@ class AndroidInputManager {
|
|
|
3212
3243
|
Transforms.delete(this.editor, {
|
|
3213
3244
|
at: path
|
|
3214
3245
|
});
|
|
3215
|
-
restoreDOM(
|
|
3246
|
+
this.restoreDOM();
|
|
3216
3247
|
}
|
|
3217
3248
|
}
|
|
3218
3249
|
};
|
|
3219
3250
|
|
|
3220
3251
|
this.editor = editor;
|
|
3252
|
+
this.restoreDOM = restoreDOM;
|
|
3221
3253
|
}
|
|
3222
3254
|
|
|
3223
3255
|
}
|
|
@@ -3240,6 +3272,70 @@ function useMutationObserver(node, callback, options) {
|
|
|
3240
3272
|
});
|
|
3241
3273
|
}
|
|
3242
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
|
+
|
|
3243
3339
|
function useTrackUserInput() {
|
|
3244
3340
|
var editor = useSlateStatic();
|
|
3245
3341
|
var receivedUserInput = useRef(false);
|
|
@@ -3279,11 +3375,12 @@ var MUTATION_OBSERVER_CONFIG = {
|
|
|
3279
3375
|
};
|
|
3280
3376
|
function useAndroidInputManager(node) {
|
|
3281
3377
|
var editor = useSlateStatic();
|
|
3282
|
-
var [inputManager] = useState(() => new AndroidInputManager(editor));
|
|
3283
3378
|
var {
|
|
3284
3379
|
receivedUserInput,
|
|
3285
3380
|
onUserInput
|
|
3286
3381
|
} = useTrackUserInput();
|
|
3382
|
+
var restoreDom = useRestoreDom(node, receivedUserInput);
|
|
3383
|
+
var inputManager = useMemo(() => new AndroidInputManager(editor, restoreDom), [restoreDom, editor]);
|
|
3287
3384
|
var timeoutId = useRef(null);
|
|
3288
3385
|
var isReconciling = useRef(false);
|
|
3289
3386
|
var flush = useCallback(mutations => {
|
|
@@ -3344,10 +3441,7 @@ var AndroidEditable = props => {
|
|
|
3344
3441
|
isUpdatingSelection: false,
|
|
3345
3442
|
latestElement: null
|
|
3346
3443
|
}), []);
|
|
3347
|
-
var
|
|
3348
|
-
var onRestoreDOM = useCallback(() => {
|
|
3349
|
-
setContentKey(prev => prev + 1);
|
|
3350
|
-
}, [contentKey]); // Whenever the editor updates...
|
|
3444
|
+
var contentKey = useContentKey(editor); // Whenever the editor updates...
|
|
3351
3445
|
|
|
3352
3446
|
useIsomorphicLayoutEffect(() => {
|
|
3353
3447
|
// Update element-related weak maps with the DOM element ref.
|
|
@@ -3358,10 +3452,8 @@ var AndroidEditable = props => {
|
|
|
3358
3452
|
EDITOR_TO_ELEMENT.set(editor, ref.current);
|
|
3359
3453
|
NODE_TO_ELEMENT.set(editor, ref.current);
|
|
3360
3454
|
ELEMENT_TO_NODE.set(ref.current, editor);
|
|
3361
|
-
EDITOR_TO_RESTORE_DOM.set(editor, onRestoreDOM);
|
|
3362
3455
|
} else {
|
|
3363
3456
|
NODE_TO_ELEMENT.delete(editor);
|
|
3364
|
-
EDITOR_TO_RESTORE_DOM.delete(editor);
|
|
3365
3457
|
}
|
|
3366
3458
|
|
|
3367
3459
|
try {
|