slate-react 0.144.1-20261017224152 → 0.145.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.
@@ -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":"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"}
@@ -8,6 +8,7 @@ import { ReactEditor } from '../plugin/react-editor';
8
8
  export declare const Slate: (props: {
9
9
  editor: ReactEditor;
10
10
  initialValue?: Descendant[] | undefined;
11
+ value?: Descendant[] | undefined;
11
12
  children: React.ReactNode;
12
13
  onChange?: ((value: Descendant[]) => void) | undefined;
13
14
  onSelectionChange?: ((selection: Selection) => void) | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"slate.d.ts","sourceRoot":"","sources":["../../../../packages/slate-react/src/components/slate.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmD,MAAM,OAAO,CAAA;AACvE,OAAO,EAAE,UAAU,EAAqC,SAAS,EAAE,MAAM,OAAO,CAAA;AAShF,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAA;AAGpD;;;GAGG;AAEH,eAAO,MAAM,KAAK,GAAI,OAAO;IAC3B,MAAM,EAAE,WAAW,CAAA;IACnB,YAAY,CAAC,EAAE,UAAU,EAAE,GAAG,SAAS,CAAA;IACvC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;IACzB,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,UAAU,EAAE,KAAK,IAAI,CAAC,GAAG,SAAS,CAAA;IACtD,iBAAiB,CAAC,EAAE,CAAC,CAAC,SAAS,EAAE,SAAS,KAAK,IAAI,CAAC,GAAG,SAAS,CAAA;IAChE,aAAa,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,UAAU,EAAE,KAAK,IAAI,CAAC,GAAG,SAAS,CAAA;CAC5D,sBAqHA,CAAA"}
1
+ {"version":3,"file":"slate.d.ts","sourceRoot":"","sources":["../../../../packages/slate-react/src/components/slate.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmD,MAAM,OAAO,CAAA;AACvE,OAAO,EACL,UAAU,EAKV,SAAS,EAEV,MAAM,OAAO,CAAA;AAed,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAA;AAGpD;;;GAGG;AAEH,eAAO,MAAM,KAAK,GAAI,OAAO;IAC3B,MAAM,EAAE,WAAW,CAAA;IACnB,YAAY,CAAC,EAAE,UAAU,EAAE,GAAG,SAAS,CAAA;IACvC,KAAK,CAAC,EAAE,UAAU,EAAE,GAAG,SAAS,CAAA;IAChC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;IACzB,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,UAAU,EAAE,KAAK,IAAI,CAAC,GAAG,SAAS,CAAA;IACtD,iBAAiB,CAAC,EAAE,CAAC,CAAC,SAAS,EAAE,SAAS,KAAK,IAAI,CAAC,GAAG,SAAS,CAAA;IAChE,aAAa,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,UAAU,EAAE,KAAK,IAAI,CAAC,GAAG,SAAS,CAAA;CAC5D,sBA2LA,CAAA"}
@@ -1,3 +1,5 @@
1
+ import { ReactEditor } from '../plugin/react-editor';
2
+ export declare const EDITOR_TO_COMPOSING: WeakMap<ReactEditor, boolean>;
1
3
  /**
2
4
  * A React context for sharing the `composing` state of the editor.
3
5
  */
@@ -1 +1 @@
1
- {"version":3,"file":"use-composing.d.ts","sourceRoot":"","sources":["../../../../packages/slate-react/src/hooks/use-composing.ts"],"names":[],"mappings":"AAEA;;GAEG;AAEH,eAAO,MAAM,gBAAgB,kCAAuB,CAAA;AAEpD;;GAEG;AAEH,eAAO,MAAM,YAAY,QAAO,OAE/B,CAAA"}
1
+ {"version":3,"file":"use-composing.d.ts","sourceRoot":"","sources":["../../../../packages/slate-react/src/hooks/use-composing.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAA;AAEpD,eAAO,MAAM,mBAAmB,+BAAsC,CAAA;AAEtE;;GAEG;AAEH,eAAO,MAAM,gBAAgB,kCAAuB,CAAA;AAEpD;;GAEG;AAEH,eAAO,MAAM,YAAY,QAAO,OAE/B,CAAA"}
package/dist/index.es.js CHANGED
@@ -2882,6 +2882,7 @@ const RestoreDOM = IS_ANDROID ? RestoreDOMComponent : ({
2882
2882
  children
2883
2883
  }) => /*#__PURE__*/React.createElement(React.Fragment, null, children);
2884
2884
 
2885
+ const EDITOR_TO_COMPOSING = new WeakMap();
2885
2886
  /**
2886
2887
  * A React context for sharing the `composing` state of the editor.
2887
2888
  */
@@ -2935,6 +2936,12 @@ const Editable = /*#__PURE__*/forwardRef((props, forwardedRef) => {
2935
2936
  const editor = useSlate();
2936
2937
  // Rerender editor when composition status changed
2937
2938
  const [isComposing, setIsComposing] = useState(false);
2939
+ useIsomorphicLayoutEffect(() => {
2940
+ EDITOR_TO_COMPOSING.set(editor, isComposing);
2941
+ return () => {
2942
+ EDITOR_TO_COMPOSING.delete(editor);
2943
+ };
2944
+ }, [editor, isComposing]);
2938
2945
  const ref = useRef(null);
2939
2946
  const previousChildren = useRef(editor.children);
2940
2947
  const previousSelection = useRef(editor.selection);
@@ -3956,12 +3963,10 @@ const Editable = /*#__PURE__*/forwardRef((props, forwardedRef) => {
3956
3963
  }
3957
3964
  if (ReactEditor.hasSelectableTarget(editor, event.target)) {
3958
3965
  var _androidInputManagerR3;
3959
- if (ReactEditor.isComposing(editor)) {
3960
- Promise.resolve().then(() => {
3961
- setIsComposing(false);
3962
- IS_COMPOSING.set(editor, false);
3963
- });
3964
- }
3966
+ Promise.resolve().then(() => {
3967
+ setIsComposing(false);
3968
+ IS_COMPOSING.set(editor, false);
3969
+ });
3965
3970
  (_androidInputManagerR3 = androidInputManagerRef.current) === null || _androidInputManagerR3 === void 0 || _androidInputManagerR3.handleCompositionEnd(event);
3966
3971
  const deleteOnCompositionEnd = deleteOnCompositionEndRef.current;
3967
3972
  deleteOnCompositionEndRef.current = false;
@@ -4656,7 +4661,7 @@ const useFocused = () => {
4656
4661
 
4657
4662
  const REACT_MAJOR_VERSION = parseInt(React.version.split('.')[0], 10);
4658
4663
 
4659
- const _excluded = ["editor", "children", "onChange", "onSelectionChange", "onValueChange", "initialValue"];
4664
+ const _excluded = ["editor", "children", "onChange", "onSelectionChange", "onValueChange", "initialValue", "value"];
4660
4665
  /**
4661
4666
  * A wrapper around the provider to handle `onChange` events, because the editor
4662
4667
  * is a mutable singleton so it won't ever register as "changed" otherwise.
@@ -4668,22 +4673,33 @@ const Slate = props => {
4668
4673
  onChange,
4669
4674
  onSelectionChange,
4670
4675
  onValueChange,
4671
- initialValue
4676
+ initialValue,
4677
+ value: controlledValue
4672
4678
  } = props,
4673
4679
  rest = _objectWithoutProperties(props, _excluded);
4674
4680
  const initializedEditor = useRef(null);
4681
+ const lastEmittedValue = useRef(undefined);
4682
+ const lastAppliedValue = useRef(undefined);
4683
+ const appliedChildren = useRef(undefined);
4684
+ if (controlledValue !== undefined && initialValue !== undefined) {
4685
+ throw new Error('[Slate] value and initialValue cannot be used together.');
4686
+ }
4687
+ if (controlledValue !== undefined && !Node.isNodeList(controlledValue)) {
4688
+ throw new Error(`[Slate] value is invalid! Expected a list of elements but got: ${Scrubber.stringify(controlledValue)}`);
4689
+ }
4675
4690
  if (initializedEditor.current !== editor) {
4691
+ var _ref;
4676
4692
  if (!Editor.isEditor(editor)) {
4677
4693
  throw new Error(`[Slate] editor is invalid! You passed: ${Scrubber.stringify(editor)}`);
4678
4694
  }
4679
- if (initialValue === undefined && editor.children.length === 0) {
4695
+ if (initialValue === undefined && controlledValue === undefined && editor.children.length === 0) {
4680
4696
  throw new Error('[Slate] editor.children is empty and no initialValue was provided. If this is intentional, pass initialValue={[]} to the Slate component.');
4681
4697
  }
4682
- const value = initialValue !== null && initialValue !== void 0 ? initialValue : editor.children;
4698
+ const value = (_ref = initialValue !== null && initialValue !== void 0 ? initialValue : controlledValue) !== null && _ref !== void 0 ? _ref : editor.children;
4683
4699
  if (!Node.isNodeList(value)) {
4684
4700
  throw new Error(`[Slate] initialValue is invalid! Expected a list of elements but got: ${Scrubber.stringify(value)}`);
4685
4701
  }
4686
- const copied = initialValue === undefined ? value : value.map(copyNodeInUse);
4702
+ const copied = initialValue === undefined && controlledValue === undefined ? value : value.map(copyNodeInUse);
4687
4703
  const _children = copied.every((node, i) => node === value[i]) ? value : copied;
4688
4704
  editor.children = _children.length > 0 ? _children : [{
4689
4705
  children: [{
@@ -4692,29 +4708,74 @@ const Slate = props => {
4692
4708
  }];
4693
4709
  Object.assign(editor, rest);
4694
4710
  initializedEditor.current = editor;
4711
+ lastEmittedValue.current = undefined;
4712
+ lastAppliedValue.current = controlledValue;
4695
4713
  }
4696
4714
  const {
4697
4715
  selectorContext,
4698
4716
  onChange: handleSelectorChange
4699
4717
  } = useSelectorContext();
4700
4718
  const onContextChange = useCallback(() => {
4719
+ const changed = editor.operations.some(op => op.type !== 'set_selection');
4720
+ const external = changed && editor.children === appliedChildren.current;
4721
+ appliedChildren.current = undefined;
4722
+ if (changed && !external) {
4723
+ lastEmittedValue.current = editor.children;
4724
+ }
4701
4725
  if (onChange) {
4702
4726
  onChange(editor.children);
4703
4727
  }
4704
4728
  if (onSelectionChange && editor.operations.find(op => op.type === 'set_selection')) {
4705
4729
  onSelectionChange(editor.selection);
4706
4730
  }
4707
- if (onValueChange && editor.operations.find(op => op.type !== 'set_selection')) {
4731
+ if (onValueChange && changed && !external) {
4708
4732
  onValueChange(editor.children);
4709
4733
  }
4710
4734
  handleSelectorChange();
4711
4735
  }, [editor, handleSelectorChange, onChange, onSelectionChange, onValueChange]);
4712
- useEffect(() => {
4713
- EDITOR_TO_ON_CHANGE.set(editor, onContextChange);
4736
+ const controlled = controlledValue !== undefined;
4737
+ const registerOnChange = useCallback(() => {
4738
+ const callback = () => onContextChange();
4739
+ EDITOR_TO_ON_CHANGE.set(editor, callback);
4714
4740
  return () => {
4715
- EDITOR_TO_ON_CHANGE.set(editor, () => {});
4741
+ if (EDITOR_TO_ON_CHANGE.get(editor) === callback) {
4742
+ EDITOR_TO_ON_CHANGE.delete(editor);
4743
+ }
4716
4744
  };
4717
4745
  }, [editor, onContextChange]);
4746
+ useEffect(() => {
4747
+ if (!controlled) return registerOnChange();
4748
+ }, [controlled, registerOnChange]);
4749
+ useIsomorphicLayoutEffect(() => {
4750
+ if (controlled) return registerOnChange();
4751
+ }, [controlled, registerOnChange]);
4752
+ useIsomorphicLayoutEffect(() => {
4753
+ let frame;
4754
+ const apply = () => {
4755
+ var _EDITOR_TO_PENDING_DI;
4756
+ if (controlledValue === undefined) return;
4757
+ if (controlledValue === lastEmittedValue.current) {
4758
+ lastAppliedValue.current = controlledValue;
4759
+ return;
4760
+ }
4761
+ if (controlledValue === lastAppliedValue.current) return;
4762
+ if (ReactEditor.isComposing(editor) || EDITOR_TO_COMPOSING.get(editor) || EDITOR_TO_PENDING_ACTION.get(editor) || (_EDITOR_TO_PENDING_DI = EDITOR_TO_PENDING_DIFFS.get(editor)) !== null && _EDITOR_TO_PENDING_DI !== void 0 && _EDITOR_TO_PENDING_DI.length) {
4763
+ frame = window.requestAnimationFrame(apply);
4764
+ return;
4765
+ }
4766
+ const previous = editor.children;
4767
+ lastAppliedValue.current = controlledValue;
4768
+ Transforms.setChildren(editor, controlledValue);
4769
+ if (previous !== editor.children) {
4770
+ appliedChildren.current = editor.children;
4771
+ handleSelectorChange();
4772
+ }
4773
+ };
4774
+ apply();
4775
+ return () => {
4776
+ if (frame !== undefined) window.cancelAnimationFrame(frame);
4777
+ };
4778
+ }, [editor, controlledValue, handleSelectorChange]);
4718
4779
  const [isFocused, setIsFocused] = useState(ReactEditor.isFocused(editor));
4719
4780
  useEffect(() => {
4720
4781
  setIsFocused(ReactEditor.isFocused(editor));