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.
@@ -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;AA2CrB;;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,gBAs+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
+ {"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;AAOrC,OAAO,EAAE,eAAe,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAA;AA2HpE,QAAA,MAAM,YAAY;YAnHR,OAAO;UACT,IAAI;YACF,OAAO;+BACY,sBAAsB,KAAK,WAAW;0BAC5C,eAAe,KAAK,WAAW;UAC9C,IAAI;kBAwHV,CAAA;AAEF,eAAO,MAAM,WAAW,UAAW,eAAe,gBAGjD,CAAA;AAED,eAAe,YAAY,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, Element as Element$1, Point } from 'slate';
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
- placeholderResizeObserver.current = new ResizeObserver(_ref => {
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 minHeight = "".concat(target.clientHeight, "px");
1305
- styleElement.innerHTML = ":where([data-slate-editor-id=\"".concat(editor.id, "\"]) { min-height: ").concat(minHeight, "; }");
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
- defaultStylesElement.innerHTML = // :where is used to give these rules lower specificity so user stylesheets can override them.
3739
- ":where([data-slate-editor]) {" + // Allow positioning relative to the editable element.
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