@atlaskit/editor-plugin-table 7.9.0 → 7.10.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 (77) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/dist/cjs/commands/column-resize.js +25 -7
  3. package/dist/cjs/nodeviews/TableComponent.js +11 -3
  4. package/dist/cjs/nodeviews/TableRow.js +1 -1
  5. package/dist/cjs/pm-plugins/table-resizing/utils/colgroup.js +4 -4
  6. package/dist/cjs/pm-plugins/table-resizing/utils/misc.js +1 -1
  7. package/dist/cjs/pm-plugins/table-resizing/utils/resize-column.js +5 -3
  8. package/dist/cjs/pm-plugins/table-resizing/utils/resize-state.js +9 -7
  9. package/dist/cjs/transforms/column-width.js +3 -1
  10. package/dist/cjs/ui/TableFloatingControls/RowControls/DragControls.js +19 -6
  11. package/dist/cjs/utils/index.js +12 -0
  12. package/dist/cjs/utils/nodes.js +6 -1
  13. package/dist/cjs/utils/table.js +34 -1
  14. package/dist/es2019/commands/column-resize.js +25 -7
  15. package/dist/es2019/nodeviews/TableComponent.js +12 -4
  16. package/dist/es2019/nodeviews/TableRow.js +1 -1
  17. package/dist/es2019/pm-plugins/table-resizing/utils/colgroup.js +4 -4
  18. package/dist/es2019/pm-plugins/table-resizing/utils/misc.js +1 -1
  19. package/dist/es2019/pm-plugins/table-resizing/utils/resize-column.js +5 -3
  20. package/dist/es2019/pm-plugins/table-resizing/utils/resize-state.js +9 -7
  21. package/dist/es2019/transforms/column-width.js +3 -1
  22. package/dist/es2019/ui/TableFloatingControls/RowControls/DragControls.js +19 -6
  23. package/dist/es2019/utils/index.js +2 -2
  24. package/dist/es2019/utils/nodes.js +5 -0
  25. package/dist/es2019/utils/table.js +36 -1
  26. package/dist/esm/commands/column-resize.js +25 -7
  27. package/dist/esm/nodeviews/TableComponent.js +12 -4
  28. package/dist/esm/nodeviews/TableRow.js +1 -1
  29. package/dist/esm/pm-plugins/table-resizing/utils/colgroup.js +4 -4
  30. package/dist/esm/pm-plugins/table-resizing/utils/misc.js +1 -1
  31. package/dist/esm/pm-plugins/table-resizing/utils/resize-column.js +5 -3
  32. package/dist/esm/pm-plugins/table-resizing/utils/resize-state.js +9 -7
  33. package/dist/esm/transforms/column-width.js +3 -1
  34. package/dist/esm/ui/TableFloatingControls/RowControls/DragControls.js +19 -6
  35. package/dist/esm/utils/index.js +2 -2
  36. package/dist/esm/utils/nodes.js +5 -0
  37. package/dist/esm/utils/table.js +33 -0
  38. package/dist/types/commands/column-resize.d.ts +5 -4
  39. package/dist/types/nodeviews/TableComponent.d.ts +6 -54
  40. package/dist/types/plugin.d.ts +1 -1
  41. package/dist/types/pm-plugins/table-resizing/utils/colgroup.d.ts +1 -1
  42. package/dist/types/pm-plugins/table-resizing/utils/misc.d.ts +1 -1
  43. package/dist/types/pm-plugins/table-resizing/utils/resize-column.d.ts +1 -1
  44. package/dist/types/pm-plugins/table-resizing/utils/resize-state.d.ts +2 -2
  45. package/dist/types/ui/TableFloatingColumnControls/ColumnControls/index.d.ts +16 -20
  46. package/dist/types/ui/TableFloatingControls/CornerControls/DragCornerControls.d.ts +32 -40
  47. package/dist/types/ui/TableFloatingControls/index.d.ts +16 -20
  48. package/dist/types/utils/index.d.ts +2 -2
  49. package/dist/types/utils/nodes.d.ts +1 -0
  50. package/dist/types/utils/table.d.ts +3 -0
  51. package/dist/types-ts4.5/commands/column-resize.d.ts +5 -4
  52. package/dist/types-ts4.5/nodeviews/TableComponent.d.ts +6 -54
  53. package/dist/types-ts4.5/plugin.d.ts +1 -1
  54. package/dist/types-ts4.5/pm-plugins/table-resizing/utils/colgroup.d.ts +1 -1
  55. package/dist/types-ts4.5/pm-plugins/table-resizing/utils/misc.d.ts +1 -1
  56. package/dist/types-ts4.5/pm-plugins/table-resizing/utils/resize-column.d.ts +1 -1
  57. package/dist/types-ts4.5/pm-plugins/table-resizing/utils/resize-state.d.ts +2 -2
  58. package/dist/types-ts4.5/ui/TableFloatingColumnControls/ColumnControls/index.d.ts +16 -20
  59. package/dist/types-ts4.5/ui/TableFloatingControls/CornerControls/DragCornerControls.d.ts +32 -40
  60. package/dist/types-ts4.5/ui/TableFloatingControls/index.d.ts +16 -20
  61. package/dist/types-ts4.5/utils/index.d.ts +2 -2
  62. package/dist/types-ts4.5/utils/nodes.d.ts +1 -0
  63. package/dist/types-ts4.5/utils/table.d.ts +3 -0
  64. package/package.json +4 -1
  65. package/src/commands/column-resize.ts +42 -11
  66. package/src/nodeviews/TableComponent.tsx +21 -6
  67. package/src/nodeviews/TableRow.ts +2 -2
  68. package/src/plugin.tsx +1 -1
  69. package/src/pm-plugins/table-resizing/utils/colgroup.ts +5 -5
  70. package/src/pm-plugins/table-resizing/utils/misc.ts +2 -2
  71. package/src/pm-plugins/table-resizing/utils/resize-column.ts +7 -5
  72. package/src/pm-plugins/table-resizing/utils/resize-state.ts +16 -10
  73. package/src/transforms/column-width.ts +10 -2
  74. package/src/ui/TableFloatingControls/RowControls/DragControls.tsx +28 -11
  75. package/src/utils/index.ts +2 -1
  76. package/src/utils/nodes.ts +10 -0
  77. package/src/utils/table.ts +36 -0
package/CHANGELOG.md CHANGED
@@ -1,5 +1,17 @@
1
1
  # @atlaskit/editor-plugin-table
2
2
 
3
+ ## 7.10.1
4
+
5
+ ### Patch Changes
6
+
7
+ - [#92552](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/pull-requests/92552) [`7cd874b858c8`](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/commits/7cd874b858c8) - Check target elements are actually HTMLElement rather than typecasting.
8
+
9
+ ## 7.10.0
10
+
11
+ ### Minor Changes
12
+
13
+ - [#85498](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/pull-requests/85498) [`ae3b8e85ce49`](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/commits/ae3b8e85ce49) - [ux] [ECA11Y-17] Added screen reader announcement for insertion and removal of table columns and rows
14
+
3
15
  ## 7.9.0
4
16
 
5
17
  ### Minor Changes
@@ -78,7 +78,9 @@ var initiateKeyboardColumnResizing = exports.initiateKeyboardColumnResizing = fu
78
78
  var selectionRect = (0, _utils.isSelectionType)(selection, 'cell') ? (0, _utils.getSelectionRect)(selection) : (0, _utils.findCellRectClosestToPos)(selection.$from);
79
79
  var cell = (0, _utils.findCellClosestToPos)(selection.$from);
80
80
  if (ariaNotify && getIntl) {
81
- ariaNotify(getIntl().formatMessage(_messages.tableMessages.startedColumnResize));
81
+ ariaNotify(getIntl().formatMessage(_messages.tableMessages.startedColumnResize), {
82
+ priority: 'important'
83
+ });
82
84
  }
83
85
  if (selectionRect && cell && view) {
84
86
  return updateResizeHandleAndStatePosition(selectionRect.top, selectionRect.right, cell.pos)(state, dispatch);
@@ -122,12 +124,16 @@ var activateNextResizeArea = exports.activateNextResizeArea = function activateN
122
124
  if (direction === 1) {
123
125
  ariaNotify(getIntl().formatMessage(_messages.tableMessages.focusedOtherResize, {
124
126
  direction: 'right'
125
- }));
127
+ }), {
128
+ priority: 'important'
129
+ });
126
130
  }
127
131
  if (direction === -1) {
128
132
  ariaNotify(getIntl().formatMessage(_messages.tableMessages.focusedOtherResize, {
129
133
  direction: 'left'
130
- }));
134
+ }), {
135
+ priority: 'important'
136
+ });
131
137
  }
132
138
  }
133
139
  if ($nextCell) {
@@ -176,7 +182,13 @@ var changeColumnWidthByStep = exports.changeColumnWidthByStep = function changeC
176
182
  var map = _editorTables.TableMap.get(originalTable);
177
183
  var domAtPos = view.domAtPos.bind(view);
178
184
  var colIndex = map.colCount($cell.pos - tableStartPosition) + ($cell.nodeAfter ? $cell.nodeAfter.attrs.colspan : 1) - 1;
179
- var dom = domAtPos(tableStartPosition).node;
185
+ var dom = null;
186
+ if ((0, _platformFeatureFlags.getBooleanFF)('platform.editor.explicit-html-element-check')) {
187
+ var domAtPosition = domAtPos(tableStartPosition);
188
+ dom = domAtPosition.node instanceof HTMLTableElement ? domAtPosition.node : null;
189
+ } else {
190
+ dom = domAtPos(tableStartPosition).node;
191
+ }
180
192
  if (dom && dom.nodeName !== 'TABLE') {
181
193
  dom = dom.closest('table');
182
194
  }
@@ -223,10 +235,14 @@ var changeColumnWidthByStep = exports.changeColumnWidthByStep = function changeC
223
235
  }));
224
236
  if (newResizeState.cols.length === colIndex + 1) {
225
237
  if (newResizeState.overflow === true) {
226
- ariaNotify(getIntl().formatMessage(_messages.tableMessages.columnResizeLast));
238
+ ariaNotify(getIntl().formatMessage(_messages.tableMessages.columnResizeLast), {
239
+ priority: 'important'
240
+ });
227
241
  }
228
242
  if (newResizeState.overflow === false) {
229
- ariaNotify(getIntl().formatMessage(_messages.tableMessages.columnResizeOverflow));
243
+ ariaNotify(getIntl().formatMessage(_messages.tableMessages.columnResizeOverflow), {
244
+ priority: 'important'
245
+ });
230
246
  }
231
247
  }
232
248
  }
@@ -262,7 +278,9 @@ var stopKeyboardColumnResizing = exports.stopKeyboardColumnResizing = function s
262
278
  return customTr.setMeta('scrollIntoView', false);
263
279
  })(state, fakeDispatch);
264
280
  if (ariaNotify && getIntl) {
265
- ariaNotify(getIntl().formatMessage(_messages.tableMessages.columnResizeStop));
281
+ ariaNotify(getIntl().formatMessage(_messages.tableMessages.columnResizeStop), {
282
+ priority: 'important'
283
+ });
266
284
  }
267
285
  if (dispatch) {
268
286
  dispatch(customTr);
@@ -17,6 +17,7 @@ var _react = _interopRequireDefault(require("react"));
17
17
  var _classnames2 = _interopRequireDefault(require("classnames"));
18
18
  var _memoizeOne = _interopRequireDefault(require("memoize-one"));
19
19
  var _rafSchd = _interopRequireDefault(require("raf-schd"));
20
+ var _reactIntlNext = require("react-intl-next");
20
21
  var _analytics = require("@atlaskit/editor-common/analytics");
21
22
  var _nodeWidth = require("@atlaskit/editor-common/node-width");
22
23
  var _styles = require("@atlaskit/editor-common/styles");
@@ -522,6 +523,15 @@ var TableComponent = /*#__PURE__*/function (_React$Component) {
522
523
  this.overflowShadowsObserver.observeShadowSentinels((_this$state$stickyHea = this.state.stickyHeader) === null || _this$state$stickyHea === void 0 ? void 0 : _this$state$stickyHea.sticky);
523
524
  }
524
525
  var currentTable = getNode();
526
+ var previousTable = this.node;
527
+ var isNoOfColumnsChanged = (0, _utils5.tablesHaveDifferentNoOfColumns)(currentTable, previousTable);
528
+ var isNoOfRowsChanged = (0, _utils5.tablesHaveDifferentNoOfRows)(currentTable, previousTable);
529
+ if (isNoOfColumnsChanged || isNoOfRowsChanged) {
530
+ var _this$props$pluginInj;
531
+ (_this$props$pluginInj = this.props.pluginInjectionApi) === null || _this$props$pluginInj === void 0 || (_this$props$pluginInj = _this$props$pluginInj.accessibilityUtils) === null || _this$props$pluginInj === void 0 || _this$props$pluginInj.actions.ariaNotify((0, _utils5.getAssistiveMessage)(previousTable, currentTable, this.props.intl), {
532
+ priority: 'important'
533
+ });
534
+ }
525
535
  if (currentTable.attrs.__autoSize) {
526
536
  // Wait for next tick to handle auto sizing, gives the browser time to do layout calc etc.
527
537
  this.handleAutoSizeDebounced();
@@ -531,8 +541,6 @@ var TableComponent = /*#__PURE__*/function (_React$Component) {
531
541
  else if (allowColumnResizing && this.table && !isMediaFullscreen) {
532
542
  // If col widths (e.g. via collab) or number of columns (e.g. delete a column) have changed,
533
543
  // re-draw colgroup.
534
- var previousTable = this.node;
535
- var isNoOfColumnsChanged = (0, _utils5.tablesHaveDifferentNoOfColumns)(currentTable, previousTable);
536
544
  if ((0, _utils5.tablesHaveDifferentColumnWidths)(currentTable, previousTable) || isNoOfColumnsChanged) {
537
545
  var _view = this.props.view;
538
546
  var shouldRecreateResizeCols = !(options !== null && options !== void 0 && options.isTableResizingEnabled) || !isResizing || isNoOfColumnsChanged && isResizing;
@@ -793,4 +801,4 @@ var TableComponent = /*#__PURE__*/function (_React$Component) {
793
801
  return TableComponent;
794
802
  }(_react.default.Component);
795
803
  (0, _defineProperty3.default)(TableComponent, "displayName", 'TableComponent');
796
- var _default = exports.default = TableComponent;
804
+ var _default = exports.default = (0, _reactIntlNext.injectIntl)(TableComponent);
@@ -403,7 +403,7 @@ var TableRow = exports.default = /*#__PURE__*/function (_ref) {
403
403
  this.focused = isCurrentTableSelected;
404
404
  var wrapper = tree.wrapper;
405
405
  var tableContainer = wrapper.parentElement;
406
- var tableContentWrapper = tableContainer.parentElement;
406
+ var tableContentWrapper = tableContainer === null || tableContainer === void 0 ? void 0 : tableContainer.parentElement;
407
407
  var layoutContainer = tableContentWrapper && tableContentWrapper.parentElement;
408
408
  if (isCurrentTableSelected) {
409
409
  this.colControlsOffset = _consts.tableControlsSpacing;
@@ -63,13 +63,13 @@ var generateColgroup = exports.generateColgroup = function generateColgroup(tabl
63
63
  var insertColgroupFromNode = exports.insertColgroupFromNode = function insertColgroupFromNode(tableRef, table) {
64
64
  var isTableScalingEnabled = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
65
65
  var shouldRemove = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : true;
66
- var colgroup = tableRef.querySelector('colgroup');
66
+ var colgroup = tableRef === null || tableRef === void 0 ? void 0 : tableRef.querySelector('colgroup');
67
67
  if (colgroup && shouldRemove) {
68
- tableRef.removeChild(colgroup);
68
+ tableRef === null || tableRef === void 0 || tableRef.removeChild(colgroup);
69
69
  }
70
- colgroup = renderColgroupFromNode(table, isTableScalingEnabled ? tableRef : undefined);
70
+ colgroup = renderColgroupFromNode(table, isTableScalingEnabled ? tableRef !== null && tableRef !== void 0 ? tableRef : undefined : undefined);
71
71
  if (shouldRemove) {
72
- tableRef.insertBefore(colgroup, tableRef.firstChild);
72
+ tableRef === null || tableRef === void 0 || tableRef.insertBefore(colgroup, tableRef === null || tableRef === void 0 ? void 0 : tableRef.firstChild);
73
73
  }
74
74
  return colgroup.children;
75
75
  };
@@ -103,7 +103,7 @@ var getTableContainerElementWidth = exports.getTableContainerElementWidth = func
103
103
  var getTableScalingPercent = exports.getTableScalingPercent = function getTableScalingPercent(table, tableRef) {
104
104
  var _tableRef$parentEleme;
105
105
  var tableWidth = getTableContainerElementWidth(table);
106
- var renderWidth = ((_tableRef$parentEleme = tableRef.parentElement) === null || _tableRef$parentEleme === void 0 ? void 0 : _tableRef$parentEleme.clientWidth) || tableWidth;
106
+ var renderWidth = (tableRef === null || tableRef === void 0 || (_tableRef$parentEleme = tableRef.parentElement) === null || _tableRef$parentEleme === void 0 ? void 0 : _tableRef$parentEleme.clientWidth) || tableWidth;
107
107
  // minus 1 here to avoid any 1px scroll in Firefox
108
108
  var scalePercent = (renderWidth - 1) / tableWidth;
109
109
  scalePercent = Math.max(scalePercent, 1 - _consts.MAX_SCALING_PERCENT);
@@ -22,7 +22,7 @@ var resizeColumn = exports.resizeColumn = function resizeColumn(resizeState, col
22
22
  var _tableRef$closest;
23
23
  // when table initially not overflow, but enter overflow, we need to calculate the resize amount by two part, before and after overflow, before overflow should be double, after should not be double.
24
24
  var tableWidth = tableRef === null || tableRef === void 0 ? void 0 : tableRef.clientWidth;
25
- var tableContainerWidth = (_tableRef$closest = tableRef.closest('.resizer-item')) === null || _tableRef$closest === void 0 ? void 0 : _tableRef$closest.clientWidth;
25
+ var tableContainerWidth = tableRef === null || tableRef === void 0 || (_tableRef$closest = tableRef.closest('.resizer-item')) === null || _tableRef$closest === void 0 ? void 0 : _tableRef$closest.clientWidth;
26
26
  var isOverflowed = !!(tableWidth && tableContainerWidth && tableWidth > tableContainerWidth);
27
27
  resizeAmount = amount * 2;
28
28
  if (isOverflowed) {
@@ -53,11 +53,13 @@ var resizeColumn = exports.resizeColumn = function resizeColumn(resizeState, col
53
53
  };
54
54
  var updateTable = function updateTable(resizeAmount, tableRef, tableNode) {
55
55
  var currentWidth = (0, _misc.getTableContainerElementWidth)(tableNode);
56
- var resizingContainer = tableRef.closest(".".concat(_types.TableCssClassName.TABLE_RESIZER_CONTAINER));
56
+ var resizingContainer = tableRef === null || tableRef === void 0 ? void 0 : tableRef.closest(".".concat(_types.TableCssClassName.TABLE_RESIZER_CONTAINER));
57
57
  var resizingItem = resizingContainer === null || resizingContainer === void 0 ? void 0 : resizingContainer.querySelector('.resizer-item');
58
58
  if (resizingContainer && resizingItem) {
59
59
  var newWidth = "".concat(currentWidth + resizeAmount, "px");
60
- tableRef.style.width = newWidth;
60
+ if (tableRef) {
61
+ tableRef.style.width = newWidth;
62
+ }
61
63
  resizingContainer.style.width = newWidth;
62
64
  resizingItem.style.width = newWidth;
63
65
  }
@@ -9,6 +9,7 @@ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/de
9
9
  var _nodeWidth = require("@atlaskit/editor-common/node-width");
10
10
  var _styles = require("@atlaskit/editor-common/styles");
11
11
  var _utils = require("@atlaskit/editor-common/utils");
12
+ var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
12
13
  var _utils2 = require("../../../utils");
13
14
  var _colgroup = require("./colgroup");
14
15
  var _columnState = require("./column-state");
@@ -92,8 +93,8 @@ var getResizeState = exports.getResizeState = function getResizeState(_ref) {
92
93
 
93
94
  // updates Colgroup DOM node with new widths
94
95
  var updateColgroup = exports.updateColgroup = function updateColgroup(state, tableRef, tableNode, isTableScalingEnabled) {
95
- var cols = tableRef.querySelectorAll('col');
96
- var columnsCount = cols.length;
96
+ var cols = tableRef === null || tableRef === void 0 ? void 0 : tableRef.querySelectorAll('col');
97
+ var columnsCount = cols === null || cols === void 0 ? void 0 : cols.length;
97
98
  /**
98
99
  updateColgroup will update whole table scale when click the column resize handle, this behavior will affect when table overflowed, when now resize handle been dragged and extend to make table overflowed, table will show overflow. This need to be confirmed because it conflict with how isTableScalingEnabled work.
99
100
  We don't want to scale the table when resizing columns, only when viewpoint shrinks the table.
@@ -105,11 +106,11 @@ var updateColgroup = exports.updateColgroup = function updateColgroup(state, tab
105
106
  return column && !!column.width;
106
107
  }) // if width is 0, we dont want to apply that.
107
108
  .forEach(function (column, i) {
108
- var fixedColWidth = (0, _colgroup.getColWidthFix)(column.width, columnsCount);
109
+ var fixedColWidth = (0, _colgroup.getColWidthFix)(column.width, columnsCount !== null && columnsCount !== void 0 ? columnsCount : 0);
109
110
  var scaledWidth = fixedColWidth * scalePercent;
110
111
  var finalWidth = Math.max(scaledWidth, _styles.tableCellMinWidth);
111
112
  // we aren't handling the remaining pixels here when the 48px min width is reached
112
- if (cols[i]) {
113
+ if (cols !== null && cols !== void 0 && cols[i]) {
113
114
  cols[i].style.width = "".concat(finalWidth, "px");
114
115
  }
115
116
  });
@@ -118,8 +119,8 @@ var updateColgroup = exports.updateColgroup = function updateColgroup(state, tab
118
119
  return column && !!column.width;
119
120
  }) // if width is 0, we dont want to apply that.
120
121
  .forEach(function (column, i) {
121
- if (cols[i]) {
122
- cols[i].style.width = "".concat((0, _colgroup.getColWidthFix)(column.width, columnsCount), "px");
122
+ if (cols !== null && cols !== void 0 && cols[i]) {
123
+ cols[i].style.width = "".concat((0, _colgroup.getColWidthFix)(column.width, columnsCount !== null && columnsCount !== void 0 ? columnsCount : 0), "px");
123
124
  }
124
125
  });
125
126
  }
@@ -319,7 +320,8 @@ var getNewResizeStateFromSelectedColumns = exports.getNewResizeStateFromSelected
319
320
  return;
320
321
  }
321
322
  var maybeTable = domAtPos(table.start).node;
322
- var tableRef = maybeTable.closest('table');
323
+ var maybeTableElement = maybeTable instanceof HTMLElement ? maybeTable : null;
324
+ var tableRef = (0, _platformFeatureFlags.getBooleanFF)('platform.editor.explicit-html-element-check') ? maybeTableElement === null || maybeTableElement === void 0 ? void 0 : maybeTableElement.closest('table') : maybeTable === null || maybeTable === void 0 ? void 0 : maybeTable.closest('table');
323
325
  if (!tableRef) {
324
326
  return;
325
327
  }
@@ -9,6 +9,7 @@ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/de
9
9
  var _styles = require("@atlaskit/editor-common/styles");
10
10
  var _transform = require("@atlaskit/editor-prosemirror/transform");
11
11
  var _tableMap = require("@atlaskit/editor-tables/table-map");
12
+ var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
12
13
  var _utils = require("../pm-plugins/table-resizing/utils");
13
14
  var _colgroup = require("../pm-plugins/table-resizing/utils/colgroup");
14
15
  var _resizeState = require("../pm-plugins/table-resizing/utils/resize-state");
@@ -105,7 +106,8 @@ var rescaleColumns = exports.rescaleColumns = function rescaleColumns() {
105
106
  var newTable = tr.doc.nodeAt(table.pos);
106
107
  var domAtPos = view.domAtPos.bind(view);
107
108
  var maybeTable = domAtPos(table.start).node;
108
- var tableRef = maybeTable.closest('table');
109
+ var maybeTableElement = (0, _platformFeatureFlags.getBooleanFF)('platform.editor.explicit-html-element-check') ? maybeTable instanceof HTMLElement ? maybeTable : null : maybeTable;
110
+ var tableRef = maybeTableElement === null || maybeTableElement === void 0 ? void 0 : maybeTableElement.closest('table');
109
111
  if (!tableRef || !newTable) {
110
112
  return tr;
111
113
  }
@@ -11,6 +11,7 @@ var _react = _interopRequireWildcard(require("react"));
11
11
  var _reactIntlNext = require("react-intl-next");
12
12
  var _editorTables = require("@atlaskit/editor-tables");
13
13
  var _utils = require("@atlaskit/editor-tables/utils");
14
+ var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
14
15
  var _adapter = require("@atlaskit/pragmatic-drag-and-drop/element/adapter");
15
16
  var _commands = require("../../../commands");
16
17
  var _commands2 = require("../../../pm-plugins/drag-and-drop/commands");
@@ -100,14 +101,26 @@ var DragControlsComponent = function DragControlsComponent(_ref) {
100
101
  }
101
102
  }, [editorView, tableActive]);
102
103
  var handleMouseMove = (0, _react.useCallback)(function (e) {
103
- var isParentDragControls = e.nativeEvent.target.closest(".".concat(_types.TableCssClassName.DRAG_ROW_CONTROLS));
104
- var rowIndex = e.nativeEvent.target.getAttribute('data-start-index');
104
+ if ((0, _platformFeatureFlags.getBooleanFF)('platform.editor.explicit-html-element-check')) {
105
+ var target = e.nativeEvent.target instanceof Element ? e.nativeEvent.target : null;
106
+ var isParentDragControls = target === null || target === void 0 ? void 0 : target.closest(".".concat(_types.TableCssClassName.DRAG_ROW_CONTROLS));
107
+ var _rowIndex = target === null || target === void 0 ? void 0 : target.getAttribute('data-start-index');
105
108
 
106
- // avoid updating if event target is not related
107
- if (!isParentDragControls || !rowIndex) {
108
- return;
109
+ // avoid updating if event target is not related
110
+ if (!isParentDragControls || !_rowIndex) {
111
+ return;
112
+ }
113
+ updateCellHoverLocation(Number(_rowIndex));
114
+ } else {
115
+ var _isParentDragControls = e.nativeEvent.target.closest(".".concat(_types.TableCssClassName.DRAG_ROW_CONTROLS));
116
+ var _rowIndex2 = e.nativeEvent.target.getAttribute('data-start-index');
117
+
118
+ // avoid updating if event target is not related
119
+ if (!_isParentDragControls || !_rowIndex2) {
120
+ return;
121
+ }
122
+ updateCellHoverLocation(Number(_rowIndex2));
109
123
  }
110
- updateCellHoverLocation(Number(rowIndex));
111
124
  }, [updateCellHoverLocation]);
112
125
  var rowIndexes = (0, _react.useMemo)(function () {
113
126
  return [rowIndex];
@@ -129,6 +129,12 @@ Object.defineProperty(exports, "findNearestCellIndexToPoint", {
129
129
  return _dom.findNearestCellIndexToPoint;
130
130
  }
131
131
  });
132
+ Object.defineProperty(exports, "getAssistiveMessage", {
133
+ enumerable: true,
134
+ get: function get() {
135
+ return _table.getAssistiveMessage;
136
+ }
137
+ });
132
138
  Object.defineProperty(exports, "getColumnClassNames", {
133
139
  enumerable: true,
134
140
  get: function get() {
@@ -399,6 +405,12 @@ Object.defineProperty(exports, "tablesHaveDifferentNoOfColumns", {
399
405
  return _nodes.tablesHaveDifferentNoOfColumns;
400
406
  }
401
407
  });
408
+ Object.defineProperty(exports, "tablesHaveDifferentNoOfRows", {
409
+ enumerable: true,
410
+ get: function get() {
411
+ return _nodes.tablesHaveDifferentNoOfRows;
412
+ }
413
+ });
402
414
  Object.defineProperty(exports, "transformSliceToCorrectEmptyTableCells", {
403
415
  enumerable: true,
404
416
  get: function get() {
@@ -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.tablesHaveDifferentNoOfColumns = exports.tablesHaveDifferentColumnWidths = exports.supportedHeaderRow = exports.isTableNested = exports.isIsolating = exports.getTableWidth = exports.containsHeaderRow = exports.containsHeaderColumn = exports.checkIfNumberColumnEnabled = exports.checkIfHeaderRowEnabled = exports.checkIfHeaderColumnEnabled = exports.anyChildCellMergedAcrossRow = void 0;
7
+ exports.tablesHaveDifferentNoOfRows = exports.tablesHaveDifferentNoOfColumns = exports.tablesHaveDifferentColumnWidths = exports.supportedHeaderRow = exports.isTableNested = exports.isIsolating = exports.getTableWidth = exports.containsHeaderRow = exports.containsHeaderColumn = exports.checkIfNumberColumnEnabled = exports.checkIfHeaderRowEnabled = exports.checkIfHeaderColumnEnabled = exports.anyChildCellMergedAcrossRow = void 0;
8
8
  var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
9
9
  var _utils = require("@atlaskit/editor-common/utils");
10
10
  var _tableMap = require("@atlaskit/editor-tables/table-map");
@@ -75,6 +75,11 @@ var tablesHaveDifferentNoOfColumns = exports.tablesHaveDifferentNoOfColumns = fu
75
75
  var currentMap = _tableMap.TableMap.get(currentTable);
76
76
  return prevMap.width !== currentMap.width;
77
77
  };
78
+ var tablesHaveDifferentNoOfRows = exports.tablesHaveDifferentNoOfRows = function tablesHaveDifferentNoOfRows(currentTable, previousTable) {
79
+ var prevMap = _tableMap.TableMap.get(previousTable);
80
+ var currentMap = _tableMap.TableMap.get(currentTable);
81
+ return prevMap.height !== currentMap.height;
82
+ };
78
83
  function filterNearSelection(selection, findNode, predicate, defaultValue) {
79
84
  var found = findNode(selection);
80
85
  if (!found) {
@@ -4,8 +4,9 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
4
4
  Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
- exports.getMergedCellsPositions = exports.colsToRect = void 0;
7
+ exports.getMergedCellsPositions = exports.getAssistiveMessage = exports.colsToRect = void 0;
8
8
  var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
9
+ var _messages = require("@atlaskit/editor-common/messages");
9
10
  var _tableMap = require("@atlaskit/editor-tables/table-map");
10
11
  var _utils = require("@atlaskit/editor-tables/utils");
11
12
  var getMergedCellsPositions = exports.getMergedCellsPositions = function getMergedCellsPositions(tr) {
@@ -32,4 +33,36 @@ var colsToRect = exports.colsToRect = function colsToRect(cols, noOfRows) {
32
33
  top: 0,
33
34
  bottom: noOfRows
34
35
  };
36
+ };
37
+ var getAssistiveMessage = exports.getAssistiveMessage = function getAssistiveMessage(prevTableNode, currentTableNode, intl) {
38
+ var formatMessage = intl.formatMessage;
39
+ var prevTableMap = _tableMap.TableMap.get(prevTableNode);
40
+ var currentTableMap = _tableMap.TableMap.get(currentTableNode);
41
+ if (currentTableMap.width !== prevTableMap.width) {
42
+ var diff = Math.abs(currentTableMap.width - prevTableMap.width);
43
+ if (currentTableMap.width > prevTableMap.width) {
44
+ return formatMessage(_messages.tableMessages.columnsAreInserted, {
45
+ count: diff
46
+ });
47
+ }
48
+ if (currentTableMap.width < prevTableMap.width) {
49
+ return formatMessage(_messages.tableMessages.columnsAreRemoved, {
50
+ count: diff
51
+ });
52
+ }
53
+ }
54
+ if (currentTableMap.height !== prevTableMap.height) {
55
+ var _diff = Math.abs(currentTableMap.height - prevTableMap.height);
56
+ if (currentTableMap.height > prevTableMap.height) {
57
+ return formatMessage(_messages.tableMessages.rowsAreInserted, {
58
+ count: _diff
59
+ });
60
+ }
61
+ if (currentTableMap.height < prevTableMap.height) {
62
+ return formatMessage(_messages.tableMessages.rowsAreRemoved, {
63
+ count: _diff
64
+ });
65
+ }
66
+ }
67
+ return '';
35
68
  };
@@ -71,7 +71,9 @@ export const initiateKeyboardColumnResizing = ({
71
71
  const selectionRect = isSelectionType(selection, 'cell') ? getSelectionRect(selection) : findCellRectClosestToPos(selection.$from);
72
72
  const cell = findCellClosestToPos(selection.$from);
73
73
  if (ariaNotify && getIntl) {
74
- ariaNotify(getIntl().formatMessage(messages.startedColumnResize));
74
+ ariaNotify(getIntl().formatMessage(messages.startedColumnResize), {
75
+ priority: 'important'
76
+ });
75
77
  }
76
78
  if (selectionRect && cell && view) {
77
79
  return updateResizeHandleAndStatePosition(selectionRect.top, selectionRect.right, cell.pos)(state, dispatch);
@@ -117,12 +119,16 @@ export const activateNextResizeArea = ({
117
119
  if (direction === 1) {
118
120
  ariaNotify(getIntl().formatMessage(messages.focusedOtherResize, {
119
121
  direction: 'right'
120
- }));
122
+ }), {
123
+ priority: 'important'
124
+ });
121
125
  }
122
126
  if (direction === -1) {
123
127
  ariaNotify(getIntl().formatMessage(messages.focusedOtherResize, {
124
128
  direction: 'left'
125
- }));
129
+ }), {
130
+ priority: 'important'
131
+ });
126
132
  }
127
133
  }
128
134
  if ($nextCell) {
@@ -171,7 +177,13 @@ export const changeColumnWidthByStep = ({
171
177
  const map = TableMap.get(originalTable);
172
178
  const domAtPos = view.domAtPos.bind(view);
173
179
  const colIndex = map.colCount($cell.pos - tableStartPosition) + ($cell.nodeAfter ? $cell.nodeAfter.attrs.colspan : 1) - 1;
174
- let dom = domAtPos(tableStartPosition).node;
180
+ let dom = null;
181
+ if (getBooleanFF('platform.editor.explicit-html-element-check')) {
182
+ const domAtPosition = domAtPos(tableStartPosition);
183
+ dom = domAtPosition.node instanceof HTMLTableElement ? domAtPosition.node : null;
184
+ } else {
185
+ dom = domAtPos(tableStartPosition).node;
186
+ }
175
187
  if (dom && dom.nodeName !== 'TABLE') {
176
188
  dom = dom.closest('table');
177
189
  }
@@ -218,10 +230,14 @@ export const changeColumnWidthByStep = ({
218
230
  }));
219
231
  if (newResizeState.cols.length === colIndex + 1) {
220
232
  if (newResizeState.overflow === true) {
221
- ariaNotify(getIntl().formatMessage(messages.columnResizeLast));
233
+ ariaNotify(getIntl().formatMessage(messages.columnResizeLast), {
234
+ priority: 'important'
235
+ });
222
236
  }
223
237
  if (newResizeState.overflow === false) {
224
- ariaNotify(getIntl().formatMessage(messages.columnResizeOverflow));
238
+ ariaNotify(getIntl().formatMessage(messages.columnResizeOverflow), {
239
+ priority: 'important'
240
+ });
225
241
  }
226
242
  }
227
243
  }
@@ -254,7 +270,9 @@ export const stopKeyboardColumnResizing = ({
254
270
  type: 'STOP_RESIZING'
255
271
  }, () => customTr.setMeta('scrollIntoView', false))(state, fakeDispatch);
256
272
  if (ariaNotify && getIntl) {
257
- ariaNotify(getIntl().formatMessage(messages.columnResizeStop));
273
+ ariaNotify(getIntl().formatMessage(messages.columnResizeStop), {
274
+ priority: 'important'
275
+ });
258
276
  }
259
277
  if (dispatch) {
260
278
  dispatch(customTr);
@@ -3,6 +3,7 @@ import React from 'react';
3
3
  import classnames from 'classnames';
4
4
  import memoizeOne from 'memoize-one';
5
5
  import rafSchedule from 'raf-schd';
6
+ import { injectIntl } from 'react-intl-next';
6
7
  import { ACTION_SUBJECT, EVENT_TYPE, TABLE_ACTION } from '@atlaskit/editor-common/analytics';
7
8
  import { getParentNodeWidth, getTableContainerWidth } from '@atlaskit/editor-common/node-width';
8
9
  import { tableMarginSides } from '@atlaskit/editor-common/styles';
@@ -23,7 +24,7 @@ import { updateControls } from '../pm-plugins/table-resizing/utils/dom';
23
24
  import { TableCssClassName as ClassName, ShadowEvent } from '../types';
24
25
  import TableFloatingColumnControls from '../ui/TableFloatingColumnControls';
25
26
  import TableFloatingControls from '../ui/TableFloatingControls';
26
- import { containsHeaderRow, isTableNested, tablesHaveDifferentColumnWidths, tablesHaveDifferentNoOfColumns } from '../utils';
27
+ import { containsHeaderRow, getAssistiveMessage, isTableNested, tablesHaveDifferentColumnWidths, tablesHaveDifferentNoOfColumns, tablesHaveDifferentNoOfRows } from '../utils';
27
28
  import { ExternalDropTargets } from './ExternalDropTargets';
28
29
  import { OverflowShadowsObserver } from './OverflowShadowsObserver';
29
30
  import { TableContainer } from './TableContainer';
@@ -506,6 +507,15 @@ class TableComponent extends React.Component {
506
507
  this.overflowShadowsObserver.observeShadowSentinels((_this$state$stickyHea = this.state.stickyHeader) === null || _this$state$stickyHea === void 0 ? void 0 : _this$state$stickyHea.sticky);
507
508
  }
508
509
  const currentTable = getNode();
510
+ const previousTable = this.node;
511
+ const isNoOfColumnsChanged = tablesHaveDifferentNoOfColumns(currentTable, previousTable);
512
+ const isNoOfRowsChanged = tablesHaveDifferentNoOfRows(currentTable, previousTable);
513
+ if (isNoOfColumnsChanged || isNoOfRowsChanged) {
514
+ var _this$props$pluginInj, _this$props$pluginInj2;
515
+ (_this$props$pluginInj = this.props.pluginInjectionApi) === null || _this$props$pluginInj === void 0 ? void 0 : (_this$props$pluginInj2 = _this$props$pluginInj.accessibilityUtils) === null || _this$props$pluginInj2 === void 0 ? void 0 : _this$props$pluginInj2.actions.ariaNotify(getAssistiveMessage(previousTable, currentTable, this.props.intl), {
516
+ priority: 'important'
517
+ });
518
+ }
509
519
  if (currentTable.attrs.__autoSize) {
510
520
  // Wait for next tick to handle auto sizing, gives the browser time to do layout calc etc.
511
521
  this.handleAutoSizeDebounced();
@@ -515,8 +525,6 @@ class TableComponent extends React.Component {
515
525
  else if (allowColumnResizing && this.table && !isMediaFullscreen) {
516
526
  // If col widths (e.g. via collab) or number of columns (e.g. delete a column) have changed,
517
527
  // re-draw colgroup.
518
- const previousTable = this.node;
519
- const isNoOfColumnsChanged = tablesHaveDifferentNoOfColumns(currentTable, previousTable);
520
528
  if (tablesHaveDifferentColumnWidths(currentTable, previousTable) || isNoOfColumnsChanged) {
521
529
  const {
522
530
  view
@@ -780,4 +788,4 @@ class TableComponent extends React.Component {
780
788
  }
781
789
  }
782
790
  _defineProperty(TableComponent, "displayName", 'TableComponent');
783
- export default TableComponent;
791
+ export default injectIntl(TableComponent);
@@ -369,7 +369,7 @@ export default class TableRow extends TableNodeView {
369
369
  wrapper
370
370
  } = tree;
371
371
  const tableContainer = wrapper.parentElement;
372
- const tableContentWrapper = tableContainer.parentElement;
372
+ const tableContentWrapper = tableContainer === null || tableContainer === void 0 ? void 0 : tableContainer.parentElement;
373
373
  const layoutContainer = tableContentWrapper && tableContentWrapper.parentElement;
374
374
  if (isCurrentTableSelected) {
375
375
  this.colControlsOffset = tableControlsSpacing;
@@ -49,13 +49,13 @@ export const generateColgroup = (table, tableRef) => {
49
49
  return cols;
50
50
  };
51
51
  export const insertColgroupFromNode = (tableRef, table, isTableScalingEnabled = false, shouldRemove = true) => {
52
- let colgroup = tableRef.querySelector('colgroup');
52
+ let colgroup = tableRef === null || tableRef === void 0 ? void 0 : tableRef.querySelector('colgroup');
53
53
  if (colgroup && shouldRemove) {
54
- tableRef.removeChild(colgroup);
54
+ tableRef === null || tableRef === void 0 ? void 0 : tableRef.removeChild(colgroup);
55
55
  }
56
- colgroup = renderColgroupFromNode(table, isTableScalingEnabled ? tableRef : undefined);
56
+ colgroup = renderColgroupFromNode(table, isTableScalingEnabled ? tableRef !== null && tableRef !== void 0 ? tableRef : undefined : undefined);
57
57
  if (shouldRemove) {
58
- tableRef.insertBefore(colgroup, tableRef.firstChild);
58
+ tableRef === null || tableRef === void 0 ? void 0 : tableRef.insertBefore(colgroup, tableRef === null || tableRef === void 0 ? void 0 : tableRef.firstChild);
59
59
  }
60
60
  return colgroup.children;
61
61
  };
@@ -93,7 +93,7 @@ export const getTableContainerElementWidth = table => {
93
93
  export const getTableScalingPercent = (table, tableRef) => {
94
94
  var _tableRef$parentEleme;
95
95
  const tableWidth = getTableContainerElementWidth(table);
96
- let renderWidth = ((_tableRef$parentEleme = tableRef.parentElement) === null || _tableRef$parentEleme === void 0 ? void 0 : _tableRef$parentEleme.clientWidth) || tableWidth;
96
+ let renderWidth = (tableRef === null || tableRef === void 0 ? void 0 : (_tableRef$parentEleme = tableRef.parentElement) === null || _tableRef$parentEleme === void 0 ? void 0 : _tableRef$parentEleme.clientWidth) || tableWidth;
97
97
  // minus 1 here to avoid any 1px scroll in Firefox
98
98
  let scalePercent = (renderWidth - 1) / tableWidth;
99
99
  scalePercent = Math.max(scalePercent, 1 - MAX_SCALING_PERCENT);
@@ -13,7 +13,7 @@ export const resizeColumn = (resizeState, colIndex, amount, tableRef, tableNode,
13
13
  var _tableRef$closest;
14
14
  // when table initially not overflow, but enter overflow, we need to calculate the resize amount by two part, before and after overflow, before overflow should be double, after should not be double.
15
15
  const tableWidth = tableRef === null || tableRef === void 0 ? void 0 : tableRef.clientWidth;
16
- const tableContainerWidth = (_tableRef$closest = tableRef.closest('.resizer-item')) === null || _tableRef$closest === void 0 ? void 0 : _tableRef$closest.clientWidth;
16
+ const tableContainerWidth = tableRef === null || tableRef === void 0 ? void 0 : (_tableRef$closest = tableRef.closest('.resizer-item')) === null || _tableRef$closest === void 0 ? void 0 : _tableRef$closest.clientWidth;
17
17
  const isOverflowed = !!(tableWidth && tableContainerWidth && tableWidth > tableContainerWidth);
18
18
  resizeAmount = amount * 2;
19
19
  if (isOverflowed) {
@@ -45,11 +45,13 @@ export const resizeColumn = (resizeState, colIndex, amount, tableRef, tableNode,
45
45
  };
46
46
  const updateTable = (resizeAmount, tableRef, tableNode) => {
47
47
  const currentWidth = getTableContainerElementWidth(tableNode);
48
- const resizingContainer = tableRef.closest(`.${ClassName.TABLE_RESIZER_CONTAINER}`);
48
+ const resizingContainer = tableRef === null || tableRef === void 0 ? void 0 : tableRef.closest(`.${ClassName.TABLE_RESIZER_CONTAINER}`);
49
49
  const resizingItem = resizingContainer === null || resizingContainer === void 0 ? void 0 : resizingContainer.querySelector('.resizer-item');
50
50
  if (resizingContainer && resizingItem) {
51
51
  const newWidth = `${currentWidth + resizeAmount}px`;
52
- tableRef.style.width = newWidth;
52
+ if (tableRef) {
53
+ tableRef.style.width = newWidth;
54
+ }
53
55
  resizingContainer.style.width = newWidth;
54
56
  resizingItem.style.width = newWidth;
55
57
  }