@atlaskit/editor-plugin-block-controls 2.26.0 → 2.26.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.
Files changed (52) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/dist/cjs/editor-commands/move-node.js +79 -43
  3. package/dist/cjs/editor-commands/move-to-layout.js +23 -11
  4. package/dist/cjs/editor-commands/show-drag-handle.js +89 -3
  5. package/dist/cjs/pm-plugins/decorations-anchor.js +5 -10
  6. package/dist/cjs/pm-plugins/decorations-common.js +8 -10
  7. package/dist/cjs/pm-plugins/decorations-drag-handle.js +4 -19
  8. package/dist/cjs/pm-plugins/decorations-drop-target.js +8 -25
  9. package/dist/cjs/pm-plugins/main.js +28 -8
  10. package/dist/cjs/pm-plugins/utils/analytics.js +66 -0
  11. package/dist/cjs/pm-plugins/utils/selection.js +22 -2
  12. package/dist/cjs/ui/drag-handle.js +38 -10
  13. package/dist/es2019/editor-commands/move-node.js +76 -40
  14. package/dist/es2019/editor-commands/move-to-layout.js +23 -11
  15. package/dist/es2019/editor-commands/show-drag-handle.js +88 -3
  16. package/dist/es2019/pm-plugins/decorations-anchor.js +6 -11
  17. package/dist/es2019/pm-plugins/decorations-common.js +7 -9
  18. package/dist/es2019/pm-plugins/decorations-drag-handle.js +10 -25
  19. package/dist/es2019/pm-plugins/decorations-drop-target.js +11 -30
  20. package/dist/es2019/pm-plugins/main.js +24 -6
  21. package/dist/es2019/pm-plugins/utils/{fire-analytics.js → analytics.js} +31 -3
  22. package/dist/es2019/pm-plugins/utils/selection.js +22 -1
  23. package/dist/es2019/ui/drag-handle.js +34 -4
  24. package/dist/esm/editor-commands/move-node.js +80 -44
  25. package/dist/esm/editor-commands/move-to-layout.js +23 -11
  26. package/dist/esm/editor-commands/show-drag-handle.js +88 -2
  27. package/dist/esm/pm-plugins/decorations-anchor.js +6 -11
  28. package/dist/esm/pm-plugins/decorations-common.js +7 -9
  29. package/dist/esm/pm-plugins/decorations-drag-handle.js +4 -19
  30. package/dist/esm/pm-plugins/decorations-drop-target.js +8 -25
  31. package/dist/esm/pm-plugins/main.js +27 -7
  32. package/dist/esm/pm-plugins/utils/{fire-analytics.js → analytics.js} +32 -3
  33. package/dist/esm/pm-plugins/utils/selection.js +21 -1
  34. package/dist/esm/ui/drag-handle.js +37 -5
  35. package/dist/types/blockControlsPluginType.d.ts +1 -0
  36. package/dist/types/editor-commands/move-to-layout.d.ts +1 -0
  37. package/dist/types/editor-commands/show-drag-handle.d.ts +1 -1
  38. package/dist/types/pm-plugins/decorations-common.d.ts +1 -0
  39. package/dist/types/pm-plugins/main.d.ts +1 -0
  40. package/dist/types/pm-plugins/utils/analytics.d.ts +12 -0
  41. package/dist/types/pm-plugins/utils/selection.d.ts +9 -0
  42. package/dist/types-ts4.5/blockControlsPluginType.d.ts +1 -0
  43. package/dist/types-ts4.5/editor-commands/move-to-layout.d.ts +1 -0
  44. package/dist/types-ts4.5/editor-commands/show-drag-handle.d.ts +1 -1
  45. package/dist/types-ts4.5/pm-plugins/decorations-common.d.ts +1 -0
  46. package/dist/types-ts4.5/pm-plugins/main.d.ts +1 -0
  47. package/dist/types-ts4.5/pm-plugins/utils/analytics.d.ts +12 -0
  48. package/dist/types-ts4.5/pm-plugins/utils/selection.d.ts +9 -0
  49. package/package.json +10 -7
  50. package/dist/cjs/pm-plugins/utils/fire-analytics.js +0 -36
  51. package/dist/types/pm-plugins/utils/fire-analytics.d.ts +0 -5
  52. package/dist/types-ts4.5/pm-plugins/utils/fire-analytics.d.ts +0 -5
package/CHANGELOG.md CHANGED
@@ -1,5 +1,23 @@
1
1
  # @atlaskit/editor-plugin-block-controls
2
2
 
3
+ ## 2.26.2
4
+
5
+ ### Patch Changes
6
+
7
+ - [#109976](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/pull-requests/109976)
8
+ [`2f1cbe0e2b32f`](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/commits/2f1cbe0e2b32f) -
9
+ [ED-26272] Update DnD related analytics, e.g. element moved, to reflect multi-select info
10
+ (distinctive types of nodes, whether multiple nodes are selected)
11
+ - Updated dependencies
12
+
13
+ ## 2.26.1
14
+
15
+ ### Patch Changes
16
+
17
+ - [#111887](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/pull-requests/111887)
18
+ [`dc433156e592a`](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/commits/dc433156e592a) -
19
+ [ux] ED-26101 Create layout with nodes before/after using keyboard shortcuts
20
+
3
21
  ## 2.26.0
4
22
 
5
23
  ### Minor Changes
@@ -19,12 +19,13 @@ var _utils3 = require("@atlaskit/editor-tables/utils");
19
19
  var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
20
20
  var _experiments = require("@atlaskit/tmp-editor-statsig/experiments");
21
21
  var _main = require("../pm-plugins/main");
22
+ var _analytics2 = require("../pm-plugins/utils/analytics");
22
23
  var _consts = require("../pm-plugins/utils/consts");
23
- var _fireAnalytics = require("../pm-plugins/utils/fire-analytics");
24
24
  var _getNestedNodePosition = require("../pm-plugins/utils/getNestedNodePosition");
25
25
  var _getSelection = require("../pm-plugins/utils/getSelection");
26
26
  var _removeFromSource = require("../pm-plugins/utils/remove-from-source");
27
27
  var _selection2 = require("../pm-plugins/utils/selection");
28
+ var _updateSelection = require("../pm-plugins/utils/update-selection");
28
29
  var _validation = require("../pm-plugins/utils/validation");
29
30
  function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
30
31
  function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2.default)(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
@@ -58,7 +59,7 @@ var isDragLayoutColumnToTopLevel = function isDragLayoutColumnToTopLevel($from,
58
59
  *
59
60
  * @returns the start position of a node if the node can be moved, otherwise -1
60
61
  */
61
- var getCurrentNodePos = function getCurrentNodePos(state, isParentNodeOfTypeLayout) {
62
+ var getCurrentNodePos = function getCurrentNodePos(state) {
62
63
  var _activeNode$handleOpt;
63
64
  var selection = state.selection;
64
65
  var _ref = _main.key.getState(state) || {},
@@ -94,27 +95,46 @@ var moveNodeViaShortcut = exports.moveNodeViaShortcut = function moveNodeViaShor
94
95
  if (shouldEnableNestedDndA11y) {
95
96
  isParentNodeOfTypeLayout = !!(0, _utils2.findParentNodeOfType)([state.schema.nodes.layoutSection])(state.selection);
96
97
  }
97
- var currentNodePos = getCurrentNodePos(state, isParentNodeOfTypeLayout);
98
+ var currentNodePos = getCurrentNodePos(state);
98
99
  if (currentNodePos > -1) {
99
100
  var _state$doc$nodeAt;
100
101
  var $pos = state.doc.resolve(currentNodePos);
102
+ var isTopLevelNode = $pos.depth === 0;
101
103
  var moveToPos = -1;
102
104
  var nodeIndex = $pos.index();
103
105
  var isLayoutColumnSelected = selection instanceof _state.NodeSelection && selection.node.type.name === 'layoutColumn';
104
106
  if (direction === _consts.DIRECTION.LEFT && shouldEnableNestedDndA11y) {
105
- if (isLayoutColumnSelected && (0, _platformFeatureFlags.fg)('platform_editor_advanced_layouts_accessibility')) {
106
- var _$pos$nodeBefore, _api$core;
107
- moveToPos = selection.from - (((_$pos$nodeBefore = $pos.nodeBefore) === null || _$pos$nodeBefore === void 0 ? void 0 : _$pos$nodeBefore.nodeSize) || 1);
107
+ if (isTopLevelNode && (0, _experiments.editorExperiment)('advanced_layouts', true) && (0, _platformFeatureFlags.fg)('platform_editor_advanced_layouts_accessibility')) {
108
+ var _api$core, _api$core2;
109
+ var nodeBefore = $pos.nodeBefore;
110
+ if (nodeBefore) {
111
+ moveToPos = currentNodePos - nodeBefore.nodeSize;
112
+ }
113
+ if (moveToPos < 0) {
114
+ return false;
115
+ }
108
116
  api === null || api === void 0 || (_api$core = api.core) === null || _api$core === void 0 || _api$core.actions.execute(function (_ref2) {
109
117
  var _api$blockControls;
110
118
  var tr = _ref2.tr;
111
119
  api === null || api === void 0 || (_api$blockControls = api.blockControls) === null || _api$blockControls === void 0 || (_api$blockControls = _api$blockControls.commands) === null || _api$blockControls === void 0 || _api$blockControls.moveToLayout(currentNodePos, moveToPos, {
112
- selectMovedNode: true
120
+ moveToEnd: true,
121
+ moveNodeAtCursorPos: true
113
122
  })({
114
123
  tr: tr
115
124
  });
125
+ var insertColumnStep = (0, _updateSelection.getInsertLayoutStep)(tr);
126
+ var mappedTo = insertColumnStep === null || insertColumnStep === void 0 ? void 0 : insertColumnStep.from;
127
+ (0, _updateSelection.updateSelection)(tr, mappedTo, true);
116
128
  return tr;
117
129
  });
130
+ api === null || api === void 0 || (_api$core2 = api.core) === null || _api$core2 === void 0 || _api$core2.actions.focus();
131
+ return true;
132
+ } else if (isLayoutColumnSelected && (0, _platformFeatureFlags.fg)('platform_editor_advanced_layouts_accessibility')) {
133
+ var _$pos$nodeBefore, _api$core3, _api$blockControls2;
134
+ moveToPos = selection.from - (((_$pos$nodeBefore = $pos.nodeBefore) === null || _$pos$nodeBefore === void 0 ? void 0 : _$pos$nodeBefore.nodeSize) || 1);
135
+ api === null || api === void 0 || (_api$core3 = api.core) === null || _api$core3 === void 0 || _api$core3.actions.execute(api === null || api === void 0 || (_api$blockControls2 = api.blockControls) === null || _api$blockControls2 === void 0 || (_api$blockControls2 = _api$blockControls2.commands) === null || _api$blockControls2 === void 0 ? void 0 : _api$blockControls2.moveToLayout(currentNodePos, moveToPos, {
136
+ selectMovedNode: true
137
+ }));
118
138
  return true;
119
139
  } else {
120
140
  if ($pos.depth < 2 || !isParentNodeOfTypeLayout) {
@@ -128,8 +148,30 @@ var moveNodeViaShortcut = exports.moveNodeViaShortcut = function moveNodeViaShor
128
148
  moveToPos = $pos.start() - ((previousNode === null || previousNode === void 0 ? void 0 : previousNode.nodeSize) || 1);
129
149
  }
130
150
  } else if (direction === _consts.DIRECTION.RIGHT && shouldEnableNestedDndA11y) {
131
- if (isLayoutColumnSelected && (0, _platformFeatureFlags.fg)('platform_editor_advanced_layouts_accessibility')) {
132
- var _api$core2;
151
+ if (isTopLevelNode && (0, _experiments.editorExperiment)('advanced_layouts', true) && (0, _platformFeatureFlags.fg)('platform_editor_advanced_layouts_accessibility')) {
152
+ var _api$core4, _api$core5;
153
+ var endOfDoc = $pos.end();
154
+ moveToPos = $pos.posAtIndex($pos.index() + 1);
155
+ if (moveToPos >= endOfDoc) {
156
+ return false;
157
+ }
158
+ api === null || api === void 0 || (_api$core4 = api.core) === null || _api$core4 === void 0 || _api$core4.actions.execute(function (_ref3) {
159
+ var _api$blockControls3;
160
+ var tr = _ref3.tr;
161
+ api === null || api === void 0 || (_api$blockControls3 = api.blockControls) === null || _api$blockControls3 === void 0 || (_api$blockControls3 = _api$blockControls3.commands) === null || _api$blockControls3 === void 0 || _api$blockControls3.moveToLayout(currentNodePos, moveToPos, {
162
+ moveNodeAtCursorPos: true
163
+ })({
164
+ tr: tr
165
+ });
166
+ var insertColumnStep = (0, _updateSelection.getInsertLayoutStep)(tr);
167
+ var mappedTo = insertColumnStep === null || insertColumnStep === void 0 ? void 0 : insertColumnStep.from;
168
+ (0, _updateSelection.updateSelection)(tr, mappedTo);
169
+ return tr;
170
+ });
171
+ api === null || api === void 0 || (_api$core5 = api.core) === null || _api$core5 === void 0 || _api$core5.actions.focus();
172
+ return true;
173
+ } else if (isLayoutColumnSelected && (0, _platformFeatureFlags.fg)('platform_editor_advanced_layouts_accessibility')) {
174
+ var _api$core6, _api$blockControls4;
133
175
  var _index = $pos.index($pos.depth);
134
176
  var parent = $pos.node($pos.depth);
135
177
  // get the next layoutColumn node
@@ -142,17 +184,10 @@ var moveNodeViaShortcut = exports.moveNodeViaShortcut = function moveNodeViaShor
142
184
  }
143
185
  var moveToEnd = _index === parent.childCount - 2;
144
186
  moveToPos = moveToEnd ? $pos.before() : selection.to + ((nextNode === null || nextNode === void 0 ? void 0 : nextNode.nodeSize) || 1);
145
- api === null || api === void 0 || (_api$core2 = api.core) === null || _api$core2 === void 0 || _api$core2.actions.execute(function (_ref3) {
146
- var _api$blockControls2;
147
- var tr = _ref3.tr;
148
- api === null || api === void 0 || (_api$blockControls2 = api.blockControls) === null || _api$blockControls2 === void 0 || (_api$blockControls2 = _api$blockControls2.commands) === null || _api$blockControls2 === void 0 || _api$blockControls2.moveToLayout(currentNodePos, moveToPos, {
149
- moveToEnd: moveToEnd,
150
- selectMovedNode: true
151
- })({
152
- tr: tr
153
- });
154
- return tr;
155
- });
187
+ api === null || api === void 0 || (_api$core6 = api.core) === null || _api$core6 === void 0 || _api$core6.actions.execute(api === null || api === void 0 || (_api$blockControls4 = api.blockControls) === null || _api$blockControls4 === void 0 || (_api$blockControls4 = _api$blockControls4.commands) === null || _api$blockControls4 === void 0 ? void 0 : _api$blockControls4.moveToLayout(currentNodePos, moveToPos, {
188
+ moveToEnd: moveToEnd,
189
+ selectMovedNode: true
190
+ }));
156
191
  return true;
157
192
  } else {
158
193
  if ($pos.depth < 2 || !isParentNodeOfTypeLayout) {
@@ -164,15 +199,15 @@ var moveNodeViaShortcut = exports.moveNodeViaShortcut = function moveNodeViaShor
164
199
  if (isLayoutColumnSelected && (0, _platformFeatureFlags.fg)('platform_editor_advanced_layouts_accessibility')) {
165
200
  moveToPos = $pos.start() - 1;
166
201
  } else {
167
- var nodeBefore = $pos.depth > 1 && nodeIndex === 0 && shouldEnableNestedDndA11y ? $pos.node($pos.depth) : $pos.nodeBefore;
168
- if (nodeBefore) {
169
- moveToPos = currentNodePos - nodeBefore.nodeSize;
202
+ var _nodeBefore = $pos.depth > 1 && nodeIndex === 0 && shouldEnableNestedDndA11y ? $pos.node($pos.depth) : $pos.nodeBefore;
203
+ if (_nodeBefore) {
204
+ moveToPos = currentNodePos - _nodeBefore.nodeSize;
170
205
  }
171
206
  }
172
207
  } else {
173
- var endOfDoc = $pos.end();
208
+ var _endOfDoc = $pos.end();
174
209
  var nodeAfterPos = $pos.posAtIndex($pos.index() + 1);
175
- if (nodeAfterPos > endOfDoc) {
210
+ if (nodeAfterPos > _endOfDoc) {
176
211
  return false;
177
212
  }
178
213
  if (isLayoutColumnSelected && (0, _platformFeatureFlags.fg)('platform_editor_advanced_layouts_accessibility')) {
@@ -190,8 +225,8 @@ var moveNodeViaShortcut = exports.moveNodeViaShortcut = function moveNodeViaShor
190
225
  // only move the node if the destination is at the same depth, not support moving a nested node to a parent node
191
226
  var shouldMoveNode = (shouldEnableNestedDndA11y ? moveToPos > -1 && $pos.depth === state.doc.resolve(moveToPos).depth || nodeType === 'layoutColumn' : moveToPos > -1) || nodeType === 'layoutColumn' && (0, _platformFeatureFlags.fg)('platform_editor_advanced_layouts_accessibility');
192
227
  if (shouldMoveNode) {
193
- var _api$core3;
194
- api === null || api === void 0 || (_api$core3 = api.core) === null || _api$core3 === void 0 || _api$core3.actions.execute(function (_ref4) {
228
+ var _api$core7;
229
+ api === null || api === void 0 || (_api$core7 = api.core) === null || _api$core7 === void 0 || _api$core7.actions.execute(function (_ref4) {
195
230
  var tr = _ref4.tr;
196
231
  moveNode(api)(currentNodePos, moveToPos, _analytics.INPUT_METHOD.SHORTCUT, formatMessage)({
197
232
  tr: tr
@@ -201,9 +236,9 @@ var moveNodeViaShortcut = exports.moveNodeViaShortcut = function moveNodeViaShor
201
236
  });
202
237
  return true;
203
238
  } else if (nodeType) {
204
- var _api$core4;
239
+ var _api$core8;
205
240
  // If the node is first/last one, only select the node
206
- api === null || api === void 0 || (_api$core4 = api.core) === null || _api$core4 === void 0 || _api$core4.actions.execute(function (_ref5) {
241
+ api === null || api === void 0 || (_api$core8 = api.core) === null || _api$core8 === void 0 || _api$core8.actions.execute(function (_ref5) {
207
242
  var tr = _ref5.tr;
208
243
  (0, _getSelection.selectNode)(tr, currentNodePos, nodeType);
209
244
  tr.scrollIntoView();
@@ -230,22 +265,21 @@ var moveNode = exports.moveNode = function moveNode(api) {
230
265
  }
231
266
  var sliceFrom = start;
232
267
  var sliceTo;
268
+ var mappedTo;
269
+ var sourceNodeTypes, hasSelectedMultipleNodes;
233
270
  var isMultiSelect = (0, _experiments.editorExperiment)('platform_editor_element_drag_and_drop_multiselect', true, {
234
271
  exposure: true
235
272
  });
236
273
  if (isMultiSelect) {
237
- var _handleNode$nodeSize;
238
- var _getMultiSelectionIfP = (0, _selection2.getMultiSelectionIfPosInside)(api, start),
239
- anchor = _getMultiSelectionIfP.anchor,
240
- head = _getMultiSelectionIfP.head;
241
- var inSelection = anchor !== undefined && head !== undefined;
242
- sliceFrom = inSelection ? Math.min(anchor, head) : start;
243
- var handleSize = (_handleNode$nodeSize = handleNode === null || handleNode === void 0 ? void 0 : handleNode.nodeSize) !== null && _handleNode$nodeSize !== void 0 ? _handleNode$nodeSize : 1;
244
- var handleEnd = sliceFrom + handleSize;
245
- sliceTo = inSelection ? Math.max(anchor, head) : handleEnd;
274
+ var slicePosition = (0, _selection2.getSelectedSlicePosition)(start, tr, api);
275
+ sliceFrom = slicePosition.from;
276
+ sliceTo = slicePosition.to;
277
+ var attributes = (0, _analytics2.getMultiSelectAnalyticsAttributes)(tr, sliceFrom, sliceTo);
278
+ hasSelectedMultipleNodes = attributes.hasSelectedMultipleNodes;
279
+ sourceNodeTypes = attributes.nodeTypes;
246
280
  } else {
247
- var _handleNode$nodeSize2;
248
- var size = (_handleNode$nodeSize2 = handleNode === null || handleNode === void 0 ? void 0 : handleNode.nodeSize) !== null && _handleNode$nodeSize2 !== void 0 ? _handleNode$nodeSize2 : 1;
281
+ var _handleNode$nodeSize;
282
+ var size = (_handleNode$nodeSize = handleNode === null || handleNode === void 0 ? void 0 : handleNode.nodeSize) !== null && _handleNode$nodeSize !== void 0 ? _handleNode$nodeSize : 1;
249
283
  sliceTo = sliceFrom + size;
250
284
  }
251
285
  var _tr$doc$type$schema$n = tr.doc.type.schema.nodes,
@@ -253,7 +287,6 @@ var moveNode = exports.moveNode = function moveNode(api) {
253
287
  nestedExpand = _tr$doc$type$schema$n.nestedExpand;
254
288
  var $to = tr.doc.resolve(to);
255
289
  var $handlePos = tr.doc.resolve(start);
256
- var mappedTo;
257
290
  if ((0, _experiments.editorExperiment)('nested-dnd', true)) {
258
291
  var nodeCopy = tr.doc.slice(sliceFrom, sliceTo, false); // cut the content
259
292
  var destType = $to.node().type;
@@ -309,7 +342,7 @@ var moveNode = exports.moveNode = function moveNode(api) {
309
342
  }
310
343
  }
311
344
  if ((0, _experiments.editorExperiment)('advanced_layouts', true)) {
312
- (0, _fireAnalytics.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);
345
+ (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);
313
346
  } else {
314
347
  var _api$analytics;
315
348
  api === null || api === void 0 || (_api$analytics = api.analytics) === null || _api$analytics === void 0 || _api$analytics.actions.attachAnalyticsEvent({
@@ -317,13 +350,16 @@ var moveNode = exports.moveNode = function moveNode(api) {
317
350
  action: _analytics.ACTION.MOVED,
318
351
  actionSubject: _analytics.ACTION_SUBJECT.ELEMENT,
319
352
  actionSubjectId: _analytics.ACTION_SUBJECT_ID.ELEMENT_DRAG_HANDLE,
320
- attributes: _objectSpread({
353
+ attributes: _objectSpread(_objectSpread({
321
354
  nodeDepth: $handlePos.depth,
322
355
  nodeType: handleNode.type.name,
323
356
  destinationNodeDepth: $mappedTo === null || $mappedTo === void 0 ? void 0 : $mappedTo.depth,
324
357
  destinationNodeType: $mappedTo === null || $mappedTo === void 0 ? void 0 : $mappedTo.parent.type.name
325
358
  }, (0, _platformFeatureFlags.fg)('platform_editor_element_drag_and_drop_ed_23873') && {
326
359
  inputMethod: inputMethod
360
+ }), isMultiSelect && {
361
+ sourceNodeTypes: sourceNodeTypes,
362
+ hasSelectedMultipleNodes: hasSelectedMultipleNodes
327
363
  })
328
364
  })(tr);
329
365
  }
@@ -10,9 +10,9 @@ var _model = require("@atlaskit/editor-prosemirror/model");
10
10
  var _state = require("@atlaskit/editor-prosemirror/state");
11
11
  var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
12
12
  var _experiments = require("@atlaskit/tmp-editor-statsig/experiments");
13
+ var _analytics2 = require("../pm-plugins/utils/analytics");
13
14
  var _checkFragment = require("../pm-plugins/utils/check-fragment");
14
15
  var _consts = require("../pm-plugins/utils/consts");
15
- var _fireAnalytics = require("../pm-plugins/utils/fire-analytics");
16
16
  var _removeFromSource = require("../pm-plugins/utils/remove-from-source");
17
17
  var _selection = require("../pm-plugins/utils/selection");
18
18
  var _updateColumnWidths = require("../pm-plugins/utils/update-column-widths");
@@ -47,9 +47,14 @@ var createNewLayout = function createNewLayout(schema, layoutContents) {
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
49
  var sourceContentEndPos = -1;
50
- if ((0, _experiments.editorExperiment)('platform_editor_element_drag_and_drop_multiselect', true)) {
50
+ var isMultiSelect = (0, _experiments.editorExperiment)('platform_editor_element_drag_and_drop_multiselect', true);
51
+ var sourceNodeTypes, hasSelectedMultipleNodes;
52
+ if (isMultiSelect) {
51
53
  if (sourceContent instanceof _model.Fragment) {
52
54
  sourceContentEndPos = from + sourceContent.size;
55
+ var attributes = (0, _analytics2.getMultiSelectAnalyticsAttributes)(tr, from, sourceContentEndPos);
56
+ hasSelectedMultipleNodes = attributes.hasSelectedMultipleNodes;
57
+ sourceNodeTypes = attributes.nodeTypes;
53
58
  }
54
59
  } else {
55
60
  if (sourceContent instanceof _model.Node) {
@@ -68,7 +73,7 @@ var moveToExistingLayout = function moveToExistingLayout(toLayout, toLayoutPos,
68
73
  if (!(0, _platformFeatureFlags.fg)('platform_editor_advanced_layouts_post_fix_patch_1') || selectMovedNode) {
69
74
  tr.setSelection(new _state.NodeSelection(tr.doc.resolve(mappedTo))).scrollIntoView();
70
75
  }
71
- (0, _fireAnalytics.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);
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);
72
77
  } else if (toLayout.childCount < (0, _consts.maxLayoutColumnSupported)()) {
73
78
  var _$originalFrom$nodeAf2;
74
79
  if ((0, _platformFeatureFlags.fg)('platform_editor_advanced_layouts_post_fix_patch_1')) {
@@ -79,7 +84,7 @@ var moveToExistingLayout = function moveToExistingLayout(toLayout, toLayoutPos,
79
84
  var mappedFrom = tr.mapping.map(from);
80
85
  (0, _removeFromSource.removeFromSource)(tr, tr.doc.resolve(mappedFrom), tr.mapping.map(sourceContentEndPos));
81
86
  }
82
- (0, _fireAnalytics.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);
87
+ (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);
83
88
  }
84
89
  return tr;
85
90
  };
@@ -162,7 +167,7 @@ var insertToDestination = function insertToDestination(tr, to, sourceContent, to
162
167
  * Check if the node at `from` can be moved to node at `to` to create/expand a layout.
163
168
  * Returns the source and destination nodes and positions if it's a valid move, otherwise, undefined
164
169
  */
165
- var canMoveToLayout = function canMoveToLayout(api, from, to, tr) {
170
+ var canMoveToLayout = function canMoveToLayout(api, from, to, tr, moveNodeAtCursorPos) {
166
171
  if (from === to) {
167
172
  return;
168
173
  }
@@ -193,11 +198,11 @@ var canMoveToLayout = function canMoveToLayout(api, from, to, tr) {
193
198
  var sourceContent = $from.nodeAfter;
194
199
  var sourceFrom = from;
195
200
  var sourceTo = from + sourceContent.nodeSize;
196
- if (isMultiSelect) {
201
+ if (isMultiSelect && !moveNodeAtCursorPos) {
197
202
  var _getMultiSelectionIfP = (0, _selection.getMultiSelectionIfPosInside)(api, from),
198
203
  anchor = _getMultiSelectionIfP.anchor,
199
204
  head = _getMultiSelectionIfP.head;
200
- if (anchor && head) {
205
+ if (anchor !== undefined && head !== undefined) {
201
206
  sourceFrom = Math.min(anchor, head);
202
207
  sourceTo = Math.max(anchor, head);
203
208
  sourceContent = tr.doc.slice(sourceFrom, sourceTo).content;
@@ -254,7 +259,7 @@ var getBreakoutMode = function getBreakoutMode(content, breakout) {
254
259
  var _content$marks$find;
255
260
  return (_content$marks$find = content.marks.find(function (m) {
256
261
  return m.type === breakout;
257
- })) === null || _content$marks$find === void 0 ? void 0 : _content$marks$find.attrs;
262
+ })) === null || _content$marks$find === void 0 ? void 0 : _content$marks$find.attrs.mode;
258
263
  } else if (content instanceof _model.Fragment) {
259
264
  // Find the first breakout mode in the fragment
260
265
  var firstBreakoutMode;
@@ -290,7 +295,7 @@ var moveToLayout = exports.moveToLayout = function moveToLayout(api) {
290
295
  if (!api) {
291
296
  return tr;
292
297
  }
293
- var canMove = canMoveToLayout(api, from, to, tr);
298
+ var canMove = canMoveToLayout(api, from, to, tr, options === null || options === void 0 ? void 0 : options.moveNodeAtCursorPos);
294
299
  if (!canMove) {
295
300
  return tr;
296
301
  }
@@ -314,6 +319,7 @@ var moveToLayout = exports.moveToLayout = function moveToLayout(api) {
314
319
  if (!fromContentWithoutBreakout) {
315
320
  return tr;
316
321
  }
322
+ var isMultiSelect = (0, _experiments.editorExperiment)('platform_editor_element_drag_and_drop_multiselect', true);
317
323
  if (toNode.type === layoutSection) {
318
324
  var toPos = options !== null && options !== void 0 && options.moveToEnd ? to + toNode.nodeSize - 1 : to + 1;
319
325
  return moveToExistingLayout(toNode, to, fromContentWithoutBreakout, $sourceFrom.pos, toPos, tr, $sourceFrom, $to, api, options === null || options === void 0 ? void 0 : options.selectMovedNode);
@@ -333,7 +339,7 @@ var moveToLayout = exports.moveToLayout = function moveToLayout(api) {
333
339
  // resolve again the source node after node updated (remove breakout marks)
334
340
  toNodeWithoutBreakout = tr.doc.resolve(to).nodeAfter || toNode;
335
341
  }
336
- if ((0, _experiments.editorExperiment)('platform_editor_element_drag_and_drop_multiselect', true)) {
342
+ if (isMultiSelect) {
337
343
  if ((0, _checkFragment.isFragmentOfType)(fromContentWithoutBreakout, 'layoutColumn') && fromContentWithoutBreakout.firstChild) {
338
344
  fromContentWithoutBreakout = fromContentWithoutBreakout.firstChild.content;
339
345
  }
@@ -345,6 +351,12 @@ var moveToLayout = exports.moveToLayout = function moveToLayout(api) {
345
351
  var layoutContents = options !== null && options !== void 0 && options.moveToEnd ? [toNodeWithoutBreakout, fromContentWithoutBreakout] : [fromContentWithoutBreakout, toNodeWithoutBreakout];
346
352
  var newLayout = createNewLayout(tr.doc.type.schema, layoutContents);
347
353
  if (newLayout) {
354
+ var sourceNodeTypes, hasSelectedMultipleNodes;
355
+ if (isMultiSelect) {
356
+ var attributes = (0, _analytics2.getMultiSelectAnalyticsAttributes)(tr, $sourceFrom.pos, sourceTo);
357
+ hasSelectedMultipleNodes = attributes.hasSelectedMultipleNodes;
358
+ sourceNodeTypes = attributes.nodeTypes;
359
+ }
348
360
  tr = (0, _removeFromSource.removeFromSource)(tr, $sourceFrom, sourceTo);
349
361
  var mappedTo = tr.mapping.map(to);
350
362
  tr.delete(mappedTo, mappedTo + toNodeWithoutBreakout.nodeSize).insert(mappedTo, newLayout);
@@ -354,7 +366,7 @@ var moveToLayout = exports.moveToLayout = function moveToLayout(api) {
354
366
  breakoutMode && tr.setNodeMarkup(mappedTo, newLayout.type, newLayout.attrs, [breakout.create({
355
367
  mode: breakoutMode
356
368
  })]);
357
- (0, _fireAnalytics.fireInsertLayoutAnalytics)(tr, api);
369
+ (0, _analytics2.fireInsertLayoutAnalytics)(tr, api, sourceNodeTypes, hasSelectedMultipleNodes);
358
370
  }
359
371
  return tr;
360
372
  }
@@ -4,11 +4,14 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.showDragHandleAtSelection = void 0;
7
- var _utils = require("@atlaskit/editor-tables/utils");
7
+ var _utils = require("@atlaskit/editor-prosemirror/utils");
8
+ var _utils2 = require("@atlaskit/editor-tables/utils");
9
+ var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
8
10
  var _experiments = require("@atlaskit/tmp-editor-statsig/experiments");
11
+ var _decorationsAnchor = require("../pm-plugins/decorations-anchor");
9
12
  var _main = require("../pm-plugins/main");
10
13
  var _getNestedNodePosition = require("../pm-plugins/utils/getNestedNodePosition");
11
- var showDragHandleAtSelection = exports.showDragHandleAtSelection = function showDragHandleAtSelection(api, shouldFocusParentNode) {
14
+ var showDragHandleAtSelectionOld = function showDragHandleAtSelectionOld(api, shouldFocusParentNode) {
12
15
  return function (state, _, view) {
13
16
  var $from = state.selection.$from;
14
17
  var shouldFocusParentNode;
@@ -19,7 +22,7 @@ var showDragHandleAtSelection = exports.showDragHandleAtSelection = function sho
19
22
 
20
23
  // if the node is already focused, pressing the keymap second times should focus the parent node
21
24
  shouldFocusParentNode = activeNode && ((_activeNode$handleOpt = activeNode.handleOptions) === null || _activeNode$handleOpt === void 0 ? void 0 : _activeNode$handleOpt.isFocused);
22
- var parentPos = (0, _utils.isInTable)(state) ? $from.before(1) : shouldFocusParentNode ? $from.before(1) : (0, _getNestedNodePosition.getNestedNodePosition)(state) + 1;
25
+ var parentPos = (0, _utils2.isInTable)(state) ? $from.before(1) : shouldFocusParentNode ? $from.before(1) : (0, _getNestedNodePosition.getNestedNodePosition)(state) + 1;
23
26
  var parentElement = view === null || view === void 0 || (_view$domAtPos = view.domAtPos(parentPos, 0)) === null || _view$domAtPos === void 0 ? void 0 : _view$domAtPos.node;
24
27
  if (parentElement) {
25
28
  // Ignored via go/ees005
@@ -68,4 +71,87 @@ var showDragHandleAtSelection = exports.showDragHandleAtSelection = function sho
68
71
  }
69
72
  return false;
70
73
  };
74
+ };
75
+ var findParentPosForHandle = function findParentPosForHandle(state) {
76
+ var _activeNode$handleOpt2;
77
+ var $from = state.selection.$from;
78
+ var _ref2 = _main.key.getState(state) || {},
79
+ activeNode = _ref2.activeNode;
80
+
81
+ // if a node handle is already focused, return the parent pos of that node (with focused handle)
82
+ if (activeNode && (_activeNode$handleOpt2 = activeNode.handleOptions) !== null && _activeNode$handleOpt2 !== void 0 && _activeNode$handleOpt2.isFocused) {
83
+ var $activeNodePos = state.doc.resolve(activeNode.pos);
84
+
85
+ // if the handle is at the top level already, do nothing
86
+ if ($activeNodePos.depth === 0) {
87
+ return undefined;
88
+ }
89
+ return $activeNodePos.before();
90
+ }
91
+
92
+ // if we are in second level of nested node, we should focus the node at level 1
93
+ if ($from.depth <= 1) {
94
+ return $from.before(1);
95
+ }
96
+
97
+ // if we are inside a table, we should focus the table's handle
98
+ var parentTableNode = (0, _utils.findParentNodeOfType)([state.schema.nodes.table])(state.selection);
99
+ if (parentTableNode) {
100
+ return parentTableNode.pos;
101
+ }
102
+
103
+ // else find closest parent node
104
+ return (0, _getNestedNodePosition.getNestedNodePosition)(state);
105
+ };
106
+ var findNextAnchorDecoration = function findNextAnchorDecoration(state) {
107
+ var decorations = (0, _main.getDecorations)(state);
108
+ if (!decorations) {
109
+ return undefined;
110
+ }
111
+ var nextHandleNodePos = findParentPosForHandle(state);
112
+ if (nextHandleNodePos === undefined) {
113
+ return undefined;
114
+ }
115
+ var nextHandleNode = state.doc.nodeAt(nextHandleNodePos);
116
+ var nodeDecorations = nextHandleNode && (0, _decorationsAnchor.findNodeDecs)(decorations, nextHandleNodePos, nextHandleNodePos + nextHandleNode.nodeSize);
117
+ if (!nodeDecorations || nodeDecorations.length === 0) {
118
+ return undefined;
119
+ }
120
+
121
+ // ensure the decoration covers the position of the look up node
122
+ nodeDecorations = nodeDecorations.filter(function (decoration) {
123
+ return decoration.from <= nextHandleNodePos;
124
+ });
125
+ if (nodeDecorations.length === 0) {
126
+ return undefined;
127
+ }
128
+
129
+ // sort the decorations by the position of the node
130
+ // so we can find the closest decoration to the node
131
+ nodeDecorations.sort(function (a, b) {
132
+ if (a.from === b.from) {
133
+ return a.to - b.to;
134
+ }
135
+ return b.from - a.from;
136
+ });
137
+
138
+ // return the closest decoration to the node
139
+ return nodeDecorations[0];
140
+ };
141
+ var showDragHandleAtSelectionNew = function showDragHandleAtSelectionNew(api) {
142
+ return function (state) {
143
+ var decoration = findNextAnchorDecoration(state);
144
+ if (api && decoration) {
145
+ api.core.actions.execute(api.blockControls.commands.showDragHandleAt(decoration.from, decoration.spec.anchorName, decoration.spec.nodeTypeWithLevel, {
146
+ isFocused: true
147
+ }));
148
+ return true;
149
+ }
150
+ return false;
151
+ };
152
+ };
153
+ var showDragHandleAtSelection = exports.showDragHandleAtSelection = function showDragHandleAtSelection(api) {
154
+ return function (state, dispatch, view) {
155
+ return (0, _experiments.editorExperiment)('nested-dnd', true) && (0, _platformFeatureFlags.fg)('platform_editor_advanced_layouts_a11y') ? showDragHandleAtSelectionNew(api)(state) : showDragHandleAtSelectionOld(api)(state, dispatch, view);
156
+ };
71
157
  };
@@ -78,11 +78,10 @@ var nodeDecorations = exports.nodeDecorations = function nodeDecorations(newStat
78
78
  var ignore_nodes = (0, _experiments.editorExperiment)('advanced_layouts', true) ? IGNORE_NODES_NEXT : IGNORE_NODES;
79
79
  newState.doc.nodesBetween(docFrom, docTo, function (node, pos, parent, index) {
80
80
  var depth = 0;
81
- var anchorName;
82
81
  var shouldDescend = shouldDescendIntoNode(node);
83
- anchorName = (0, _decorationsCommon.getNodeAnchor)(node);
82
+ var anchorName = (0, _decorationsCommon.getNodeAnchor)(node);
83
+ var nodeTypeWithLevel = (0, _decorationsCommon.getNodeTypeWithLevel)(node);
84
84
  if ((0, _experiments.editorExperiment)('nested-dnd', true)) {
85
- var _anchorName;
86
85
  // Doesn't descend into a node
87
86
  if (node.isInline) {
88
87
  return false;
@@ -91,19 +90,15 @@ var nodeDecorations = exports.nodeDecorations = function nodeDecorations(newStat
91
90
  if (shouldIgnoreNode(node, ignore_nodes, depth, parent)) {
92
91
  return shouldDescend; //skip over, don't consider it a valid depth
93
92
  }
94
- anchorName = (_anchorName = anchorName) !== null && _anchorName !== void 0 ? _anchorName : "--node-anchor-".concat(node.type.name, "-").concat(pos);
95
- } else {
96
- var _anchorName2;
97
- anchorName = (_anchorName2 = anchorName) !== null && _anchorName2 !== void 0 ? _anchorName2 : "--node-anchor-".concat(node.type.name, "-").concat(index);
98
93
  }
99
94
  var anchorStyles = "anchor-name: ".concat(anchorName, ";");
100
- var subType = node.attrs.level ? "-".concat(node.attrs.level) : '';
101
95
  decs.push(_view.Decoration.node(pos, pos + node.nodeSize, (0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)({
102
96
  style: anchorStyles
103
- }, 'data-drag-handler-anchor-name', anchorName), 'data-drag-handler-node-type', node.type.name + subType), 'data-drag-handler-anchor-depth', "".concat(depth)), {
97
+ }, 'data-drag-handler-anchor-name', anchorName), 'data-drag-handler-node-type', nodeTypeWithLevel), 'data-drag-handler-anchor-depth', "".concat(depth)), {
104
98
  type: _decorationsCommon.TYPE_NODE_DEC,
105
99
  anchorName: anchorName,
106
- nodeType: node.type.name
100
+ nodeType: node.type.name,
101
+ nodeTypeWithLevel: nodeTypeWithLevel
107
102
  }));
108
103
  return shouldDescend && depth < (0, _decorationsCommon.getNestedDepth)();
109
104
  });
@@ -4,13 +4,11 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
4
4
  Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
- exports.unmountDecorations = exports.getNodeAnchor = exports.getNestedDepth = exports.TYPE_NODE_DEC = exports.TYPE_HANDLE_DEC = exports.TYPE_DROP_TARGET_DEC = void 0;
7
+ exports.unmountDecorations = exports.getNodeTypeWithLevel = exports.getNodeAnchor = exports.getNestedDepth = exports.TYPE_NODE_DEC = exports.TYPE_HANDLE_DEC = exports.TYPE_DROP_TARGET_DEC = void 0;
8
8
  var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
9
9
  var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
10
10
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
11
- var _reactDom = _interopRequireDefault(require("react-dom"));
12
11
  var _uuid = _interopRequireDefault(require("uuid"));
13
- var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
14
12
  var _experiments = require("@atlaskit/tmp-editor-statsig/experiments");
15
13
  var TYPE_DROP_TARGET_DEC = exports.TYPE_DROP_TARGET_DEC = 'drop-target-decoration';
16
14
  var TYPE_HANDLE_DEC = exports.TYPE_HANDLE_DEC = 'drag-handle';
@@ -22,6 +20,10 @@ var getNodeAnchor = exports.getNodeAnchor = function getNodeAnchor(node) {
22
20
  var handleId = ObjHash.getForNode(node);
23
21
  return "--node-anchor-".concat(node.type.name, "-").concat(handleId);
24
22
  };
23
+ var getNodeTypeWithLevel = exports.getNodeTypeWithLevel = function getNodeTypeWithLevel(node) {
24
+ var subType = node.attrs.level ? "-".concat(node.attrs.level) : '';
25
+ return node.type.name + subType;
26
+ };
25
27
  var ObjHash = /*#__PURE__*/function () {
26
28
  function ObjHash() {
27
29
  (0, _classCallCheck2.default)(this, ObjHash);
@@ -44,13 +46,9 @@ var unmountDecorations = exports.unmountDecorations = function unmountDecoration
44
46
  // as it was more responsive and causes less re-rendering
45
47
  var decorationsToRemove = document.querySelectorAll("[".concat(selector, "=\"true\"]"));
46
48
  decorationsToRemove.forEach(function (el) {
47
- if ((0, _platformFeatureFlags.fg)('platform_editor_react18_plugin_portalprovider')) {
48
- var nodeKey = el.getAttribute(key);
49
- if (nodeKey) {
50
- nodeViewPortalProviderAPI.remove(nodeKey);
51
- }
52
- } else {
53
- _reactDom.default.unmountComponentAtNode(el);
49
+ var nodeKey = el.getAttribute(key);
50
+ if (nodeKey) {
51
+ nodeViewPortalProviderAPI.remove(nodeKey);
54
52
  }
55
53
  });
56
54
  };
@@ -8,10 +8,8 @@ exports.findHandleDec = exports.emptyParagraphNodeDecorations = exports.dragHand
8
8
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
9
9
  var _react = require("react");
10
10
  var _bindEventListener = require("bind-event-listener");
11
- var _reactDom = _interopRequireDefault(require("react-dom"));
12
11
  var _uuid = _interopRequireDefault(require("uuid"));
13
12
  var _view = require("@atlaskit/editor-prosemirror/view");
14
- var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
15
13
  var _experiments = require("@atlaskit/tmp-editor-statsig/experiments");
16
14
  var _dragHandle = require("../ui/drag-handle");
17
15
  var _decorationsCommon = require("./decorations-common");
@@ -72,21 +70,8 @@ var dragHandleDecoration = exports.dragHandleDecoration = function dragHandleDec
72
70
  // There are times when global clear: "both" styles are applied to this decoration causing jumpiness
73
71
  // due to margins applied to other nodes eg. Headings
74
72
  element.style.clear = 'unset';
75
- if ((0, _platformFeatureFlags.fg)('platform_editor_react18_plugin_portalprovider')) {
76
- nodeViewPortalProviderAPI.render(function () {
77
- return /*#__PURE__*/(0, _react.createElement)(_dragHandle.DragHandle, {
78
- view: view,
79
- api: api,
80
- formatMessage: formatMessage,
81
- getPos: getPos,
82
- anchorName: anchorName,
83
- nodeType: nodeType,
84
- handleOptions: handleOptions,
85
- isTopLevelNode: isTopLevelNode
86
- });
87
- }, element, key);
88
- } else {
89
- _reactDom.default.render( /*#__PURE__*/(0, _react.createElement)(_dragHandle.DragHandle, {
73
+ nodeViewPortalProviderAPI.render(function () {
74
+ return /*#__PURE__*/(0, _react.createElement)(_dragHandle.DragHandle, {
90
75
  view: view,
91
76
  api: api,
92
77
  formatMessage: formatMessage,
@@ -95,8 +80,8 @@ var dragHandleDecoration = exports.dragHandleDecoration = function dragHandleDec
95
80
  nodeType: nodeType,
96
81
  handleOptions: handleOptions,
97
82
  isTopLevelNode: isTopLevelNode
98
- }), element);
99
- }
83
+ });
84
+ }, element, key);
100
85
  return element;
101
86
  }, {
102
87
  side: -1,