@atlaskit/editor-plugin-block-controls 11.2.10 → 11.2.11

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.
Files changed (32) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/dist/cjs/editor-commands/move-node.js +12 -32
  3. package/dist/cjs/editor-commands/move-to-layout.js +59 -127
  4. package/dist/cjs/pm-plugins/decorations-drop-target-active.js +11 -16
  5. package/dist/cjs/pm-plugins/decorations-drop-target.js +13 -24
  6. package/dist/cjs/pm-plugins/main.js +51 -88
  7. package/dist/cjs/pm-plugins/utils/analytics.js +1 -2
  8. package/dist/cjs/pm-plugins/utils/remove-from-source.js +4 -14
  9. package/dist/cjs/ui/drag-handle.js +32 -44
  10. package/dist/es2019/editor-commands/move-node.js +9 -31
  11. package/dist/es2019/editor-commands/move-to-layout.js +61 -121
  12. package/dist/es2019/pm-plugins/decorations-drop-target-active.js +11 -16
  13. package/dist/es2019/pm-plugins/decorations-drop-target.js +13 -24
  14. package/dist/es2019/pm-plugins/main.js +55 -91
  15. package/dist/es2019/pm-plugins/utils/analytics.js +1 -2
  16. package/dist/es2019/pm-plugins/utils/remove-from-source.js +4 -14
  17. package/dist/es2019/ui/drag-handle.js +32 -45
  18. package/dist/esm/editor-commands/move-node.js +13 -33
  19. package/dist/esm/editor-commands/move-to-layout.js +59 -127
  20. package/dist/esm/pm-plugins/decorations-drop-target-active.js +11 -16
  21. package/dist/esm/pm-plugins/decorations-drop-target.js +13 -24
  22. package/dist/esm/pm-plugins/main.js +51 -88
  23. package/dist/esm/pm-plugins/utils/analytics.js +1 -2
  24. package/dist/esm/pm-plugins/utils/remove-from-source.js +4 -14
  25. package/dist/esm/ui/drag-handle.js +32 -44
  26. package/dist/types/pm-plugins/main.d.ts +0 -1
  27. package/dist/types/pm-plugins/utils/analytics.d.ts +2 -2
  28. package/dist/types/pm-plugins/utils/remove-from-source.d.ts +1 -1
  29. package/dist/types-ts4.5/pm-plugins/main.d.ts +0 -1
  30. package/dist/types-ts4.5/pm-plugins/utils/analytics.d.ts +2 -2
  31. package/dist/types-ts4.5/pm-plugins/utils/remove-from-source.d.ts +1 -1
  32. package/package.json +3 -3
package/CHANGELOG.md CHANGED
@@ -1,5 +1,13 @@
1
1
  # @atlaskit/editor-plugin-block-controls
2
2
 
3
+ ## 11.2.11
4
+
5
+ ### Patch Changes
6
+
7
+ - [`ab837b5646256`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/ab837b5646256) -
8
+ [ux] EDITOR-6274 Clean up platform_editor_element_drag_and_drop_multiselect
9
+ - Updated dependencies
10
+
3
11
  ## 11.2.10
4
12
 
5
13
  ### Patch Changes
@@ -126,7 +126,6 @@ var moveNodeViaShortcut = exports.moveNodeViaShortcut = function moveNodeViaShor
126
126
  return function (state) {
127
127
  var selection = state.selection;
128
128
  var isParentNodeOfTypeLayout = !!(0, _utils2.findParentNodeOfType)([state.schema.nodes.layoutSection])(state.selection);
129
- var isMultiSelectEnabled = (0, _experiments.editorExperiment)('platform_editor_element_drag_and_drop_multiselect', true);
130
129
  var expandedSelection = (0, _selection.expandSelectionBounds)(selection.$anchor, selection.$head);
131
130
  var expandedAnchor = expandedSelection.$anchor.pos;
132
131
  var expandedHead = expandedSelection.$head.pos;
@@ -137,11 +136,11 @@ var moveNodeViaShortcut = exports.moveNodeViaShortcut = function moveNodeViaShor
137
136
  var LAYOUT_COL_DEPTH = 3;
138
137
  hoistedPos = state.doc.resolve(from).before(LAYOUT_COL_DEPTH);
139
138
  }
140
- var currentNodePos = isMultiSelectEnabled && !getFocusedHandle(state) && !selection.empty ? hoistedPos !== null && hoistedPos !== void 0 ? hoistedPos : from : getCurrentNodePos(state);
139
+ var currentNodePos = !getFocusedHandle(state) && !selection.empty ? hoistedPos !== null && hoistedPos !== void 0 ? hoistedPos : from : getCurrentNodePos(state);
141
140
  if (currentNodePos > -1) {
142
141
  var _state$doc$nodeAt;
143
142
  var $currentNodePos = state.doc.resolve(currentNodePos);
144
- var nodeAfterPos = isMultiSelectEnabled && !getFocusedHandle(state) ? Math.max(expandedAnchor, expandedHead) : $currentNodePos.posAtIndex($currentNodePos.index() + 1);
143
+ var nodeAfterPos = !getFocusedHandle(state) ? Math.max(expandedAnchor, expandedHead) : $currentNodePos.posAtIndex($currentNodePos.index() + 1);
145
144
  var isTopLevelNode = $currentNodePos.depth === 0;
146
145
  var moveToPos = -1;
147
146
  var isLayoutColumnSelected = selection instanceof _state.NodeSelection && selection.node.type.name === 'layoutColumn';
@@ -282,20 +281,10 @@ var moveNodeViaShortcut = exports.moveNodeViaShortcut = function moveNodeViaShor
282
281
  return tr;
283
282
  });
284
283
  return true;
285
- } else if (nodeType && !isMultiSelectEnabled) {
284
+ } else {
286
285
  var _api$core8;
287
- // If the node is first/last one, only select the node
288
286
  api === null || api === void 0 || (_api$core8 = api.core) === null || _api$core8 === void 0 || _api$core8.actions.execute(function (_ref5) {
289
287
  var tr = _ref5.tr;
290
- (0, _getSelection.selectNode)(tr, currentNodePos, nodeType, api);
291
- tr.scrollIntoView();
292
- return tr;
293
- });
294
- return true;
295
- } else if (isMultiSelectEnabled) {
296
- var _api$core9;
297
- api === null || api === void 0 || (_api$core9 = api.core) === null || _api$core9 === void 0 || _api$core9.actions.execute(function (_ref6) {
298
- var tr = _ref6.tr;
299
288
  api === null || api === void 0 || api.blockControls.commands.setMultiSelectPositions($newAnchor.pos, $newHead.pos)({
300
289
  tr: tr
301
290
  });
@@ -312,9 +301,9 @@ var moveNode = exports.moveNode = function moveNode(api) {
312
301
  return function (start, to) {
313
302
  var inputMethod = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : _analytics.INPUT_METHOD.DRAG_AND_DROP;
314
303
  var formatMessage = arguments.length > 3 ? arguments[3] : undefined;
315
- return function (_ref7) {
304
+ return function (_ref6) {
316
305
  var _api$blockControls$sh, _convertedNodeSlice, _api$accessibilityUti;
317
- var tr = _ref7.tr;
306
+ var tr = _ref6.tr;
318
307
  if (!api || start < 0 || to < 0) {
319
308
  return tr;
320
309
  }
@@ -325,7 +314,6 @@ var moveNode = exports.moveNode = function moveNode(api) {
325
314
  var sliceFrom = start;
326
315
  var sliceTo;
327
316
  var sourceNodeTypes, hasSelectedMultipleNodes;
328
- var isMultiSelect = (0, _experiments.editorExperiment)('platform_editor_element_drag_and_drop_multiselect', true);
329
317
  if ((0, _platformFeatureFlags.fg)('platform_editor_ease_of_use_metrics')) {
330
318
  var _api$metrics;
331
319
  api === null || api === void 0 || (_api$metrics = api.metrics) === null || _api$metrics === void 0 || _api$metrics.commands.setContentMoved()({
@@ -341,17 +329,13 @@ var moveNode = exports.moveNode = function moveNode(api) {
341
329
  var attributes = (0, _analytics2.getMultiSelectAnalyticsAttributes)(tr, sliceFrom, sliceTo);
342
330
  hasSelectedMultipleNodes = attributes.hasSelectedMultipleNodes;
343
331
  sourceNodeTypes = attributes.nodeTypes;
344
- } else if (isMultiSelect) {
332
+ } else {
345
333
  var slicePosition = (0, _selection2.getSelectedSlicePosition)(start, tr, api);
346
334
  sliceFrom = slicePosition.from;
347
335
  sliceTo = slicePosition.to;
348
336
  var _attributes = (0, _analytics2.getMultiSelectAnalyticsAttributes)(tr, sliceFrom, sliceTo);
349
337
  hasSelectedMultipleNodes = _attributes.hasSelectedMultipleNodes;
350
338
  sourceNodeTypes = _attributes.nodeTypes;
351
- } else {
352
- var _handleNode$nodeSize;
353
- var size = (_handleNode$nodeSize = handleNode === null || handleNode === void 0 ? void 0 : handleNode.nodeSize) !== null && _handleNode$nodeSize !== void 0 ? _handleNode$nodeSize : 1;
354
- sliceTo = sliceFrom + size;
355
339
  }
356
340
  var _tr$doc$type$schema$n = tr.doc.type.schema.nodes,
357
341
  expand = _tr$doc$type$schema$n.expand,
@@ -428,13 +412,11 @@ var moveNode = exports.moveNode = function moveNode(api) {
428
412
  tr.setMeta(_main.key, _objectSpread(_objectSpread({}, _currMeta), {}, {
429
413
  preservedSelectionMapping: new _transform.Mapping([new _transform.StepMap([0, 0, nodeMovedOffset])])
430
414
  }));
431
- } else if (isMultiSelect) {
415
+ } else {
432
416
  var _api$blockControls$co;
433
417
  tr = (_api$blockControls$co = api === null || api === void 0 ? void 0 : api.blockControls.commands.setMultiSelectPositions(mappedTo, mappedTo + sliceSize)({
434
418
  tr: tr
435
419
  })) !== null && _api$blockControls$co !== void 0 ? _api$blockControls$co : tr;
436
- } else {
437
- tr = (0, _getSelection.selectNode)(tr, mappedTo, handleNode.type.name, api);
438
420
  }
439
421
  var currMeta = tr.getMeta(_main.key);
440
422
  tr.setMeta(_main.key, _objectSpread(_objectSpread({}, currMeta), {}, {
@@ -455,7 +437,7 @@ var moveNode = exports.moveNode = function moveNode(api) {
455
437
  }
456
438
  }
457
439
  if ((0, _experiments.editorExperiment)('advanced_layouts', true)) {
458
- (0, _analytics2.attachMoveNodeAnalytics)(tr, inputMethod, $handlePos.depth, handleNode.type.name, $mappedTo === null || $mappedTo === void 0 ? void 0 : $mappedTo.depth, $mappedTo === null || $mappedTo === void 0 ? void 0 : $mappedTo.parent.type.name, $handlePos.sameParent($mappedTo), api, sourceNodeTypes, hasSelectedMultipleNodes);
440
+ (0, _analytics2.attachMoveNodeAnalytics)(tr, inputMethod, $handlePos.depth, sourceNodeTypes, $mappedTo === null || $mappedTo === void 0 ? void 0 : $mappedTo.depth, $mappedTo === null || $mappedTo === void 0 ? void 0 : $mappedTo.parent.type.name, $handlePos.sameParent($mappedTo), api, hasSelectedMultipleNodes);
459
441
  } else {
460
442
  var _api$analytics;
461
443
  api === null || api === void 0 || (_api$analytics = api.analytics) === null || _api$analytics === void 0 || _api$analytics.actions.attachAnalyticsEvent({
@@ -463,16 +445,14 @@ var moveNode = exports.moveNode = function moveNode(api) {
463
445
  action: _analytics.ACTION.MOVED,
464
446
  actionSubject: _analytics.ACTION_SUBJECT.ELEMENT,
465
447
  actionSubjectId: _analytics.ACTION_SUBJECT_ID.ELEMENT_DRAG_HANDLE,
466
- attributes: _objectSpread({
448
+ attributes: {
467
449
  nodeDepth: $handlePos.depth,
468
- nodeType: handleNode.type.name,
450
+ nodeTypes: sourceNodeTypes,
469
451
  destinationNodeDepth: $mappedTo === null || $mappedTo === void 0 ? void 0 : $mappedTo.depth,
470
452
  destinationNodeType: $mappedTo === null || $mappedTo === void 0 ? void 0 : $mappedTo.parent.type.name,
471
- inputMethod: inputMethod
472
- }, isMultiSelect && {
473
- sourceNodeTypes: sourceNodeTypes,
453
+ inputMethod: inputMethod,
474
454
  hasSelectedMultipleNodes: hasSelectedMultipleNodes
475
- })
455
+ }
476
456
  })(tr);
477
457
  }
478
458
  var movedMessage = to > sliceFrom ? _messages.blockControlsMessages.movedDown : _messages.blockControlsMessages.movedup;
@@ -46,26 +46,11 @@ var createNewLayout = function createNewLayout(schema, layoutContents) {
46
46
  };
47
47
  var moveToExistingLayout = function moveToExistingLayout(toLayout, toLayoutPos, sourceContent, from, to, tr, $originalFrom, $originalTo, api, selectMovedNode) {
48
48
  var isSameLayout = (0, _validation.isInSameLayout)($originalFrom, $originalTo);
49
- var sourceContentEndPos = -1;
50
- var isMultiSelect = (0, _experiments.editorExperiment)('platform_editor_element_drag_and_drop_multiselect', true);
51
- var sourceNodeTypes, hasSelectedMultipleNodes;
52
- if (isMultiSelect) {
53
- if (sourceContent instanceof _model.Fragment) {
54
- sourceContentEndPos = from + sourceContent.size;
55
- var attributes = (0, _analytics2.getMultiSelectAnalyticsAttributes)(tr, from, sourceContentEndPos);
56
- hasSelectedMultipleNodes = attributes.hasSelectedMultipleNodes;
57
- sourceNodeTypes = attributes.nodeTypes;
58
- }
59
- } else {
60
- if (sourceContent instanceof _model.Node) {
61
- sourceContentEndPos = from + sourceContent.nodeSize;
62
- }
63
- }
64
- if (sourceContentEndPos === -1) {
65
- return tr;
66
- }
49
+ var sourceContentEndPos = from + sourceContent.size;
50
+ var attributes = (0, _analytics2.getMultiSelectAnalyticsAttributes)(tr, from, sourceContentEndPos);
51
+ var sourceNodeTypes = attributes.nodeTypes,
52
+ hasSelectedMultipleNodes = attributes.hasSelectedMultipleNodes;
67
53
  if (isSameLayout) {
68
- var _$originalFrom$nodeAf;
69
54
  // reorder columns
70
55
  tr.delete(from, sourceContentEndPos);
71
56
  var mappedTo = tr.mapping.map(to);
@@ -73,12 +58,11 @@ var moveToExistingLayout = function moveToExistingLayout(toLayout, toLayoutPos,
73
58
  if (selectMovedNode) {
74
59
  tr.setSelection(new _state.NodeSelection(tr.doc.resolve(mappedTo))).scrollIntoView();
75
60
  }
76
- (0, _analytics2.attachMoveNodeAnalytics)(tr, _analytics.INPUT_METHOD.DRAG_AND_DROP, $originalFrom.depth, ((_$originalFrom$nodeAf = $originalFrom.nodeAfter) === null || _$originalFrom$nodeAf === void 0 ? void 0 : _$originalFrom$nodeAf.type.name) || '', 1, 'layoutSection', true, api, sourceNodeTypes, hasSelectedMultipleNodes);
61
+ (0, _analytics2.attachMoveNodeAnalytics)(tr, _analytics.INPUT_METHOD.DRAG_AND_DROP, $originalFrom.depth, sourceNodeTypes, 1, 'layoutSection', true, api, hasSelectedMultipleNodes);
77
62
  } else if (toLayout.childCount < (0, _consts.maxLayoutColumnSupported)()) {
78
- var _$originalFrom$nodeAf2;
79
63
  (0, _removeFromSource.removeFromSource)(tr, tr.doc.resolve(from), sourceContentEndPos);
80
64
  insertToDestinationNoWidthUpdate(tr, tr.mapping.map(to), sourceContent);
81
- (0, _analytics2.attachMoveNodeAnalytics)(tr, _analytics.INPUT_METHOD.DRAG_AND_DROP, $originalFrom.depth, ((_$originalFrom$nodeAf2 = $originalFrom.nodeAfter) === null || _$originalFrom$nodeAf2 === void 0 ? void 0 : _$originalFrom$nodeAf2.type.name) || '', 1, 'layoutSection', false, api, sourceNodeTypes, hasSelectedMultipleNodes);
65
+ (0, _analytics2.attachMoveNodeAnalytics)(tr, _analytics.INPUT_METHOD.DRAG_AND_DROP, $originalFrom.depth, sourceNodeTypes, 1, 'layoutSection', false, api, hasSelectedMultipleNodes);
82
66
  }
83
67
  return tr;
84
68
  };
@@ -96,22 +80,11 @@ var insertToDestinationNoWidthUpdate = function insertToDestinationNoWidthUpdate
96
80
  layoutColumn = _ref2.layoutColumn;
97
81
  var content = null;
98
82
  try {
99
- if ((0, _experiments.editorExperiment)('platform_editor_element_drag_and_drop_multiselect', true)) {
100
- if (sourceContent instanceof _model.Fragment) {
101
- var _sourceFragment$first;
102
- var sourceFragment = sourceContent;
103
- content = layoutColumn.createChecked({
104
- width: 0
105
- }, (0, _checkFragment.isFragmentOfType)(sourceFragment, 'layoutColumn') ? (_sourceFragment$first = sourceFragment.firstChild) === null || _sourceFragment$first === void 0 ? void 0 : _sourceFragment$first.content : sourceFragment);
106
- }
107
- } else {
108
- if (sourceContent instanceof _model.Node) {
109
- var sourceNode = sourceContent;
110
- content = layoutColumn.createChecked({
111
- width: 0
112
- }, sourceNode.type.name === 'layoutColumn' ? sourceNode.content : sourceNode);
113
- }
114
- }
83
+ var _sourceFragment$first;
84
+ var sourceFragment = sourceContent;
85
+ content = layoutColumn.createChecked({
86
+ width: 0
87
+ }, (0, _checkFragment.isFragmentOfType)(sourceFragment, 'layoutColumn') ? (_sourceFragment$first = sourceFragment.firstChild) === null || _sourceFragment$first === void 0 ? void 0 : _sourceFragment$first.content : sourceFragment);
115
88
  } catch (error) {
116
89
  (0, _monitoring.logException)(error, {
117
90
  location: 'editor-plugin-block-controls/move-to-layout'
@@ -154,7 +127,6 @@ var canMoveToLayout = function canMoveToLayout(api, from, to, tr, moveNodeAtCurs
154
127
  return;
155
128
  }
156
129
  var $from = tr.doc.resolve(from);
157
- var isMultiSelect = (0, _experiments.editorExperiment)('platform_editor_element_drag_and_drop_multiselect', true);
158
130
 
159
131
  // invalid from position or dragging a layout
160
132
  if (!$from.nodeAfter || $from.nodeAfter.type === layoutSection) {
@@ -163,7 +135,7 @@ var canMoveToLayout = function canMoveToLayout(api, from, to, tr, moveNodeAtCurs
163
135
  var sourceContent = $from.nodeAfter;
164
136
  var sourceFrom = from;
165
137
  var sourceTo = from + sourceContent.nodeSize;
166
- if (isMultiSelect && !moveNodeAtCursorPos) {
138
+ if (!moveNodeAtCursorPos) {
167
139
  var _getMultiSelectionIfP = (0, _selection.getMultiSelectionIfPosInside)(api, from),
168
140
  anchor = _getMultiSelectionIfP.anchor,
169
141
  head = _getMultiSelectionIfP.head;
@@ -190,71 +162,51 @@ var canMoveToLayout = function canMoveToLayout(api, from, to, tr, moveNodeAtCurs
190
162
  };
191
163
  };
192
164
  var removeBreakoutMarks = function removeBreakoutMarks(tr, $from, to) {
193
- var fromContentWithoutBreakout = $from.nodeAfter;
165
+ var fromContentWithoutBreakout = null;
194
166
  var _ref4 = tr.doc.type.schema.marks || {},
195
167
  breakout = _ref4.breakout;
196
- if ((0, _experiments.editorExperiment)('platform_editor_element_drag_and_drop_multiselect', true)) {
197
- tr.doc.nodesBetween($from.pos, to, function (node, pos, parent) {
198
- // should never remove breakout from previous layoutSection
199
- if ((0, _expValEquals.expValEquals)('platform_editor_breakout_resizing', 'isEnabled', true)) {
200
- if (node.type.name === 'layoutSection') {
201
- return false;
202
- }
203
- }
204
-
205
- // breakout doesn't exist on nested nodes
206
- if ((parent === null || parent === void 0 ? void 0 : parent.type.name) === 'doc' && node.marks.some(function (m) {
207
- return m.type === breakout;
208
- })) {
209
- tr.removeNodeMark(pos, breakout);
168
+ tr.doc.nodesBetween($from.pos, to, function (node, pos, parent) {
169
+ // should never remove breakout from previous layoutSection
170
+ if ((0, _expValEquals.expValEquals)('platform_editor_breakout_resizing', 'isEnabled', true)) {
171
+ if (node.type.name === 'layoutSection') {
172
+ return false;
210
173
  }
174
+ }
211
175
 
212
- // descending is not needed as breakout doesn't exist on nested nodes
213
- return false;
214
- });
215
- // resolve again the source content after node updated (remove breakout marks)
216
- fromContentWithoutBreakout = tr.doc.slice($from.pos, to).content;
217
- } else {
218
- if (breakout && $from.nodeAfter && $from.nodeAfter.marks.some(function (m) {
176
+ // breakout doesn't exist on nested nodes
177
+ if ((parent === null || parent === void 0 ? void 0 : parent.type.name) === 'doc' && node.marks.some(function (m) {
219
178
  return m.type === breakout;
220
179
  })) {
221
- tr.removeNodeMark($from.pos, breakout);
222
- // resolve again the source node after node updated (remove breakout marks)
223
- fromContentWithoutBreakout = tr.doc.resolve($from.pos).nodeAfter;
180
+ tr.removeNodeMark(pos, breakout);
224
181
  }
225
- }
182
+
183
+ // descending is not needed as breakout doesn't exist on nested nodes
184
+ return false;
185
+ });
186
+ // resolve again the source content after node updated (remove breakout marks)
187
+ fromContentWithoutBreakout = tr.doc.slice($from.pos, to).content;
226
188
  return fromContentWithoutBreakout;
227
189
  };
228
190
  var getBreakoutMode = function getBreakoutMode(content, breakout) {
229
- if ((0, _experiments.editorExperiment)('platform_editor_element_drag_and_drop_multiselect', true)) {
230
- if (content instanceof _model.Node) {
231
- var _content$marks$find;
232
- return (_content$marks$find = content.marks.find(function (m) {
191
+ if (content instanceof _model.Node) {
192
+ var _content$marks$find;
193
+ return (_content$marks$find = content.marks.find(function (m) {
194
+ return m.type === breakout;
195
+ })) === null || _content$marks$find === void 0 ? void 0 : _content$marks$find.attrs.mode;
196
+ } else if (content instanceof _model.Fragment) {
197
+ // Find the first breakout mode in the fragment
198
+ var firstBreakoutMode;
199
+ for (var i = 0; i < content.childCount; i++) {
200
+ var child = content.child(i);
201
+ var breakoutMark = child.marks.find(function (m) {
233
202
  return m.type === breakout;
234
- })) === null || _content$marks$find === void 0 ? void 0 : _content$marks$find.attrs.mode;
235
- } else if (content instanceof _model.Fragment) {
236
- // Find the first breakout mode in the fragment
237
- var firstBreakoutMode;
238
- for (var i = 0; i < content.childCount; i++) {
239
- var child = content.child(i);
240
- var breakoutMark = child.marks.find(function (m) {
241
- return m.type === breakout;
242
- });
243
- if (breakoutMark) {
244
- firstBreakoutMode = breakoutMark.attrs.mode;
245
- break;
246
- }
203
+ });
204
+ if (breakoutMark) {
205
+ firstBreakoutMode = breakoutMark.attrs.mode;
206
+ break;
247
207
  }
248
- return firstBreakoutMode;
249
- }
250
- } else {
251
- // Without multi-select support, we can assume source content is of type PMNode
252
- if (content instanceof _model.Node) {
253
- var _content$marks$find2;
254
- return (_content$marks$find2 = content.marks.find(function (m) {
255
- return m.type === breakout;
256
- })) === null || _content$marks$find2 === void 0 ? void 0 : _content$marks$find2.attrs.mode;
257
208
  }
209
+ return firstBreakoutMode;
258
210
  }
259
211
  };
260
212
  var getBreakoutModeAndWidth = function getBreakoutModeAndWidth(content, breakout) {
@@ -269,30 +221,20 @@ var getBreakoutModeAndWidth = function getBreakoutModeAndWidth(content, breakout
269
221
  breakoutWidth: mark.attrs.width
270
222
  } : null;
271
223
  };
272
- if ((0, _experiments.editorExperiment)('platform_editor_element_drag_and_drop_multiselect', true)) {
273
- if (content instanceof _model.Node) {
274
- return extractBreakoutAttributes(findBreakoutMark(content));
275
- } else if (content instanceof _model.Fragment) {
276
- // Find the first breakout mode in the fragment
277
- for (var i = 0; i < content.childCount; i++) {
278
- var child = content.child(i);
279
- var breakoutMark = findBreakoutMark(child);
280
- if (breakoutMark) {
281
- return extractBreakoutAttributes(breakoutMark);
282
- }
224
+ if (content instanceof _model.Node) {
225
+ return extractBreakoutAttributes(findBreakoutMark(content));
226
+ } else if (content instanceof _model.Fragment) {
227
+ // Find the first breakout mode in the fragment
228
+ for (var i = 0; i < content.childCount; i++) {
229
+ var child = content.child(i);
230
+ var breakoutMark = findBreakoutMark(child);
231
+ if (breakoutMark) {
232
+ return extractBreakoutAttributes(breakoutMark);
283
233
  }
284
234
  }
285
- } else {
286
- // Without multi-select support, we can assume source content is of type PMNode
287
- if (content instanceof _model.Node) {
288
- return extractBreakoutAttributes(findBreakoutMark(content));
289
- }
290
235
  }
291
236
  return null;
292
237
  };
293
-
294
- // TODO: ED-26959 - As part of platform_editor_element_drag_and_drop_multiselect clean up,
295
- // source content variable that has type of `PMNode | Fragment` should be updated to `Fragment` only
296
238
  var moveToLayout = exports.moveToLayout = function moveToLayout(api) {
297
239
  return function (from, to, options) {
298
240
  return function (_ref5) {
@@ -328,8 +270,8 @@ var moveToLayout = exports.moveToLayout = function moveToLayout(api) {
328
270
  }
329
271
 
330
272
  // we don't want to remove marks when moving/re-ordering layoutSection
331
- var shouldRemoveMarks = !($sourceFrom.node().type === layoutSection && (0, _experiments.editorExperiment)('platform_editor_element_drag_and_drop_multiselect', true));
332
- var fromContentBeforeBreakoutMarksRemoved = (0, _experiments.editorExperiment)('platform_editor_element_drag_and_drop_multiselect', true) ? tr.doc.slice($sourceFrom.pos, sourceTo).content : $sourceFrom.nodeAfter;
273
+ var shouldRemoveMarks = $sourceFrom.node().type !== layoutSection;
274
+ var fromContentBeforeBreakoutMarksRemoved = tr.doc.slice($sourceFrom.pos, sourceTo).content;
333
275
 
334
276
  // remove breakout from source content
335
277
  var fromContentWithoutBreakout = shouldRemoveMarks ? removeBreakoutMarks(tr, $sourceFrom, sourceTo) : fromContentBeforeBreakoutMarksRemoved;
@@ -342,7 +284,6 @@ var moveToLayout = exports.moveToLayout = function moveToLayout(api) {
342
284
  tr: tr
343
285
  });
344
286
  }
345
- var isMultiSelect = (0, _experiments.editorExperiment)('platform_editor_element_drag_and_drop_multiselect', true);
346
287
  if (toNode.type === layoutSection) {
347
288
  var toPos = options !== null && options !== void 0 && options.moveToEnd ? to + toNode.nodeSize - 1 : to + 1;
348
289
  return moveToExistingLayout(toNode, to, fromContentWithoutBreakout, $sourceFrom.pos, toPos, tr, $sourceFrom, $to, api, options === null || options === void 0 ? void 0 : options.selectMovedNode);
@@ -362,24 +303,15 @@ var moveToLayout = exports.moveToLayout = function moveToLayout(api) {
362
303
  // resolve again the source node after node updated (remove breakout marks)
363
304
  toNodeWithoutBreakout = tr.doc.resolve(to).nodeAfter || toNode;
364
305
  }
365
- if (isMultiSelect) {
366
- if ((0, _checkFragment.isFragmentOfType)(fromContentWithoutBreakout, 'layoutColumn') && fromContentWithoutBreakout.firstChild) {
367
- fromContentWithoutBreakout = fromContentWithoutBreakout.firstChild.content;
368
- }
369
- } else {
370
- if (fromContentWithoutBreakout instanceof _model.Node && fromContentWithoutBreakout.type.name === 'layoutColumn') {
371
- fromContentWithoutBreakout = fromContentWithoutBreakout.content;
372
- }
306
+ if ((0, _checkFragment.isFragmentOfType)(fromContentWithoutBreakout, 'layoutColumn') && fromContentWithoutBreakout.firstChild) {
307
+ fromContentWithoutBreakout = fromContentWithoutBreakout.firstChild.content;
373
308
  }
374
309
  var layoutContents = options !== null && options !== void 0 && options.moveToEnd ? [toNodeWithoutBreakout, fromContentWithoutBreakout] : [fromContentWithoutBreakout, toNodeWithoutBreakout];
375
310
  var newLayout = createNewLayout(tr.doc.type.schema, layoutContents);
376
311
  if (newLayout) {
377
- var sourceNodeTypes, hasSelectedMultipleNodes;
378
- if (isMultiSelect) {
379
- var attributes = (0, _analytics2.getMultiSelectAnalyticsAttributes)(tr, $sourceFrom.pos, sourceTo);
312
+ var attributes = (0, _analytics2.getMultiSelectAnalyticsAttributes)(tr, $sourceFrom.pos, sourceTo);
313
+ var sourceNodeTypes = attributes.nodeTypes,
380
314
  hasSelectedMultipleNodes = attributes.hasSelectedMultipleNodes;
381
- sourceNodeTypes = attributes.nodeTypes;
382
- }
383
315
  tr = (0, _removeFromSource.removeFromSource)(tr, $sourceFrom, sourceTo);
384
316
  var mappedTo = tr.mapping.map(to);
385
317
  tr.delete(mappedTo, mappedTo + toNodeWithoutBreakout.nodeSize).insert(mappedTo, newLayout);
@@ -44,24 +44,19 @@ var canMoveNodeOrSliceToPos = exports.canMoveNodeOrSliceToPos = function canMove
44
44
  var $activeNodePos = typeof activeNodePos === 'number' && state.doc.resolve(activeNodePos);
45
45
  var activePMNode = $activeNodePos && $activeNodePos.nodeAfter;
46
46
  var handleInsideSelection = activeNodePos !== undefined && activeNodePos >= selectionFrom && activeNodePos <= selectionTo;
47
- if ((0, _experiments.editorExperiment)('platform_editor_element_drag_and_drop_multiselect', true)) {
48
- var selectionSlice = state.doc.slice(selectionFrom, selectionTo, false);
49
- var selectionSliceChildCount = selectionSlice.content.childCount;
50
- var canDropSingleNode = true;
51
- var canDropMultipleNodes = true;
47
+ var selectionSlice = state.doc.slice(selectionFrom, selectionTo, false);
48
+ var selectionSliceChildCount = selectionSlice.content.childCount;
49
+ var canDropSingleNode = true;
50
+ var canDropMultipleNodes = true;
52
51
 
53
- // when there is only one node in the slice, use the same logic as when multi select is not on
54
- if (selectionSliceChildCount > 1 && handleInsideSelection) {
55
- canDropMultipleNodes = (0, _validation.canMoveSliceToIndex)(selectionSlice, selectionFrom, selectionTo, parent, index, $toPos);
56
- } else {
57
- canDropSingleNode = !!(activePMNode && (0, _validation.canMoveNodeToIndex)(parent, index, activePMNode, $toPos, node));
58
- }
59
- if (!canDropMultipleNodes || !canDropSingleNode) {
60
- return false;
61
- }
52
+ // when there is only one node in the slice, use the same logic as when multi select is not on
53
+ if (selectionSliceChildCount > 1 && handleInsideSelection) {
54
+ canDropMultipleNodes = (0, _validation.canMoveSliceToIndex)(selectionSlice, selectionFrom, selectionTo, parent, index, $toPos);
62
55
  } else {
63
- var canDrop = activePMNode && (0, _validation.canMoveNodeToIndex)(parent, index, activePMNode, $toPos, node);
64
- return canDrop;
56
+ canDropSingleNode = !!(activePMNode && (0, _validation.canMoveNodeToIndex)(parent, index, activePMNode, $toPos, node));
57
+ }
58
+ if (!canDropMultipleNodes || !canDropSingleNode) {
59
+ return false;
65
60
  }
66
61
  return true;
67
62
  };
@@ -173,7 +173,6 @@ var dropTargetDecorations = exports.dropTargetDecorations = function dropTargetD
173
173
  var activeNodePos = activeNode === null || activeNode === void 0 ? void 0 : activeNode.pos;
174
174
  var $activeNodePos = typeof activeNodePos === 'number' && newState.doc.resolve(activeNodePos);
175
175
  var activePMNode = $activeNodePos && $activeNodePos.nodeAfter;
176
- var isMultiSelect = (0, _experiments.editorExperiment)('platform_editor_element_drag_and_drop_multiselect', true);
177
176
  anchorRectCache === null || anchorRectCache === void 0 || anchorRectCache.clear();
178
177
  var prevNodeStack = [];
179
178
  var popNodeStack = function popNodeStack(depth) {
@@ -229,31 +228,21 @@ var dropTargetDecorations = exports.dropTargetDecorations = function dropTargetD
229
228
  return shouldDescend(node); //skip over, don't consider it a valid depth
230
229
  }
231
230
 
232
- // When multi select is on, validate all the nodes in the selection instead of just the handle node
233
- if (isMultiSelect) {
234
- var selectionSlice = newState.doc.slice(selectionFrom, selectionTo, false);
235
- var selectionSliceChildCount = selectionSlice.content.childCount;
236
- var canDropSingleNode = true;
237
- var canDropMultipleNodes = true;
231
+ // validate all the nodes in the selection instead of just the handle node
232
+ var selectionSlice = newState.doc.slice(selectionFrom, selectionTo, false);
233
+ var selectionSliceChildCount = selectionSlice.content.childCount;
234
+ var canDropSingleNode = true;
235
+ var canDropMultipleNodes = true;
238
236
 
239
- // when there is only one node in the slice, use the same logic as when multi select is not on
240
- if (selectionSliceChildCount > 1 && handleInsideSelection) {
241
- canDropMultipleNodes = (0, _validation.canMoveSliceToIndex)(selectionSlice, selectionFrom, selectionTo, parent, index, $pos);
242
- } else {
243
- canDropSingleNode = !!(activePMNode && (0, _validation.canMoveNodeToIndex)(parent, index, activePMNode, $pos, node));
244
- }
245
- if (!canDropMultipleNodes || !canDropSingleNode) {
246
- pushNodeStack(node, depth);
247
- return false; //not valid pos, so nested not valid either
248
- }
237
+ // when there is only one node in the slice, use the same logic as when multi select is not on
238
+ if (selectionSliceChildCount > 1 && handleInsideSelection) {
239
+ canDropMultipleNodes = (0, _validation.canMoveSliceToIndex)(selectionSlice, selectionFrom, selectionTo, parent, index, $pos);
249
240
  } else {
250
- var canDrop = activePMNode && (0, _validation.canMoveNodeToIndex)(parent, index, activePMNode, $pos, node);
251
-
252
- //NOTE: This will block drop targets showing for nodes that are valid after transformation (i.e. expand -> nestedExpand)
253
- if (!canDrop) {
254
- pushNodeStack(node, depth);
255
- return false; //not valid pos, so nested not valid either
256
- }
241
+ canDropSingleNode = !!(activePMNode && (0, _validation.canMoveNodeToIndex)(parent, index, activePMNode, $pos, node));
242
+ }
243
+ if (!canDropMultipleNodes || !canDropSingleNode) {
244
+ pushNodeStack(node, depth);
245
+ return false; //not valid pos, so nested not valid either
257
246
  }
258
247
  var parentTypesWithEndDropTarget = (0, _experiments.editorExperiment)('platform_synced_block', true) ? PARENT_WITH_END_DROP_TARGET_NEXT : PARENT_WITH_END_DROP_TARGET;
259
248
  if (parent.lastChild === node && !(0, _utils.isEmptyParagraph)(node) && parentTypesWithEndDropTarget.includes(parent.type.name)) {