@atlaskit/editor-plugin-table 23.3.3 → 23.3.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 (111) hide show
  1. package/CHANGELOG.md +27 -0
  2. package/dist/cjs/pm-plugins/commands/active-table-menu.js +19 -8
  3. package/dist/cjs/pm-plugins/commands/commands-with-analytics.js +9 -49
  4. package/dist/cjs/pm-plugins/drag-and-drop/plugin.js +1 -1
  5. package/dist/cjs/pm-plugins/handlers.js +1 -1
  6. package/dist/cjs/pm-plugins/main.js +4 -1
  7. package/dist/cjs/ui/ContentComponent.js +11 -1
  8. package/dist/cjs/ui/FloatingContextualButton/index.js +2 -2
  9. package/dist/cjs/ui/FloatingContextualMenu/CellMenuPopup.js +2 -2
  10. package/dist/cjs/ui/FloatingContextualMenu/ContextualMenu.js +6 -2
  11. package/dist/cjs/ui/FloatingDragMenu/index.js +10 -38
  12. package/dist/cjs/ui/FloatingTableMenu/index.js +175 -0
  13. package/dist/cjs/ui/TableFloatingColumnControls/ColumnControls/index.js +43 -11
  14. package/dist/cjs/ui/TableFloatingControls/RowControls/DragControls.js +57 -26
  15. package/dist/cjs/ui/TableMenu/cell/items/MergeCellsItem.js +1 -1
  16. package/dist/cjs/ui/TableMenu/cell/items/SplitCellItem.js +1 -1
  17. package/dist/cjs/ui/TableMenu/cell/items/VerticalAlignDropdownItem.js +1 -1
  18. package/dist/cjs/ui/TableMenu/column/items/AddColumnLeftItem.js +1 -1
  19. package/dist/cjs/ui/TableMenu/column/items/AddColumnRightItem.js +1 -1
  20. package/dist/cjs/ui/TableMenu/column/items/DeleteColumnItem.js +1 -1
  21. package/dist/cjs/ui/TableMenu/column/items/DistributeColumnsItem.js +1 -1
  22. package/dist/cjs/ui/TableMenu/column/items/MoveColumnLeftItem.js +1 -1
  23. package/dist/cjs/ui/TableMenu/column/items/MoveColumnRightItem.js +1 -1
  24. package/dist/cjs/ui/TableMenu/column/items/SortDecreasingItem.js +1 -1
  25. package/dist/cjs/ui/TableMenu/column/items/SortIncreasingItem.js +1 -1
  26. package/dist/cjs/ui/TableMenu/row/items/AddRowAboveItem.js +1 -1
  27. package/dist/cjs/ui/TableMenu/row/items/AddRowBelowItem.js +1 -1
  28. package/dist/cjs/ui/TableMenu/row/items/DeleteRowItem.js +1 -1
  29. package/dist/cjs/ui/TableMenu/row/items/MoveRowDownItem.js +1 -1
  30. package/dist/cjs/ui/TableMenu/row/items/MoveRowUpItem.js +1 -1
  31. package/dist/cjs/ui/TableMenu/shared/TableMenu.js +8 -8
  32. package/dist/cjs/ui/TableMenu/shared/consts.js +1 -1
  33. package/dist/cjs/ui/TableMenu/shared/items/BackgroundColorItem.js +1 -1
  34. package/dist/cjs/ui/TableMenu/shared/items/ClearCellsItem.js +1 -1
  35. package/dist/es2019/pm-plugins/commands/active-table-menu.js +19 -8
  36. package/dist/es2019/pm-plugins/commands/commands-with-analytics.js +0 -39
  37. package/dist/es2019/pm-plugins/drag-and-drop/plugin.js +1 -1
  38. package/dist/es2019/pm-plugins/handlers.js +1 -1
  39. package/dist/es2019/pm-plugins/main.js +3 -0
  40. package/dist/es2019/ui/ContentComponent.js +11 -1
  41. package/dist/es2019/ui/FloatingContextualButton/index.js +2 -2
  42. package/dist/es2019/ui/FloatingContextualMenu/CellMenuPopup.js +2 -2
  43. package/dist/es2019/ui/FloatingContextualMenu/ContextualMenu.js +6 -2
  44. package/dist/es2019/ui/FloatingDragMenu/index.js +11 -40
  45. package/dist/es2019/ui/FloatingTableMenu/index.js +165 -0
  46. package/dist/es2019/ui/TableFloatingColumnControls/ColumnControls/index.js +41 -7
  47. package/dist/es2019/ui/TableFloatingControls/RowControls/DragControls.js +40 -7
  48. package/dist/es2019/ui/TableMenu/cell/items/MergeCellsItem.js +1 -1
  49. package/dist/es2019/ui/TableMenu/cell/items/SplitCellItem.js +1 -1
  50. package/dist/es2019/ui/TableMenu/cell/items/VerticalAlignDropdownItem.js +1 -1
  51. package/dist/es2019/ui/TableMenu/column/items/AddColumnLeftItem.js +1 -1
  52. package/dist/es2019/ui/TableMenu/column/items/AddColumnRightItem.js +1 -1
  53. package/dist/es2019/ui/TableMenu/column/items/DeleteColumnItem.js +1 -1
  54. package/dist/es2019/ui/TableMenu/column/items/DistributeColumnsItem.js +1 -1
  55. package/dist/es2019/ui/TableMenu/column/items/MoveColumnLeftItem.js +1 -1
  56. package/dist/es2019/ui/TableMenu/column/items/MoveColumnRightItem.js +1 -1
  57. package/dist/es2019/ui/TableMenu/column/items/SortDecreasingItem.js +1 -1
  58. package/dist/es2019/ui/TableMenu/column/items/SortIncreasingItem.js +1 -1
  59. package/dist/es2019/ui/TableMenu/row/items/AddRowAboveItem.js +1 -1
  60. package/dist/es2019/ui/TableMenu/row/items/AddRowBelowItem.js +1 -1
  61. package/dist/es2019/ui/TableMenu/row/items/DeleteRowItem.js +1 -1
  62. package/dist/es2019/ui/TableMenu/row/items/MoveRowDownItem.js +1 -1
  63. package/dist/es2019/ui/TableMenu/row/items/MoveRowUpItem.js +1 -1
  64. package/dist/es2019/ui/TableMenu/shared/TableMenu.js +8 -8
  65. package/dist/es2019/ui/TableMenu/shared/consts.js +1 -1
  66. package/dist/es2019/ui/TableMenu/shared/items/BackgroundColorItem.js +1 -1
  67. package/dist/es2019/ui/TableMenu/shared/items/ClearCellsItem.js +1 -1
  68. package/dist/esm/pm-plugins/commands/active-table-menu.js +19 -8
  69. package/dist/esm/pm-plugins/commands/commands-with-analytics.js +8 -48
  70. package/dist/esm/pm-plugins/drag-and-drop/plugin.js +1 -1
  71. package/dist/esm/pm-plugins/handlers.js +1 -1
  72. package/dist/esm/pm-plugins/main.js +4 -1
  73. package/dist/esm/ui/ContentComponent.js +11 -1
  74. package/dist/esm/ui/FloatingContextualButton/index.js +2 -2
  75. package/dist/esm/ui/FloatingContextualMenu/CellMenuPopup.js +2 -2
  76. package/dist/esm/ui/FloatingContextualMenu/ContextualMenu.js +8 -2
  77. package/dist/esm/ui/FloatingDragMenu/index.js +11 -39
  78. package/dist/esm/ui/FloatingTableMenu/index.js +167 -0
  79. package/dist/esm/ui/TableFloatingColumnControls/ColumnControls/index.js +42 -10
  80. package/dist/esm/ui/TableFloatingControls/RowControls/DragControls.js +56 -25
  81. package/dist/esm/ui/TableMenu/cell/items/MergeCellsItem.js +1 -1
  82. package/dist/esm/ui/TableMenu/cell/items/SplitCellItem.js +1 -1
  83. package/dist/esm/ui/TableMenu/cell/items/VerticalAlignDropdownItem.js +1 -1
  84. package/dist/esm/ui/TableMenu/column/items/AddColumnLeftItem.js +1 -1
  85. package/dist/esm/ui/TableMenu/column/items/AddColumnRightItem.js +1 -1
  86. package/dist/esm/ui/TableMenu/column/items/DeleteColumnItem.js +1 -1
  87. package/dist/esm/ui/TableMenu/column/items/DistributeColumnsItem.js +1 -1
  88. package/dist/esm/ui/TableMenu/column/items/MoveColumnLeftItem.js +1 -1
  89. package/dist/esm/ui/TableMenu/column/items/MoveColumnRightItem.js +1 -1
  90. package/dist/esm/ui/TableMenu/column/items/SortDecreasingItem.js +1 -1
  91. package/dist/esm/ui/TableMenu/column/items/SortIncreasingItem.js +1 -1
  92. package/dist/esm/ui/TableMenu/row/items/AddRowAboveItem.js +1 -1
  93. package/dist/esm/ui/TableMenu/row/items/AddRowBelowItem.js +1 -1
  94. package/dist/esm/ui/TableMenu/row/items/DeleteRowItem.js +1 -1
  95. package/dist/esm/ui/TableMenu/row/items/MoveRowDownItem.js +1 -1
  96. package/dist/esm/ui/TableMenu/row/items/MoveRowUpItem.js +1 -1
  97. package/dist/esm/ui/TableMenu/shared/TableMenu.js +8 -8
  98. package/dist/esm/ui/TableMenu/shared/consts.js +1 -1
  99. package/dist/esm/ui/TableMenu/shared/items/BackgroundColorItem.js +1 -1
  100. package/dist/esm/ui/TableMenu/shared/items/ClearCellsItem.js +1 -1
  101. package/dist/types/pm-plugins/commands/active-table-menu.d.ts +3 -3
  102. package/dist/types/pm-plugins/commands/commands-with-analytics.d.ts +1 -3
  103. package/dist/types/ui/FloatingContextualMenu/ContextualMenu.d.ts +0 -4
  104. package/dist/types/ui/FloatingTableMenu/index.d.ts +23 -0
  105. package/dist/types/ui/TableMenu/shared/consts.d.ts +1 -1
  106. package/dist/types-ts4.5/pm-plugins/commands/active-table-menu.d.ts +3 -3
  107. package/dist/types-ts4.5/pm-plugins/commands/commands-with-analytics.d.ts +1 -3
  108. package/dist/types-ts4.5/ui/FloatingContextualMenu/ContextualMenu.d.ts +0 -4
  109. package/dist/types-ts4.5/ui/FloatingTableMenu/index.d.ts +23 -0
  110. package/dist/types-ts4.5/ui/TableMenu/shared/consts.d.ts +1 -1
  111. package/package.json +3 -3
package/CHANGELOG.md CHANGED
@@ -1,5 +1,32 @@
1
1
  # @atlaskit/editor-plugin-table
2
2
 
3
+ ## 23.3.5
4
+
5
+ ### Patch Changes
6
+
7
+ - [`473e6619e9af8`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/473e6619e9af8) -
8
+ Fix shift selection + state update in table menu
9
+
10
+ ## 23.3.4
11
+
12
+ ### Patch Changes
13
+
14
+ - [`a4f97c853dccf`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/a4f97c853dccf) -
15
+ Extend `no-module-level-eval` lint rule to cover editor experiment APIs (`expValEquals`, `expVal`,
16
+ `editorExperiment`, `expValEqualsNoExposure`) imported from `@atlaskit/tmp-editor-statsig`
17
+ subpaths. Module-level evaluation of these functions causes flakiness because experiment values
18
+ may not be resolved yet at import time.
19
+
20
+ Fix existing violations in `editor-plugin-block-controls` (`global-styles.tsx`) and
21
+ `editor-plugin-table` (`ContextualMenu.tsx`) by converting module-level experiment evaluations to
22
+ lazy function calls.
23
+
24
+ Clean up fully-launched experiment `platform_editor_unify_native_dnd_selectors` — replace
25
+ conditional selector logic with the winning `dragHandlerAnchorSelectorWithTaskExclusion` value and
26
+ remove the experiment from `experiments-config.ts`.
27
+
28
+ - Updated dependencies
29
+
3
30
  ## 23.3.3
4
31
 
5
32
  ### Patch Changes
@@ -5,17 +5,26 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.toggleActiveTableMenu = exports.closeActiveTableMenu = void 0;
7
7
  var _pluginKey = require("../plugin-key");
8
- var closeActiveTableMenu = exports.closeActiveTableMenu = function closeActiveTableMenu() {
8
+ var applyMenuUserIntent = function applyMenuUserIntent(tr, api, nextActiveTableMenu) {
9
+ var _api$userIntent;
10
+ var isRowOrColumnMenuOpen = nextActiveTableMenu.type === 'row' || nextActiveTableMenu.type === 'column';
11
+ api === null || api === void 0 || (_api$userIntent = api.userIntent) === null || _api$userIntent === void 0 || _api$userIntent.commands.setCurrentUserIntent(isRowOrColumnMenuOpen ? 'tableDragMenuPopupOpen' : 'default')({
12
+ tr: tr
13
+ });
14
+ };
15
+ var closeActiveTableMenu = exports.closeActiveTableMenu = function closeActiveTableMenu(api) {
9
16
  return function (_ref) {
10
17
  var tr = _ref.tr;
18
+ var nextActiveTableMenu = {
19
+ type: 'none'
20
+ };
11
21
  tr.setMeta(_pluginKey.pluginKey, {
12
22
  type: 'SET_ACTIVE_TABLE_MENU',
13
23
  data: {
14
- activeTableMenu: {
15
- type: 'none'
16
- }
24
+ activeTableMenu: nextActiveTableMenu
17
25
  }
18
26
  });
27
+ applyMenuUserIntent(tr, api, nextActiveTableMenu);
19
28
  if (!tr.docChanged) {
20
29
  tr.setMeta('addToHistory', false);
21
30
  }
@@ -31,17 +40,19 @@ var isSameActiveTableMenu = function isSameActiveTableMenu(current, next) {
31
40
  }
32
41
  return true;
33
42
  };
34
- var toggleActiveTableMenu = exports.toggleActiveTableMenu = function toggleActiveTableMenu(activeTableMenu, currentActiveTableMenu) {
43
+ var toggleActiveTableMenu = exports.toggleActiveTableMenu = function toggleActiveTableMenu(activeTableMenu, currentActiveTableMenu, api) {
35
44
  return function (_ref2) {
36
45
  var tr = _ref2.tr;
46
+ var nextActiveTableMenu = isSameActiveTableMenu(currentActiveTableMenu, activeTableMenu) ? {
47
+ type: 'none'
48
+ } : activeTableMenu;
37
49
  tr.setMeta(_pluginKey.pluginKey, {
38
50
  type: 'SET_ACTIVE_TABLE_MENU',
39
51
  data: {
40
- activeTableMenu: isSameActiveTableMenu(currentActiveTableMenu, activeTableMenu) ? {
41
- type: 'none'
42
- } : activeTableMenu
52
+ activeTableMenu: nextActiveTableMenu
43
53
  }
44
54
  });
55
+ applyMenuUserIntent(tr, api, nextActiveTableMenu);
45
56
  tr.setMeta('addToHistory', false);
46
57
  return tr;
47
58
  };
@@ -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.wrapTableInExpandWithAnalytics = exports.toggleNumberColumnWithAnalytics = exports.toggleHeaderRowWithAnalytics = exports.toggleHeaderColumnWithAnalytics = exports.toggleFixedColumnWidthsOptionAnalytics = exports.toggleActiveTableMenuWithAnalytics = exports.splitCellWithAnalytics = exports.sortColumnWithAnalytics = exports.setTableAlignmentWithTableContentWithPosWithAnalytics = exports.setTableAlignmentWithAnalytics = exports.setColorWithAnalytics = exports.mergeCellsWithAnalytics = exports.insertRowWithAnalytics = exports.insertColumnWithAnalytics = exports.emptyMultipleCellsWithAnalytics = exports.distributeColumnsWidthsWithAnalytics = exports.deleteTableWithAnalytics = exports.deleteTableIfSelectedWithAnalytics = exports.deleteSelectedRowsOrColumnsWithAnalyticsViaShortcut = exports.deleteRowsWithAnalytics = exports.deleteColumnsWithAnalytics = exports.changeColumnWidthByStepWithAnalytics = exports.addRowAroundSelection = void 0;
7
+ exports.wrapTableInExpandWithAnalytics = exports.toggleNumberColumnWithAnalytics = exports.toggleHeaderRowWithAnalytics = exports.toggleHeaderColumnWithAnalytics = exports.toggleFixedColumnWidthsOptionAnalytics = exports.splitCellWithAnalytics = exports.sortColumnWithAnalytics = exports.setTableAlignmentWithTableContentWithPosWithAnalytics = exports.setTableAlignmentWithAnalytics = exports.setColorWithAnalytics = exports.mergeCellsWithAnalytics = exports.insertRowWithAnalytics = exports.insertColumnWithAnalytics = exports.emptyMultipleCellsWithAnalytics = exports.distributeColumnsWidthsWithAnalytics = exports.deleteTableWithAnalytics = exports.deleteTableIfSelectedWithAnalytics = exports.deleteSelectedRowsOrColumnsWithAnalyticsViaShortcut = exports.deleteRowsWithAnalytics = exports.deleteColumnsWithAnalytics = exports.changeColumnWidthByStepWithAnalytics = exports.addRowAroundSelection = void 0;
8
8
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
9
9
  var _adfSchema = require("@atlaskit/adf-schema");
10
10
  var _analytics = require("@atlaskit/editor-common/analytics");
@@ -18,7 +18,6 @@ var _deleteRows = require("../transforms/delete-rows");
18
18
  var _merge = require("../transforms/merge");
19
19
  var _analytics2 = require("../utils/analytics");
20
20
  var _nodes = require("../utils/nodes");
21
- var _activeTableMenu = require("./active-table-menu");
22
21
  var _clear = require("./clear");
23
22
  var _collapse = require("./collapse");
24
23
  var _columnResize = require("./column-resize");
@@ -31,45 +30,6 @@ var _splitCell = require("./split-cell");
31
30
  var _toggle = require("./toggle");
32
31
  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; }
33
32
  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) { (0, _defineProperty2.default)(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; }
34
- var toggleActiveTableMenuWithAnalytics = exports.toggleActiveTableMenuWithAnalytics = function toggleActiveTableMenuWithAnalytics(editorAnalyticsAPI) {
35
- return function (direction, index) {
36
- var trigger = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'mouse';
37
- return (0, _analytics2.withEditorAnalyticsAPI)(function (state) {
38
- var _getPluginState = (0, _pluginFactory.getPluginState)(state),
39
- previousActiveTableMenu = _getPluginState.activeTableMenu;
40
- var isSameActiveMenu = (previousActiveTableMenu === null || previousActiveTableMenu === void 0 ? void 0 : previousActiveTableMenu.type) === direction && previousActiveTableMenu.index === index;
41
- if (isSameActiveMenu) {
42
- return undefined;
43
- }
44
- return {
45
- action: _analytics.TABLE_ACTION.DRAG_MENU_OPENED,
46
- actionSubject: _analytics.ACTION_SUBJECT.TABLE,
47
- actionSubjectId: null,
48
- eventType: _analytics.EVENT_TYPE.TRACK,
49
- attributes: {
50
- inputMethod: trigger === 'keyboard' ? _analytics.INPUT_METHOD.KEYBOARD : _analytics.INPUT_METHOD.MOUSE,
51
- direction: direction
52
- }
53
- };
54
- })(editorAnalyticsAPI)(function (state, dispatch) {
55
- if (dispatch) {
56
- var _getPluginState2 = (0, _pluginFactory.getPluginState)(state),
57
- currentActiveTableMenu = _getPluginState2.activeTableMenu;
58
- var newTr = (0, _activeTableMenu.toggleActiveTableMenu)({
59
- type: direction,
60
- index: index,
61
- openedBy: trigger
62
- }, currentActiveTableMenu)({
63
- tr: state.tr
64
- });
65
- if (newTr) {
66
- dispatch(newTr);
67
- }
68
- }
69
- return true;
70
- });
71
- };
72
- };
73
33
  var emptyMultipleCellsWithAnalytics = exports.emptyMultipleCellsWithAnalytics = function emptyMultipleCellsWithAnalytics(editorAnalyticsAPI) {
74
34
  return function (inputMethod, targetCellPosition) {
75
35
  return (0, _analytics2.withEditorAnalyticsAPI)(function (_ref) {
@@ -234,8 +194,8 @@ var changeColumnWidthByStepWithAnalytics = exports.changeColumnWidthByStepWithAn
234
194
  table = _getSelectedTableInfo2.table,
235
195
  totalRowCount = _getSelectedTableInfo2.totalRowCount,
236
196
  totalColumnCount = _getSelectedTableInfo2.totalColumnCount;
237
- var _getPluginState3 = (0, _pluginFactory.getPluginState)(state),
238
- colIndex = _getPluginState3.hoveredCell.colIndex;
197
+ var _getPluginState = (0, _pluginFactory.getPluginState)(state),
198
+ colIndex = _getPluginState.hoveredCell.colIndex;
239
199
  return {
240
200
  action: _analytics.TABLE_ACTION.COLUMN_RESIZED,
241
201
  actionSubject: _analytics.ACTION_SUBJECT.TABLE,
@@ -355,8 +315,8 @@ var deleteSelectedRowsOrColumnsWithAnalyticsViaShortcut = exports.deleteSelected
355
315
  }
356
316
  var selectionType = (0, _misc.getTableSelectionType)(selection);
357
317
  if (selectionType === 'row') {
358
- var _getPluginState4 = (0, _pluginFactory.getPluginState)(state),
359
- pluginConfig = _getPluginState4.pluginConfig;
318
+ var _getPluginState2 = (0, _pluginFactory.getPluginState)(state),
319
+ pluginConfig = _getPluginState2.pluginConfig;
360
320
  var isHeaderRowRequired = pluginConfig.isHeaderRowRequired || false;
361
321
  return deleteRowsWithAnalytics(editorAnalyticsAPI)(_analytics.INPUT_METHOD.SHORTCUT, rect, isHeaderRowRequired)(state, dispatch);
362
322
  } else if (selectionType === 'column') {
@@ -400,8 +360,8 @@ var toggleHeaderRowWithAnalytics = exports.toggleHeaderRowWithAnalytics = functi
400
360
  var _getSelectedTableInfo7 = (0, _analytics2.getSelectedTableInfo)(state.selection),
401
361
  totalRowCount = _getSelectedTableInfo7.totalRowCount,
402
362
  totalColumnCount = _getSelectedTableInfo7.totalColumnCount;
403
- var _getPluginState5 = (0, _pluginFactory.getPluginState)(state),
404
- isHeaderRowEnabled = _getPluginState5.isHeaderRowEnabled;
363
+ var _getPluginState3 = (0, _pluginFactory.getPluginState)(state),
364
+ isHeaderRowEnabled = _getPluginState3.isHeaderRowEnabled;
405
365
  return {
406
366
  action: _analytics.TABLE_ACTION.TOGGLED_HEADER_ROW,
407
367
  actionSubject: _analytics.ACTION_SUBJECT.TABLE,
@@ -420,8 +380,8 @@ var toggleHeaderColumnWithAnalytics = exports.toggleHeaderColumnWithAnalytics =
420
380
  var _getSelectedTableInfo8 = (0, _analytics2.getSelectedTableInfo)(state.selection),
421
381
  totalRowCount = _getSelectedTableInfo8.totalRowCount,
422
382
  totalColumnCount = _getSelectedTableInfo8.totalColumnCount;
423
- var _getPluginState6 = (0, _pluginFactory.getPluginState)(state),
424
- isHeaderColumnEnabled = _getPluginState6.isHeaderColumnEnabled;
383
+ var _getPluginState4 = (0, _pluginFactory.getPluginState)(state),
384
+ isHeaderColumnEnabled = _getPluginState4.isHeaderColumnEnabled;
425
385
  return {
426
386
  action: _analytics.TABLE_ACTION.TOGGLED_HEADER_COLUMN,
427
387
  actionSubject: _analytics.ACTION_SUBJECT.TABLE,
@@ -96,7 +96,7 @@ var destroyFn = function destroyFn(editorView, editorAnalyticsAPI, isTableScalin
96
96
  api === null || api === void 0 || api.core.actions.execute(function (_ref7) {
97
97
  var _api$userIntent;
98
98
  var tr = _ref7.tr;
99
- (0, _activeTableMenu.closeActiveTableMenu)()({
99
+ (0, _activeTableMenu.closeActiveTableMenu)(api)({
100
100
  tr: tr
101
101
  });
102
102
  api === null || api === void 0 || (_api$userIntent = api.userIntent) === null || _api$userIntent === void 0 || _api$userIntent.commands.setCurrentUserIntent('dragging')({
@@ -53,7 +53,7 @@ var updateTargetCellPosition = function updateTargetCellPosition(_ref2) {
53
53
  }
54
54
  var hasTargetCellChanged = pluginState.targetCellPosition !== _targetCellPosition;
55
55
  var hasActiveTableMenu = pluginState.activeTableMenu != null && pluginState.activeTableMenu.type !== 'none';
56
- var shouldCloseMenu = hasActiveTableMenu && (!tableNode || hasTargetCellChanged || !(tr.selection instanceof _cellSelection.CellSelection));
56
+ var shouldCloseMenu = hasActiveTableMenu && tr.selectionSet && (!tableNode || hasTargetCellChanged || !(tr.selection instanceof _cellSelection.CellSelection));
57
57
  if (!hasTargetCellChanged && !shouldCloseMenu) {
58
58
  return pluginState;
59
59
  }
@@ -50,7 +50,10 @@ var createPlugin = exports.createPlugin = function createPlugin(dispatchAnalytic
50
50
  wasFullWidthModeEnabled: previousFullWidthModeEnabled,
51
51
  isHeaderRowEnabled: !!pluginConfig.allowHeaderRow,
52
52
  isHeaderColumnEnabled: false,
53
- isTableScalingEnabled: isTableScalingEnabled
53
+ isTableScalingEnabled: isTableScalingEnabled,
54
+ activeTableMenu: {
55
+ type: 'none'
56
+ }
54
57
  }, _defaultTableSelection.defaultHoveredCell), _defaultTableSelection.defaultTableSelection), {}, {
55
58
  getIntl: getIntl
56
59
  }));
@@ -12,11 +12,13 @@ var _getDomRefFromSelection = require("@atlaskit/editor-common/get-dom-ref-from-
12
12
  var _hooks = require("@atlaskit/editor-common/hooks");
13
13
  var _resizer = require("@atlaskit/editor-common/resizer");
14
14
  var _editorSharedStyles = require("@atlaskit/editor-shared-styles");
15
+ var _expValEquals = require("@atlaskit/tmp-editor-statsig/exp-val-equals");
15
16
  var _experiments = require("@atlaskit/tmp-editor-statsig/experiments");
16
17
  var _FloatingContextualButton = _interopRequireDefault(require("./FloatingContextualButton"));
17
18
  var _FloatingContextualMenu = _interopRequireDefault(require("./FloatingContextualMenu"));
18
19
  var _FloatingDragMenu = _interopRequireDefault(require("./FloatingDragMenu"));
19
20
  var _FloatingInsertButton = _interopRequireDefault(require("./FloatingInsertButton"));
21
+ var _FloatingTableMenu = _interopRequireDefault(require("./FloatingTableMenu"));
20
22
  var _FloatingToolbarLabel = require("./FloatingToolbarLabel/FloatingToolbarLabel");
21
23
  var _globalStyles = require("./global-styles");
22
24
  var _SizeSelector = require("./SizeSelector");
@@ -143,7 +145,15 @@ var ContentComponentInternal = function ContentComponentInternal(_ref) {
143
145
  isCommentEditor: options === null || options === void 0 ? void 0 : options.isCommentEditor,
144
146
  api: api,
145
147
  isDragMenuOpen: isDragMenuOpen
146
- }), /*#__PURE__*/_react.default.createElement(_FloatingDragMenu.default, {
148
+ }), (0, _expValEquals.expValEquals)('platform_editor_table_menu_updates', 'isEnabled', true) ? /*#__PURE__*/_react.default.createElement(_FloatingTableMenu.default, {
149
+ api: api,
150
+ boundariesElement: popupsBoundariesElement,
151
+ editorView: editorView,
152
+ mountPoint: popupsMountPoint,
153
+ stickyHeaders: stickyHeader,
154
+ tableWrapper: tableWrapperTarget,
155
+ targetCellPosition: targetCellPosition
156
+ }) : /*#__PURE__*/_react.default.createElement(_FloatingDragMenu.default, {
147
157
  editorView: editorView,
148
158
  mountPoint: popupsMountPoint,
149
159
  boundariesElement: popupsBoundariesElement,
@@ -78,7 +78,7 @@ var FloatingContextualButtonInner = /*#__PURE__*/_react.default.memo(function (p
78
78
  (0, _commands.toggleActiveTableMenu)({
79
79
  type: 'cell',
80
80
  openedBy: 'mouse'
81
- }, currentActiveTableMenu)({
81
+ }, currentActiveTableMenu, api)({
82
82
  tr: tr
83
83
  });
84
84
  return tr;
@@ -113,7 +113,7 @@ var FloatingContextualButtonInner = /*#__PURE__*/_react.default.memo(function (p
113
113
  (0, _commands.toggleActiveTableMenu)({
114
114
  type: 'cell',
115
115
  openedBy: 'keyboard'
116
- }, currentActiveTableMenu)({
116
+ }, currentActiveTableMenu, api)({
117
117
  tr: tr
118
118
  });
119
119
  return tr;
@@ -43,11 +43,11 @@ var CellMenuPopup = exports.CellMenuPopup = function CellMenuPopup(_ref) {
43
43
  var closeCellMenu = (0, _react.useCallback)(function () {
44
44
  var _getPluginState = (0, _pluginFactory.getPluginState)(editorView.state),
45
45
  isCellMenuOpenByKeyboard = _getPluginState.isCellMenuOpenByKeyboard;
46
- api === null || api === void 0 || api.core.actions.execute((0, _commands.closeActiveTableMenu)());
46
+ api === null || api === void 0 || api.core.actions.execute((0, _commands.closeActiveTableMenu)(api));
47
47
  if (isCellMenuOpenByKeyboard) {
48
48
  (0, _commands.setFocusToCellMenu)(false)(editorView.state, editorView.dispatch);
49
49
  }
50
- }, [api === null || api === void 0 ? void 0 : api.core.actions, editorView]);
50
+ }, [api, editorView]);
51
51
  var isEventInsideCellMenu = (0, _react.useCallback)(function (event) {
52
52
  var _popupContentRef$curr;
53
53
  var target = event.target;
@@ -15,6 +15,7 @@ var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits
15
15
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
16
16
  var _react = _interopRequireWildcard(require("react"));
17
17
  var _react2 = require("@emotion/react");
18
+ var _memoizeOne = _interopRequireDefault(require("memoize-one"));
18
19
  var _reactIntl = require("react-intl");
19
20
  var _customSteps = require("@atlaskit/custom-steps");
20
21
  var _analytics = require("@atlaskit/editor-common/analytics");
@@ -59,7 +60,6 @@ function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.
59
60
  * @jsxRuntime classic
60
61
  * @jsx jsx
61
62
  */ /* eslint-disable @typescript-eslint/consistent-type-imports, @atlaskit/ui-styling-standard/use-compiled -- Ignored via go/DSP-18766; jsx required at runtime for @jsxRuntime classic */ // eslint-disable-next-line @atlaskit/design-system/no-emotion-primitives -- to be migrated to @atlaskit/primitives/compiled – go/akcss
62
- var arrowsList = new Set(!(0, _expValEquals.expValEquals)('platform_editor_toolbar_submenu_open_click', 'isEnabled', true) ? ['ArrowRight', 'ArrowLeft'] : ['ArrowRight']);
63
63
  var dropdownMenuSection = {
64
64
  hasSeparator: true
65
65
  };
@@ -67,6 +67,10 @@ var elementBeforeIconStyles = (0, _primitives.xcss)({
67
67
  marginRight: 'space.negative.075',
68
68
  display: 'flex'
69
69
  });
70
+ var getArrowsList = (0, _memoizeOne.default)(function () {
71
+ return new Set(!(0, _expValEquals.expValEquals)('platform_editor_toolbar_submenu_open_click', 'isEnabled', true) ? ['ArrowRight', 'ArrowLeft'] : ['ArrowRight']);
72
+ });
73
+
70
74
  // eslint-disable-next-line @repo/internal/react/no-class-components
71
75
  var ContextualMenu = exports.ContextualMenu = /*#__PURE__*/function (_Component) {
72
76
  function ContextualMenu() {
@@ -569,7 +573,7 @@ var ContextualMenu = exports.ContextualMenu = /*#__PURE__*/function (_Component)
569
573
  var event = payload.event;
570
574
  if (event && event instanceof KeyboardEvent) {
571
575
  if (!_this.state.isSubmenuOpen) {
572
- if (arrowsList.has(event.key)) {
576
+ if (getArrowsList().has(event.key)) {
573
577
  // preventing default behavior for avoiding cursor jump to next/previous table column
574
578
  // when left/right arrow pressed.
575
579
  event.preventDefault();
@@ -6,21 +6,13 @@ Object.defineProperty(exports, "__esModule", {
6
6
  });
7
7
  exports.default = void 0;
8
8
  var _react = _interopRequireDefault(require("react"));
9
- var _hooks = require("@atlaskit/editor-common/hooks");
10
9
  var _ui = require("@atlaskit/editor-common/ui");
11
- var _userIntent = require("@atlaskit/editor-common/user-intent");
12
10
  var _editorSharedStyles = require("@atlaskit/editor-shared-styles");
13
11
  var _cellSelection = require("@atlaskit/editor-tables/cell-selection");
14
12
  var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
15
- var _expValEquals = require("@atlaskit/tmp-editor-statsig/exp-val-equals");
16
13
  var _types = require("../../types");
17
14
  var _consts = require("../consts");
18
- var _keys = require("../TableMenu/column/keys");
19
- var _keys2 = require("../TableMenu/row/keys");
20
- var _consts2 = require("../TableMenu/shared/consts");
21
- var _TableMenu = require("../TableMenu/shared/TableMenu");
22
15
  var _DragMenu = _interopRequireDefault(require("./DragMenu"));
23
- var TABLE_MENU_OFFSET = _consts.dragTableInsertColumnButtonSize + 4;
24
16
  var FloatingDragMenu = function FloatingDragMenu(_ref) {
25
17
  var _getEditorFeatureFlag;
26
18
  var mountPoint = _ref.mountPoint,
@@ -42,23 +34,11 @@ var FloatingDragMenu = function FloatingDragMenu(_ref) {
42
34
  api = _ref.api,
43
35
  isCommentEditor = _ref.isCommentEditor,
44
36
  tableWrapper = _ref.tableWrapper;
45
- var _useSharedPluginState = (0, _hooks.useSharedPluginStateWithSelector)(api, ['table'], function (states) {
46
- var _states$tableState;
47
- return {
48
- activeTableMenu: (_states$tableState = states.tableState) === null || _states$tableState === void 0 ? void 0 : _states$tableState.activeTableMenu
49
- };
50
- }),
51
- activeTableMenu = _useSharedPluginState.activeTableMenu;
52
- var isActiveTableMenuDragMenu = (activeTableMenu === null || activeTableMenu === void 0 ? void 0 : activeTableMenu.type) === 'row' || (activeTableMenu === null || activeTableMenu === void 0 ? void 0 : activeTableMenu.type) === 'column';
53
- var hasActiveTableMenuState = activeTableMenu !== undefined;
54
- var isDragMenuOpen = (0, _expValEquals.expValEquals)('platform_editor_table_menu_updates', 'isEnabled', true) && hasActiveTableMenuState ? isActiveTableMenuDragMenu : isOpen;
55
- var dragMenuDirection = (0, _expValEquals.expValEquals)('platform_editor_table_menu_updates', 'isEnabled', true) && hasActiveTableMenuState ? isActiveTableMenuDragMenu ? activeTableMenu.type : undefined : direction;
56
- var dragMenuIndex = (0, _expValEquals.expValEquals)('platform_editor_table_menu_updates', 'isEnabled', true) && hasActiveTableMenuState ? isActiveTableMenuDragMenu ? activeTableMenu.index : undefined : index;
57
- if (!isDragMenuOpen || !targetCellPosition || editorView.state.doc.nodeSize <= targetCellPosition) {
37
+ if (!isOpen || !targetCellPosition || editorView.state.doc.nodeSize <= targetCellPosition) {
58
38
  return null;
59
39
  }
60
40
  var inStickyMode = (stickyHeaders === null || stickyHeaders === void 0 ? void 0 : stickyHeaders.sticky) || (tableWrapper === null || tableWrapper === void 0 ? void 0 : tableWrapper.classList.contains(_types.TableCssClassName.TABLE_NODE_WRAPPER_NO_OVERFLOW)) && (0, _platformFeatureFlags.fg)('platform_editor_table_sticky_header_patch_7');
61
- var targetHandleRef = dragMenuDirection === 'row' ? document.querySelector('#drag-handle-button-row') : document.querySelector('#drag-handle-button-column');
41
+ var targetHandleRef = direction === 'row' ? document.querySelector('#drag-handle-button-row') : document.querySelector('#drag-handle-button-column');
62
42
  if (!targetHandleRef || !(editorView.state.selection instanceof _cellSelection.CellSelection)) {
63
43
  return null;
64
44
  }
@@ -67,8 +47,8 @@ var FloatingDragMenu = function FloatingDragMenu(_ref) {
67
47
  tableWithFixedColumnWidthsOption = _ref2$tableWithFixedC === void 0 ? false : _ref2$tableWithFixedC;
68
48
  var shouldUseIncreasedScalingPercent = isTableScalingEnabled && (tableWithFixedColumnWidthsOption || isCommentEditor);
69
49
  return /*#__PURE__*/_react.default.createElement(_ui.Popup, {
70
- alignX: dragMenuDirection === 'row' ? 'right' : undefined,
71
- alignY: dragMenuDirection === 'row' ? 'start' : undefined
50
+ alignX: direction === 'row' ? 'right' : undefined,
51
+ alignY: direction === 'row' ? 'start' : undefined
72
52
  // Ignored via go/ees005
73
53
  // eslint-disable-next-line @atlaskit/editor/no-as-casting
74
54
  ,
@@ -76,7 +56,7 @@ var FloatingDragMenu = function FloatingDragMenu(_ref) {
76
56
  mountTo: mountPoint,
77
57
  boundariesElement: boundariesElement,
78
58
  scrollableElement: scrollableElement,
79
- fitWidth: (0, _expValEquals.expValEquals)('platform_editor_table_menu_updates', 'isEnabled', true) ? _consts2.TABLE_MENU_WIDTH : _consts.dragMenuDropdownWidth,
59
+ fitWidth: _consts.dragMenuDropdownWidth,
80
60
  fitHeight: _consts.tablePopupMenuFitHeight
81
61
  // z-index value below is to ensure that this menu is above other floating menu
82
62
  // in table, but below floating dialogs like typeaheads, pickers, etc.
@@ -84,22 +64,14 @@ var FloatingDragMenu = function FloatingDragMenu(_ref) {
84
64
  ,
85
65
  zIndex: inStickyMode ? _editorSharedStyles.akEditorFloatingDialogZIndex : _editorSharedStyles.akEditorFloatingOverlapPanelZIndex,
86
66
  forcePlacement: true,
87
- preventOverflow: (0, _expValEquals.expValEquals)('platform_editor_table_menu_updates', 'isEnabled', true) ? dragMenuDirection === 'row' : undefined,
88
- offset: (0, _expValEquals.expValEquals)('platform_editor_table_menu_updates', 'isEnabled', true) ? [TABLE_MENU_OFFSET, 0] : direction === 'row' ? [-9, 0] : [0, -7],
67
+ offset: direction === 'row' ? [-9, 0] : [0, -7],
89
68
  stick: true
90
- }, (0, _expValEquals.expValEquals)('platform_editor_table_menu_updates', 'isEnabled', true) ? /*#__PURE__*/_react.default.createElement(_userIntent.UserIntentPopupWrapper, {
91
- api: api,
92
- userIntent: "tableDragMenuPopupOpen"
93
- }, /*#__PURE__*/_react.default.createElement(_TableMenu.TableMenu, {
94
- api: api,
95
- editorView: editorView,
96
- surface: dragMenuDirection === 'row' ? _keys2.ROW_MENU : _keys.COLUMN_MENU
97
- })) : /*#__PURE__*/_react.default.createElement(_DragMenu.default, {
69
+ }, /*#__PURE__*/_react.default.createElement(_DragMenu.default, {
98
70
  editorView: editorView,
99
- isOpen: isDragMenuOpen,
71
+ isOpen: isOpen,
100
72
  tableNode: tableNode,
101
- direction: dragMenuDirection,
102
- index: dragMenuIndex,
73
+ direction: direction,
74
+ index: index,
103
75
  target: targetHandleRef || undefined,
104
76
  targetCellPosition: targetCellPosition,
105
77
  getEditorContainerWidth: getEditorContainerWidth,
@@ -0,0 +1,175 @@
1
+ "use strict";
2
+
3
+ var _typeof = require("@babel/runtime/helpers/typeof");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.default = void 0;
8
+ var _react = _interopRequireWildcard(require("react"));
9
+ var _hooks = require("@atlaskit/editor-common/hooks");
10
+ var _ui = require("@atlaskit/editor-common/ui");
11
+ var _uiReact = require("@atlaskit/editor-common/ui-react");
12
+ var _editorSharedStyles = require("@atlaskit/editor-shared-styles");
13
+ var _cellSelection = require("@atlaskit/editor-tables/cell-selection");
14
+ var _toolbarKeyboardNavigationProvider = require("@atlaskit/editor-toolbar/toolbar-keyboard-navigation-provider");
15
+ var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
16
+ var _commands = require("../../pm-plugins/commands");
17
+ var _types = require("../../types");
18
+ var _consts = require("../consts");
19
+ var _keys = require("../TableMenu/column/keys");
20
+ var _keys2 = require("../TableMenu/row/keys");
21
+ var _consts2 = require("../TableMenu/shared/consts");
22
+ var _TableMenu = require("../TableMenu/shared/TableMenu");
23
+ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
24
+ var PopupWithListeners = (0, _uiReact.withReactEditorViewOuterListeners)(_ui.Popup);
25
+
26
+ // Defer drag-handle clicks to the drag handle's own toggle/select handlers — those own
27
+ // the open/switch/close semantics for moving between rows/columns.
28
+ var DRAG_HANDLE_CONTROLS_SELECTOR = ".".concat(_types.TableCssClassName.DRAG_ROW_CONTROLS, ", .").concat(_types.TableCssClassName.DRAG_COLUMN_CONTROLS);
29
+ var NESTED_DROPDOWN_SELECTOR = '[data-toolbar-nested-dropdown-menu]';
30
+
31
+ // Marks the menu subtree that ToolbarKeyboardNavigationProvider scopes its
32
+ // keyboard handling to. The provider only reacts to events whose target sits
33
+ // inside this selector.
34
+ var TABLE_MENU_NAV_SELECTOR = '[data-table-drag-menu-nav="true"]';
35
+ var TABLE_MENU_OFFSET = _consts.dragTableInsertColumnButtonSize + 4;
36
+ var POPUP_OFFSET = [TABLE_MENU_OFFSET, 0];
37
+
38
+ /**
39
+ * Row and column menu for table.
40
+ */
41
+ var FloatingTableMenu = function FloatingTableMenu(_ref) {
42
+ var api = _ref.api,
43
+ boundariesElement = _ref.boundariesElement,
44
+ editorView = _ref.editorView,
45
+ mountPoint = _ref.mountPoint,
46
+ scrollableElement = _ref.scrollableElement,
47
+ stickyHeaders = _ref.stickyHeaders,
48
+ tableWrapper = _ref.tableWrapper,
49
+ targetCellPosition = _ref.targetCellPosition;
50
+ var _useSharedPluginState = (0, _hooks.useSharedPluginStateWithSelector)(api, ['table'], function (states) {
51
+ var _states$tableState;
52
+ return {
53
+ activeTableMenu: (_states$tableState = states.tableState) === null || _states$tableState === void 0 ? void 0 : _states$tableState.activeTableMenu
54
+ };
55
+ }),
56
+ activeTableMenu = _useSharedPluginState.activeTableMenu;
57
+ var isDragMenuOpen = (activeTableMenu === null || activeTableMenu === void 0 ? void 0 : activeTableMenu.type) === 'row' || (activeTableMenu === null || activeTableMenu === void 0 ? void 0 : activeTableMenu.type) === 'column';
58
+ var dragMenuDirection = isDragMenuOpen ? activeTableMenu.type : undefined;
59
+ var isOpenedByKeyboard = isDragMenuOpen && activeTableMenu.openedBy === 'keyboard';
60
+ var popupContentRef = (0, _react.useRef)(null);
61
+ var setOutsideClickTargetRef = (0, _react.useContext)(_uiReact.OutsideClickTargetRefContext);
62
+ var navWrapperRef = (0, _react.useRef)(null);
63
+ var handlePopupRef = (0, _react.useCallback)(function (el) {
64
+ popupContentRef.current = el;
65
+ setOutsideClickTargetRef === null || setOutsideClickTargetRef === void 0 || setOutsideClickTargetRef(el);
66
+ }, [setOutsideClickTargetRef]);
67
+ var dismiss = (0, _react.useCallback)(function () {
68
+ api === null || api === void 0 || api.core.actions.execute((0, _commands.closeActiveTableMenu)(api));
69
+ }, [api]);
70
+ var returnFocusToDragHandle = (0, _react.useCallback)(function () {
71
+ // Match legacy DragMenu's closeMenu('handle') behaviour.
72
+ var handleId = dragMenuDirection === 'row' ? '#drag-handle-button-row' : '#drag-handle-button-column';
73
+ var handle = document.querySelector(handleId);
74
+ handle === null || handle === void 0 || handle.focus();
75
+ }, [dragMenuDirection]);
76
+ var focusFirstMenuItem = (0, _react.useCallback)(function () {
77
+ var root = navWrapperRef.current;
78
+ if (!root) {
79
+ return;
80
+ }
81
+ var firstItem = root.querySelector('[role="menuitem"]:not([disabled]), [role="menuitemcheckbox"]:not([disabled]), [role="menuitemradio"]:not([disabled]), button:not([disabled])');
82
+ firstItem === null || firstItem === void 0 || firstItem.focus();
83
+ }, []);
84
+
85
+ // Focus the first menu item when the menu opens via keyboard (Enter/Space on
86
+ // the drag handle). Mouse-opened menus leave focus where the user clicked.
87
+ var setNavWrapperRef = (0, _react.useCallback)(function (el) {
88
+ navWrapperRef.current = el;
89
+ if (el && isOpenedByKeyboard) {
90
+ // rAF allows the popup to finish positioning before focusing.
91
+ requestAnimationFrame(function () {
92
+ focusFirstMenuItem();
93
+ });
94
+ }
95
+ }, [focusFirstMenuItem, isOpenedByKeyboard]);
96
+ var handleKeyboardFocus = (0, _react.useCallback)(function (_event) {
97
+ focusFirstMenuItem();
98
+ }, [focusFirstMenuItem]);
99
+ var handleEscape = (0, _react.useCallback)(function (event) {
100
+ event.preventDefault();
101
+ event.stopPropagation();
102
+ dismiss();
103
+ returnFocusToDragHandle();
104
+ }, [dismiss, returnFocusToDragHandle]);
105
+
106
+ // Memoize the editor DOM reference so the provider doesn't re-bind listeners
107
+ // on every render (the provider depends on `dom` in its effect's deps).
108
+ var editorDom = (0, _react.useMemo)(function () {
109
+ return editorView.dom instanceof HTMLElement ? editorView.dom : undefined;
110
+ }, [editorView.dom]);
111
+
112
+ // The drag menu is opened by interacting with the drag handle directly, not
113
+ // by a global page-level shortcut.
114
+ var isShortcutToFocusToolbar = (0, _react.useCallback)(function () {
115
+ return false;
116
+ }, []);
117
+ var handleClickOutside = (0, _react.useCallback)(function (event) {
118
+ var _popupContentRef$curr;
119
+ var target = event.target;
120
+ // Ignore clicks handled by this popup, drag handles, or nested portalled
121
+ // dropdowns so those controls can manage their own open/close behavior.
122
+ if (target instanceof Node && (_popupContentRef$curr = popupContentRef.current) !== null && _popupContentRef$curr !== void 0 && _popupContentRef$curr.contains(target) || target instanceof Element && (target.closest(DRAG_HANDLE_CONTROLS_SELECTOR) || target.closest(NESTED_DROPDOWN_SELECTOR))) {
123
+ return;
124
+ }
125
+ dismiss();
126
+ }, [dismiss]);
127
+ if (!isDragMenuOpen || !targetCellPosition || editorView.state.doc.nodeSize <= targetCellPosition) {
128
+ return null;
129
+ }
130
+ var inStickyMode = (stickyHeaders === null || stickyHeaders === void 0 ? void 0 : stickyHeaders.sticky) || (tableWrapper === null || tableWrapper === void 0 ? void 0 : tableWrapper.classList.contains(_types.TableCssClassName.TABLE_NODE_WRAPPER_NO_OVERFLOW)) && (0, _platformFeatureFlags.fg)('platform_editor_table_sticky_header_patch_7');
131
+ var targetHandleRef = dragMenuDirection === 'row' ? document.querySelector('#drag-handle-button-row') : document.querySelector('#drag-handle-button-column');
132
+ if (!targetHandleRef || !(editorView.state.selection instanceof _cellSelection.CellSelection)) {
133
+ return null;
134
+ }
135
+ return /*#__PURE__*/_react.default.createElement(PopupWithListeners, {
136
+ alignX: dragMenuDirection === 'row' ? 'right' : undefined,
137
+ alignY: dragMenuDirection === 'row' ? 'start' : undefined
138
+ // Ignored via go/ees005
139
+ // eslint-disable-next-line @atlaskit/editor/no-as-casting
140
+ ,
141
+ target: targetHandleRef,
142
+ mountTo: mountPoint,
143
+ boundariesElement: boundariesElement,
144
+ scrollableElement: scrollableElement,
145
+ fitWidth: _consts2.TABLE_MENU_WIDTH,
146
+ fitHeight: _consts.tablePopupMenuFitHeight
147
+ // z-index value below is to ensure that this menu is above other floating menu
148
+ // in table, but below floating dialogs like typeaheads, pickers, etc.
149
+ // In sticky mode, we want to show the menu above the sticky header
150
+ ,
151
+ zIndex: inStickyMode ? _editorSharedStyles.akEditorFloatingDialogZIndex : _editorSharedStyles.akEditorFloatingOverlapPanelZIndex,
152
+ forcePlacement: true,
153
+ preventOverflow: dragMenuDirection === 'row',
154
+ offset: POPUP_OFFSET,
155
+ stick: true,
156
+ handleClickOutside: handleClickOutside
157
+ }, /*#__PURE__*/_react.default.createElement("div", {
158
+ ref: handlePopupRef
159
+ }, /*#__PURE__*/_react.default.createElement(_toolbarKeyboardNavigationProvider.ToolbarKeyboardNavigationProvider, {
160
+ childComponentSelector: TABLE_MENU_NAV_SELECTOR,
161
+ dom: editorDom,
162
+ isShortcutToFocusToolbar: isShortcutToFocusToolbar,
163
+ handleFocus: handleKeyboardFocus,
164
+ handleEscape: handleEscape
165
+ }, /*#__PURE__*/_react.default.createElement("div", {
166
+ "data-table-drag-menu-nav": "true",
167
+ ref: setNavWrapperRef
168
+ }, /*#__PURE__*/_react.default.createElement(_TableMenu.TableMenu, {
169
+ api: api,
170
+ editorView: editorView,
171
+ surface: dragMenuDirection === 'row' ? _keys2.ROW_MENU : _keys.COLUMN_MENU
172
+ })))));
173
+ };
174
+ FloatingTableMenu.displayName = 'FloatingTableMenu';
175
+ var _default = exports.default = FloatingTableMenu;