slate-react 0.58.0 → 0.58.4

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/index.js CHANGED
@@ -28,6 +28,58 @@ function _defineProperty(obj, key, value) {
28
28
  return obj;
29
29
  }
30
30
 
31
+ var defineProperty = _defineProperty;
32
+
33
+ function _arrayWithHoles(arr) {
34
+ if (Array.isArray(arr)) return arr;
35
+ }
36
+
37
+ var arrayWithHoles = _arrayWithHoles;
38
+
39
+ function _iterableToArrayLimit(arr, i) {
40
+ if (!(Symbol.iterator in Object(arr) || Object.prototype.toString.call(arr) === "[object Arguments]")) {
41
+ return;
42
+ }
43
+
44
+ var _arr = [];
45
+ var _n = true;
46
+ var _d = false;
47
+ var _e = undefined;
48
+
49
+ try {
50
+ for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {
51
+ _arr.push(_s.value);
52
+
53
+ if (i && _arr.length === i) break;
54
+ }
55
+ } catch (err) {
56
+ _d = true;
57
+ _e = err;
58
+ } finally {
59
+ try {
60
+ if (!_n && _i["return"] != null) _i["return"]();
61
+ } finally {
62
+ if (_d) throw _e;
63
+ }
64
+ }
65
+
66
+ return _arr;
67
+ }
68
+
69
+ var iterableToArrayLimit = _iterableToArrayLimit;
70
+
71
+ function _nonIterableRest() {
72
+ throw new TypeError("Invalid attempt to destructure non-iterable instance");
73
+ }
74
+
75
+ var nonIterableRest = _nonIterableRest;
76
+
77
+ function _slicedToArray(arr, i) {
78
+ return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || nonIterableRest();
79
+ }
80
+
81
+ var slicedToArray = _slicedToArray;
82
+
31
83
  function _objectWithoutPropertiesLoose(source, excluded) {
32
84
  if (source == null) return {};
33
85
  var target = {};
@@ -43,9 +95,11 @@ function _objectWithoutPropertiesLoose(source, excluded) {
43
95
  return target;
44
96
  }
45
97
 
98
+ var objectWithoutPropertiesLoose = _objectWithoutPropertiesLoose;
99
+
46
100
  function _objectWithoutProperties(source, excluded) {
47
101
  if (source == null) return {};
48
- var target = _objectWithoutPropertiesLoose(source, excluded);
102
+ var target = objectWithoutPropertiesLoose(source, excluded);
49
103
  var key, i;
50
104
 
51
105
  if (Object.getOwnPropertySymbols) {
@@ -62,6 +116,46 @@ function _objectWithoutProperties(source, excluded) {
62
116
  return target;
63
117
  }
64
118
 
119
+ var objectWithoutProperties = _objectWithoutProperties;
120
+
121
+ function _arrayWithoutHoles(arr) {
122
+ if (Array.isArray(arr)) {
123
+ for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) {
124
+ arr2[i] = arr[i];
125
+ }
126
+
127
+ return arr2;
128
+ }
129
+ }
130
+
131
+ var arrayWithoutHoles = _arrayWithoutHoles;
132
+
133
+ function _iterableToArray(iter) {
134
+ if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === "[object Arguments]") return Array.from(iter);
135
+ }
136
+
137
+ var iterableToArray = _iterableToArray;
138
+
139
+ function _nonIterableSpread() {
140
+ throw new TypeError("Invalid attempt to spread non-iterable instance");
141
+ }
142
+
143
+ var nonIterableSpread = _nonIterableSpread;
144
+
145
+ function _toConsumableArray(arr) {
146
+ return arrayWithoutHoles(arr) || iterableToArray(arr) || nonIterableSpread();
147
+ }
148
+
149
+ var toConsumableArray = _toConsumableArray;
150
+
151
+ function _classCallCheck(instance, Constructor) {
152
+ if (!(instance instanceof Constructor)) {
153
+ throw new TypeError("Cannot call a class as a function");
154
+ }
155
+ }
156
+
157
+ var classCallCheck = _classCallCheck;
158
+
65
159
  /**
66
160
  * An auto-incrementing identifier for keys.
67
161
  */
@@ -71,12 +165,11 @@ var n = 0;
71
165
  * want to be able to use them as keys in `WeakMap` objects.
72
166
  */
73
167
 
74
- class Key {
75
- constructor() {
76
- this.id = "".concat(n++);
77
- }
168
+ var Key = function Key() {
169
+ classCallCheck(this, Key);
78
170
 
79
- }
171
+ this.id = "".concat(n++);
172
+ };
80
173
 
81
174
  /**
82
175
  * Two weak maps that allow us rebuild a path given a node. They are populated
@@ -111,52 +204,52 @@ var EDITOR_TO_ON_CHANGE = new WeakMap();
111
204
 
112
205
  var PLACEHOLDER_SYMBOL = Symbol('placeholder');
113
206
 
114
- /**
115
- * Types.
116
- */
117
207
  /**
118
208
  * Check if a DOM node is a comment node.
119
209
  */
120
210
 
121
- var isDOMComment = value => {
211
+ var isDOMComment = function isDOMComment(value) {
122
212
  return isDOMNode(value) && value.nodeType === 8;
123
213
  };
124
214
  /**
125
215
  * Check if a DOM node is an element node.
126
216
  */
127
217
 
128
- var isDOMElement = value => {
218
+ var isDOMElement = function isDOMElement(value) {
129
219
  return isDOMNode(value) && value.nodeType === 1;
130
220
  };
131
221
  /**
132
222
  * Check if a value is a DOM node.
133
223
  */
134
224
 
135
- var isDOMNode = value => {
225
+ var isDOMNode = function isDOMNode(value) {
136
226
  return value instanceof Node;
137
227
  };
138
228
  /**
139
229
  * Check if a DOM node is an element node.
140
230
  */
141
231
 
142
- var isDOMText = value => {
232
+ var isDOMText = function isDOMText(value) {
143
233
  return isDOMNode(value) && value.nodeType === 3;
144
234
  };
145
235
  /**
146
236
  * Checks whether a paste event is a plaintext-only event.
147
237
  */
148
238
 
149
- var isPlainTextOnlyPaste = event => {
239
+ var isPlainTextOnlyPaste = function isPlainTextOnlyPaste(event) {
150
240
  return event.clipboardData && event.clipboardData.getData('text/plain') !== '' && event.clipboardData.types.length === 1;
151
241
  };
152
242
  /**
153
243
  * Normalize a DOM point so that it always refers to a text node.
154
244
  */
155
245
 
156
- var normalizeDOMPoint = domPoint => {
157
- var [node, offset] = domPoint; // If it's an element node, its offset refers to the index of its children
246
+ var normalizeDOMPoint = function normalizeDOMPoint(domPoint) {
247
+ var _domPoint = slicedToArray(domPoint, 2),
248
+ node = _domPoint[0],
249
+ offset = _domPoint[1]; // If it's an element node, its offset refers to the index of its children
158
250
  // including comment nodes, so try to find the right text child node.
159
251
 
252
+
160
253
  if (isDOMElement(node) && node.childNodes.length) {
161
254
  var isLast = offset === node.childNodes.length;
162
255
  var direction = isLast ? 'backward' : 'forward';
@@ -181,10 +274,8 @@ var normalizeDOMPoint = domPoint => {
181
274
  * `direction`.
182
275
  */
183
276
 
184
- var getEditableChild = (parent, index, direction) => {
185
- var {
186
- childNodes
187
- } = parent;
277
+ var getEditableChild = function getEditableChild(parent, index, direction) {
278
+ var childNodes = parent.childNodes;
188
279
  var child = childNodes[index];
189
280
  var i = index;
190
281
  var triedForward = false;
@@ -223,7 +314,7 @@ var getEditableChild = (parent, index, direction) => {
223
314
  * The domNode must be attached to the DOM.
224
315
  */
225
316
 
226
- var getPlainText = domNode => {
317
+ var getPlainText = function getPlainText(domNode) {
227
318
  var text = '';
228
319
 
229
320
  if (isDOMText(domNode) && domNode.nodeValue) {
@@ -231,7 +322,8 @@ var getPlainText = domNode => {
231
322
  }
232
323
 
233
324
  if (isDOMElement(domNode)) {
234
- for (var childNode of Array.from(domNode.childNodes)) {
325
+ for (var _i = 0, _Array$from = Array.from(domNode.childNodes); _i < _Array$from.length; _i++) {
326
+ var childNode = _Array$from[_i];
235
327
  text += getPlainText(childNode);
236
328
  }
237
329
 
@@ -249,7 +341,7 @@ var ReactEditor = {
249
341
  /**
250
342
  * Find a key for a Slate node.
251
343
  */
252
- findKey(editor, node) {
344
+ findKey: function findKey(editor, node) {
253
345
  var key = NODE_TO_KEY.get(node);
254
346
 
255
347
  if (!key) {
@@ -263,7 +355,7 @@ var ReactEditor = {
263
355
  /**
264
356
  * Find the path of Slate node.
265
357
  */
266
- findPath(editor, node) {
358
+ findPath: function findPath(editor, node) {
267
359
  var path = [];
268
360
  var child = node;
269
361
 
@@ -294,21 +386,21 @@ var ReactEditor = {
294
386
  /**
295
387
  * Check if the editor is focused.
296
388
  */
297
- isFocused(editor) {
389
+ isFocused: function isFocused(editor) {
298
390
  return !!IS_FOCUSED.get(editor);
299
391
  },
300
392
 
301
393
  /**
302
394
  * Check if the editor is in read-only mode.
303
395
  */
304
- isReadOnly(editor) {
396
+ isReadOnly: function isReadOnly(editor) {
305
397
  return !!IS_READ_ONLY.get(editor);
306
398
  },
307
399
 
308
400
  /**
309
401
  * Blur the editor.
310
402
  */
311
- blur(editor) {
403
+ blur: function blur(editor) {
312
404
  var el = ReactEditor.toDOMNode(editor, editor);
313
405
  IS_FOCUSED.set(editor, false);
314
406
 
@@ -320,7 +412,7 @@ var ReactEditor = {
320
412
  /**
321
413
  * Focus the editor.
322
414
  */
323
- focus(editor) {
415
+ focus: function focus(editor) {
324
416
  var el = ReactEditor.toDOMNode(editor, editor);
325
417
  IS_FOCUSED.set(editor, true);
326
418
 
@@ -334,10 +426,8 @@ var ReactEditor = {
334
426
  /**
335
427
  * Deselect the editor.
336
428
  */
337
- deselect(editor) {
338
- var {
339
- selection
340
- } = editor;
429
+ deselect: function deselect(editor) {
430
+ var selection = editor.selection;
341
431
  var domSelection = window.getSelection();
342
432
 
343
433
  if (domSelection && domSelection.rangeCount > 0) {
@@ -352,11 +442,10 @@ var ReactEditor = {
352
442
  /**
353
443
  * Check if a DOM node is within the editor.
354
444
  */
355
- hasDOMNode(editor, target) {
445
+ hasDOMNode: function hasDOMNode(editor, target) {
356
446
  var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
357
- var {
358
- editable = false
359
- } = options;
447
+ var _options$editable = options.editable,
448
+ editable = _options$editable === void 0 ? false : _options$editable;
360
449
  var editorEl = ReactEditor.toDOMNode(editor, editor);
361
450
  var targetEl; // COMPAT: In Firefox, reading `target.nodeType` will throw an error if
362
451
  // target is originating from an internal "restricted" element (e.g. a
@@ -381,21 +470,21 @@ var ReactEditor = {
381
470
  /**
382
471
  * Insert data from a `DataTransfer` into the editor.
383
472
  */
384
- insertData(editor, data) {
473
+ insertData: function insertData(editor, data) {
385
474
  editor.insertData(data);
386
475
  },
387
476
 
388
477
  /**
389
478
  * Sets data from the currently selected fragment on a `DataTransfer`.
390
479
  */
391
- setFragmentData(editor, data) {
480
+ setFragmentData: function setFragmentData(editor, data) {
392
481
  editor.setFragmentData(data);
393
482
  },
394
483
 
395
484
  /**
396
485
  * Find the native DOM element from a Slate node.
397
486
  */
398
- toDOMNode(editor, node) {
487
+ toDOMNode: function toDOMNode(editor, node) {
399
488
  var domNode = slate.Editor.isEditor(node) ? EDITOR_TO_ELEMENT.get(editor) : KEY_TO_ELEMENT.get(ReactEditor.findKey(editor, node));
400
489
 
401
490
  if (!domNode) {
@@ -408,13 +497,16 @@ var ReactEditor = {
408
497
  /**
409
498
  * Find a native DOM selection point from a Slate point.
410
499
  */
411
- toDOMPoint(editor, point) {
412
- var [node] = slate.Editor.node(editor, point.path);
500
+ toDOMPoint: function toDOMPoint(editor, point) {
501
+ var _Editor$node = slate.Editor.node(editor, point.path),
502
+ _Editor$node2 = slicedToArray(_Editor$node, 1),
503
+ node = _Editor$node2[0];
504
+
413
505
  var el = ReactEditor.toDOMNode(editor, node);
414
506
  var domPoint; // If we're inside a void node, force the offset to 0, otherwise the zero
415
507
  // width spacing character will result in an incorrect offset of 1
416
508
 
417
- if (slate.Editor.void(editor, {
509
+ if (slate.Editor["void"](editor, {
418
510
  at: point
419
511
  })) {
420
512
  point = {
@@ -430,16 +522,15 @@ var ReactEditor = {
430
522
  var texts = Array.from(el.querySelectorAll(selector));
431
523
  var start = 0;
432
524
 
433
- for (var text of texts) {
525
+ for (var _i = 0, _texts = texts; _i < _texts.length; _i++) {
526
+ var text = _texts[_i];
434
527
  var domNode = text.childNodes[0];
435
528
 
436
529
  if (domNode == null || domNode.textContent == null) {
437
530
  continue;
438
531
  }
439
532
 
440
- var {
441
- length
442
- } = domNode.textContent;
533
+ var length = domNode.textContent.length;
443
534
  var attr = text.getAttribute('data-slate-length');
444
535
  var trueLength = attr == null ? length : parseInt(attr, 10);
445
536
  var end = start + trueLength;
@@ -463,20 +554,27 @@ var ReactEditor = {
463
554
  /**
464
555
  * Find a native DOM range from a Slate `range`.
465
556
  */
466
- toDOMRange(editor, range) {
467
- var {
468
- anchor,
469
- focus
470
- } = range;
557
+ toDOMRange: function toDOMRange(editor, range) {
558
+ var anchor = range.anchor,
559
+ focus = range.focus;
471
560
  var isBackward = slate.Range.isBackward(range);
472
561
  var domAnchor = ReactEditor.toDOMPoint(editor, anchor);
473
562
  var domFocus = slate.Range.isCollapsed(range) ? domAnchor : ReactEditor.toDOMPoint(editor, focus);
474
563
  var domRange = window.document.createRange();
475
- var [startNode, startOffset] = isBackward ? domFocus : domAnchor;
476
- var [endNode, endOffset] = isBackward ? domAnchor : domFocus; // A slate Point at zero-width Leaf always has an offset of 0 but a native DOM selection at
564
+
565
+ var _ref = isBackward ? domFocus : domAnchor,
566
+ _ref2 = slicedToArray(_ref, 2),
567
+ startNode = _ref2[0],
568
+ startOffset = _ref2[1];
569
+
570
+ var _ref3 = isBackward ? domAnchor : domFocus,
571
+ _ref4 = slicedToArray(_ref3, 2),
572
+ endNode = _ref4[0],
573
+ endOffset = _ref4[1]; // A slate Point at zero-width Leaf always has an offset of 0 but a native DOM selection at
477
574
  // zero-width node has an offset of 1 so we have to check if we are in a zero-width node and
478
575
  // adjust the offset accordingly.
479
576
 
577
+
480
578
  var startEl = isDOMElement(startNode) ? startNode : startNode.parentElement;
481
579
  var isStartAtZeroWidth = !!startEl.getAttribute('data-slate-zero-width');
482
580
  var endEl = isDOMElement(endNode) ? endNode : endNode.parentElement;
@@ -489,7 +587,7 @@ var ReactEditor = {
489
587
  /**
490
588
  * Find a Slate node from a native DOM `element`.
491
589
  */
492
- toSlateNode(editor, domNode) {
590
+ toSlateNode: function toSlateNode(editor, domNode) {
493
591
  var domEl = isDOMElement(domNode) ? domNode : domNode.parentElement;
494
592
 
495
593
  if (domEl && !domEl.hasAttribute('data-slate-node')) {
@@ -508,16 +606,15 @@ var ReactEditor = {
508
606
  /**
509
607
  * Get the target range from a DOM `event`.
510
608
  */
511
- findEventRange(editor, event) {
609
+ findEventRange: function findEventRange(editor, event) {
512
610
  if ('nativeEvent' in event) {
513
611
  event = event.nativeEvent;
514
612
  }
515
613
 
516
- var {
517
- clientX: x,
518
- clientY: y,
519
- target
520
- } = event;
614
+ var _event = event,
615
+ x = _event.clientX,
616
+ y = _event.clientY,
617
+ target = _event.target;
521
618
 
522
619
  if (x == null || y == null) {
523
620
  throw new Error("Cannot resolve a Slate range from a DOM event: ".concat(event));
@@ -545,9 +642,8 @@ var ReactEditor = {
545
642
 
546
643
 
547
644
  var domRange;
548
- var {
549
- document
550
- } = window; // COMPAT: In Firefox, `caretRangeFromPoint` doesn't exist. (2016/07/25)
645
+ var _window = window,
646
+ document = _window.document; // COMPAT: In Firefox, `caretRangeFromPoint` doesn't exist. (2016/07/25)
551
647
 
552
648
  if (document.caretRangeFromPoint) {
553
649
  domRange = document.caretRangeFromPoint(x, y);
@@ -573,8 +669,12 @@ var ReactEditor = {
573
669
  /**
574
670
  * Find a Slate point from a DOM selection's `domNode` and `domOffset`.
575
671
  */
576
- toSlatePoint(editor, domPoint) {
577
- var [nearestNode, nearestOffset] = normalizeDOMPoint(domPoint);
672
+ toSlatePoint: function toSlatePoint(editor, domPoint) {
673
+ var _normalizeDOMPoint = normalizeDOMPoint(domPoint),
674
+ _normalizeDOMPoint2 = slicedToArray(_normalizeDOMPoint, 2),
675
+ nearestNode = _normalizeDOMPoint2[0],
676
+ nearestOffset = _normalizeDOMPoint2[1];
677
+
578
678
  var parentNode = nearestNode.parentNode;
579
679
  var textNode = null;
580
680
  var offset = 0;
@@ -591,8 +691,8 @@ var ReactEditor = {
591
691
  range.setStart(textNode, 0);
592
692
  range.setEnd(nearestNode, nearestOffset);
593
693
  var contents = range.cloneContents();
594
- var removals = [...contents.querySelectorAll('[data-slate-zero-width]'), ...contents.querySelectorAll('[contenteditable=false]')];
595
- removals.forEach(el => {
694
+ var removals = [].concat(toConsumableArray(contents.querySelectorAll('[data-slate-zero-width]')), toConsumableArray(contents.querySelectorAll('[contenteditable=false]')));
695
+ removals.forEach(function (el) {
596
696
  el.parentNode.removeChild(el);
597
697
  }); // COMPAT: Edge has a bug where Range.prototype.toString() will
598
698
  // convert \n into \r\n. The bug causes a loop when slate-react
@@ -631,15 +731,15 @@ var ReactEditor = {
631
731
  var slateNode = ReactEditor.toSlateNode(editor, textNode);
632
732
  var path = ReactEditor.findPath(editor, slateNode);
633
733
  return {
634
- path,
635
- offset
734
+ path: path,
735
+ offset: offset
636
736
  };
637
737
  },
638
738
 
639
739
  /**
640
740
  * Find a Slate range from a DOM range or selection.
641
741
  */
642
- toSlateRange(editor, domRange) {
742
+ toSlateRange: function toSlateRange(editor, domRange) {
643
743
  var el = domRange instanceof Selection ? domRange.anchorNode : domRange.startContainer;
644
744
  var anchorNode;
645
745
  var anchorOffset;
@@ -670,11 +770,10 @@ var ReactEditor = {
670
770
  var anchor = ReactEditor.toSlatePoint(editor, [anchorNode, anchorOffset]);
671
771
  var focus = isCollapsed ? anchor : ReactEditor.toSlatePoint(editor, [focusNode, focusOffset]);
672
772
  return {
673
- anchor,
674
- focus
773
+ anchor: anchor,
774
+ focus: focus
675
775
  };
676
776
  }
677
-
678
777
  };
679
778
 
680
779
  /**
@@ -686,7 +785,7 @@ var FocusedContext = React.createContext(false);
686
785
  * Get the current `focused` state of the editor.
687
786
  */
688
787
 
689
- var useFocused = () => {
788
+ var useFocused = function useFocused() {
690
789
  return React.useContext(FocusedContext);
691
790
  };
692
791
 
@@ -699,7 +798,7 @@ var EditorContext = React.createContext(null);
699
798
  * Get the current editor object from the React context.
700
799
  */
701
800
 
702
- var useEditor = () => {
801
+ var useEditor = function useEditor() {
703
802
  var editor = React.useContext(EditorContext);
704
803
 
705
804
  if (!editor) {
@@ -719,14 +818,16 @@ var SlateContext = React.createContext(null);
719
818
  * Get the current editor object from the React context.
720
819
  */
721
820
 
722
- var useSlate = () => {
821
+ var useSlate = function useSlate() {
723
822
  var context = React.useContext(SlateContext);
724
823
 
725
824
  if (!context) {
726
825
  throw new Error("The `useSlate` hook must be used inside the <SlateProvider> component's context.");
727
826
  }
728
827
 
729
- var [editor] = context;
828
+ var _context = slicedToArray(context, 1),
829
+ editor = _context[0];
830
+
730
831
  return editor;
731
832
  };
732
833
 
@@ -735,29 +836,31 @@ var useSlate = () => {
735
836
  * is a mutable singleton so it won't ever register as "changed" otherwise.
736
837
  */
737
838
 
738
- var Slate = props => {
739
- var {
740
- editor,
741
- children,
742
- onChange,
743
- value
744
- } = props,
745
- rest = _objectWithoutProperties(props, ["editor", "children", "onChange", "value"]);
746
-
747
- var [key, setKey] = React.useState(0);
748
- var context = React.useMemo(() => {
839
+ var Slate = function Slate(props) {
840
+ var editor = props.editor,
841
+ children = props.children,
842
+ onChange = props.onChange,
843
+ value = props.value,
844
+ rest = objectWithoutProperties(props, ["editor", "children", "onChange", "value"]);
845
+
846
+ var _useState = React.useState(0),
847
+ _useState2 = slicedToArray(_useState, 2),
848
+ key = _useState2[0],
849
+ setKey = _useState2[1];
850
+
851
+ var context = React.useMemo(function () {
749
852
  editor.children = value;
750
853
  Object.assign(editor, rest);
751
854
  return [editor];
752
- }, [key, value, ...Object.values(rest)]);
753
- var onContextChange = React.useCallback(() => {
855
+ }, [key, value].concat(toConsumableArray(Object.values(rest))));
856
+ var onContextChange = React.useCallback(function () {
754
857
  onChange(editor.children);
755
858
  setKey(key + 1);
756
859
  }, [key, onChange]);
757
860
  EDITOR_TO_ON_CHANGE.set(editor, onContextChange);
758
- React.useEffect(() => {
759
- return () => {
760
- EDITOR_TO_ON_CHANGE.set(editor, () => {});
861
+ React.useEffect(function () {
862
+ return function () {
863
+ EDITOR_TO_ON_CHANGE.set(editor, function () {});
761
864
  };
762
865
  }, []);
763
866
  return React__default.createElement(SlateContext.Provider, {
@@ -778,7 +881,7 @@ var ReadOnlyContext = React.createContext(false);
778
881
  * Get the current `readOnly` state of the editor.
779
882
  */
780
883
 
781
- var useReadOnly = () => {
884
+ var useReadOnly = function useReadOnly() {
782
885
  return React.useContext(ReadOnlyContext);
783
886
  };
784
887
 
@@ -791,7 +894,7 @@ var SelectedContext = React.createContext(false);
791
894
  * Get the current `selected` state of an element.
792
895
  */
793
896
 
794
- var useSelected = () => {
897
+ var useSelected = function useSelected() {
795
898
  return React.useContext(SelectedContext);
796
899
  };
797
900
 
@@ -799,14 +902,12 @@ var useSelected = () => {
799
902
  * `withReact` adds React and DOM specific behaviors to the editor.
800
903
  */
801
904
 
802
- var withReact = editor => {
905
+ var withReact = function withReact(editor) {
803
906
  var e = editor;
804
- var {
805
- apply,
806
- onChange
807
- } = e;
907
+ var apply = e.apply,
908
+ onChange = e.onChange;
808
909
 
809
- e.apply = op => {
910
+ e.apply = function (op) {
810
911
  var matches = [];
811
912
 
812
913
  switch (op.type) {
@@ -814,11 +915,34 @@ var withReact = editor => {
814
915
  case 'remove_text':
815
916
  case 'set_node':
816
917
  {
817
- for (var [node, path] of slate.Editor.levels(e, {
818
- at: op.path
819
- })) {
820
- var key = ReactEditor.findKey(e, node);
821
- matches.push([path, key]);
918
+ var _iteratorNormalCompletion = true;
919
+ var _didIteratorError = false;
920
+ var _iteratorError = undefined;
921
+
922
+ try {
923
+ for (var _iterator = slate.Editor.levels(e, {
924
+ at: op.path
925
+ })[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
926
+ var _step$value = slicedToArray(_step.value, 2),
927
+ node = _step$value[0],
928
+ path = _step$value[1];
929
+
930
+ var key = ReactEditor.findKey(e, node);
931
+ matches.push([path, key]);
932
+ }
933
+ } catch (err) {
934
+ _didIteratorError = true;
935
+ _iteratorError = err;
936
+ } finally {
937
+ try {
938
+ if (!_iteratorNormalCompletion && _iterator["return"] != null) {
939
+ _iterator["return"]();
940
+ }
941
+ } finally {
942
+ if (_didIteratorError) {
943
+ throw _iteratorError;
944
+ }
945
+ }
822
946
  }
823
947
 
824
948
  break;
@@ -829,12 +953,35 @@ var withReact = editor => {
829
953
  case 'merge_node':
830
954
  case 'split_node':
831
955
  {
832
- for (var [_node, _path] of slate.Editor.levels(e, {
833
- at: slate.Path.parent(op.path)
834
- })) {
835
- var _key = ReactEditor.findKey(e, _node);
956
+ var _iteratorNormalCompletion2 = true;
957
+ var _didIteratorError2 = false;
958
+ var _iteratorError2 = undefined;
836
959
 
837
- matches.push([_path, _key]);
960
+ try {
961
+ for (var _iterator2 = slate.Editor.levels(e, {
962
+ at: slate.Path.parent(op.path)
963
+ })[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {
964
+ var _step2$value = slicedToArray(_step2.value, 2),
965
+ _node = _step2$value[0],
966
+ _path = _step2$value[1];
967
+
968
+ var _key = ReactEditor.findKey(e, _node);
969
+
970
+ matches.push([_path, _key]);
971
+ }
972
+ } catch (err) {
973
+ _didIteratorError2 = true;
974
+ _iteratorError2 = err;
975
+ } finally {
976
+ try {
977
+ if (!_iteratorNormalCompletion2 && _iterator2["return"] != null) {
978
+ _iterator2["return"]();
979
+ }
980
+ } finally {
981
+ if (_didIteratorError2) {
982
+ throw _iteratorError2;
983
+ }
984
+ }
838
985
  }
839
986
 
840
987
  break;
@@ -843,26 +990,35 @@ var withReact = editor => {
843
990
 
844
991
  apply(op);
845
992
 
846
- for (var [_path2, _key2] of matches) {
847
- var [_node2] = slate.Editor.node(e, _path2);
993
+ for (var _i = 0, _matches = matches; _i < _matches.length; _i++) {
994
+ var _matches$_i = slicedToArray(_matches[_i], 2),
995
+ _path2 = _matches$_i[0],
996
+ _key2 = _matches$_i[1];
997
+
998
+ var _Editor$node = slate.Editor.node(e, _path2),
999
+ _Editor$node2 = slicedToArray(_Editor$node, 1),
1000
+ _node2 = _Editor$node2[0];
1001
+
848
1002
  NODE_TO_KEY.set(_node2, _key2);
849
1003
  }
850
1004
  };
851
1005
 
852
- e.setFragmentData = data => {
853
- var {
854
- selection
855
- } = e;
1006
+ e.setFragmentData = function (data) {
1007
+ var selection = e.selection;
856
1008
 
857
1009
  if (!selection) {
858
1010
  return;
859
1011
  }
860
1012
 
861
- var [start, end] = slate.Range.edges(selection);
862
- var startVoid = slate.Editor.void(e, {
1013
+ var _Range$edges = slate.Range.edges(selection),
1014
+ _Range$edges2 = slicedToArray(_Range$edges, 2),
1015
+ start = _Range$edges2[0],
1016
+ end = _Range$edges2[1];
1017
+
1018
+ var startVoid = slate.Editor["void"](e, {
863
1019
  at: start.path
864
1020
  });
865
- var endVoid = slate.Editor.void(e, {
1021
+ var endVoid = slate.Editor["void"](e, {
866
1022
  at: end.path
867
1023
  });
868
1024
 
@@ -876,7 +1032,7 @@ var withReact = editor => {
876
1032
  var contents = domRange.cloneContents();
877
1033
  var attach = contents.childNodes[0]; // Make sure attach is non-empty, since empty nodes will not get copied.
878
1034
 
879
- contents.childNodes.forEach(node => {
1035
+ contents.childNodes.forEach(function (node) {
880
1036
  if (node.textContent && node.textContent.trim() !== '') {
881
1037
  attach = node;
882
1038
  }
@@ -885,7 +1041,9 @@ var withReact = editor => {
885
1041
  // content, since the spacer is before void's content in the DOM.
886
1042
 
887
1043
  if (endVoid) {
888
- var [voidNode] = endVoid;
1044
+ var _endVoid = slicedToArray(endVoid, 1),
1045
+ voidNode = _endVoid[0];
1046
+
889
1047
  var r = domRange.cloneRange();
890
1048
  var domNode = ReactEditor.toDOMNode(e, voidNode);
891
1049
  r.setEndAfter(domNode);
@@ -902,7 +1060,7 @@ var withReact = editor => {
902
1060
  // show up elsewhere when pasted.
903
1061
 
904
1062
 
905
- Array.from(contents.querySelectorAll('[data-slate-zero-width]')).forEach(zw => {
1063
+ Array.from(contents.querySelectorAll('[data-slate-zero-width]')).forEach(function (zw) {
906
1064
  var isNewline = zw.getAttribute('data-slate-zero-width') === 'n';
907
1065
  zw.textContent = isNewline ? '\n' : '';
908
1066
  }); // Set a `data-slate-fragment` attribute on a non-empty node, so it shows up
@@ -934,7 +1092,7 @@ var withReact = editor => {
934
1092
  document.body.removeChild(div);
935
1093
  };
936
1094
 
937
- e.insertData = data => {
1095
+ e.insertData = function (data) {
938
1096
  var fragment = data.getData('application/x-slate-fragment');
939
1097
 
940
1098
  if (fragment) {
@@ -949,26 +1107,46 @@ var withReact = editor => {
949
1107
  if (text) {
950
1108
  var lines = text.split(/\r\n|\r|\n/);
951
1109
  var split = false;
1110
+ var _iteratorNormalCompletion3 = true;
1111
+ var _didIteratorError3 = false;
1112
+ var _iteratorError3 = undefined;
952
1113
 
953
- for (var line of lines) {
954
- if (split) {
955
- slate.Transforms.splitNodes(e, {
956
- always: true
957
- });
958
- }
1114
+ try {
1115
+ for (var _iterator3 = lines[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {
1116
+ var line = _step3.value;
1117
+
1118
+ if (split) {
1119
+ slate.Transforms.splitNodes(e, {
1120
+ always: true
1121
+ });
1122
+ }
959
1123
 
960
- slate.Transforms.insertText(e, line);
961
- split = true;
1124
+ slate.Transforms.insertText(e, line);
1125
+ split = true;
1126
+ }
1127
+ } catch (err) {
1128
+ _didIteratorError3 = true;
1129
+ _iteratorError3 = err;
1130
+ } finally {
1131
+ try {
1132
+ if (!_iteratorNormalCompletion3 && _iterator3["return"] != null) {
1133
+ _iterator3["return"]();
1134
+ }
1135
+ } finally {
1136
+ if (_didIteratorError3) {
1137
+ throw _iteratorError3;
1138
+ }
1139
+ }
962
1140
  }
963
1141
  }
964
1142
  };
965
1143
 
966
- e.onChange = () => {
1144
+ e.onChange = function () {
967
1145
  // COMPAT: React doesn't batch `setState` hook calls, which means that the
968
1146
  // children and selection can get out of sync for one render pass. So we
969
1147
  // have to use this unstable API to ensure it batches them. (2019/12/03)
970
1148
  // https://github.com/facebook/react/issues/14259#issuecomment-439702367
971
- ReactDOM.unstable_batchedUpdates(() => {
1149
+ ReactDOM.unstable_batchedUpdates(function () {
972
1150
  var onContextChange = EDITOR_TO_ON_CHANGE.get(e);
973
1151
 
974
1152
  if (onContextChange) {
@@ -986,13 +1164,11 @@ var withReact = editor => {
986
1164
  * Leaf content strings.
987
1165
  */
988
1166
 
989
- var String = props => {
990
- var {
991
- isLast,
992
- leaf,
993
- parent,
994
- text
995
- } = props;
1167
+ var String = function String(props) {
1168
+ var isLast = props.isLast,
1169
+ leaf = props.leaf,
1170
+ parent = props.parent,
1171
+ text = props.text;
996
1172
  var editor = useEditor();
997
1173
  var path = ReactEditor.findPath(editor, text);
998
1174
  var parentPath = slate.Path.parent(path); // COMPAT: Render text inside void nodes with a zero-width space.
@@ -1038,11 +1214,10 @@ var String = props => {
1038
1214
  */
1039
1215
 
1040
1216
 
1041
- var TextString = props => {
1042
- var {
1043
- text,
1044
- isTrailing = false
1045
- } = props;
1217
+ var TextString = function TextString(props) {
1218
+ var text = props.text,
1219
+ _props$isTrailing = props.isTrailing,
1220
+ isTrailing = _props$isTrailing === void 0 ? false : _props$isTrailing;
1046
1221
  return React__default.createElement("span", {
1047
1222
  "data-slate-string": true
1048
1223
  }, text, isTrailing ? '\n' : null);
@@ -1052,29 +1227,30 @@ var TextString = props => {
1052
1227
  */
1053
1228
 
1054
1229
 
1055
- var ZeroWidthString = props => {
1056
- var {
1057
- length = 0,
1058
- isLineBreak = false
1059
- } = props;
1230
+ var ZeroWidthString = function ZeroWidthString(props) {
1231
+ var _props$length = props.length,
1232
+ length = _props$length === void 0 ? 0 : _props$length,
1233
+ _props$isLineBreak = props.isLineBreak,
1234
+ isLineBreak = _props$isLineBreak === void 0 ? false : _props$isLineBreak;
1060
1235
  return React__default.createElement("span", {
1061
1236
  "data-slate-zero-width": isLineBreak ? 'n' : 'z',
1062
1237
  "data-slate-length": length
1063
- }, '\uFEFF', isLineBreak ? React__default.createElement("br", null) : null);
1238
+ }, "\uFEFF", isLineBreak ? React__default.createElement("br", null) : null);
1064
1239
  };
1065
1240
 
1066
1241
  /**
1067
1242
  * Individual leaves in a text node with unique formatting.
1068
1243
  */
1069
1244
 
1070
- var Leaf = props => {
1071
- var {
1072
- leaf,
1073
- isLast,
1074
- text,
1075
- parent,
1076
- renderLeaf = props => React__default.createElement(DefaultLeaf, Object.assign({}, props))
1077
- } = props;
1245
+ var Leaf = function Leaf(props) {
1246
+ var leaf = props.leaf,
1247
+ isLast = props.isLast,
1248
+ text = props.text,
1249
+ parent = props.parent,
1250
+ _props$renderLeaf = props.renderLeaf,
1251
+ renderLeaf = _props$renderLeaf === void 0 ? function (props) {
1252
+ return React__default.createElement(DefaultLeaf, Object.assign({}, props));
1253
+ } : _props$renderLeaf;
1078
1254
  var children = React__default.createElement(String, {
1079
1255
  isLast: isLast,
1080
1256
  leaf: leaf,
@@ -1088,11 +1264,14 @@ var Leaf = props => {
1088
1264
  style: {
1089
1265
  pointerEvents: 'none',
1090
1266
  display: 'inline-block',
1091
- verticalAlign: 'text-top',
1092
1267
  width: '0',
1093
1268
  maxWidth: '100%',
1094
1269
  whiteSpace: 'nowrap',
1095
- opacity: '0.333'
1270
+ opacity: '0.333',
1271
+ userSelect: 'none',
1272
+ fontStyle: 'normal',
1273
+ fontWeight: 'normal',
1274
+ textDecoration: 'none'
1096
1275
  }
1097
1276
  }, leaf.placeholder), children);
1098
1277
  } // COMPAT: Having the `data-` attributes on these leaf elements ensures that
@@ -1104,25 +1283,23 @@ var Leaf = props => {
1104
1283
  'data-slate-leaf': true
1105
1284
  };
1106
1285
  return renderLeaf({
1107
- attributes,
1108
- children,
1109
- leaf,
1110
- text
1286
+ attributes: attributes,
1287
+ children: children,
1288
+ leaf: leaf,
1289
+ text: text
1111
1290
  });
1112
1291
  };
1113
1292
 
1114
- var MemoizedLeaf = React__default.memo(Leaf, (prev, next) => {
1293
+ var MemoizedLeaf = React__default.memo(Leaf, function (prev, next) {
1115
1294
  return next.parent === prev.parent && next.isLast === prev.isLast && next.renderLeaf === prev.renderLeaf && next.text === prev.text && slate.Text.matches(next.leaf, prev.leaf);
1116
1295
  });
1117
1296
  /**
1118
1297
  * The default custom leaf renderer.
1119
1298
  */
1120
1299
 
1121
- var DefaultLeaf = props => {
1122
- var {
1123
- attributes,
1124
- children
1125
- } = props;
1300
+ var DefaultLeaf = function DefaultLeaf(props) {
1301
+ var attributes = props.attributes,
1302
+ children = props.children;
1126
1303
  return React__default.createElement("span", Object.assign({}, attributes), children);
1127
1304
  };
1128
1305
 
@@ -1136,14 +1313,12 @@ var useIsomorphicLayoutEffect = typeof window !== 'undefined' ? React.useLayoutE
1136
1313
  * Text.
1137
1314
  */
1138
1315
 
1139
- var Text = props => {
1140
- var {
1141
- decorations,
1142
- isLast,
1143
- parent,
1144
- renderLeaf,
1145
- text
1146
- } = props;
1316
+ var Text = function Text(props) {
1317
+ var decorations = props.decorations,
1318
+ isLast = props.isLast,
1319
+ parent = props.parent,
1320
+ renderLeaf = props.renderLeaf,
1321
+ text = props.text;
1147
1322
  var editor = useEditor();
1148
1323
  var ref = React.useRef(null);
1149
1324
  var leaves = slate.Text.decorations(text, decorations);
@@ -1163,14 +1338,14 @@ var Text = props => {
1163
1338
  } // Update element-related weak maps with the DOM element ref.
1164
1339
 
1165
1340
 
1166
- useIsomorphicLayoutEffect(() => {
1341
+ useIsomorphicLayoutEffect(function () {
1167
1342
  if (ref.current) {
1168
1343
  KEY_TO_ELEMENT.set(key, ref.current);
1169
1344
  NODE_TO_ELEMENT.set(text, ref.current);
1170
1345
  ELEMENT_TO_NODE.set(ref.current, text);
1171
1346
  } else {
1172
- KEY_TO_ELEMENT.delete(key);
1173
- NODE_TO_ELEMENT.delete(text);
1347
+ KEY_TO_ELEMENT["delete"](key);
1348
+ NODE_TO_ELEMENT["delete"](text);
1174
1349
  }
1175
1350
  });
1176
1351
  return React__default.createElement("span", {
@@ -1179,7 +1354,7 @@ var Text = props => {
1179
1354
  }, children);
1180
1355
  };
1181
1356
 
1182
- var MemoizedText = React__default.memo(Text, (prev, next) => {
1357
+ var MemoizedText = React__default.memo(Text, function (prev, next) {
1183
1358
  return next.parent === prev.parent && next.isLast === prev.isLast && next.renderLeaf === prev.renderLeaf && next.text === prev.text;
1184
1359
  });
1185
1360
 
@@ -1187,15 +1362,16 @@ var MemoizedText = React__default.memo(Text, (prev, next) => {
1187
1362
  * Element.
1188
1363
  */
1189
1364
 
1190
- var Element = props => {
1191
- var {
1192
- decorate,
1193
- decorations,
1194
- element,
1195
- renderElement = p => React__default.createElement(DefaultElement, Object.assign({}, p)),
1196
- renderLeaf,
1197
- selection
1198
- } = props;
1365
+ var Element = function Element(props) {
1366
+ var decorate = props.decorate,
1367
+ decorations = props.decorations,
1368
+ element = props.element,
1369
+ _props$renderElement = props.renderElement,
1370
+ renderElement = _props$renderElement === void 0 ? function (p) {
1371
+ return React__default.createElement(DefaultElement, Object.assign({}, p));
1372
+ } : _props$renderElement,
1373
+ renderLeaf = props.renderLeaf,
1374
+ selection = props.selection;
1199
1375
  var ref = React.useRef(null);
1200
1376
  var editor = useEditor();
1201
1377
  var readOnly = useReadOnly();
@@ -1213,7 +1389,7 @@ var Element = props => {
1213
1389
 
1214
1390
  var attributes = {
1215
1391
  'data-slate-node': 'element',
1216
- ref
1392
+ ref: ref
1217
1393
  };
1218
1394
 
1219
1395
  if (isInline) {
@@ -1240,7 +1416,12 @@ var Element = props => {
1240
1416
  }
1241
1417
 
1242
1418
  var Tag = isInline ? 'span' : 'div';
1243
- var [[_text]] = slate.Node.texts(element);
1419
+
1420
+ var _Node$texts = slate.Node.texts(element),
1421
+ _Node$texts2 = slicedToArray(_Node$texts, 1),
1422
+ _Node$texts2$ = slicedToArray(_Node$texts2[0], 1),
1423
+ _text = _Node$texts2$[0];
1424
+
1244
1425
  children = readOnly ? null : React__default.createElement(Tag, {
1245
1426
  "data-slate-spacer": true,
1246
1427
  style: {
@@ -1260,38 +1441,36 @@ var Element = props => {
1260
1441
  } // Update element-related weak maps with the DOM element ref.
1261
1442
 
1262
1443
 
1263
- useIsomorphicLayoutEffect(() => {
1444
+ useIsomorphicLayoutEffect(function () {
1264
1445
  if (ref.current) {
1265
1446
  KEY_TO_ELEMENT.set(key, ref.current);
1266
1447
  NODE_TO_ELEMENT.set(element, ref.current);
1267
1448
  ELEMENT_TO_NODE.set(ref.current, element);
1268
1449
  } else {
1269
- KEY_TO_ELEMENT.delete(key);
1270
- NODE_TO_ELEMENT.delete(element);
1450
+ KEY_TO_ELEMENT["delete"](key);
1451
+ NODE_TO_ELEMENT["delete"](element);
1271
1452
  }
1272
1453
  });
1273
1454
  return React__default.createElement(SelectedContext.Provider, {
1274
1455
  value: !!selection
1275
1456
  }, renderElement({
1276
- attributes,
1277
- children,
1278
- element
1457
+ attributes: attributes,
1458
+ children: children,
1459
+ element: element
1279
1460
  }));
1280
1461
  };
1281
1462
 
1282
- var MemoizedElement = React__default.memo(Element, (prev, next) => {
1463
+ var MemoizedElement = React__default.memo(Element, function (prev, next) {
1283
1464
  return prev.decorate === next.decorate && prev.element === next.element && prev.renderElement === next.renderElement && prev.renderLeaf === next.renderLeaf && isRangeListEqual(prev.decorations, next.decorations) && (prev.selection === next.selection || !!prev.selection && !!next.selection && slate.Range.equals(prev.selection, next.selection));
1284
1465
  });
1285
1466
  /**
1286
1467
  * The default element renderer.
1287
1468
  */
1288
1469
 
1289
- var DefaultElement = props => {
1290
- var {
1291
- attributes,
1292
- children,
1293
- element
1294
- } = props;
1470
+ var DefaultElement = function DefaultElement(props) {
1471
+ var attributes = props.attributes,
1472
+ children = props.children,
1473
+ element = props.element;
1295
1474
  var editor = useEditor();
1296
1475
  var Tag = editor.isInline(element) ? 'span' : 'div';
1297
1476
  return React__default.createElement(Tag, Object.assign({}, attributes, {
@@ -1308,7 +1487,7 @@ var DefaultElement = props => {
1308
1487
  * kept in order, and the odd case where they aren't is okay to re-render for.
1309
1488
  */
1310
1489
 
1311
- var isRangeListEqual = (list, another) => {
1490
+ var isRangeListEqual = function isRangeListEqual(list, another) {
1312
1491
  if (list.length !== another.length) {
1313
1492
  return false;
1314
1493
  }
@@ -1329,15 +1508,13 @@ var isRangeListEqual = (list, another) => {
1329
1508
  * Children.
1330
1509
  */
1331
1510
 
1332
- var Children = props => {
1333
- var {
1334
- decorate,
1335
- decorations,
1336
- node,
1337
- renderElement,
1338
- renderLeaf,
1339
- selection
1340
- } = props;
1511
+ var Children = function Children(props) {
1512
+ var decorate = props.decorate,
1513
+ decorations = props.decorations,
1514
+ node = props.node,
1515
+ renderElement = props.renderElement,
1516
+ renderLeaf = props.renderLeaf,
1517
+ selection = props.selection;
1341
1518
  var editor = useEditor();
1342
1519
  var path = ReactEditor.findPath(editor, node);
1343
1520
  var children = [];
@@ -1350,12 +1527,31 @@ var Children = props => {
1350
1527
  var range = slate.Editor.range(editor, p);
1351
1528
  var sel = selection && slate.Range.intersection(range, selection);
1352
1529
  var ds = decorate([n, p]);
1530
+ var _iteratorNormalCompletion = true;
1531
+ var _didIteratorError = false;
1532
+ var _iteratorError = undefined;
1353
1533
 
1354
- for (var dec of decorations) {
1355
- var d = slate.Range.intersection(dec, range);
1534
+ try {
1535
+ for (var _iterator = decorations[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
1536
+ var dec = _step.value;
1537
+ var d = slate.Range.intersection(dec, range);
1356
1538
 
1357
- if (d) {
1358
- ds.push(d);
1539
+ if (d) {
1540
+ ds.push(d);
1541
+ }
1542
+ }
1543
+ } catch (err) {
1544
+ _didIteratorError = true;
1545
+ _iteratorError = err;
1546
+ } finally {
1547
+ try {
1548
+ if (!_iteratorNormalCompletion && _iterator["return"] != null) {
1549
+ _iterator["return"]();
1550
+ }
1551
+ } finally {
1552
+ if (_didIteratorError) {
1553
+ throw _iteratorError;
1554
+ }
1359
1555
  }
1360
1556
  }
1361
1557
 
@@ -1392,7 +1588,9 @@ var IS_APPLE = typeof navigator !== 'undefined' && /Mac OS X/.test(navigator.use
1392
1588
  var IS_FIREFOX = typeof navigator !== 'undefined' && /^(?!.*Seamonkey)(?=.*Firefox).*/i.test(navigator.userAgent);
1393
1589
  var IS_SAFARI = typeof navigator !== 'undefined' && /Version\/[\d\.]+.*Safari/.test(navigator.userAgent); // "modern" Edge was released at 79.x
1394
1590
 
1395
- var IS_EDGE_LEGACY = typeof navigator !== 'undefined' && /Edge?\/(?:[0-6][0-9]|[0-7][0-8])/i.test(navigator.userAgent);
1591
+ var IS_EDGE_LEGACY = typeof navigator !== 'undefined' && /Edge?\/(?:[0-6][0-9]|[0-7][0-8])/i.test(navigator.userAgent); // Native beforeInput events don't work well with react on Chrome 75 and older, Chrome 76+ can use beforeInput
1592
+
1593
+ var IS_CHROME_LEGACY = typeof navigator !== 'undefined' && /Chrome?\/(?:[0-7][0-5]|[0-6][0-9])/i.test(navigator.userAgent);
1396
1594
 
1397
1595
  /**
1398
1596
  * Hotkey mappings for each platform.
@@ -1438,14 +1636,14 @@ var WINDOWS_HOTKEYS = {
1438
1636
  * Create a platform-aware hotkey checker.
1439
1637
  */
1440
1638
 
1441
- var create = key => {
1639
+ var create = function create(key) {
1442
1640
  var generic = HOTKEYS[key];
1443
1641
  var apple = APPLE_HOTKEYS[key];
1444
1642
  var windows = WINDOWS_HOTKEYS[key];
1445
1643
  var isGeneric = generic && isHotkey.isKeyHotkey(generic);
1446
1644
  var isApple = apple && isHotkey.isKeyHotkey(apple);
1447
1645
  var isWindows = windows && isHotkey.isKeyHotkey(windows);
1448
- return event => {
1646
+ return function (event) {
1449
1647
  if (isGeneric && isGeneric(event)) return true;
1450
1648
  if (IS_APPLE && isApple && isApple(event)) return true;
1451
1649
  if (!IS_APPLE && isWindows && isWindows(event)) return true;
@@ -1485,52 +1683,55 @@ var Hotkeys = {
1485
1683
 
1486
1684
  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
1487
1685
 
1488
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
1686
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
1687
+ // Chrome Legacy doesn't support `beforeinput` correctly
1489
1688
 
1490
- var HAS_BEFORE_INPUT_SUPPORT = !(IS_FIREFOX || IS_EDGE_LEGACY);
1689
+ var HAS_BEFORE_INPUT_SUPPORT = !(IS_FIREFOX || IS_EDGE_LEGACY || IS_CHROME_LEGACY);
1491
1690
  /**
1492
1691
  * Editable.
1493
1692
  */
1494
1693
 
1495
- var Editable = props => {
1496
- var {
1497
- autoFocus,
1498
- decorate = defaultDecorate,
1499
- onDOMBeforeInput: propsOnDOMBeforeInput,
1500
- placeholder,
1501
- readOnly = false,
1502
- renderElement,
1503
- renderLeaf,
1504
- style = {},
1505
- as: Component = 'div'
1506
- } = props,
1507
- attributes = _objectWithoutProperties(props, ["autoFocus", "decorate", "onDOMBeforeInput", "placeholder", "readOnly", "renderElement", "renderLeaf", "style", "as"]);
1694
+ var Editable = function Editable(props) {
1695
+ var autoFocus = props.autoFocus,
1696
+ _props$decorate = props.decorate,
1697
+ decorate = _props$decorate === void 0 ? defaultDecorate : _props$decorate,
1698
+ propsOnDOMBeforeInput = props.onDOMBeforeInput,
1699
+ placeholder = props.placeholder,
1700
+ _props$readOnly = props.readOnly,
1701
+ readOnly = _props$readOnly === void 0 ? false : _props$readOnly,
1702
+ renderElement = props.renderElement,
1703
+ renderLeaf = props.renderLeaf,
1704
+ _props$style = props.style,
1705
+ style = _props$style === void 0 ? {} : _props$style,
1706
+ _props$as = props.as,
1707
+ Component = _props$as === void 0 ? 'div' : _props$as,
1708
+ attributes = objectWithoutProperties(props, ["autoFocus", "decorate", "onDOMBeforeInput", "placeholder", "readOnly", "renderElement", "renderLeaf", "style", "as"]);
1508
1709
 
1509
1710
  var editor = useSlate();
1510
1711
  var ref = React.useRef(null); // Update internal state on each render.
1511
1712
 
1512
1713
  IS_READ_ONLY.set(editor, readOnly); // Keep track of some state for the event handler logic.
1513
1714
 
1514
- var state = React.useMemo(() => ({
1515
- isComposing: false,
1516
- isUpdatingSelection: false,
1517
- latestElement: null
1518
- }), []); // Update element-related weak maps with the DOM element ref.
1715
+ var state = React.useMemo(function () {
1716
+ return {
1717
+ isComposing: false,
1718
+ isUpdatingSelection: false,
1719
+ latestElement: null
1720
+ };
1721
+ }, []); // Update element-related weak maps with the DOM element ref.
1519
1722
 
1520
- useIsomorphicLayoutEffect(() => {
1723
+ useIsomorphicLayoutEffect(function () {
1521
1724
  if (ref.current) {
1522
1725
  EDITOR_TO_ELEMENT.set(editor, ref.current);
1523
1726
  NODE_TO_ELEMENT.set(editor, ref.current);
1524
1727
  ELEMENT_TO_NODE.set(ref.current, editor);
1525
1728
  } else {
1526
- NODE_TO_ELEMENT.delete(editor);
1729
+ NODE_TO_ELEMENT["delete"](editor);
1527
1730
  }
1528
1731
  }); // Whenever the editor updates, make sure the DOM selection state is in sync.
1529
1732
 
1530
- useIsomorphicLayoutEffect(() => {
1531
- var {
1532
- selection
1533
- } = editor;
1733
+ useIsomorphicLayoutEffect(function () {
1734
+ var selection = editor.selection;
1534
1735
  var domSelection = window.getSelection();
1535
1736
 
1536
1737
  if (state.isComposing || !domSelection || !ReactEditor.isFocused(editor)) {
@@ -1566,11 +1767,12 @@ var Editable = props => {
1566
1767
  domSelection.addRange(newDomRange);
1567
1768
  var leafEl = newDomRange.startContainer.parentElement;
1568
1769
  scrollIntoView(leafEl, {
1569
- scrollMode: 'if-needed'
1770
+ scrollMode: 'if-needed',
1771
+ boundary: el
1570
1772
  });
1571
1773
  }
1572
1774
 
1573
- setTimeout(() => {
1775
+ setTimeout(function () {
1574
1776
  // COMPAT: In Firefox, it's not enough to create a range, you also need
1575
1777
  // to focus the contenteditable element too. (2016/11/16)
1576
1778
  if (newDomRange && IS_FIREFOX) {
@@ -1582,7 +1784,7 @@ var Editable = props => {
1582
1784
  }); // The autoFocus TextareaHTMLAttribute doesn't do anything on a div, so it
1583
1785
  // needs to be manually focused.
1584
1786
 
1585
- React.useEffect(() => {
1787
+ React.useEffect(function () {
1586
1788
  if (ref.current && autoFocus) {
1587
1789
  ref.current.focus();
1588
1790
  }
@@ -1591,14 +1793,10 @@ var Editable = props => {
1591
1793
  // to the real event sadly. (2019/11/01)
1592
1794
  // https://github.com/facebook/react/issues/11211
1593
1795
 
1594
- var onDOMBeforeInput = React.useCallback(event => {
1796
+ var onDOMBeforeInput = React.useCallback(function (event) {
1595
1797
  if (!readOnly && hasEditableTarget(editor, event.target) && !isDOMEventHandled(event, propsOnDOMBeforeInput)) {
1596
- var {
1597
- selection
1598
- } = editor;
1599
- var {
1600
- inputType: type
1601
- } = event;
1798
+ var selection = editor.selection;
1799
+ var type = event.inputType;
1602
1800
  var data = event.dataTransfer || event.data || undefined; // These two types occur while a user is composing text and can't be
1603
1801
  // cancelled. Let them through and wait for the composition to end.
1604
1802
 
@@ -1611,7 +1809,9 @@ var Editable = props => {
1611
1809
  // and those commands determine that for themselves.
1612
1810
 
1613
1811
  if (!type.startsWith('delete') || type.startsWith('deleteBy')) {
1614
- var [targetRange] = event.getTargetRanges();
1812
+ var _event$getTargetRange = event.getTargetRanges(),
1813
+ _event$getTargetRange2 = slicedToArray(_event$getTargetRange, 1),
1814
+ targetRange = _event$getTargetRange2[0];
1615
1815
 
1616
1816
  if (targetRange) {
1617
1817
  var range = ReactEditor.toSlateRange(editor, targetRange);
@@ -1739,14 +1939,14 @@ var Editable = props => {
1739
1939
  // real `beforeinput` events sadly... (2019/11/04)
1740
1940
  // https://github.com/facebook/react/issues/11211
1741
1941
 
1742
- useIsomorphicLayoutEffect(() => {
1743
- if (ref.current) {
1942
+ useIsomorphicLayoutEffect(function () {
1943
+ if (ref.current && HAS_BEFORE_INPUT_SUPPORT) {
1744
1944
  // @ts-ignore The `beforeinput` event isn't recognized.
1745
1945
  ref.current.addEventListener('beforeinput', onDOMBeforeInput);
1746
1946
  }
1747
1947
 
1748
- return () => {
1749
- if (ref.current) {
1948
+ return function () {
1949
+ if (ref.current && HAS_BEFORE_INPUT_SUPPORT) {
1750
1950
  // @ts-ignore The `beforeinput` event isn't recognized.
1751
1951
  ref.current.removeEventListener('beforeinput', onDOMBeforeInput);
1752
1952
  }
@@ -1757,11 +1957,9 @@ var Editable = props => {
1757
1957
  // released. This causes issues in situations where another change happens
1758
1958
  // while a selection is being dragged.
1759
1959
 
1760
- var onDOMSelectionChange = React.useCallback(throttle(() => {
1960
+ var onDOMSelectionChange = React.useCallback(throttle(function () {
1761
1961
  if (!readOnly && !state.isComposing && !state.isUpdatingSelection) {
1762
- var {
1763
- activeElement
1764
- } = window.document;
1962
+ var activeElement = window.document.activeElement;
1765
1963
  var el = ReactEditor.toDOMNode(editor, editor);
1766
1964
  var domSelection = window.getSelection();
1767
1965
 
@@ -1769,17 +1967,15 @@ var Editable = props => {
1769
1967
  state.latestElement = activeElement;
1770
1968
  IS_FOCUSED.set(editor, true);
1771
1969
  } else {
1772
- IS_FOCUSED.delete(editor);
1970
+ IS_FOCUSED["delete"](editor);
1773
1971
  }
1774
1972
 
1775
1973
  if (!domSelection) {
1776
1974
  return slate.Transforms.deselect(editor);
1777
1975
  }
1778
1976
 
1779
- var {
1780
- anchorNode,
1781
- focusNode
1782
- } = domSelection;
1977
+ var anchorNode = domSelection.anchorNode,
1978
+ focusNode = domSelection.focusNode;
1783
1979
  var anchorNodeSelectable = hasEditableTarget(editor, anchorNode) || isTargetInsideVoid(editor, anchorNode);
1784
1980
  var focusNodeSelectable = hasEditableTarget(editor, focusNode) || isTargetInsideVoid(editor, focusNode);
1785
1981
 
@@ -1796,22 +1992,19 @@ var Editable = props => {
1796
1992
  // fire for any change to the selection inside the editor. (2019/11/04)
1797
1993
  // https://github.com/facebook/react/issues/5785
1798
1994
 
1799
- useIsomorphicLayoutEffect(() => {
1995
+ useIsomorphicLayoutEffect(function () {
1800
1996
  window.document.addEventListener('selectionchange', onDOMSelectionChange);
1801
- return () => {
1997
+ return function () {
1802
1998
  window.document.removeEventListener('selectionchange', onDOMSelectionChange);
1803
1999
  };
1804
2000
  }, [onDOMSelectionChange]);
1805
2001
  var decorations = decorate([editor, []]);
1806
2002
 
1807
2003
  if (placeholder && editor.children.length === 1 && Array.from(slate.Node.texts(editor)).length === 1 && slate.Node.string(editor) === '') {
2004
+ var _decorations$push;
2005
+
1808
2006
  var start = slate.Editor.start(editor, []);
1809
- decorations.push({
1810
- [PLACEHOLDER_SYMBOL]: true,
1811
- placeholder,
1812
- anchor: start,
1813
- focus: start
1814
- });
2007
+ 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));
1815
2008
  }
1816
2009
 
1817
2010
  return React__default.createElement(ReadOnlyContext.Provider, {
@@ -1841,7 +2034,7 @@ var Editable = props => {
1841
2034
  // Allow words to break if they are too long.
1842
2035
  wordWrap: 'break-word'
1843
2036
  }, style),
1844
- onBeforeInput: React.useCallback(event => {
2037
+ onBeforeInput: React.useCallback(function (event) {
1845
2038
  // COMPAT: Certain browsers don't support the `beforeinput` event, so we
1846
2039
  // fall back to React's leaky polyfill instead just for it. It
1847
2040
  // only works for the `insertText` input type.
@@ -1851,7 +2044,7 @@ var Editable = props => {
1851
2044
  slate.Editor.insertText(editor, text);
1852
2045
  }
1853
2046
  }, [readOnly]),
1854
- onBlur: React.useCallback(event => {
2047
+ onBlur: React.useCallback(function (event) {
1855
2048
  if (readOnly || state.isUpdatingSelection || !hasEditableTarget(editor, event.target) || isEventHandled(event, attributes.onBlur)) {
1856
2049
  return;
1857
2050
  } // COMPAT: If the current `activeElement` is still the previous
@@ -1864,9 +2057,7 @@ var Editable = props => {
1864
2057
  return;
1865
2058
  }
1866
2059
 
1867
- var {
1868
- relatedTarget
1869
- } = event;
2060
+ var relatedTarget = event.relatedTarget;
1870
2061
  var el = ReactEditor.toDOMNode(editor, editor); // COMPAT: The event should be ignored if the focus is returning
1871
2062
  // to the editor from an embedded editable element (eg. an <input>
1872
2063
  // element inside a void node).
@@ -1892,24 +2083,30 @@ var Editable = props => {
1892
2083
  }
1893
2084
  }
1894
2085
 
1895
- IS_FOCUSED.delete(editor);
2086
+ IS_FOCUSED["delete"](editor);
1896
2087
  }, [readOnly, attributes.onBlur]),
1897
- onClick: React.useCallback(event => {
2088
+ onClick: React.useCallback(function (event) {
1898
2089
  if (!readOnly && hasTarget(editor, event.target) && !isEventHandled(event, attributes.onClick) && isDOMNode(event.target)) {
1899
2090
  var node = ReactEditor.toSlateNode(editor, event.target);
1900
2091
  var path = ReactEditor.findPath(editor, node);
1901
2092
 
1902
2093
  var _start = slate.Editor.start(editor, path);
1903
2094
 
1904
- if (slate.Editor.void(editor, {
2095
+ var end = slate.Editor.end(editor, path);
2096
+ var startVoid = slate.Editor["void"](editor, {
1905
2097
  at: _start
1906
- })) {
2098
+ });
2099
+ var endVoid = slate.Editor["void"](editor, {
2100
+ at: end
2101
+ });
2102
+
2103
+ if (startVoid && endVoid && slate.Path.equals(startVoid[1], endVoid[1])) {
1907
2104
  var range = slate.Editor.range(editor, _start);
1908
2105
  slate.Transforms.select(editor, range);
1909
2106
  }
1910
2107
  }
1911
2108
  }, [readOnly, attributes.onClick]),
1912
- onCompositionEnd: React.useCallback(event => {
2109
+ onCompositionEnd: React.useCallback(function (event) {
1913
2110
  if (hasEditableTarget(editor, event.target) && !isEventHandled(event, attributes.onCompositionEnd)) {
1914
2111
  state.isComposing = false; // COMPAT: In Chrome, `beforeinput` events for compositions
1915
2112
  // aren't correct and never fire the "insertFromComposition"
@@ -1921,31 +2118,29 @@ var Editable = props => {
1921
2118
  }
1922
2119
  }
1923
2120
  }, [attributes.onCompositionEnd]),
1924
- onCompositionStart: React.useCallback(event => {
2121
+ onCompositionStart: React.useCallback(function (event) {
1925
2122
  if (hasEditableTarget(editor, event.target) && !isEventHandled(event, attributes.onCompositionStart)) {
1926
2123
  state.isComposing = true;
1927
2124
  }
1928
2125
  }, [attributes.onCompositionStart]),
1929
- onCopy: React.useCallback(event => {
2126
+ onCopy: React.useCallback(function (event) {
1930
2127
  if (hasEditableTarget(editor, event.target) && !isEventHandled(event, attributes.onCopy)) {
1931
2128
  event.preventDefault();
1932
2129
  ReactEditor.setFragmentData(editor, event.clipboardData);
1933
2130
  }
1934
2131
  }, [attributes.onCopy]),
1935
- onCut: React.useCallback(event => {
2132
+ onCut: React.useCallback(function (event) {
1936
2133
  if (!readOnly && hasEditableTarget(editor, event.target) && !isEventHandled(event, attributes.onCut)) {
1937
2134
  event.preventDefault();
1938
2135
  ReactEditor.setFragmentData(editor, event.clipboardData);
1939
- var {
1940
- selection
1941
- } = editor;
2136
+ var selection = editor.selection;
1942
2137
 
1943
2138
  if (selection && slate.Range.isExpanded(selection)) {
1944
2139
  slate.Editor.deleteFragment(editor);
1945
2140
  }
1946
2141
  }
1947
2142
  }, [readOnly, attributes.onCut]),
1948
- onDragOver: React.useCallback(event => {
2143
+ onDragOver: React.useCallback(function (event) {
1949
2144
  if (hasTarget(editor, event.target) && !isEventHandled(event, attributes.onDragOver)) {
1950
2145
  // Only when the target is void, call `preventDefault` to signal
1951
2146
  // that drops are allowed. Editable content is droppable by
@@ -1957,11 +2152,11 @@ var Editable = props => {
1957
2152
  }
1958
2153
  }
1959
2154
  }, [attributes.onDragOver]),
1960
- onDragStart: React.useCallback(event => {
2155
+ onDragStart: React.useCallback(function (event) {
1961
2156
  if (hasTarget(editor, event.target) && !isEventHandled(event, attributes.onDragStart)) {
1962
2157
  var node = ReactEditor.toSlateNode(editor, event.target);
1963
2158
  var path = ReactEditor.findPath(editor, node);
1964
- var voidMatch = slate.Editor.void(editor, {
2159
+ var voidMatch = slate.Editor["void"](editor, {
1965
2160
  at: path
1966
2161
  }); // If starting a drag on a void node, make sure it is selected
1967
2162
  // so that it shows up in the selection's fragment.
@@ -1974,7 +2169,7 @@ var Editable = props => {
1974
2169
  ReactEditor.setFragmentData(editor, event.dataTransfer);
1975
2170
  }
1976
2171
  }, [attributes.onDragStart]),
1977
- onDrop: React.useCallback(event => {
2172
+ onDrop: React.useCallback(function (event) {
1978
2173
  if (hasTarget(editor, event.target) && !readOnly && !isEventHandled(event, attributes.onDrop)) {
1979
2174
  // COMPAT: Certain browsers don't fire `beforeinput` events at all, and
1980
2175
  // Chromium browsers don't properly fire them for files being
@@ -1989,7 +2184,7 @@ var Editable = props => {
1989
2184
  }
1990
2185
  }
1991
2186
  }, [readOnly, attributes.onDrop]),
1992
- onFocus: React.useCallback(event => {
2187
+ onFocus: React.useCallback(function (event) {
1993
2188
  if (!readOnly && !state.isUpdatingSelection && hasEditableTarget(editor, event.target) && !isEventHandled(event, attributes.onFocus)) {
1994
2189
  var el = ReactEditor.toDOMNode(editor, editor);
1995
2190
  state.latestElement = window.document.activeElement; // COMPAT: If the editor has nested editable elements, the focus
@@ -2004,14 +2199,10 @@ var Editable = props => {
2004
2199
  IS_FOCUSED.set(editor, true);
2005
2200
  }
2006
2201
  }, [readOnly, attributes.onFocus]),
2007
- onKeyDown: React.useCallback(event => {
2202
+ onKeyDown: React.useCallback(function (event) {
2008
2203
  if (!readOnly && hasEditableTarget(editor, event.target) && !isEventHandled(event, attributes.onKeyDown)) {
2009
- var {
2010
- nativeEvent
2011
- } = event;
2012
- var {
2013
- selection
2014
- } = editor; // COMPAT: Since we prevent the default behavior on
2204
+ var nativeEvent = event.nativeEvent;
2205
+ var selection = editor.selection; // COMPAT: Since we prevent the default behavior on
2015
2206
  // `beforeinput` events, the browser doesn't think there's ever
2016
2207
  // any history stack to undo or redo, so we have to manage these
2017
2208
  // hotkeys ourselves. (2019/11/06)
@@ -2227,13 +2418,13 @@ var Editable = props => {
2227
2418
  }
2228
2419
  }
2229
2420
  }, [readOnly, attributes.onKeyDown]),
2230
- onPaste: React.useCallback(event => {
2421
+ onPaste: React.useCallback(function (event) {
2231
2422
  // COMPAT: Certain browsers don't support the `beforeinput` event, so we
2232
2423
  // fall back to React's `onPaste` here instead.
2233
2424
  // COMPAT: Firefox, Chrome and Safari are not emitting `beforeinput` events
2234
2425
  // when "paste without formatting" option is used.
2235
2426
  // This unfortunately needs to be handled with paste events instead.
2236
- if ((!HAS_BEFORE_INPUT_SUPPORT || isPlainTextOnlyPaste(event.nativeEvent)) && !readOnly && hasEditableTarget(editor, event.target) && !isEventHandled(event, attributes.onPaste)) {
2427
+ if (!isEventHandled(event, attributes.onPaste) && (!HAS_BEFORE_INPUT_SUPPORT || isPlainTextOnlyPaste(event.nativeEvent)) && !readOnly && hasEditableTarget(editor, event.target)) {
2237
2428
  event.preventDefault();
2238
2429
  ReactEditor.insertData(editor, event.clipboardData);
2239
2430
  }
@@ -2251,13 +2442,15 @@ var Editable = props => {
2251
2442
  * A default memoized decorate function.
2252
2443
  */
2253
2444
 
2254
- var defaultDecorate = () => [];
2445
+ var defaultDecorate = function defaultDecorate() {
2446
+ return [];
2447
+ };
2255
2448
  /**
2256
2449
  * Check if the target is in the editor.
2257
2450
  */
2258
2451
 
2259
2452
 
2260
- var hasTarget = (editor, target) => {
2453
+ var hasTarget = function hasTarget(editor, target) {
2261
2454
  return isDOMNode(target) && ReactEditor.hasDOMNode(editor, target);
2262
2455
  };
2263
2456
  /**
@@ -2265,7 +2458,7 @@ var hasTarget = (editor, target) => {
2265
2458
  */
2266
2459
 
2267
2460
 
2268
- var hasEditableTarget = (editor, target) => {
2461
+ var hasEditableTarget = function hasEditableTarget(editor, target) {
2269
2462
  return isDOMNode(target) && ReactEditor.hasDOMNode(editor, target, {
2270
2463
  editable: true
2271
2464
  });
@@ -2275,7 +2468,7 @@ var hasEditableTarget = (editor, target) => {
2275
2468
  */
2276
2469
 
2277
2470
 
2278
- var isTargetInsideVoid = (editor, target) => {
2471
+ var isTargetInsideVoid = function isTargetInsideVoid(editor, target) {
2279
2472
  var slateNode = hasTarget(editor, target) && ReactEditor.toSlateNode(editor, target);
2280
2473
  return slate.Editor.isVoid(editor, slateNode);
2281
2474
  };
@@ -2284,7 +2477,7 @@ var isTargetInsideVoid = (editor, target) => {
2284
2477
  */
2285
2478
 
2286
2479
 
2287
- var isEventHandled = (event, handler) => {
2480
+ var isEventHandled = function isEventHandled(event, handler) {
2288
2481
  if (!handler) {
2289
2482
  return false;
2290
2483
  }
@@ -2297,7 +2490,7 @@ var isEventHandled = (event, handler) => {
2297
2490
  */
2298
2491
 
2299
2492
 
2300
- var isDOMEventHandled = (event, handler) => {
2493
+ var isDOMEventHandled = function isDOMEventHandled(event, handler) {
2301
2494
  if (!handler) {
2302
2495
  return false;
2303
2496
  }