@atlaskit/editor-plugin-layout 1.9.7 → 1.9.9

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,21 @@
1
1
  # @atlaskit/editor-plugin-layout
2
2
 
3
+ ## 1.9.9
4
+
5
+ ### Patch Changes
6
+
7
+ - [#159176](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/pull-requests/159176)
8
+ [`8f1d77592a9dc`](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/commits/8f1d77592a9dc) -
9
+ Bump adf-schema to 44.2.0
10
+
11
+ ## 1.9.8
12
+
13
+ ### Patch Changes
14
+
15
+ - [#158827](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/pull-requests/158827)
16
+ [`6696a5d9665c7`](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/commits/6696a5d9665c7) -
17
+ Refactor forceColumnStructure so it works for 2-5 columns layout under advanced_layout experiment
18
+
3
19
  ## 1.9.7
4
20
 
5
21
  ### 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,6 +23,8 @@ 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) {
27
29
  if ((0, _preRelease.isPreRelease2)()) {
28
30
  switch (presetLayout) {
@@ -224,6 +226,28 @@ var fromThreeColstoOne = function fromThreeColstoOne(node, tr, insideRightEdgePo
224
226
  var secondColumn = node.content.child(1);
225
227
  fromTwoColsToOne(secondColumn, insideRightEdgePos - thirdColumn.nodeSize - secondColumn.nodeSize, insideRightEdgePos)(tr);
226
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
+ };
227
251
 
228
252
  /**
229
253
  * Handles switching from 2 -> 3 cols, or 3 -> 2 cols
@@ -265,6 +289,18 @@ function forceColumnStructure(state, node, pos, presetLayout, formatMessage) {
265
289
  }
266
290
  return tr;
267
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
+ }
268
304
  function columnWidth(node, schema, widths) {
269
305
  var layoutColumn = schema.nodes.layoutColumn;
270
306
  var truncatedWidths = widths.map(function (w) {
@@ -288,7 +324,8 @@ function forceColumnWidths(state, tr, pos, presetLayout) {
288
324
  return tr.replaceWith(pos + 1, pos + node.nodeSize - 1, columnWidth(node, state.schema, getWidthsForPreset(presetLayout)));
289
325
  }
290
326
  function forceSectionToPresetLayout(state, node, pos, presetLayout, formatMessage) {
291
- 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);
292
329
 
293
330
  // save the selection here, since forcing column widths causes a change over the
294
331
  // entire layoutSection, which remaps selection to the end. not remapping here
@@ -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,6 +11,8 @@ 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 => {
15
17
  if (isPreRelease2()) {
16
18
  switch (presetLayout) {
@@ -207,6 +209,25 @@ const fromThreeColstoOne = (node, tr, insideRightEdgePos) => {
207
209
  const secondColumn = node.content.child(1);
208
210
  fromTwoColsToOne(secondColumn, insideRightEdgePos - thirdColumn.nodeSize - secondColumn.nodeSize, insideRightEdgePos)(tr);
209
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
+ };
210
231
 
211
232
  /**
212
233
  * Handles switching from 2 -> 3 cols, or 3 -> 2 cols
@@ -248,6 +269,18 @@ function forceColumnStructure(state, node, pos, presetLayout, formatMessage) {
248
269
  }
249
270
  return tr;
250
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
+ }
251
284
  function columnWidth(node, schema, widths) {
252
285
  const {
253
286
  layoutColumn
@@ -272,7 +305,8 @@ function forceColumnWidths(state, tr, pos, presetLayout) {
272
305
  return tr.replaceWith(pos + 1, pos + node.nodeSize - 1, columnWidth(node, state.schema, getWidthsForPreset(presetLayout)));
273
306
  }
274
307
  export function forceSectionToPresetLayout(state, node, pos, presetLayout, formatMessage) {
275
- let tr = forceColumnStructure(state, node, pos, presetLayout, formatMessage);
308
+ const forceColumnStructureFn = isPreRelease2() ? forceColumnStructureNew : forceColumnStructure;
309
+ let tr = forceColumnStructureFn(state, node, pos, presetLayout, formatMessage);
276
310
 
277
311
  // save the selection here, since forcing column widths causes a change over the
278
312
  // entire layoutSection, which remaps selection to the end. not remapping here
@@ -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,6 +14,8 @@ 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) {
18
20
  if (isPreRelease2()) {
19
21
  switch (presetLayout) {
@@ -215,6 +217,28 @@ var fromThreeColstoOne = function fromThreeColstoOne(node, tr, insideRightEdgePo
215
217
  var secondColumn = node.content.child(1);
216
218
  fromTwoColsToOne(secondColumn, insideRightEdgePos - thirdColumn.nodeSize - secondColumn.nodeSize, insideRightEdgePos)(tr);
217
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
+ };
218
242
 
219
243
  /**
220
244
  * Handles switching from 2 -> 3 cols, or 3 -> 2 cols
@@ -256,6 +280,18 @@ function forceColumnStructure(state, node, pos, presetLayout, formatMessage) {
256
280
  }
257
281
  return tr;
258
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
+ }
259
295
  function columnWidth(node, schema, widths) {
260
296
  var layoutColumn = schema.nodes.layoutColumn;
261
297
  var truncatedWidths = widths.map(function (w) {
@@ -279,7 +315,8 @@ function forceColumnWidths(state, tr, pos, presetLayout) {
279
315
  return tr.replaceWith(pos + 1, pos + node.nodeSize - 1, columnWidth(node, state.schema, getWidthsForPreset(presetLayout)));
280
316
  }
281
317
  export function forceSectionToPresetLayout(state, node, pos, presetLayout, formatMessage) {
282
- var tr = forceColumnStructure(state, node, pos, presetLayout, formatMessage);
318
+ var forceColumnStructureFn = isPreRelease2() ? forceColumnStructureNew : forceColumnStructure;
319
+ var tr = forceColumnStructureFn(state, node, pos, presetLayout, formatMessage);
283
320
 
284
321
  // save the selection here, since forcing column widths causes a change over the
285
322
  // entire layoutSection, which remaps selection to the end. not remapping here
@@ -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
@@ -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
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@atlaskit/editor-plugin-layout",
3
- "version": "1.9.7",
3
+ "version": "1.9.9",
4
4
  "description": "Layout plugin for @atlaskit/editor-core",
5
5
  "author": "Atlassian Pty Ltd",
6
6
  "license": "Apache-2.0",
@@ -31,14 +31,14 @@
31
31
  ".": "./src/index.ts"
32
32
  },
33
33
  "dependencies": {
34
- "@atlaskit/adf-schema": "^42.3.1",
35
- "@atlaskit/editor-common": "^94.4.0",
34
+ "@atlaskit/adf-schema": "^44.2.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"