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.
- package/dist/components/editable.d.ts.map +1 -1
- package/dist/components/slate.d.ts +1 -0
- package/dist/components/slate.d.ts.map +1 -1
- package/dist/hooks/use-composing.d.ts +2 -0
- package/dist/hooks/use-composing.d.ts.map +1 -1
- package/dist/index.es.js +76 -15
- package/dist/index.es.js.map +1 -1
- package/dist/index.js +79 -16
- package/dist/index.js.map +1 -1
- package/dist/slate-react.js +79 -16
- package/dist/slate-react.min.js +1 -1
- package/package.json +2 -1
|
@@ -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,
|
|
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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-composing.d.ts","sourceRoot":"","sources":["../../../../packages/slate-react/src/hooks/use-composing.ts"],"names":[],"mappings":"
|
|
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
|
-
|
|
3960
|
-
|
|
3961
|
-
|
|
3962
|
-
|
|
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 &&
|
|
4731
|
+
if (onValueChange && changed && !external) {
|
|
4708
4732
|
onValueChange(editor.children);
|
|
4709
4733
|
}
|
|
4710
4734
|
handleSelectorChange();
|
|
4711
4735
|
}, [editor, handleSelectorChange, onChange, onSelectionChange, onValueChange]);
|
|
4712
|
-
|
|
4713
|
-
|
|
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.
|
|
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));
|