slate-react 0.130.1 → 0.130.2

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
@@ -2835,6 +2835,70 @@ function useTrackUserInput() {
2835
2835
  };
2836
2836
  }
2837
2837
 
2838
+ function _createForOfIteratorHelper$1(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$1(r)) || e) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: true } : { done: false, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = true, u = false; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = true, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
2839
+ function _unsupportedIterableToArray$1(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$1(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray$1(r, a) : void 0; } }
2840
+ function _arrayLikeToArray$1(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
2841
+ var blockPathAt = function blockPathAt(editor, point) {
2842
+ var _Editor$above;
2843
+ return (_Editor$above = slate.Editor.above(editor, {
2844
+ at: point,
2845
+ match: function match(n) {
2846
+ return slate.Node.isElement(n) && slate.Editor.isBlock(editor, n);
2847
+ }
2848
+ })) === null || _Editor$above === void 0 ? void 0 : _Editor$above[1];
2849
+ };
2850
+ var getWholeTopLevelBlockPaths = function getWholeTopLevelBlockPaths(editor, range) {
2851
+ var _Range$edges = slate.Range.edges(range),
2852
+ _Range$edges2 = _slicedToArray(_Range$edges, 2),
2853
+ start = _Range$edges2[0],
2854
+ end = _Range$edges2[1];
2855
+ var startBlock = blockPathAt(editor, start);
2856
+ var endBlock = blockPathAt(editor, end);
2857
+ if (!startBlock || !endBlock || startBlock.length !== 1 || endBlock.length !== 1 || startBlock[0] >= endBlock[0] || !slate.Editor.isStart(editor, start, startBlock) || !slate.Editor.isStart(editor, end, endBlock)) {
2858
+ return null;
2859
+ }
2860
+ return Array.from({
2861
+ length: endBlock[0] - startBlock[0]
2862
+ }, function (_, offset) {
2863
+ return [startBlock[0] + offset];
2864
+ });
2865
+ };
2866
+ var getMovableRange = function getMovableRange(editor, range) {
2867
+ return getWholeTopLevelBlockPaths(editor, range) ? range : slate.Editor.unhangRange(editor, range);
2868
+ };
2869
+ var deleteMovedRange = function deleteMovedRange(editor, range) {
2870
+ if (slate.Range.isCollapsed(range)) {
2871
+ return;
2872
+ }
2873
+ var blockPaths = getWholeTopLevelBlockPaths(editor, range);
2874
+ if (!blockPaths) {
2875
+ slate.Transforms.select(editor, range);
2876
+ slate.Editor.deleteFragment(editor);
2877
+ return;
2878
+ }
2879
+ var followingBlockRef = slate.Editor.pathRef(editor, slate.Path.next(blockPaths[blockPaths.length - 1]));
2880
+ slate.Editor.withoutNormalizing(editor, function () {
2881
+ var _iterator = _createForOfIteratorHelper$1(_toConsumableArray(blockPaths).reverse()),
2882
+ _step;
2883
+ try {
2884
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
2885
+ var path = _step.value;
2886
+ slate.Transforms.removeNodes(editor, {
2887
+ at: path
2888
+ });
2889
+ }
2890
+ } catch (err) {
2891
+ _iterator.e(err);
2892
+ } finally {
2893
+ _iterator.f();
2894
+ }
2895
+ });
2896
+ var followingBlock = followingBlockRef.unref();
2897
+ if (followingBlock) {
2898
+ slate.Transforms.select(editor, slate.Editor.start(editor, followingBlock));
2899
+ }
2900
+ };
2901
+
2838
2902
  var assertThisInitialized = createCommonjsModule(function (module) {
2839
2903
  function _assertThisInitialized(e) {
2840
2904
  if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
@@ -3998,11 +4062,12 @@ var Editable = /*#__PURE__*/React.forwardRef(function (props, forwardedRef) {
3998
4062
  onCut: React.useCallback(function (event) {
3999
4063
  if (!readOnly && ReactEditor.hasSelectableTarget(editor, event.target) && !isEventHandled(event, attributes.onCut) && !isDOMEventTargetInput(event)) {
4000
4064
  event.preventDefault();
4065
+ selectMovableRange(editor);
4001
4066
  ReactEditor.setFragmentData(editor, event.clipboardData, 'cut');
4002
4067
  var selection = editor.selection;
4003
4068
  if (selection) {
4004
4069
  if (slate.Range.isExpanded(selection)) {
4005
- slate.Editor.deleteFragment(editor);
4070
+ deleteMovedRange(editor, selection);
4006
4071
  } else {
4007
4072
  var node = slate.Node.parent(editor, selection.anchor.path);
4008
4073
  if (slate.Editor.isVoid(editor, node)) {
@@ -4037,6 +4102,7 @@ var Editable = /*#__PURE__*/React.forwardRef(function (props, forwardedRef) {
4037
4102
  var range = slate.Editor.range(editor, path);
4038
4103
  slate.Transforms.select(editor, range);
4039
4104
  }
4105
+ selectMovableRange(editor);
4040
4106
  state.isDraggingInternally = true;
4041
4107
  ReactEditor.setFragmentData(editor, event.dataTransfer, 'drag');
4042
4108
  }
@@ -4050,14 +4116,20 @@ var Editable = /*#__PURE__*/React.forwardRef(function (props, forwardedRef) {
4050
4116
  var range = ReactEditor.findEventRange(editor, event);
4051
4117
  var data = event.dataTransfer;
4052
4118
  slate.Transforms.select(editor, range);
4053
- if (state.isDraggingInternally) {
4054
- if (draggedRange && !slate.Range.equals(draggedRange, range) && !slate.Editor["void"](editor, {
4119
+ if (state.isDraggingInternally && draggedRange) {
4120
+ if (slate.Range.includes(draggedRange, range.anchor)) {
4121
+ return;
4122
+ }
4123
+ if (!slate.Editor["void"](editor, {
4055
4124
  at: range,
4056
4125
  voids: true
4057
4126
  })) {
4058
- slate.Transforms["delete"](editor, {
4059
- at: draggedRange
4060
- });
4127
+ var dropRef = slate.Editor.rangeRef(editor, range);
4128
+ deleteMovedRange(editor, draggedRange);
4129
+ var dropRange = dropRef.unref();
4130
+ if (dropRange) {
4131
+ slate.Transforms.select(editor, dropRange);
4132
+ }
4061
4133
  }
4062
4134
  }
4063
4135
  ReactEditor.insertData(editor, data);
@@ -4365,6 +4437,15 @@ var Editable = /*#__PURE__*/React.forwardRef(function (props, forwardedRef) {
4365
4437
  /**
4366
4438
  * The default placeholder element
4367
4439
  */
4440
+ var selectMovableRange = function selectMovableRange(editor) {
4441
+ var selection = editor.selection;
4442
+ if (selection && slate.Range.isExpanded(selection)) {
4443
+ var movableRange = getMovableRange(editor, selection);
4444
+ if (!slate.Range.equals(movableRange, selection)) {
4445
+ slate.Transforms.select(editor, movableRange);
4446
+ }
4447
+ }
4448
+ };
4368
4449
  var DefaultPlaceholder = function DefaultPlaceholder(_ref4) {
4369
4450
  var attributes = _ref4.attributes,
4370
4451
  children = _ref4.children;