@atlaskit/editor-plugin-layout 1.9.6 → 1.9.8

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 CHANGED
@@ -1,5 +1,22 @@
1
1
  # @atlaskit/editor-plugin-layout
2
2
 
3
+ ## 1.9.8
4
+
5
+ ### Patch Changes
6
+
7
+ - [#158827](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/pull-requests/158827)
8
+ [`6696a5d9665c7`](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/commits/6696a5d9665c7) -
9
+ Refactor forceColumnStructure so it works for 2-5 columns layout under advanced_layout experiment
10
+
11
+ ## 1.9.7
12
+
13
+ ### Patch Changes
14
+
15
+ - [#156974](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/pull-requests/156974)
16
+ [`e23605a60e753`](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/commits/e23605a60e753) -
17
+ Add four and five column support for layout sections
18
+ - Updated dependencies
19
+
3
20
  ## 1.9.6
4
21
 
5
22
  ### Patch Changes
@@ -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.fixColumnStructure = exports.fixColumnSizes = exports.deleteActiveLayoutNode = exports.createMultiColumnLayoutSection = exports.createDefaultLayoutSection = exports.TWO_COL_LAYOUTS = exports.THREE_COL_LAYOUTS = exports.ONE_COL_LAYOUTS = void 0;
7
+ exports.fixColumnStructure = exports.fixColumnSizes = exports.deleteActiveLayoutNode = exports.createMultiColumnLayoutSection = exports.createDefaultLayoutSection = exports.TWO_COL_LAYOUTS = exports.THREE_COL_LAYOUTS = exports.ONE_COL_LAYOUTS = exports.FOUR_COL_LAYOUTS = exports.FIVE_COL_LAYOUTS = void 0;
8
8
  exports.forceSectionToPresetLayout = forceSectionToPresetLayout;
9
9
  exports.setPresetLayout = exports.insertLayoutColumnsWithAnalytics = exports.insertLayoutColumns = exports.getSelectedLayout = exports.getPresetLayout = void 0;
10
10
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
@@ -23,7 +23,29 @@ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t =
23
23
  var ONE_COL_LAYOUTS = exports.ONE_COL_LAYOUTS = ['single'];
24
24
  var TWO_COL_LAYOUTS = exports.TWO_COL_LAYOUTS = ['two_equal', 'two_left_sidebar', 'two_right_sidebar'];
25
25
  var THREE_COL_LAYOUTS = exports.THREE_COL_LAYOUTS = ['three_equal', 'three_with_sidebars'];
26
+ var FOUR_COL_LAYOUTS = exports.FOUR_COL_LAYOUTS = ['four_equal'];
27
+ var FIVE_COL_LAYOUTS = exports.FIVE_COL_LAYOUTS = ['five_equal'];
26
28
  var getWidthsForPreset = function getWidthsForPreset(presetLayout) {
29
+ if ((0, _preRelease.isPreRelease2)()) {
30
+ switch (presetLayout) {
31
+ case 'single':
32
+ return [100];
33
+ case 'two_equal':
34
+ return [50, 50];
35
+ case 'three_equal':
36
+ return [33.33, 33.33, 33.33];
37
+ case 'two_left_sidebar':
38
+ return [33.33, 66.66];
39
+ case 'two_right_sidebar':
40
+ return [66.66, 33.33];
41
+ case 'three_with_sidebars':
42
+ return [25, 50, 25];
43
+ case 'four_equal':
44
+ return [25, 25, 25, 25];
45
+ case 'five_equal':
46
+ return [20, 20, 20, 20, 20];
47
+ }
48
+ }
27
49
  switch (presetLayout) {
28
50
  case 'single':
29
51
  return [100];
@@ -38,6 +60,7 @@ var getWidthsForPreset = function getWidthsForPreset(presetLayout) {
38
60
  case 'three_with_sidebars':
39
61
  return [25, 50, 25];
40
62
  }
63
+ return [];
41
64
  };
42
65
 
43
66
  /**
@@ -48,6 +71,27 @@ var getPresetLayout = exports.getPresetLayout = function getPresetLayout(section
48
71
  var widths = (0, _utils.mapChildren)(section, function (column) {
49
72
  return column.attrs.width;
50
73
  }).join(',');
74
+ if ((0, _preRelease.isPreRelease2)()) {
75
+ switch (widths) {
76
+ case '100':
77
+ return 'single';
78
+ case '33.33,33.33,33.33':
79
+ return 'three_equal';
80
+ case '25,50,25':
81
+ return 'three_with_sidebars';
82
+ case '50,50':
83
+ return 'two_equal';
84
+ case '33.33,66.66':
85
+ return 'two_left_sidebar';
86
+ case '66.66,33.33':
87
+ return 'two_right_sidebar';
88
+ case '25,25,25,25':
89
+ return 'four_equal';
90
+ case '20,20,20,20,20':
91
+ return 'five_equal';
92
+ }
93
+ return;
94
+ }
51
95
  switch (widths) {
52
96
  case '100':
53
97
  return 'single';
@@ -182,6 +226,28 @@ var fromThreeColstoOne = function fromThreeColstoOne(node, tr, insideRightEdgePo
182
226
  var secondColumn = node.content.child(1);
183
227
  fromTwoColsToOne(secondColumn, insideRightEdgePos - thirdColumn.nodeSize - secondColumn.nodeSize, insideRightEdgePos)(tr);
184
228
  };
229
+ var increaseColumns = function increaseColumns(schema, pos) {
230
+ var newColumnsNumber = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;
231
+ var formatMessage = arguments.length > 3 ? arguments[3] : undefined;
232
+ return function (tr) {
233
+ for (var i = 0; i < newColumnsNumber; i++) {
234
+ addColumn(schema, pos, formatMessage)(tr);
235
+ }
236
+ };
237
+ };
238
+ var decreaseColumns = function decreaseColumns(node, insideRightEdgePos) {
239
+ var columnsNumberToRemove = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;
240
+ return function (tr) {
241
+ var endPos = insideRightEdgePos;
242
+ var lastColumn = node.content.lastChild;
243
+ for (var i = 0; i < columnsNumberToRemove; i++) {
244
+ var _lastColumn;
245
+ lastColumn && removeLastColumnInLayout(lastColumn, endPos - lastColumn.nodeSize, endPos)(tr);
246
+ endPos -= ((_lastColumn = lastColumn) === null || _lastColumn === void 0 ? void 0 : _lastColumn.nodeSize) || 0;
247
+ lastColumn = node.content.child(node.childCount - i - 2);
248
+ }
249
+ };
250
+ };
185
251
 
186
252
  /**
187
253
  * Handles switching from 2 -> 3 cols, or 3 -> 2 cols
@@ -223,6 +289,18 @@ function forceColumnStructure(state, node, pos, presetLayout, formatMessage) {
223
289
  }
224
290
  return tr;
225
291
  }
292
+ function forceColumnStructureNew(state, node, pos, presetLayout, formatMessage) {
293
+ var tr = state.tr;
294
+ var insideRightEdgeOfLayoutSection = pos + node.nodeSize - 1;
295
+ var numCols = node.childCount;
296
+ var columnChange = getWidthsForPreset(presetLayout).length - numCols;
297
+ if (columnChange > 0) {
298
+ increaseColumns(state.schema, insideRightEdgeOfLayoutSection, columnChange, formatMessage)(tr);
299
+ } else if (columnChange < 0) {
300
+ decreaseColumns(node, insideRightEdgeOfLayoutSection, -columnChange)(tr);
301
+ }
302
+ return tr;
303
+ }
226
304
  function columnWidth(node, schema, widths) {
227
305
  var layoutColumn = schema.nodes.layoutColumn;
228
306
  var truncatedWidths = widths.map(function (w) {
@@ -246,7 +324,8 @@ function forceColumnWidths(state, tr, pos, presetLayout) {
246
324
  return tr.replaceWith(pos + 1, pos + node.nodeSize - 1, columnWidth(node, state.schema, getWidthsForPreset(presetLayout)));
247
325
  }
248
326
  function forceSectionToPresetLayout(state, node, pos, presetLayout, formatMessage) {
249
- var tr = forceColumnStructure(state, node, pos, presetLayout, formatMessage);
327
+ var forceColumnStructureFn = (0, _preRelease.isPreRelease2)() ? forceColumnStructureNew : forceColumnStructure;
328
+ var tr = forceColumnStructureFn(state, node, pos, presetLayout, formatMessage);
250
329
 
251
330
  // save the selection here, since forcing column widths causes a change over the
252
331
  // entire layoutSection, which remaps selection to the end. not remapping here
@@ -377,6 +456,26 @@ var deleteActiveLayoutNode = exports.deleteActiveLayoutNode = function deleteAct
377
456
  };
378
457
  };
379
458
  var formatLayoutName = function formatLayoutName(layout) {
459
+ if ((0, _preRelease.isPreRelease2)()) {
460
+ switch (layout) {
461
+ case 'single':
462
+ return _analytics.LAYOUT_TYPE.SINGLE_COL;
463
+ case 'two_equal':
464
+ return _analytics.LAYOUT_TYPE.TWO_COLS_EQUAL;
465
+ case 'three_equal':
466
+ return _analytics.LAYOUT_TYPE.THREE_COLS_EQUAL;
467
+ case 'two_left_sidebar':
468
+ return _analytics.LAYOUT_TYPE.LEFT_SIDEBAR;
469
+ case 'two_right_sidebar':
470
+ return _analytics.LAYOUT_TYPE.RIGHT_SIDEBAR;
471
+ case 'three_with_sidebars':
472
+ return _analytics.LAYOUT_TYPE.THREE_WITH_SIDEBARS;
473
+ case 'four_equal':
474
+ return _analytics.LAYOUT_TYPE.FOUR_COLS_EQUAL;
475
+ case 'five_equal':
476
+ return _analytics.LAYOUT_TYPE.FIVE_COLS_EQUAL;
477
+ }
478
+ }
380
479
  switch (layout) {
381
480
  case 'single':
382
481
  return _analytics.LAYOUT_TYPE.SINGLE_COL;
@@ -133,10 +133,7 @@ var buildToolbar = exports.buildToolbar = function buildToolbar(state, intl, pos
133
133
  }),
134
134
  //'4-columns'
135
135
  icon: iconPlaceholder,
136
- onClick: function onClick() {
137
- // TODO: Implement layout update in ED-25053
138
- return true;
139
- },
136
+ onClick: (0, _actions.setPresetLayout)(editorAnalyticsAPI)('four_equal', intl.formatMessage),
140
137
  selected: numberOfColumns === 4
141
138
  }, {
142
139
  title: intl.formatMessage(_messages.layoutMessages.columnOption, {
@@ -144,10 +141,7 @@ var buildToolbar = exports.buildToolbar = function buildToolbar(state, intl, pos
144
141
  }),
145
142
  //'5-columns'
146
143
  icon: iconPlaceholder,
147
- onClick: function onClick() {
148
- // TODO: Implement layout update in ED-25053
149
- return true;
150
- },
144
+ onClick: (0, _actions.setPresetLayout)(editorAnalyticsAPI)('five_equal', intl.formatMessage),
151
145
  selected: numberOfColumns === 5
152
146
  }];
153
147
  return {
@@ -11,7 +11,29 @@ import { isPreRelease2 } from './utils/preRelease';
11
11
  export const ONE_COL_LAYOUTS = ['single'];
12
12
  export const TWO_COL_LAYOUTS = ['two_equal', 'two_left_sidebar', 'two_right_sidebar'];
13
13
  export const THREE_COL_LAYOUTS = ['three_equal', 'three_with_sidebars'];
14
+ export const FOUR_COL_LAYOUTS = ['four_equal'];
15
+ export const FIVE_COL_LAYOUTS = ['five_equal'];
14
16
  const getWidthsForPreset = presetLayout => {
17
+ if (isPreRelease2()) {
18
+ switch (presetLayout) {
19
+ case 'single':
20
+ return [100];
21
+ case 'two_equal':
22
+ return [50, 50];
23
+ case 'three_equal':
24
+ return [33.33, 33.33, 33.33];
25
+ case 'two_left_sidebar':
26
+ return [33.33, 66.66];
27
+ case 'two_right_sidebar':
28
+ return [66.66, 33.33];
29
+ case 'three_with_sidebars':
30
+ return [25, 50, 25];
31
+ case 'four_equal':
32
+ return [25, 25, 25, 25];
33
+ case 'five_equal':
34
+ return [20, 20, 20, 20, 20];
35
+ }
36
+ }
15
37
  switch (presetLayout) {
16
38
  case 'single':
17
39
  return [100];
@@ -26,6 +48,7 @@ const getWidthsForPreset = presetLayout => {
26
48
  case 'three_with_sidebars':
27
49
  return [25, 50, 25];
28
50
  }
51
+ return [];
29
52
  };
30
53
 
31
54
  /**
@@ -34,6 +57,27 @@ const getWidthsForPreset = presetLayout => {
34
57
  */
35
58
  export const getPresetLayout = section => {
36
59
  const widths = mapChildren(section, column => column.attrs.width).join(',');
60
+ if (isPreRelease2()) {
61
+ switch (widths) {
62
+ case '100':
63
+ return 'single';
64
+ case '33.33,33.33,33.33':
65
+ return 'three_equal';
66
+ case '25,50,25':
67
+ return 'three_with_sidebars';
68
+ case '50,50':
69
+ return 'two_equal';
70
+ case '33.33,66.66':
71
+ return 'two_left_sidebar';
72
+ case '66.66,33.33':
73
+ return 'two_right_sidebar';
74
+ case '25,25,25,25':
75
+ return 'four_equal';
76
+ case '20,20,20,20,20':
77
+ return 'five_equal';
78
+ }
79
+ return;
80
+ }
37
81
  switch (widths) {
38
82
  case '100':
39
83
  return 'single';
@@ -165,6 +209,25 @@ const fromThreeColstoOne = (node, tr, insideRightEdgePos) => {
165
209
  const secondColumn = node.content.child(1);
166
210
  fromTwoColsToOne(secondColumn, insideRightEdgePos - thirdColumn.nodeSize - secondColumn.nodeSize, insideRightEdgePos)(tr);
167
211
  };
212
+ const increaseColumns = (schema, pos, newColumnsNumber = 1, formatMessage) => {
213
+ return tr => {
214
+ for (let i = 0; i < newColumnsNumber; i++) {
215
+ addColumn(schema, pos, formatMessage)(tr);
216
+ }
217
+ };
218
+ };
219
+ const decreaseColumns = (node, insideRightEdgePos, columnsNumberToRemove = 1) => {
220
+ return tr => {
221
+ let endPos = insideRightEdgePos;
222
+ let lastColumn = node.content.lastChild;
223
+ for (let i = 0; i < columnsNumberToRemove; i++) {
224
+ var _lastColumn;
225
+ lastColumn && removeLastColumnInLayout(lastColumn, endPos - lastColumn.nodeSize, endPos)(tr);
226
+ endPos -= ((_lastColumn = lastColumn) === null || _lastColumn === void 0 ? void 0 : _lastColumn.nodeSize) || 0;
227
+ lastColumn = node.content.child(node.childCount - i - 2);
228
+ }
229
+ };
230
+ };
168
231
 
169
232
  /**
170
233
  * Handles switching from 2 -> 3 cols, or 3 -> 2 cols
@@ -206,6 +269,18 @@ function forceColumnStructure(state, node, pos, presetLayout, formatMessage) {
206
269
  }
207
270
  return tr;
208
271
  }
272
+ function forceColumnStructureNew(state, node, pos, presetLayout, formatMessage) {
273
+ const tr = state.tr;
274
+ const insideRightEdgeOfLayoutSection = pos + node.nodeSize - 1;
275
+ const numCols = node.childCount;
276
+ const columnChange = getWidthsForPreset(presetLayout).length - numCols;
277
+ if (columnChange > 0) {
278
+ increaseColumns(state.schema, insideRightEdgeOfLayoutSection, columnChange, formatMessage)(tr);
279
+ } else if (columnChange < 0) {
280
+ decreaseColumns(node, insideRightEdgeOfLayoutSection, -columnChange)(tr);
281
+ }
282
+ return tr;
283
+ }
209
284
  function columnWidth(node, schema, widths) {
210
285
  const {
211
286
  layoutColumn
@@ -230,7 +305,8 @@ function forceColumnWidths(state, tr, pos, presetLayout) {
230
305
  return tr.replaceWith(pos + 1, pos + node.nodeSize - 1, columnWidth(node, state.schema, getWidthsForPreset(presetLayout)));
231
306
  }
232
307
  export function forceSectionToPresetLayout(state, node, pos, presetLayout, formatMessage) {
233
- let tr = forceColumnStructure(state, node, pos, presetLayout, formatMessage);
308
+ const forceColumnStructureFn = isPreRelease2() ? forceColumnStructureNew : forceColumnStructure;
309
+ let tr = forceColumnStructureFn(state, node, pos, presetLayout, formatMessage);
234
310
 
235
311
  // save the selection here, since forcing column widths causes a change over the
236
312
  // entire layoutSection, which remaps selection to the end. not remapping here
@@ -360,6 +436,26 @@ export const deleteActiveLayoutNode = editorAnalyticsAPI => (state, dispatch) =>
360
436
  return false;
361
437
  };
362
438
  const formatLayoutName = layout => {
439
+ if (isPreRelease2()) {
440
+ switch (layout) {
441
+ case 'single':
442
+ return LAYOUT_TYPE.SINGLE_COL;
443
+ case 'two_equal':
444
+ return LAYOUT_TYPE.TWO_COLS_EQUAL;
445
+ case 'three_equal':
446
+ return LAYOUT_TYPE.THREE_COLS_EQUAL;
447
+ case 'two_left_sidebar':
448
+ return LAYOUT_TYPE.LEFT_SIDEBAR;
449
+ case 'two_right_sidebar':
450
+ return LAYOUT_TYPE.RIGHT_SIDEBAR;
451
+ case 'three_with_sidebars':
452
+ return LAYOUT_TYPE.THREE_WITH_SIDEBARS;
453
+ case 'four_equal':
454
+ return LAYOUT_TYPE.FOUR_COLS_EQUAL;
455
+ case 'five_equal':
456
+ return LAYOUT_TYPE.FIVE_COLS_EQUAL;
457
+ }
458
+ }
363
459
  switch (layout) {
364
460
  case 'single':
365
461
  return LAYOUT_TYPE.SINGLE_COL;
@@ -121,10 +121,7 @@ export const buildToolbar = (state, intl, pos, _allowBreakout, addSidebarLayouts
121
121
  }),
122
122
  //'4-columns'
123
123
  icon: iconPlaceholder,
124
- onClick: () => {
125
- // TODO: Implement layout update in ED-25053
126
- return true;
127
- },
124
+ onClick: setPresetLayout(editorAnalyticsAPI)('four_equal', intl.formatMessage),
128
125
  selected: numberOfColumns === 4
129
126
  }, {
130
127
  title: intl.formatMessage(layoutMessages.columnOption, {
@@ -132,10 +129,7 @@ export const buildToolbar = (state, intl, pos, _allowBreakout, addSidebarLayouts
132
129
  }),
133
130
  //'5-columns'
134
131
  icon: iconPlaceholder,
135
- onClick: () => {
136
- // TODO: Implement layout update in ED-25053
137
- return true;
138
- },
132
+ onClick: setPresetLayout(editorAnalyticsAPI)('five_equal', intl.formatMessage),
139
133
  selected: numberOfColumns === 5
140
134
  }];
141
135
  return {
@@ -14,7 +14,29 @@ import { isPreRelease2 } from './utils/preRelease';
14
14
  export var ONE_COL_LAYOUTS = ['single'];
15
15
  export var TWO_COL_LAYOUTS = ['two_equal', 'two_left_sidebar', 'two_right_sidebar'];
16
16
  export var THREE_COL_LAYOUTS = ['three_equal', 'three_with_sidebars'];
17
+ export var FOUR_COL_LAYOUTS = ['four_equal'];
18
+ export var FIVE_COL_LAYOUTS = ['five_equal'];
17
19
  var getWidthsForPreset = function getWidthsForPreset(presetLayout) {
20
+ if (isPreRelease2()) {
21
+ switch (presetLayout) {
22
+ case 'single':
23
+ return [100];
24
+ case 'two_equal':
25
+ return [50, 50];
26
+ case 'three_equal':
27
+ return [33.33, 33.33, 33.33];
28
+ case 'two_left_sidebar':
29
+ return [33.33, 66.66];
30
+ case 'two_right_sidebar':
31
+ return [66.66, 33.33];
32
+ case 'three_with_sidebars':
33
+ return [25, 50, 25];
34
+ case 'four_equal':
35
+ return [25, 25, 25, 25];
36
+ case 'five_equal':
37
+ return [20, 20, 20, 20, 20];
38
+ }
39
+ }
18
40
  switch (presetLayout) {
19
41
  case 'single':
20
42
  return [100];
@@ -29,6 +51,7 @@ var getWidthsForPreset = function getWidthsForPreset(presetLayout) {
29
51
  case 'three_with_sidebars':
30
52
  return [25, 50, 25];
31
53
  }
54
+ return [];
32
55
  };
33
56
 
34
57
  /**
@@ -39,6 +62,27 @@ export var getPresetLayout = function getPresetLayout(section) {
39
62
  var widths = mapChildren(section, function (column) {
40
63
  return column.attrs.width;
41
64
  }).join(',');
65
+ if (isPreRelease2()) {
66
+ switch (widths) {
67
+ case '100':
68
+ return 'single';
69
+ case '33.33,33.33,33.33':
70
+ return 'three_equal';
71
+ case '25,50,25':
72
+ return 'three_with_sidebars';
73
+ case '50,50':
74
+ return 'two_equal';
75
+ case '33.33,66.66':
76
+ return 'two_left_sidebar';
77
+ case '66.66,33.33':
78
+ return 'two_right_sidebar';
79
+ case '25,25,25,25':
80
+ return 'four_equal';
81
+ case '20,20,20,20,20':
82
+ return 'five_equal';
83
+ }
84
+ return;
85
+ }
42
86
  switch (widths) {
43
87
  case '100':
44
88
  return 'single';
@@ -173,6 +217,28 @@ var fromThreeColstoOne = function fromThreeColstoOne(node, tr, insideRightEdgePo
173
217
  var secondColumn = node.content.child(1);
174
218
  fromTwoColsToOne(secondColumn, insideRightEdgePos - thirdColumn.nodeSize - secondColumn.nodeSize, insideRightEdgePos)(tr);
175
219
  };
220
+ var increaseColumns = function increaseColumns(schema, pos) {
221
+ var newColumnsNumber = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;
222
+ var formatMessage = arguments.length > 3 ? arguments[3] : undefined;
223
+ return function (tr) {
224
+ for (var i = 0; i < newColumnsNumber; i++) {
225
+ addColumn(schema, pos, formatMessage)(tr);
226
+ }
227
+ };
228
+ };
229
+ var decreaseColumns = function decreaseColumns(node, insideRightEdgePos) {
230
+ var columnsNumberToRemove = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;
231
+ return function (tr) {
232
+ var endPos = insideRightEdgePos;
233
+ var lastColumn = node.content.lastChild;
234
+ for (var i = 0; i < columnsNumberToRemove; i++) {
235
+ var _lastColumn;
236
+ lastColumn && removeLastColumnInLayout(lastColumn, endPos - lastColumn.nodeSize, endPos)(tr);
237
+ endPos -= ((_lastColumn = lastColumn) === null || _lastColumn === void 0 ? void 0 : _lastColumn.nodeSize) || 0;
238
+ lastColumn = node.content.child(node.childCount - i - 2);
239
+ }
240
+ };
241
+ };
176
242
 
177
243
  /**
178
244
  * Handles switching from 2 -> 3 cols, or 3 -> 2 cols
@@ -214,6 +280,18 @@ function forceColumnStructure(state, node, pos, presetLayout, formatMessage) {
214
280
  }
215
281
  return tr;
216
282
  }
283
+ function forceColumnStructureNew(state, node, pos, presetLayout, formatMessage) {
284
+ var tr = state.tr;
285
+ var insideRightEdgeOfLayoutSection = pos + node.nodeSize - 1;
286
+ var numCols = node.childCount;
287
+ var columnChange = getWidthsForPreset(presetLayout).length - numCols;
288
+ if (columnChange > 0) {
289
+ increaseColumns(state.schema, insideRightEdgeOfLayoutSection, columnChange, formatMessage)(tr);
290
+ } else if (columnChange < 0) {
291
+ decreaseColumns(node, insideRightEdgeOfLayoutSection, -columnChange)(tr);
292
+ }
293
+ return tr;
294
+ }
217
295
  function columnWidth(node, schema, widths) {
218
296
  var layoutColumn = schema.nodes.layoutColumn;
219
297
  var truncatedWidths = widths.map(function (w) {
@@ -237,7 +315,8 @@ function forceColumnWidths(state, tr, pos, presetLayout) {
237
315
  return tr.replaceWith(pos + 1, pos + node.nodeSize - 1, columnWidth(node, state.schema, getWidthsForPreset(presetLayout)));
238
316
  }
239
317
  export function forceSectionToPresetLayout(state, node, pos, presetLayout, formatMessage) {
240
- var tr = forceColumnStructure(state, node, pos, presetLayout, formatMessage);
318
+ var forceColumnStructureFn = isPreRelease2() ? forceColumnStructureNew : forceColumnStructure;
319
+ var tr = forceColumnStructureFn(state, node, pos, presetLayout, formatMessage);
241
320
 
242
321
  // save the selection here, since forcing column widths causes a change over the
243
322
  // entire layoutSection, which remaps selection to the end. not remapping here
@@ -368,6 +447,26 @@ export var deleteActiveLayoutNode = function deleteActiveLayoutNode(editorAnalyt
368
447
  };
369
448
  };
370
449
  var formatLayoutName = function formatLayoutName(layout) {
450
+ if (isPreRelease2()) {
451
+ switch (layout) {
452
+ case 'single':
453
+ return LAYOUT_TYPE.SINGLE_COL;
454
+ case 'two_equal':
455
+ return LAYOUT_TYPE.TWO_COLS_EQUAL;
456
+ case 'three_equal':
457
+ return LAYOUT_TYPE.THREE_COLS_EQUAL;
458
+ case 'two_left_sidebar':
459
+ return LAYOUT_TYPE.LEFT_SIDEBAR;
460
+ case 'two_right_sidebar':
461
+ return LAYOUT_TYPE.RIGHT_SIDEBAR;
462
+ case 'three_with_sidebars':
463
+ return LAYOUT_TYPE.THREE_WITH_SIDEBARS;
464
+ case 'four_equal':
465
+ return LAYOUT_TYPE.FOUR_COLS_EQUAL;
466
+ case 'five_equal':
467
+ return LAYOUT_TYPE.FIVE_COLS_EQUAL;
468
+ }
469
+ }
371
470
  switch (layout) {
372
471
  case 'single':
373
472
  return LAYOUT_TYPE.SINGLE_COL;
@@ -123,10 +123,7 @@ export var buildToolbar = function buildToolbar(state, intl, pos, _allowBreakout
123
123
  }),
124
124
  //'4-columns'
125
125
  icon: iconPlaceholder,
126
- onClick: function onClick() {
127
- // TODO: Implement layout update in ED-25053
128
- return true;
129
- },
126
+ onClick: setPresetLayout(editorAnalyticsAPI)('four_equal', intl.formatMessage),
130
127
  selected: numberOfColumns === 4
131
128
  }, {
132
129
  title: intl.formatMessage(layoutMessages.columnOption, {
@@ -134,10 +131,7 @@ export var buildToolbar = function buildToolbar(state, intl, pos, _allowBreakout
134
131
  }),
135
132
  //'5-columns'
136
133
  icon: iconPlaceholder,
137
- onClick: function onClick() {
138
- // TODO: Implement layout update in ED-25053
139
- return true;
140
- },
134
+ onClick: setPresetLayout(editorAnalyticsAPI)('five_equal', intl.formatMessage),
141
135
  selected: numberOfColumns === 5
142
136
  }];
143
137
  return {
@@ -7,6 +7,8 @@ import type { Change, PresetLayout } from './types';
7
7
  export declare const ONE_COL_LAYOUTS: PresetLayout[];
8
8
  export declare const TWO_COL_LAYOUTS: PresetLayout[];
9
9
  export declare const THREE_COL_LAYOUTS: PresetLayout[];
10
+ export declare const FOUR_COL_LAYOUTS: PresetLayout[];
11
+ export declare const FIVE_COL_LAYOUTS: PresetLayout[];
10
12
  /**
11
13
  * Finds layout preset based on the width attrs of all the layoutColumn nodes
12
14
  * inside the layoutSection node
@@ -5,7 +5,7 @@ export interface LayoutPluginOptions extends LongPressSelectionPluginOptions {
5
5
  UNSAFE_addSidebarLayouts?: boolean;
6
6
  UNSAFE_allowSingleColumnLayout?: boolean;
7
7
  }
8
- export type PresetLayout = 'single' | 'two_equal' | 'three_equal' | 'two_right_sidebar' | 'two_left_sidebar' | 'three_with_sidebars';
8
+ export type PresetLayout = 'single' | 'two_equal' | 'three_equal' | 'two_right_sidebar' | 'two_left_sidebar' | 'three_with_sidebars' | 'four_equal' | 'five_equal';
9
9
  export interface Change {
10
10
  from: number;
11
11
  to: number;
@@ -7,6 +7,8 @@ import type { Change, PresetLayout } from './types';
7
7
  export declare const ONE_COL_LAYOUTS: PresetLayout[];
8
8
  export declare const TWO_COL_LAYOUTS: PresetLayout[];
9
9
  export declare const THREE_COL_LAYOUTS: PresetLayout[];
10
+ export declare const FOUR_COL_LAYOUTS: PresetLayout[];
11
+ export declare const FIVE_COL_LAYOUTS: PresetLayout[];
10
12
  /**
11
13
  * Finds layout preset based on the width attrs of all the layoutColumn nodes
12
14
  * inside the layoutSection node
@@ -5,7 +5,7 @@ export interface LayoutPluginOptions extends LongPressSelectionPluginOptions {
5
5
  UNSAFE_addSidebarLayouts?: boolean;
6
6
  UNSAFE_allowSingleColumnLayout?: boolean;
7
7
  }
8
- export type PresetLayout = 'single' | 'two_equal' | 'three_equal' | 'two_right_sidebar' | 'two_left_sidebar' | 'three_with_sidebars';
8
+ export type PresetLayout = 'single' | 'two_equal' | 'three_equal' | 'two_right_sidebar' | 'two_left_sidebar' | 'three_with_sidebars' | 'four_equal' | 'five_equal';
9
9
  export interface Change {
10
10
  from: number;
11
11
  to: number;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@atlaskit/editor-plugin-layout",
3
- "version": "1.9.6",
3
+ "version": "1.9.8",
4
4
  "description": "Layout plugin for @atlaskit/editor-core",
5
5
  "author": "Atlassian Pty Ltd",
6
6
  "license": "Apache-2.0",
@@ -32,13 +32,13 @@
32
32
  },
33
33
  "dependencies": {
34
34
  "@atlaskit/adf-schema": "^42.3.1",
35
- "@atlaskit/editor-common": "^94.3.0",
35
+ "@atlaskit/editor-common": "^94.9.0",
36
36
  "@atlaskit/editor-plugin-analytics": "^1.10.0",
37
37
  "@atlaskit/editor-plugin-decorations": "^1.3.0",
38
38
  "@atlaskit/editor-prosemirror": "6.0.0",
39
39
  "@atlaskit/icon": "^22.24.0",
40
40
  "@atlaskit/platform-feature-flags": "^0.3.0",
41
- "@atlaskit/tmp-editor-statsig": "^2.9.0",
41
+ "@atlaskit/tmp-editor-statsig": "^2.10.0",
42
42
  "@atlaskit/tokens": "^2.0.0",
43
43
  "@babel/runtime": "^7.0.0",
44
44
  "@emotion/react": "^11.7.1"