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.
- package/dist/components/editable.d.ts +1 -1
- package/dist/components/editable.d.ts.map +1 -1
- package/dist/components/leaf.d.ts.map +1 -1
- package/dist/custom-types.d.ts +2 -0
- package/dist/custom-types.d.ts.map +1 -1
- package/dist/index.es.js +71 -46
- package/dist/index.es.js.map +1 -1
- package/dist/index.js +82 -47
- package/dist/index.js.map +1 -1
- package/dist/plugin/react-editor.d.ts +1 -0
- package/dist/plugin/react-editor.d.ts.map +1 -1
- package/dist/slate-react.js +82 -47
- package/dist/slate-react.min.js +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -1578,10 +1578,27 @@ var useSlateStatic = function useSlateStatic() {
|
|
|
1578
1578
|
return editor;
|
|
1579
1579
|
};
|
|
1580
1580
|
|
|
1581
|
+
function disconnectPlaceholderResizeObserver(placeholderResizeObserver, releaseObserver) {
|
|
1582
|
+
if (placeholderResizeObserver.current) {
|
|
1583
|
+
placeholderResizeObserver.current.disconnect();
|
|
1584
|
+
|
|
1585
|
+
if (releaseObserver) {
|
|
1586
|
+
placeholderResizeObserver.current = null;
|
|
1587
|
+
}
|
|
1588
|
+
}
|
|
1589
|
+
}
|
|
1590
|
+
|
|
1591
|
+
function clearTimeoutRef(timeoutRef) {
|
|
1592
|
+
if (timeoutRef.current) {
|
|
1593
|
+
clearTimeout(timeoutRef.current);
|
|
1594
|
+
timeoutRef.current = null;
|
|
1595
|
+
}
|
|
1596
|
+
}
|
|
1581
1597
|
/**
|
|
1582
1598
|
* Individual leaves in a text node with unique formatting.
|
|
1583
1599
|
*/
|
|
1584
1600
|
|
|
1601
|
+
|
|
1585
1602
|
var Leaf = function Leaf(props) {
|
|
1586
1603
|
var leaf = props.leaf,
|
|
1587
1604
|
isLast = props.isLast,
|
|
@@ -1592,53 +1609,40 @@ var Leaf = function Leaf(props) {
|
|
|
1592
1609
|
renderLeaf = _props$renderLeaf === void 0 ? function (props) {
|
|
1593
1610
|
return /*#__PURE__*/React__default['default'].createElement(DefaultLeaf, Object.assign({}, props));
|
|
1594
1611
|
} : _props$renderLeaf;
|
|
1595
|
-
var lastPlaceholderRef = React.useRef(null);
|
|
1596
|
-
var placeholderRef = React.useRef(null);
|
|
1597
1612
|
var editor = useSlateStatic();
|
|
1598
1613
|
var placeholderResizeObserver = React.useRef(null);
|
|
1599
|
-
React.
|
|
1600
|
-
return function () {
|
|
1601
|
-
if (placeholderResizeObserver.current) {
|
|
1602
|
-
placeholderResizeObserver.current.disconnect();
|
|
1603
|
-
}
|
|
1604
|
-
};
|
|
1605
|
-
}, []);
|
|
1606
|
-
React.useEffect(function () {
|
|
1607
|
-
var placeholderEl = placeholderRef === null || placeholderRef === void 0 ? void 0 : placeholderRef.current;
|
|
1614
|
+
var placeholderRef = React.useRef(null);
|
|
1608
1615
|
|
|
1609
|
-
|
|
1610
|
-
|
|
1611
|
-
|
|
1612
|
-
|
|
1613
|
-
}
|
|
1616
|
+
var _useState = React.useState(false),
|
|
1617
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
1618
|
+
showPlaceholder = _useState2[0],
|
|
1619
|
+
setShowPlaceholder = _useState2[1];
|
|
1614
1620
|
|
|
1615
|
-
|
|
1616
|
-
|
|
1617
|
-
|
|
1618
|
-
if (placeholderEl) placeholderResizeObserver.current.observe(placeholderEl);
|
|
1619
|
-
} else if (placeholderEl) {
|
|
1620
|
-
// Create a new observer and observe the placeholder element.
|
|
1621
|
-
var ResizeObserver = window.ResizeObserver || resizeObserver.ResizeObserver;
|
|
1622
|
-
placeholderResizeObserver.current = new ResizeObserver(function () {
|
|
1623
|
-
// Force a re-render of the editor so its min-height can be updated
|
|
1624
|
-
// to the new height of the placeholder.
|
|
1625
|
-
var forceRender = EDITOR_TO_FORCE_RENDER.get(editor);
|
|
1626
|
-
forceRender === null || forceRender === void 0 ? void 0 : forceRender();
|
|
1627
|
-
});
|
|
1628
|
-
placeholderResizeObserver.current.observe(placeholderEl);
|
|
1629
|
-
}
|
|
1621
|
+
var showPlaceholderTimeoutRef = React.useRef(null);
|
|
1622
|
+
var callbackPlaceholderRef = React.useCallback(function (placeholderEl) {
|
|
1623
|
+
disconnectPlaceholderResizeObserver(placeholderResizeObserver, placeholderEl == null);
|
|
1630
1624
|
|
|
1631
|
-
if (
|
|
1632
|
-
|
|
1633
|
-
// Force a re-render of the editor so its min-height can be reset.
|
|
1634
|
-
var forceRender = EDITOR_TO_FORCE_RENDER.get(editor);
|
|
1635
|
-
forceRender === null || forceRender === void 0 ? void 0 : forceRender();
|
|
1636
|
-
}
|
|
1625
|
+
if (placeholderEl == null) {
|
|
1626
|
+
var _leaf$onPlaceholderRe;
|
|
1637
1627
|
|
|
1638
|
-
lastPlaceholderRef.current = placeholderRef.current;
|
|
1639
|
-
return function () {
|
|
1640
1628
|
EDITOR_TO_PLACEHOLDER_ELEMENT["delete"](editor);
|
|
1641
|
-
|
|
1629
|
+
(_leaf$onPlaceholderRe = leaf.onPlaceholderResize) === null || _leaf$onPlaceholderRe === void 0 ? void 0 : _leaf$onPlaceholderRe.call(leaf, null);
|
|
1630
|
+
} else {
|
|
1631
|
+
EDITOR_TO_PLACEHOLDER_ELEMENT.set(editor, placeholderEl);
|
|
1632
|
+
|
|
1633
|
+
if (!placeholderResizeObserver.current) {
|
|
1634
|
+
// Create a new observer and observe the placeholder element.
|
|
1635
|
+
var ResizeObserver = window.ResizeObserver || resizeObserver.ResizeObserver;
|
|
1636
|
+
placeholderResizeObserver.current = new ResizeObserver(function () {
|
|
1637
|
+
var _leaf$onPlaceholderRe2;
|
|
1638
|
+
|
|
1639
|
+
(_leaf$onPlaceholderRe2 = leaf.onPlaceholderResize) === null || _leaf$onPlaceholderRe2 === void 0 ? void 0 : _leaf$onPlaceholderRe2.call(leaf, placeholderEl);
|
|
1640
|
+
});
|
|
1641
|
+
}
|
|
1642
|
+
|
|
1643
|
+
placeholderResizeObserver.current.observe(placeholderEl);
|
|
1644
|
+
placeholderRef.current = placeholderEl;
|
|
1645
|
+
}
|
|
1642
1646
|
}, [placeholderRef, leaf, editor]);
|
|
1643
1647
|
var children = /*#__PURE__*/React__default['default'].createElement(String, {
|
|
1644
1648
|
isLast: isLast,
|
|
@@ -1646,8 +1650,27 @@ var Leaf = function Leaf(props) {
|
|
|
1646
1650
|
parent: parent,
|
|
1647
1651
|
text: text
|
|
1648
1652
|
});
|
|
1653
|
+
var leafIsPlaceholder = leaf[PLACEHOLDER_SYMBOL];
|
|
1654
|
+
React.useEffect(function () {
|
|
1655
|
+
if (leafIsPlaceholder) {
|
|
1656
|
+
if (!showPlaceholderTimeoutRef.current) {
|
|
1657
|
+
// Delay the placeholder so it will not render in a selection
|
|
1658
|
+
showPlaceholderTimeoutRef.current = setTimeout(function () {
|
|
1659
|
+
setShowPlaceholder(true);
|
|
1660
|
+
showPlaceholderTimeoutRef.current = null;
|
|
1661
|
+
}, 300);
|
|
1662
|
+
}
|
|
1663
|
+
} else {
|
|
1664
|
+
clearTimeoutRef(showPlaceholderTimeoutRef);
|
|
1665
|
+
setShowPlaceholder(false);
|
|
1666
|
+
}
|
|
1667
|
+
|
|
1668
|
+
return function () {
|
|
1669
|
+
return clearTimeoutRef(showPlaceholderTimeoutRef);
|
|
1670
|
+
};
|
|
1671
|
+
}, [leafIsPlaceholder, setShowPlaceholder]);
|
|
1649
1672
|
|
|
1650
|
-
if (
|
|
1673
|
+
if (leafIsPlaceholder && showPlaceholder) {
|
|
1651
1674
|
var placeholderProps = {
|
|
1652
1675
|
children: leaf.placeholder,
|
|
1653
1676
|
attributes: {
|
|
@@ -1663,7 +1686,7 @@ var Leaf = function Leaf(props) {
|
|
|
1663
1686
|
textDecoration: 'none'
|
|
1664
1687
|
},
|
|
1665
1688
|
contentEditable: false,
|
|
1666
|
-
ref:
|
|
1689
|
+
ref: callbackPlaceholderRef
|
|
1667
1690
|
}
|
|
1668
1691
|
};
|
|
1669
1692
|
children = /*#__PURE__*/React__default['default'].createElement(React__default['default'].Fragment, null, renderPlaceholder(placeholderProps), children);
|
|
@@ -3729,8 +3752,6 @@ var Children = function Children(props) {
|
|
|
3729
3752
|
|
|
3730
3753
|
|
|
3731
3754
|
var Editable = function Editable(props) {
|
|
3732
|
-
var _EDITOR_TO_PLACEHOLDE, _EDITOR_TO_PLACEHOLDE2;
|
|
3733
|
-
|
|
3734
3755
|
var defaultRenderPlaceholder = React.useCallback(function (props) {
|
|
3735
3756
|
return /*#__PURE__*/React__default['default'].createElement(DefaultPlaceholder, Object.assign({}, props));
|
|
3736
3757
|
}, []);
|
|
@@ -3766,6 +3787,11 @@ var Editable = function Editable(props) {
|
|
|
3766
3787
|
var ref = React.useRef(null);
|
|
3767
3788
|
var deferredOperations = React.useRef([]);
|
|
3768
3789
|
|
|
3790
|
+
var _useState3 = React.useState(),
|
|
3791
|
+
_useState4 = _slicedToArray(_useState3, 2),
|
|
3792
|
+
placeholderHeight = _useState4[0],
|
|
3793
|
+
setPlaceholderHeight = _useState4[1];
|
|
3794
|
+
|
|
3769
3795
|
var _useTrackUserInput = useTrackUserInput(),
|
|
3770
3796
|
onUserInput = _useTrackUserInput.onUserInput,
|
|
3771
3797
|
receivedUserInput = _useTrackUserInput.receivedUserInput;
|
|
@@ -4320,12 +4346,22 @@ var Editable = function Editable(props) {
|
|
|
4320
4346
|
};
|
|
4321
4347
|
}, [scheduleOnDOMSelectionChange]);
|
|
4322
4348
|
var decorations = decorate([editor, []]);
|
|
4349
|
+
var showPlaceholder = placeholder && editor.children.length === 1 && Array.from(slate.Node.texts(editor)).length === 1 && slate.Node.string(editor) === '' && !isComposing;
|
|
4350
|
+
var placeHolderResizeHandler = React.useCallback(function (placeholderEl) {
|
|
4351
|
+
if (placeholderEl && showPlaceholder) {
|
|
4352
|
+
var _placeholderEl$getBou;
|
|
4353
|
+
|
|
4354
|
+
setPlaceholderHeight((_placeholderEl$getBou = placeholderEl.getBoundingClientRect()) === null || _placeholderEl$getBou === void 0 ? void 0 : _placeholderEl$getBou.height);
|
|
4355
|
+
} else {
|
|
4356
|
+
setPlaceholderHeight(undefined);
|
|
4357
|
+
}
|
|
4358
|
+
}, [showPlaceholder]);
|
|
4323
4359
|
|
|
4324
|
-
if (
|
|
4360
|
+
if (showPlaceholder) {
|
|
4325
4361
|
var _decorations$push;
|
|
4326
4362
|
|
|
4327
4363
|
var start = slate.Editor.start(editor, []);
|
|
4328
|
-
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));
|
|
4364
|
+
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));
|
|
4329
4365
|
}
|
|
4330
4366
|
|
|
4331
4367
|
var marks = editor.marks;
|
|
@@ -4378,7 +4414,6 @@ var Editable = function Editable(props) {
|
|
|
4378
4414
|
EDITOR_TO_PENDING_INSERTION_MARKS["delete"](editor);
|
|
4379
4415
|
});
|
|
4380
4416
|
});
|
|
4381
|
-
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;
|
|
4382
4417
|
return /*#__PURE__*/React__default['default'].createElement(ReadOnlyContext.Provider, {
|
|
4383
4418
|
value: readOnly
|
|
4384
4419
|
}, /*#__PURE__*/React__default['default'].createElement(DecorateContext.Provider, {
|