@atlaskit/editor-plugin-block-controls 3.0.1 → 3.1.1
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 +20 -0
- package/dist/cjs/blockControlsPlugin.js +27 -14
- package/dist/cjs/editor-commands/move-node.js +15 -18
- package/dist/cjs/pm-plugins/main.js +94 -37
- package/dist/cjs/pm-plugins/utils/getSelection.js +1 -1
- package/dist/cjs/pm-plugins/utils/selection.js +34 -4
- package/dist/cjs/ui/consts.js +9 -1
- package/dist/cjs/ui/drag-handle.js +68 -35
- package/dist/es2019/blockControlsPlugin.js +27 -14
- package/dist/es2019/editor-commands/move-node.js +17 -20
- package/dist/es2019/pm-plugins/main.js +91 -26
- package/dist/es2019/pm-plugins/utils/getSelection.js +1 -1
- package/dist/es2019/pm-plugins/utils/selection.js +33 -3
- package/dist/es2019/ui/consts.js +8 -0
- package/dist/es2019/ui/drag-handle.js +58 -29
- package/dist/esm/blockControlsPlugin.js +27 -14
- package/dist/esm/editor-commands/move-node.js +16 -19
- package/dist/esm/pm-plugins/main.js +92 -35
- package/dist/esm/pm-plugins/utils/getSelection.js +1 -1
- package/dist/esm/pm-plugins/utils/selection.js +33 -3
- package/dist/esm/ui/consts.js +8 -0
- package/dist/esm/ui/drag-handle.js +69 -36
- package/dist/types/blockControlsPluginType.d.ts +2 -0
- package/dist/types/pm-plugins/main.d.ts +2 -1
- package/dist/types/pm-plugins/utils/selection.d.ts +13 -1
- package/dist/types/ui/consts.d.ts +7 -0
- package/dist/types-ts4.5/blockControlsPluginType.d.ts +2 -0
- package/dist/types-ts4.5/pm-plugins/main.d.ts +2 -1
- package/dist/types-ts4.5/pm-plugins/utils/selection.d.ts +13 -1
- package/dist/types-ts4.5/ui/consts.d.ts +7 -0
- package/package.json +5 -5
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,25 @@
|
|
|
1
1
|
# @atlaskit/editor-plugin-block-controls
|
|
2
2
|
|
|
3
|
+
## 3.1.1
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- [#117391](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/pull-requests/117391)
|
|
8
|
+
[`1655b74fcb544`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/1655b74fcb544) -
|
|
9
|
+
Fix drop table on table trigger native dnd
|
|
10
|
+
|
|
11
|
+
## 3.1.0
|
|
12
|
+
|
|
13
|
+
### Minor Changes
|
|
14
|
+
|
|
15
|
+
- [#117917](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/pull-requests/117917)
|
|
16
|
+
[`9d7669d4f5295`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/9d7669d4f5295) -
|
|
17
|
+
[ux] Add shift-select functionality to DnD
|
|
18
|
+
|
|
19
|
+
### Patch Changes
|
|
20
|
+
|
|
21
|
+
- Updated dependencies
|
|
22
|
+
|
|
3
23
|
## 3.0.1
|
|
4
24
|
|
|
5
25
|
### Patch Changes
|
|
@@ -13,6 +13,7 @@ var _experiments = require("@atlaskit/tmp-editor-statsig/experiments");
|
|
|
13
13
|
var _moveNode = require("./editor-commands/move-node");
|
|
14
14
|
var _moveToLayout = require("./editor-commands/move-to-layout");
|
|
15
15
|
var _main = require("./pm-plugins/main");
|
|
16
|
+
var _getSelection = require("./pm-plugins/utils/getSelection");
|
|
16
17
|
var _blockMenu = _interopRequireDefault(require("./ui/block-menu"));
|
|
17
18
|
var _dragHandleMenu = require("./ui/drag-handle-menu");
|
|
18
19
|
var _globalStyles = require("./ui/global-styles");
|
|
@@ -88,29 +89,40 @@ var blockControlsPlugin = exports.blockControlsPlugin = function blockControlsPl
|
|
|
88
89
|
},
|
|
89
90
|
setMultiSelectPositions: function setMultiSelectPositions(anchor, head) {
|
|
90
91
|
return function (_ref6) {
|
|
91
|
-
var _api$selection;
|
|
92
|
+
var _api$selection, _$to$nodeBefore, _$from$nodeAfter;
|
|
92
93
|
var tr = _ref6.tr;
|
|
93
94
|
var _tr$selection = tr.selection,
|
|
94
95
|
userAnchor = _tr$selection.anchor,
|
|
95
96
|
userHead = _tr$selection.head;
|
|
96
|
-
var expandedAnchor, expandedHead;
|
|
97
|
+
var $expandedAnchor, $expandedHead;
|
|
97
98
|
if (anchor !== undefined && head !== undefined) {
|
|
98
|
-
expandedAnchor = tr.doc.resolve(anchor);
|
|
99
|
-
expandedHead = tr.doc.resolve(head);
|
|
99
|
+
$expandedAnchor = tr.doc.resolve(anchor);
|
|
100
|
+
$expandedHead = tr.doc.resolve(head);
|
|
100
101
|
} else {
|
|
101
102
|
var expandedSelection = (0, _selection.expandSelectionBounds)(tr.selection.$anchor, tr.selection.$head);
|
|
102
|
-
expandedAnchor = expandedSelection.$anchor;
|
|
103
|
-
expandedHead = expandedSelection.$head;
|
|
103
|
+
$expandedAnchor = expandedSelection.$anchor;
|
|
104
|
+
$expandedHead = expandedSelection.$head;
|
|
104
105
|
}
|
|
105
|
-
api === null || api === void 0 || (_api$selection = api.selection) === null || _api$selection === void 0 || _api$selection.commands.setManualSelection(expandedAnchor.pos, expandedHead.pos)({
|
|
106
|
+
api === null || api === void 0 || (_api$selection = api.selection) === null || _api$selection === void 0 || _api$selection.commands.setManualSelection($expandedAnchor.pos, $expandedHead.pos)({
|
|
106
107
|
tr: tr
|
|
107
108
|
});
|
|
108
|
-
|
|
109
|
-
var
|
|
110
|
-
|
|
109
|
+
var $from = $expandedAnchor.min($expandedHead);
|
|
110
|
+
var $to = $expandedAnchor.max($expandedHead);
|
|
111
|
+
var expandedNormalisedSel;
|
|
112
|
+
if ($from.nodeAfter === $to.nodeBefore) {
|
|
113
|
+
(0, _getSelection.selectNode)(tr, $from.pos, $expandedAnchor.node().type.name);
|
|
114
|
+
expandedNormalisedSel = tr.selection;
|
|
115
|
+
} else if (((_$to$nodeBefore = $to.nodeBefore) === null || _$to$nodeBefore === void 0 ? void 0 : _$to$nodeBefore.type.name) === 'mediaSingle' || ((_$from$nodeAfter = $from.nodeAfter) === null || _$from$nodeAfter === void 0 ? void 0 : _$from$nodeAfter.type.name) === 'mediaSingle') {
|
|
116
|
+
expandedNormalisedSel = new _state.TextSelection($expandedAnchor, $expandedHead);
|
|
117
|
+
tr.setSelection(expandedNormalisedSel);
|
|
118
|
+
} else {
|
|
119
|
+
// this is to normalise the selection's boundaries to inline positions, preventing it from collapsing
|
|
120
|
+
expandedNormalisedSel = _state.TextSelection.between($expandedAnchor, $expandedHead);
|
|
121
|
+
tr.setSelection(expandedNormalisedSel);
|
|
122
|
+
}
|
|
111
123
|
var multiSelectDnD = {
|
|
112
|
-
anchor: expandedAnchor.pos,
|
|
113
|
-
head: expandedHead.pos,
|
|
124
|
+
anchor: $expandedAnchor.pos,
|
|
125
|
+
head: $expandedHead.pos,
|
|
114
126
|
textAnchor: expandedNormalisedSel.anchor,
|
|
115
127
|
textHead: expandedNormalisedSel.head,
|
|
116
128
|
userAnchor: userAnchor,
|
|
@@ -125,7 +137,7 @@ var blockControlsPlugin = exports.blockControlsPlugin = function blockControlsPl
|
|
|
125
137
|
}
|
|
126
138
|
},
|
|
127
139
|
getSharedState: function getSharedState(editorState) {
|
|
128
|
-
var _key$getState$isMenuO, _key$getState, _key$getState$activeN, _key$getState2, _key$getState$isDragg, _key$getState3, _key$getState$isPMDra, _key$getState4, _key$getState$multiSe, _key$getState5;
|
|
140
|
+
var _key$getState$isMenuO, _key$getState, _key$getState$activeN, _key$getState2, _key$getState$isDragg, _key$getState3, _key$getState$isPMDra, _key$getState4, _key$getState$multiSe, _key$getState5, _key$getState$isShift, _key$getState6;
|
|
129
141
|
if (!editorState) {
|
|
130
142
|
return undefined;
|
|
131
143
|
}
|
|
@@ -134,7 +146,8 @@ var blockControlsPlugin = exports.blockControlsPlugin = function blockControlsPl
|
|
|
134
146
|
activeNode: (_key$getState$activeN = (_key$getState2 = _main.key.getState(editorState)) === null || _key$getState2 === void 0 ? void 0 : _key$getState2.activeNode) !== null && _key$getState$activeN !== void 0 ? _key$getState$activeN : undefined,
|
|
135
147
|
isDragging: (_key$getState$isDragg = (_key$getState3 = _main.key.getState(editorState)) === null || _key$getState3 === void 0 ? void 0 : _key$getState3.isDragging) !== null && _key$getState$isDragg !== void 0 ? _key$getState$isDragg : false,
|
|
136
148
|
isPMDragging: (_key$getState$isPMDra = (_key$getState4 = _main.key.getState(editorState)) === null || _key$getState4 === void 0 ? void 0 : _key$getState4.isPMDragging) !== null && _key$getState$isPMDra !== void 0 ? _key$getState$isPMDra : false,
|
|
137
|
-
multiSelectDnD: (_key$getState$multiSe = (_key$getState5 = _main.key.getState(editorState)) === null || _key$getState5 === void 0 ? void 0 : _key$getState5.multiSelectDnD) !== null && _key$getState$multiSe !== void 0 ? _key$getState$multiSe : undefined
|
|
149
|
+
multiSelectDnD: (_key$getState$multiSe = (_key$getState5 = _main.key.getState(editorState)) === null || _key$getState5 === void 0 ? void 0 : _key$getState5.multiSelectDnD) !== null && _key$getState$multiSe !== void 0 ? _key$getState$multiSe : undefined,
|
|
150
|
+
isShiftDown: (_key$getState$isShift = (_key$getState6 = _main.key.getState(editorState)) === null || _key$getState6 === void 0 ? void 0 : _key$getState6.isShiftDown) !== null && _key$getState$isShift !== void 0 ? _key$getState$isShift : undefined
|
|
138
151
|
};
|
|
139
152
|
},
|
|
140
153
|
contentComponent: function contentComponent(_ref7) {
|
|
@@ -60,16 +60,14 @@ var isDragLayoutColumnToTopLevel = function isDragLayoutColumnToTopLevel($from,
|
|
|
60
60
|
* @returns the start position of a node if the node can be moved, otherwise -1
|
|
61
61
|
*/
|
|
62
62
|
var getCurrentNodePos = function getCurrentNodePos(state) {
|
|
63
|
-
var _activeNode$handleOpt;
|
|
64
63
|
var selection = state.selection;
|
|
65
|
-
var _ref = _main.key.getState(state) || {},
|
|
66
|
-
activeNode = _ref.activeNode;
|
|
67
64
|
var currentNodePos = -1;
|
|
68
65
|
|
|
69
66
|
// There are 3 cases when a node can be moved
|
|
70
|
-
|
|
67
|
+
var focusedHandle = getFocusedHandle(state);
|
|
68
|
+
if (focusedHandle) {
|
|
71
69
|
// 1. drag handle of the node is focused
|
|
72
|
-
currentNodePos =
|
|
70
|
+
currentNodePos = focusedHandle.pos;
|
|
73
71
|
} else if ((0, _utils3.isInTable)(state)) {
|
|
74
72
|
if ((0, _utils3.isTableSelected)(selection)) {
|
|
75
73
|
var _findTable$pos, _findTable;
|
|
@@ -87,6 +85,12 @@ var getCurrentNodePos = function getCurrentNodePos(state) {
|
|
|
87
85
|
}
|
|
88
86
|
return currentNodePos;
|
|
89
87
|
};
|
|
88
|
+
var getFocusedHandle = function getFocusedHandle(state) {
|
|
89
|
+
var _activeNode$handleOpt;
|
|
90
|
+
var _ref = _main.key.getState(state) || {},
|
|
91
|
+
activeNode = _ref.activeNode;
|
|
92
|
+
return activeNode && (_activeNode$handleOpt = activeNode.handleOptions) !== null && _activeNode$handleOpt !== void 0 && _activeNode$handleOpt.isFocused ? activeNode : undefined;
|
|
93
|
+
};
|
|
90
94
|
var moveNodeViaShortcut = exports.moveNodeViaShortcut = function moveNodeViaShortcut(api, direction, formatMessage) {
|
|
91
95
|
return function (state) {
|
|
92
96
|
var isParentNodeOfTypeLayout;
|
|
@@ -96,20 +100,14 @@ var moveNodeViaShortcut = exports.moveNodeViaShortcut = function moveNodeViaShor
|
|
|
96
100
|
isParentNodeOfTypeLayout = !!(0, _utils2.findParentNodeOfType)([state.schema.nodes.layoutSection])(state.selection);
|
|
97
101
|
}
|
|
98
102
|
var isMultiSelectEnabled = (0, _experiments.editorExperiment)('platform_editor_element_drag_and_drop_multiselect', true);
|
|
99
|
-
var
|
|
100
|
-
var
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
expandedHead = pluginState.multiSelectDnD.head;
|
|
104
|
-
} else {
|
|
105
|
-
var expandedSelection = (0, _selection.expandSelectionBounds)(selection.$anchor, selection.$head);
|
|
106
|
-
expandedAnchor = expandedSelection.$anchor.pos;
|
|
107
|
-
expandedHead = expandedSelection.$head.pos;
|
|
108
|
-
}
|
|
109
|
-
var currentNodePos = isMultiSelectEnabled ? Math.min(expandedAnchor, expandedHead) : getCurrentNodePos(state);
|
|
103
|
+
var expandedSelection = (0, _selection.expandSelectionBounds)(selection.$anchor, selection.$head);
|
|
104
|
+
var expandedAnchor = expandedSelection.$anchor.pos;
|
|
105
|
+
var expandedHead = expandedSelection.$head.pos;
|
|
106
|
+
var currentNodePos = isMultiSelectEnabled && !getFocusedHandle(state) ? Math.min(expandedAnchor, expandedHead) : getCurrentNodePos(state);
|
|
110
107
|
if (currentNodePos > -1) {
|
|
111
108
|
var _state$doc$nodeAt;
|
|
112
109
|
var $pos = state.doc.resolve(currentNodePos);
|
|
110
|
+
var nodeAfterPos = isMultiSelectEnabled && !getFocusedHandle(state) ? Math.max(expandedAnchor, expandedHead) : $pos.posAtIndex($pos.index() + 1);
|
|
113
111
|
var isTopLevelNode = $pos.depth === 0;
|
|
114
112
|
var moveToPos = -1;
|
|
115
113
|
var nodeIndex = $pos.index();
|
|
@@ -217,7 +215,6 @@ var moveNodeViaShortcut = exports.moveNodeViaShortcut = function moveNodeViaShor
|
|
|
217
215
|
}
|
|
218
216
|
} else {
|
|
219
217
|
var _endOfDoc = $pos.end();
|
|
220
|
-
var nodeAfterPos = isMultiSelectEnabled ? Math.max(expandedAnchor, expandedHead) : $pos.posAtIndex($pos.index() + 1);
|
|
221
218
|
if (nodeAfterPos > _endOfDoc) {
|
|
222
219
|
return false;
|
|
223
220
|
}
|
|
@@ -296,8 +293,8 @@ var moveNode = exports.moveNode = function moveNode(api) {
|
|
|
296
293
|
var isMultiSelect = (0, _experiments.editorExperiment)('platform_editor_element_drag_and_drop_multiselect', true, {
|
|
297
294
|
exposure: true
|
|
298
295
|
});
|
|
296
|
+
var slicePosition = (0, _selection2.getSelectedSlicePosition)(start, tr, api);
|
|
299
297
|
if (isMultiSelect) {
|
|
300
|
-
var slicePosition = (0, _selection2.getSelectedSlicePosition)(start, tr, api);
|
|
301
298
|
sliceFrom = slicePosition.from;
|
|
302
299
|
sliceTo = slicePosition.to;
|
|
303
300
|
var attributes = (0, _analytics2.getMultiSelectAnalyticsAttributes)(tr, sliceFrom, sliceTo);
|
|
@@ -13,9 +13,11 @@ var _analytics = require("@atlaskit/editor-common/analytics");
|
|
|
13
13
|
var _browser = require("@atlaskit/editor-common/browser");
|
|
14
14
|
var _performanceMeasures = require("@atlaskit/editor-common/performance-measures");
|
|
15
15
|
var _safePlugin = require("@atlaskit/editor-common/safe-plugin");
|
|
16
|
+
var _selection2 = require("@atlaskit/editor-common/selection");
|
|
16
17
|
var _utils = require("@atlaskit/editor-common/utils");
|
|
17
18
|
var _state = require("@atlaskit/editor-prosemirror/state");
|
|
18
19
|
var _view2 = require("@atlaskit/editor-prosemirror/view");
|
|
20
|
+
var _editorTables = require("@atlaskit/editor-tables");
|
|
19
21
|
var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
|
|
20
22
|
var _element = require("@atlaskit/pragmatic-drag-and-drop-auto-scroll/element");
|
|
21
23
|
var _combine = require("@atlaskit/pragmatic-drag-and-drop/combine");
|
|
@@ -29,7 +31,7 @@ var _keymap = require("./keymap");
|
|
|
29
31
|
var _activeAnchorTracker = require("./utils/active-anchor-tracker");
|
|
30
32
|
var _analytics2 = require("./utils/analytics");
|
|
31
33
|
var _anchorUtils = require("./utils/anchor-utils");
|
|
32
|
-
var
|
|
34
|
+
var _selection3 = require("./utils/selection");
|
|
33
35
|
var _transactions = require("./utils/transactions");
|
|
34
36
|
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
37
|
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; }
|
|
@@ -107,7 +109,7 @@ var destroyFn = function destroyFn(api, editorView) {
|
|
|
107
109
|
var _api$analytics2;
|
|
108
110
|
var nodeTypes, hasSelectedMultipleNodes;
|
|
109
111
|
if (isMultiSelect && api) {
|
|
110
|
-
var position = (0,
|
|
112
|
+
var position = (0, _selection3.getSelectedSlicePosition)(start, tr, api);
|
|
111
113
|
var attributes = (0, _analytics2.getMultiSelectAnalyticsAttributes)(tr, position.from, position.to);
|
|
112
114
|
nodeTypes = attributes.nodeTypes;
|
|
113
115
|
hasSelectedMultipleNodes = attributes.hasSelectedMultipleNodes;
|
|
@@ -128,10 +130,10 @@ var destroyFn = function destroyFn(api, editorView) {
|
|
|
128
130
|
})
|
|
129
131
|
})(tr);
|
|
130
132
|
}
|
|
131
|
-
return tr.setMeta(key, {
|
|
133
|
+
return tr.setMeta(key, _objectSpread(_objectSpread({}, tr.getMeta(key)), {}, {
|
|
132
134
|
isDragging: false,
|
|
133
135
|
isPMDragging: false
|
|
134
|
-
});
|
|
136
|
+
}));
|
|
135
137
|
});
|
|
136
138
|
}
|
|
137
139
|
}));
|
|
@@ -155,7 +157,7 @@ var getDecorations = exports.getDecorations = function getDecorations(state) {
|
|
|
155
157
|
return (_key$getState = key.getState(state)) === null || _key$getState === void 0 ? void 0 : _key$getState.decorations;
|
|
156
158
|
};
|
|
157
159
|
var newApply = exports.newApply = function newApply(api, formatMessage, tr, currentState, newState, flags, nodeViewPortalProviderAPI, anchorRectCache) {
|
|
158
|
-
var _meta$activeNode, _activeNode, _activeNode2, _meta$activeNode$hand, _meta$isDragging, _meta$isDragging2, _meta$editorHeight, _meta$editorWidthLeft, _meta$editorWidthRigh, _meta$isPMDragging, _meta$
|
|
160
|
+
var _meta$multiSelectDnD, _meta$activeNode, _activeNode, _activeNode2, _meta$activeNode$hand, _meta$isDragging, _meta$isDragging2, _meta$editorHeight, _meta$editorWidthLeft, _meta$editorWidthRigh, _meta$isPMDragging, _meta$isShiftDown;
|
|
159
161
|
var activeNode = currentState.activeNode,
|
|
160
162
|
decorations = currentState.decorations,
|
|
161
163
|
isResizerResizing = currentState.isResizerResizing,
|
|
@@ -165,7 +167,8 @@ var newApply = exports.newApply = function newApply(api, formatMessage, tr, curr
|
|
|
165
167
|
editorWidthRight = currentState.editorWidthRight,
|
|
166
168
|
isDragging = currentState.isDragging,
|
|
167
169
|
isMenuOpen = currentState.isMenuOpen,
|
|
168
|
-
isPMDragging = currentState.isPMDragging
|
|
170
|
+
isPMDragging = currentState.isPMDragging,
|
|
171
|
+
isShiftDown = currentState.isShiftDown;
|
|
169
172
|
var isActiveNodeDeleted = false;
|
|
170
173
|
|
|
171
174
|
// When steps exist, remap existing decorations, activeNode and multi select positions
|
|
@@ -188,10 +191,9 @@ var newApply = exports.newApply = function newApply(api, formatMessage, tr, curr
|
|
|
188
191
|
var meta = tr.getMeta(key);
|
|
189
192
|
var resizerMeta = tr.getMeta('is-resizer-resizing');
|
|
190
193
|
isResizerResizing = resizerMeta !== null && resizerMeta !== void 0 ? resizerMeta : isResizerResizing;
|
|
194
|
+
multiSelectDnD = (_meta$multiSelectDnD = meta === null || meta === void 0 ? void 0 : meta.multiSelectDnD) !== null && _meta$multiSelectDnD !== void 0 ? _meta$multiSelectDnD : multiSelectDnD;
|
|
191
195
|
if (multiSelectDnD && flags.isMultiSelectEnabled) {
|
|
192
|
-
multiSelectDnD = (meta === null || meta === void 0 ? void 0 : meta.isDragging) === false ||
|
|
193
|
-
// For move node with shortcut, only reset when the selection changes
|
|
194
|
-
tr.selection.anchor !== multiSelectDnD.textAnchor || tr.selection.head !== multiSelectDnD.textHead ? undefined : multiSelectDnD;
|
|
196
|
+
multiSelectDnD = (meta === null || meta === void 0 ? void 0 : meta.isDragging) === false || tr.selection.empty ? undefined : multiSelectDnD;
|
|
195
197
|
}
|
|
196
198
|
var _getTrMetadata = (0, _transactions.getTrMetadata)(tr),
|
|
197
199
|
from = _getTrMetadata.from,
|
|
@@ -294,7 +296,8 @@ var newApply = exports.newApply = function newApply(api, formatMessage, tr, curr
|
|
|
294
296
|
isResizerResizing: isResizerResizing,
|
|
295
297
|
isDocSizeLimitEnabled: initialState.isDocSizeLimitEnabled,
|
|
296
298
|
isPMDragging: (_meta$isPMDragging = meta === null || meta === void 0 ? void 0 : meta.isPMDragging) !== null && _meta$isPMDragging !== void 0 ? _meta$isPMDragging : isPMDragging,
|
|
297
|
-
multiSelectDnD:
|
|
299
|
+
multiSelectDnD: multiSelectDnD,
|
|
300
|
+
isShiftDown: (_meta$isShiftDown = meta === null || meta === void 0 ? void 0 : meta.isShiftDown) !== null && _meta$isShiftDown !== void 0 ? _meta$isShiftDown : isShiftDown
|
|
298
301
|
};
|
|
299
302
|
};
|
|
300
303
|
var oldApply = exports.oldApply = function oldApply(api, formatMessage, tr, currentState, oldState, newState, flags, nodeViewPortalProviderAPI, anchorRectCache) {
|
|
@@ -510,9 +513,9 @@ var createPlugin = exports.createPlugin = function createPlugin(api, getIntl, no
|
|
|
510
513
|
dragging = view.dragging;
|
|
511
514
|
var pluginState = key.getState(state);
|
|
512
515
|
if (pluginState !== null && pluginState !== void 0 && pluginState.isPMDragging) {
|
|
513
|
-
dispatch(state.tr.setMeta(key, {
|
|
516
|
+
dispatch(state.tr.setMeta(key, _objectSpread(_objectSpread({}, state.tr.getMeta(key)), {}, {
|
|
514
517
|
isPMDragging: false
|
|
515
|
-
}));
|
|
518
|
+
})));
|
|
516
519
|
}
|
|
517
520
|
if (!(event.target instanceof HTMLElement) || !(pluginState !== null && pluginState !== void 0 && pluginState.activeNode)) {
|
|
518
521
|
return false;
|
|
@@ -534,10 +537,26 @@ var createPlugin = exports.createPlugin = function createPlugin(api, getIntl, no
|
|
|
534
537
|
var domPos = Math.max(view.posAtDOM(nodeElement, 0) - 1, 0);
|
|
535
538
|
var nodeTarget = state.doc.nodeAt(domPos);
|
|
536
539
|
var isSameNode = !!(nodeTarget && draggable !== null && draggable !== void 0 && draggable.eq(nodeTarget));
|
|
537
|
-
var isInSelection = domPos >= state.selection.$from.pos && domPos < state.selection.$to.pos;
|
|
538
540
|
|
|
539
|
-
//
|
|
540
|
-
|
|
541
|
+
// CellSelection doesn't expose true from/to positions, we need to query the ranges
|
|
542
|
+
var selectionRange = state.selection instanceof _editorTables.CellSelection ? state.selection.ranges.reduce(function (previousValue, currentValue, _currentIndex, _array) {
|
|
543
|
+
return {
|
|
544
|
+
$from: currentValue.$from.min(previousValue.$from),
|
|
545
|
+
$to: currentValue.$to.max(previousValue.$to)
|
|
546
|
+
};
|
|
547
|
+
}) : {
|
|
548
|
+
$from: state.selection.$from,
|
|
549
|
+
$to: state.selection.$to
|
|
550
|
+
};
|
|
551
|
+
var expandedSelection = (0, _selection2.expandSelectionBounds)(selectionRange.$from, selectionRange.$to);
|
|
552
|
+
var expandedAnchor = expandedSelection.$anchor;
|
|
553
|
+
var expandedHead = expandedSelection.$head;
|
|
554
|
+
var expandedSelectionFrom = Math.min(expandedAnchor.pos, expandedHead.pos);
|
|
555
|
+
var expandedSelectionTo = Math.max(expandedAnchor.pos, expandedHead.pos);
|
|
556
|
+
var isInExpandedSelection = domPos >= expandedSelectionFrom && domPos < expandedSelectionTo;
|
|
557
|
+
|
|
558
|
+
// Prevent the default drop behavior if the position is within the activeNode or within the expanded selection when multiselect is on
|
|
559
|
+
if (isSameNode || isInExpandedSelection && isMultiSelectEnabled) {
|
|
541
560
|
event.preventDefault();
|
|
542
561
|
return true;
|
|
543
562
|
}
|
|
@@ -565,18 +584,18 @@ var createPlugin = exports.createPlugin = function createPlugin(api, getIntl, no
|
|
|
565
584
|
_activeAnchorTracker.defaultActiveAnchorTracker.reset();
|
|
566
585
|
}
|
|
567
586
|
(_anchorRectCache = anchorRectCache) === null || _anchorRectCache === void 0 || _anchorRectCache.setEditorView(view);
|
|
568
|
-
view.dispatch(view.state.tr.setMeta(key, {
|
|
587
|
+
view.dispatch(view.state.tr.setMeta(key, _objectSpread(_objectSpread({}, view.state.tr.getMeta(key)), {}, {
|
|
569
588
|
isPMDragging: true
|
|
570
|
-
}));
|
|
589
|
+
})));
|
|
571
590
|
},
|
|
572
591
|
dragend: function dragend(view) {
|
|
573
592
|
var _key$getState3;
|
|
574
593
|
var state = view.state,
|
|
575
594
|
dispatch = view.dispatch;
|
|
576
595
|
if ((_key$getState3 = key.getState(state)) !== null && _key$getState3 !== void 0 && _key$getState3.isPMDragging) {
|
|
577
|
-
dispatch(state.tr.setMeta(key, {
|
|
596
|
+
dispatch(state.tr.setMeta(key, _objectSpread(_objectSpread({}, state.tr.getMeta(key)), {}, {
|
|
578
597
|
isPMDragging: false
|
|
579
|
-
}));
|
|
598
|
+
})));
|
|
580
599
|
}
|
|
581
600
|
},
|
|
582
601
|
mouseover: function mouseover(view, event) {
|
|
@@ -584,27 +603,65 @@ var createPlugin = exports.createPlugin = function createPlugin(api, getIntl, no
|
|
|
584
603
|
return false;
|
|
585
604
|
},
|
|
586
605
|
keydown: function keydown(view, event) {
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
if (selection instanceof _state.TextSelection || selection instanceof _state.NodeSelection) {
|
|
595
|
-
var newSelection = _state.TextSelection.create(doc, selection.head, 1);
|
|
596
|
-
view.dispatch(tr.setSelection(newSelection));
|
|
597
|
-
return true;
|
|
606
|
+
if (isMultiSelectEnabled) {
|
|
607
|
+
if (event.shiftKey && event.ctrlKey) {
|
|
608
|
+
//prevent holding down key combo from firing repeatedly
|
|
609
|
+
if (!event.repeat && (0, _keymap.boundKeydownHandler)(api, formatMessage)(view, event)) {
|
|
610
|
+
event.preventDefault();
|
|
611
|
+
return true;
|
|
612
|
+
}
|
|
598
613
|
}
|
|
599
|
-
|
|
600
|
-
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
|
|
614
|
+
|
|
615
|
+
// Command + Shift + ArrowUp to select was broken with the plugin enabled so this manually sets the selection
|
|
616
|
+
var _view$state = view.state,
|
|
617
|
+
selection = _view$state.selection,
|
|
618
|
+
doc = _view$state.doc,
|
|
619
|
+
tr = _view$state.tr;
|
|
620
|
+
var metaKey = _browser.browser.mac ? event.metaKey : event.ctrlKey;
|
|
621
|
+
if (event.key === 'ArrowUp' && event.shiftKey && metaKey) {
|
|
622
|
+
if (selection instanceof _state.TextSelection || selection instanceof _state.NodeSelection) {
|
|
623
|
+
var newSelection = _state.TextSelection.create(doc, selection.head, 1);
|
|
624
|
+
view.dispatch(tr.setSelection(newSelection));
|
|
625
|
+
return true;
|
|
626
|
+
}
|
|
627
|
+
}
|
|
628
|
+
if (!event.repeat && event.shiftKey) {
|
|
629
|
+
view.dispatch(view.state.tr.setMeta(key, _objectSpread(_objectSpread({}, view.state.tr.getMeta(key)), {}, {
|
|
630
|
+
isShiftDown: true
|
|
631
|
+
})));
|
|
604
632
|
return true;
|
|
605
633
|
}
|
|
634
|
+
return false;
|
|
635
|
+
} else {
|
|
636
|
+
// Command + Shift + ArrowUp to select was broken with the plugin enabled so this manually sets the selection
|
|
637
|
+
var _view$state2 = view.state,
|
|
638
|
+
_selection = _view$state2.selection,
|
|
639
|
+
_doc = _view$state2.doc,
|
|
640
|
+
_tr = _view$state2.tr;
|
|
641
|
+
var _metaKey = _browser.browser.mac ? event.metaKey : event.ctrlKey;
|
|
642
|
+
if (event.key === 'ArrowUp' && event.shiftKey && _metaKey) {
|
|
643
|
+
if (_selection instanceof _state.TextSelection || _selection instanceof _state.NodeSelection) {
|
|
644
|
+
var _newSelection = _state.TextSelection.create(_doc, _selection.head, 1);
|
|
645
|
+
view.dispatch(_tr.setSelection(_newSelection));
|
|
646
|
+
return true;
|
|
647
|
+
}
|
|
648
|
+
}
|
|
649
|
+
if (event.shiftKey && event.ctrlKey) {
|
|
650
|
+
//prevent holding down key combo from firing repeatedly
|
|
651
|
+
if (!event.repeat && (0, _keymap.boundKeydownHandler)(api, formatMessage)(view, event)) {
|
|
652
|
+
event.preventDefault();
|
|
653
|
+
return true;
|
|
654
|
+
}
|
|
655
|
+
}
|
|
606
656
|
}
|
|
607
657
|
return false;
|
|
658
|
+
},
|
|
659
|
+
keyup: function keyup(view, event) {
|
|
660
|
+
if (!event.repeat && event.key === 'Shift') {
|
|
661
|
+
view.dispatch(view.state.tr.setMeta(key, _objectSpread(_objectSpread({}, view.state.tr.getMeta(key)), {}, {
|
|
662
|
+
isShiftDown: false
|
|
663
|
+
})));
|
|
664
|
+
}
|
|
608
665
|
}
|
|
609
666
|
}
|
|
610
667
|
},
|
|
@@ -629,10 +686,10 @@ var createPlugin = exports.createPlugin = function createPlugin(api, getIntl, no
|
|
|
629
686
|
// Ignored via go/ees005
|
|
630
687
|
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
631
688
|
var editorWidthLeft = _editorContentArea.getBoundingClientRect().left;
|
|
632
|
-
transaction.setMeta(key, {
|
|
689
|
+
transaction.setMeta(key, _objectSpread(_objectSpread({}, transaction.getMeta(key)), {}, {
|
|
633
690
|
editorWidthLeft: editorWidthLeft,
|
|
634
691
|
editorWidthRight: editorWidthRight
|
|
635
|
-
});
|
|
692
|
+
}));
|
|
636
693
|
}
|
|
637
694
|
editorView.dispatch(transaction);
|
|
638
695
|
}
|
|
@@ -63,7 +63,7 @@ var getSelection = exports.getSelection = function getSelection(tr, start) {
|
|
|
63
63
|
var _getInlineNodePos = getInlineNodePos(tr, start, nodeSize),
|
|
64
64
|
inlineNodePos = _getInlineNodePos.inlineNodePos,
|
|
65
65
|
inlineNodeEndPos = _getInlineNodePos.inlineNodeEndPos;
|
|
66
|
-
return new _state.TextSelection(tr.doc.resolve(
|
|
66
|
+
return new _state.TextSelection(tr.doc.resolve(inlineNodePos), tr.doc.resolve(inlineNodeEndPos));
|
|
67
67
|
}
|
|
68
68
|
};
|
|
69
69
|
var selectNode = exports.selectNode = function selectNode(tr, start, nodeType) {
|
|
@@ -3,7 +3,8 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.getSelectedSlicePosition = exports.getMultiSelectionIfPosInside = void 0;
|
|
6
|
+
exports.getSelectedSlicePosition = exports.getMultiSelectionIfPosInside = exports.expandSelectionHeadToNodeAtPos = exports.alignAnchorHeadInDirectionOfPos = void 0;
|
|
7
|
+
var _state = require("@atlaskit/editor-prosemirror/state");
|
|
7
8
|
var _main = require("../main");
|
|
8
9
|
var getMultiSelectionIfPosInside = exports.getMultiSelectionIfPosInside = function getMultiSelectionIfPosInside(api, pos, tr) {
|
|
9
10
|
var _api$blockControls, _pluginState$multiSel, _tr$getMeta;
|
|
@@ -16,7 +17,7 @@ var getMultiSelectionIfPosInside = exports.getMultiSelectionIfPosInside = functi
|
|
|
16
17
|
var multiTo = Math.max(multiSelectDnD.anchor, multiSelectDnD.head);
|
|
17
18
|
|
|
18
19
|
// We subtract one as the handle position is before the node
|
|
19
|
-
return pos >= multiFrom - 1 && pos
|
|
20
|
+
return pos >= multiFrom - 1 && pos < multiTo ? {
|
|
20
21
|
anchor: multiSelectDnD.anchor,
|
|
21
22
|
head: multiSelectDnD.head
|
|
22
23
|
} : {};
|
|
@@ -34,12 +35,41 @@ var getSelectedSlicePosition = exports.getSelectedSlicePosition = function getSe
|
|
|
34
35
|
anchor = _getMultiSelectionIfP.anchor,
|
|
35
36
|
head = _getMultiSelectionIfP.head;
|
|
36
37
|
var inSelection = anchor !== undefined && head !== undefined;
|
|
37
|
-
var from = inSelection ? Math.min(anchor, head) : handlePos;
|
|
38
|
+
var from = inSelection ? Math.min(anchor || 0, head || 0) : handlePos;
|
|
38
39
|
var activeNode = tr.doc.nodeAt(handlePos);
|
|
39
40
|
var activeNodeEndPos = handlePos + ((_activeNode$nodeSize = activeNode === null || activeNode === void 0 ? void 0 : activeNode.nodeSize) !== null && _activeNode$nodeSize !== void 0 ? _activeNode$nodeSize : 1);
|
|
40
|
-
var to = inSelection ? Math.max(anchor, head) : activeNodeEndPos;
|
|
41
|
+
var to = inSelection ? Math.max(anchor || 0, head || 0) : activeNodeEndPos;
|
|
41
42
|
return {
|
|
42
43
|
from: from,
|
|
43
44
|
to: to
|
|
44
45
|
};
|
|
46
|
+
};
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* Takes a position and expands the selection to encompass the node at that position. Ignores empty or out of range selections.
|
|
50
|
+
* Ignores positions that are in text blocks (i.e. not start of a node)
|
|
51
|
+
* @returns TextSelection if expanded, otherwise returns Selection that was passed in.
|
|
52
|
+
*/
|
|
53
|
+
var expandSelectionHeadToNodeAtPos = exports.expandSelectionHeadToNodeAtPos = function expandSelectionHeadToNodeAtPos(selection, nodePos) {
|
|
54
|
+
var doc = selection.$anchor.doc;
|
|
55
|
+
if (nodePos < 0 || nodePos > doc.nodeSize - 2 || selection.empty) {
|
|
56
|
+
return selection;
|
|
57
|
+
}
|
|
58
|
+
var $pos = doc.resolve(nodePos);
|
|
59
|
+
var node = $pos.nodeAfter;
|
|
60
|
+
if ($pos.node().isTextblock || !node) {
|
|
61
|
+
return selection;
|
|
62
|
+
}
|
|
63
|
+
var $newHead = nodePos < selection.anchor ? $pos : doc.resolve(node.nodeSize + nodePos);
|
|
64
|
+
var textSelection = new _state.TextSelection(selection.$anchor, $newHead);
|
|
65
|
+
return textSelection;
|
|
66
|
+
};
|
|
67
|
+
|
|
68
|
+
/**
|
|
69
|
+
* This swaps the anchor/head for NodeSelections when its anchor > pos.
|
|
70
|
+
* This is because NodeSelection always has an anchor at the start of the node,
|
|
71
|
+
* which may not align with the existing selection.
|
|
72
|
+
*/
|
|
73
|
+
var alignAnchorHeadInDirectionOfPos = exports.alignAnchorHeadInDirectionOfPos = function alignAnchorHeadInDirectionOfPos(selection, pos) {
|
|
74
|
+
return selection instanceof _state.NodeSelection && Math.max(pos, selection.anchor) === selection.anchor ? new _state.TextSelection(selection.$head, selection.$anchor) : selection;
|
|
45
75
|
};
|
package/dist/cjs/ui/consts.js
CHANGED
|
@@ -4,7 +4,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
|
|
|
4
4
|
Object.defineProperty(exports, "__esModule", {
|
|
5
5
|
value: true
|
|
6
6
|
});
|
|
7
|
-
exports.topPositionAdjustment = exports.spacingBetweenNodesForPreview = exports.spaceLookupMap = exports.nodeMargins = exports.getNestedNodeLeftPaddingMargin = exports.dropTargetMarginMap = exports.dragHandleGap = exports.DRAG_HANDLE_ZINDEX = exports.DRAG_HANDLE_WIDTH = exports.DRAG_HANDLE_PARAGRAPH_TOP_ADJUSTMENT = exports.DRAG_HANDLE_NARROW_GAP = exports.DRAG_HANDLE_MAX_WIDTH_PLUS_GAP = exports.DRAG_HANDLE_MAX_GAP = exports.DRAG_HANDLE_LAYOUT_SECTION_TOP_ADJUSTMENT = exports.DRAG_HANDLE_HEIGHT = exports.DRAG_HANDLE_H6_TOP_ADJUSTMENT = exports.DRAG_HANDLE_H5_TOP_ADJUSTMENT = exports.DRAG_HANDLE_H4_TOP_ADJUSTMENT = exports.DRAG_HANDLE_H3_TOP_ADJUSTMENT = exports.DRAG_HANDLE_H2_TOP_ADJUSTMENT = exports.DRAG_HANDLE_H1_TOP_ADJUSTMENT = exports.DRAG_HANDLE_DIVIDER_TOP_ADJUSTMENT = exports.DRAG_HANDLE_DEFAULT_GAP = exports.DRAG_HANDLE_BORDER_RADIUS = exports.DEFAULT_COLUMN_DISTRIBUTIONS = exports.BLOCK_MENU_WIDTH = void 0;
|
|
7
|
+
exports.topPositionAdjustment = exports.spacingBetweenNodesForPreview = exports.spaceLookupMap = exports.nodeMargins = exports.getNestedNodeLeftPaddingMargin = exports.dropTargetMarginMap = exports.dragHandleGap = exports.DRAG_HANDLE_ZINDEX = exports.DRAG_HANDLE_WIDTH = exports.DRAG_HANDLE_PARAGRAPH_TOP_ADJUSTMENT = exports.DRAG_HANDLE_NARROW_GAP = exports.DRAG_HANDLE_MAX_WIDTH_PLUS_GAP = exports.DRAG_HANDLE_MAX_SHIFT_CLICK_DEPTH = exports.DRAG_HANDLE_MAX_GAP = exports.DRAG_HANDLE_LAYOUT_SECTION_TOP_ADJUSTMENT = exports.DRAG_HANDLE_HEIGHT = exports.DRAG_HANDLE_H6_TOP_ADJUSTMENT = exports.DRAG_HANDLE_H5_TOP_ADJUSTMENT = exports.DRAG_HANDLE_H4_TOP_ADJUSTMENT = exports.DRAG_HANDLE_H3_TOP_ADJUSTMENT = exports.DRAG_HANDLE_H2_TOP_ADJUSTMENT = exports.DRAG_HANDLE_H1_TOP_ADJUSTMENT = exports.DRAG_HANDLE_DIVIDER_TOP_ADJUSTMENT = exports.DRAG_HANDLE_DEFAULT_GAP = exports.DRAG_HANDLE_BORDER_RADIUS = exports.DEFAULT_COLUMN_DISTRIBUTIONS = exports.BLOCK_MENU_WIDTH = void 0;
|
|
8
8
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
9
9
|
var _editorSharedStyles = require("@atlaskit/editor-shared-styles");
|
|
10
10
|
var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
|
|
@@ -27,6 +27,14 @@ var DRAG_HANDLE_H5_TOP_ADJUSTMENT = exports.DRAG_HANDLE_H5_TOP_ADJUSTMENT = 3;
|
|
|
27
27
|
var DRAG_HANDLE_H6_TOP_ADJUSTMENT = exports.DRAG_HANDLE_H6_TOP_ADJUSTMENT = 3;
|
|
28
28
|
var DRAG_HANDLE_LAYOUT_SECTION_TOP_ADJUSTMENT = exports.DRAG_HANDLE_LAYOUT_SECTION_TOP_ADJUSTMENT = 8;
|
|
29
29
|
var DRAG_HANDLE_PARAGRAPH_TOP_ADJUSTMENT = exports.DRAG_HANDLE_PARAGRAPH_TOP_ADJUSTMENT = 2;
|
|
30
|
+
|
|
31
|
+
/** We only want to shift-select nodes that are at the top level of a document.
|
|
32
|
+
* This is because funky things happen when selecting inside of tableCells, but we
|
|
33
|
+
* also want to avoid heavily nested cases to descope potential corner cases.
|
|
34
|
+
* Various top level nodes have their selection 'from' at depths other than 0,
|
|
35
|
+
* so we allow for some leniency to capture them all. e.g. Table is depth 3.
|
|
36
|
+
*/
|
|
37
|
+
var DRAG_HANDLE_MAX_SHIFT_CLICK_DEPTH = exports.DRAG_HANDLE_MAX_SHIFT_CLICK_DEPTH = 3;
|
|
30
38
|
var nodeTypeExcludeList = ['embedCard', 'mediaSingle', 'table'];
|
|
31
39
|
var dragHandleGap = exports.dragHandleGap = function dragHandleGap(nodeType, parentNodeType) {
|
|
32
40
|
if (nodeType === 'layoutSection' && (0, _platformFeatureFlags.fg)('platform_editor_advanced_layouts_post_fix_patch_2')) {
|