slate-react 0.86.0 → 0.87.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.
@@ -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;AAwCrB;;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,gBAy8C5C,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;AA2BtE;;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,gBAu+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;AA2BtE;;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;AAMrC,OAAO,EAAE,eAAe,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAA;AAyFpE,QAAA,MAAM,YAAY;YAhFR,OAAO;UACT,IAAI;YACF,OAAO;+BACY,sBAAsB,KAAK,WAAW;0BAC5C,eAAe,KAAK,WAAW;UAC9C,IAAI;kBAqFV,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;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"}
package/dist/index.es.js CHANGED
@@ -90,6 +90,7 @@ var ELEMENT_TO_NODE = new WeakMap();
90
90
  var NODE_TO_ELEMENT = new WeakMap();
91
91
  var NODE_TO_KEY = new WeakMap();
92
92
  var EDITOR_TO_KEY_TO_ELEMENT = new WeakMap();
93
+ var EDITOR_TO_STYLE_ELEMENT = new WeakMap();
93
94
  /**
94
95
  * Weak maps for storing editor-related state.
95
96
  */
@@ -1261,18 +1262,55 @@ var Leaf = props => {
1261
1262
  } = props;
1262
1263
  var placeholderRef = useRef(null);
1263
1264
  var editor = useSlateStatic();
1265
+ var placeholderResizeObserver = useRef(null);
1266
+ useEffect(() => {
1267
+ return () => {
1268
+ if (placeholderResizeObserver.current) {
1269
+ placeholderResizeObserver.current.disconnect();
1270
+ }
1271
+ };
1272
+ }, []);
1264
1273
  useEffect(() => {
1265
1274
  var placeholderEl = placeholderRef === null || placeholderRef === void 0 ? void 0 : placeholderRef.current;
1266
- var editorEl = ReactEditor.toDOMNode(editor, editor);
1267
1275
 
1268
- if (!placeholderEl || !editorEl) {
1269
- return;
1276
+ if (placeholderEl) {
1277
+ EDITOR_TO_PLACEHOLDER_ELEMENT.set(editor, placeholderEl);
1278
+ } else {
1279
+ EDITOR_TO_PLACEHOLDER_ELEMENT.delete(editor);
1280
+ }
1281
+
1282
+ if (placeholderResizeObserver.current) {
1283
+ // Update existing observer.
1284
+ placeholderResizeObserver.current.disconnect();
1285
+ if (placeholderEl) placeholderResizeObserver.current.observe(placeholderEl);
1286
+ } else if (placeholderEl) {
1287
+ // Create a new observer and observe the placeholder element.
1288
+ placeholderResizeObserver.current = new ResizeObserver(_ref => {
1289
+ var [{
1290
+ target
1291
+ }] = _ref;
1292
+ var styleElement = EDITOR_TO_STYLE_ELEMENT.get(editor);
1293
+
1294
+ if (styleElement) {
1295
+ // Make the min-height the height of the placeholder.
1296
+ var minHeight = "".concat(target.clientHeight, "px");
1297
+ styleElement.innerHTML = ":where([data-slate-editor-id=\"".concat(editor.id, "\"]) { min-height: ").concat(minHeight, "; }");
1298
+ }
1299
+ });
1300
+ placeholderResizeObserver.current.observe(placeholderEl);
1301
+ }
1302
+
1303
+ if (!placeholderEl) {
1304
+ // No placeholder element, so no need for a resize observer.
1305
+ var styleElement = EDITOR_TO_STYLE_ELEMENT.get(editor);
1306
+
1307
+ if (styleElement) {
1308
+ // No min-height if there is no placeholder.
1309
+ styleElement.innerHTML = '';
1310
+ }
1270
1311
  }
1271
1312
 
1272
- editorEl.style.minHeight = "".concat(placeholderEl.clientHeight, "px");
1273
- EDITOR_TO_PLACEHOLDER_ELEMENT.set(editor, placeholderEl);
1274
1313
  return () => {
1275
- editorEl.style.minHeight = 'auto';
1276
1314
  EDITOR_TO_PLACEHOLDER_ELEMENT.delete(editor);
1277
1315
  };
1278
1316
  }, [placeholderRef, leaf]);
@@ -3058,12 +3096,14 @@ function ownKeys$1(object, enumerableOnly) { var keys = Object.keys(object); if
3058
3096
 
3059
3097
  function _objectSpread$1(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys$1(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys$1(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
3060
3098
 
3061
- var Children = props => /*#__PURE__*/React.createElement(React.Fragment, null, useChildren(props));
3099
+ var Children = props => /*#__PURE__*/React.createElement(React.Fragment, null, useChildren(props)); // The number of Editable components currently mounted.
3100
+
3101
+
3102
+ var mountedCount = 0;
3062
3103
  /**
3063
3104
  * Editable.
3064
3105
  */
3065
3106
 
3066
-
3067
3107
  var Editable = props => {
3068
3108
  var {
3069
3109
  autoFocus,
@@ -3680,6 +3720,38 @@ var Editable = props => {
3680
3720
  EDITOR_TO_PENDING_INSERTION_MARKS.delete(editor);
3681
3721
  });
3682
3722
  });
3723
+ useEffect(() => {
3724
+ mountedCount++;
3725
+
3726
+ if (mountedCount === 1) {
3727
+ // Set global default styles for editors.
3728
+ var defaultStylesElement = document.createElement('style');
3729
+ defaultStylesElement.setAttribute('data-slate-default-styles', 'true');
3730
+ defaultStylesElement.innerHTML = // :where is used to give these rules lower specificity so user stylesheets can override them.
3731
+ ":where([data-slate-editor]) {" + // Allow positioning relative to the editable element.
3732
+ "position: relative;" + // Prevent the default outline styles.
3733
+ "outline: none;" + // Preserve adjacent whitespace and new lines.
3734
+ "white-space: pre-wrap;" + // Allow words to break if they are too long.
3735
+ "word-wrap: break-word;" + "}";
3736
+ document.head.appendChild(defaultStylesElement);
3737
+ }
3738
+
3739
+ return () => {
3740
+ var _document$querySelect;
3741
+
3742
+ mountedCount--;
3743
+ if (mountedCount <= 0) (_document$querySelect = document.querySelector('style[data-slate-default-styles]')) === null || _document$querySelect === void 0 ? void 0 : _document$querySelect.remove();
3744
+ };
3745
+ }, []);
3746
+ useEffect(() => {
3747
+ var styleElement = document.createElement('style');
3748
+ document.head.appendChild(styleElement);
3749
+ EDITOR_TO_STYLE_ELEMENT.set(editor, styleElement);
3750
+ return () => {
3751
+ styleElement.remove();
3752
+ EDITOR_TO_STYLE_ELEMENT.delete(editor);
3753
+ };
3754
+ }, []);
3683
3755
  return /*#__PURE__*/React.createElement(ReadOnlyContext.Provider, {
3684
3756
  value: readOnly
3685
3757
  }, /*#__PURE__*/React.createElement(DecorateContext.Provider, {
@@ -3700,6 +3772,7 @@ var Editable = props => {
3700
3772
  autoCorrect: HAS_BEFORE_INPUT_SUPPORT || !CAN_USE_DOM ? attributes.autoCorrect : 'false',
3701
3773
  autoCapitalize: HAS_BEFORE_INPUT_SUPPORT || !CAN_USE_DOM ? attributes.autoCapitalize : 'false',
3702
3774
  "data-slate-editor": true,
3775
+ "data-slate-editor-id": editor.id,
3703
3776
  "data-slate-node": "value",
3704
3777
  // explicitly set this
3705
3778
  contentEditable: !readOnly,
@@ -3709,16 +3782,7 @@ var Editable = props => {
3709
3782
  zindex: -1,
3710
3783
  suppressContentEditableWarning: true,
3711
3784
  ref: ref,
3712
- style: _objectSpread$1({
3713
- // Allow positioning relative to the editable element.
3714
- position: 'relative',
3715
- // Prevent the default outline styles.
3716
- outline: 'none',
3717
- // Preserve adjacent whitespace and new lines.
3718
- whiteSpace: 'pre-wrap',
3719
- // Allow words to break if they are too long.
3720
- wordWrap: 'break-word'
3721
- }, style),
3785
+ style: style,
3722
3786
  onBeforeInput: useCallback(event => {
3723
3787
  // COMPAT: Certain browsers don't support the `beforeinput` event, so we
3724
3788
  // fall back to React's leaky polyfill instead just for it. It