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 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;AA2B5E,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAY3C;;GAEG;AAEH,eAAO,MAAM,eAAe,UAAW,aAAa,KAAG,GAAG,CAAC,OAqb1D,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
- constructor(editor: ReactEditor);
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;AAuBvD;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,qBAAa,mBAAmB;IAClB,OAAO,CAAC,MAAM;gBAAN,MAAM,EAAE,WAAW;IAIvC;;;;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,CAsBlB;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
+ {"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,EAAiC,MAAM,OAAO,CAAA;AAehE,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,SAAS,CAAC,WAAW,CAAC;;;EA8BlE"}
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,3 @@
1
+ import React from 'react';
2
+ export declare function useRestoreDom(node: React.RefObject<HTMLElement>, receivedUserInput: React.RefObject<boolean>): () => void;
3
+ //# sourceMappingURL=use-restore-dom.d.ts.map
@@ -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":"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"}
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;AAoBd,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,gBAirC5C,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,KAAiB,MAAM,OAAO,CAAA;AAErC,OAAO,EAAgB,KAAK,EAAa,OAAO,IAAI,YAAY,EAAE,MAAM,OAAO,CAAA;AAc/E,OAAO,EACL,kBAAkB,EAClB,eAAe,EACf,sBAAsB,EACvB,MAAM,YAAY,CAAA;AAEnB;;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;iBAsGxB,CAAA;AAED,QAAA,MAAM,eAAe;iBA7GN,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;kBAmHvB,CAAA;AAEF;;GAEG;AAEH,eAAO,MAAM,cAAc,UAAW,kBAAkB,gBASvD,CAAA;AAED,eAAe,eAAe,CAAA"}
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;AAuEpE,QAAA,MAAM,YAAY;iBAzDH,KAAK,EAAE;YACZ,OAAO;YACP,OAAO;+BACY,sBAAsB,KAAK,GAAG,CAAC,OAAO;0BAC5C,eAAe,KAAK,GAAG,CAAC,OAAO;UAC9C,SAAS;kBA4Df,CAAA;AAEF,eAAe,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,EAAa,QAAQ,EAAc,MAAM,OAAO,CAAA;AAQ/E,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"}
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,3 @@
1
+ import { Node as SlateNode } from 'slate';
2
+ export declare function useContentKey(node: SlateNode): number;
3
+ //# sourceMappingURL=use-content-key.d.ts.map
@@ -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, useState, useMemo, useCallback } from 'react';
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 EDITOR_TO_RESTORE_DOM = new WeakMap();
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); // Check if DOM is available as React does internally.
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
- return renderElement({
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(this.editor);
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); // To-do: Need a more granular solution to restoring only a specific portion
3165
- // of the document. Restoring the entire document is expensive.
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(this.editor);
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(this.editor);
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(this.editor);
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 [contentKey, setContentKey] = useState(0);
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 {