@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.
- package/CHANGELOG.md +18 -0
- package/dist/cjs/editor-commands/move-node.js +79 -43
- package/dist/cjs/editor-commands/move-to-layout.js +23 -11
- package/dist/cjs/editor-commands/show-drag-handle.js +89 -3
- package/dist/cjs/pm-plugins/decorations-anchor.js +5 -10
- package/dist/cjs/pm-plugins/decorations-common.js +8 -10
- package/dist/cjs/pm-plugins/decorations-drag-handle.js +4 -19
- package/dist/cjs/pm-plugins/decorations-drop-target.js +8 -25
- package/dist/cjs/pm-plugins/main.js +28 -8
- package/dist/cjs/pm-plugins/utils/analytics.js +66 -0
- package/dist/cjs/pm-plugins/utils/selection.js +22 -2
- package/dist/cjs/ui/drag-handle.js +38 -10
- package/dist/es2019/editor-commands/move-node.js +76 -40
- package/dist/es2019/editor-commands/move-to-layout.js +23 -11
- package/dist/es2019/editor-commands/show-drag-handle.js +88 -3
- package/dist/es2019/pm-plugins/decorations-anchor.js +6 -11
- package/dist/es2019/pm-plugins/decorations-common.js +7 -9
- package/dist/es2019/pm-plugins/decorations-drag-handle.js +10 -25
- package/dist/es2019/pm-plugins/decorations-drop-target.js +11 -30
- package/dist/es2019/pm-plugins/main.js +24 -6
- package/dist/es2019/pm-plugins/utils/{fire-analytics.js → analytics.js} +31 -3
- package/dist/es2019/pm-plugins/utils/selection.js +22 -1
- package/dist/es2019/ui/drag-handle.js +34 -4
- package/dist/esm/editor-commands/move-node.js +80 -44
- package/dist/esm/editor-commands/move-to-layout.js +23 -11
- package/dist/esm/editor-commands/show-drag-handle.js +88 -2
- package/dist/esm/pm-plugins/decorations-anchor.js +6 -11
- package/dist/esm/pm-plugins/decorations-common.js +7 -9
- package/dist/esm/pm-plugins/decorations-drag-handle.js +4 -19
- package/dist/esm/pm-plugins/decorations-drop-target.js +8 -25
- package/dist/esm/pm-plugins/main.js +27 -7
- package/dist/esm/pm-plugins/utils/{fire-analytics.js → analytics.js} +32 -3
- package/dist/esm/pm-plugins/utils/selection.js +21 -1
- package/dist/esm/ui/drag-handle.js +37 -5
- package/dist/types/blockControlsPluginType.d.ts +1 -0
- package/dist/types/editor-commands/move-to-layout.d.ts +1 -0
- package/dist/types/editor-commands/show-drag-handle.d.ts +1 -1
- package/dist/types/pm-plugins/decorations-common.d.ts +1 -0
- package/dist/types/pm-plugins/main.d.ts +1 -0
- package/dist/types/pm-plugins/utils/analytics.d.ts +12 -0
- package/dist/types/pm-plugins/utils/selection.d.ts +9 -0
- package/dist/types-ts4.5/blockControlsPluginType.d.ts +1 -0
- package/dist/types-ts4.5/editor-commands/move-to-layout.d.ts +1 -0
- package/dist/types-ts4.5/editor-commands/show-drag-handle.d.ts +1 -1
- package/dist/types-ts4.5/pm-plugins/decorations-common.d.ts +1 -0
- package/dist/types-ts4.5/pm-plugins/main.d.ts +1 -0
- package/dist/types-ts4.5/pm-plugins/utils/analytics.d.ts +12 -0
- package/dist/types-ts4.5/pm-plugins/utils/selection.d.ts +9 -0
- package/package.json +10 -7
- package/dist/cjs/pm-plugins/utils/fire-analytics.js +0 -36
- package/dist/types/pm-plugins/utils/fire-analytics.d.ts +0 -5
- package/dist/types-ts4.5/pm-plugins/utils/fire-analytics.d.ts +0 -5
|
@@ -7,11 +7,9 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
7
7
|
exports.findDropTargetDecs = exports.dropTargetDecorations = exports.createLayoutDropTargetDecoration = exports.createDropTargetDecoration = void 0;
|
|
8
8
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
9
9
|
var _react = require("react");
|
|
10
|
-
var _reactDom = _interopRequireDefault(require("react-dom"));
|
|
11
10
|
var _uuid = _interopRequireDefault(require("uuid"));
|
|
12
11
|
var _utils = require("@atlaskit/editor-common/utils");
|
|
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 _consts = require("../ui/consts");
|
|
17
15
|
var _dropTarget = require("../ui/drop-target");
|
|
@@ -103,21 +101,13 @@ var createDropTargetDecoration = exports.createDropTargetDecoration = function c
|
|
|
103
101
|
element.style.setProperty(_dropTarget.EDITOR_BLOCK_CONTROLS_DROP_INDICATOR_OFFSET, "".concat(offset, "px"));
|
|
104
102
|
element.style.setProperty(_dropTarget.EDITOR_BLOCK_CONTROLS_DROP_INDICATOR_GAP, "".concat(gap, "px"));
|
|
105
103
|
element.style.setProperty('display', 'block');
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
return /*#__PURE__*/(0, _react.createElement)(_dropTarget.DropTarget, _objectSpread(_objectSpread({}, props), {}, {
|
|
109
|
-
getPos: getPos,
|
|
110
|
-
anchorRectCache: anchorRectCache,
|
|
111
|
-
isSameLayout: isSameLayout
|
|
112
|
-
}));
|
|
113
|
-
}, element, key);
|
|
114
|
-
} else {
|
|
115
|
-
_reactDom.default.render( /*#__PURE__*/(0, _react.createElement)(_dropTarget.DropTarget, _objectSpread(_objectSpread({}, props), {}, {
|
|
104
|
+
nodeViewPortalProviderAPI.render(function () {
|
|
105
|
+
return /*#__PURE__*/(0, _react.createElement)(_dropTarget.DropTarget, _objectSpread(_objectSpread({}, props), {}, {
|
|
116
106
|
getPos: getPos,
|
|
117
107
|
anchorRectCache: anchorRectCache,
|
|
118
108
|
isSameLayout: isSameLayout
|
|
119
|
-
}))
|
|
120
|
-
}
|
|
109
|
+
}));
|
|
110
|
+
}, element, key);
|
|
121
111
|
return element;
|
|
122
112
|
}, {
|
|
123
113
|
type: _decorationsCommon.TYPE_DROP_TARGET_DEC,
|
|
@@ -138,19 +128,12 @@ var createLayoutDropTargetDecoration = exports.createLayoutDropTargetDecoration
|
|
|
138
128
|
element.setAttribute('data-blocks-drop-target-container', 'true');
|
|
139
129
|
element.setAttribute('data-blocks-drop-target-key', key);
|
|
140
130
|
element.style.clear = 'unset';
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
return /*#__PURE__*/(0, _react.createElement)(_dropTargetLayout.DropTargetLayout, _objectSpread(_objectSpread({}, props), {}, {
|
|
144
|
-
getPos: getPos,
|
|
145
|
-
anchorRectCache: anchorRectCache
|
|
146
|
-
}));
|
|
147
|
-
}, element, key);
|
|
148
|
-
} else {
|
|
149
|
-
_reactDom.default.render( /*#__PURE__*/(0, _react.createElement)(_dropTargetLayout.DropTargetLayout, _objectSpread(_objectSpread({}, props), {}, {
|
|
131
|
+
nodeViewPortalProviderAPI.render(function () {
|
|
132
|
+
return /*#__PURE__*/(0, _react.createElement)(_dropTargetLayout.DropTargetLayout, _objectSpread(_objectSpread({}, props), {}, {
|
|
150
133
|
getPos: getPos,
|
|
151
134
|
anchorRectCache: anchorRectCache
|
|
152
|
-
}))
|
|
153
|
-
}
|
|
135
|
+
}));
|
|
136
|
+
}, element, key);
|
|
154
137
|
return element;
|
|
155
138
|
}, {
|
|
156
139
|
type: _decorationsCommon.TYPE_DROP_TARGET_DEC
|
|
@@ -4,8 +4,9 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
|
|
|
4
4
|
Object.defineProperty(exports, "__esModule", {
|
|
5
5
|
value: true
|
|
6
6
|
});
|
|
7
|
-
exports.oldApply = exports.newApply = exports.key = exports.createPlugin = void 0;
|
|
7
|
+
exports.oldApply = exports.newApply = exports.key = exports.getDecorations = exports.createPlugin = void 0;
|
|
8
8
|
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
|
9
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
9
10
|
var _rafSchd = _interopRequireDefault(require("raf-schd"));
|
|
10
11
|
var _steps = require("@atlaskit/adf-schema/steps");
|
|
11
12
|
var _analytics = require("@atlaskit/editor-common/analytics");
|
|
@@ -26,8 +27,12 @@ var _decorationsDropTarget = require("./decorations-drop-target");
|
|
|
26
27
|
var _handleMouseOver = require("./handle-mouse-over");
|
|
27
28
|
var _keymap = require("./keymap");
|
|
28
29
|
var _activeAnchorTracker = require("./utils/active-anchor-tracker");
|
|
30
|
+
var _analytics2 = require("./utils/analytics");
|
|
29
31
|
var _anchorUtils = require("./utils/anchor-utils");
|
|
32
|
+
var _selection = require("./utils/selection");
|
|
30
33
|
var _transactions = require("./utils/transactions");
|
|
34
|
+
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; }
|
|
35
|
+
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; }
|
|
31
36
|
var key = exports.key = new _state.PluginKey('blockControls');
|
|
32
37
|
var EDITOR_BLOCKS_DRAG_INIT = 'Editor Blocks Drag Initialization Time';
|
|
33
38
|
var isHTMLElement = function isHTMLElement(element) {
|
|
@@ -78,7 +83,8 @@ var destroyFn = function destroyFn(api, editorView) {
|
|
|
78
83
|
}
|
|
79
84
|
api === null || api === void 0 || (_api$core = api.core) === null || _api$core === void 0 || _api$core.actions.execute(function (_ref3) {
|
|
80
85
|
var tr = _ref3.tr;
|
|
81
|
-
|
|
86
|
+
var isMultiSelect = (0, _experiments.editorExperiment)('platform_editor_element_drag_and_drop_multiselect', true);
|
|
87
|
+
if (isMultiSelect) {
|
|
82
88
|
var _api$blockControls, _api$selection;
|
|
83
89
|
var _ref4 = (api === null || api === void 0 || (_api$blockControls = api.blockControls) === null || _api$blockControls === void 0 ? void 0 : _api$blockControls.sharedState.currentState()) || {},
|
|
84
90
|
multiSelectDnD = _ref4.multiSelectDnD;
|
|
@@ -99,6 +105,13 @@ var destroyFn = function destroyFn(api, editorView) {
|
|
|
99
105
|
// if no drop targets are rendered, assume that drop is invalid
|
|
100
106
|
if (location.current.dropTargets.length === 0) {
|
|
101
107
|
var _api$analytics2;
|
|
108
|
+
var nodeTypes, hasSelectedMultipleNodes;
|
|
109
|
+
if (isMultiSelect && api) {
|
|
110
|
+
var position = (0, _selection.getSelectedSlicePosition)(start, tr, api);
|
|
111
|
+
var attributes = (0, _analytics2.getMultiSelectAnalyticsAttributes)(tr, position.from, position.to);
|
|
112
|
+
nodeTypes = attributes.nodeTypes;
|
|
113
|
+
hasSelectedMultipleNodes = attributes.hasSelectedMultipleNodes;
|
|
114
|
+
}
|
|
102
115
|
var resolvedMovingNode = tr.doc.resolve(start);
|
|
103
116
|
var maybeNode = resolvedMovingNode.nodeAfter;
|
|
104
117
|
api === null || api === void 0 || (_api$analytics2 = api.analytics) === null || _api$analytics2 === void 0 || _api$analytics2.actions.attachAnalyticsEvent({
|
|
@@ -106,10 +119,13 @@ var destroyFn = function destroyFn(api, editorView) {
|
|
|
106
119
|
action: _analytics.ACTION.CANCELLED,
|
|
107
120
|
actionSubject: _analytics.ACTION_SUBJECT.DRAG,
|
|
108
121
|
actionSubjectId: _analytics.ACTION_SUBJECT_ID.ELEMENT_DRAG_HANDLE,
|
|
109
|
-
attributes: {
|
|
122
|
+
attributes: _objectSpread({
|
|
110
123
|
nodeDepth: resolvedMovingNode.depth,
|
|
111
124
|
nodeType: (maybeNode === null || maybeNode === void 0 ? void 0 : maybeNode.type.name) || ''
|
|
112
|
-
}
|
|
125
|
+
}, isMultiSelect && {
|
|
126
|
+
nodeTypes: nodeTypes,
|
|
127
|
+
hasSelectedMultipleNodes: hasSelectedMultipleNodes
|
|
128
|
+
})
|
|
113
129
|
})(tr);
|
|
114
130
|
}
|
|
115
131
|
return tr.setMeta(key, {
|
|
@@ -134,6 +150,10 @@ var initialState = {
|
|
|
134
150
|
isPMDragging: false,
|
|
135
151
|
multiSelectDnD: undefined
|
|
136
152
|
};
|
|
153
|
+
var getDecorations = exports.getDecorations = function getDecorations(state) {
|
|
154
|
+
var _key$getState;
|
|
155
|
+
return (_key$getState = key.getState(state)) === null || _key$getState === void 0 ? void 0 : _key$getState.decorations;
|
|
156
|
+
};
|
|
137
157
|
var newApply = exports.newApply = function newApply(api, formatMessage, tr, currentState, newState, flags, nodeViewPortalProviderAPI, anchorRectCache) {
|
|
138
158
|
var _meta$activeNode, _activeNode, _activeNode2, _meta$activeNode$hand, _meta$isDragging, _meta$isDragging2, _meta$editorHeight, _meta$editorWidthLeft, _meta$editorWidthRigh, _meta$isPMDragging, _meta$multiSelectDnD;
|
|
139
159
|
var activeNode = currentState.activeNode,
|
|
@@ -469,12 +489,12 @@ var createPlugin = exports.createPlugin = function createPlugin(api, getIntl, no
|
|
|
469
489
|
},
|
|
470
490
|
props: {
|
|
471
491
|
decorations: function decorations(state) {
|
|
472
|
-
var _api$editorDisabled, _key$
|
|
492
|
+
var _api$editorDisabled, _key$getState2;
|
|
473
493
|
var isDisabled = api === null || api === void 0 || (_api$editorDisabled = api.editorDisabled) === null || _api$editorDisabled === void 0 || (_api$editorDisabled = _api$editorDisabled.sharedState.currentState()) === null || _api$editorDisabled === void 0 ? void 0 : _api$editorDisabled.editorDisabled;
|
|
474
494
|
if (isDisabled) {
|
|
475
495
|
return;
|
|
476
496
|
}
|
|
477
|
-
return (_key$
|
|
497
|
+
return (_key$getState2 = key.getState(state)) === null || _key$getState2 === void 0 ? void 0 : _key$getState2.decorations;
|
|
478
498
|
},
|
|
479
499
|
handleDOMEvents: {
|
|
480
500
|
drop: function drop(view, event) {
|
|
@@ -547,10 +567,10 @@ var createPlugin = exports.createPlugin = function createPlugin(api, getIntl, no
|
|
|
547
567
|
}));
|
|
548
568
|
},
|
|
549
569
|
dragend: function dragend(view) {
|
|
550
|
-
var _key$
|
|
570
|
+
var _key$getState3;
|
|
551
571
|
var state = view.state,
|
|
552
572
|
dispatch = view.dispatch;
|
|
553
|
-
if ((_key$
|
|
573
|
+
if ((_key$getState3 = key.getState(state)) !== null && _key$getState3 !== void 0 && _key$getState3.isPMDragging) {
|
|
554
574
|
dispatch(state.tr.setMeta(key, {
|
|
555
575
|
isPMDragging: false
|
|
556
576
|
}));
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.getMultiSelectAnalyticsAttributes = exports.fireInsertLayoutAnalytics = exports.attachMoveNodeAnalytics = void 0;
|
|
8
|
+
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
|
9
|
+
var _analytics = require("@atlaskit/editor-common/analytics");
|
|
10
|
+
var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
|
|
11
|
+
var attachMoveNodeAnalytics = exports.attachMoveNodeAnalytics = function attachMoveNodeAnalytics(tr, inputMethod, fromDepth, fromNodeType, toDepth, toNodeType, isSameParent, api, fromNodeTypes, hasSelectedMultipleNodes) {
|
|
12
|
+
var _api$analytics;
|
|
13
|
+
return api === null || api === void 0 || (_api$analytics = api.analytics) === null || _api$analytics === void 0 || (_api$analytics = _api$analytics.actions) === null || _api$analytics === void 0 ? void 0 : _api$analytics.attachAnalyticsEvent({
|
|
14
|
+
eventType: _analytics.EVENT_TYPE.TRACK,
|
|
15
|
+
action: _analytics.ACTION.MOVED,
|
|
16
|
+
actionSubject: _analytics.ACTION_SUBJECT.ELEMENT,
|
|
17
|
+
actionSubjectId: _analytics.ACTION_SUBJECT_ID.ELEMENT_DRAG_HANDLE,
|
|
18
|
+
attributes: {
|
|
19
|
+
nodeDepth: fromDepth,
|
|
20
|
+
nodeType: fromNodeType,
|
|
21
|
+
nodeTypes: fromNodeTypes,
|
|
22
|
+
hasSelectedMultipleNodes: hasSelectedMultipleNodes,
|
|
23
|
+
destinationNodeDepth: toDepth,
|
|
24
|
+
destinationNodeType: toNodeType,
|
|
25
|
+
isSameParent: isSameParent,
|
|
26
|
+
inputMethod: inputMethod
|
|
27
|
+
}
|
|
28
|
+
})(tr);
|
|
29
|
+
};
|
|
30
|
+
var fireInsertLayoutAnalytics = exports.fireInsertLayoutAnalytics = function fireInsertLayoutAnalytics(tr, api, nodeTypes, hasSelectedMultipleNodes) {
|
|
31
|
+
var _api$analytics2;
|
|
32
|
+
api === null || api === void 0 || (_api$analytics2 = api.analytics) === null || _api$analytics2 === void 0 || (_api$analytics2 = _api$analytics2.actions) === null || _api$analytics2 === void 0 || _api$analytics2.attachAnalyticsEvent({
|
|
33
|
+
action: _analytics.ACTION.INSERTED,
|
|
34
|
+
actionSubject: _analytics.ACTION_SUBJECT.DOCUMENT,
|
|
35
|
+
actionSubjectId: _analytics.ACTION_SUBJECT_ID.LAYOUT,
|
|
36
|
+
attributes: {
|
|
37
|
+
inputMethod: _analytics.INPUT_METHOD.DRAG_AND_DROP,
|
|
38
|
+
nodeTypes: nodeTypes,
|
|
39
|
+
hasSelectedMultipleNodes: hasSelectedMultipleNodes
|
|
40
|
+
},
|
|
41
|
+
eventType: _analytics.EVENT_TYPE.TRACK
|
|
42
|
+
})(tr);
|
|
43
|
+
};
|
|
44
|
+
|
|
45
|
+
/**
|
|
46
|
+
* Given a range, return distinctive types of node and whether there are multiple nodes in the range
|
|
47
|
+
*/
|
|
48
|
+
var getMultiSelectAnalyticsAttributes = exports.getMultiSelectAnalyticsAttributes = function getMultiSelectAnalyticsAttributes(tr, anchor, head) {
|
|
49
|
+
var nodeTypes = [];
|
|
50
|
+
var from = Math.min(anchor, head);
|
|
51
|
+
var to = Math.max(anchor, head);
|
|
52
|
+
tr.doc.nodesBetween(from, to, function (node, pos) {
|
|
53
|
+
if (pos < from) {
|
|
54
|
+
// ignore parent node
|
|
55
|
+
return true;
|
|
56
|
+
}
|
|
57
|
+
nodeTypes.push(node.type.name);
|
|
58
|
+
|
|
59
|
+
// only care about the top level (relatively in the range) nodes
|
|
60
|
+
return false;
|
|
61
|
+
});
|
|
62
|
+
return {
|
|
63
|
+
nodeTypes: (0, _platformFeatureFlags.fg)('platform_editor_track_node_types') ? (0, _toConsumableArray2.default)(new Set(nodeTypes)).sort().join(',') : undefined,
|
|
64
|
+
hasSelectedMultipleNodes: nodeTypes.length > 1
|
|
65
|
+
};
|
|
66
|
+
};
|
|
@@ -3,10 +3,10 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.getMultiSelectionIfPosInside = void 0;
|
|
6
|
+
exports.getSelectedSlicePosition = exports.getMultiSelectionIfPosInside = void 0;
|
|
7
7
|
var getMultiSelectionIfPosInside = exports.getMultiSelectionIfPosInside = function getMultiSelectionIfPosInside(api, pos) {
|
|
8
8
|
var _api$blockControls;
|
|
9
|
-
var _ref = (
|
|
9
|
+
var _ref = ((_api$blockControls = api.blockControls) === null || _api$blockControls === void 0 ? void 0 : _api$blockControls.sharedState.currentState()) || {},
|
|
10
10
|
multiSelectDnD = _ref.multiSelectDnD;
|
|
11
11
|
if (multiSelectDnD && multiSelectDnD.anchor >= 0 && multiSelectDnD.head >= 0) {
|
|
12
12
|
var multiFrom = Math.min(multiSelectDnD.anchor, multiSelectDnD.head);
|
|
@@ -19,4 +19,24 @@ var getMultiSelectionIfPosInside = exports.getMultiSelectionIfPosInside = functi
|
|
|
19
19
|
} : {};
|
|
20
20
|
}
|
|
21
21
|
return {};
|
|
22
|
+
};
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
*
|
|
26
|
+
* @returns from and to positions of the selected content (after expansion)
|
|
27
|
+
*/
|
|
28
|
+
var getSelectedSlicePosition = exports.getSelectedSlicePosition = function getSelectedSlicePosition(handlePos, tr, api) {
|
|
29
|
+
var _activeNode$nodeSize;
|
|
30
|
+
var _getMultiSelectionIfP = getMultiSelectionIfPosInside(api, handlePos),
|
|
31
|
+
anchor = _getMultiSelectionIfP.anchor,
|
|
32
|
+
head = _getMultiSelectionIfP.head;
|
|
33
|
+
var inSelection = anchor !== undefined && head !== undefined;
|
|
34
|
+
var from = inSelection ? Math.min(anchor, head) : handlePos;
|
|
35
|
+
var activeNode = tr.doc.nodeAt(handlePos);
|
|
36
|
+
var activeNodeEndPos = handlePos + ((_activeNode$nodeSize = activeNode === null || activeNode === void 0 ? void 0 : activeNode.nodeSize) !== null && _activeNode$nodeSize !== void 0 ? _activeNode$nodeSize : 1);
|
|
37
|
+
var to = inSelection ? Math.max(anchor, head) : activeNodeEndPos;
|
|
38
|
+
return {
|
|
39
|
+
from: from,
|
|
40
|
+
to: to
|
|
41
|
+
};
|
|
22
42
|
};
|
|
@@ -6,6 +6,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
});
|
|
7
7
|
exports.DragHandle = void 0;
|
|
8
8
|
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
|
9
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
9
10
|
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
10
11
|
var _react = require("react");
|
|
11
12
|
var _react2 = require("@emotion/react");
|
|
@@ -25,18 +26,17 @@ var _primitives = require("@atlaskit/primitives");
|
|
|
25
26
|
var _experiments = require("@atlaskit/tmp-editor-statsig/experiments");
|
|
26
27
|
var _tooltip = _interopRequireDefault(require("@atlaskit/tooltip"));
|
|
27
28
|
var _main = require("../pm-plugins/main");
|
|
29
|
+
var _analytics2 = require("../pm-plugins/utils/analytics");
|
|
28
30
|
var _dragHandlePositions = require("../pm-plugins/utils/drag-handle-positions");
|
|
29
31
|
var _getNestedNodePosition = require("../pm-plugins/utils/getNestedNodePosition");
|
|
30
32
|
var _getSelection = require("../pm-plugins/utils/getSelection");
|
|
31
33
|
var _consts = require("./consts");
|
|
32
34
|
var _dragPreview = require("./drag-preview");
|
|
33
|
-
|
|
35
|
+
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; }
|
|
36
|
+
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; } /**
|
|
34
37
|
* @jsxRuntime classic
|
|
35
38
|
* @jsx jsx
|
|
36
|
-
*/
|
|
37
|
-
|
|
38
|
-
// eslint-disable-next-line @atlaskit/ui-styling-standard/use-compiled -- Ignored via go/DSP-18766
|
|
39
|
-
|
|
39
|
+
*/ // eslint-disable-next-line @atlaskit/ui-styling-standard/use-compiled -- Ignored via go/DSP-18766
|
|
40
40
|
var iconWrapperStyles = (0, _primitives.xcss)({
|
|
41
41
|
display: 'flex',
|
|
42
42
|
justifyContent: 'center',
|
|
@@ -263,7 +263,11 @@ var DragHandle = exports.DragHandle = function DragHandle(_ref) {
|
|
|
263
263
|
var isMultiSelect = (0, _experiments.editorExperiment)('platform_editor_element_drag_and_drop_multiselect', true, {
|
|
264
264
|
exposure: true
|
|
265
265
|
});
|
|
266
|
+
var nodeTypes, hasSelectedMultipleNodes;
|
|
267
|
+
var resolvedMovingNode = tr.doc.resolve(start);
|
|
268
|
+
var maybeNode = resolvedMovingNode.nodeAfter;
|
|
266
269
|
if (isMultiSelect) {
|
|
270
|
+
var _tr$getMeta;
|
|
267
271
|
var handlePos = getPos();
|
|
268
272
|
if (typeof handlePos !== 'number') {
|
|
269
273
|
return tr;
|
|
@@ -274,22 +278,32 @@ var DragHandle = exports.DragHandle = function DragHandle(_ref) {
|
|
|
274
278
|
tr: tr
|
|
275
279
|
});
|
|
276
280
|
}
|
|
281
|
+
var multiSelectDnD = (_tr$getMeta = tr.getMeta(_main.key)) === null || _tr$getMeta === void 0 ? void 0 : _tr$getMeta.multiSelectDnD;
|
|
282
|
+
if (multiSelectDnD) {
|
|
283
|
+
var attributes = (0, _analytics2.getMultiSelectAnalyticsAttributes)(tr, multiSelectDnD.anchor, multiSelectDnD.head);
|
|
284
|
+
nodeTypes = attributes.nodeTypes;
|
|
285
|
+
hasSelectedMultipleNodes = attributes.hasSelectedMultipleNodes;
|
|
286
|
+
} else {
|
|
287
|
+
nodeTypes = maybeNode === null || maybeNode === void 0 ? void 0 : maybeNode.type.name;
|
|
288
|
+
hasSelectedMultipleNodes = false;
|
|
289
|
+
}
|
|
277
290
|
}
|
|
278
291
|
api === null || api === void 0 || (_api$blockControls2 = api.blockControls) === null || _api$blockControls2 === void 0 || _api$blockControls2.commands.setNodeDragged(getPos, anchorName, nodeType)({
|
|
279
292
|
tr: tr
|
|
280
293
|
});
|
|
281
|
-
var resolvedMovingNode = tr.doc.resolve(start);
|
|
282
|
-
var maybeNode = resolvedMovingNode.nodeAfter;
|
|
283
294
|
tr.setMeta('scrollIntoView', false);
|
|
284
295
|
api === null || api === void 0 || (_api$analytics3 = api.analytics) === null || _api$analytics3 === void 0 || _api$analytics3.actions.attachAnalyticsEvent({
|
|
285
296
|
eventType: _analytics.EVENT_TYPE.UI,
|
|
286
297
|
action: _analytics.ACTION.DRAGGED,
|
|
287
298
|
actionSubject: _analytics.ACTION_SUBJECT.ELEMENT,
|
|
288
299
|
actionSubjectId: _analytics.ACTION_SUBJECT_ID.ELEMENT_DRAG_HANDLE,
|
|
289
|
-
attributes: {
|
|
300
|
+
attributes: _objectSpread({
|
|
290
301
|
nodeDepth: resolvedMovingNode.depth,
|
|
291
302
|
nodeType: (maybeNode === null || maybeNode === void 0 ? void 0 : maybeNode.type.name) || ''
|
|
292
|
-
}
|
|
303
|
+
}, isMultiSelect && {
|
|
304
|
+
nodeTypes: nodeTypes,
|
|
305
|
+
hasSelectedMultipleNodes: hasSelectedMultipleNodes
|
|
306
|
+
})
|
|
293
307
|
})(tr);
|
|
294
308
|
return tr;
|
|
295
309
|
});
|
|
@@ -389,7 +403,21 @@ var DragHandle = exports.DragHandle = function DragHandle(_ref) {
|
|
|
389
403
|
}
|
|
390
404
|
setDragHandleSelected((0, _getSelection.isHandleInSelection)(view.state, selection, start));
|
|
391
405
|
}, [start, selection, view.state]);
|
|
392
|
-
var helpDescriptors = [{
|
|
406
|
+
var helpDescriptors = isTopLevelNode && (0, _platformFeatureFlags.fg)('platform_editor_advanced_layouts_accessibility') ? [{
|
|
407
|
+
description: formatMessage(_messages.blockControlsMessages.dragToMove)
|
|
408
|
+
}, {
|
|
409
|
+
description: formatMessage(_messages.blockControlsMessages.moveUp),
|
|
410
|
+
keymap: _keymaps.dragToMoveUp
|
|
411
|
+
}, {
|
|
412
|
+
description: formatMessage(_messages.blockControlsMessages.moveDown),
|
|
413
|
+
keymap: _keymaps.dragToMoveDown
|
|
414
|
+
}, {
|
|
415
|
+
description: formatMessage(_messages.blockControlsMessages.moveLeft),
|
|
416
|
+
keymap: _keymaps.dragToMoveLeft
|
|
417
|
+
}, {
|
|
418
|
+
description: formatMessage(_messages.blockControlsMessages.moveRight),
|
|
419
|
+
keymap: _keymaps.dragToMoveRight
|
|
420
|
+
}] : [{
|
|
393
421
|
description: formatMessage(_messages.blockControlsMessages.dragToMove)
|
|
394
422
|
}, {
|
|
395
423
|
description: formatMessage(_messages.blockControlsMessages.moveUp),
|
|
@@ -11,12 +11,13 @@ import { findTable, isInTable, isTableSelected } from '@atlaskit/editor-tables/u
|
|
|
11
11
|
import { fg } from '@atlaskit/platform-feature-flags';
|
|
12
12
|
import { editorExperiment } from '@atlaskit/tmp-editor-statsig/experiments';
|
|
13
13
|
import { key } from '../pm-plugins/main';
|
|
14
|
+
import { attachMoveNodeAnalytics, getMultiSelectAnalyticsAttributes } from '../pm-plugins/utils/analytics';
|
|
14
15
|
import { DIRECTION } from '../pm-plugins/utils/consts';
|
|
15
|
-
import { attachMoveNodeAnalytics } from '../pm-plugins/utils/fire-analytics';
|
|
16
16
|
import { getNestedNodePosition } from '../pm-plugins/utils/getNestedNodePosition';
|
|
17
17
|
import { selectNode, setCursorPositionAtMovedNode } from '../pm-plugins/utils/getSelection';
|
|
18
18
|
import { removeFromSource } from '../pm-plugins/utils/remove-from-source';
|
|
19
|
-
import {
|
|
19
|
+
import { getSelectedSlicePosition } from '../pm-plugins/utils/selection';
|
|
20
|
+
import { getInsertLayoutStep, updateSelection } from '../pm-plugins/utils/update-selection';
|
|
20
21
|
import { canMoveNodeToIndex, isInsideTable, transformSliceExpandToNestedExpand } from '../pm-plugins/utils/validation';
|
|
21
22
|
|
|
22
23
|
/**
|
|
@@ -50,7 +51,7 @@ const isDragLayoutColumnToTopLevel = ($from, $to) => {
|
|
|
50
51
|
*
|
|
51
52
|
* @returns the start position of a node if the node can be moved, otherwise -1
|
|
52
53
|
*/
|
|
53
|
-
const getCurrentNodePos =
|
|
54
|
+
const getCurrentNodePos = state => {
|
|
54
55
|
var _activeNode$handleOpt;
|
|
55
56
|
const {
|
|
56
57
|
selection
|
|
@@ -91,28 +92,47 @@ export const moveNodeViaShortcut = (api, direction, formatMessage) => {
|
|
|
91
92
|
if (shouldEnableNestedDndA11y) {
|
|
92
93
|
isParentNodeOfTypeLayout = !!findParentNodeOfType([state.schema.nodes.layoutSection])(state.selection);
|
|
93
94
|
}
|
|
94
|
-
const currentNodePos = getCurrentNodePos(state
|
|
95
|
+
const currentNodePos = getCurrentNodePos(state);
|
|
95
96
|
if (currentNodePos > -1) {
|
|
96
97
|
var _state$doc$nodeAt;
|
|
97
98
|
const $pos = state.doc.resolve(currentNodePos);
|
|
99
|
+
const isTopLevelNode = $pos.depth === 0;
|
|
98
100
|
let moveToPos = -1;
|
|
99
101
|
const nodeIndex = $pos.index();
|
|
100
102
|
const isLayoutColumnSelected = selection instanceof NodeSelection && selection.node.type.name === 'layoutColumn';
|
|
101
103
|
if (direction === DIRECTION.LEFT && shouldEnableNestedDndA11y) {
|
|
102
|
-
if (
|
|
103
|
-
var
|
|
104
|
-
|
|
104
|
+
if (isTopLevelNode && editorExperiment('advanced_layouts', true) && fg('platform_editor_advanced_layouts_accessibility')) {
|
|
105
|
+
var _api$core, _api$core2;
|
|
106
|
+
const nodeBefore = $pos.nodeBefore;
|
|
107
|
+
if (nodeBefore) {
|
|
108
|
+
moveToPos = currentNodePos - nodeBefore.nodeSize;
|
|
109
|
+
}
|
|
110
|
+
if (moveToPos < 0) {
|
|
111
|
+
return false;
|
|
112
|
+
}
|
|
105
113
|
api === null || api === void 0 ? void 0 : (_api$core = api.core) === null || _api$core === void 0 ? void 0 : _api$core.actions.execute(({
|
|
106
114
|
tr
|
|
107
115
|
}) => {
|
|
108
116
|
var _api$blockControls, _api$blockControls$co;
|
|
109
117
|
api === null || api === void 0 ? void 0 : (_api$blockControls = api.blockControls) === null || _api$blockControls === void 0 ? void 0 : (_api$blockControls$co = _api$blockControls.commands) === null || _api$blockControls$co === void 0 ? void 0 : _api$blockControls$co.moveToLayout(currentNodePos, moveToPos, {
|
|
110
|
-
|
|
118
|
+
moveToEnd: true,
|
|
119
|
+
moveNodeAtCursorPos: true
|
|
111
120
|
})({
|
|
112
121
|
tr
|
|
113
122
|
});
|
|
123
|
+
const insertColumnStep = getInsertLayoutStep(tr);
|
|
124
|
+
const mappedTo = insertColumnStep === null || insertColumnStep === void 0 ? void 0 : insertColumnStep.from;
|
|
125
|
+
updateSelection(tr, mappedTo, true);
|
|
114
126
|
return tr;
|
|
115
127
|
});
|
|
128
|
+
api === null || api === void 0 ? void 0 : (_api$core2 = api.core) === null || _api$core2 === void 0 ? void 0 : _api$core2.actions.focus();
|
|
129
|
+
return true;
|
|
130
|
+
} else if (isLayoutColumnSelected && fg('platform_editor_advanced_layouts_accessibility')) {
|
|
131
|
+
var _$pos$nodeBefore, _api$core3, _api$blockControls2, _api$blockControls2$c;
|
|
132
|
+
moveToPos = selection.from - (((_$pos$nodeBefore = $pos.nodeBefore) === null || _$pos$nodeBefore === void 0 ? void 0 : _$pos$nodeBefore.nodeSize) || 1);
|
|
133
|
+
api === null || api === void 0 ? void 0 : (_api$core3 = api.core) === null || _api$core3 === void 0 ? void 0 : _api$core3.actions.execute(api === null || api === void 0 ? void 0 : (_api$blockControls2 = api.blockControls) === null || _api$blockControls2 === void 0 ? void 0 : (_api$blockControls2$c = _api$blockControls2.commands) === null || _api$blockControls2$c === void 0 ? void 0 : _api$blockControls2$c.moveToLayout(currentNodePos, moveToPos, {
|
|
134
|
+
selectMovedNode: true
|
|
135
|
+
}));
|
|
116
136
|
return true;
|
|
117
137
|
} else {
|
|
118
138
|
if ($pos.depth < 2 || !isParentNodeOfTypeLayout) {
|
|
@@ -126,8 +146,31 @@ export const moveNodeViaShortcut = (api, direction, formatMessage) => {
|
|
|
126
146
|
moveToPos = $pos.start() - ((previousNode === null || previousNode === void 0 ? void 0 : previousNode.nodeSize) || 1);
|
|
127
147
|
}
|
|
128
148
|
} else if (direction === DIRECTION.RIGHT && shouldEnableNestedDndA11y) {
|
|
129
|
-
if (
|
|
130
|
-
var _api$
|
|
149
|
+
if (isTopLevelNode && editorExperiment('advanced_layouts', true) && fg('platform_editor_advanced_layouts_accessibility')) {
|
|
150
|
+
var _api$core4, _api$core5;
|
|
151
|
+
const endOfDoc = $pos.end();
|
|
152
|
+
moveToPos = $pos.posAtIndex($pos.index() + 1);
|
|
153
|
+
if (moveToPos >= endOfDoc) {
|
|
154
|
+
return false;
|
|
155
|
+
}
|
|
156
|
+
api === null || api === void 0 ? void 0 : (_api$core4 = api.core) === null || _api$core4 === void 0 ? void 0 : _api$core4.actions.execute(({
|
|
157
|
+
tr
|
|
158
|
+
}) => {
|
|
159
|
+
var _api$blockControls3, _api$blockControls3$c;
|
|
160
|
+
api === null || api === void 0 ? void 0 : (_api$blockControls3 = api.blockControls) === null || _api$blockControls3 === void 0 ? void 0 : (_api$blockControls3$c = _api$blockControls3.commands) === null || _api$blockControls3$c === void 0 ? void 0 : _api$blockControls3$c.moveToLayout(currentNodePos, moveToPos, {
|
|
161
|
+
moveNodeAtCursorPos: true
|
|
162
|
+
})({
|
|
163
|
+
tr
|
|
164
|
+
});
|
|
165
|
+
const insertColumnStep = getInsertLayoutStep(tr);
|
|
166
|
+
const mappedTo = insertColumnStep === null || insertColumnStep === void 0 ? void 0 : insertColumnStep.from;
|
|
167
|
+
updateSelection(tr, mappedTo);
|
|
168
|
+
return tr;
|
|
169
|
+
});
|
|
170
|
+
api === null || api === void 0 ? void 0 : (_api$core5 = api.core) === null || _api$core5 === void 0 ? void 0 : _api$core5.actions.focus();
|
|
171
|
+
return true;
|
|
172
|
+
} else if (isLayoutColumnSelected && fg('platform_editor_advanced_layouts_accessibility')) {
|
|
173
|
+
var _api$core6, _api$blockControls4, _api$blockControls4$c;
|
|
131
174
|
const index = $pos.index($pos.depth);
|
|
132
175
|
const parent = $pos.node($pos.depth);
|
|
133
176
|
// get the next layoutColumn node
|
|
@@ -140,18 +183,10 @@ export const moveNodeViaShortcut = (api, direction, formatMessage) => {
|
|
|
140
183
|
}
|
|
141
184
|
const moveToEnd = index === parent.childCount - 2;
|
|
142
185
|
moveToPos = moveToEnd ? $pos.before() : selection.to + ((nextNode === null || nextNode === void 0 ? void 0 : nextNode.nodeSize) || 1);
|
|
143
|
-
api === null || api === void 0 ? void 0 : (_api$
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
api === null || api === void 0 ? void 0 : (_api$blockControls2 = api.blockControls) === null || _api$blockControls2 === void 0 ? void 0 : (_api$blockControls2$c = _api$blockControls2.commands) === null || _api$blockControls2$c === void 0 ? void 0 : _api$blockControls2$c.moveToLayout(currentNodePos, moveToPos, {
|
|
148
|
-
moveToEnd,
|
|
149
|
-
selectMovedNode: true
|
|
150
|
-
})({
|
|
151
|
-
tr
|
|
152
|
-
});
|
|
153
|
-
return tr;
|
|
154
|
-
});
|
|
186
|
+
api === null || api === void 0 ? void 0 : (_api$core6 = api.core) === null || _api$core6 === void 0 ? void 0 : _api$core6.actions.execute(api === null || api === void 0 ? void 0 : (_api$blockControls4 = api.blockControls) === null || _api$blockControls4 === void 0 ? void 0 : (_api$blockControls4$c = _api$blockControls4.commands) === null || _api$blockControls4$c === void 0 ? void 0 : _api$blockControls4$c.moveToLayout(currentNodePos, moveToPos, {
|
|
187
|
+
moveToEnd,
|
|
188
|
+
selectMovedNode: true
|
|
189
|
+
}));
|
|
155
190
|
return true;
|
|
156
191
|
} else {
|
|
157
192
|
if ($pos.depth < 2 || !isParentNodeOfTypeLayout) {
|
|
@@ -189,8 +224,8 @@ export const moveNodeViaShortcut = (api, direction, formatMessage) => {
|
|
|
189
224
|
// only move the node if the destination is at the same depth, not support moving a nested node to a parent node
|
|
190
225
|
const shouldMoveNode = (shouldEnableNestedDndA11y ? moveToPos > -1 && $pos.depth === state.doc.resolve(moveToPos).depth || nodeType === 'layoutColumn' : moveToPos > -1) || nodeType === 'layoutColumn' && fg('platform_editor_advanced_layouts_accessibility');
|
|
191
226
|
if (shouldMoveNode) {
|
|
192
|
-
var _api$
|
|
193
|
-
api === null || api === void 0 ? void 0 : (_api$
|
|
227
|
+
var _api$core7;
|
|
228
|
+
api === null || api === void 0 ? void 0 : (_api$core7 = api.core) === null || _api$core7 === void 0 ? void 0 : _api$core7.actions.execute(({
|
|
194
229
|
tr
|
|
195
230
|
}) => {
|
|
196
231
|
moveNode(api)(currentNodePos, moveToPos, INPUT_METHOD.SHORTCUT, formatMessage)({
|
|
@@ -201,9 +236,9 @@ export const moveNodeViaShortcut = (api, direction, formatMessage) => {
|
|
|
201
236
|
});
|
|
202
237
|
return true;
|
|
203
238
|
} else if (nodeType) {
|
|
204
|
-
var _api$
|
|
239
|
+
var _api$core8;
|
|
205
240
|
// If the node is first/last one, only select the node
|
|
206
|
-
api === null || api === void 0 ? void 0 : (_api$
|
|
241
|
+
api === null || api === void 0 ? void 0 : (_api$core8 = api.core) === null || _api$core8 === void 0 ? void 0 : _api$core8.actions.execute(({
|
|
207
242
|
tr
|
|
208
243
|
}) => {
|
|
209
244
|
selectNode(tr, currentNodePos, nodeType);
|
|
@@ -228,23 +263,21 @@ export const moveNode = api => (start, to, inputMethod = INPUT_METHOD.DRAG_AND_D
|
|
|
228
263
|
}
|
|
229
264
|
let sliceFrom = start;
|
|
230
265
|
let sliceTo;
|
|
266
|
+
let mappedTo;
|
|
267
|
+
let sourceNodeTypes, hasSelectedMultipleNodes;
|
|
231
268
|
const isMultiSelect = editorExperiment('platform_editor_element_drag_and_drop_multiselect', true, {
|
|
232
269
|
exposure: true
|
|
233
270
|
});
|
|
234
271
|
if (isMultiSelect) {
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
sliceFrom = inSelection ? Math.min(anchor, head) : start;
|
|
242
|
-
const handleSize = (_handleNode$nodeSize = handleNode === null || handleNode === void 0 ? void 0 : handleNode.nodeSize) !== null && _handleNode$nodeSize !== void 0 ? _handleNode$nodeSize : 1;
|
|
243
|
-
const handleEnd = sliceFrom + handleSize;
|
|
244
|
-
sliceTo = inSelection ? Math.max(anchor, head) : handleEnd;
|
|
272
|
+
const slicePosition = getSelectedSlicePosition(start, tr, api);
|
|
273
|
+
sliceFrom = slicePosition.from;
|
|
274
|
+
sliceTo = slicePosition.to;
|
|
275
|
+
const attributes = getMultiSelectAnalyticsAttributes(tr, sliceFrom, sliceTo);
|
|
276
|
+
hasSelectedMultipleNodes = attributes.hasSelectedMultipleNodes;
|
|
277
|
+
sourceNodeTypes = attributes.nodeTypes;
|
|
245
278
|
} else {
|
|
246
|
-
var _handleNode$
|
|
247
|
-
const size = (_handleNode$
|
|
279
|
+
var _handleNode$nodeSize;
|
|
280
|
+
const size = (_handleNode$nodeSize = handleNode === null || handleNode === void 0 ? void 0 : handleNode.nodeSize) !== null && _handleNode$nodeSize !== void 0 ? _handleNode$nodeSize : 1;
|
|
248
281
|
sliceTo = sliceFrom + size;
|
|
249
282
|
}
|
|
250
283
|
const {
|
|
@@ -253,7 +286,6 @@ export const moveNode = api => (start, to, inputMethod = INPUT_METHOD.DRAG_AND_D
|
|
|
253
286
|
} = tr.doc.type.schema.nodes;
|
|
254
287
|
const $to = tr.doc.resolve(to);
|
|
255
288
|
const $handlePos = tr.doc.resolve(start);
|
|
256
|
-
let mappedTo;
|
|
257
289
|
if (editorExperiment('nested-dnd', true)) {
|
|
258
290
|
const nodeCopy = tr.doc.slice(sliceFrom, sliceTo, false); // cut the content
|
|
259
291
|
const destType = $to.node().type;
|
|
@@ -309,7 +341,7 @@ export const moveNode = api => (start, to, inputMethod = INPUT_METHOD.DRAG_AND_D
|
|
|
309
341
|
}
|
|
310
342
|
}
|
|
311
343
|
if (editorExperiment('advanced_layouts', true)) {
|
|
312
|
-
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);
|
|
344
|
+
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
345
|
} else {
|
|
314
346
|
var _api$analytics;
|
|
315
347
|
api === null || api === void 0 ? void 0 : (_api$analytics = api.analytics) === null || _api$analytics === void 0 ? void 0 : _api$analytics.actions.attachAnalyticsEvent({
|
|
@@ -324,6 +356,10 @@ export const moveNode = api => (start, to, inputMethod = INPUT_METHOD.DRAG_AND_D
|
|
|
324
356
|
destinationNodeType: $mappedTo === null || $mappedTo === void 0 ? void 0 : $mappedTo.parent.type.name,
|
|
325
357
|
...(fg('platform_editor_element_drag_and_drop_ed_23873') && {
|
|
326
358
|
inputMethod
|
|
359
|
+
}),
|
|
360
|
+
...(isMultiSelect && {
|
|
361
|
+
sourceNodeTypes,
|
|
362
|
+
hasSelectedMultipleNodes
|
|
327
363
|
})
|
|
328
364
|
}
|
|
329
365
|
})(tr);
|