slate-react 0.102.0 → 0.104.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;AACd,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAA;AAE3B,OAAO,EAEL,OAAO,EAEP,SAAS,EAET,KAAK,EACL,IAAI,EAEL,MAAM,OAAO,CAAA;AAQd,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAA;AAEpD,OAAO,EAEL,QAAQ,EAMT,MAAM,cAAc,CAAA;AAsCrB;;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,MAAM,MAAM,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;IACtB,oBAAoB,CAAC,EAAE,OAAO,CAAA;CAC/B,GAAG,KAAK,CAAC,sBAAsB,CAAC,cAAc,CAAC,CAAA;AAEhD;;GAEG;AAEH,eAAO,MAAM,QAAQ,UAAW,aAAa,gBAqiD5C,CAAA;AAED;;GAEG;AACH,MAAM,MAAM,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,WAAW,CAAC,GAAG,CAAC,CAAA;QAC3B,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;AACH,eAAO,MAAM,qBAAqB,yFAUjC,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;AACd,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAA;AAE3B,OAAO,EAEL,OAAO,EAEP,SAAS,EAET,KAAK,EACL,IAAI,EAEL,MAAM,OAAO,CAAA;AAQd,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAA;AAEpD,OAAO,EAEL,QAAQ,EAOT,MAAM,cAAc,CAAA;AAuCrB;;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,MAAM,MAAM,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;IACtB,oBAAoB,CAAC,EAAE,OAAO,CAAA;CAC/B,GAAG,KAAK,CAAC,sBAAsB,CAAC,cAAc,CAAC,CAAA;AAEhD;;GAEG;AAEH,eAAO,MAAM,QAAQ,UAAW,aAAa,gBA0lD5C,CAAA;AAED;;GAEG;AACH,MAAM,MAAM,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,WAAW,CAAC,GAAG,CAAC,CAAA;QAC3B,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;AACH,eAAO,MAAM,qBAAqB,yFAUjC,CAAA;AAED;;GAEG;AAEH,eAAO,MAAM,iBAAiB,uDAEJ,IAAI,GAAG,OAAO,yBAevC,CAAA"}
package/dist/index.es.js CHANGED
@@ -93,6 +93,7 @@ var useSlateStatic = () => {
93
93
  return editor;
94
94
  };
95
95
 
96
+ var _navigator$userAgent$, _navigator$userAgent$2;
96
97
  var REACT_MAJOR_VERSION = parseInt(React.version.split('.')[0], 10);
97
98
  var IS_IOS = typeof navigator !== 'undefined' && typeof window !== 'undefined' && /iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream;
98
99
  var IS_APPLE = typeof navigator !== 'undefined' && /Mac OS X/.test(navigator.userAgent);
@@ -115,6 +116,8 @@ var IS_WECHATBROWSER = typeof navigator !== 'undefined' && /.*Wechat/.test(navig
115
116
  // Check if DOM is available as React does internally.
116
117
  // https://github.com/facebook/react/blob/master/packages/shared/ExecutionEnvironment.js
117
118
  var CAN_USE_DOM = !!(typeof window !== 'undefined' && typeof window.document !== 'undefined' && typeof window.document.createElement !== 'undefined');
119
+ // Check if the browser is Safari and older than 17
120
+ var IS_SAFARI_LEGACY = typeof navigator !== 'undefined' && /Safari/.test(navigator.userAgent) && /Version\/(\d+)/.test(navigator.userAgent) && ((_navigator$userAgent$ = navigator.userAgent.match(/Version\/(\d+)/)) !== null && _navigator$userAgent$ !== void 0 && _navigator$userAgent$[1] ? parseInt((_navigator$userAgent$2 = navigator.userAgent.match(/Version\/(\d+)/)) === null || _navigator$userAgent$2 === void 0 ? void 0 : _navigator$userAgent$2[1], 10) < 17 : false);
118
121
  // COMPAT: Firefox/Edge Legacy don't support the `beforeinput` event
119
122
  // Chrome Legacy doesn't support `beforeinput` correctly
120
123
  var HAS_BEFORE_INPUT_SUPPORT = (!IS_CHROME_LEGACY || !IS_ANDROID_CHROME_LEGACY) && !IS_EDGE_LEGACY &&
@@ -374,6 +377,17 @@ var isTrackedMutation = (editor, mutation, batch) => {
374
377
  // Target add/remove is tracked. Track the mutation if we track the parent mutation.
375
378
  return isTrackedMutation(editor, parentMutation, batch);
376
379
  };
380
+ /**
381
+ * Retrieves the deepest active element in the DOM, considering nested shadow DOMs.
382
+ */
383
+ var getActiveElement = () => {
384
+ var activeElement = document.activeElement;
385
+ while ((_activeElement = activeElement) !== null && _activeElement !== void 0 && _activeElement.shadowRoot && (_activeElement$shadow = activeElement.shadowRoot) !== null && _activeElement$shadow !== void 0 && _activeElement$shadow.activeElement) {
386
+ var _activeElement, _activeElement$shadow, _activeElement2;
387
+ activeElement = (_activeElement2 = activeElement) === null || _activeElement2 === void 0 || (_activeElement2 = _activeElement2.shadowRoot) === null || _activeElement2 === void 0 ? void 0 : _activeElement2.activeElement;
388
+ }
389
+ return activeElement;
390
+ };
377
391
 
378
392
  /**
379
393
  * An auto-incrementing identifier for keys.
@@ -2845,6 +2859,7 @@ var Editable = props => {
2845
2859
  var ref = useRef(null);
2846
2860
  var deferredOperations = useRef([]);
2847
2861
  var [placeholderHeight, setPlaceholderHeight] = useState();
2862
+ var processing = useRef(false);
2848
2863
  var {
2849
2864
  onUserInput,
2850
2865
  receivedUserInput
@@ -2880,15 +2895,28 @@ var Editable = props => {
2880
2895
  // released. This causes issues in situations where another change happens
2881
2896
  // while a selection is being dragged.
2882
2897
  var onDOMSelectionChange = useMemo(() => throttle(() => {
2898
+ var el = ReactEditor.toDOMNode(editor, editor);
2899
+ var root = el.getRootNode();
2900
+ if (IS_SAFARI_LEGACY && !processing.current && IS_WEBKIT && root instanceof ShadowRoot) {
2901
+ processing.current = true;
2902
+ var active = getActiveElement();
2903
+ if (active) {
2904
+ document.execCommand('indent');
2905
+ } else {
2906
+ Transforms.deselect(editor);
2907
+ }
2908
+ processing.current = false;
2909
+ return;
2910
+ }
2883
2911
  var androidInputManager = androidInputManagerRef.current;
2884
2912
  if ((IS_ANDROID || !ReactEditor.isComposing(editor)) && (!state.isUpdatingSelection || androidInputManager !== null && androidInputManager !== void 0 && androidInputManager.isFlushing()) && !state.isDraggingInternally) {
2885
- var root = ReactEditor.findDocumentOrShadowRoot(editor);
2913
+ var _root = ReactEditor.findDocumentOrShadowRoot(editor);
2886
2914
  var {
2887
2915
  activeElement
2888
- } = root;
2889
- var el = ReactEditor.toDOMNode(editor, editor);
2890
- var domSelection = root.getSelection();
2891
- if (activeElement === el) {
2916
+ } = _root;
2917
+ var _el = ReactEditor.toDOMNode(editor, editor);
2918
+ var domSelection = _root.getSelection();
2919
+ if (activeElement === _el) {
2892
2920
  state.latestElement = activeElement;
2893
2921
  IS_FOCUSED.set(editor, true);
2894
2922
  } else {
@@ -3075,6 +3103,24 @@ var Editable = props => {
3075
3103
  // to the real event sadly. (2019/11/01)
3076
3104
  // https://github.com/facebook/react/issues/11211
3077
3105
  var onDOMBeforeInput = useCallback(event => {
3106
+ var el = ReactEditor.toDOMNode(editor, editor);
3107
+ var root = el.getRootNode();
3108
+ if (IS_SAFARI_LEGACY && processing !== null && processing !== void 0 && processing.current && IS_WEBKIT && root instanceof ShadowRoot) {
3109
+ var ranges = event.getTargetRanges();
3110
+ var range = ranges[0];
3111
+ var newRange = new window.Range();
3112
+ newRange.setStart(range.startContainer, range.startOffset);
3113
+ newRange.setEnd(range.endContainer, range.endOffset);
3114
+ // Translate the DOM Range into a Slate Range
3115
+ var slateRange = ReactEditor.toSlateRange(editor, newRange, {
3116
+ exactMatch: false,
3117
+ suppressThrow: false
3118
+ });
3119
+ Transforms.select(editor, slateRange);
3120
+ event.preventDefault();
3121
+ event.stopImmediatePropagation();
3122
+ return;
3123
+ }
3078
3124
  onUserInput();
3079
3125
  if (!readOnly && ReactEditor.hasEditableTarget(editor, event.target) && !isDOMEventHandled(event, propsOnDOMBeforeInput)) {
3080
3126
  var _EDITOR_TO_USER_SELEC;
@@ -3124,18 +3170,18 @@ var Editable = props => {
3124
3170
  } = selection;
3125
3171
  var [node, offset] = ReactEditor.toDOMPoint(editor, anchor);
3126
3172
  var anchorNode = (_node$parentElement = node.parentElement) === null || _node$parentElement === void 0 ? void 0 : _node$parentElement.closest('a');
3127
- var window = ReactEditor.getWindow(editor);
3173
+ var _window = ReactEditor.getWindow(editor);
3128
3174
  if (native && anchorNode && ReactEditor.hasDOMNode(editor, anchorNode)) {
3129
3175
  var _lastText$textContent;
3130
3176
  // Find the last text node inside the anchor.
3131
- var lastText = window === null || window === void 0 ? void 0 : window.document.createTreeWalker(anchorNode, NodeFilter.SHOW_TEXT).lastChild();
3177
+ var lastText = _window === null || _window === void 0 ? void 0 : _window.document.createTreeWalker(anchorNode, NodeFilter.SHOW_TEXT).lastChild();
3132
3178
  if (lastText === node && ((_lastText$textContent = lastText.textContent) === null || _lastText$textContent === void 0 ? void 0 : _lastText$textContent.length) === offset) {
3133
3179
  native = false;
3134
3180
  }
3135
3181
  }
3136
3182
  // Chrome has issues with the presence of tab characters inside elements with whiteSpace = 'pre'
3137
3183
  // causing abnormal insert behavior: https://bugs.chromium.org/p/chromium/issues/detail?id=1219139
3138
- if (native && node.parentElement && (window === null || window === void 0 || (_window$getComputedSt = window.getComputedStyle(node.parentElement)) === null || _window$getComputedSt === void 0 ? void 0 : _window$getComputedSt.whiteSpace) === 'pre') {
3184
+ if (native && node.parentElement && (_window === null || _window === void 0 || (_window$getComputedSt = _window.getComputedStyle(node.parentElement)) === null || _window$getComputedSt === void 0 ? void 0 : _window$getComputedSt.whiteSpace) === 'pre') {
3139
3185
  var block = Editor.above(editor, {
3140
3186
  at: anchor.path,
3141
3187
  match: n => Element$1.isElement(n) && Editor.isBlock(editor, n)
@@ -3151,14 +3197,14 @@ var Editable = props => {
3151
3197
  if (!type.startsWith('delete') || type.startsWith('deleteBy')) {
3152
3198
  var [targetRange] = event.getTargetRanges();
3153
3199
  if (targetRange) {
3154
- var range = ReactEditor.toSlateRange(editor, targetRange, {
3200
+ var _range = ReactEditor.toSlateRange(editor, targetRange, {
3155
3201
  exactMatch: false,
3156
3202
  suppressThrow: false
3157
3203
  });
3158
- if (!selection || !Range.equals(selection, range)) {
3204
+ if (!selection || !Range.equals(selection, _range)) {
3159
3205
  native = false;
3160
3206
  var selectionRef = !isCompositionChange && editor.selection && Editor.rangeRef(editor, editor.selection);
3161
- Transforms.select(editor, range);
3207
+ Transforms.select(editor, _range);
3162
3208
  if (selectionRef) {
3163
3209
  EDITOR_TO_USER_SELECTION.set(editor, selectionRef);
3164
3210
  }
@@ -3557,8 +3603,8 @@ var Editable = props => {
3557
3603
  at: end
3558
3604
  });
3559
3605
  if (startVoid && endVoid && Path.equals(startVoid[1], endVoid[1])) {
3560
- var _range = Editor.range(editor, _start);
3561
- Transforms.select(editor, _range);
3606
+ var _range2 = Editor.range(editor, _start);
3607
+ Transforms.select(editor, _range2);
3562
3608
  }
3563
3609
  }
3564
3610
  }, [editor, attributes.onClick, readOnly]),