@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.
Files changed (54) hide show
  1. package/CHANGELOG.md +22 -0
  2. package/dist/cjs/layoutPlugin.js +2 -5
  3. package/dist/cjs/pm-plugins/actions.js +112 -115
  4. package/dist/cjs/pm-plugins/utils/layout-column-selection.js +63 -96
  5. package/dist/cjs/ui/LayoutColumnMenu/DeleteColumnDropdownItem.js +7 -2
  6. package/dist/cjs/ui/LayoutColumnMenu/DistributeColumnsDropdownItem.js +16 -6
  7. package/dist/cjs/ui/LayoutColumnMenu/InsertColumnDropdownItem.js +4 -4
  8. package/dist/cjs/ui/LayoutColumnMenu/VerticalAlignDropdownItem.js +1 -1
  9. package/dist/cjs/ui/LayoutColumnMenu/VerticalAlignNestedMenu.js +2 -2
  10. package/dist/cjs/ui/LayoutColumnMenu/components.js +20 -9
  11. package/dist/cjs/ui/LayoutColumnMenu/index.js +6 -2
  12. package/dist/cjs/ui/LayoutColumnMenu/keys.js +8 -3
  13. package/dist/cjs/ui/LayoutColumnMenu/useSelectedLayoutColumns.js +4 -3
  14. package/dist/cjs/ui/LayoutColumnMenu/verticalAlignIcons.js +6 -6
  15. package/dist/cjs/ui/toolbar.js +69 -11
  16. package/dist/es2019/layoutPlugin.js +2 -5
  17. package/dist/es2019/pm-plugins/actions.js +45 -51
  18. package/dist/es2019/pm-plugins/utils/layout-column-selection.js +62 -91
  19. package/dist/es2019/ui/LayoutColumnMenu/DeleteColumnDropdownItem.js +8 -3
  20. package/dist/es2019/ui/LayoutColumnMenu/DistributeColumnsDropdownItem.js +18 -7
  21. package/dist/es2019/ui/LayoutColumnMenu/InsertColumnDropdownItem.js +4 -4
  22. package/dist/es2019/ui/LayoutColumnMenu/VerticalAlignDropdownItem.js +1 -1
  23. package/dist/es2019/ui/LayoutColumnMenu/VerticalAlignNestedMenu.js +2 -2
  24. package/dist/es2019/ui/LayoutColumnMenu/components.js +23 -10
  25. package/dist/es2019/ui/LayoutColumnMenu/index.js +6 -2
  26. package/dist/es2019/ui/LayoutColumnMenu/keys.js +10 -3
  27. package/dist/es2019/ui/LayoutColumnMenu/useSelectedLayoutColumns.js +6 -4
  28. package/dist/es2019/ui/LayoutColumnMenu/verticalAlignIcons.js +6 -6
  29. package/dist/es2019/ui/toolbar.js +67 -11
  30. package/dist/esm/layoutPlugin.js +3 -6
  31. package/dist/esm/pm-plugins/actions.js +113 -116
  32. package/dist/esm/pm-plugins/utils/layout-column-selection.js +62 -95
  33. package/dist/esm/ui/LayoutColumnMenu/DeleteColumnDropdownItem.js +8 -3
  34. package/dist/esm/ui/LayoutColumnMenu/DistributeColumnsDropdownItem.js +17 -7
  35. package/dist/esm/ui/LayoutColumnMenu/InsertColumnDropdownItem.js +4 -4
  36. package/dist/esm/ui/LayoutColumnMenu/VerticalAlignDropdownItem.js +1 -1
  37. package/dist/esm/ui/LayoutColumnMenu/VerticalAlignNestedMenu.js +2 -2
  38. package/dist/esm/ui/LayoutColumnMenu/components.js +21 -10
  39. package/dist/esm/ui/LayoutColumnMenu/index.js +6 -2
  40. package/dist/esm/ui/LayoutColumnMenu/keys.js +7 -2
  41. package/dist/esm/ui/LayoutColumnMenu/useSelectedLayoutColumns.js +5 -4
  42. package/dist/esm/ui/LayoutColumnMenu/verticalAlignIcons.js +6 -6
  43. package/dist/esm/ui/toolbar.js +70 -12
  44. package/dist/types/layoutPluginType.d.ts +3 -1
  45. package/dist/types/pm-plugins/actions.d.ts +5 -1
  46. package/dist/types/pm-plugins/utils/layout-column-selection.d.ts +9 -8
  47. package/dist/types/ui/LayoutColumnMenu/keys.d.ts +2 -0
  48. package/dist/types/ui/LayoutColumnMenu/verticalAlignIcons.d.ts +2 -2
  49. package/dist/types-ts4.5/layoutPluginType.d.ts +3 -1
  50. package/dist/types-ts4.5/pm-plugins/actions.d.ts +5 -1
  51. package/dist/types-ts4.5/pm-plugins/utils/layout-column-selection.d.ts +9 -8
  52. package/dist/types-ts4.5/ui/LayoutColumnMenu/keys.d.ts +2 -0
  53. package/dist/types-ts4.5/ui/LayoutColumnMenu/verticalAlignIcons.d.ts +2 -2
  54. 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.insertColumnLeft,
18
+ label: _messages.layoutMessages.addColumnLeft,
20
19
  side: 'left'
21
20
  },
22
21
  right: {
23
22
  Icon: _editorToolbar.TableColumnAddRightIcon,
24
- label: _messages.layoutMessages.insertColumnRight,
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, _layoutColumnSelection.getLayoutSectionColumnCount)(selectedLayoutColumns === null || selectedLayoutColumns === void 0 ? void 0 : selectedLayoutColumns.layoutSectionNode);
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.selectedColumns.every(function (_ref2) {
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.selectedColumns;
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.top;
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 LAYOUT_COLUMN_MENU_RANK = exports.LAYOUT_COLUMN_MENU_RANK = (0, _defineProperty2.default)({}, LAYOUT_COLUMN_MENU_SECTION.key, 100);
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)((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), DELETE_COLUMN_MENU_ITEM.key, 500);
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 (states) {
11
- var _states$selectionStat;
12
- return (0, _layoutColumnSelection.getSelectedLayoutColumns)((_states$selectionStat = states.selectionState) === null || _states$selectionStat === void 0 ? void 0 : _states$selectionStat.selection);
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 _alignContentBottom = _interopRequireDefault(require("@atlaskit/icon-lab/core/align-content-bottom"));
9
- var _alignContentCenterVertical = _interopRequireDefault(require("@atlaskit/icon-lab/core/align-content-center-vertical"));
10
- var _alignContentTop = _interopRequireDefault(require("@atlaskit/icon-lab/core/align-content-top"));
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: _alignContentTop.default,
16
- middle: _alignContentCenterVertical.default,
17
- bottom: _alignContentBottom.default
15
+ top: _alignPositionTop.default,
16
+ middle: _alignPositionCenterVertical.default,
17
+ bottom: _alignPositionBottom.default
18
18
  };
@@ -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 LAYOUT_WITH_TWO_COL_DISTRIBUTION = [{
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 LAYOUT_WITH_THREE_COL_DISTRIBUTION = [{
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; // TODO: ED-25466 - Replace with proper icon
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 distributionOptions = numberOfColumns === 2 ? LAYOUT_WITH_TWO_COL_DISTRIBUTION : numberOfColumns === 3 ? LAYOUT_WITH_THREE_COL_DISTRIBUTION : [];
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 singleColumnOption = allowAdvancedSingleColumnLayout ? {
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: [singleColumnOption, columnOptions].flat(),
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: props => {
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 { getSelectedLayoutColumns } from './utils/layout-column-selection';
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 selectedLayoutColumns = getSelectedLayoutColumns(tr.selection);
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
- selectedColumnIndices,
551
- selectedColumns
552
- } = selectedLayoutColumns;
553
- const startIndex = selectedColumnIndices[0];
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 = selectedColumns.length;
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 selectedLayoutColumns = getSelectedLayoutColumns(tr.selection);
612
- if (!selectedLayoutColumns) {
610
+ const selectedLayoutColumnsResult = getSelectedLayoutColumnsFromSelection(tr.selection);
611
+ if (!selectedLayoutColumnsResult) {
613
612
  return null;
614
613
  }
615
614
  const {
616
- selectedColumnIndices,
617
- selectedColumns
618
- } = selectedLayoutColumns;
619
- const columnsToUpdate = selectedColumns.filter(({
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: selectedColumnCount,
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 = (editorAnalyticsAPI, inputMethod = INPUT_METHOD.LAYOUT_COLUMN_MENU) => ({
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 selectedLayoutColumns = getSelectedLayoutColumns(tr.selection);
662
- if (!selectedLayoutColumns || selectedLayoutColumns.selectedColumns.length < 2) {
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
- selectedColumnIndices,
668
- selectedColumns
669
- } = selectedLayoutColumns;
670
- const endIndex = selectedColumnIndices[selectedColumnIndices.length - 1];
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 = selectedColumns.map(({
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 (!selectedIndexSet.has(idx)) {
693
+ if (idx < startIndex || idx > endIndex) {
697
694
  return w;
698
695
  }
699
696
  selectedAssignedCount += 1;
700
- if (selectedAssignedCount < selectedColumnCount) {
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
- selectedColumns.forEach(({
706
+ selectedLayoutColumns.forEach(({
710
707
  node,
711
708
  pos
712
709
  }, i) => {
713
- const colIdx = selectedColumnIndices[i];
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: totalColumnCount,
721
+ columnCount: layoutSectionNode.childCount,
725
722
  endIndex,
726
723
  inputMethod,
727
- selectedCount: selectedColumnCount,
728
- startIndex: selectedColumnIndices[0]
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 selectedLayoutColumns = getSelectedLayoutColumns(tr.selection);
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
- selectedColumnIndices,
762
- selectedColumns
763
- } = selectedLayoutColumns;
764
- const startIndex = selectedColumnIndices[0];
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: selectedColumnCount,
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 (selectedColumnCount === layoutSectionNode.childCount) {
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 (!selectedColumnIndexSet.has(index)) {
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 = selectedColumnIndices.slice()
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
- .sort((a, b) => b - a).reduce((widths, selectedIndex) => redistributeAfterDeletion(widths, selectedIndex, MIN_LAYOUT_COLUMN_WIDTH_PERCENT), existingWidths);
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);