@atlaskit/editor-plugin-block-controls 4.1.12 → 4.2.0
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 +11 -0
- package/dist/cjs/blockControlsPlugin.js +29 -13
- package/dist/cjs/editor-commands/move-node-with-block-menu.js +44 -0
- package/dist/cjs/editor-commands/move-node.js +16 -15
- package/dist/cjs/editor-commands/show-drag-handle.js +5 -1
- package/dist/cjs/editor-commands/utils/move-node-utils.js +91 -0
- package/dist/cjs/pm-plugins/keymap.js +5 -5
- package/dist/cjs/pm-plugins/main.js +6 -1
- package/dist/cjs/pm-plugins/utils/consts.js +1 -8
- package/dist/cjs/pm-plugins/utils/getNestedNodePosition.js +6 -4
- package/dist/cjs/ui/block-menu-items.js +3 -3
- package/dist/es2019/blockControlsPlugin.js +31 -13
- package/dist/es2019/editor-commands/move-node-with-block-menu.js +39 -0
- package/dist/es2019/editor-commands/move-node.js +13 -12
- package/dist/es2019/editor-commands/show-drag-handle.js +5 -1
- package/dist/es2019/editor-commands/utils/move-node-utils.js +88 -0
- package/dist/es2019/pm-plugins/keymap.js +1 -1
- package/dist/es2019/pm-plugins/main.js +6 -1
- package/dist/es2019/pm-plugins/utils/consts.js +0 -7
- package/dist/es2019/pm-plugins/utils/getNestedNodePosition.js +7 -6
- package/dist/es2019/ui/block-menu-items.js +1 -1
- package/dist/esm/blockControlsPlugin.js +29 -13
- package/dist/esm/editor-commands/move-node-with-block-menu.js +38 -0
- package/dist/esm/editor-commands/move-node.js +13 -12
- package/dist/esm/editor-commands/show-drag-handle.js +5 -1
- package/dist/esm/editor-commands/utils/move-node-utils.js +85 -0
- package/dist/esm/pm-plugins/keymap.js +1 -1
- package/dist/esm/pm-plugins/main.js +6 -1
- package/dist/esm/pm-plugins/utils/consts.js +0 -7
- package/dist/esm/pm-plugins/utils/getNestedNodePosition.js +6 -4
- package/dist/esm/ui/block-menu-items.js +1 -1
- package/dist/types/blockControlsPluginType.d.ts +11 -2
- package/dist/types/editor-commands/move-node-with-block-menu.d.ts +4 -0
- package/dist/types/editor-commands/move-node.d.ts +1 -1
- package/dist/types/editor-commands/utils/move-node-utils.d.ts +23 -0
- package/dist/types/pm-plugins/main.d.ts +8 -0
- package/dist/types/pm-plugins/utils/consts.d.ts +0 -6
- package/dist/types/pm-plugins/utils/getNestedNodePosition.d.ts +7 -2
- package/dist/types-ts4.5/blockControlsPluginType.d.ts +11 -2
- package/dist/types-ts4.5/editor-commands/move-node-with-block-menu.d.ts +4 -0
- package/dist/types-ts4.5/editor-commands/move-node.d.ts +1 -1
- package/dist/types-ts4.5/editor-commands/utils/move-node-utils.d.ts +23 -0
- package/dist/types-ts4.5/pm-plugins/main.d.ts +8 -0
- package/dist/types-ts4.5/pm-plugins/utils/consts.d.ts +0 -6
- package/dist/types-ts4.5/pm-plugins/utils/getNestedNodePosition.d.ts +7 -2
- package/package.json +3 -3
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,16 @@
|
|
|
1
1
|
# @atlaskit/editor-plugin-block-controls
|
|
2
2
|
|
|
3
|
+
## 4.2.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- [`353075175e7ff`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/353075175e7ff) -
|
|
8
|
+
[ux] ED-28584 Register move up and down options in block menu
|
|
9
|
+
|
|
10
|
+
### Patch Changes
|
|
11
|
+
|
|
12
|
+
- Updated dependencies
|
|
13
|
+
|
|
3
14
|
## 4.1.12
|
|
4
15
|
|
|
5
16
|
### Patch Changes
|
|
@@ -13,7 +13,9 @@ var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
|
|
|
13
13
|
var _expValEqualsNoExposure = require("@atlaskit/tmp-editor-statsig/exp-val-equals-no-exposure");
|
|
14
14
|
var _experiments = require("@atlaskit/tmp-editor-statsig/experiments");
|
|
15
15
|
var _moveNode = require("./editor-commands/move-node");
|
|
16
|
+
var _moveNodeWithBlockMenu2 = require("./editor-commands/move-node-with-block-menu");
|
|
16
17
|
var _moveToLayout = require("./editor-commands/move-to-layout");
|
|
18
|
+
var _moveNodeUtils = require("./editor-commands/utils/move-node-utils");
|
|
17
19
|
var _firstNodeDecPlugin = require("./pm-plugins/first-node-dec-plugin");
|
|
18
20
|
var _pmPlugin = require("./pm-plugins/interaction-tracking/pm-plugin");
|
|
19
21
|
var _main = require("./pm-plugins/main");
|
|
@@ -89,12 +91,22 @@ var blockControlsPlugin = exports.blockControlsPlugin = function blockControlsPl
|
|
|
89
91
|
}));
|
|
90
92
|
return tr;
|
|
91
93
|
}
|
|
94
|
+
var toggleMenuMeta = {
|
|
95
|
+
anchorName: options === null || options === void 0 ? void 0 : options.anchorName
|
|
96
|
+
};
|
|
97
|
+
var menuTriggerBy = api === null || api === void 0 || (_api$blockControls = api.blockControls) === null || _api$blockControls === void 0 || (_api$blockControls = _api$blockControls.sharedState.currentState()) === null || _api$blockControls === void 0 ? void 0 : _api$blockControls.menuTriggerBy;
|
|
98
|
+
if (options !== null && options !== void 0 && options.anchorName) {
|
|
99
|
+
var _canMoveNodeUpOrDown = (0, _moveNodeUtils.canMoveNodeUpOrDown)(tr),
|
|
100
|
+
moveUp = _canMoveNodeUpOrDown.moveUp,
|
|
101
|
+
moveDown = _canMoveNodeUpOrDown.moveDown;
|
|
102
|
+
toggleMenuMeta = _objectSpread(_objectSpread({}, toggleMenuMeta), {}, {
|
|
103
|
+
moveUp: moveUp,
|
|
104
|
+
moveDown: moveDown
|
|
105
|
+
});
|
|
106
|
+
}
|
|
92
107
|
tr.setMeta(_main.key, _objectSpread(_objectSpread({}, currMeta), {}, {
|
|
93
|
-
toggleMenu:
|
|
94
|
-
anchorName: options === null || options === void 0 ? void 0 : options.anchorName
|
|
95
|
-
}
|
|
108
|
+
toggleMenu: toggleMenuMeta
|
|
96
109
|
}));
|
|
97
|
-
var menuTriggerBy = api === null || api === void 0 || (_api$blockControls = api.blockControls) === null || _api$blockControls === void 0 || (_api$blockControls = _api$blockControls.sharedState.currentState()) === null || _api$blockControls === void 0 ? void 0 : _api$blockControls.menuTriggerBy;
|
|
98
110
|
if (menuTriggerBy === undefined || !!menuTriggerBy && menuTriggerBy === (options === null || options === void 0 ? void 0 : options.anchorName)) {
|
|
99
111
|
var _api$userIntent;
|
|
100
112
|
// Toggled from drag handle
|
|
@@ -197,25 +209,29 @@ var blockControlsPlugin = exports.blockControlsPlugin = function blockControlsPl
|
|
|
197
209
|
isSelectedViaDragHandle: isSelectedViaDragHandle
|
|
198
210
|
}));
|
|
199
211
|
};
|
|
212
|
+
},
|
|
213
|
+
moveNodeWithBlockMenu: function moveNodeWithBlockMenu(direction) {
|
|
214
|
+
return (0, _moveNodeWithBlockMenu2.moveNodeWithBlockMenu)(api, direction);
|
|
200
215
|
}
|
|
201
216
|
},
|
|
202
217
|
getSharedState: function getSharedState(editorState) {
|
|
203
|
-
var _key$getState$isMenuO, _key$getState, _key$getState$menuTri, _key$getState2, _key$getState$
|
|
218
|
+
var _key$getState$isMenuO, _key$getState, _key$getState$menuTri, _key$getState2, _key$getState$blockMe, _key$getState3, _key$getState$activeN, _key$getState4, _key$getState$activeD, _key$getState5, _key$getState$isDragg, _key$getState6, _key$getState$isPMDra, _key$getState7, _key$getState$multiSe, _key$getState8, _key$getState$isShift, _key$getState9, _key$getState$lastDra, _key$getState0, _interactionTrackingP, _key$getState$isSelec, _key$getState1;
|
|
204
219
|
if (!editorState) {
|
|
205
220
|
return undefined;
|
|
206
221
|
}
|
|
207
222
|
var sharedState = {
|
|
208
223
|
isMenuOpen: (_key$getState$isMenuO = (_key$getState = _main.key.getState(editorState)) === null || _key$getState === void 0 ? void 0 : _key$getState.isMenuOpen) !== null && _key$getState$isMenuO !== void 0 ? _key$getState$isMenuO : false,
|
|
209
224
|
menuTriggerBy: (_key$getState$menuTri = (_key$getState2 = _main.key.getState(editorState)) === null || _key$getState2 === void 0 ? void 0 : _key$getState2.menuTriggerBy) !== null && _key$getState$menuTri !== void 0 ? _key$getState$menuTri : undefined,
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
225
|
+
blockMenuOptions: (_key$getState$blockMe = (_key$getState3 = _main.key.getState(editorState)) === null || _key$getState3 === void 0 ? void 0 : _key$getState3.blockMenuOptions) !== null && _key$getState$blockMe !== void 0 ? _key$getState$blockMe : undefined,
|
|
226
|
+
activeNode: (_key$getState$activeN = (_key$getState4 = _main.key.getState(editorState)) === null || _key$getState4 === void 0 ? void 0 : _key$getState4.activeNode) !== null && _key$getState$activeN !== void 0 ? _key$getState$activeN : undefined,
|
|
227
|
+
activeDropTargetNode: (_key$getState$activeD = (_key$getState5 = _main.key.getState(editorState)) === null || _key$getState5 === void 0 ? void 0 : _key$getState5.activeDropTargetNode) !== null && _key$getState$activeD !== void 0 ? _key$getState$activeD : undefined,
|
|
228
|
+
isDragging: (_key$getState$isDragg = (_key$getState6 = _main.key.getState(editorState)) === null || _key$getState6 === void 0 ? void 0 : _key$getState6.isDragging) !== null && _key$getState$isDragg !== void 0 ? _key$getState$isDragg : false,
|
|
229
|
+
isPMDragging: (_key$getState$isPMDra = (_key$getState7 = _main.key.getState(editorState)) === null || _key$getState7 === void 0 ? void 0 : _key$getState7.isPMDragging) !== null && _key$getState$isPMDra !== void 0 ? _key$getState$isPMDra : false,
|
|
230
|
+
multiSelectDnD: (_key$getState$multiSe = (_key$getState8 = _main.key.getState(editorState)) === null || _key$getState8 === void 0 ? void 0 : _key$getState8.multiSelectDnD) !== null && _key$getState$multiSe !== void 0 ? _key$getState$multiSe : undefined,
|
|
231
|
+
isShiftDown: (_key$getState$isShift = (_key$getState9 = _main.key.getState(editorState)) === null || _key$getState9 === void 0 ? void 0 : _key$getState9.isShiftDown) !== null && _key$getState$isShift !== void 0 ? _key$getState$isShift : undefined,
|
|
232
|
+
lastDragCancelled: (_key$getState$lastDra = (_key$getState0 = _main.key.getState(editorState)) === null || _key$getState0 === void 0 ? void 0 : _key$getState0.lastDragCancelled) !== null && _key$getState$lastDra !== void 0 ? _key$getState$lastDra : false,
|
|
217
233
|
isEditing: (_interactionTrackingP = _pmPlugin.interactionTrackingPluginKey.getState(editorState)) === null || _interactionTrackingP === void 0 ? void 0 : _interactionTrackingP.isEditing,
|
|
218
|
-
isSelectedViaDragHandle: (_key$getState$isSelec = (_key$
|
|
234
|
+
isSelectedViaDragHandle: (_key$getState$isSelec = (_key$getState1 = _main.key.getState(editorState)) === null || _key$getState1 === void 0 ? void 0 : _key$getState1.isSelectedViaDragHandle) !== null && _key$getState$isSelec !== void 0 ? _key$getState$isSelec : false
|
|
219
235
|
};
|
|
220
236
|
if ((0, _experiments.editorExperiment)('platform_editor_controls', 'variant1')) {
|
|
221
237
|
var _interactionTrackingP2, _interactionTrackingP3;
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.moveNodeWithBlockMenu = void 0;
|
|
7
|
+
var _analytics = require("@atlaskit/editor-common/analytics");
|
|
8
|
+
var _types = require("@atlaskit/editor-common/types");
|
|
9
|
+
var _moveNode = require("./move-node");
|
|
10
|
+
var _moveNodeUtils = require("./utils/move-node-utils");
|
|
11
|
+
var moveNodeWithBlockMenu = exports.moveNodeWithBlockMenu = function moveNodeWithBlockMenu(api, direction) {
|
|
12
|
+
return function (_ref) {
|
|
13
|
+
var tr = _ref.tr;
|
|
14
|
+
// Nodes like lists nest within themselves, we need to find the top most position
|
|
15
|
+
var currentNodePos = (0, _moveNodeUtils.getCurrentNodePosFromDragHandleSelection)({
|
|
16
|
+
selection: tr.selection,
|
|
17
|
+
schema: tr.doc.type.schema,
|
|
18
|
+
resolve: tr.doc.resolve.bind(tr.doc)
|
|
19
|
+
});
|
|
20
|
+
if (currentNodePos > -1) {
|
|
21
|
+
var $currentNodePos = tr.doc.resolve(currentNodePos);
|
|
22
|
+
var nodeAfterPos = $currentNodePos.posAtIndex($currentNodePos.index() + 1);
|
|
23
|
+
var moveToPos = direction === _types.DIRECTION.UP ? (0, _moveNodeUtils.getPosWhenMoveNodeUp)($currentNodePos, currentNodePos) : (0, _moveNodeUtils.getPosWhenMoveNodeDown)({
|
|
24
|
+
$currentNodePos: $currentNodePos,
|
|
25
|
+
nodeAfterPos: nodeAfterPos,
|
|
26
|
+
tr: tr
|
|
27
|
+
});
|
|
28
|
+
|
|
29
|
+
// only move the node if the destination is at the same depth, not support moving a nested node to a parent node
|
|
30
|
+
var shouldMoveNode = (0, _moveNodeUtils.getShouldMoveNode)({
|
|
31
|
+
currentNodePos: currentNodePos,
|
|
32
|
+
moveToPos: moveToPos,
|
|
33
|
+
tr: tr
|
|
34
|
+
});
|
|
35
|
+
if (shouldMoveNode) {
|
|
36
|
+
(0, _moveNode.moveNode)(api)(currentNodePos, moveToPos, _analytics.INPUT_METHOD.BLOCK_MENU)({
|
|
37
|
+
tr: tr
|
|
38
|
+
});
|
|
39
|
+
tr.scrollIntoView();
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
return tr;
|
|
43
|
+
};
|
|
44
|
+
};
|
|
@@ -11,6 +11,7 @@ var _expand = require("@atlaskit/editor-common/expand");
|
|
|
11
11
|
var _messages = require("@atlaskit/editor-common/messages");
|
|
12
12
|
var _selection = require("@atlaskit/editor-common/selection");
|
|
13
13
|
var _transforms = require("@atlaskit/editor-common/transforms");
|
|
14
|
+
var _types = require("@atlaskit/editor-common/types");
|
|
14
15
|
var _utils = require("@atlaskit/editor-common/utils");
|
|
15
16
|
var _model = require("@atlaskit/editor-prosemirror/model");
|
|
16
17
|
var _state = require("@atlaskit/editor-prosemirror/state");
|
|
@@ -20,13 +21,13 @@ var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
|
|
|
20
21
|
var _experiments = require("@atlaskit/tmp-editor-statsig/experiments");
|
|
21
22
|
var _main = require("../pm-plugins/main");
|
|
22
23
|
var _analytics2 = require("../pm-plugins/utils/analytics");
|
|
23
|
-
var _consts = require("../pm-plugins/utils/consts");
|
|
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
28
|
var _updateSelection = require("../pm-plugins/utils/update-selection");
|
|
29
29
|
var _validation = require("../pm-plugins/utils/validation");
|
|
30
|
+
var _moveNodeUtils = require("./utils/move-node-utils");
|
|
30
31
|
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; }
|
|
31
32
|
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; }
|
|
32
33
|
/**
|
|
@@ -118,7 +119,11 @@ var getCurrentNodePos = function getCurrentNodePos(state) {
|
|
|
118
119
|
// 3. the start of the selection is inside the node
|
|
119
120
|
currentNodePos = selection.$from.before(1);
|
|
120
121
|
if (selection.$from.depth > 0) {
|
|
121
|
-
currentNodePos = (0, _getNestedNodePosition.getNestedNodePosition)(
|
|
122
|
+
currentNodePos = (0, _getNestedNodePosition.getNestedNodePosition)({
|
|
123
|
+
selection: selection,
|
|
124
|
+
schema: state.schema,
|
|
125
|
+
resolve: state.doc.resolve.bind(state.doc)
|
|
126
|
+
});
|
|
122
127
|
}
|
|
123
128
|
}
|
|
124
129
|
return currentNodePos;
|
|
@@ -151,9 +156,8 @@ var moveNodeViaShortcut = exports.moveNodeViaShortcut = function moveNodeViaShor
|
|
|
151
156
|
var nodeAfterPos = isMultiSelectEnabled && !getFocusedHandle(state) ? Math.max(expandedAnchor, expandedHead) : $currentNodePos.posAtIndex($currentNodePos.index() + 1);
|
|
152
157
|
var isTopLevelNode = $currentNodePos.depth === 0;
|
|
153
158
|
var moveToPos = -1;
|
|
154
|
-
var nodeIndex = $currentNodePos.index();
|
|
155
159
|
var isLayoutColumnSelected = selection instanceof _state.NodeSelection && selection.node.type.name === 'layoutColumn';
|
|
156
|
-
if (direction ===
|
|
160
|
+
if (direction === _types.DIRECTION.LEFT) {
|
|
157
161
|
if (isTopLevelNode && (0, _experiments.editorExperiment)('advanced_layouts', true)) {
|
|
158
162
|
var _api$core, _api$core2;
|
|
159
163
|
var nodeBefore = $currentNodePos.nodeBefore;
|
|
@@ -197,7 +201,7 @@ var moveNodeViaShortcut = exports.moveNodeViaShortcut = function moveNodeViaShor
|
|
|
197
201
|
var previousNode = grandParent ? grandParent.maybeChild(index - 1) : null;
|
|
198
202
|
moveToPos = $currentNodePos.start() - ((previousNode === null || previousNode === void 0 ? void 0 : previousNode.nodeSize) || 1);
|
|
199
203
|
}
|
|
200
|
-
} else if (direction ===
|
|
204
|
+
} else if (direction === _types.DIRECTION.RIGHT) {
|
|
201
205
|
if (isTopLevelNode && (0, _experiments.editorExperiment)('advanced_layouts', true)) {
|
|
202
206
|
var _api$core4, _api$core5;
|
|
203
207
|
var endOfDoc = $currentNodePos.end();
|
|
@@ -245,14 +249,11 @@ var moveNodeViaShortcut = exports.moveNodeViaShortcut = function moveNodeViaShor
|
|
|
245
249
|
}
|
|
246
250
|
moveToPos = $currentNodePos.after($currentNodePos.depth) + 1;
|
|
247
251
|
}
|
|
248
|
-
} else if (direction ===
|
|
252
|
+
} else if (direction === _types.DIRECTION.UP) {
|
|
249
253
|
if (isLayoutColumnSelected) {
|
|
250
254
|
moveToPos = $currentNodePos.start() - 1;
|
|
251
255
|
} else {
|
|
252
|
-
|
|
253
|
-
if (_nodeBefore) {
|
|
254
|
-
moveToPos = currentNodePos - _nodeBefore.nodeSize;
|
|
255
|
-
}
|
|
256
|
+
moveToPos = (0, _moveNodeUtils.getPosWhenMoveNodeUp)($currentNodePos, currentNodePos);
|
|
256
257
|
}
|
|
257
258
|
} else {
|
|
258
259
|
var _endOfDoc = $currentNodePos.end();
|
|
@@ -262,11 +263,11 @@ var moveNodeViaShortcut = exports.moveNodeViaShortcut = function moveNodeViaShor
|
|
|
262
263
|
if (isLayoutColumnSelected) {
|
|
263
264
|
moveToPos = state.selection.$from.end() + 1;
|
|
264
265
|
} else {
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
}
|
|
266
|
+
moveToPos = (0, _moveNodeUtils.getPosWhenMoveNodeDown)({
|
|
267
|
+
$currentNodePos: $currentNodePos,
|
|
268
|
+
nodeAfterPos: nodeAfterPos,
|
|
269
|
+
tr: state.tr
|
|
270
|
+
});
|
|
270
271
|
}
|
|
271
272
|
}
|
|
272
273
|
var nodeType = (_state$doc$nodeAt = state.doc.nodeAt(currentNodePos)) === null || _state$doc$nodeAt === void 0 ? void 0 : _state$doc$nodeAt.type.name;
|
|
@@ -37,7 +37,11 @@ var findParentPosForHandle = function findParentPosForHandle(state) {
|
|
|
37
37
|
}
|
|
38
38
|
|
|
39
39
|
// else find closest parent node
|
|
40
|
-
return (0, _getNestedNodePosition.getNestedNodePosition)(
|
|
40
|
+
return (0, _getNestedNodePosition.getNestedNodePosition)({
|
|
41
|
+
selection: state.selection,
|
|
42
|
+
schema: state.schema,
|
|
43
|
+
resolve: state.doc.resolve.bind(state.doc)
|
|
44
|
+
});
|
|
41
45
|
};
|
|
42
46
|
var findNextAnchorDecoration = function findNextAnchorDecoration(state) {
|
|
43
47
|
var decorations = (0, _main.getDecorations)(state);
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.getShouldMoveNode = exports.getPosWhenMoveNodeUp = exports.getPosWhenMoveNodeDown = exports.getCurrentNodePosFromDragHandleSelection = exports.canMoveNodeUpOrDown = void 0;
|
|
7
|
+
var _selection = require("@atlaskit/editor-common/selection");
|
|
8
|
+
var _utils = require("@atlaskit/editor-tables/utils");
|
|
9
|
+
var _getNestedNodePosition = require("../../pm-plugins/utils/getNestedNodePosition");
|
|
10
|
+
var getCurrentNodePosFromDragHandleSelection = exports.getCurrentNodePosFromDragHandleSelection = function getCurrentNodePosFromDragHandleSelection(_ref) {
|
|
11
|
+
var selection = _ref.selection,
|
|
12
|
+
schema = _ref.schema,
|
|
13
|
+
resolve = _ref.resolve;
|
|
14
|
+
var currentNodePos = -1;
|
|
15
|
+
if ((0, _utils.isTableSelected)(selection)) {
|
|
16
|
+
var _findTable$pos, _findTable;
|
|
17
|
+
// We only move table node if it's fully selected
|
|
18
|
+
// to avoid shortcut collision with table drag and drop
|
|
19
|
+
currentNodePos = (_findTable$pos = (_findTable = (0, _utils.findTable)(selection)) === null || _findTable === void 0 ? void 0 : _findTable.pos) !== null && _findTable$pos !== void 0 ? _findTable$pos : currentNodePos;
|
|
20
|
+
} else if (!(selection instanceof _selection.GapCursorSelection)) {
|
|
21
|
+
// 2. caret cursor is inside the node
|
|
22
|
+
// 3. the start of the selection is inside the node
|
|
23
|
+
currentNodePos = selection.$from.before(1);
|
|
24
|
+
if (selection.$from.depth > 0) {
|
|
25
|
+
currentNodePos = (0, _getNestedNodePosition.getNestedNodePosition)({
|
|
26
|
+
selection: selection,
|
|
27
|
+
schema: schema,
|
|
28
|
+
resolve: resolve
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
return currentNodePos;
|
|
33
|
+
};
|
|
34
|
+
var getPosWhenMoveNodeUp = exports.getPosWhenMoveNodeUp = function getPosWhenMoveNodeUp($currentNodePos, currentNodePos) {
|
|
35
|
+
var nodeIndex = $currentNodePos.index();
|
|
36
|
+
var nodeBefore = $currentNodePos.depth > 1 && nodeIndex === 0 ? $currentNodePos.node($currentNodePos.depth) : $currentNodePos.nodeBefore;
|
|
37
|
+
return nodeBefore ? currentNodePos - nodeBefore.nodeSize : -1;
|
|
38
|
+
};
|
|
39
|
+
var getPosWhenMoveNodeDown = exports.getPosWhenMoveNodeDown = function getPosWhenMoveNodeDown(_ref2) {
|
|
40
|
+
var $currentNodePos = _ref2.$currentNodePos,
|
|
41
|
+
nodeAfterPos = _ref2.nodeAfterPos,
|
|
42
|
+
tr = _ref2.tr;
|
|
43
|
+
var endOfDoc = $currentNodePos.end();
|
|
44
|
+
if (nodeAfterPos > endOfDoc) {
|
|
45
|
+
return -1;
|
|
46
|
+
}
|
|
47
|
+
var nodeAfter = tr.doc.nodeAt(nodeAfterPos);
|
|
48
|
+
|
|
49
|
+
// if not the last node, move to the end of the next node
|
|
50
|
+
return nodeAfter ? nodeAfterPos + nodeAfter.nodeSize : -1;
|
|
51
|
+
};
|
|
52
|
+
var getShouldMoveNode = exports.getShouldMoveNode = function getShouldMoveNode(_ref3) {
|
|
53
|
+
var currentNodePos = _ref3.currentNodePos,
|
|
54
|
+
moveToPos = _ref3.moveToPos,
|
|
55
|
+
tr = _ref3.tr;
|
|
56
|
+
// only move the node if the destination is at the same depth, not support moving a nested node to a parent node
|
|
57
|
+
return moveToPos > -1 && tr.doc.resolve(currentNodePos).depth === tr.doc.resolve(moveToPos).depth;
|
|
58
|
+
};
|
|
59
|
+
var canMoveNodeUpOrDown = exports.canMoveNodeUpOrDown = function canMoveNodeUpOrDown(tr) {
|
|
60
|
+
var currentNodePos = getCurrentNodePosFromDragHandleSelection({
|
|
61
|
+
selection: tr.selection,
|
|
62
|
+
schema: tr.doc.type.schema,
|
|
63
|
+
resolve: tr.doc.resolve.bind(tr.doc)
|
|
64
|
+
});
|
|
65
|
+
if (currentNodePos <= -1) {
|
|
66
|
+
return {
|
|
67
|
+
moveUp: false,
|
|
68
|
+
moveDown: false
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
var $currentNodePos = tr.doc.resolve(currentNodePos);
|
|
72
|
+
var nodeAfterPos = $currentNodePos.posAtIndex($currentNodePos.index() + 1);
|
|
73
|
+
var moveUpPos = getPosWhenMoveNodeUp($currentNodePos, currentNodePos);
|
|
74
|
+
var moveDownPos = getPosWhenMoveNodeDown({
|
|
75
|
+
$currentNodePos: $currentNodePos,
|
|
76
|
+
nodeAfterPos: nodeAfterPos,
|
|
77
|
+
tr: tr
|
|
78
|
+
});
|
|
79
|
+
return {
|
|
80
|
+
moveUp: getShouldMoveNode({
|
|
81
|
+
currentNodePos: currentNodePos,
|
|
82
|
+
moveToPos: moveUpPos,
|
|
83
|
+
tr: tr
|
|
84
|
+
}),
|
|
85
|
+
moveDown: getShouldMoveNode({
|
|
86
|
+
currentNodePos: currentNodePos,
|
|
87
|
+
moveToPos: moveDownPos,
|
|
88
|
+
tr: tr
|
|
89
|
+
})
|
|
90
|
+
};
|
|
91
|
+
};
|
|
@@ -5,11 +5,11 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.boundKeydownHandler = void 0;
|
|
7
7
|
var _keymaps = require("@atlaskit/editor-common/keymaps");
|
|
8
|
+
var _types = require("@atlaskit/editor-common/types");
|
|
8
9
|
var _keymap = require("@atlaskit/editor-prosemirror/keymap");
|
|
9
10
|
var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
|
|
10
11
|
var _moveNode = require("../editor-commands/move-node");
|
|
11
12
|
var _showDragHandle = require("../editor-commands/show-drag-handle");
|
|
12
|
-
var _consts = require("./utils/consts");
|
|
13
13
|
function keymapList(api, formatMessage) {
|
|
14
14
|
var keymapList = {};
|
|
15
15
|
if (api && (0, _platformFeatureFlags.fg)('platform_editor_element_drag_and_drop_ed_23873')) {
|
|
@@ -24,19 +24,19 @@ function keymapList(api, formatMessage) {
|
|
|
24
24
|
(0, _keymaps.bindKeymapWithCommand)(
|
|
25
25
|
// Ignored via go/ees005
|
|
26
26
|
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
27
|
-
_keymaps.dragToMoveUp.common, (0, _moveNode.moveNodeViaShortcut)(api,
|
|
27
|
+
_keymaps.dragToMoveUp.common, (0, _moveNode.moveNodeViaShortcut)(api, _types.DIRECTION.UP, formatMessage), keymapList);
|
|
28
28
|
(0, _keymaps.bindKeymapWithCommand)(
|
|
29
29
|
// Ignored via go/ees005
|
|
30
30
|
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
31
|
-
_keymaps.dragToMoveDown.common, (0, _moveNode.moveNodeViaShortcut)(api,
|
|
31
|
+
_keymaps.dragToMoveDown.common, (0, _moveNode.moveNodeViaShortcut)(api, _types.DIRECTION.DOWN, formatMessage), keymapList);
|
|
32
32
|
(0, _keymaps.bindKeymapWithCommand)(
|
|
33
33
|
// Ignored via go/ees005
|
|
34
34
|
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
35
|
-
_keymaps.dragToMoveLeft.common, (0, _moveNode.moveNodeViaShortcut)(api,
|
|
35
|
+
_keymaps.dragToMoveLeft.common, (0, _moveNode.moveNodeViaShortcut)(api, _types.DIRECTION.LEFT, formatMessage), keymapList);
|
|
36
36
|
(0, _keymaps.bindKeymapWithCommand)(
|
|
37
37
|
// Ignored via go/ees005
|
|
38
38
|
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
39
|
-
_keymaps.dragToMoveRight.common, (0, _moveNode.moveNodeViaShortcut)(api,
|
|
39
|
+
_keymaps.dragToMoveRight.common, (0, _moveNode.moveNodeViaShortcut)(api, _types.DIRECTION.RIGHT, formatMessage), keymapList);
|
|
40
40
|
}
|
|
41
41
|
return keymapList;
|
|
42
42
|
}
|
|
@@ -239,7 +239,7 @@ var getDecorationAtPos = function getDecorationAtPos(state, decorations, pos, to
|
|
|
239
239
|
return nodeDecAtActivePos;
|
|
240
240
|
};
|
|
241
241
|
var _apply = exports.apply = function apply(api, formatMessage, tr, currentState, newState, flags, nodeViewPortalProviderAPI, anchorRectCache, resizeObserverWidth, pragmaticCleanup) {
|
|
242
|
-
var _api$limitedMode, _meta$multiSelectDnD, _activeNode, _activeNode2, _meta$activeNode$hand, _activeNode3, _activeNode4, _meta$isDragging2, _meta$isDragging3, _meta$toggleMenu, _meta$editorHeight, _meta$editorWidthLeft, _meta$editorWidthRigh, _meta$isPMDragging, _meta$isShiftDown, _meta$lastDragCancell;
|
|
242
|
+
var _api$limitedMode, _meta$multiSelectDnD, _activeNode, _activeNode2, _meta$activeNode$hand, _activeNode3, _activeNode4, _meta$isDragging2, _meta$isDragging3, _meta$toggleMenu, _meta$toggleMenu2, _meta$toggleMenu3, _meta$toggleMenu4, _meta$toggleMenu5, _meta$editorHeight, _meta$editorWidthLeft, _meta$editorWidthRigh, _meta$isPMDragging, _meta$isShiftDown, _meta$lastDragCancell;
|
|
243
243
|
var activeNode = currentState.activeNode,
|
|
244
244
|
decorations = currentState.decorations,
|
|
245
245
|
isResizerResizing = currentState.isResizerResizing,
|
|
@@ -250,6 +250,7 @@ var _apply = exports.apply = function apply(api, formatMessage, tr, currentState
|
|
|
250
250
|
isDragging = currentState.isDragging,
|
|
251
251
|
isMenuOpen = currentState.isMenuOpen,
|
|
252
252
|
menuTriggerBy = currentState.menuTriggerBy,
|
|
253
|
+
blockMenuOptions = currentState.blockMenuOptions,
|
|
253
254
|
isPMDragging = currentState.isPMDragging,
|
|
254
255
|
isShiftDown = currentState.isShiftDown,
|
|
255
256
|
lastDragCancelled = currentState.lastDragCancelled,
|
|
@@ -540,6 +541,10 @@ var _apply = exports.apply = function apply(api, formatMessage, tr, currentState
|
|
|
540
541
|
isDragging: (_meta$isDragging3 = meta === null || meta === void 0 ? void 0 : meta.isDragging) !== null && _meta$isDragging3 !== void 0 ? _meta$isDragging3 : isDragging,
|
|
541
542
|
isMenuOpen: isMenuOpenNew,
|
|
542
543
|
menuTriggerBy: (0, _experiments.editorExperiment)('platform_editor_controls', 'variant1') || (0, _expValEqualsNoExposure.expValEqualsNoExposure)('platform_editor_block_menu', 'isEnabled', true) ? (meta === null || meta === void 0 || (_meta$toggleMenu = meta.toggleMenu) === null || _meta$toggleMenu === void 0 ? void 0 : _meta$toggleMenu.anchorName) || menuTriggerBy : undefined,
|
|
544
|
+
blockMenuOptions: (0, _expValEqualsNoExposure.expValEqualsNoExposure)('platform_editor_block_menu', 'isEnabled', true) ? {
|
|
545
|
+
canMoveUp: (meta === null || meta === void 0 || (_meta$toggleMenu2 = meta.toggleMenu) === null || _meta$toggleMenu2 === void 0 ? void 0 : _meta$toggleMenu2.moveUp) !== undefined ? meta === null || meta === void 0 || (_meta$toggleMenu3 = meta.toggleMenu) === null || _meta$toggleMenu3 === void 0 ? void 0 : _meta$toggleMenu3.moveUp : blockMenuOptions === null || blockMenuOptions === void 0 ? void 0 : blockMenuOptions.canMoveUp,
|
|
546
|
+
canMoveDown: (meta === null || meta === void 0 || (_meta$toggleMenu4 = meta.toggleMenu) === null || _meta$toggleMenu4 === void 0 ? void 0 : _meta$toggleMenu4.moveDown) !== undefined ? meta === null || meta === void 0 || (_meta$toggleMenu5 = meta.toggleMenu) === null || _meta$toggleMenu5 === void 0 ? void 0 : _meta$toggleMenu5.moveDown : blockMenuOptions === null || blockMenuOptions === void 0 ? void 0 : blockMenuOptions.canMoveDown
|
|
547
|
+
} : undefined,
|
|
543
548
|
editorHeight: (_meta$editorHeight = meta === null || meta === void 0 ? void 0 : meta.editorHeight) !== null && _meta$editorHeight !== void 0 ? _meta$editorHeight : editorHeight,
|
|
544
549
|
editorWidthLeft: (_meta$editorWidthLeft = meta === null || meta === void 0 ? void 0 : meta.editorWidthLeft) !== null && _meta$editorWidthLeft !== void 0 ? _meta$editorWidthLeft : editorWidthLeft,
|
|
545
550
|
editorWidthRight: (_meta$editorWidthRigh = meta === null || meta === void 0 ? void 0 : meta.editorWidthRight) !== null && _meta$editorWidthRigh !== void 0 ? _meta$editorWidthRigh : editorWidthRight,
|
|
@@ -3,15 +3,8 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.maxLayoutColumnSupported = exports.MIN_LAYOUT_COLUMN =
|
|
6
|
+
exports.maxLayoutColumnSupported = exports.MIN_LAYOUT_COLUMN = void 0;
|
|
7
7
|
var _experiments = require("@atlaskit/tmp-editor-statsig/experiments");
|
|
8
|
-
var DIRECTION = exports.DIRECTION = /*#__PURE__*/function (DIRECTION) {
|
|
9
|
-
DIRECTION["UP"] = "up";
|
|
10
|
-
DIRECTION["DOWN"] = "down";
|
|
11
|
-
DIRECTION["LEFT"] = "left";
|
|
12
|
-
DIRECTION["RIGHT"] = "right";
|
|
13
|
-
return DIRECTION;
|
|
14
|
-
}({});
|
|
15
8
|
var maxLayoutColumnSupported = exports.maxLayoutColumnSupported = function maxLayoutColumnSupported() {
|
|
16
9
|
return (0, _experiments.editorExperiment)('advanced_layouts', true) ? 5 : 3;
|
|
17
10
|
};
|
|
@@ -6,16 +6,18 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
exports.getNestedNodePosition = void 0;
|
|
7
7
|
var _state = require("@atlaskit/editor-prosemirror/state");
|
|
8
8
|
var _utils = require("@atlaskit/editor-prosemirror/utils");
|
|
9
|
-
var getNestedNodePosition = exports.getNestedNodePosition = function getNestedNodePosition(
|
|
10
|
-
var selection =
|
|
9
|
+
var getNestedNodePosition = exports.getNestedNodePosition = function getNestedNodePosition(_ref) {
|
|
10
|
+
var selection = _ref.selection,
|
|
11
|
+
schema = _ref.schema,
|
|
12
|
+
resolve = _ref.resolve;
|
|
11
13
|
var nestedNodePos = selection.$from.before(1);
|
|
12
14
|
if (selection instanceof _state.TextSelection) {
|
|
13
15
|
nestedNodePos = selection.$from.before();
|
|
14
|
-
var $pos =
|
|
16
|
+
var $pos = resolve(nestedNodePos);
|
|
15
17
|
if ($pos.depth < 1) {
|
|
16
18
|
return nestedNodePos;
|
|
17
19
|
}
|
|
18
|
-
var parentNodeOfSpecificTypes = (0, _utils.findParentNodeOfType)([
|
|
20
|
+
var parentNodeOfSpecificTypes = (0, _utils.findParentNodeOfType)([schema.nodes.bulletList, schema.nodes.orderedList, schema.nodes.blockquote, schema.nodes.taskList, schema.nodes.decisionList])(selection);
|
|
19
21
|
if (parentNodeOfSpecificTypes) {
|
|
20
22
|
var parentNodeType = parentNodeOfSpecificTypes.node.type.name;
|
|
21
23
|
nestedNodePos = ['bulletList', 'orderedList'].includes(parentNodeType) ? $pos.before($pos.depth - 1) : ['blockquote', 'taskList', 'decisionList'].includes(parentNodeType) ? $pos.before() : nestedNodePos;
|
|
@@ -8,13 +8,13 @@ exports.menuItemsCallback = exports.getBlockMenuItems = void 0;
|
|
|
8
8
|
var _react = require("@emotion/react");
|
|
9
9
|
var _keymaps = require("@atlaskit/editor-common/keymaps");
|
|
10
10
|
var _messages = require("@atlaskit/editor-common/messages");
|
|
11
|
+
var _types = require("@atlaskit/editor-common/types");
|
|
11
12
|
var _shortcut = require("@atlaskit/editor-shared-styles/shortcut");
|
|
12
13
|
var _arrowDown = _interopRequireDefault(require("@atlaskit/icon/core/arrow-down"));
|
|
13
14
|
var _arrowLeft = _interopRequireDefault(require("@atlaskit/icon/core/arrow-left"));
|
|
14
15
|
var _arrowRight = _interopRequireDefault(require("@atlaskit/icon/core/arrow-right"));
|
|
15
16
|
var _arrowUp = _interopRequireDefault(require("@atlaskit/icon/core/arrow-up"));
|
|
16
17
|
var _moveNode = require("../editor-commands/move-node");
|
|
17
|
-
var _consts = require("../pm-plugins/utils/consts");
|
|
18
18
|
/* eslint-disable @atlaskit/design-system/prefer-primitives */
|
|
19
19
|
/**
|
|
20
20
|
* @jsxRuntime classic
|
|
@@ -82,9 +82,9 @@ var getBlockMenuItems = exports.getBlockMenuItems = function getBlockMenuItems(f
|
|
|
82
82
|
};
|
|
83
83
|
var menuItemsCallback = exports.menuItemsCallback = {
|
|
84
84
|
moveUp: function moveUp(api, formatMessage) {
|
|
85
|
-
return (0, _moveNode.moveNodeViaShortcut)(api,
|
|
85
|
+
return (0, _moveNode.moveNodeViaShortcut)(api, _types.DIRECTION.UP, formatMessage);
|
|
86
86
|
},
|
|
87
87
|
moveDown: function moveDown(api, formatMessage) {
|
|
88
|
-
return (0, _moveNode.moveNodeViaShortcut)(api,
|
|
88
|
+
return (0, _moveNode.moveNodeViaShortcut)(api, _types.DIRECTION.DOWN, formatMessage);
|
|
89
89
|
}
|
|
90
90
|
};
|
|
@@ -5,7 +5,9 @@ import { fg } from '@atlaskit/platform-feature-flags';
|
|
|
5
5
|
import { expValEqualsNoExposure } from '@atlaskit/tmp-editor-statsig/exp-val-equals-no-exposure';
|
|
6
6
|
import { editorExperiment } from '@atlaskit/tmp-editor-statsig/experiments';
|
|
7
7
|
import { moveNode } from './editor-commands/move-node';
|
|
8
|
+
import { moveNodeWithBlockMenu } from './editor-commands/move-node-with-block-menu';
|
|
8
9
|
import { moveToLayout } from './editor-commands/move-to-layout';
|
|
10
|
+
import { canMoveNodeUpOrDown } from './editor-commands/utils/move-node-utils';
|
|
9
11
|
import { firstNodeDecPlugin } from './pm-plugins/first-node-dec-plugin';
|
|
10
12
|
import { createInteractionTrackingPlugin, interactionTrackingPluginKey } from './pm-plugins/interaction-tracking/pm-plugin';
|
|
11
13
|
import { createPlugin, key } from './pm-plugins/main';
|
|
@@ -80,13 +82,25 @@ export const blockControlsPlugin = ({
|
|
|
80
82
|
});
|
|
81
83
|
return tr;
|
|
82
84
|
}
|
|
85
|
+
let toggleMenuMeta = {
|
|
86
|
+
anchorName: options === null || options === void 0 ? void 0 : options.anchorName
|
|
87
|
+
};
|
|
88
|
+
const menuTriggerBy = api === null || api === void 0 ? void 0 : (_api$blockControls = api.blockControls) === null || _api$blockControls === void 0 ? void 0 : (_api$blockControls$sh = _api$blockControls.sharedState.currentState()) === null || _api$blockControls$sh === void 0 ? void 0 : _api$blockControls$sh.menuTriggerBy;
|
|
89
|
+
if (options !== null && options !== void 0 && options.anchorName) {
|
|
90
|
+
const {
|
|
91
|
+
moveUp,
|
|
92
|
+
moveDown
|
|
93
|
+
} = canMoveNodeUpOrDown(tr);
|
|
94
|
+
toggleMenuMeta = {
|
|
95
|
+
...toggleMenuMeta,
|
|
96
|
+
moveUp,
|
|
97
|
+
moveDown
|
|
98
|
+
};
|
|
99
|
+
}
|
|
83
100
|
tr.setMeta(key, {
|
|
84
101
|
...currMeta,
|
|
85
|
-
toggleMenu:
|
|
86
|
-
anchorName: options === null || options === void 0 ? void 0 : options.anchorName
|
|
87
|
-
}
|
|
102
|
+
toggleMenu: toggleMenuMeta
|
|
88
103
|
});
|
|
89
|
-
const menuTriggerBy = api === null || api === void 0 ? void 0 : (_api$blockControls = api.blockControls) === null || _api$blockControls === void 0 ? void 0 : (_api$blockControls$sh = _api$blockControls.sharedState.currentState()) === null || _api$blockControls$sh === void 0 ? void 0 : _api$blockControls$sh.menuTriggerBy;
|
|
90
104
|
if (menuTriggerBy === undefined || !!menuTriggerBy && menuTriggerBy === (options === null || options === void 0 ? void 0 : options.anchorName)) {
|
|
91
105
|
var _api$userIntent, _api$userIntent$share;
|
|
92
106
|
// Toggled from drag handle
|
|
@@ -189,25 +203,29 @@ export const blockControlsPlugin = ({
|
|
|
189
203
|
...currMeta,
|
|
190
204
|
isSelectedViaDragHandle
|
|
191
205
|
});
|
|
206
|
+
},
|
|
207
|
+
moveNodeWithBlockMenu: direction => {
|
|
208
|
+
return moveNodeWithBlockMenu(api, direction);
|
|
192
209
|
}
|
|
193
210
|
},
|
|
194
211
|
getSharedState(editorState) {
|
|
195
|
-
var _key$getState$isMenuO, _key$getState, _key$getState$menuTri, _key$getState2, _key$getState$
|
|
212
|
+
var _key$getState$isMenuO, _key$getState, _key$getState$menuTri, _key$getState2, _key$getState$blockMe, _key$getState3, _key$getState$activeN, _key$getState4, _key$getState$activeD, _key$getState5, _key$getState$isDragg, _key$getState6, _key$getState$isPMDra, _key$getState7, _key$getState$multiSe, _key$getState8, _key$getState$isShift, _key$getState9, _key$getState$lastDra, _key$getState0, _interactionTrackingP, _key$getState$isSelec, _key$getState1;
|
|
196
213
|
if (!editorState) {
|
|
197
214
|
return undefined;
|
|
198
215
|
}
|
|
199
216
|
const sharedState = {
|
|
200
217
|
isMenuOpen: (_key$getState$isMenuO = (_key$getState = key.getState(editorState)) === null || _key$getState === void 0 ? void 0 : _key$getState.isMenuOpen) !== null && _key$getState$isMenuO !== void 0 ? _key$getState$isMenuO : false,
|
|
201
218
|
menuTriggerBy: (_key$getState$menuTri = (_key$getState2 = key.getState(editorState)) === null || _key$getState2 === void 0 ? void 0 : _key$getState2.menuTriggerBy) !== null && _key$getState$menuTri !== void 0 ? _key$getState$menuTri : undefined,
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
219
|
+
blockMenuOptions: (_key$getState$blockMe = (_key$getState3 = key.getState(editorState)) === null || _key$getState3 === void 0 ? void 0 : _key$getState3.blockMenuOptions) !== null && _key$getState$blockMe !== void 0 ? _key$getState$blockMe : undefined,
|
|
220
|
+
activeNode: (_key$getState$activeN = (_key$getState4 = key.getState(editorState)) === null || _key$getState4 === void 0 ? void 0 : _key$getState4.activeNode) !== null && _key$getState$activeN !== void 0 ? _key$getState$activeN : undefined,
|
|
221
|
+
activeDropTargetNode: (_key$getState$activeD = (_key$getState5 = key.getState(editorState)) === null || _key$getState5 === void 0 ? void 0 : _key$getState5.activeDropTargetNode) !== null && _key$getState$activeD !== void 0 ? _key$getState$activeD : undefined,
|
|
222
|
+
isDragging: (_key$getState$isDragg = (_key$getState6 = key.getState(editorState)) === null || _key$getState6 === void 0 ? void 0 : _key$getState6.isDragging) !== null && _key$getState$isDragg !== void 0 ? _key$getState$isDragg : false,
|
|
223
|
+
isPMDragging: (_key$getState$isPMDra = (_key$getState7 = key.getState(editorState)) === null || _key$getState7 === void 0 ? void 0 : _key$getState7.isPMDragging) !== null && _key$getState$isPMDra !== void 0 ? _key$getState$isPMDra : false,
|
|
224
|
+
multiSelectDnD: (_key$getState$multiSe = (_key$getState8 = key.getState(editorState)) === null || _key$getState8 === void 0 ? void 0 : _key$getState8.multiSelectDnD) !== null && _key$getState$multiSe !== void 0 ? _key$getState$multiSe : undefined,
|
|
225
|
+
isShiftDown: (_key$getState$isShift = (_key$getState9 = key.getState(editorState)) === null || _key$getState9 === void 0 ? void 0 : _key$getState9.isShiftDown) !== null && _key$getState$isShift !== void 0 ? _key$getState$isShift : undefined,
|
|
226
|
+
lastDragCancelled: (_key$getState$lastDra = (_key$getState0 = key.getState(editorState)) === null || _key$getState0 === void 0 ? void 0 : _key$getState0.lastDragCancelled) !== null && _key$getState$lastDra !== void 0 ? _key$getState$lastDra : false,
|
|
209
227
|
isEditing: (_interactionTrackingP = interactionTrackingPluginKey.getState(editorState)) === null || _interactionTrackingP === void 0 ? void 0 : _interactionTrackingP.isEditing,
|
|
210
|
-
isSelectedViaDragHandle: (_key$getState$isSelec = (_key$
|
|
228
|
+
isSelectedViaDragHandle: (_key$getState$isSelec = (_key$getState1 = key.getState(editorState)) === null || _key$getState1 === void 0 ? void 0 : _key$getState1.isSelectedViaDragHandle) !== null && _key$getState$isSelec !== void 0 ? _key$getState$isSelec : false
|
|
211
229
|
};
|
|
212
230
|
if (editorExperiment('platform_editor_controls', 'variant1')) {
|
|
213
231
|
var _interactionTrackingP2, _interactionTrackingP3;
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { INPUT_METHOD } from '@atlaskit/editor-common/analytics';
|
|
2
|
+
import { DIRECTION } from '@atlaskit/editor-common/types';
|
|
3
|
+
import { moveNode } from './move-node';
|
|
4
|
+
import { getCurrentNodePosFromDragHandleSelection, getPosWhenMoveNodeDown, getPosWhenMoveNodeUp, getShouldMoveNode } from './utils/move-node-utils';
|
|
5
|
+
export const moveNodeWithBlockMenu = (api, direction) => {
|
|
6
|
+
return ({
|
|
7
|
+
tr
|
|
8
|
+
}) => {
|
|
9
|
+
// Nodes like lists nest within themselves, we need to find the top most position
|
|
10
|
+
const currentNodePos = getCurrentNodePosFromDragHandleSelection({
|
|
11
|
+
selection: tr.selection,
|
|
12
|
+
schema: tr.doc.type.schema,
|
|
13
|
+
resolve: tr.doc.resolve.bind(tr.doc)
|
|
14
|
+
});
|
|
15
|
+
if (currentNodePos > -1) {
|
|
16
|
+
const $currentNodePos = tr.doc.resolve(currentNodePos);
|
|
17
|
+
const nodeAfterPos = $currentNodePos.posAtIndex($currentNodePos.index() + 1);
|
|
18
|
+
const moveToPos = direction === DIRECTION.UP ? getPosWhenMoveNodeUp($currentNodePos, currentNodePos) : getPosWhenMoveNodeDown({
|
|
19
|
+
$currentNodePos,
|
|
20
|
+
nodeAfterPos,
|
|
21
|
+
tr
|
|
22
|
+
});
|
|
23
|
+
|
|
24
|
+
// only move the node if the destination is at the same depth, not support moving a nested node to a parent node
|
|
25
|
+
const shouldMoveNode = getShouldMoveNode({
|
|
26
|
+
currentNodePos,
|
|
27
|
+
moveToPos,
|
|
28
|
+
tr
|
|
29
|
+
});
|
|
30
|
+
if (shouldMoveNode) {
|
|
31
|
+
moveNode(api)(currentNodePos, moveToPos, INPUT_METHOD.BLOCK_MENU)({
|
|
32
|
+
tr
|
|
33
|
+
});
|
|
34
|
+
tr.scrollIntoView();
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
return tr;
|
|
38
|
+
};
|
|
39
|
+
};
|