@atlaskit/editor-plugin-layout 11.0.4 → 11.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 +19 -0
- package/dist/cjs/layoutPlugin.js +19 -4
- package/dist/cjs/pm-plugins/actions.js +30 -10
- package/dist/cjs/pm-plugins/keymap.js +31 -0
- package/dist/cjs/pm-plugins/main.js +90 -21
- package/dist/cjs/pm-plugins/utils/layout-column-selection.js +36 -12
- package/dist/cjs/ui/LayoutColumnMenu/DeleteColumnDropdownItem.js +25 -5
- package/dist/cjs/ui/LayoutColumnMenu/InsertColumnDropdownItem.js +7 -1
- package/dist/cjs/ui/LayoutColumnMenu/index.js +51 -4
- package/dist/cjs/ui/global-styles.js +11 -1
- package/dist/es2019/layoutPlugin.js +18 -5
- package/dist/es2019/pm-plugins/actions.js +26 -11
- package/dist/es2019/pm-plugins/keymap.js +26 -0
- package/dist/es2019/pm-plugins/main.js +97 -25
- package/dist/es2019/pm-plugins/utils/layout-column-selection.js +33 -8
- package/dist/es2019/ui/LayoutColumnMenu/DeleteColumnDropdownItem.js +26 -6
- package/dist/es2019/ui/LayoutColumnMenu/InsertColumnDropdownItem.js +8 -2
- package/dist/es2019/ui/LayoutColumnMenu/index.js +52 -5
- package/dist/es2019/ui/global-styles.js +9 -1
- package/dist/esm/layoutPlugin.js +20 -5
- package/dist/esm/pm-plugins/actions.js +30 -10
- package/dist/esm/pm-plugins/keymap.js +25 -0
- package/dist/esm/pm-plugins/main.js +90 -21
- package/dist/esm/pm-plugins/utils/layout-column-selection.js +35 -11
- package/dist/esm/ui/LayoutColumnMenu/DeleteColumnDropdownItem.js +26 -6
- package/dist/esm/ui/LayoutColumnMenu/InsertColumnDropdownItem.js +8 -2
- package/dist/esm/ui/LayoutColumnMenu/index.js +52 -5
- package/dist/esm/ui/global-styles.js +11 -1
- package/dist/types/layoutPluginType.d.ts +5 -7
- package/dist/types/pm-plugins/actions.d.ts +8 -4
- package/dist/types/pm-plugins/keymap.d.ts +10 -0
- package/dist/types/pm-plugins/types.d.ts +2 -0
- package/dist/types/pm-plugins/utils/layout-column-selection.d.ts +1 -0
- package/dist/types-ts4.5/layoutPluginType.d.ts +5 -7
- package/dist/types-ts4.5/pm-plugins/actions.d.ts +8 -4
- package/dist/types-ts4.5/pm-plugins/keymap.d.ts +10 -0
- package/dist/types-ts4.5/pm-plugins/types.d.ts +2 -0
- package/dist/types-ts4.5/pm-plugins/utils/layout-column-selection.d.ts +1 -0
- package/package.json +4 -4
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,24 @@
|
|
|
1
1
|
# @atlaskit/editor-plugin-layout
|
|
2
2
|
|
|
3
|
+
## 11.1.1
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- Updated dependencies
|
|
8
|
+
|
|
9
|
+
## 11.1.0
|
|
10
|
+
|
|
11
|
+
### Minor Changes
|
|
12
|
+
|
|
13
|
+
- [`5182f0ffac22f`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/5182f0ffac22f) -
|
|
14
|
+
Add keyboard shortcuts and danger preview to layout column menu actions.
|
|
15
|
+
|
|
16
|
+
Fix keyboard navigation in the layout column menu.
|
|
17
|
+
|
|
18
|
+
### Patch Changes
|
|
19
|
+
|
|
20
|
+
- Updated dependencies
|
|
21
|
+
|
|
3
22
|
## 11.0.4
|
|
4
23
|
|
|
5
24
|
### Patch Changes
|
package/dist/cjs/layoutPlugin.js
CHANGED
|
@@ -19,6 +19,7 @@ var _expValEquals = require("@atlaskit/tmp-editor-statsig/exp-val-equals");
|
|
|
19
19
|
var _expValEqualsNoExposure = require("@atlaskit/tmp-editor-statsig/exp-val-equals-no-exposure");
|
|
20
20
|
var _experiments = require("@atlaskit/tmp-editor-statsig/experiments");
|
|
21
21
|
var _actions = require("./pm-plugins/actions");
|
|
22
|
+
var _keymap = _interopRequireDefault(require("./pm-plugins/keymap"));
|
|
22
23
|
var _main = _interopRequireDefault(require("./pm-plugins/main"));
|
|
23
24
|
var _pluginKey = require("./pm-plugins/plugin-key");
|
|
24
25
|
var _resizing = _interopRequireDefault(require("./pm-plugins/resizing"));
|
|
@@ -57,7 +58,7 @@ var selectIntoLayoutSection = exports.selectIntoLayoutSection = function selectI
|
|
|
57
58
|
return tr;
|
|
58
59
|
};
|
|
59
60
|
var layoutPlugin = exports.layoutPlugin = function layoutPlugin(_ref) {
|
|
60
|
-
var _api$analytics2
|
|
61
|
+
var _api$analytics2;
|
|
61
62
|
var _ref$config = _ref.config,
|
|
62
63
|
options = _ref$config === void 0 ? {} : _ref$config,
|
|
63
64
|
api = _ref.api;
|
|
@@ -109,6 +110,16 @@ var layoutPlugin = exports.layoutPlugin = function layoutPlugin(_ref) {
|
|
|
109
110
|
return (0, _main.default)(options, api === null || api === void 0 || (_api$analytics = api.analytics) === null || _api$analytics === void 0 ? void 0 : _api$analytics.actions);
|
|
110
111
|
}
|
|
111
112
|
}];
|
|
113
|
+
if ((0, _expValEqualsNoExposure.expValEqualsNoExposure)('platform_editor_layout_column_menu', 'isEnabled', true)) {
|
|
114
|
+
plugins.push({
|
|
115
|
+
name: 'layoutKeymap',
|
|
116
|
+
plugin: function plugin() {
|
|
117
|
+
return (0, _keymap.default)({
|
|
118
|
+
api: api
|
|
119
|
+
});
|
|
120
|
+
}
|
|
121
|
+
});
|
|
122
|
+
}
|
|
112
123
|
if ((options.editorAppearance === 'full-page' || options.editorAppearance === 'full-width' || options.editorAppearance === 'max' && (0, _experiments.editorExperiment)('platform_editor_layout_column_resize_handle', true)) && api && (0, _experiments.editorExperiment)('advanced_layouts', true)) {
|
|
113
124
|
plugins.push({
|
|
114
125
|
name: 'layoutResizing',
|
|
@@ -379,15 +390,19 @@ var layoutPlugin = exports.layoutPlugin = function layoutPlugin(_ref) {
|
|
|
379
390
|
return _pluginKey.pluginKey.getState(editorState);
|
|
380
391
|
},
|
|
381
392
|
commands: {
|
|
382
|
-
deleteLayoutColumn:
|
|
393
|
+
deleteLayoutColumn: function deleteLayoutColumn(inputMethod) {
|
|
394
|
+
var _api$analytics5;
|
|
395
|
+
return (0, _actions.deleteLayoutColumn)(api === null || api === void 0 || (_api$analytics5 = api.analytics) === null || _api$analytics5 === void 0 ? void 0 : _api$analytics5.actions, api, inputMethod);
|
|
396
|
+
},
|
|
383
397
|
distributeLayoutColumns: function distributeLayoutColumns(options) {
|
|
384
398
|
var _api$analytics6;
|
|
385
399
|
return (0, _actions.distributeLayoutColumns)(api === null || api === void 0 || (_api$analytics6 = api.analytics) === null || _api$analytics6 === void 0 ? void 0 : _api$analytics6.actions, api)(options);
|
|
386
400
|
},
|
|
387
|
-
insertLayoutColumn: function insertLayoutColumn(side) {
|
|
401
|
+
insertLayoutColumn: function insertLayoutColumn(side, inputMethod) {
|
|
388
402
|
var _api$analytics7;
|
|
389
|
-
return (0, _actions.insertLayoutColumn)(side, api === null || api === void 0 || (_api$analytics7 = api.analytics) === null || _api$analytics7 === void 0 ? void 0 : _api$analytics7.actions, api);
|
|
403
|
+
return (0, _actions.insertLayoutColumn)(side, api === null || api === void 0 || (_api$analytics7 = api.analytics) === null || _api$analytics7 === void 0 ? void 0 : _api$analytics7.actions, api, inputMethod);
|
|
390
404
|
},
|
|
405
|
+
setLayoutColumnDangerPreview: _actions.setLayoutColumnDangerPreview,
|
|
391
406
|
setLayoutColumnValign: function setLayoutColumnValign(valign) {
|
|
392
407
|
var _api$analytics8;
|
|
393
408
|
return (0, _actions.setLayoutColumnValign)(valign, api === null || api === void 0 || (_api$analytics8 = api.analytics) === null || _api$analytics8 === void 0 ? void 0 : _api$analytics8.actions, api);
|
|
@@ -7,7 +7,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
7
7
|
exports.fixColumnStructure = exports.fixColumnSizes = exports.distributeLayoutColumns = exports.deleteLayoutColumn = exports.deleteActiveLayoutNode = exports.createMultiColumnLayoutSection = exports.createDefaultLayoutSection = exports.TWO_COL_LAYOUTS = exports.THREE_COL_LAYOUTS = exports.ONE_COL_LAYOUTS = exports.LAYOUT_COLUMN_INSERT_META = void 0;
|
|
8
8
|
exports.forceSectionToPresetLayout = forceSectionToPresetLayout;
|
|
9
9
|
exports.getEffectiveMaxLayoutColumns = getEffectiveMaxLayoutColumns;
|
|
10
|
-
exports.toggleLayoutColumnMenu = exports.setPresetLayout = exports.setLayoutColumnValign = exports.insertLayoutColumnsWithAnalytics = exports.insertLayoutColumns = exports.insertLayoutColumn = exports.getSelectedLayout = exports.getPresetLayout = void 0;
|
|
10
|
+
exports.toggleLayoutColumnMenu = exports.setPresetLayout = exports.setLayoutColumnValign = exports.setLayoutColumnDangerPreview = exports.insertLayoutColumnsWithAnalytics = exports.insertLayoutColumns = exports.insertLayoutColumn = exports.getSelectedLayout = exports.getPresetLayout = void 0;
|
|
11
11
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
12
12
|
var _analytics = require("@atlaskit/editor-common/analytics");
|
|
13
13
|
var _editorAnalytics = require("@atlaskit/editor-common/editor-analytics");
|
|
@@ -581,12 +581,13 @@ function getEffectiveMaxLayoutColumns() {
|
|
|
581
581
|
return (0, _experiments.editorExperiment)('advanced_layouts', true) ? _consts.MAX_LAYOUT_COLUMNS : _consts.MAX_STANDARD_LAYOUT_COLUMNS;
|
|
582
582
|
}
|
|
583
583
|
var insertLayoutColumnAt = function insertLayoutColumnAt(side, editorAnalyticsAPI) {
|
|
584
|
+
var inputMethod = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : _analytics.INPUT_METHOD.LAYOUT_COLUMN_MENU;
|
|
584
585
|
return function (_ref4) {
|
|
585
586
|
var tr = _ref4.tr;
|
|
586
587
|
if (!(0, _expValEqualsNoExposure.expValEqualsNoExposure)('platform_editor_layout_column_menu', 'isEnabled', true)) {
|
|
587
588
|
return null;
|
|
588
589
|
}
|
|
589
|
-
var selectedLayoutColumnsResult = (0, _layoutColumnSelection.
|
|
590
|
+
var selectedLayoutColumnsResult = (0, _layoutColumnSelection.getLayoutColumnsFromContentSelection)(tr.selection);
|
|
590
591
|
if (!selectedLayoutColumnsResult || selectedLayoutColumnsResult.selectedLayoutColumns.length === 0) {
|
|
591
592
|
return null;
|
|
592
593
|
}
|
|
@@ -646,7 +647,7 @@ var insertLayoutColumnAt = function insertLayoutColumnAt(side, editorAnalyticsAP
|
|
|
646
647
|
attributes: {
|
|
647
648
|
columnCount: redistributedWidths.length,
|
|
648
649
|
endIndex: endIndex,
|
|
649
|
-
inputMethod:
|
|
650
|
+
inputMethod: inputMethod,
|
|
650
651
|
selectedCount: selectedColumnCount,
|
|
651
652
|
side: side,
|
|
652
653
|
startIndex: startIndex
|
|
@@ -658,9 +659,10 @@ var insertLayoutColumnAt = function insertLayoutColumnAt(side, editorAnalyticsAP
|
|
|
658
659
|
};
|
|
659
660
|
};
|
|
660
661
|
var insertLayoutColumn = exports.insertLayoutColumn = function insertLayoutColumn(side, editorAnalyticsAPI, api) {
|
|
662
|
+
var inputMethod = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : _analytics.INPUT_METHOD.LAYOUT_COLUMN_MENU;
|
|
661
663
|
return function (_ref5) {
|
|
662
664
|
var tr = _ref5.tr;
|
|
663
|
-
var result = insertLayoutColumnAt(side, editorAnalyticsAPI)({
|
|
665
|
+
var result = insertLayoutColumnAt(side, editorAnalyticsAPI, inputMethod)({
|
|
664
666
|
tr: tr
|
|
665
667
|
});
|
|
666
668
|
if (result) {
|
|
@@ -801,25 +803,43 @@ var distributeLayoutColumns = exports.distributeLayoutColumns = function distrib
|
|
|
801
803
|
};
|
|
802
804
|
var toggleLayoutColumnMenu = exports.toggleLayoutColumnMenu = function toggleLayoutColumnMenu(_ref11) {
|
|
803
805
|
var anchorPos = _ref11.anchorPos,
|
|
804
|
-
isOpen = _ref11.isOpen
|
|
806
|
+
isOpen = _ref11.isOpen,
|
|
807
|
+
openedViaKeyboard = _ref11.openedViaKeyboard;
|
|
805
808
|
return function (_ref12) {
|
|
806
809
|
var tr = _ref12.tr;
|
|
807
810
|
tr.setMeta('toggleLayoutColumnMenu', {
|
|
808
811
|
anchorPos: anchorPos,
|
|
809
|
-
isOpen: isOpen
|
|
812
|
+
isOpen: isOpen,
|
|
813
|
+
openedViaKeyboard: openedViaKeyboard
|
|
810
814
|
});
|
|
811
815
|
tr.setMeta('scrollIntoView', false);
|
|
812
816
|
return tr;
|
|
813
817
|
};
|
|
814
818
|
};
|
|
815
|
-
var
|
|
819
|
+
var setLayoutColumnDangerPreview = exports.setLayoutColumnDangerPreview = function setLayoutColumnDangerPreview(show) {
|
|
816
820
|
return function (_ref13) {
|
|
817
|
-
var
|
|
821
|
+
var _selectedLayoutColumn;
|
|
818
822
|
var tr = _ref13.tr;
|
|
823
|
+
var selectedLayoutColumnsResult = (0, _layoutColumnSelection.getSelectedLayoutColumnsFromSelection)(tr.selection);
|
|
824
|
+
var positions = show ? (_selectedLayoutColumn = selectedLayoutColumnsResult === null || selectedLayoutColumnsResult === void 0 ? void 0 : selectedLayoutColumnsResult.selectedLayoutColumns.map(function (_ref14) {
|
|
825
|
+
var pos = _ref14.pos;
|
|
826
|
+
return pos;
|
|
827
|
+
})) !== null && _selectedLayoutColumn !== void 0 ? _selectedLayoutColumn : [] : null;
|
|
828
|
+
tr.setMeta('layoutColumnDangerPreview', positions);
|
|
829
|
+
tr.setMeta('addToHistory', false);
|
|
830
|
+
tr.setMeta('scrollIntoView', false);
|
|
831
|
+
return tr;
|
|
832
|
+
};
|
|
833
|
+
};
|
|
834
|
+
var deleteLayoutColumn = exports.deleteLayoutColumn = function deleteLayoutColumn(editorAnalyticsAPI, api) {
|
|
835
|
+
var inputMethod = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : _analytics.INPUT_METHOD.LAYOUT_COLUMN_MENU;
|
|
836
|
+
return function (_ref15) {
|
|
837
|
+
var _api$blockControls4;
|
|
838
|
+
var tr = _ref15.tr;
|
|
819
839
|
if (!(0, _expValEqualsNoExposure.expValEqualsNoExposure)('platform_editor_layout_column_menu', 'isEnabled', true)) {
|
|
820
840
|
return null;
|
|
821
841
|
}
|
|
822
|
-
var selectedLayoutColumnsResult = (0, _layoutColumnSelection.
|
|
842
|
+
var selectedLayoutColumnsResult = (0, _layoutColumnSelection.getLayoutColumnsFromContentSelection)(tr.selection);
|
|
823
843
|
if (!selectedLayoutColumnsResult || selectedLayoutColumnsResult.selectedLayoutColumns.length === 0) {
|
|
824
844
|
return null;
|
|
825
845
|
}
|
|
@@ -836,7 +856,7 @@ var deleteLayoutColumn = exports.deleteLayoutColumn = function deleteLayoutColum
|
|
|
836
856
|
attributes: {
|
|
837
857
|
columnCount: columnCount,
|
|
838
858
|
endIndex: endIndex,
|
|
839
|
-
inputMethod:
|
|
859
|
+
inputMethod: inputMethod,
|
|
840
860
|
selectedCount: selectedLayoutColumns.length,
|
|
841
861
|
startIndex: startIndex
|
|
842
862
|
},
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
var _analytics = require("@atlaskit/editor-common/analytics");
|
|
8
|
+
var _keymaps = require("@atlaskit/editor-common/keymaps");
|
|
9
|
+
var _actions = require("./actions");
|
|
10
|
+
var bindLayoutColumnShortcut = function bindLayoutColumnShortcut(shortcut, command, list) {
|
|
11
|
+
if (!shortcut) {
|
|
12
|
+
return;
|
|
13
|
+
}
|
|
14
|
+
(0, _keymaps.bindKeymapWithEditorCommand)(shortcut, command, list);
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* Creates shortcut handlers for layout column actions.
|
|
19
|
+
*/
|
|
20
|
+
function keymapPlugin(_ref) {
|
|
21
|
+
var _api$analytics, _api$analytics2, _api$analytics3, _api$analytics4, _api$analytics5;
|
|
22
|
+
var api = _ref.api;
|
|
23
|
+
var list = {};
|
|
24
|
+
bindLayoutColumnShortcut(_keymaps.addColumnBefore.common, (0, _actions.insertLayoutColumn)('left', api === null || api === void 0 || (_api$analytics = api.analytics) === null || _api$analytics === void 0 ? void 0 : _api$analytics.actions, api, _analytics.INPUT_METHOD.KEYBOARD), list);
|
|
25
|
+
bindLayoutColumnShortcut(_keymaps.addColumnBeforeVO.common, (0, _actions.insertLayoutColumn)('left', api === null || api === void 0 || (_api$analytics2 = api.analytics) === null || _api$analytics2 === void 0 ? void 0 : _api$analytics2.actions, api, _analytics.INPUT_METHOD.KEYBOARD), list);
|
|
26
|
+
bindLayoutColumnShortcut(_keymaps.addColumnAfter.common, (0, _actions.insertLayoutColumn)('right', api === null || api === void 0 || (_api$analytics3 = api.analytics) === null || _api$analytics3 === void 0 ? void 0 : _api$analytics3.actions, api, _analytics.INPUT_METHOD.KEYBOARD), list);
|
|
27
|
+
bindLayoutColumnShortcut(_keymaps.addColumnAfterVO.common, (0, _actions.insertLayoutColumn)('right', api === null || api === void 0 || (_api$analytics4 = api.analytics) === null || _api$analytics4 === void 0 ? void 0 : _api$analytics4.actions, api, _analytics.INPUT_METHOD.KEYBOARD), list);
|
|
28
|
+
bindLayoutColumnShortcut(_keymaps.deleteColumn.common, (0, _actions.deleteLayoutColumn)(api === null || api === void 0 || (_api$analytics5 = api.analytics) === null || _api$analytics5 === void 0 ? void 0 : _api$analytics5.actions, api, _analytics.INPUT_METHOD.KEYBOARD), list);
|
|
29
|
+
return (0, _keymaps.keymap)(list);
|
|
30
|
+
}
|
|
31
|
+
var _default = exports.default = keymapPlugin;
|
|
@@ -59,6 +59,18 @@ var getNodeDecoration = function getNodeDecoration(pos, node) {
|
|
|
59
59
|
class: 'selected'
|
|
60
60
|
})];
|
|
61
61
|
};
|
|
62
|
+
var getDangerPreviewDecorations = function getDangerPreviewDecorations(state, positions) {
|
|
63
|
+
var _positions$flatMap;
|
|
64
|
+
return (_positions$flatMap = positions === null || positions === void 0 ? void 0 : positions.flatMap(function (pos) {
|
|
65
|
+
var node = state.doc.nodeAt(pos);
|
|
66
|
+
if (!node) {
|
|
67
|
+
return [];
|
|
68
|
+
}
|
|
69
|
+
return [_view2.Decoration.node(pos, pos + node.nodeSize, {
|
|
70
|
+
class: 'layout-column-danger-preview'
|
|
71
|
+
})];
|
|
72
|
+
})) !== null && _positions$flatMap !== void 0 ? _positions$flatMap : [];
|
|
73
|
+
};
|
|
62
74
|
var getInitialPluginState = function getInitialPluginState(options, state) {
|
|
63
75
|
var maybeLayoutSection = (0, _utils3.getMaybeLayoutSection)(state);
|
|
64
76
|
var allowBreakout = options.allowBreakout || false;
|
|
@@ -74,9 +86,52 @@ var getInitialPluginState = function getInitialPluginState(options, state) {
|
|
|
74
86
|
allowSingleColumnLayout: allowSingleColumnLayout,
|
|
75
87
|
isResizing: false,
|
|
76
88
|
isLayoutColumnMenuOpen: false,
|
|
77
|
-
|
|
89
|
+
layoutColumnMenuOpenedViaKeyboard: false,
|
|
90
|
+
layoutColumnMenuAnchorPos: undefined,
|
|
91
|
+
dangerPreviewLayoutColumnPositions: undefined
|
|
78
92
|
};
|
|
79
93
|
};
|
|
94
|
+
var reduceLayoutColumnMenuState = function reduceLayoutColumnMenuState(pluginState, action) {
|
|
95
|
+
switch (action.type) {
|
|
96
|
+
case 'toggleLayoutColumnMenu':
|
|
97
|
+
{
|
|
98
|
+
var _action$meta = action.meta,
|
|
99
|
+
anchorPos = _action$meta.anchorPos,
|
|
100
|
+
isOpen = _action$meta.isOpen,
|
|
101
|
+
openedViaKeyboard = _action$meta.openedViaKeyboard;
|
|
102
|
+
var nextIsOpen = isOpen !== null && isOpen !== void 0 ? isOpen : !pluginState.isLayoutColumnMenuOpen;
|
|
103
|
+
return _objectSpread(_objectSpread({}, pluginState), {}, {
|
|
104
|
+
isLayoutColumnMenuOpen: nextIsOpen,
|
|
105
|
+
layoutColumnMenuOpenedViaKeyboard: nextIsOpen ? openedViaKeyboard !== null && openedViaKeyboard !== void 0 ? openedViaKeyboard : false : false,
|
|
106
|
+
layoutColumnMenuAnchorPos: nextIsOpen ? anchorPos : undefined,
|
|
107
|
+
dangerPreviewLayoutColumnPositions: nextIsOpen ? pluginState.dangerPreviewLayoutColumnPositions : undefined
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
case 'setDangerPreview':
|
|
111
|
+
return _objectSpread(_objectSpread({}, pluginState), {}, {
|
|
112
|
+
dangerPreviewLayoutColumnPositions: action.positions
|
|
113
|
+
});
|
|
114
|
+
case 'clearDangerPreview':
|
|
115
|
+
return _objectSpread(_objectSpread({}, pluginState), {}, {
|
|
116
|
+
dangerPreviewLayoutColumnPositions: undefined
|
|
117
|
+
});
|
|
118
|
+
case 'setResizeState':
|
|
119
|
+
return _objectSpread(_objectSpread({}, pluginState), {}, {
|
|
120
|
+
isResizing: action.isResizing
|
|
121
|
+
});
|
|
122
|
+
case 'syncSelectionState':
|
|
123
|
+
{
|
|
124
|
+
var maybeLayoutSection = (0, _utils3.getMaybeLayoutSection)(action.state);
|
|
125
|
+
return _objectSpread(_objectSpread({}, pluginState), {}, {
|
|
126
|
+
pos: maybeLayoutSection ? maybeLayoutSection.pos : null,
|
|
127
|
+
selectedLayout: (0, _actions.getSelectedLayout)(maybeLayoutSection && maybeLayoutSection.node,
|
|
128
|
+
// Ignored via go/ees005
|
|
129
|
+
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
130
|
+
pluginState.selectedLayout)
|
|
131
|
+
});
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
};
|
|
80
135
|
|
|
81
136
|
// To prevent a single-column layout,
|
|
82
137
|
// if a user attempts to delete a layout column and
|
|
@@ -123,28 +178,39 @@ var _default = exports.default = function _default(options, editorAnalyticsAPI)
|
|
|
123
178
|
return getInitialPluginState(options, state);
|
|
124
179
|
},
|
|
125
180
|
apply: function apply(tr, pluginState, oldState, newState) {
|
|
126
|
-
var
|
|
181
|
+
var _tr$getMeta, _pluginKey$getState;
|
|
182
|
+
var nextPluginState = pluginState;
|
|
127
183
|
var columnMenuMeta = tr.getMeta('toggleLayoutColumnMenu');
|
|
128
|
-
var
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
184
|
+
var dangerPreviewMeta = tr.getMeta('layoutColumnDangerPreview');
|
|
185
|
+
if (columnMenuMeta) {
|
|
186
|
+
nextPluginState = reduceLayoutColumnMenuState(nextPluginState, {
|
|
187
|
+
meta: columnMenuMeta,
|
|
188
|
+
type: 'toggleLayoutColumnMenu'
|
|
189
|
+
});
|
|
190
|
+
}
|
|
191
|
+
if (tr.getMeta('layoutColumnDangerPreview') !== undefined) {
|
|
192
|
+
nextPluginState = reduceLayoutColumnMenuState(nextPluginState, {
|
|
193
|
+
positions: dangerPreviewMeta !== null && dangerPreviewMeta !== void 0 ? dangerPreviewMeta : undefined,
|
|
194
|
+
type: 'setDangerPreview'
|
|
195
|
+
});
|
|
196
|
+
}
|
|
197
|
+
if (tr.docChanged) {
|
|
198
|
+
nextPluginState = reduceLayoutColumnMenuState(nextPluginState, {
|
|
199
|
+
type: 'clearDangerPreview'
|
|
200
|
+
});
|
|
201
|
+
}
|
|
132
202
|
var isResizing = (0, _experiments.editorExperiment)('single_column_layouts', true) ? (_tr$getMeta = tr.getMeta('is-resizer-resizing')) !== null && _tr$getMeta !== void 0 ? _tr$getMeta : (_pluginKey$getState = _pluginKey.pluginKey.getState(oldState)) === null || _pluginKey$getState === void 0 ? void 0 : _pluginKey$getState.isResizing : false;
|
|
203
|
+
nextPluginState = reduceLayoutColumnMenuState(nextPluginState, {
|
|
204
|
+
isResizing: isResizing,
|
|
205
|
+
type: 'setResizeState'
|
|
206
|
+
});
|
|
133
207
|
if (tr.docChanged || tr.selectionSet) {
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
isResizing: isResizing,
|
|
138
|
-
selectedLayout: (0, _actions.getSelectedLayout)(maybeLayoutSection && maybeLayoutSection.node,
|
|
139
|
-
// Ignored via go/ees005
|
|
140
|
-
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
141
|
-
pluginState.selectedLayout)
|
|
208
|
+
return reduceLayoutColumnMenuState(nextPluginState, {
|
|
209
|
+
state: newState,
|
|
210
|
+
type: 'syncSelectionState'
|
|
142
211
|
});
|
|
143
|
-
return newPluginState;
|
|
144
212
|
}
|
|
145
|
-
return
|
|
146
|
-
isResizing: isResizing
|
|
147
|
-
});
|
|
213
|
+
return nextPluginState;
|
|
148
214
|
}
|
|
149
215
|
},
|
|
150
216
|
props: {
|
|
@@ -154,14 +220,17 @@ var _default = exports.default = function _default(options, editorAnalyticsAPI)
|
|
|
154
220
|
if ((0, _experiments.editorExperiment)('advanced_layouts', true) && (0, _experiments.editorExperiment)('platform_editor_layout_column_resize_handle', true) && isLayoutResizingPluginAvailable) {
|
|
155
221
|
var dividerDecorations = (0, _columnResizeDivider.getColumnDividerDecorations)(state, editorViewRef, editorAnalyticsAPI);
|
|
156
222
|
var selectedDecorations = layoutState.pos !== null ? getNodeDecoration(layoutState.pos, state.doc.nodeAt(layoutState.pos)) : [];
|
|
157
|
-
var
|
|
223
|
+
var _dangerPreviewDecorations = getDangerPreviewDecorations(state, layoutState.dangerPreviewLayoutColumnPositions);
|
|
224
|
+
var allDecorations = [].concat((0, _toConsumableArray2.default)(selectedDecorations), (0, _toConsumableArray2.default)(dividerDecorations), (0, _toConsumableArray2.default)(_dangerPreviewDecorations));
|
|
158
225
|
if (allDecorations.length > 0) {
|
|
159
226
|
return _view2.DecorationSet.create(state.doc, allDecorations);
|
|
160
227
|
}
|
|
161
228
|
return undefined;
|
|
162
229
|
}
|
|
163
|
-
|
|
164
|
-
|
|
230
|
+
var dangerPreviewDecorations = getDangerPreviewDecorations(state, layoutState.dangerPreviewLayoutColumnPositions);
|
|
231
|
+
if (layoutState.pos !== null || dangerPreviewDecorations.length > 0) {
|
|
232
|
+
var _selectedDecorations = layoutState.pos !== null ? getNodeDecoration(layoutState.pos, state.doc.nodeAt(layoutState.pos)) : [];
|
|
233
|
+
return _view2.DecorationSet.create(state.doc, [].concat((0, _toConsumableArray2.default)(_selectedDecorations), (0, _toConsumableArray2.default)(dangerPreviewDecorations)));
|
|
165
234
|
}
|
|
166
235
|
return undefined;
|
|
167
236
|
},
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.getSelectedLayoutColumnsFromSelection = exports.getLayoutColumnValign = exports.getLayoutColumnMenuAnchorPos = exports.getAllLayoutColumnsFromSelection = void 0;
|
|
6
|
+
exports.getSelectedLayoutColumnsFromSelection = exports.getLayoutColumnsFromContentSelection = exports.getLayoutColumnValign = exports.getLayoutColumnMenuAnchorPos = exports.getAllLayoutColumnsFromSelection = void 0;
|
|
7
7
|
var _state = require("@atlaskit/editor-prosemirror/state");
|
|
8
8
|
var _utils = require("@atlaskit/editor-prosemirror/utils");
|
|
9
9
|
var findLayoutSectionFromSelection = function findLayoutSectionFromSelection(selection) {
|
|
@@ -28,7 +28,7 @@ var findLayoutColumnsFromLayoutSection = function findLayoutColumnsFromLayoutSec
|
|
|
28
28
|
};
|
|
29
29
|
});
|
|
30
30
|
};
|
|
31
|
-
var
|
|
31
|
+
var getSelectedLayoutColumns = function getSelectedLayoutColumns(selection, isColumnSelected) {
|
|
32
32
|
var layoutSection = findLayoutSectionFromSelection(selection);
|
|
33
33
|
if (!layoutSection) {
|
|
34
34
|
return undefined;
|
|
@@ -41,17 +41,15 @@ var getSelectedLayoutColumnsFromSelection = exports.getSelectedLayoutColumnsFrom
|
|
|
41
41
|
}
|
|
42
42
|
var startIndex = -1;
|
|
43
43
|
var endIndex = -1;
|
|
44
|
-
var selectedLayoutColumns = allLayoutColumns.filter(function (
|
|
45
|
-
|
|
46
|
-
pos = _ref2.pos;
|
|
47
|
-
var isSelected = selection.from <= pos && selection.to >= pos + node.nodeSize;
|
|
48
|
-
if (isSelected) {
|
|
44
|
+
var selectedLayoutColumns = allLayoutColumns.filter(function (column, index) {
|
|
45
|
+
if (isColumnSelected(column, index)) {
|
|
49
46
|
if (startIndex === -1) {
|
|
50
47
|
startIndex = index;
|
|
51
48
|
}
|
|
52
49
|
endIndex = index;
|
|
50
|
+
return true;
|
|
53
51
|
}
|
|
54
|
-
return
|
|
52
|
+
return false;
|
|
55
53
|
});
|
|
56
54
|
return {
|
|
57
55
|
layoutSectionNode: layoutSectionNode,
|
|
@@ -61,6 +59,32 @@ var getSelectedLayoutColumnsFromSelection = exports.getSelectedLayoutColumnsFrom
|
|
|
61
59
|
endIndex: endIndex
|
|
62
60
|
};
|
|
63
61
|
};
|
|
62
|
+
var getSelectedLayoutColumnsFromSelection = exports.getSelectedLayoutColumnsFromSelection = function getSelectedLayoutColumnsFromSelection(selection) {
|
|
63
|
+
return getSelectedLayoutColumns(selection, function (_ref2) {
|
|
64
|
+
var node = _ref2.node,
|
|
65
|
+
pos = _ref2.pos;
|
|
66
|
+
// NodeSelection on a layout column is clearly selected.
|
|
67
|
+
if (selection instanceof _state.NodeSelection && selection.node === node) {
|
|
68
|
+
return true;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
// For TextSelection, only count columns that are fully contained within the selection
|
|
72
|
+
// (not partial text selections inside a column).
|
|
73
|
+
var nodeEndPos = pos + node.nodeSize;
|
|
74
|
+
return !selection.empty && selection.from <= pos && selection.to >= nodeEndPos;
|
|
75
|
+
});
|
|
76
|
+
};
|
|
77
|
+
var getLayoutColumnsFromContentSelection = exports.getLayoutColumnsFromContentSelection = function getLayoutColumnsFromContentSelection(selection) {
|
|
78
|
+
return getSelectedLayoutColumns(selection, function (_ref3) {
|
|
79
|
+
var node = _ref3.node,
|
|
80
|
+
pos = _ref3.pos;
|
|
81
|
+
if (selection instanceof _state.NodeSelection && selection.node === node) {
|
|
82
|
+
return true;
|
|
83
|
+
}
|
|
84
|
+
var nodeEndPos = pos + node.nodeSize;
|
|
85
|
+
return selection.empty ? selection.from > pos && selection.from < nodeEndPos : selection.from < nodeEndPos && selection.to > pos;
|
|
86
|
+
});
|
|
87
|
+
};
|
|
64
88
|
var getAllLayoutColumnsFromSelection = exports.getAllLayoutColumnsFromSelection = function getAllLayoutColumnsFromSelection(selection) {
|
|
65
89
|
var layoutSection = findLayoutSectionFromSelection(selection);
|
|
66
90
|
if (!layoutSection) {
|
|
@@ -79,8 +103,8 @@ var getAllLayoutColumnsFromSelection = exports.getAllLayoutColumnsFromSelection
|
|
|
79
103
|
};
|
|
80
104
|
};
|
|
81
105
|
var getLayoutColumnValign = exports.getLayoutColumnValign = function getLayoutColumnValign(layoutColumn) {
|
|
82
|
-
var
|
|
83
|
-
return layoutColumn ? (
|
|
106
|
+
var _ref4;
|
|
107
|
+
return layoutColumn ? (_ref4 = layoutColumn.attrs.valign) !== null && _ref4 !== void 0 ? _ref4 : 'top' : undefined;
|
|
84
108
|
};
|
|
85
109
|
var getLayoutColumnMenuAnchorPos = exports.getLayoutColumnMenuAnchorPos = function getLayoutColumnMenuAnchorPos(selection, anchorPosFromHandle) {
|
|
86
110
|
var _clickedSelectedColum, _selectedLayoutColumn;
|
|
@@ -88,8 +112,8 @@ var getLayoutColumnMenuAnchorPos = exports.getLayoutColumnMenuAnchorPos = functi
|
|
|
88
112
|
if (!selectedLayoutColumns) {
|
|
89
113
|
return undefined;
|
|
90
114
|
}
|
|
91
|
-
var clickedSelectedColumn = selectedLayoutColumns.selectedLayoutColumns.find(function (
|
|
92
|
-
var pos =
|
|
115
|
+
var clickedSelectedColumn = selectedLayoutColumns.selectedLayoutColumns.find(function (_ref5) {
|
|
116
|
+
var pos = _ref5.pos;
|
|
93
117
|
return pos === anchorPosFromHandle;
|
|
94
118
|
});
|
|
95
119
|
return (_clickedSelectedColum = clickedSelectedColumn === null || clickedSelectedColumn === void 0 ? void 0 : clickedSelectedColumn.pos) !== null && _clickedSelectedColum !== void 0 ? _clickedSelectedColum : (_selectedLayoutColumn = selectedLayoutColumns.selectedLayoutColumns[0]) === null || _selectedLayoutColumn === void 0 ? void 0 : _selectedLayoutColumn.pos;
|
|
@@ -7,25 +7,37 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
7
7
|
exports.DeleteColumnDropdownItem = void 0;
|
|
8
8
|
var _react = _interopRequireWildcard(require("react"));
|
|
9
9
|
var _reactIntl = require("react-intl");
|
|
10
|
+
var _keymaps = require("@atlaskit/editor-common/keymaps");
|
|
10
11
|
var _messages = require("@atlaskit/editor-common/messages");
|
|
11
12
|
var _editorToolbar = require("@atlaskit/editor-toolbar");
|
|
12
13
|
var _useSelectedLayoutColumns = require("./useSelectedLayoutColumns");
|
|
13
14
|
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
|
|
14
15
|
var DeleteColumnDropdownItem = exports.DeleteColumnDropdownItem = function DeleteColumnDropdownItem(_ref) {
|
|
16
|
+
var _tooltip;
|
|
15
17
|
var api = _ref.api;
|
|
16
18
|
var _useIntl = (0, _reactIntl.useIntl)(),
|
|
17
19
|
formatMessage = _useIntl.formatMessage;
|
|
18
20
|
var selectedLayoutColumns = (0, _useSelectedLayoutColumns.useSelectedLayoutColumns)(api);
|
|
21
|
+
var setDangerPreview = (0, _react.useCallback)(function (show) {
|
|
22
|
+
var _api$core, _api$layout;
|
|
23
|
+
api === null || api === void 0 || (_api$core = api.core) === null || _api$core === void 0 || _api$core.actions.execute(api === null || api === void 0 || (_api$layout = api.layout) === null || _api$layout === void 0 ? void 0 : _api$layout.commands.setLayoutColumnDangerPreview(show));
|
|
24
|
+
}, [api]);
|
|
25
|
+
var showDangerPreview = (0, _react.useCallback)(function () {
|
|
26
|
+
setDangerPreview(true);
|
|
27
|
+
}, [setDangerPreview]);
|
|
28
|
+
var hideDangerPreview = (0, _react.useCallback)(function () {
|
|
29
|
+
setDangerPreview(false);
|
|
30
|
+
}, [setDangerPreview]);
|
|
19
31
|
var onClick = (0, _react.useCallback)(function () {
|
|
20
|
-
var _api$
|
|
21
|
-
var deleteCommand = api === null || api === void 0 || (_api$
|
|
22
|
-
api === null || api === void 0 || (_api$
|
|
23
|
-
var _api$
|
|
32
|
+
var _api$layout2, _api$core2;
|
|
33
|
+
var deleteCommand = api === null || api === void 0 || (_api$layout2 = api.layout) === null || _api$layout2 === void 0 ? void 0 : _api$layout2.commands.deleteLayoutColumn();
|
|
34
|
+
api === null || api === void 0 || (_api$core2 = api.core) === null || _api$core2 === void 0 || _api$core2.actions.execute(function (props) {
|
|
35
|
+
var _api$layout3;
|
|
24
36
|
var tr = deleteCommand === null || deleteCommand === void 0 ? void 0 : deleteCommand(props);
|
|
25
37
|
if (!tr) {
|
|
26
38
|
return tr !== null && tr !== void 0 ? tr : null;
|
|
27
39
|
}
|
|
28
|
-
api === null || api === void 0 || (_api$
|
|
40
|
+
api === null || api === void 0 || (_api$layout3 = api.layout) === null || _api$layout3 === void 0 || _api$layout3.commands.toggleLayoutColumnMenu({
|
|
29
41
|
isOpen: false
|
|
30
42
|
})({
|
|
31
43
|
tr: tr
|
|
@@ -38,11 +50,19 @@ var DeleteColumnDropdownItem = exports.DeleteColumnDropdownItem = function Delet
|
|
|
38
50
|
}
|
|
39
51
|
var selectedColumnCount = selectedLayoutColumns.selectedLayoutColumns.length;
|
|
40
52
|
return /*#__PURE__*/_react.default.createElement(_editorToolbar.ToolbarDropdownItem, {
|
|
53
|
+
ariaKeyshortcuts: (0, _keymaps.getAriaKeyshortcuts)(_keymaps.deleteColumn),
|
|
41
54
|
onClick: onClick,
|
|
55
|
+
onFocus: showDangerPreview,
|
|
56
|
+
onMouseEnter: showDangerPreview,
|
|
57
|
+
onBlur: hideDangerPreview,
|
|
58
|
+
onMouseLeave: hideDangerPreview,
|
|
42
59
|
elemBefore: /*#__PURE__*/_react.default.createElement(_editorToolbar.DeleteIcon, {
|
|
43
60
|
color: "currentColor",
|
|
44
61
|
label: "",
|
|
45
62
|
size: "small"
|
|
63
|
+
}),
|
|
64
|
+
elemAfter: /*#__PURE__*/_react.default.createElement(_editorToolbar.ToolbarKeyboardShortcutHint, {
|
|
65
|
+
shortcut: (_tooltip = (0, _keymaps.tooltip)(_keymaps.deleteColumn)) !== null && _tooltip !== void 0 ? _tooltip : ''
|
|
46
66
|
})
|
|
47
67
|
}, formatMessage(_messages.layoutMessages.deleteColumn, {
|
|
48
68
|
count: selectedColumnCount
|
|
@@ -7,6 +7,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
7
7
|
exports.InsertColumnDropdownItem = void 0;
|
|
8
8
|
var _react = _interopRequireWildcard(require("react"));
|
|
9
9
|
var _reactIntl = require("react-intl");
|
|
10
|
+
var _keymaps = require("@atlaskit/editor-common/keymaps");
|
|
10
11
|
var _messages = require("@atlaskit/editor-common/messages");
|
|
11
12
|
var _editorToolbar = require("@atlaskit/editor-toolbar");
|
|
12
13
|
var _actions = require("../../pm-plugins/actions");
|
|
@@ -25,7 +26,7 @@ var INSERT_COLUMN_OPTIONS = {
|
|
|
25
26
|
}
|
|
26
27
|
};
|
|
27
28
|
var InsertColumnDropdownItem = exports.InsertColumnDropdownItem = function InsertColumnDropdownItem(_ref) {
|
|
28
|
-
var _selectedLayoutColumn, _selectedLayoutColumn2;
|
|
29
|
+
var _selectedLayoutColumn, _selectedLayoutColumn2, _tooltip;
|
|
29
30
|
var api = _ref.api,
|
|
30
31
|
side = _ref.side;
|
|
31
32
|
var _useIntl = (0, _reactIntl.useIntl)(),
|
|
@@ -33,6 +34,7 @@ var InsertColumnDropdownItem = exports.InsertColumnDropdownItem = function Inser
|
|
|
33
34
|
var _INSERT_COLUMN_OPTION = INSERT_COLUMN_OPTIONS[side],
|
|
34
35
|
Icon = _INSERT_COLUMN_OPTION.Icon,
|
|
35
36
|
label = _INSERT_COLUMN_OPTION.label;
|
|
37
|
+
var shortcut = side === 'left' ? _keymaps.addColumnBefore : _keymaps.addColumnAfter;
|
|
36
38
|
var selectedLayoutColumns = (0, _useSelectedLayoutColumns.useSelectedLayoutColumns)(api);
|
|
37
39
|
var columnCount = (_selectedLayoutColumn = selectedLayoutColumns === null || selectedLayoutColumns === void 0 || (_selectedLayoutColumn2 = selectedLayoutColumns.layoutSectionNode) === null || _selectedLayoutColumn2 === void 0 ? void 0 : _selectedLayoutColumn2.childCount) !== null && _selectedLayoutColumn !== void 0 ? _selectedLayoutColumn : 0;
|
|
38
40
|
var maxColumnCount = (0, _actions.getEffectiveMaxLayoutColumns)();
|
|
@@ -58,11 +60,15 @@ var InsertColumnDropdownItem = exports.InsertColumnDropdownItem = function Inser
|
|
|
58
60
|
return null;
|
|
59
61
|
}
|
|
60
62
|
return /*#__PURE__*/_react.default.createElement(_editorToolbar.ToolbarDropdownItem, {
|
|
63
|
+
ariaKeyshortcuts: (0, _keymaps.getAriaKeyshortcuts)(shortcut),
|
|
61
64
|
elemBefore: /*#__PURE__*/_react.default.createElement(Icon, {
|
|
62
65
|
color: "currentColor",
|
|
63
66
|
label: "",
|
|
64
67
|
size: "small"
|
|
65
68
|
}),
|
|
69
|
+
elemAfter: /*#__PURE__*/_react.default.createElement(_editorToolbar.ToolbarKeyboardShortcutHint, {
|
|
70
|
+
shortcut: (_tooltip = (0, _keymaps.tooltip)(shortcut)) !== null && _tooltip !== void 0 ? _tooltip : ''
|
|
71
|
+
}),
|
|
66
72
|
onClick: onClick
|
|
67
73
|
}, formatMessage(label));
|
|
68
74
|
};
|