slate-react 0.88.2 → 0.89.0-20230315644
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/leaf.d.ts.map +1 -1
- package/dist/index.es.js +78 -18
- package/dist/index.es.js.map +1 -1
- package/dist/index.js +76 -16
- package/dist/index.js.map +1 -1
- package/dist/plugin/react-editor.d.ts +2 -2
- package/dist/plugin/react-editor.d.ts.map +1 -1
- package/dist/plugin/with-react.d.ts.map +1 -1
- package/dist/slate-react.js +577 -19
- package/dist/slate-react.min.js +1 -1
- package/dist/utils/diff-text.d.ts.map +1 -1
- package/dist/utils/where-if-supported.d.ts +14 -0
- package/dist/utils/where-if-supported.d.ts.map +1 -0
- 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":"AAGA,OAAO,KAON,MAAM,OAAO,CAAA;AAEd,OAAO,EAEL,OAAO,EAEP,SAAS,EAET,KAAK,EACL,IAAI,EAEL,MAAM,OAAO,CAAA;AACd,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAA;AAOpD,OAAO,EAGL,QAAQ,EAMT,MAAM,cAAc,CAAA;
|
|
1
|
+
{"version":3,"file":"editable.d.ts","sourceRoot":"","sources":["../packages/slate-react/src/components/editable.tsx"],"names":[],"mappings":"AAGA,OAAO,KAON,MAAM,OAAO,CAAA;AAEd,OAAO,EAEL,OAAO,EAEP,SAAS,EAET,KAAK,EACL,IAAI,EAEL,MAAM,OAAO,CAAA;AACd,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAA;AAOpD,OAAO,EAGL,QAAQ,EAMT,MAAM,cAAc,CAAA;AA4CrB;;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,gBA0+C5C,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,gBAOxB,CAAA;AAED;;GAEG;AAEH,eAAO,MAAM,eAAe,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,KAAK,EAAa,CAAA;AA4BtE;;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":"leaf.d.ts","sourceRoot":"","sources":["../packages/slate-react/src/components/leaf.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA4B,MAAM,OAAO,CAAA;AAChD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"leaf.d.ts","sourceRoot":"","sources":["../packages/slate-react/src/components/leaf.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA4B,MAAM,OAAO,CAAA;AAChD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,OAAO,CAAA;AAQrC,OAAO,EAAE,eAAe,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAA;AA8HpE,QAAA,MAAM,YAAY;YArHR,OAAO;UACT,IAAI;YACF,OAAO;+BACY,sBAAsB,KAAK,WAAW;0BAC5C,eAAe,KAAK,WAAW;UAC9C,IAAI;kBA0HV,CAAA;AAEF,eAAO,MAAM,WAAW,UAAW,eAAe,gBAGjD,CAAA;AAED,eAAe,YAAY,CAAA"}
|
package/dist/index.es.js
CHANGED
|
@@ -3,7 +3,8 @@ import debounce from 'lodash/debounce';
|
|
|
3
3
|
import throttle from 'lodash/throttle';
|
|
4
4
|
import React, { useLayoutEffect, useEffect, useRef, createContext, useContext, useCallback, Component, useState, useReducer, useMemo } from 'react';
|
|
5
5
|
import scrollIntoView from 'scroll-into-view-if-needed';
|
|
6
|
-
import { Editor, Scrubber, Transforms, Range, Path, Node, Text as Text$1,
|
|
6
|
+
import { Editor, Scrubber, Transforms, Range, Element as Element$1, Path, Node, Text as Text$1, Point } from 'slate';
|
|
7
|
+
import { ResizeObserver } from '@juggle/resize-observer';
|
|
7
8
|
import { isKeyHotkey } from 'is-hotkey';
|
|
8
9
|
import ReactDOM from 'react-dom';
|
|
9
10
|
|
|
@@ -751,7 +752,7 @@ var ReactEditor = {
|
|
|
751
752
|
// next or previous node, depending on which side the `x` and `y`
|
|
752
753
|
// coordinates are closest to.
|
|
753
754
|
|
|
754
|
-
if (Editor.isVoid(editor, node)) {
|
|
755
|
+
if (Element$1.isElement(node) && Editor.isVoid(editor, node)) {
|
|
755
756
|
var rect = target.getBoundingClientRect();
|
|
756
757
|
var isPrev = editor.isInline(node) ? x - rect.left < rect.left + rect.width - x : y - rect.top < rect.top + rect.height - y;
|
|
757
758
|
var edge = Editor.point(editor, path, {
|
|
@@ -992,6 +993,46 @@ var ReactEditor = {
|
|
|
992
993
|
if (!focus) {
|
|
993
994
|
return null;
|
|
994
995
|
}
|
|
996
|
+
/**
|
|
997
|
+
* suppose we have this document:
|
|
998
|
+
*
|
|
999
|
+
* { type: 'paragraph',
|
|
1000
|
+
* children: [
|
|
1001
|
+
* { text: 'foo ' },
|
|
1002
|
+
* { text: 'bar' },
|
|
1003
|
+
* { text: ' baz' }
|
|
1004
|
+
* ]
|
|
1005
|
+
* }
|
|
1006
|
+
*
|
|
1007
|
+
* a double click on "bar" on chrome will create this range:
|
|
1008
|
+
*
|
|
1009
|
+
* anchor -> [0,1] offset 0
|
|
1010
|
+
* focus -> [0,1] offset 3
|
|
1011
|
+
*
|
|
1012
|
+
* while on firefox will create this range:
|
|
1013
|
+
*
|
|
1014
|
+
* anchor -> [0,0] offset 4
|
|
1015
|
+
* focus -> [0,2] offset 0
|
|
1016
|
+
*
|
|
1017
|
+
* let's try to fix it...
|
|
1018
|
+
*/
|
|
1019
|
+
|
|
1020
|
+
|
|
1021
|
+
if (IS_FIREFOX && !isCollapsed && anchorNode !== focusNode) {
|
|
1022
|
+
var isEnd = Editor.isEnd(editor, anchor, anchor.path);
|
|
1023
|
+
var isStart = Editor.isStart(editor, focus, focus.path);
|
|
1024
|
+
|
|
1025
|
+
if (isEnd) {
|
|
1026
|
+
var after = Editor.after(editor, anchor); // Editor.after() might return undefined
|
|
1027
|
+
|
|
1028
|
+
anchor = after || anchor;
|
|
1029
|
+
}
|
|
1030
|
+
|
|
1031
|
+
if (isStart) {
|
|
1032
|
+
var before = Editor.before(editor, focus);
|
|
1033
|
+
focus = before || focus;
|
|
1034
|
+
}
|
|
1035
|
+
}
|
|
995
1036
|
|
|
996
1037
|
var range = {
|
|
997
1038
|
anchor: anchor,
|
|
@@ -1050,7 +1091,7 @@ var ReactEditor = {
|
|
|
1050
1091
|
isTargetInsideNonReadonlyVoid(editor, target) {
|
|
1051
1092
|
if (IS_READ_ONLY.get(editor)) return false;
|
|
1052
1093
|
var slateNode = ReactEditor.hasTarget(editor, target) && ReactEditor.toSlateNode(editor, target);
|
|
1053
|
-
return Editor.isVoid(editor, slateNode);
|
|
1094
|
+
return Element$1.isElement(slateNode) && Editor.isVoid(editor, slateNode);
|
|
1054
1095
|
},
|
|
1055
1096
|
|
|
1056
1097
|
/**
|
|
@@ -1255,6 +1296,22 @@ var useSlateStatic = () => {
|
|
|
1255
1296
|
return editor;
|
|
1256
1297
|
};
|
|
1257
1298
|
|
|
1299
|
+
/**
|
|
1300
|
+
* Returns a set of rules that use the `:where` selector if it is supported,
|
|
1301
|
+
* otherwise it falls back to the provided selector on its own.
|
|
1302
|
+
*
|
|
1303
|
+
* The `:where` selector is used to give a selector a lower specificity,
|
|
1304
|
+
* allowing the rule to be overridden by a user-defined stylesheet.
|
|
1305
|
+
*
|
|
1306
|
+
* Older browsers do not support the `:where` selector.
|
|
1307
|
+
* If it is not supported, the selector will be used without `:where`,
|
|
1308
|
+
* which means that the rule will have a higher specificity and a user-defined
|
|
1309
|
+
* stylesheet will not be able to override it easily.
|
|
1310
|
+
*/
|
|
1311
|
+
function whereIfSupported(selector, styles) {
|
|
1312
|
+
return "@supports (selector(:where(".concat(selector, "))) {") + ":where(".concat(selector, ") { ").concat(styles, " }") + "}" + "@supports not (selector(:where(".concat(selector, "))) {") + "".concat(selector, " { ").concat(styles, " }") + "}";
|
|
1313
|
+
}
|
|
1314
|
+
|
|
1258
1315
|
/**
|
|
1259
1316
|
* Individual leaves in a text node with unique formatting.
|
|
1260
1317
|
*/
|
|
@@ -1293,7 +1350,8 @@ var Leaf = props => {
|
|
|
1293
1350
|
if (placeholderEl) placeholderResizeObserver.current.observe(placeholderEl);
|
|
1294
1351
|
} else if (placeholderEl) {
|
|
1295
1352
|
// Create a new observer and observe the placeholder element.
|
|
1296
|
-
|
|
1353
|
+
var ResizeObserver$1 = window.ResizeObserver || ResizeObserver;
|
|
1354
|
+
placeholderResizeObserver.current = new ResizeObserver$1(_ref => {
|
|
1297
1355
|
var [{
|
|
1298
1356
|
target
|
|
1299
1357
|
}] = _ref;
|
|
@@ -1301,8 +1359,9 @@ var Leaf = props => {
|
|
|
1301
1359
|
|
|
1302
1360
|
if (styleElement) {
|
|
1303
1361
|
// Make the min-height the height of the placeholder.
|
|
1304
|
-
var
|
|
1305
|
-
|
|
1362
|
+
var selector = "[data-slate-editor-id=\"".concat(editor.id, "\"]");
|
|
1363
|
+
var styles = "min-height: ".concat(target.clientHeight, "px;");
|
|
1364
|
+
styleElement.innerHTML = whereIfSupported(selector, styles);
|
|
1306
1365
|
}
|
|
1307
1366
|
});
|
|
1308
1367
|
placeholderResizeObserver.current.observe(placeholderEl);
|
|
@@ -2054,7 +2113,7 @@ function normalizePoint(editor, point) {
|
|
|
2054
2113
|
}
|
|
2055
2114
|
|
|
2056
2115
|
var parentBlock = Editor.above(editor, {
|
|
2057
|
-
match: n => Editor.isBlock(editor, n),
|
|
2116
|
+
match: n => Element$1.isElement(n) && Editor.isBlock(editor, n),
|
|
2058
2117
|
at: path
|
|
2059
2118
|
});
|
|
2060
2119
|
|
|
@@ -3439,7 +3498,7 @@ var Editable = props => {
|
|
|
3439
3498
|
if (native && node.parentElement && (window === null || window === void 0 ? void 0 : (_window$getComputedSt = window.getComputedStyle(node.parentElement)) === null || _window$getComputedSt === void 0 ? void 0 : _window$getComputedSt.whiteSpace) === 'pre') {
|
|
3440
3499
|
var block = Editor.above(editor, {
|
|
3441
3500
|
at: anchor.path,
|
|
3442
|
-
match: n => Editor.isBlock(editor, n)
|
|
3501
|
+
match: n => Element$1.isElement(n) && Editor.isBlock(editor, n)
|
|
3443
3502
|
});
|
|
3444
3503
|
|
|
3445
3504
|
if (block && Node.string(block[0]).includes('\t')) {
|
|
@@ -3735,12 +3794,13 @@ var Editable = props => {
|
|
|
3735
3794
|
// Set global default styles for editors.
|
|
3736
3795
|
var defaultStylesElement = document.createElement('style');
|
|
3737
3796
|
defaultStylesElement.setAttribute('data-slate-default-styles', 'true');
|
|
3738
|
-
|
|
3739
|
-
|
|
3797
|
+
var selector = '[data-slate-editor]';
|
|
3798
|
+
var defaultStyles = // Allow positioning relative to the editable element.
|
|
3740
3799
|
"position: relative;" + // Prevent the default outline styles.
|
|
3741
3800
|
"outline: none;" + // Preserve adjacent whitespace and new lines.
|
|
3742
3801
|
"white-space: pre-wrap;" + // Allow words to break if they are too long.
|
|
3743
|
-
"word-wrap: break-word;"
|
|
3802
|
+
"word-wrap: break-word;";
|
|
3803
|
+
defaultStylesElement.innerHTML = whereIfSupported(selector, defaultStyles);
|
|
3744
3804
|
document.head.appendChild(defaultStylesElement);
|
|
3745
3805
|
}
|
|
3746
3806
|
|
|
@@ -3888,11 +3948,11 @@ var Editable = props => {
|
|
|
3888
3948
|
if (event.detail === TRIPLE_CLICK && path.length >= 1) {
|
|
3889
3949
|
var blockPath = path;
|
|
3890
3950
|
|
|
3891
|
-
if (!Editor.isBlock(editor, node)) {
|
|
3951
|
+
if (!(Element$1.isElement(node) && Editor.isBlock(editor, node))) {
|
|
3892
3952
|
var _block$;
|
|
3893
3953
|
|
|
3894
3954
|
var block = Editor.above(editor, {
|
|
3895
|
-
match: n => Editor.isBlock(editor, n),
|
|
3955
|
+
match: n => Element$1.isElement(n) && Editor.isBlock(editor, n),
|
|
3896
3956
|
at: path
|
|
3897
3957
|
});
|
|
3898
3958
|
blockPath = (_block$ = block === null || block === void 0 ? void 0 : block[1]) !== null && _block$ !== void 0 ? _block$ : path.slice(0, 1);
|
|
@@ -3988,7 +4048,7 @@ var Editable = props => {
|
|
|
3988
4048
|
}
|
|
3989
4049
|
|
|
3990
4050
|
var inline = Editor.above(editor, {
|
|
3991
|
-
match: n => Editor.isInline(editor, n),
|
|
4051
|
+
match: n => Element$1.isElement(n) && Editor.isInline(editor, n),
|
|
3992
4052
|
mode: 'highest'
|
|
3993
4053
|
});
|
|
3994
4054
|
|
|
@@ -4040,7 +4100,7 @@ var Editable = props => {
|
|
|
4040
4100
|
// default, and calling `preventDefault` hides the cursor.
|
|
4041
4101
|
var node = ReactEditor.toSlateNode(editor, event.target);
|
|
4042
4102
|
|
|
4043
|
-
if (Editor.isVoid(editor, node)) {
|
|
4103
|
+
if (Element$1.isElement(node) && Editor.isVoid(editor, node)) {
|
|
4044
4104
|
event.preventDefault();
|
|
4045
4105
|
}
|
|
4046
4106
|
}
|
|
@@ -4049,7 +4109,7 @@ var Editable = props => {
|
|
|
4049
4109
|
if (!readOnly && ReactEditor.hasTarget(editor, event.target) && !isEventHandled(event, attributes.onDragStart)) {
|
|
4050
4110
|
var node = ReactEditor.toSlateNode(editor, event.target);
|
|
4051
4111
|
var path = ReactEditor.findPath(editor, node);
|
|
4052
|
-
var voidMatch = Editor.isVoid(editor, node) || Editor.void(editor, {
|
|
4112
|
+
var voidMatch = Element$1.isElement(node) && Editor.isVoid(editor, node) || Editor.void(editor, {
|
|
4053
4113
|
at: path,
|
|
4054
4114
|
voids: true
|
|
4055
4115
|
}); // If starting a drag on a void node, make sure it is selected
|
|
@@ -4688,8 +4748,8 @@ var Slate = props => {
|
|
|
4688
4748
|
}));
|
|
4689
4749
|
handleSelectorChange(editor);
|
|
4690
4750
|
}, [onChange]);
|
|
4691
|
-
EDITOR_TO_ON_CHANGE.set(editor, onContextChange);
|
|
4692
4751
|
useEffect(() => {
|
|
4752
|
+
EDITOR_TO_ON_CHANGE.set(editor, onContextChange);
|
|
4693
4753
|
return () => {
|
|
4694
4754
|
EDITOR_TO_ON_CHANGE.set(editor, () => {});
|
|
4695
4755
|
unmountRef.current = true;
|
|
@@ -4876,7 +4936,7 @@ var withReact = editor => {
|
|
|
4876
4936
|
|
|
4877
4937
|
if (e.selection && Range.isCollapsed(e.selection)) {
|
|
4878
4938
|
var parentBlockEntry = Editor.above(e, {
|
|
4879
|
-
match: n => Editor.isBlock(e, n),
|
|
4939
|
+
match: n => Element$1.isElement(n) && Editor.isBlock(e, n),
|
|
4880
4940
|
at: e.selection
|
|
4881
4941
|
});
|
|
4882
4942
|
|