@atlaskit/editor-plugin-table 7.21.3 → 7.21.5

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 (68) hide show
  1. package/CHANGELOG.md +22 -0
  2. package/dist/cjs/nodeviews/TableComponent.js +17 -2
  3. package/dist/cjs/pm-plugins/keymap.js +4 -6
  4. package/dist/cjs/pm-plugins/main.js +1 -1
  5. package/dist/cjs/pm-plugins/table-resizing/event-handlers.js +40 -12
  6. package/dist/cjs/pm-plugins/table-resizing/utils/resize-column.js +99 -51
  7. package/dist/cjs/toolbar.js +4 -1
  8. package/dist/cjs/ui/ColumnResizeWidget/index.js +4 -1
  9. package/dist/cjs/ui/FloatingAlignmentButtons/FloatingAlignmentButtons.js +4 -1
  10. package/dist/cjs/ui/FloatingContextualButton/index.js +4 -1
  11. package/dist/cjs/ui/FloatingContextualMenu/ContextualMenu.js +4 -1
  12. package/dist/cjs/ui/FloatingContextualMenu/index.js +4 -1
  13. package/dist/cjs/ui/FloatingDragMenu/DragMenu.js +4 -1
  14. package/dist/cjs/utils/alignment.js +1 -1
  15. package/dist/es2019/nodeviews/TableComponent.js +17 -2
  16. package/dist/es2019/pm-plugins/keymap.js +4 -6
  17. package/dist/es2019/pm-plugins/main.js +1 -1
  18. package/dist/es2019/pm-plugins/table-resizing/event-handlers.js +41 -13
  19. package/dist/es2019/pm-plugins/table-resizing/utils/resize-column.js +97 -48
  20. package/dist/es2019/toolbar.js +4 -1
  21. package/dist/es2019/ui/ColumnResizeWidget/index.js +4 -1
  22. package/dist/es2019/ui/FloatingAlignmentButtons/FloatingAlignmentButtons.js +4 -1
  23. package/dist/es2019/ui/FloatingContextualButton/index.js +4 -1
  24. package/dist/es2019/ui/FloatingContextualMenu/ContextualMenu.js +4 -1
  25. package/dist/es2019/ui/FloatingContextualMenu/index.js +4 -1
  26. package/dist/es2019/ui/FloatingDragMenu/DragMenu.js +4 -1
  27. package/dist/es2019/utils/alignment.js +1 -1
  28. package/dist/esm/nodeviews/TableComponent.js +17 -2
  29. package/dist/esm/pm-plugins/keymap.js +4 -6
  30. package/dist/esm/pm-plugins/main.js +1 -1
  31. package/dist/esm/pm-plugins/table-resizing/event-handlers.js +40 -12
  32. package/dist/esm/pm-plugins/table-resizing/utils/resize-column.js +99 -51
  33. package/dist/esm/toolbar.js +4 -1
  34. package/dist/esm/ui/ColumnResizeWidget/index.js +4 -1
  35. package/dist/esm/ui/FloatingAlignmentButtons/FloatingAlignmentButtons.js +4 -1
  36. package/dist/esm/ui/FloatingContextualButton/index.js +4 -1
  37. package/dist/esm/ui/FloatingContextualMenu/ContextualMenu.js +4 -1
  38. package/dist/esm/ui/FloatingContextualMenu/index.js +4 -1
  39. package/dist/esm/ui/FloatingDragMenu/DragMenu.js +4 -1
  40. package/dist/esm/utils/alignment.js +1 -1
  41. package/dist/types/pm-plugins/table-resizing/utils/resize-column.d.ts +23 -1
  42. package/dist/types/ui/ColumnResizeWidget/index.d.ts +4 -1
  43. package/dist/types/ui/FloatingAlignmentButtons/FloatingAlignmentButtons.d.ts +4 -1
  44. package/dist/types/ui/FloatingContextualMenu/ContextualMenu.d.ts +4 -1
  45. package/dist/types/ui/FloatingContextualMenu/index.d.ts +4 -1
  46. package/dist/types/ui/FloatingDragMenu/DragMenu.d.ts +4 -1
  47. package/dist/types/utils/alignment.d.ts +1 -1
  48. package/dist/types-ts4.5/pm-plugins/table-resizing/utils/resize-column.d.ts +23 -1
  49. package/dist/types-ts4.5/ui/ColumnResizeWidget/index.d.ts +4 -1
  50. package/dist/types-ts4.5/ui/FloatingAlignmentButtons/FloatingAlignmentButtons.d.ts +4 -1
  51. package/dist/types-ts4.5/ui/FloatingContextualMenu/ContextualMenu.d.ts +4 -1
  52. package/dist/types-ts4.5/ui/FloatingContextualMenu/index.d.ts +4 -1
  53. package/dist/types-ts4.5/ui/FloatingDragMenu/DragMenu.d.ts +4 -1
  54. package/dist/types-ts4.5/utils/alignment.d.ts +1 -1
  55. package/package.json +6 -6
  56. package/src/nodeviews/TableComponent.tsx +14 -0
  57. package/src/pm-plugins/keymap.ts +30 -32
  58. package/src/pm-plugins/main.ts +3 -1
  59. package/src/pm-plugins/table-resizing/event-handlers.ts +37 -25
  60. package/src/pm-plugins/table-resizing/utils/resize-column.ts +142 -70
  61. package/src/toolbar.tsx +4 -1
  62. package/src/ui/ColumnResizeWidget/index.tsx +4 -1
  63. package/src/ui/FloatingAlignmentButtons/FloatingAlignmentButtons.tsx +4 -1
  64. package/src/ui/FloatingContextualButton/index.tsx +4 -1
  65. package/src/ui/FloatingContextualMenu/ContextualMenu.tsx +4 -1
  66. package/src/ui/FloatingContextualMenu/index.tsx +4 -1
  67. package/src/ui/FloatingDragMenu/DragMenu.tsx +4 -1
  68. package/src/utils/alignment.ts +8 -6
@@ -3,9 +3,10 @@ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbol
3
3
  function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
4
4
  // Resize a given column by an amount from the current state
5
5
 
6
+ import { akEditorFullWidthLayoutWidth, akEditorGutterPaddingDynamic } from '@atlaskit/editor-shared-styles';
6
7
  import { TableCssClassName as ClassName } from '../../../types';
7
8
  import { ALIGN_CENTER, ALIGN_START, shouldChangeAlignmentToCenterResized } from '../../../utils/alignment';
8
- import { getTableContainerElementWidth, getTableScalingPercent } from './misc';
9
+ import { getTableScalingPercent } from './misc';
9
10
  import { growColumn, shrinkColumn, updateAffectedColumn } from './resize-logic';
10
11
  import { updateColgroup } from './resize-state';
11
12
  export var resizeColumn = function resizeColumn(resizeState, colIndex, amount, tableRef, tableNode, selectedColumns) {
@@ -21,68 +22,115 @@ export var resizeColumn = function resizeColumn(resizeState, colIndex, amount, t
21
22
  updateColgroup(newState, tableRef, tableNode, isTableScalingEnabled, shouldUseIncreasedScalingPercent);
22
23
  return newState;
23
24
  };
25
+ export var resizeColumnAndTable = function resizeColumnAndTable(_ref) {
26
+ var resizeState = _ref.resizeState,
27
+ colIndex = _ref.colIndex,
28
+ amount = _ref.amount,
29
+ tableRef = _ref.tableRef,
30
+ tableNode = _ref.tableNode,
31
+ lineLength = _ref.lineLength,
32
+ editorWidth = _ref.width,
33
+ isTableAlignmentEnabled = _ref.isTableAlignmentEnabled;
34
+ var editorContainerWidth = getEditorContainerWidth(editorWidth);
35
+ var isTableLeftAligned = tableNode.attrs.layout === ALIGN_START;
36
+ var resizeAmount = isTableLeftAligned ? amount : amount * 2;
37
+ var willTableHitEditorEdge = resizeState.maxSize + resizeAmount > editorContainerWidth;
38
+ var willResizedTableStayInOverflow = resizeState.overflow && resizeState.tableWidth + resizeAmount / 2 > resizeState.maxSize;
24
39
 
25
- // try not scale table during resize
26
- export var resizeColumnAndTable = function resizeColumnAndTable(resizeState, colIndex, amount, tableRef, tableNode, selectedColumns) {
27
- var _tableRef$closest;
28
- var isTableScalingEnabled = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : false;
29
- var originalTableWidth = arguments.length > 7 ? arguments[7] : undefined;
30
- var shouldUseIncreasedScalingPercent = arguments.length > 8 && arguments[8] !== undefined ? arguments[8] : false;
31
- var lineLength = arguments.length > 9 ? arguments[9] : undefined;
32
- var isTableAlignmentEnabled = arguments.length > 10 && arguments[10] !== undefined ? arguments[10] : false;
33
- // TODO: can we use document state, and apply scaling factor?
34
- var tableWidth = tableRef.clientWidth;
35
- var tableContainerWidth = (_tableRef$closest = tableRef.closest('.pm-table-container')) === null || _tableRef$closest === void 0 ? void 0 : _tableRef$closest.clientWidth;
36
- var isOverflowed = !!(tableWidth && tableContainerWidth && tableWidth > tableContainerWidth);
37
- var resizeAmount = tableNode.attrs.layout === ALIGN_START && !isOverflowed ? amount : amount * 2;
38
-
39
- // todo: reimplement - use getTableScalingPercentFrozen to get scaled percent before table width changes dynamically
40
- // let scalePercent = 1;
41
- // if (isTableScalingEnabled) {
42
- // import from ./misc
43
- // scalePercent = getStaticTableScalingPercent(
44
- // tableNode,
45
- // originalTableWidth || resizeState.maxSize,
46
- // );
47
- // resizeAmount = amount / scalePercent;
48
- // }
49
-
50
- // need to look at the resize amount and try to adjust the colgroups
51
- if (isOverflowed) {
52
- resizeAmount = amount < 0 ? amount : resizeAmount - (tableNode.attrs.width + resizeAmount - tableContainerWidth) / 2;
40
+ // STEP 1: Update col width
41
+ if (willTableHitEditorEdge || willResizedTableStayInOverflow) {
42
+ var _tableRef$closest;
43
+ var tableContainerWidth = (_tableRef$closest = tableRef.closest('.pm-table-container')) === null || _tableRef$closest === void 0 ? void 0 : _tableRef$closest.clientWidth;
44
+ resizeAmount = amount < 0 ? amount : resizeAmount - (resizeState.maxSize + resizeAmount - tableContainerWidth) / 2;
45
+ }
46
+ if (!willResizedTableStayInOverflow && !willTableHitEditorEdge) {
47
+ var diff = -(resizeState.tableWidth - resizeState.maxSize);
48
+ var rest = amount - diff;
49
+ var final = isTableLeftAligned ? diff + rest : diff + rest * 2;
50
+ resizeAmount = final;
53
51
  }
54
52
  var newState = updateAffectedColumn(resizeState, colIndex, resizeAmount);
55
53
 
56
- // this function only updates the colgroup in DOM, it reverses the scalePercent
57
- // todo: change isScalingEnabled to true when reimplementing scaling
58
- updateColgroup(newState, tableRef, tableNode, false, shouldUseIncreasedScalingPercent);
59
-
60
- // use the difference in width from affected column to update overall table width
54
+ // STEP 2: Update table container width
55
+ // columns have a min width, so delta !== resizeAmount when this is reached, use this for calculations
61
56
  var delta = newState.cols[colIndex].width - resizeState.cols[colIndex].width;
62
- if (!isOverflowed) {
63
- // If the table is aligned to the start and the table width is greater than the line length, we should change the alignment to center
64
- var shouldChangeAlignment = shouldChangeAlignmentToCenterResized(isTableAlignmentEnabled, tableNode, lineLength, newState.tableWidth + delta);
65
- shouldChangeAlignment ? updateTablePreview(delta, tableRef, tableNode, ALIGN_CENTER) : updateTablePreview(delta, tableRef, tableNode);
57
+ newState.maxSize = Math.round(resizeState.overflow ? willResizedTableStayInOverflow ?
58
+ // CASE 1A: table will stay in overflow
59
+ // do not grow the table because resize is happening in the overflow region
60
+ // and the overall table container needs to be retained
61
+ resizeState.maxSize :
62
+ // CASE 1B: table will no longer be in overflow, so adjust container width
63
+ // ensure the table is resized without any 'big jumps' by working out
64
+ // the difference between the new table width and the max size and adding the resize
65
+ resizeState.maxSize + (resizeState.tableWidth - resizeState.maxSize + delta) : willTableHitEditorEdge ?
66
+ // CASE 2: table will hit editor edge
67
+ editorContainerWidth :
68
+ // CASE 3: table is being resized from a non-overflow state
69
+ resizeState.maxSize + delta);
70
+
71
+ // do not apply scaling logic because resize state is already scaled
72
+ updateColgroup(newState, tableRef, tableNode, false, false);
73
+ if (!willTableHitEditorEdge && !willResizedTableStayInOverflow) {
74
+ updateTablePreview(tableRef, newState.maxSize, shouldChangeAlignmentToCenterResized(isTableAlignmentEnabled, tableNode, lineLength, newState.maxSize));
66
75
  }
67
- return _objectSpread(_objectSpread({}, newState), {}, {
68
- // resizeState.tableWidth sometimes is off by ~3px on load on resized table when !isOverflowed, using resizeState.maxSize instead
69
- tableWidth: isOverflowed ? tableContainerWidth : resizeState.maxSize + delta
70
- });
76
+ return newState;
71
77
  };
72
- var updateTablePreview = function updateTablePreview(resizeAmount, tableRef, tableNode, tableAligment) {
73
- var currentWidth = getTableContainerElementWidth(tableNode);
74
- var resizingContainer = tableRef === null || tableRef === void 0 ? void 0 : tableRef.closest(".".concat(ClassName.TABLE_RESIZER_CONTAINER));
78
+ var updateTablePreview = function updateTablePreview(tableRef, newTableWidth, shouldChangeAlignment) {
79
+ var resizingContainer = tableRef.closest(".".concat(ClassName.TABLE_RESIZER_CONTAINER));
75
80
  var resizingItem = resizingContainer === null || resizingContainer === void 0 ? void 0 : resizingContainer.querySelector('.resizer-item');
76
81
  var alignmentContainer = resizingContainer === null || resizingContainer === void 0 ? void 0 : resizingContainer.parentElement;
77
82
  if (resizingItem) {
78
- var newWidth = "".concat(currentWidth + resizeAmount, "px");
79
- if (tableRef) {
80
- tableRef.style.width = newWidth;
81
- }
83
+ var newWidth = "".concat(newTableWidth, "px");
82
84
  resizingContainer.style.width = newWidth;
83
85
  resizingItem.style.width = newWidth;
84
- if (tableAligment && alignmentContainer) {
85
- alignmentContainer.style.justifyContent = tableAligment;
86
+ if (shouldChangeAlignment && alignmentContainer) {
87
+ alignmentContainer.style.justifyContent = ALIGN_CENTER;
86
88
  }
87
89
  }
90
+ };
91
+ var getEditorContainerWidth = function getEditorContainerWidth(editorWidth) {
92
+ return Math.min(editorWidth - akEditorGutterPaddingDynamic() * 2, akEditorFullWidthLayoutWidth);
93
+ };
94
+
95
+ /**
96
+ * Apply a scaling factor to resize state
97
+ */
98
+ export var scaleResizeState = function scaleResizeState(_ref2) {
99
+ var resizeState = _ref2.resizeState,
100
+ tableRef = _ref2.tableRef,
101
+ tableNode = _ref2.tableNode,
102
+ editorWidth = _ref2.editorWidth;
103
+ // check if table is scaled, if not then avoid applying scaling values down
104
+ if (resizeState.maxSize < getEditorContainerWidth(editorWidth)) {
105
+ return resizeState;
106
+ }
107
+ var scalePercent = getTableScalingPercent(tableNode, tableRef);
108
+ var cols = resizeState.cols.map(function (col) {
109
+ return _objectSpread(_objectSpread({}, col), {}, {
110
+ width: Math.round(Math.max(col.width * scalePercent, col.minWidth))
111
+ });
112
+ });
113
+ var scaledTableWidth = Math.round(resizeState.tableWidth * scalePercent);
114
+ var calculatedTableWidth = cols.reduce(function (prev, curr) {
115
+ return prev + curr.width;
116
+ }, 0);
117
+
118
+ // using Math.round can cause the sum of col widths to be larger than the table width
119
+ // distribute the difference to the smallest column
120
+ if (calculatedTableWidth > scaledTableWidth) {
121
+ var diff = calculatedTableWidth - scaledTableWidth;
122
+ cols = cols.map(function (col) {
123
+ return col.width - diff >= col.minWidth ? _objectSpread(_objectSpread({}, col), {}, {
124
+ width: col.width - diff
125
+ }) : col;
126
+ });
127
+ }
128
+ return _objectSpread(_objectSpread({}, resizeState), {}, {
129
+ widths: cols.map(function (col) {
130
+ return col.width;
131
+ }),
132
+ tableWidth: scaledTableWidth,
133
+ maxSize: Math.round(resizeState.maxSize * scalePercent),
134
+ cols: cols
135
+ });
88
136
  };
@@ -3,7 +3,10 @@ import _defineProperty from "@babel/runtime/helpers/defineProperty";
3
3
  import _toConsumableArray from "@babel/runtime/helpers/toConsumableArray";
4
4
  function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
5
5
  function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
6
- /** @jsx jsx */
6
+ /**
7
+ * @jsxRuntime classic
8
+ * @jsx jsx
9
+ */
7
10
  // eslint-disable-next-line @atlaskit/ui-styling-standard/use-compiled -- Ignored via go/DSP-18766
8
11
  import { jsx } from '@emotion/react';
9
12
  import { TableSortOrder as SortOrder } from '@atlaskit/custom-steps';
@@ -1,5 +1,8 @@
1
1
  import _extends from "@babel/runtime/helpers/extends";
2
- /** @jsx jsx */
2
+ /**
3
+ * @jsxRuntime classic
4
+ * @jsx jsx
5
+ */
3
6
  // eslint-disable-next-line @atlaskit/ui-styling-standard/use-compiled -- Ignored via go/DSP-18766
4
7
  import { jsx } from '@emotion/react';
5
8
  import { useIntl } from 'react-intl-next';
@@ -1,4 +1,7 @@
1
- /** @jsx jsx */
1
+ /**
2
+ * @jsxRuntime classic
3
+ * @jsx jsx
4
+ */
2
5
  // eslint-disable-next-line @atlaskit/ui-styling-standard/use-compiled -- Ignored via go/DSP-18766
3
6
  import { jsx } from '@emotion/react';
4
7
  import { ButtonGroup } from '@atlaskit/button';
@@ -1,4 +1,7 @@
1
- /** @jsx jsx */
1
+ /**
2
+ * @jsxRuntime classic
3
+ * @jsx jsx
4
+ */
2
5
  import React, { useEffect } from 'react';
3
6
 
4
7
  // eslint-disable-next-line @atlaskit/ui-styling-standard/use-compiled -- Ignored via go/DSP-18766
@@ -11,7 +11,10 @@ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t =
11
11
  function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }
12
12
  function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
13
13
  /* eslint-disable @atlaskit/design-system/prefer-primitives */
14
- /** @jsx jsx */
14
+ /**
15
+ * @jsxRuntime classic
16
+ * @jsx jsx
17
+ */
15
18
  import React, { Component } from 'react';
16
19
  // eslint-disable-next-line @atlaskit/ui-styling-standard/use-compiled -- Ignored via go/DSP-18766
17
20
  import { jsx } from '@emotion/react';
@@ -1,4 +1,7 @@
1
- /** @jsx jsx */
1
+ /**
2
+ * @jsxRuntime classic
3
+ * @jsx jsx
4
+ */
2
5
  // eslint-disable-next-line @atlaskit/ui-styling-standard/use-compiled -- Ignored via go/DSP-18766
3
6
  import { jsx } from '@emotion/react';
4
7
  import { Popup } from '@atlaskit/editor-common/ui';
@@ -1,7 +1,10 @@
1
1
  import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
2
2
  import _toConsumableArray from "@babel/runtime/helpers/toConsumableArray";
3
3
  /* eslint-disable @atlaskit/design-system/prefer-primitives */
4
- /** @jsx jsx */
4
+ /**
5
+ * @jsxRuntime classic
6
+ * @jsx jsx
7
+ */
5
8
  /** @jsxFrag */
6
9
  import React, { useEffect, useState } from 'react';
7
10
 
@@ -14,5 +14,5 @@ export var normaliseAlignment = function normaliseAlignment(layout) {
14
14
  * We don't want to switch alignment in Full-width editor
15
15
  */
16
16
  export var shouldChangeAlignmentToCenterResized = function shouldChangeAlignmentToCenterResized(isTableAlignmentEnabled, tableNode, lineLength, updatedTableWidth) {
17
- return isTableAlignmentEnabled && tableNode && tableNode.attrs.layout === ALIGN_START && lineLength && updatedTableWidth > lineLength && lineLength < FULL_WIDTH_EDITOR_CONTENT_WIDTH;
17
+ return Boolean(isTableAlignmentEnabled && tableNode && tableNode.attrs.layout === ALIGN_START && lineLength && updatedTableWidth > lineLength && lineLength < FULL_WIDTH_EDITOR_CONTENT_WIDTH);
18
18
  };
@@ -1,4 +1,26 @@
1
+ import { type EditorContainerWidth } from '@atlaskit/editor-common/types';
1
2
  import type { Node as PmNode } from '@atlaskit/editor-prosemirror/model';
2
3
  import type { ResizeState } from './types';
3
4
  export declare const resizeColumn: (resizeState: ResizeState, colIndex: number, amount: number, tableRef: HTMLElement | null, tableNode: PmNode, selectedColumns?: number[], isTableScalingEnabled?: boolean, shouldUseIncreasedScalingPercent?: boolean) => ResizeState;
4
- export declare const resizeColumnAndTable: (resizeState: ResizeState, colIndex: number, amount: number, tableRef: HTMLElement, tableNode: PmNode, selectedColumns?: number[], isTableScalingEnabled?: boolean, originalTableWidth?: number, shouldUseIncreasedScalingPercent?: boolean, lineLength?: number, isTableAlignmentEnabled?: boolean) => ResizeState;
5
+ type ResizeInformation = {
6
+ resizeState: ResizeState;
7
+ colIndex: number;
8
+ amount: number;
9
+ };
10
+ type TableReferences = {
11
+ tableRef: HTMLElement;
12
+ tableNode: PmNode;
13
+ };
14
+ type TableResizingPluginOptions = {
15
+ isTableAlignmentEnabled?: boolean;
16
+ };
17
+ type ResizeColumnAndTable = ResizeInformation & TableResizingPluginOptions & TableReferences & EditorContainerWidth;
18
+ export declare const resizeColumnAndTable: ({ resizeState, colIndex, amount, tableRef, tableNode, lineLength, width: editorWidth, isTableAlignmentEnabled, }: ResizeColumnAndTable) => ResizeState;
19
+ /**
20
+ * Apply a scaling factor to resize state
21
+ */
22
+ export declare const scaleResizeState: ({ resizeState, tableRef, tableNode, editorWidth, }: TableReferences & {
23
+ resizeState: ResizeState;
24
+ editorWidth: number;
25
+ }) => ResizeState;
26
+ export {};
@@ -1,4 +1,7 @@
1
- /** @jsx jsx */
1
+ /**
2
+ * @jsxRuntime classic
3
+ * @jsx jsx
4
+ */
2
5
  import { jsx } from '@emotion/react';
3
6
  type Props = {
4
7
  startIndex: number;
@@ -1,4 +1,7 @@
1
- /** @jsx jsx */
1
+ /**
2
+ * @jsxRuntime classic
3
+ * @jsx jsx
4
+ */
2
5
  import { jsx } from '@emotion/react';
3
6
  import type { Command, FloatingToolbarItem } from '@atlaskit/editor-common/types';
4
7
  type Props = {
@@ -1,4 +1,7 @@
1
- /** @jsx jsx */
1
+ /**
2
+ * @jsxRuntime classic
3
+ * @jsx jsx
4
+ */
2
5
  import React, { Component } from 'react';
3
6
  import { jsx } from '@emotion/react';
4
7
  import type { WrappedComponentProps } from 'react-intl-next';
@@ -1,4 +1,7 @@
1
- /** @jsx jsx */
1
+ /**
2
+ * @jsxRuntime classic
3
+ * @jsx jsx
4
+ */
2
5
  import { jsx } from '@emotion/react';
3
6
  import type { EditorAnalyticsAPI } from '@atlaskit/editor-common/analytics';
4
7
  import type { GetEditorContainerWidth, GetEditorFeatureFlags } from '@atlaskit/editor-common/types';
@@ -1,4 +1,7 @@
1
- /** @jsx jsx */
1
+ /**
2
+ * @jsxRuntime classic
3
+ * @jsx jsx
4
+ */
2
5
  /** @jsxFrag */
3
6
  import React from 'react';
4
7
  import { jsx } from '@emotion/react';
@@ -11,4 +11,4 @@ export declare const normaliseAlignment: (layout: TableLayout) => AlignmentOptio
11
11
  /**
12
12
  * We don't want to switch alignment in Full-width editor
13
13
  */
14
- export declare const shouldChangeAlignmentToCenterResized: (isTableAlignmentEnabled: boolean | undefined, tableNode: PmNode, lineLength: number | undefined, updatedTableWidth: number) => boolean | 0 | undefined;
14
+ export declare const shouldChangeAlignmentToCenterResized: (isTableAlignmentEnabled: boolean | undefined, tableNode: PmNode, lineLength: number | undefined, updatedTableWidth: number) => boolean;
@@ -1,4 +1,26 @@
1
+ import { type EditorContainerWidth } from '@atlaskit/editor-common/types';
1
2
  import type { Node as PmNode } from '@atlaskit/editor-prosemirror/model';
2
3
  import type { ResizeState } from './types';
3
4
  export declare const resizeColumn: (resizeState: ResizeState, colIndex: number, amount: number, tableRef: HTMLElement | null, tableNode: PmNode, selectedColumns?: number[], isTableScalingEnabled?: boolean, shouldUseIncreasedScalingPercent?: boolean) => ResizeState;
4
- export declare const resizeColumnAndTable: (resizeState: ResizeState, colIndex: number, amount: number, tableRef: HTMLElement, tableNode: PmNode, selectedColumns?: number[], isTableScalingEnabled?: boolean, originalTableWidth?: number, shouldUseIncreasedScalingPercent?: boolean, lineLength?: number, isTableAlignmentEnabled?: boolean) => ResizeState;
5
+ type ResizeInformation = {
6
+ resizeState: ResizeState;
7
+ colIndex: number;
8
+ amount: number;
9
+ };
10
+ type TableReferences = {
11
+ tableRef: HTMLElement;
12
+ tableNode: PmNode;
13
+ };
14
+ type TableResizingPluginOptions = {
15
+ isTableAlignmentEnabled?: boolean;
16
+ };
17
+ type ResizeColumnAndTable = ResizeInformation & TableResizingPluginOptions & TableReferences & EditorContainerWidth;
18
+ export declare const resizeColumnAndTable: ({ resizeState, colIndex, amount, tableRef, tableNode, lineLength, width: editorWidth, isTableAlignmentEnabled, }: ResizeColumnAndTable) => ResizeState;
19
+ /**
20
+ * Apply a scaling factor to resize state
21
+ */
22
+ export declare const scaleResizeState: ({ resizeState, tableRef, tableNode, editorWidth, }: TableReferences & {
23
+ resizeState: ResizeState;
24
+ editorWidth: number;
25
+ }) => ResizeState;
26
+ export {};
@@ -1,4 +1,7 @@
1
- /** @jsx jsx */
1
+ /**
2
+ * @jsxRuntime classic
3
+ * @jsx jsx
4
+ */
2
5
  import { jsx } from '@emotion/react';
3
6
  type Props = {
4
7
  startIndex: number;
@@ -1,4 +1,7 @@
1
- /** @jsx jsx */
1
+ /**
2
+ * @jsxRuntime classic
3
+ * @jsx jsx
4
+ */
2
5
  import { jsx } from '@emotion/react';
3
6
  import type { Command, FloatingToolbarItem } from '@atlaskit/editor-common/types';
4
7
  type Props = {
@@ -1,4 +1,7 @@
1
- /** @jsx jsx */
1
+ /**
2
+ * @jsxRuntime classic
3
+ * @jsx jsx
4
+ */
2
5
  import React, { Component } from 'react';
3
6
  import { jsx } from '@emotion/react';
4
7
  import type { WrappedComponentProps } from 'react-intl-next';
@@ -1,4 +1,7 @@
1
- /** @jsx jsx */
1
+ /**
2
+ * @jsxRuntime classic
3
+ * @jsx jsx
4
+ */
2
5
  import { jsx } from '@emotion/react';
3
6
  import type { EditorAnalyticsAPI } from '@atlaskit/editor-common/analytics';
4
7
  import type { GetEditorContainerWidth, GetEditorFeatureFlags } from '@atlaskit/editor-common/types';
@@ -1,4 +1,7 @@
1
- /** @jsx jsx */
1
+ /**
2
+ * @jsxRuntime classic
3
+ * @jsx jsx
4
+ */
2
5
  /** @jsxFrag */
3
6
  import React from 'react';
4
7
  import { jsx } from '@emotion/react';
@@ -11,4 +11,4 @@ export declare const normaliseAlignment: (layout: TableLayout) => AlignmentOptio
11
11
  /**
12
12
  * We don't want to switch alignment in Full-width editor
13
13
  */
14
- export declare const shouldChangeAlignmentToCenterResized: (isTableAlignmentEnabled: boolean | undefined, tableNode: PmNode, lineLength: number | undefined, updatedTableWidth: number) => boolean | 0 | undefined;
14
+ export declare const shouldChangeAlignmentToCenterResized: (isTableAlignmentEnabled: boolean | undefined, tableNode: PmNode, lineLength: number | undefined, updatedTableWidth: number) => boolean;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@atlaskit/editor-plugin-table",
3
- "version": "7.21.3",
3
+ "version": "7.21.5",
4
4
  "description": "Table plugin for the @atlaskit/editor",
5
5
  "publishConfig": {
6
6
  "registry": "https://registry.npmjs.org/"
@@ -31,7 +31,7 @@
31
31
  "@atlaskit/adf-schema": "^39.0.3",
32
32
  "@atlaskit/button": "^19.0.0",
33
33
  "@atlaskit/custom-steps": "^0.4.0",
34
- "@atlaskit/editor-common": "^86.2.0",
34
+ "@atlaskit/editor-common": "^86.5.0",
35
35
  "@atlaskit/editor-palette": "1.6.0",
36
36
  "@atlaskit/editor-plugin-accessibility-utils": "^1.1.0",
37
37
  "@atlaskit/editor-plugin-analytics": "^1.4.0",
@@ -43,7 +43,7 @@
43
43
  "@atlaskit/editor-prosemirror": "4.0.1",
44
44
  "@atlaskit/editor-shared-styles": "^2.13.0",
45
45
  "@atlaskit/editor-tables": "^2.7.0",
46
- "@atlaskit/icon": "^22.6.0",
46
+ "@atlaskit/icon": "^22.7.0",
47
47
  "@atlaskit/menu": "^2.8.0",
48
48
  "@atlaskit/platform-feature-flags": "^0.3.0",
49
49
  "@atlaskit/pragmatic-drag-and-drop": "^1.2.0",
@@ -105,9 +105,6 @@
105
105
  "platform_editor_lazy-node-views": {
106
106
  "type": "boolean"
107
107
  },
108
- "platform.editor.a11y-help-dialog-shortcut-keys-position_aghfg": {
109
- "type": "boolean"
110
- },
111
108
  "platform.editor.transform-slice-for-nested-expand": {
112
109
  "type": "boolean"
113
110
  },
@@ -128,6 +125,9 @@
128
125
  },
129
126
  "platform_editor_element_drag_and_drop_ed_24041": {
130
127
  "type": "boolean"
128
+ },
129
+ "editor_react_18_fix_table_delete_col_decorations": {
130
+ "type": "boolean"
131
131
  }
132
132
  }
133
133
  }
@@ -26,6 +26,7 @@ import type { CleanupFn } from '@atlaskit/pragmatic-drag-and-drop/types';
26
26
  import { token } from '@atlaskit/tokens';
27
27
 
28
28
  import { autoSizeTable, clearHoverSelection } from '../commands';
29
+ import { handleMouseOut, isTableInFocus } from '../event-handlers';
29
30
  import { autoScrollerFactory } from '../pm-plugins/drag-and-drop/utils';
30
31
  import { getPluginState } from '../pm-plugins/plugin-factory';
31
32
  import type { RowStickyState, StickyPluginState } from '../pm-plugins/sticky-headers';
@@ -186,6 +187,13 @@ class TableComponent extends React.Component<ComponentProps, TableState> {
186
187
  }
187
188
  }
188
189
 
190
+ private handleMouseOut = (event: Event) => {
191
+ if (!isTableInFocus(this.props.view)) {
192
+ return false;
193
+ }
194
+ return handleMouseOut(this.props.view, event);
195
+ };
196
+
189
197
  componentDidMount() {
190
198
  const {
191
199
  allowColumnResizing,
@@ -204,6 +212,9 @@ class TableComponent extends React.Component<ComponentProps, TableState> {
204
212
  this?.table?.addEventListener('mouseenter', this.handleMouseEnter);
205
213
  }
206
214
  }
215
+ if (fg('editor_react_18_fix_table_delete_col_decorations')) {
216
+ this?.table?.addEventListener('mouseout', this.handleMouseOut);
217
+ }
207
218
 
208
219
  const { tableWithFixedColumnWidthsOption = false, stickyScrollbar } = getEditorFeatureFlags();
209
220
 
@@ -308,6 +319,9 @@ class TableComponent extends React.Component<ComponentProps, TableState> {
308
319
  if (fg('platform.editor.table.live-pages-sorting_4malx')) {
309
320
  this?.table?.removeEventListener('mouseenter', this.handleMouseEnter);
310
321
  }
322
+ if (fg('editor_react_18_fix_table_delete_col_decorations')) {
323
+ this?.table?.removeEventListener('mouseout', this.handleMouseOut);
324
+ }
311
325
 
312
326
  if (this.overflowShadowsObserver) {
313
327
  this.overflowShadowsObserver.dispose();
@@ -143,41 +143,39 @@ export function keymapPlugin(
143
143
  list,
144
144
  );
145
145
 
146
- if (fg('platform.editor.a11y-help-dialog-shortcut-keys-position_aghfg')) {
147
- bindKeymapWithCommand(
148
- addRowBeforeVO.common!,
149
- addRowAroundSelection(editorAnalyticsAPI)('TOP'),
150
- list,
151
- );
146
+ bindKeymapWithCommand(
147
+ addRowBeforeVO.common!,
148
+ addRowAroundSelection(editorAnalyticsAPI)('TOP'),
149
+ list,
150
+ );
152
151
 
153
- bindKeymapWithCommand(
154
- addRowAfterVO.common!,
155
- addRowAroundSelection(editorAnalyticsAPI)('BOTTOM'),
156
- list,
157
- );
152
+ bindKeymapWithCommand(
153
+ addRowAfterVO.common!,
154
+ addRowAroundSelection(editorAnalyticsAPI)('BOTTOM'),
155
+ list,
156
+ );
158
157
 
159
- bindKeymapWithCommand(
160
- addColumnBeforeVO.common!,
161
- addColumnBeforeCommand(
162
- isTableScalingEnabled,
163
- isCellBackgroundDuplicated,
164
- isTableFixedColumnWidthsOptionEnabled,
165
- shouldUseIncreasedScalingPercent,
166
- ),
167
- list,
168
- );
158
+ bindKeymapWithCommand(
159
+ addColumnBeforeVO.common!,
160
+ addColumnBeforeCommand(
161
+ isTableScalingEnabled,
162
+ isCellBackgroundDuplicated,
163
+ isTableFixedColumnWidthsOptionEnabled,
164
+ shouldUseIncreasedScalingPercent,
165
+ ),
166
+ list,
167
+ );
169
168
 
170
- bindKeymapWithCommand(
171
- addColumnAfterVO.common!,
172
- addColumnAfterCommand(
173
- isTableScalingEnabled,
174
- isCellBackgroundDuplicated,
175
- isTableFixedColumnWidthsOptionEnabled,
176
- shouldUseIncreasedScalingPercent,
177
- ),
178
- list,
179
- );
180
- }
169
+ bindKeymapWithCommand(
170
+ addColumnAfterVO.common!,
171
+ addColumnAfterCommand(
172
+ isTableScalingEnabled,
173
+ isCellBackgroundDuplicated,
174
+ isTableFixedColumnWidthsOptionEnabled,
175
+ shouldUseIncreasedScalingPercent,
176
+ ),
177
+ list,
178
+ );
181
179
 
182
180
  if (dragAndDropEnabled) {
183
181
  // Move row/column shortcuts
@@ -374,7 +374,9 @@ export const createPlugin = (
374
374
  mousedown: withCellTracking(handleMouseDown),
375
375
  mouseover: withCellTracking(whenTableInFocus(handleMouseOver)),
376
376
  mouseleave: handleMouseLeave,
377
- mouseout: whenTableInFocus(handleMouseOut),
377
+ mouseout: fg('editor_react_18_fix_table_delete_col_decorations')
378
+ ? undefined
379
+ : whenTableInFocus(handleMouseOut),
378
380
  mousemove: whenTableInFocus(handleMouseMove),
379
381
  mouseenter: handleMouseEnter,
380
382
  mouseup: whenTableInFocus(handleMouseUp),