@atlaskit/editor-plugin-layout 10.8.1 → 10.9.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 +22 -0
- package/dist/cjs/layoutPlugin.js +2 -5
- package/dist/cjs/pm-plugins/actions.js +112 -115
- package/dist/cjs/pm-plugins/utils/layout-column-selection.js +63 -96
- package/dist/cjs/ui/LayoutColumnMenu/DeleteColumnDropdownItem.js +7 -2
- package/dist/cjs/ui/LayoutColumnMenu/DistributeColumnsDropdownItem.js +16 -6
- package/dist/cjs/ui/LayoutColumnMenu/InsertColumnDropdownItem.js +4 -4
- package/dist/cjs/ui/LayoutColumnMenu/VerticalAlignDropdownItem.js +1 -1
- package/dist/cjs/ui/LayoutColumnMenu/VerticalAlignNestedMenu.js +2 -2
- package/dist/cjs/ui/LayoutColumnMenu/components.js +20 -9
- package/dist/cjs/ui/LayoutColumnMenu/index.js +6 -2
- package/dist/cjs/ui/LayoutColumnMenu/keys.js +8 -3
- package/dist/cjs/ui/LayoutColumnMenu/useSelectedLayoutColumns.js +4 -3
- package/dist/cjs/ui/LayoutColumnMenu/verticalAlignIcons.js +6 -6
- package/dist/cjs/ui/toolbar.js +69 -11
- package/dist/es2019/layoutPlugin.js +2 -5
- package/dist/es2019/pm-plugins/actions.js +45 -51
- package/dist/es2019/pm-plugins/utils/layout-column-selection.js +62 -91
- package/dist/es2019/ui/LayoutColumnMenu/DeleteColumnDropdownItem.js +8 -3
- package/dist/es2019/ui/LayoutColumnMenu/DistributeColumnsDropdownItem.js +18 -7
- package/dist/es2019/ui/LayoutColumnMenu/InsertColumnDropdownItem.js +4 -4
- package/dist/es2019/ui/LayoutColumnMenu/VerticalAlignDropdownItem.js +1 -1
- package/dist/es2019/ui/LayoutColumnMenu/VerticalAlignNestedMenu.js +2 -2
- package/dist/es2019/ui/LayoutColumnMenu/components.js +23 -10
- package/dist/es2019/ui/LayoutColumnMenu/index.js +6 -2
- package/dist/es2019/ui/LayoutColumnMenu/keys.js +10 -3
- package/dist/es2019/ui/LayoutColumnMenu/useSelectedLayoutColumns.js +6 -4
- package/dist/es2019/ui/LayoutColumnMenu/verticalAlignIcons.js +6 -6
- package/dist/es2019/ui/toolbar.js +67 -11
- package/dist/esm/layoutPlugin.js +3 -6
- package/dist/esm/pm-plugins/actions.js +113 -116
- package/dist/esm/pm-plugins/utils/layout-column-selection.js +62 -95
- package/dist/esm/ui/LayoutColumnMenu/DeleteColumnDropdownItem.js +8 -3
- package/dist/esm/ui/LayoutColumnMenu/DistributeColumnsDropdownItem.js +17 -7
- package/dist/esm/ui/LayoutColumnMenu/InsertColumnDropdownItem.js +4 -4
- package/dist/esm/ui/LayoutColumnMenu/VerticalAlignDropdownItem.js +1 -1
- package/dist/esm/ui/LayoutColumnMenu/VerticalAlignNestedMenu.js +2 -2
- package/dist/esm/ui/LayoutColumnMenu/components.js +21 -10
- package/dist/esm/ui/LayoutColumnMenu/index.js +6 -2
- package/dist/esm/ui/LayoutColumnMenu/keys.js +7 -2
- package/dist/esm/ui/LayoutColumnMenu/useSelectedLayoutColumns.js +5 -4
- package/dist/esm/ui/LayoutColumnMenu/verticalAlignIcons.js +6 -6
- package/dist/esm/ui/toolbar.js +70 -12
- package/dist/types/layoutPluginType.d.ts +3 -1
- package/dist/types/pm-plugins/actions.d.ts +5 -1
- package/dist/types/pm-plugins/utils/layout-column-selection.d.ts +9 -8
- package/dist/types/ui/LayoutColumnMenu/keys.d.ts +2 -0
- package/dist/types/ui/LayoutColumnMenu/verticalAlignIcons.d.ts +2 -2
- package/dist/types-ts4.5/layoutPluginType.d.ts +3 -1
- package/dist/types-ts4.5/pm-plugins/actions.d.ts +5 -1
- package/dist/types-ts4.5/pm-plugins/utils/layout-column-selection.d.ts +9 -8
- package/dist/types-ts4.5/ui/LayoutColumnMenu/keys.d.ts +2 -0
- package/dist/types-ts4.5/ui/LayoutColumnMenu/verticalAlignIcons.d.ts +2 -2
- package/package.json +4 -3
|
@@ -10,22 +10,22 @@ var _reactIntl = require("react-intl");
|
|
|
10
10
|
var _messages = require("@atlaskit/editor-common/messages");
|
|
11
11
|
var _editorToolbar = require("@atlaskit/editor-toolbar");
|
|
12
12
|
var _actions = require("../../pm-plugins/actions");
|
|
13
|
-
var _layoutColumnSelection = require("../../pm-plugins/utils/layout-column-selection");
|
|
14
13
|
var _useSelectedLayoutColumns = require("./useSelectedLayoutColumns");
|
|
15
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); }
|
|
16
15
|
var INSERT_COLUMN_OPTIONS = {
|
|
17
16
|
left: {
|
|
18
17
|
Icon: _editorToolbar.TableColumnAddLeftIcon,
|
|
19
|
-
label: _messages.layoutMessages.
|
|
18
|
+
label: _messages.layoutMessages.addColumnLeft,
|
|
20
19
|
side: 'left'
|
|
21
20
|
},
|
|
22
21
|
right: {
|
|
23
22
|
Icon: _editorToolbar.TableColumnAddRightIcon,
|
|
24
|
-
label: _messages.layoutMessages.
|
|
23
|
+
label: _messages.layoutMessages.addColumnRight,
|
|
25
24
|
side: 'right'
|
|
26
25
|
}
|
|
27
26
|
};
|
|
28
27
|
var InsertColumnDropdownItem = exports.InsertColumnDropdownItem = function InsertColumnDropdownItem(_ref) {
|
|
28
|
+
var _selectedLayoutColumn, _selectedLayoutColumn2;
|
|
29
29
|
var api = _ref.api,
|
|
30
30
|
side = _ref.side;
|
|
31
31
|
var _useIntl = (0, _reactIntl.useIntl)(),
|
|
@@ -34,7 +34,7 @@ var InsertColumnDropdownItem = exports.InsertColumnDropdownItem = function Inser
|
|
|
34
34
|
Icon = _INSERT_COLUMN_OPTION.Icon,
|
|
35
35
|
label = _INSERT_COLUMN_OPTION.label;
|
|
36
36
|
var selectedLayoutColumns = (0, _useSelectedLayoutColumns.useSelectedLayoutColumns)(api);
|
|
37
|
-
var columnCount = (0
|
|
37
|
+
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
38
|
var maxColumnCount = (0, _actions.getEffectiveMaxLayoutColumns)();
|
|
39
39
|
var canInsertColumn = selectedLayoutColumns !== undefined && columnCount < maxColumnCount;
|
|
40
40
|
var onClick = (0, _react.useCallback)(function () {
|
|
@@ -20,7 +20,7 @@ var VerticalAlignDropdownItem = exports.VerticalAlignDropdownItem = function Ver
|
|
|
20
20
|
var _useIntl = (0, _reactIntl.useIntl)(),
|
|
21
21
|
formatMessage = _useIntl.formatMessage;
|
|
22
22
|
var selectedLayoutColumns = (0, _useSelectedLayoutColumns.useSelectedLayoutColumns)(api);
|
|
23
|
-
var isSelected = (_selectedLayoutColumn = selectedLayoutColumns === null || selectedLayoutColumns === void 0 ? void 0 : selectedLayoutColumns.
|
|
23
|
+
var isSelected = (_selectedLayoutColumn = selectedLayoutColumns === null || selectedLayoutColumns === void 0 ? void 0 : selectedLayoutColumns.selectedLayoutColumns.every(function (_ref2) {
|
|
24
24
|
var node = _ref2.node;
|
|
25
25
|
return (0, _layoutColumnSelection.getLayoutColumnValign)(node) === value;
|
|
26
26
|
})) !== null && _selectedLayoutColumn !== void 0 ? _selectedLayoutColumn : false;
|
|
@@ -20,7 +20,7 @@ var VerticalAlignNestedMenu = exports.VerticalAlignNestedMenu = function Vertica
|
|
|
20
20
|
formatMessage = _useIntl.formatMessage;
|
|
21
21
|
var selectedLayoutColumns = (0, _useSelectedLayoutColumns.useSelectedLayoutColumns)(api);
|
|
22
22
|
var currentValign = (0, _react.useMemo)(function () {
|
|
23
|
-
var selectedColumns = selectedLayoutColumns === null || selectedLayoutColumns === void 0 ? void 0 : selectedLayoutColumns.
|
|
23
|
+
var selectedColumns = selectedLayoutColumns === null || selectedLayoutColumns === void 0 ? void 0 : selectedLayoutColumns.selectedLayoutColumns;
|
|
24
24
|
var firstColumn = selectedColumns === null || selectedColumns === void 0 ? void 0 : selectedColumns[0];
|
|
25
25
|
var firstValign = (0, _layoutColumnSelection.getLayoutColumnValign)(firstColumn === null || firstColumn === void 0 ? void 0 : firstColumn.node);
|
|
26
26
|
if (!firstValign || !(selectedColumns !== null && selectedColumns !== void 0 && selectedColumns.every(function (_ref2) {
|
|
@@ -31,7 +31,7 @@ var VerticalAlignNestedMenu = exports.VerticalAlignNestedMenu = function Vertica
|
|
|
31
31
|
}
|
|
32
32
|
return firstValign;
|
|
33
33
|
}, [selectedLayoutColumns]);
|
|
34
|
-
var TriggerIcon = currentValign ? _verticalAlignIcons.VERTICAL_ALIGN_ICONS[currentValign] : _verticalAlignIcons.VERTICAL_ALIGN_ICONS.
|
|
34
|
+
var TriggerIcon = currentValign ? _verticalAlignIcons.VERTICAL_ALIGN_ICONS[currentValign] : _verticalAlignIcons.VERTICAL_ALIGN_ICONS.middle;
|
|
35
35
|
return /*#__PURE__*/_react.default.createElement(_editorToolbar.ToolbarNestedDropdownMenu, {
|
|
36
36
|
elemBefore: /*#__PURE__*/_react.default.createElement(TriggerIcon, {
|
|
37
37
|
label: "",
|
|
@@ -71,15 +71,6 @@ var getLayoutColumnMenuComponents = exports.getLayoutColumnMenuComponents = func
|
|
|
71
71
|
parents: [_objectSpread(_objectSpread({}, _keys.LAYOUT_COLUMN_MENU_SECTION), {}, {
|
|
72
72
|
rank: _keys.LAYOUT_COLUMN_MENU_SECTION_RANK[_keys.DISTRIBUTE_COLUMNS_MENU_ITEM.key]
|
|
73
73
|
})]
|
|
74
|
-
}), _objectSpread(_objectSpread({}, _keys.DELETE_COLUMN_MENU_ITEM), {}, {
|
|
75
|
-
component: function component() {
|
|
76
|
-
return /*#__PURE__*/_react.default.createElement(_DeleteColumnDropdownItem.DeleteColumnDropdownItem, {
|
|
77
|
-
api: api
|
|
78
|
-
});
|
|
79
|
-
},
|
|
80
|
-
parents: [_objectSpread(_objectSpread({}, _keys.LAYOUT_COLUMN_MENU_SECTION), {}, {
|
|
81
|
-
rank: _keys.LAYOUT_COLUMN_MENU_SECTION_RANK[_keys.DELETE_COLUMN_MENU_ITEM.key]
|
|
82
|
-
})]
|
|
83
74
|
}), _objectSpread(_objectSpread({}, _keys.VERTICAL_ALIGN_MENU), {}, {
|
|
84
75
|
component: function component(_ref4) {
|
|
85
76
|
var children = _ref4.children;
|
|
@@ -127,5 +118,25 @@ var getLayoutColumnMenuComponents = exports.getLayoutColumnMenuComponents = func
|
|
|
127
118
|
parents: [_objectSpread(_objectSpread({}, _keys.LAYOUT_COLUMN_VERTICAL_ALIGN_MENU_SECTION), {}, {
|
|
128
119
|
rank: _keys.VERTICAL_ALIGN_MENU_SECTION_RANK[_keys.VERTICAL_ALIGN_BOTTOM_MENU_ITEM.key]
|
|
129
120
|
})]
|
|
121
|
+
}), // --- Danger section (Delete column) ---
|
|
122
|
+
_objectSpread(_objectSpread({}, _keys.LAYOUT_COLUMN_DANGER_SECTION), {}, {
|
|
123
|
+
component: function component(_ref5) {
|
|
124
|
+
var children = _ref5.children;
|
|
125
|
+
return /*#__PURE__*/_react.default.createElement(_editorToolbar.ToolbarDropdownItemSection, {
|
|
126
|
+
hasSeparator: true
|
|
127
|
+
}, children);
|
|
128
|
+
},
|
|
129
|
+
parents: [_objectSpread(_objectSpread({}, _keys.LAYOUT_COLUMN_MENU), {}, {
|
|
130
|
+
rank: _keys.LAYOUT_COLUMN_MENU_RANK[_keys.LAYOUT_COLUMN_DANGER_SECTION.key]
|
|
131
|
+
})]
|
|
132
|
+
}), _objectSpread(_objectSpread({}, _keys.DELETE_COLUMN_MENU_ITEM), {}, {
|
|
133
|
+
component: function component() {
|
|
134
|
+
return /*#__PURE__*/_react.default.createElement(_DeleteColumnDropdownItem.DeleteColumnDropdownItem, {
|
|
135
|
+
api: api
|
|
136
|
+
});
|
|
137
|
+
},
|
|
138
|
+
parents: [_objectSpread(_objectSpread({}, _keys.LAYOUT_COLUMN_DANGER_SECTION), {}, {
|
|
139
|
+
rank: _keys.LAYOUT_COLUMN_DANGER_SECTION_RANK[_keys.DELETE_COLUMN_MENU_ITEM.key]
|
|
140
|
+
})]
|
|
130
141
|
})];
|
|
131
142
|
};
|
|
@@ -10,6 +10,7 @@ var _hooks = require("@atlaskit/editor-common/hooks");
|
|
|
10
10
|
var _styles = require("@atlaskit/editor-common/styles");
|
|
11
11
|
var _ui = require("@atlaskit/editor-common/ui");
|
|
12
12
|
var _uiReact = require("@atlaskit/editor-common/ui-react");
|
|
13
|
+
var _userIntent = require("@atlaskit/editor-common/user-intent");
|
|
13
14
|
var _editorSharedStyles = require("@atlaskit/editor-shared-styles");
|
|
14
15
|
var _editorToolbar = require("@atlaskit/editor-toolbar");
|
|
15
16
|
var _editorUiControlModel = require("@atlaskit/editor-ui-control-model");
|
|
@@ -26,7 +27,7 @@ var TOOLBAR_MENU_SELECTOR = '[data-toolbar-component="menu"]';
|
|
|
26
27
|
*/
|
|
27
28
|
var getLayoutColumnMenuTarget = function getLayoutColumnMenuTarget(editorView, selection, anchorPosFromHandle) {
|
|
28
29
|
var _columnDomRef$parentE;
|
|
29
|
-
var anchorPos = (0, _layoutColumnSelection.getLayoutColumnMenuAnchorPos)(selection, anchorPosFromHandle);
|
|
30
|
+
var anchorPos = selection && (0, _layoutColumnSelection.getLayoutColumnMenuAnchorPos)(selection, anchorPosFromHandle);
|
|
30
31
|
if (anchorPos === undefined) {
|
|
31
32
|
return null;
|
|
32
33
|
}
|
|
@@ -104,6 +105,9 @@ var LayoutColumnMenu = exports.LayoutColumnMenu = /*#__PURE__*/_react.default.me
|
|
|
104
105
|
offset: LAYOUT_COLUMN_MENU_POPUP_OFFSET,
|
|
105
106
|
handleClickOutside: handleClickOutside,
|
|
106
107
|
handleEscapeKeydown: closeLayoutColumnMenu
|
|
108
|
+
}, /*#__PURE__*/_react.default.createElement(_userIntent.UserIntentPopupWrapper, {
|
|
109
|
+
api: api,
|
|
110
|
+
userIntent: "layoutColumnMenuPopupOpen"
|
|
107
111
|
}, /*#__PURE__*/_react.default.createElement(_editorToolbar.ToolbarDropdownMenuProvider, {
|
|
108
112
|
isOpen: isLayoutColumnMenuOpen,
|
|
109
113
|
setIsOpen: handleSetIsOpen
|
|
@@ -111,5 +115,5 @@ var LayoutColumnMenu = exports.LayoutColumnMenu = /*#__PURE__*/_react.default.me
|
|
|
111
115
|
components: components,
|
|
112
116
|
fallbacks: _components.LAYOUT_COLUMN_MENU_FALLBACKS,
|
|
113
117
|
surface: _keys.LAYOUT_COLUMN_MENU
|
|
114
|
-
})));
|
|
118
|
+
}))));
|
|
115
119
|
});
|
|
@@ -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.VERTICAL_ALIGN_TOP_MENU_ITEM = exports.VERTICAL_ALIGN_MIDDLE_MENU_ITEM = exports.VERTICAL_ALIGN_MENU_SECTION_RANK = exports.VERTICAL_ALIGN_MENU_RANK = exports.VERTICAL_ALIGN_MENU = exports.VERTICAL_ALIGN_BOTTOM_MENU_ITEM = exports.LAYOUT_COLUMN_VERTICAL_ALIGN_MENU_SECTION = exports.LAYOUT_COLUMN_MENU_SECTION_RANK = exports.LAYOUT_COLUMN_MENU_SECTION = exports.LAYOUT_COLUMN_MENU_RANK = exports.LAYOUT_COLUMN_MENU = exports.INSERT_COLUMN_RIGHT_MENU_ITEM = exports.INSERT_COLUMN_LEFT_MENU_ITEM = exports.DISTRIBUTE_COLUMNS_MENU_ITEM = exports.DELETE_COLUMN_MENU_ITEM = void 0;
|
|
7
|
+
exports.VERTICAL_ALIGN_TOP_MENU_ITEM = exports.VERTICAL_ALIGN_MIDDLE_MENU_ITEM = exports.VERTICAL_ALIGN_MENU_SECTION_RANK = exports.VERTICAL_ALIGN_MENU_RANK = exports.VERTICAL_ALIGN_MENU = exports.VERTICAL_ALIGN_BOTTOM_MENU_ITEM = exports.LAYOUT_COLUMN_VERTICAL_ALIGN_MENU_SECTION = exports.LAYOUT_COLUMN_MENU_SECTION_RANK = exports.LAYOUT_COLUMN_MENU_SECTION = exports.LAYOUT_COLUMN_MENU_RANK = exports.LAYOUT_COLUMN_MENU = exports.LAYOUT_COLUMN_DANGER_SECTION_RANK = exports.LAYOUT_COLUMN_DANGER_SECTION = exports.INSERT_COLUMN_RIGHT_MENU_ITEM = exports.INSERT_COLUMN_LEFT_MENU_ITEM = exports.DISTRIBUTE_COLUMNS_MENU_ITEM = exports.DELETE_COLUMN_MENU_ITEM = void 0;
|
|
8
8
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
9
9
|
// --- Menu surface ---
|
|
10
10
|
|
|
@@ -23,7 +23,11 @@ var LAYOUT_COLUMN_VERTICAL_ALIGN_MENU_SECTION = exports.LAYOUT_COLUMN_VERTICAL_A
|
|
|
23
23
|
type: 'menu-section',
|
|
24
24
|
key: 'layout-column-vertical-align-menu-section'
|
|
25
25
|
};
|
|
26
|
-
var
|
|
26
|
+
var LAYOUT_COLUMN_DANGER_SECTION = exports.LAYOUT_COLUMN_DANGER_SECTION = {
|
|
27
|
+
type: 'menu-section',
|
|
28
|
+
key: 'layout-column-danger-section'
|
|
29
|
+
};
|
|
30
|
+
var LAYOUT_COLUMN_MENU_RANK = exports.LAYOUT_COLUMN_MENU_RANK = (0, _defineProperty2.default)((0, _defineProperty2.default)({}, LAYOUT_COLUMN_MENU_SECTION.key, 100), LAYOUT_COLUMN_DANGER_SECTION.key, 200);
|
|
27
31
|
|
|
28
32
|
// --- Menus ---
|
|
29
33
|
|
|
@@ -65,6 +69,7 @@ var DELETE_COLUMN_MENU_ITEM = exports.DELETE_COLUMN_MENU_ITEM = {
|
|
|
65
69
|
|
|
66
70
|
// --- Item ranks within sections ---
|
|
67
71
|
|
|
68
|
-
var LAYOUT_COLUMN_MENU_SECTION_RANK = exports.LAYOUT_COLUMN_MENU_SECTION_RANK = (0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)(
|
|
72
|
+
var LAYOUT_COLUMN_MENU_SECTION_RANK = exports.LAYOUT_COLUMN_MENU_SECTION_RANK = (0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)({}, VERTICAL_ALIGN_MENU.key, 100), INSERT_COLUMN_LEFT_MENU_ITEM.key, 200), INSERT_COLUMN_RIGHT_MENU_ITEM.key, 300), DISTRIBUTE_COLUMNS_MENU_ITEM.key, 400);
|
|
73
|
+
var LAYOUT_COLUMN_DANGER_SECTION_RANK = exports.LAYOUT_COLUMN_DANGER_SECTION_RANK = (0, _defineProperty2.default)({}, DELETE_COLUMN_MENU_ITEM.key, 100);
|
|
69
74
|
var VERTICAL_ALIGN_MENU_RANK = exports.VERTICAL_ALIGN_MENU_RANK = (0, _defineProperty2.default)({}, LAYOUT_COLUMN_VERTICAL_ALIGN_MENU_SECTION.key, 100);
|
|
70
75
|
var VERTICAL_ALIGN_MENU_SECTION_RANK = exports.VERTICAL_ALIGN_MENU_SECTION_RANK = (0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)({}, VERTICAL_ALIGN_TOP_MENU_ITEM.key, 100), VERTICAL_ALIGN_MIDDLE_MENU_ITEM.key, 200), VERTICAL_ALIGN_BOTTOM_MENU_ITEM.key, 300);
|
|
@@ -7,8 +7,9 @@ exports.useSelectedLayoutColumns = void 0;
|
|
|
7
7
|
var _hooks = require("@atlaskit/editor-common/hooks");
|
|
8
8
|
var _layoutColumnSelection = require("../../pm-plugins/utils/layout-column-selection");
|
|
9
9
|
var useSelectedLayoutColumns = exports.useSelectedLayoutColumns = function useSelectedLayoutColumns(api) {
|
|
10
|
-
return (0, _hooks.useSharedPluginStateWithSelector)(api, ['selection'], function (
|
|
11
|
-
var
|
|
12
|
-
|
|
10
|
+
return (0, _hooks.useSharedPluginStateWithSelector)(api, ['selection'], function (_ref) {
|
|
11
|
+
var selectionState = _ref.selectionState;
|
|
12
|
+
var selectedLayoutColumns = (selectionState === null || selectionState === void 0 ? void 0 : selectionState.selection) && (0, _layoutColumnSelection.getSelectedLayoutColumnsFromSelection)(selectionState.selection);
|
|
13
|
+
return selectedLayoutColumns !== null && selectedLayoutColumns !== void 0 && selectedLayoutColumns.selectedLayoutColumns.length ? selectedLayoutColumns : undefined;
|
|
13
14
|
});
|
|
14
15
|
};
|
|
@@ -5,14 +5,14 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
value: true
|
|
6
6
|
});
|
|
7
7
|
exports.VERTICAL_ALIGN_ICONS = void 0;
|
|
8
|
-
var
|
|
9
|
-
var
|
|
10
|
-
var
|
|
8
|
+
var _alignPositionBottom = _interopRequireDefault(require("@atlaskit/icon-lab/core/align-position-bottom"));
|
|
9
|
+
var _alignPositionCenterVertical = _interopRequireDefault(require("@atlaskit/icon-lab/core/align-position-center-vertical"));
|
|
10
|
+
var _alignPositionTop = _interopRequireDefault(require("@atlaskit/icon-lab/core/align-position-top"));
|
|
11
11
|
// Disable no-re-export here, this is a useful mapping file for icon lookup used in multiple places
|
|
12
12
|
/* eslint-disable @atlaskit/editor/no-re-export */
|
|
13
13
|
|
|
14
14
|
var VERTICAL_ALIGN_ICONS = exports.VERTICAL_ALIGN_ICONS = {
|
|
15
|
-
top:
|
|
16
|
-
middle:
|
|
17
|
-
bottom:
|
|
15
|
+
top: _alignPositionTop.default,
|
|
16
|
+
middle: _alignPositionCenterVertical.default,
|
|
17
|
+
bottom: _alignPositionBottom.default
|
|
18
18
|
};
|
package/dist/cjs/ui/toolbar.js
CHANGED
|
@@ -22,8 +22,11 @@ var _layoutThreeColumnsSidebars = _interopRequireDefault(require("@atlaskit/icon
|
|
|
22
22
|
var _layoutTwoColumns = _interopRequireDefault(require("@atlaskit/icon/core/layout-two-columns"));
|
|
23
23
|
var _layoutTwoColumnsSidebarLeft = _interopRequireDefault(require("@atlaskit/icon/core/layout-two-columns-sidebar-left"));
|
|
24
24
|
var _layoutTwoColumnsSidebarRight = _interopRequireDefault(require("@atlaskit/icon/core/layout-two-columns-sidebar-right"));
|
|
25
|
+
var _tableColumnsDistribute = _interopRequireDefault(require("@atlaskit/icon/core/table-columns-distribute"));
|
|
26
|
+
var _expValEqualsNoExposure = require("@atlaskit/tmp-editor-statsig/exp-val-equals-no-exposure");
|
|
25
27
|
var _experiments = require("@atlaskit/tmp-editor-statsig/experiments");
|
|
26
28
|
var _actions = require("../pm-plugins/actions");
|
|
29
|
+
var _layoutColumnDistribution = require("../pm-plugins/utils/layout-column-distribution");
|
|
27
30
|
var _LayoutColumnsIcon = require("./icons/LayoutColumnsIcon");
|
|
28
31
|
var _LayoutThreeWithLeftSidebars = require("./icons/LayoutThreeWithLeftSidebars");
|
|
29
32
|
var _LayoutThreeWithRightSidebars = require("./icons/LayoutThreeWithRightSidebars");
|
|
@@ -65,7 +68,7 @@ var SIDEBAR_LAYOUT_TYPES = [{
|
|
|
65
68
|
}];
|
|
66
69
|
|
|
67
70
|
// These are used for advanced layout options
|
|
68
|
-
var
|
|
71
|
+
var LAYOUT_WITH_TWO_COL_DISTRIBUTION_OLD = [{
|
|
69
72
|
id: 'editor.layout.twoEquals',
|
|
70
73
|
type: 'two_equal',
|
|
71
74
|
title: _messages.layoutMessages.twoColumns,
|
|
@@ -81,7 +84,7 @@ var LAYOUT_WITH_TWO_COL_DISTRIBUTION = [{
|
|
|
81
84
|
title: _messages.layoutMessages.leftSidebar,
|
|
82
85
|
icon: _layoutTwoColumnsSidebarLeft.default
|
|
83
86
|
}];
|
|
84
|
-
var
|
|
87
|
+
var LAYOUT_WITH_THREE_COL_DISTRIBUTION_OLD = [{
|
|
85
88
|
id: 'editor.layout.threeEquals',
|
|
86
89
|
type: 'three_equal',
|
|
87
90
|
title: _messages.layoutMessages.threeColumns,
|
|
@@ -104,6 +107,35 @@ var LAYOUT_WITH_THREE_COL_DISTRIBUTION = [{
|
|
|
104
107
|
icon: _LayoutThreeWithLeftSidebars.LayoutThreeWithLeftSidebarsIcon,
|
|
105
108
|
iconFallback: _LayoutThreeWithLeftSidebars.LayoutThreeWithLeftSidebarsIcon
|
|
106
109
|
}];
|
|
110
|
+
var LAYOUT_WITH_TWO_COL_DISTRIBUTION = [{
|
|
111
|
+
id: 'editor.layout.twoRightSidebar',
|
|
112
|
+
type: 'two_right_sidebar',
|
|
113
|
+
title: _messages.layoutMessages.rightSidebar,
|
|
114
|
+
icon: _layoutTwoColumnsSidebarRight.default
|
|
115
|
+
}, {
|
|
116
|
+
id: 'editor.layout.twoLeftSidebar',
|
|
117
|
+
type: 'two_left_sidebar',
|
|
118
|
+
title: _messages.layoutMessages.leftSidebar,
|
|
119
|
+
icon: _layoutTwoColumnsSidebarLeft.default
|
|
120
|
+
}];
|
|
121
|
+
var LAYOUT_WITH_THREE_COL_DISTRIBUTION = [{
|
|
122
|
+
id: 'editor.layout.threeWithSidebars',
|
|
123
|
+
type: 'three_with_sidebars',
|
|
124
|
+
title: _messages.layoutMessages.threeColumnsWithSidebars,
|
|
125
|
+
icon: _layoutThreeColumnsSidebars.default
|
|
126
|
+
}, {
|
|
127
|
+
id: 'editor.layout.threeRightSidebars',
|
|
128
|
+
type: 'three_right_sidebars',
|
|
129
|
+
title: _messages.layoutMessages.threeColumnsWithRightSidebars,
|
|
130
|
+
icon: _LayoutThreeWithRightSidebars.LayoutThreeWithRightSidebarsIcon,
|
|
131
|
+
iconFallback: _LayoutThreeWithRightSidebars.LayoutThreeWithRightSidebarsIcon
|
|
132
|
+
}, {
|
|
133
|
+
id: 'editor.layout.threeLeftSidebars',
|
|
134
|
+
type: 'three_left_sidebars',
|
|
135
|
+
title: _messages.layoutMessages.threeColumnsWithLeftSidebars,
|
|
136
|
+
icon: _LayoutThreeWithLeftSidebars.LayoutThreeWithLeftSidebarsIcon,
|
|
137
|
+
iconFallback: _LayoutThreeWithLeftSidebars.LayoutThreeWithLeftSidebarsIcon
|
|
138
|
+
}];
|
|
107
139
|
var buildLayoutButton = function buildLayoutButton(intl, item, currentLayout, editorAnalyticsAPI) {
|
|
108
140
|
return {
|
|
109
141
|
id: item.id,
|
|
@@ -118,7 +150,9 @@ var buildLayoutButton = function buildLayoutButton(intl, item, currentLayout, ed
|
|
|
118
150
|
};
|
|
119
151
|
};
|
|
120
152
|
var layoutToolbarTitle = exports.layoutToolbarTitle = 'Layout floating controls';
|
|
121
|
-
var iconPlaceholder = _layoutTwoColumns.default
|
|
153
|
+
var iconPlaceholder = /*#__PURE__*/_react.default.createElement(_layoutTwoColumns.default, {
|
|
154
|
+
label: ""
|
|
155
|
+
}); // TODO: ED-25466 - Replace with proper icon
|
|
122
156
|
|
|
123
157
|
var getLayoutColumnsIcons = function getLayoutColumnsIcons(colCount) {
|
|
124
158
|
if (!(0, _experiments.editorExperiment)('single_column_layouts', true) && !(0, _experiments.editorExperiment)('platform_editor_controls', 'variant1')) {
|
|
@@ -145,11 +179,15 @@ var getLayoutColumnsIcons = function getLayoutColumnsIcons(colCount) {
|
|
|
145
179
|
return undefined;
|
|
146
180
|
}
|
|
147
181
|
};
|
|
182
|
+
var getLayoutColumnWidths = function getLayoutColumnWidths(node) {
|
|
183
|
+
return node.children.map(function (child) {
|
|
184
|
+
return child.attrs.width;
|
|
185
|
+
});
|
|
186
|
+
};
|
|
148
187
|
var getAdvancedLayoutItems = function getAdvancedLayoutItems(_ref) {
|
|
149
188
|
var addSidebarLayouts = _ref.addSidebarLayouts,
|
|
150
189
|
intl = _ref.intl,
|
|
151
190
|
editorAnalyticsAPI = _ref.editorAnalyticsAPI,
|
|
152
|
-
state = _ref.state,
|
|
153
191
|
node = _ref.node,
|
|
154
192
|
nodeType = _ref.nodeType,
|
|
155
193
|
separator = _ref.separator,
|
|
@@ -157,7 +195,8 @@ var getAdvancedLayoutItems = function getAdvancedLayoutItems(_ref) {
|
|
|
157
195
|
currentLayout = _ref.currentLayout,
|
|
158
196
|
allowAdvancedSingleColumnLayout = _ref.allowAdvancedSingleColumnLayout;
|
|
159
197
|
var numberOfColumns = node.content.childCount || 2;
|
|
160
|
-
var
|
|
198
|
+
var isLayoutColumnMenuEnabled = (0, _expValEqualsNoExposure.expValEqualsNoExposure)('platform_editor_layout_column_menu', 'isEnabled', true);
|
|
199
|
+
var distributionOptions = isLayoutColumnMenuEnabled ? numberOfColumns === 2 ? LAYOUT_WITH_TWO_COL_DISTRIBUTION : numberOfColumns === 3 ? LAYOUT_WITH_THREE_COL_DISTRIBUTION : [] : numberOfColumns === 2 ? LAYOUT_WITH_TWO_COL_DISTRIBUTION_OLD : numberOfColumns === 3 ? LAYOUT_WITH_THREE_COL_DISTRIBUTION_OLD : [];
|
|
161
200
|
var columnOptions = [{
|
|
162
201
|
title: intl.formatMessage(_messages.layoutMessages.columnOption, {
|
|
163
202
|
count: 2
|
|
@@ -191,7 +230,7 @@ var getAdvancedLayoutItems = function getAdvancedLayoutItems(_ref) {
|
|
|
191
230
|
onClick: (0, _actions.setPresetLayout)(editorAnalyticsAPI)('five_equal'),
|
|
192
231
|
selected: numberOfColumns === 5
|
|
193
232
|
}];
|
|
194
|
-
var
|
|
233
|
+
var dropdownOptions = [].concat((0, _toConsumableArray2.default)(allowAdvancedSingleColumnLayout ? [{
|
|
195
234
|
title: intl.formatMessage(_messages.layoutMessages.columnOption, {
|
|
196
235
|
count: 1
|
|
197
236
|
}),
|
|
@@ -199,19 +238,39 @@ var getAdvancedLayoutItems = function getAdvancedLayoutItems(_ref) {
|
|
|
199
238
|
icon: getLayoutColumnsIcons(1) || iconPlaceholder,
|
|
200
239
|
onClick: (0, _actions.setPresetLayout)(editorAnalyticsAPI)('single'),
|
|
201
240
|
selected: numberOfColumns === 1
|
|
202
|
-
} : [];
|
|
241
|
+
}] : []), columnOptions);
|
|
242
|
+
var distributeColumnsButton = isLayoutColumnMenuEnabled && numberOfColumns > 1 ? {
|
|
243
|
+
disabled: (0, _layoutColumnDistribution.isDistributedUniformly)(getLayoutColumnWidths(node)),
|
|
244
|
+
icon: _tableColumnsDistribute.default,
|
|
245
|
+
onClick: function onClick(editorState, dispatch) {
|
|
246
|
+
var tr = (0, _actions.distributeLayoutColumns)(editorAnalyticsAPI)({
|
|
247
|
+
inputMethod: _analytics.INPUT_METHOD.FLOATING_TB,
|
|
248
|
+
target: 'allColumns'
|
|
249
|
+
})({
|
|
250
|
+
tr: editorState.tr
|
|
251
|
+
});
|
|
252
|
+
if (!tr) {
|
|
253
|
+
return false;
|
|
254
|
+
}
|
|
255
|
+
dispatch === null || dispatch === void 0 || dispatch(tr);
|
|
256
|
+
return true;
|
|
257
|
+
},
|
|
258
|
+
testId: 'layout-distribute-columns',
|
|
259
|
+
title: intl.formatMessage(_messages.layoutMessages.distributeColumns),
|
|
260
|
+
type: 'button'
|
|
261
|
+
} : undefined;
|
|
203
262
|
return [{
|
|
204
263
|
type: 'dropdown',
|
|
205
264
|
title: intl.formatMessage(_messages.layoutMessages.columnOption, {
|
|
206
265
|
count: numberOfColumns
|
|
207
266
|
}),
|
|
208
267
|
//`${numberOfColumns}-columns`,
|
|
209
|
-
options:
|
|
268
|
+
options: dropdownOptions,
|
|
210
269
|
showSelected: true,
|
|
211
270
|
testId: 'column-options-button'
|
|
212
|
-
}].concat((0, _toConsumableArray2.default)(distributionOptions.length > 0 ? [separator] : []), (0, _toConsumableArray2.default)(addSidebarLayouts ? distributionOptions.map(function (i) {
|
|
271
|
+
}].concat((0, _toConsumableArray2.default)(distributionOptions.length > 0 || distributeColumnsButton ? [separator] : []), (0, _toConsumableArray2.default)(addSidebarLayouts ? distributionOptions.map(function (i) {
|
|
213
272
|
return buildLayoutButton(intl, i, currentLayout, editorAnalyticsAPI);
|
|
214
|
-
}) : []));
|
|
273
|
+
}) : []), (0, _toConsumableArray2.default)(distributeColumnsButton ? [distributeColumnsButton] : []));
|
|
215
274
|
};
|
|
216
275
|
var fullHeightSeparator = {
|
|
217
276
|
type: 'separator',
|
|
@@ -300,7 +359,6 @@ var buildToolbar = exports.buildToolbar = function buildToolbar(state, intl, pos
|
|
|
300
359
|
addSidebarLayouts: addSidebarLayouts,
|
|
301
360
|
intl: intl,
|
|
302
361
|
editorAnalyticsAPI: editorAnalyticsAPI,
|
|
303
|
-
state: state,
|
|
304
362
|
nodeType: nodeType,
|
|
305
363
|
node: node,
|
|
306
364
|
separator: separator,
|
|
@@ -52,7 +52,7 @@ export const layoutPlugin = ({
|
|
|
52
52
|
config: options = {},
|
|
53
53
|
api
|
|
54
54
|
}) => {
|
|
55
|
-
var _api$analytics;
|
|
55
|
+
var _api$analytics, _api$analytics5;
|
|
56
56
|
const allowAdvancedSingleColumnLayout = editorExperiment('advanced_layouts', true) && editorExperiment('single_column_layouts', true, {
|
|
57
57
|
exposure: true
|
|
58
58
|
});
|
|
@@ -353,10 +353,7 @@ export const layoutPlugin = ({
|
|
|
353
353
|
var _api$analytics4;
|
|
354
354
|
return deleteLayoutColumn(api === null || api === void 0 ? void 0 : (_api$analytics4 = api.analytics) === null || _api$analytics4 === void 0 ? void 0 : _api$analytics4.actions)(props);
|
|
355
355
|
},
|
|
356
|
-
distributeLayoutColumns:
|
|
357
|
-
var _api$analytics5;
|
|
358
|
-
return distributeLayoutColumns(api === null || api === void 0 ? void 0 : (_api$analytics5 = api.analytics) === null || _api$analytics5 === void 0 ? void 0 : _api$analytics5.actions)(props);
|
|
359
|
-
},
|
|
356
|
+
distributeLayoutColumns: distributeLayoutColumns(api === null || api === void 0 ? void 0 : (_api$analytics5 = api.analytics) === null || _api$analytics5 === void 0 ? void 0 : _api$analytics5.actions),
|
|
360
357
|
insertLayoutColumn: side => {
|
|
361
358
|
var _api$analytics6;
|
|
362
359
|
return insertLayoutColumn(side, api === null || api === void 0 ? void 0 : (_api$analytics6 = api.analytics) === null || _api$analytics6 === void 0 ? void 0 : _api$analytics6.actions);
|
|
@@ -10,7 +10,7 @@ import { editorExperiment } from '@atlaskit/tmp-editor-statsig/experiments';
|
|
|
10
10
|
import { EVEN_DISTRIBUTED_COL_WIDTHS, MAX_LAYOUT_COLUMNS, MAX_STANDARD_LAYOUT_COLUMNS, MIN_LAYOUT_COLUMN_WIDTH_PERCENT } from './consts';
|
|
11
11
|
import { pluginKey } from './plugin-key';
|
|
12
12
|
import { calculateDistribution, isDistributedUniformly, redistributeAfterDeletion, redistributeProportionally } from './utils/layout-column-distribution';
|
|
13
|
-
import {
|
|
13
|
+
import { getAllLayoutColumnsFromSelection, getSelectedLayoutColumnsFromSelection } from './utils/layout-column-selection';
|
|
14
14
|
export const ONE_COL_LAYOUTS = ['single'];
|
|
15
15
|
export const TWO_COL_LAYOUTS = ['two_equal', 'two_left_sidebar', 'two_right_sidebar'];
|
|
16
16
|
export const THREE_COL_LAYOUTS = ['three_equal', 'three_with_sidebars'];
|
|
@@ -540,20 +540,19 @@ const insertLayoutColumnAt = (side, editorAnalyticsAPI) => ({
|
|
|
540
540
|
if (!expValEqualsNoExposure('platform_editor_layout_column_menu', 'isEnabled', true)) {
|
|
541
541
|
return null;
|
|
542
542
|
}
|
|
543
|
-
const
|
|
544
|
-
if (!selectedLayoutColumns) {
|
|
543
|
+
const selectedLayoutColumnsResult = getSelectedLayoutColumnsFromSelection(tr.selection);
|
|
544
|
+
if (!selectedLayoutColumnsResult || selectedLayoutColumnsResult.selectedLayoutColumns.length === 0) {
|
|
545
545
|
return null;
|
|
546
546
|
}
|
|
547
547
|
const {
|
|
548
548
|
layoutSectionNode,
|
|
549
549
|
layoutSectionPos,
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
const endIndex = selectedColumnIndices[selectedColumnIndices.length - 1];
|
|
550
|
+
startIndex,
|
|
551
|
+
endIndex,
|
|
552
|
+
selectedLayoutColumns
|
|
553
|
+
} = selectedLayoutColumnsResult;
|
|
555
554
|
const selectedColumnIndex = side === 'left' ? startIndex : endIndex;
|
|
556
|
-
const selectedColumnCount =
|
|
555
|
+
const selectedColumnCount = selectedLayoutColumns.length;
|
|
557
556
|
if (layoutSectionNode.childCount >= getEffectiveMaxLayoutColumns()) {
|
|
558
557
|
return null;
|
|
559
558
|
}
|
|
@@ -608,23 +607,21 @@ export const setLayoutColumnValign = (valign, editorAnalyticsAPI) => ({
|
|
|
608
607
|
if (!expValEqualsNoExposure('platform_editor_layout_column_menu', 'isEnabled', true)) {
|
|
609
608
|
return null;
|
|
610
609
|
}
|
|
611
|
-
const
|
|
612
|
-
if (!
|
|
610
|
+
const selectedLayoutColumnsResult = getSelectedLayoutColumnsFromSelection(tr.selection);
|
|
611
|
+
if (!selectedLayoutColumnsResult) {
|
|
613
612
|
return null;
|
|
614
613
|
}
|
|
615
614
|
const {
|
|
616
|
-
|
|
617
|
-
|
|
618
|
-
|
|
619
|
-
|
|
615
|
+
startIndex,
|
|
616
|
+
endIndex,
|
|
617
|
+
selectedLayoutColumns
|
|
618
|
+
} = selectedLayoutColumnsResult;
|
|
619
|
+
const columnsToUpdate = selectedLayoutColumns.filter(({
|
|
620
620
|
node
|
|
621
621
|
}) => node.attrs.valign !== valign);
|
|
622
622
|
if (columnsToUpdate.length === 0) {
|
|
623
623
|
return null;
|
|
624
624
|
}
|
|
625
|
-
const startIndex = selectedColumnIndices[0];
|
|
626
|
-
const endIndex = selectedColumnIndices[selectedColumnIndices.length - 1];
|
|
627
|
-
const selectedColumnCount = selectedColumns.length;
|
|
628
625
|
const updatedColumnCount = columnsToUpdate.length;
|
|
629
626
|
columnsToUpdate.forEach(({
|
|
630
627
|
node,
|
|
@@ -642,7 +639,7 @@ export const setLayoutColumnValign = (valign, editorAnalyticsAPI) => ({
|
|
|
642
639
|
attributes: {
|
|
643
640
|
endIndex,
|
|
644
641
|
inputMethod: INPUT_METHOD.LAYOUT_COLUMN_MENU,
|
|
645
|
-
selectedCount:
|
|
642
|
+
selectedCount: selectedLayoutColumns.length,
|
|
646
643
|
startIndex,
|
|
647
644
|
updatedCount: updatedColumnCount,
|
|
648
645
|
valign
|
|
@@ -652,26 +649,27 @@ export const setLayoutColumnValign = (valign, editorAnalyticsAPI) => ({
|
|
|
652
649
|
tr.setMeta('scrollIntoView', false);
|
|
653
650
|
return tr;
|
|
654
651
|
};
|
|
655
|
-
export const distributeLayoutColumns =
|
|
652
|
+
export const distributeLayoutColumns = editorAnalyticsAPI => ({
|
|
653
|
+
inputMethod = INPUT_METHOD.LAYOUT_COLUMN_MENU,
|
|
654
|
+
target = 'selectedColumns'
|
|
655
|
+
} = {}) => ({
|
|
656
656
|
tr
|
|
657
657
|
}) => {
|
|
658
658
|
if (!expValEqualsNoExposure('platform_editor_layout_column_menu', 'isEnabled', true)) {
|
|
659
659
|
return null;
|
|
660
660
|
}
|
|
661
|
-
const
|
|
662
|
-
if (!
|
|
661
|
+
const selectedLayoutColumnsResult = target === 'allColumns' ? getAllLayoutColumnsFromSelection(tr.selection) : getSelectedLayoutColumnsFromSelection(tr.selection);
|
|
662
|
+
if (!selectedLayoutColumnsResult || selectedLayoutColumnsResult.selectedLayoutColumns.length < 2) {
|
|
663
663
|
return null;
|
|
664
664
|
}
|
|
665
665
|
const {
|
|
666
666
|
layoutSectionNode,
|
|
667
|
-
|
|
668
|
-
|
|
669
|
-
|
|
670
|
-
|
|
671
|
-
const selectedColumnCount = selectedColumns.length;
|
|
672
|
-
const totalColumnCount = layoutSectionNode.childCount;
|
|
667
|
+
startIndex,
|
|
668
|
+
endIndex,
|
|
669
|
+
selectedLayoutColumns
|
|
670
|
+
} = selectedLayoutColumnsResult;
|
|
673
671
|
const existingWidths = mapChildren(layoutSectionNode, column => column.attrs.width);
|
|
674
|
-
const selectedWidths =
|
|
672
|
+
const selectedWidths = selectedLayoutColumns.map(({
|
|
675
673
|
node
|
|
676
674
|
}) => node.attrs.width);
|
|
677
675
|
const distribution = calculateDistribution(selectedWidths);
|
|
@@ -689,15 +687,14 @@ export const distributeLayoutColumns = (editorAnalyticsAPI, inputMethod = INPUT_
|
|
|
689
687
|
// Build new widths array: selected columns get equal share, unselected unchanged.
|
|
690
688
|
// Assign rounded (2dp) equal widths to all selected cols except the last, which absorbs
|
|
691
689
|
// the rounding remainder so the sum of selected widths equals selectedTotal exactly.
|
|
692
|
-
const selectedIndexSet = new Set(selectedColumnIndices);
|
|
693
690
|
let assignedToSelected = 0;
|
|
694
691
|
let selectedAssignedCount = 0;
|
|
695
692
|
const newWidths = existingWidths.map((w, idx) => {
|
|
696
|
-
if (
|
|
693
|
+
if (idx < startIndex || idx > endIndex) {
|
|
697
694
|
return w;
|
|
698
695
|
}
|
|
699
696
|
selectedAssignedCount += 1;
|
|
700
|
-
if (selectedAssignedCount <
|
|
697
|
+
if (selectedAssignedCount < selectedLayoutColumns.length) {
|
|
701
698
|
assignedToSelected += equalWidth;
|
|
702
699
|
return equalWidth;
|
|
703
700
|
}
|
|
@@ -706,11 +703,11 @@ export const distributeLayoutColumns = (editorAnalyticsAPI, inputMethod = INPUT_
|
|
|
706
703
|
});
|
|
707
704
|
|
|
708
705
|
// Apply widths via setNodeMarkup per selected column — keeps nodes in place (preserves identity, marks, decorations)
|
|
709
|
-
|
|
706
|
+
selectedLayoutColumns.forEach(({
|
|
710
707
|
node,
|
|
711
708
|
pos
|
|
712
709
|
}, i) => {
|
|
713
|
-
const colIdx =
|
|
710
|
+
const colIdx = startIndex + i;
|
|
714
711
|
tr.setNodeMarkup(pos, node.type, {
|
|
715
712
|
...node.attrs,
|
|
716
713
|
width: newWidths[colIdx]
|
|
@@ -721,11 +718,11 @@ export const distributeLayoutColumns = (editorAnalyticsAPI, inputMethod = INPUT_
|
|
|
721
718
|
actionSubject: ACTION_SUBJECT.DOCUMENT,
|
|
722
719
|
actionSubjectId: ACTION_SUBJECT_ID.LAYOUT_COLUMN,
|
|
723
720
|
attributes: {
|
|
724
|
-
columnCount:
|
|
721
|
+
columnCount: layoutSectionNode.childCount,
|
|
725
722
|
endIndex,
|
|
726
723
|
inputMethod,
|
|
727
|
-
selectedCount:
|
|
728
|
-
startIndex
|
|
724
|
+
selectedCount: selectedLayoutColumns.length,
|
|
725
|
+
startIndex
|
|
729
726
|
},
|
|
730
727
|
eventType: EVENT_TYPE.TRACK
|
|
731
728
|
})(tr);
|
|
@@ -751,20 +748,17 @@ export const deleteLayoutColumn = editorAnalyticsAPI => ({
|
|
|
751
748
|
if (!expValEqualsNoExposure('platform_editor_layout_column_menu', 'isEnabled', true)) {
|
|
752
749
|
return null;
|
|
753
750
|
}
|
|
754
|
-
const
|
|
755
|
-
if (!selectedLayoutColumns) {
|
|
751
|
+
const selectedLayoutColumnsResult = getSelectedLayoutColumnsFromSelection(tr.selection);
|
|
752
|
+
if (!selectedLayoutColumnsResult || selectedLayoutColumnsResult.selectedLayoutColumns.length === 0) {
|
|
756
753
|
return null;
|
|
757
754
|
}
|
|
758
755
|
const {
|
|
759
756
|
layoutSectionNode,
|
|
760
757
|
layoutSectionPos,
|
|
761
|
-
|
|
762
|
-
|
|
763
|
-
|
|
764
|
-
|
|
765
|
-
const endIndex = selectedColumnIndices[selectedColumnIndices.length - 1];
|
|
766
|
-
const selectedColumnCount = selectedColumns.length;
|
|
767
|
-
const selectedColumnIndexSet = new Set(selectedColumnIndices);
|
|
758
|
+
selectedLayoutColumns,
|
|
759
|
+
startIndex,
|
|
760
|
+
endIndex
|
|
761
|
+
} = selectedLayoutColumnsResult;
|
|
768
762
|
const emitDeleteColumnAnalytics = columnCount => {
|
|
769
763
|
editorAnalyticsAPI === null || editorAnalyticsAPI === void 0 ? void 0 : editorAnalyticsAPI.attachAnalyticsEvent({
|
|
770
764
|
action: ACTION.DELETED,
|
|
@@ -774,7 +768,7 @@ export const deleteLayoutColumn = editorAnalyticsAPI => ({
|
|
|
774
768
|
columnCount,
|
|
775
769
|
endIndex,
|
|
776
770
|
inputMethod: INPUT_METHOD.LAYOUT_COLUMN_MENU,
|
|
777
|
-
selectedCount:
|
|
771
|
+
selectedCount: selectedLayoutColumns.length,
|
|
778
772
|
startIndex
|
|
779
773
|
},
|
|
780
774
|
eventType: EVENT_TYPE.TRACK
|
|
@@ -782,7 +776,7 @@ export const deleteLayoutColumn = editorAnalyticsAPI => ({
|
|
|
782
776
|
};
|
|
783
777
|
|
|
784
778
|
// If all columns are selected, remove the entire layoutSection
|
|
785
|
-
if (
|
|
779
|
+
if (selectedLayoutColumns.length === layoutSectionNode.childCount) {
|
|
786
780
|
tr.delete(layoutSectionPos, layoutSectionPos + layoutSectionNode.nodeSize);
|
|
787
781
|
emitDeleteColumnAnalytics(0);
|
|
788
782
|
tr.setMeta('scrollIntoView', false);
|
|
@@ -792,17 +786,17 @@ export const deleteLayoutColumn = editorAnalyticsAPI => ({
|
|
|
792
786
|
// Build new column list without the selected columns
|
|
793
787
|
const remainingColumns = [];
|
|
794
788
|
layoutSectionNode.forEach((column, _offset, index) => {
|
|
795
|
-
if (
|
|
789
|
+
if (index < startIndex || index > endIndex) {
|
|
796
790
|
remainingColumns.push(column);
|
|
797
791
|
}
|
|
798
792
|
});
|
|
799
793
|
|
|
800
794
|
// Redistribute widths proportionally among remaining columns using shared utility
|
|
801
795
|
const existingWidths = mapChildren(layoutSectionNode, column => column.attrs.width);
|
|
802
|
-
const redistributed =
|
|
796
|
+
const redistributed = selectedLayoutColumns.map((_, i) => startIndex + i)
|
|
803
797
|
// Delete highest indices first so lower original indices still point at the same columns
|
|
804
798
|
// as each redistribution step shrinks the widths array.
|
|
805
|
-
.
|
|
799
|
+
.reverse().reduce((widths, selectedIndex) => redistributeAfterDeletion(widths, selectedIndex, MIN_LAYOUT_COLUMN_WIDTH_PERCENT), existingWidths);
|
|
806
800
|
const updatedLayoutSectionNode = layoutSectionNode.copy(Fragment.fromArray(remainingColumns));
|
|
807
801
|
tr.replaceWith(layoutSectionPos + 1, layoutSectionPos + layoutSectionNode.nodeSize - 1, columnWidth(updatedLayoutSectionNode, tr.doc.type.schema, redistributed));
|
|
808
802
|
emitDeleteColumnAnalytics(redistributed.length);
|