slate-react 0.92.0 → 0.92.1-2023220163057

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.
@@ -118,6 +118,7 @@ export declare const ReactEditor: {
118
118
  suppressThrow: T_1;
119
119
  }): T_1 extends true ? import("slate").BaseSelection : import("slate").BaseRange & {
120
120
  placeholder?: string | undefined;
121
+ onPlaceholderResize?: ((node: HTMLElement | null) => void) | undefined;
121
122
  };
122
123
  hasRange(editor: ReactEditor, range: Range): boolean;
123
124
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"react-editor.d.ts","sourceRoot":"","sources":["../packages/slate-react/src/plugin/react-editor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"react-editor.d.ts","sourceRoot":"","sources":["../packages/slate-react/src/plugin/react-editor.ts"],"names":[],"mappings":"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"}
@@ -2730,10 +2730,27 @@
2730
2730
  return editor;
2731
2731
  };
2732
2732
 
2733
+ function disconnectPlaceholderResizeObserver(placeholderResizeObserver, releaseObserver) {
2734
+ if (placeholderResizeObserver.current) {
2735
+ placeholderResizeObserver.current.disconnect();
2736
+
2737
+ if (releaseObserver) {
2738
+ placeholderResizeObserver.current = null;
2739
+ }
2740
+ }
2741
+ }
2742
+
2743
+ function clearTimeoutRef(timeoutRef) {
2744
+ if (timeoutRef.current) {
2745
+ clearTimeout(timeoutRef.current);
2746
+ timeoutRef.current = null;
2747
+ }
2748
+ }
2733
2749
  /**
2734
2750
  * Individual leaves in a text node with unique formatting.
2735
2751
  */
2736
2752
 
2753
+
2737
2754
  var Leaf = function Leaf(props) {
2738
2755
  var leaf = props.leaf,
2739
2756
  isLast = props.isLast,
@@ -2744,53 +2761,40 @@
2744
2761
  renderLeaf = _props$renderLeaf === void 0 ? function (props) {
2745
2762
  return /*#__PURE__*/React__default['default'].createElement(DefaultLeaf, Object.assign({}, props));
2746
2763
  } : _props$renderLeaf;
2747
- var lastPlaceholderRef = React.useRef(null);
2748
- var placeholderRef = React.useRef(null);
2749
2764
  var editor = useSlateStatic();
2750
2765
  var placeholderResizeObserver = React.useRef(null);
2751
- React.useEffect(function () {
2752
- return function () {
2753
- if (placeholderResizeObserver.current) {
2754
- placeholderResizeObserver.current.disconnect();
2755
- }
2756
- };
2757
- }, []);
2758
- React.useEffect(function () {
2759
- var placeholderEl = placeholderRef === null || placeholderRef === void 0 ? void 0 : placeholderRef.current;
2766
+ var placeholderRef = React.useRef(null);
2760
2767
 
2761
- if (placeholderEl) {
2762
- EDITOR_TO_PLACEHOLDER_ELEMENT.set(editor, placeholderEl);
2763
- } else {
2764
- EDITOR_TO_PLACEHOLDER_ELEMENT["delete"](editor);
2765
- }
2768
+ var _useState = React.useState(false),
2769
+ _useState2 = _slicedToArray(_useState, 2),
2770
+ showPlaceholder = _useState2[0],
2771
+ setShowPlaceholder = _useState2[1];
2766
2772
 
2767
- if (placeholderResizeObserver.current) {
2768
- // Update existing observer.
2769
- placeholderResizeObserver.current.disconnect();
2770
- if (placeholderEl) placeholderResizeObserver.current.observe(placeholderEl);
2771
- } else if (placeholderEl) {
2772
- // Create a new observer and observe the placeholder element.
2773
- var ResizeObserver$1 = window.ResizeObserver || ResizeObserver;
2774
- placeholderResizeObserver.current = new ResizeObserver$1(function () {
2775
- // Force a re-render of the editor so its min-height can be updated
2776
- // to the new height of the placeholder.
2777
- var forceRender = EDITOR_TO_FORCE_RENDER.get(editor);
2778
- forceRender === null || forceRender === void 0 ? void 0 : forceRender();
2779
- });
2780
- placeholderResizeObserver.current.observe(placeholderEl);
2781
- }
2773
+ var showPlaceholderTimeoutRef = React.useRef(null);
2774
+ var callbackPlaceholderRef = React.useCallback(function (placeholderEl) {
2775
+ disconnectPlaceholderResizeObserver(placeholderResizeObserver, placeholderEl == null);
2782
2776
 
2783
- if (!placeholderEl && lastPlaceholderRef.current) {
2784
- // No placeholder element, so no need for a resize observer.
2785
- // Force a re-render of the editor so its min-height can be reset.
2786
- var forceRender = EDITOR_TO_FORCE_RENDER.get(editor);
2787
- forceRender === null || forceRender === void 0 ? void 0 : forceRender();
2788
- }
2777
+ if (placeholderEl == null) {
2778
+ var _leaf$onPlaceholderRe;
2789
2779
 
2790
- lastPlaceholderRef.current = placeholderRef.current;
2791
- return function () {
2792
2780
  EDITOR_TO_PLACEHOLDER_ELEMENT["delete"](editor);
2793
- };
2781
+ (_leaf$onPlaceholderRe = leaf.onPlaceholderResize) === null || _leaf$onPlaceholderRe === void 0 ? void 0 : _leaf$onPlaceholderRe.call(leaf, null);
2782
+ } else {
2783
+ EDITOR_TO_PLACEHOLDER_ELEMENT.set(editor, placeholderEl);
2784
+
2785
+ if (!placeholderResizeObserver.current) {
2786
+ // Create a new observer and observe the placeholder element.
2787
+ var ResizeObserver$1 = window.ResizeObserver || ResizeObserver;
2788
+ placeholderResizeObserver.current = new ResizeObserver$1(function () {
2789
+ var _leaf$onPlaceholderRe2;
2790
+
2791
+ (_leaf$onPlaceholderRe2 = leaf.onPlaceholderResize) === null || _leaf$onPlaceholderRe2 === void 0 ? void 0 : _leaf$onPlaceholderRe2.call(leaf, placeholderEl);
2792
+ });
2793
+ }
2794
+
2795
+ placeholderResizeObserver.current.observe(placeholderEl);
2796
+ placeholderRef.current = placeholderEl;
2797
+ }
2794
2798
  }, [placeholderRef, leaf, editor]);
2795
2799
  var children = /*#__PURE__*/React__default['default'].createElement(String$1, {
2796
2800
  isLast: isLast,
@@ -2798,8 +2802,27 @@
2798
2802
  parent: parent,
2799
2803
  text: text
2800
2804
  });
2805
+ var leafIsPlaceholder = leaf[PLACEHOLDER_SYMBOL];
2806
+ React.useEffect(function () {
2807
+ if (leafIsPlaceholder) {
2808
+ if (!showPlaceholderTimeoutRef.current) {
2809
+ // Delay the placeholder so it will not render in a selection
2810
+ showPlaceholderTimeoutRef.current = setTimeout(function () {
2811
+ setShowPlaceholder(true);
2812
+ showPlaceholderTimeoutRef.current = null;
2813
+ }, 300);
2814
+ }
2815
+ } else {
2816
+ clearTimeoutRef(showPlaceholderTimeoutRef);
2817
+ setShowPlaceholder(false);
2818
+ }
2819
+
2820
+ return function () {
2821
+ return clearTimeoutRef(showPlaceholderTimeoutRef);
2822
+ };
2823
+ }, [leafIsPlaceholder, setShowPlaceholder]);
2801
2824
 
2802
- if (leaf[PLACEHOLDER_SYMBOL]) {
2825
+ if (leafIsPlaceholder && showPlaceholder) {
2803
2826
  var placeholderProps = {
2804
2827
  children: leaf.placeholder,
2805
2828
  attributes: {
@@ -2815,7 +2838,7 @@
2815
2838
  textDecoration: 'none'
2816
2839
  },
2817
2840
  contentEditable: false,
2818
- ref: placeholderRef
2841
+ ref: callbackPlaceholderRef
2819
2842
  }
2820
2843
  };
2821
2844
  children = /*#__PURE__*/React__default['default'].createElement(React__default['default'].Fragment, null, renderPlaceholder(placeholderProps), children);
@@ -5137,8 +5160,6 @@
5137
5160
 
5138
5161
 
5139
5162
  var Editable = function Editable(props) {
5140
- var _EDITOR_TO_PLACEHOLDE, _EDITOR_TO_PLACEHOLDE2;
5141
-
5142
5163
  var defaultRenderPlaceholder = React.useCallback(function (props) {
5143
5164
  return /*#__PURE__*/React__default['default'].createElement(DefaultPlaceholder, Object.assign({}, props));
5144
5165
  }, []);
@@ -5174,6 +5195,11 @@
5174
5195
  var ref = React.useRef(null);
5175
5196
  var deferredOperations = React.useRef([]);
5176
5197
 
5198
+ var _useState3 = React.useState(),
5199
+ _useState4 = _slicedToArray(_useState3, 2),
5200
+ placeholderHeight = _useState4[0],
5201
+ setPlaceholderHeight = _useState4[1];
5202
+
5177
5203
  var _useTrackUserInput = useTrackUserInput(),
5178
5204
  onUserInput = _useTrackUserInput.onUserInput,
5179
5205
  receivedUserInput = _useTrackUserInput.receivedUserInput;
@@ -5728,12 +5754,22 @@
5728
5754
  };
5729
5755
  }, [scheduleOnDOMSelectionChange]);
5730
5756
  var decorations = decorate([editor, []]);
5757
+ var showPlaceholder = placeholder && editor.children.length === 1 && Array.from(slate.Node.texts(editor)).length === 1 && slate.Node.string(editor) === '' && !isComposing;
5758
+ var placeHolderResizeHandler = React.useCallback(function (placeholderEl) {
5759
+ if (placeholderEl && showPlaceholder) {
5760
+ var _placeholderEl$getBou;
5761
+
5762
+ setPlaceholderHeight((_placeholderEl$getBou = placeholderEl.getBoundingClientRect()) === null || _placeholderEl$getBou === void 0 ? void 0 : _placeholderEl$getBou.height);
5763
+ } else {
5764
+ setPlaceholderHeight(undefined);
5765
+ }
5766
+ }, [showPlaceholder]);
5731
5767
 
5732
- if (placeholder && editor.children.length === 1 && Array.from(slate.Node.texts(editor)).length === 1 && slate.Node.string(editor) === '' && !isComposing) {
5768
+ if (showPlaceholder) {
5733
5769
  var _decorations$push;
5734
5770
 
5735
5771
  var start = slate.Editor.start(editor, []);
5736
- decorations.push((_decorations$push = {}, _defineProperty(_decorations$push, PLACEHOLDER_SYMBOL, true), _defineProperty(_decorations$push, "placeholder", placeholder), _defineProperty(_decorations$push, "anchor", start), _defineProperty(_decorations$push, "focus", start), _decorations$push));
5772
+ decorations.push((_decorations$push = {}, _defineProperty(_decorations$push, PLACEHOLDER_SYMBOL, true), _defineProperty(_decorations$push, "placeholder", placeholder), _defineProperty(_decorations$push, "onPlaceholderResize", placeHolderResizeHandler), _defineProperty(_decorations$push, "anchor", start), _defineProperty(_decorations$push, "focus", start), _decorations$push));
5737
5773
  }
5738
5774
 
5739
5775
  var marks = editor.marks;
@@ -5786,7 +5822,6 @@
5786
5822
  EDITOR_TO_PENDING_INSERTION_MARKS["delete"](editor);
5787
5823
  });
5788
5824
  });
5789
- var placeholderHeight = (_EDITOR_TO_PLACEHOLDE = EDITOR_TO_PLACEHOLDER_ELEMENT.get(editor)) === null || _EDITOR_TO_PLACEHOLDE === void 0 ? void 0 : (_EDITOR_TO_PLACEHOLDE2 = _EDITOR_TO_PLACEHOLDE.getBoundingClientRect()) === null || _EDITOR_TO_PLACEHOLDE2 === void 0 ? void 0 : _EDITOR_TO_PLACEHOLDE2.height;
5790
5825
  return /*#__PURE__*/React__default['default'].createElement(ReadOnlyContext.Provider, {
5791
5826
  value: readOnly
5792
5827
  }, /*#__PURE__*/React__default['default'].createElement(DecorateContext.Provider, {