@atlaskit/editor-plugin-table 22.4.15 → 22.4.16

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 (150) hide show
  1. package/CHANGELOG.md +9 -0
  2. package/dist/cjs/pm-plugins/commands/active-table-menu.js +51 -0
  3. package/dist/cjs/pm-plugins/commands/commands-with-analytics.js +42 -10
  4. package/dist/cjs/pm-plugins/commands/index.js +13 -0
  5. package/dist/cjs/pm-plugins/drag-and-drop/commands-with-analytics.js +2 -0
  6. package/dist/cjs/pm-plugins/drag-and-drop/plugin.js +4 -0
  7. package/dist/cjs/pm-plugins/handlers.js +8 -1
  8. package/dist/cjs/pm-plugins/reducer.js +2 -0
  9. package/dist/cjs/tablePlugin.js +1 -0
  10. package/dist/cjs/ui/ContentComponent.js +1 -1
  11. package/dist/cjs/ui/FloatingContextualButton/index.js +28 -9
  12. package/dist/cjs/ui/FloatingContextualMenu/CellMenuPopup.js +58 -73
  13. package/dist/cjs/ui/FloatingContextualMenu/index.js +26 -12
  14. package/dist/cjs/ui/FloatingDragMenu/index.js +21 -8
  15. package/dist/cjs/ui/TableFloatingColumnControls/ColumnControls/index.js +13 -5
  16. package/dist/cjs/ui/TableFloatingControls/RowControls/DragControls.js +14 -5
  17. package/dist/cjs/ui/TableMenu/cell/getCellMenuComponents.js +8 -3
  18. package/dist/cjs/ui/TableMenu/cell/items/MergeCellsItem.js +16 -1
  19. package/dist/cjs/ui/TableMenu/cell/items/SplitCellItem.js +16 -1
  20. package/dist/cjs/ui/TableMenu/column/items/AddColumnLeftItem.js +4 -4
  21. package/dist/cjs/ui/TableMenu/column/items/AddColumnRightItem.js +4 -4
  22. package/dist/cjs/ui/TableMenu/column/items/DeleteColumnItem.js +2 -3
  23. package/dist/cjs/ui/TableMenu/column/items/DistributeColumnsItem.js +2 -3
  24. package/dist/cjs/ui/TableMenu/column/items/HeaderColumnToggleItem.js +2 -3
  25. package/dist/cjs/ui/TableMenu/column/items/MoveColumnLeftItem.js +2 -3
  26. package/dist/cjs/ui/TableMenu/column/items/MoveColumnRightItem.js +2 -3
  27. package/dist/cjs/ui/TableMenu/column/items/SortDecreasingItem.js +2 -3
  28. package/dist/cjs/ui/TableMenu/column/items/SortIncreasingItem.js +2 -3
  29. package/dist/cjs/ui/TableMenu/row/items/AddRowAboveItem.js +4 -4
  30. package/dist/cjs/ui/TableMenu/row/items/AddRowBelowItem.js +4 -4
  31. package/dist/cjs/ui/TableMenu/row/items/DeleteRowItem.js +2 -3
  32. package/dist/cjs/ui/TableMenu/row/items/HeaderRowToggleItem.js +2 -3
  33. package/dist/cjs/ui/TableMenu/row/items/MoveRowDownItem.js +2 -3
  34. package/dist/cjs/ui/TableMenu/row/items/MoveRowUpItem.js +2 -3
  35. package/dist/cjs/ui/TableMenu/row/items/NumberedRowsToggleItem.js +4 -3
  36. package/dist/cjs/ui/TableMenu/shared/TableMenu.compiled.css +0 -2
  37. package/dist/cjs/ui/TableMenu/shared/TableMenu.js +8 -9
  38. package/dist/cjs/ui/TableMenu/shared/getSharedItems.js +3 -1
  39. package/dist/cjs/ui/TableMenu/shared/getTableMenuComponents.js +1 -1
  40. package/dist/cjs/ui/TableMenu/shared/items/BackgroundColorItem.js +30 -4
  41. package/dist/cjs/ui/TableMenu/shared/items/ClearCellsItem.js +4 -3
  42. package/dist/es2019/pm-plugins/commands/active-table-menu.js +39 -0
  43. package/dist/es2019/pm-plugins/commands/commands-with-analytics.js +31 -2
  44. package/dist/es2019/pm-plugins/commands/index.js +1 -0
  45. package/dist/es2019/pm-plugins/drag-and-drop/commands-with-analytics.js +2 -0
  46. package/dist/es2019/pm-plugins/drag-and-drop/plugin.js +4 -0
  47. package/dist/es2019/pm-plugins/handlers.js +8 -1
  48. package/dist/es2019/pm-plugins/reducer.js +5 -0
  49. package/dist/es2019/tablePlugin.js +1 -0
  50. package/dist/es2019/ui/ContentComponent.js +1 -1
  51. package/dist/es2019/ui/FloatingContextualButton/index.js +29 -9
  52. package/dist/es2019/ui/FloatingContextualMenu/CellMenuPopup.js +60 -77
  53. package/dist/es2019/ui/FloatingContextualMenu/index.js +27 -12
  54. package/dist/es2019/ui/FloatingDragMenu/index.js +22 -8
  55. package/dist/es2019/ui/TableFloatingColumnControls/ColumnControls/index.js +12 -4
  56. package/dist/es2019/ui/TableFloatingControls/RowControls/DragControls.js +13 -4
  57. package/dist/es2019/ui/TableMenu/cell/getCellMenuComponents.js +9 -3
  58. package/dist/es2019/ui/TableMenu/cell/items/MergeCellsItem.js +18 -2
  59. package/dist/es2019/ui/TableMenu/cell/items/SplitCellItem.js +18 -2
  60. package/dist/es2019/ui/TableMenu/column/items/AddColumnLeftItem.js +3 -3
  61. package/dist/es2019/ui/TableMenu/column/items/AddColumnRightItem.js +3 -3
  62. package/dist/es2019/ui/TableMenu/column/items/DeleteColumnItem.js +2 -3
  63. package/dist/es2019/ui/TableMenu/column/items/DistributeColumnsItem.js +2 -3
  64. package/dist/es2019/ui/TableMenu/column/items/HeaderColumnToggleItem.js +2 -3
  65. package/dist/es2019/ui/TableMenu/column/items/MoveColumnLeftItem.js +2 -3
  66. package/dist/es2019/ui/TableMenu/column/items/MoveColumnRightItem.js +2 -3
  67. package/dist/es2019/ui/TableMenu/column/items/SortDecreasingItem.js +2 -3
  68. package/dist/es2019/ui/TableMenu/column/items/SortIncreasingItem.js +2 -3
  69. package/dist/es2019/ui/TableMenu/row/items/AddRowAboveItem.js +3 -3
  70. package/dist/es2019/ui/TableMenu/row/items/AddRowBelowItem.js +3 -3
  71. package/dist/es2019/ui/TableMenu/row/items/DeleteRowItem.js +2 -3
  72. package/dist/es2019/ui/TableMenu/row/items/HeaderRowToggleItem.js +2 -3
  73. package/dist/es2019/ui/TableMenu/row/items/MoveRowDownItem.js +2 -3
  74. package/dist/es2019/ui/TableMenu/row/items/MoveRowUpItem.js +2 -3
  75. package/dist/es2019/ui/TableMenu/row/items/NumberedRowsToggleItem.js +3 -2
  76. package/dist/es2019/ui/TableMenu/shared/TableMenu.compiled.css +0 -2
  77. package/dist/es2019/ui/TableMenu/shared/TableMenu.js +8 -9
  78. package/dist/es2019/ui/TableMenu/shared/getSharedItems.js +3 -1
  79. package/dist/es2019/ui/TableMenu/shared/getTableMenuComponents.js +1 -1
  80. package/dist/es2019/ui/TableMenu/shared/items/BackgroundColorItem.js +33 -4
  81. package/dist/es2019/ui/TableMenu/shared/items/ClearCellsItem.js +4 -3
  82. package/dist/esm/pm-plugins/commands/active-table-menu.js +45 -0
  83. package/dist/esm/pm-plugins/commands/commands-with-analytics.js +41 -10
  84. package/dist/esm/pm-plugins/commands/index.js +1 -0
  85. package/dist/esm/pm-plugins/drag-and-drop/commands-with-analytics.js +2 -0
  86. package/dist/esm/pm-plugins/drag-and-drop/plugin.js +4 -0
  87. package/dist/esm/pm-plugins/handlers.js +8 -1
  88. package/dist/esm/pm-plugins/reducer.js +2 -0
  89. package/dist/esm/tablePlugin.js +1 -0
  90. package/dist/esm/ui/ContentComponent.js +1 -1
  91. package/dist/esm/ui/FloatingContextualButton/index.js +29 -10
  92. package/dist/esm/ui/FloatingContextualMenu/CellMenuPopup.js +60 -75
  93. package/dist/esm/ui/FloatingContextualMenu/index.js +26 -12
  94. package/dist/esm/ui/FloatingDragMenu/index.js +21 -8
  95. package/dist/esm/ui/TableFloatingColumnControls/ColumnControls/index.js +12 -4
  96. package/dist/esm/ui/TableFloatingControls/RowControls/DragControls.js +13 -4
  97. package/dist/esm/ui/TableMenu/cell/getCellMenuComponents.js +8 -3
  98. package/dist/esm/ui/TableMenu/cell/items/MergeCellsItem.js +16 -2
  99. package/dist/esm/ui/TableMenu/cell/items/SplitCellItem.js +16 -2
  100. package/dist/esm/ui/TableMenu/column/items/AddColumnLeftItem.js +4 -4
  101. package/dist/esm/ui/TableMenu/column/items/AddColumnRightItem.js +4 -4
  102. package/dist/esm/ui/TableMenu/column/items/DeleteColumnItem.js +2 -3
  103. package/dist/esm/ui/TableMenu/column/items/DistributeColumnsItem.js +2 -3
  104. package/dist/esm/ui/TableMenu/column/items/HeaderColumnToggleItem.js +2 -3
  105. package/dist/esm/ui/TableMenu/column/items/MoveColumnLeftItem.js +2 -3
  106. package/dist/esm/ui/TableMenu/column/items/MoveColumnRightItem.js +2 -3
  107. package/dist/esm/ui/TableMenu/column/items/SortDecreasingItem.js +2 -3
  108. package/dist/esm/ui/TableMenu/column/items/SortIncreasingItem.js +2 -3
  109. package/dist/esm/ui/TableMenu/row/items/AddRowAboveItem.js +4 -4
  110. package/dist/esm/ui/TableMenu/row/items/AddRowBelowItem.js +4 -4
  111. package/dist/esm/ui/TableMenu/row/items/DeleteRowItem.js +2 -3
  112. package/dist/esm/ui/TableMenu/row/items/HeaderRowToggleItem.js +2 -3
  113. package/dist/esm/ui/TableMenu/row/items/MoveRowDownItem.js +2 -3
  114. package/dist/esm/ui/TableMenu/row/items/MoveRowUpItem.js +2 -3
  115. package/dist/esm/ui/TableMenu/row/items/NumberedRowsToggleItem.js +4 -3
  116. package/dist/esm/ui/TableMenu/shared/TableMenu.compiled.css +0 -2
  117. package/dist/esm/ui/TableMenu/shared/TableMenu.js +8 -9
  118. package/dist/esm/ui/TableMenu/shared/getSharedItems.js +3 -1
  119. package/dist/esm/ui/TableMenu/shared/getTableMenuComponents.js +1 -1
  120. package/dist/esm/ui/TableMenu/shared/items/BackgroundColorItem.js +30 -4
  121. package/dist/esm/ui/TableMenu/shared/items/ClearCellsItem.js +4 -3
  122. package/dist/types/entry-points/types.d.ts +1 -1
  123. package/dist/types/pm-plugins/commands/active-table-menu.d.ts +6 -0
  124. package/dist/types/pm-plugins/commands/commands-with-analytics.d.ts +3 -1
  125. package/dist/types/pm-plugins/commands/index.d.ts +1 -0
  126. package/dist/types/types/index.d.ts +21 -1
  127. package/dist/types/ui/FloatingContextualButton/index.d.ts +2 -0
  128. package/dist/types/ui/FloatingContextualMenu/CellMenuPopup.d.ts +7 -5
  129. package/dist/types/ui/FloatingContextualMenu/index.d.ts +0 -1
  130. package/dist/types/ui/TableMenu/cell/getCellMenuComponents.d.ts +2 -1
  131. package/dist/types/ui/TableMenu/cell/items/MergeCellsItem.d.ts +2 -1
  132. package/dist/types/ui/TableMenu/cell/items/SplitCellItem.d.ts +2 -1
  133. package/dist/types/ui/TableMenu/column/items/DistributeColumnsItem.d.ts +1 -1
  134. package/dist/types/ui/TableMenu/shared/TableMenuContext.d.ts +2 -0
  135. package/dist/types/ui/TableMenu/shared/items/BackgroundColorItem.d.ts +2 -1
  136. package/dist/types-ts4.5/entry-points/types.d.ts +1 -1
  137. package/dist/types-ts4.5/pm-plugins/commands/active-table-menu.d.ts +6 -0
  138. package/dist/types-ts4.5/pm-plugins/commands/commands-with-analytics.d.ts +3 -1
  139. package/dist/types-ts4.5/pm-plugins/commands/index.d.ts +1 -0
  140. package/dist/types-ts4.5/types/index.d.ts +21 -1
  141. package/dist/types-ts4.5/ui/FloatingContextualButton/index.d.ts +2 -0
  142. package/dist/types-ts4.5/ui/FloatingContextualMenu/CellMenuPopup.d.ts +7 -5
  143. package/dist/types-ts4.5/ui/FloatingContextualMenu/index.d.ts +0 -1
  144. package/dist/types-ts4.5/ui/TableMenu/cell/getCellMenuComponents.d.ts +2 -1
  145. package/dist/types-ts4.5/ui/TableMenu/cell/items/MergeCellsItem.d.ts +2 -1
  146. package/dist/types-ts4.5/ui/TableMenu/cell/items/SplitCellItem.d.ts +2 -1
  147. package/dist/types-ts4.5/ui/TableMenu/column/items/DistributeColumnsItem.d.ts +1 -1
  148. package/dist/types-ts4.5/ui/TableMenu/shared/TableMenuContext.d.ts +2 -0
  149. package/dist/types-ts4.5/ui/TableMenu/shared/items/BackgroundColorItem.d.ts +2 -1
  150. package/package.json +2 -2
package/CHANGELOG.md CHANGED
@@ -1,5 +1,14 @@
1
1
  # @atlaskit/editor-plugin-table
2
2
 
3
+ ## 22.4.16
4
+
5
+ ### Patch Changes
6
+
7
+ - [`6291bc0777dc2`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/6291bc0777dc2) -
8
+ Converge updated table menu state behind the table menu experiment
9
+
10
+ Make table cell menu items interactive
11
+
3
12
  ## 22.4.15
4
13
 
5
14
  ### Patch Changes
@@ -0,0 +1,51 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.toggleActiveTableMenu = exports.closeActiveTableMenu = void 0;
7
+ var _pluginFactory = require("../plugin-factory");
8
+ var closeActiveTableMenu = exports.closeActiveTableMenu = function closeActiveTableMenu() {
9
+ return (0, _pluginFactory.createCommand)(function (state) {
10
+ var _getPluginState = (0, _pluginFactory.getPluginState)(state),
11
+ activeTableMenu = _getPluginState.activeTableMenu;
12
+ if (!activeTableMenu || activeTableMenu.type === 'none') {
13
+ return false;
14
+ }
15
+ return {
16
+ type: 'SET_ACTIVE_TABLE_MENU',
17
+ data: {
18
+ activeTableMenu: {
19
+ type: 'none'
20
+ }
21
+ }
22
+ };
23
+ }, function (tr) {
24
+ return tr.setMeta('addToHistory', false);
25
+ });
26
+ };
27
+ var isSameActiveTableMenu = function isSameActiveTableMenu(current, next) {
28
+ if (!current || current.type !== next.type) {
29
+ return false;
30
+ }
31
+ if (current.type === 'row' || current.type === 'column') {
32
+ return next.type === current.type && current.index === next.index;
33
+ }
34
+ return true;
35
+ };
36
+ var toggleActiveTableMenu = exports.toggleActiveTableMenu = function toggleActiveTableMenu(activeTableMenu) {
37
+ return (0, _pluginFactory.createCommand)(function (state) {
38
+ var _getPluginState2 = (0, _pluginFactory.getPluginState)(state),
39
+ currentActiveTableMenu = _getPluginState2.activeTableMenu;
40
+ return {
41
+ type: 'SET_ACTIVE_TABLE_MENU',
42
+ data: {
43
+ activeTableMenu: isSameActiveTableMenu(currentActiveTableMenu, activeTableMenu) ? {
44
+ type: 'none'
45
+ } : activeTableMenu
46
+ }
47
+ };
48
+ }, function (tr) {
49
+ return tr.setMeta('addToHistory', false);
50
+ });
51
+ };
@@ -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.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.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;
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,6 +18,7 @@ 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");
21
22
  var _clear = require("./clear");
22
23
  var _collapse = require("./collapse");
23
24
  var _columnResize = require("./column-resize");
@@ -30,7 +31,38 @@ var _splitCell = require("./split-cell");
30
31
  var _toggle = require("./toggle");
31
32
  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; }
32
33
  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; }
33
- // #region Analytics wrappers
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
+ (0, _activeTableMenu.toggleActiveTableMenu)({
57
+ type: direction,
58
+ index: index,
59
+ openedBy: trigger
60
+ })(state, dispatch);
61
+ }
62
+ return true;
63
+ });
64
+ };
65
+ };
34
66
  var emptyMultipleCellsWithAnalytics = exports.emptyMultipleCellsWithAnalytics = function emptyMultipleCellsWithAnalytics(editorAnalyticsAPI) {
35
67
  return function (inputMethod, targetCellPosition) {
36
68
  return (0, _analytics2.withEditorAnalyticsAPI)(function (_ref) {
@@ -195,8 +227,8 @@ var changeColumnWidthByStepWithAnalytics = exports.changeColumnWidthByStepWithAn
195
227
  table = _getSelectedTableInfo2.table,
196
228
  totalRowCount = _getSelectedTableInfo2.totalRowCount,
197
229
  totalColumnCount = _getSelectedTableInfo2.totalColumnCount;
198
- var _getPluginState = (0, _pluginFactory.getPluginState)(state),
199
- colIndex = _getPluginState.hoveredCell.colIndex;
230
+ var _getPluginState2 = (0, _pluginFactory.getPluginState)(state),
231
+ colIndex = _getPluginState2.hoveredCell.colIndex;
200
232
  return {
201
233
  action: _analytics.TABLE_ACTION.COLUMN_RESIZED,
202
234
  actionSubject: _analytics.ACTION_SUBJECT.TABLE,
@@ -316,8 +348,8 @@ var deleteSelectedRowsOrColumnsWithAnalyticsViaShortcut = exports.deleteSelected
316
348
  }
317
349
  var selectionType = (0, _misc.getTableSelectionType)(selection);
318
350
  if (selectionType === 'row') {
319
- var _getPluginState2 = (0, _pluginFactory.getPluginState)(state),
320
- pluginConfig = _getPluginState2.pluginConfig;
351
+ var _getPluginState3 = (0, _pluginFactory.getPluginState)(state),
352
+ pluginConfig = _getPluginState3.pluginConfig;
321
353
  var isHeaderRowRequired = pluginConfig.isHeaderRowRequired || false;
322
354
  return deleteRowsWithAnalytics(editorAnalyticsAPI)(_analytics.INPUT_METHOD.SHORTCUT, rect, isHeaderRowRequired)(state, dispatch);
323
355
  } else if (selectionType === 'column') {
@@ -361,8 +393,8 @@ var toggleHeaderRowWithAnalytics = exports.toggleHeaderRowWithAnalytics = functi
361
393
  var _getSelectedTableInfo7 = (0, _analytics2.getSelectedTableInfo)(state.selection),
362
394
  totalRowCount = _getSelectedTableInfo7.totalRowCount,
363
395
  totalColumnCount = _getSelectedTableInfo7.totalColumnCount;
364
- var _getPluginState3 = (0, _pluginFactory.getPluginState)(state),
365
- isHeaderRowEnabled = _getPluginState3.isHeaderRowEnabled;
396
+ var _getPluginState4 = (0, _pluginFactory.getPluginState)(state),
397
+ isHeaderRowEnabled = _getPluginState4.isHeaderRowEnabled;
366
398
  return {
367
399
  action: _analytics.TABLE_ACTION.TOGGLED_HEADER_ROW,
368
400
  actionSubject: _analytics.ACTION_SUBJECT.TABLE,
@@ -381,8 +413,8 @@ var toggleHeaderColumnWithAnalytics = exports.toggleHeaderColumnWithAnalytics =
381
413
  var _getSelectedTableInfo8 = (0, _analytics2.getSelectedTableInfo)(state.selection),
382
414
  totalRowCount = _getSelectedTableInfo8.totalRowCount,
383
415
  totalColumnCount = _getSelectedTableInfo8.totalColumnCount;
384
- var _getPluginState4 = (0, _pluginFactory.getPluginState)(state),
385
- isHeaderColumnEnabled = _getPluginState4.isHeaderColumnEnabled;
416
+ var _getPluginState5 = (0, _pluginFactory.getPluginState)(state),
417
+ isHeaderColumnEnabled = _getPluginState5.isHeaderColumnEnabled;
386
418
  return {
387
419
  action: _analytics.TABLE_ACTION.TOGGLED_HEADER_COLUMN,
388
420
  actionSubject: _analytics.ACTION_SUBJECT.TABLE,
@@ -33,6 +33,12 @@ Object.defineProperty(exports, "clearMultipleCells", {
33
33
  return _clear.clearMultipleCells;
34
34
  }
35
35
  });
36
+ Object.defineProperty(exports, "closeActiveTableMenu", {
37
+ enumerable: true,
38
+ get: function get() {
39
+ return _activeTableMenu.closeActiveTableMenu;
40
+ }
41
+ });
36
42
  Object.defineProperty(exports, "convertFirstRowToHeader", {
37
43
  enumerable: true,
38
44
  get: function get() {
@@ -219,6 +225,12 @@ Object.defineProperty(exports, "sortByColumn", {
219
225
  return _sort.sortByColumn;
220
226
  }
221
227
  });
228
+ Object.defineProperty(exports, "toggleActiveTableMenu", {
229
+ enumerable: true,
230
+ get: function get() {
231
+ return _activeTableMenu.toggleActiveTableMenu;
232
+ }
233
+ });
222
234
  Object.defineProperty(exports, "toggleContextualMenu", {
223
235
  enumerable: true,
224
236
  get: function get() {
@@ -270,6 +282,7 @@ Object.defineProperty(exports, "updateWidthToWidest", {
270
282
  var _hover = require("./hover");
271
283
  var _insert = require("./insert");
272
284
  var _toggle = require("./toggle");
285
+ var _activeTableMenu = require("./active-table-menu");
273
286
  var _clear = require("./clear");
274
287
  var _misc = require("./misc");
275
288
  var _sort = require("./sort");
@@ -153,6 +153,8 @@ var cloneSourceWithAnalytics = exports.cloneSourceWithAnalytics = function clone
153
153
  });
154
154
  };
155
155
  };
156
+
157
+ // remove when 'platform_editor_table_menu_updates' is cleaned up
156
158
  var toggleDragMenuWithAnalytics = exports.toggleDragMenuWithAnalytics = function toggleDragMenuWithAnalytics(editorAnalyticsAPI) {
157
159
  return function (isDragMenuOpen, direction, index) {
158
160
  var trigger = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 'mouse';
@@ -14,6 +14,7 @@ var _element = require("@atlaskit/pragmatic-drag-and-drop-auto-scroll/element");
14
14
  var _combine = require("@atlaskit/pragmatic-drag-and-drop/combine");
15
15
  var _adapter = require("@atlaskit/pragmatic-drag-and-drop/element/adapter");
16
16
  var _expValEquals = require("@atlaskit/tmp-editor-statsig/exp-val-equals");
17
+ var _activeTableMenu = require("../commands/active-table-menu");
17
18
  var _pluginFactory = require("../plugin-factory");
18
19
  var _pluginKey = require("../plugin-key");
19
20
  var _colgroup = require("../table-resizing/utils/colgroup");
@@ -93,6 +94,9 @@ var destroyFn = function destroyFn(editorView, editorAnalyticsAPI, isTableScalin
93
94
  (_insm$session3 = _insm.insm.session) === null || _insm$session3 === void 0 || _insm$session3.startFeature('tableDragAndDrop');
94
95
  }
95
96
  (0, _commands.toggleDragMenu)(false)(editorView.state, editorView.dispatch);
97
+ if ((0, _expValEquals.expValEquals)('platform_editor_table_menu_updates', 'isEnabled', true)) {
98
+ (0, _activeTableMenu.closeActiveTableMenu)()(editorView.state, editorView.dispatch);
99
+ }
96
100
  api === null || api === void 0 || api.core.actions.execute(api === null || api === void 0 || (_api$userIntent = api.userIntent) === null || _api$userIntent === void 0 ? void 0 : _api$userIntent.commands.setCurrentUserIntent('dragging'));
97
101
  },
98
102
  onDrag: function onDrag(event) {
@@ -10,6 +10,7 @@ var _customSteps = require("@atlaskit/custom-steps");
10
10
  var _utils = require("@atlaskit/editor-common/utils");
11
11
  var _utils2 = require("@atlaskit/editor-prosemirror/utils");
12
12
  var _utils3 = require("@atlaskit/editor-tables/utils");
13
+ var _expValEquals = require("@atlaskit/tmp-editor-statsig/exp-val-equals");
13
14
  var _defaultTableSelection = require("./default-table-selection");
14
15
  var _pluginKey = require("./table-resizing/plugin-key");
15
16
  var _collapse = require("./utils/collapse");
@@ -47,8 +48,14 @@ var updateTargetCellPosition = function updateTargetCellPosition(_ref) {
47
48
  if (pluginState.targetCellPosition === targetCellPosition) {
48
49
  return pluginState;
49
50
  }
51
+
52
+ // The updated table menu is anchored to the current target cell. When selection moves
53
+ // to another cell, close the active menu so render state cannot point at a stale anchor.
50
54
  return _objectSpread(_objectSpread({}, pluginState), {}, {
51
- targetCellPosition: targetCellPosition
55
+ targetCellPosition: targetCellPosition,
56
+ activeTableMenu: pluginState.activeTableMenu != null && pluginState.activeTableMenu.type !== 'none' && (0, _expValEquals.expValEquals)('platform_editor_table_menu_updates', 'isEnabled', true) ? {
57
+ type: 'none'
58
+ } : pluginState.activeTableMenu
52
59
  });
53
60
  };
54
61
  };
@@ -33,6 +33,8 @@ var _default = exports.default = function _default(pluginState, action) {
33
33
  return _objectSpread(_objectSpread({}, pluginState), {}, {
34
34
  isContextualMenuOpen: !pluginState.isContextualMenuOpen
35
35
  });
36
+ case 'SET_ACTIVE_TABLE_MENU':
37
+ return _objectSpread(_objectSpread({}, pluginState), action.data);
36
38
  case 'SHOW_INSERT_ROW_BUTTON':
37
39
  if (action.data.insertRowButtonIndex === pluginState.insertRowButtonIndex) {
38
40
  return pluginState;
@@ -152,6 +152,7 @@ var tablePlugin = function tablePlugin(_ref) {
152
152
  insertRowButtonIndex: tablePluginState.insertRowButtonIndex,
153
153
  tableWrapperTarget: tablePluginState.tableWrapperTarget,
154
154
  isCellMenuOpenByKeyboard: tablePluginState.isCellMenuOpenByKeyboard,
155
+ activeTableMenu: tablePluginState.activeTableMenu,
155
156
  stickyHeader: stickyHeader,
156
157
  dragMenuDirection: dragAndDropState === null || dragAndDropState === void 0 ? void 0 : dragAndDropState.dragMenuDirection,
157
158
  dragMenuIndex: dragAndDropState === null || dragAndDropState === void 0 ? void 0 : dragAndDropState.dragMenuIndex,
@@ -98,6 +98,7 @@ var ContentComponentInternal = function ContentComponentInternal(_ref) {
98
98
  return null;
99
99
  }
100
100
  return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, targetCellPosition && (tableRef || isCellMenuOpenByKeyboard) && !isResizing && options && options.allowContextualMenu && /*#__PURE__*/_react.default.createElement(_FloatingContextualButton.default, {
101
+ api: api,
101
102
  isNumberColumnEnabled: tableNode && tableNode.attrs.isNumberColumnEnabled,
102
103
  editorView: editorView,
103
104
  tableNode: tableNode,
@@ -133,7 +134,6 @@ var ContentComponentInternal = function ContentComponentInternal(_ref) {
133
134
  editorView: editorView,
134
135
  mountPoint: popupsMountPoint,
135
136
  boundariesElement: popupsBoundariesElement,
136
- targetCellPosition: targetCellPosition,
137
137
  isOpen: Boolean(isContextualMenuOpen) && !isResizing,
138
138
  pluginConfig: pluginConfig,
139
139
  editorAnalyticsAPI: editorAnalyticsAPI,
@@ -11,6 +11,7 @@ var _react2 = require("@emotion/react");
11
11
  var _reactIntl = require("react-intl");
12
12
  var _analytics = require("@atlaskit/editor-common/analytics");
13
13
  var _errorBoundary = require("@atlaskit/editor-common/error-boundary");
14
+ var _hooks = require("@atlaskit/editor-common/hooks");
14
15
  var _keymaps = require("@atlaskit/editor-common/keymaps");
15
16
  var _messages = require("@atlaskit/editor-common/messages");
16
17
  var _ui = require("@atlaskit/editor-common/ui");
@@ -44,7 +45,8 @@ var anchorStyles = (0, _react2.css)({
44
45
  zIndex: CONTEXTUAL_MENU_BUTTON_Z_INDEX
45
46
  });
46
47
  var FloatingContextualButtonInner = /*#__PURE__*/_react.default.memo(function (props) {
47
- var editorView = props.editorView,
48
+ var api = props.api,
49
+ editorView = props.editorView,
48
50
  isContextualMenuOpen = props.isContextualMenuOpen,
49
51
  mountPoint = props.mountPoint,
50
52
  scrollableElement = props.scrollableElement,
@@ -53,12 +55,22 @@ var FloatingContextualButtonInner = /*#__PURE__*/_react.default.memo(function (p
53
55
  targetCellPosition = props.targetCellPosition,
54
56
  isCellMenuOpenByKeyboard = props.isCellMenuOpenByKeyboard,
55
57
  formatMessage = props.intl.formatMessage; // : Props & WrappedComponentProps
56
-
58
+ var _useSharedPluginState = (0, _hooks.useSharedPluginStateWithSelector)(api, ['table'], function (states) {
59
+ var _states$tableState;
60
+ return {
61
+ activeTableMenu: (_states$tableState = states.tableState) === null || _states$tableState === void 0 ? void 0 : _states$tableState.activeTableMenu
62
+ };
63
+ }),
64
+ activeTableMenu = _useSharedPluginState.activeTableMenu;
65
+ var isCellMenuOpen = (0, _expValEquals.expValEquals)('platform_editor_table_menu_updates', 'isEnabled', true) ? (activeTableMenu === null || activeTableMenu === void 0 ? void 0 : activeTableMenu.type) === 'cell' : isContextualMenuOpen;
57
66
  var handleClick = function handleClick() {
58
67
  var state = editorView.state,
59
68
  dispatch = editorView.dispatch;
60
69
  if ((0, _expValEquals.expValEquals)('platform_editor_table_menu_updates', 'isEnabled', true)) {
61
- (0, _commands.toggleContextualMenu)()(state, dispatch);
70
+ (0, _commands.toggleActiveTableMenu)({
71
+ type: 'cell',
72
+ openedBy: 'mouse'
73
+ })(state, dispatch);
62
74
  return;
63
75
  }
64
76
 
@@ -74,13 +86,20 @@ var FloatingContextualButtonInner = /*#__PURE__*/_react.default.memo(function (p
74
86
  var domAtPos = editorView.domAtPos.bind(editorView);
75
87
  var targetCellRef = (0, _utils.findDomRefAtPos)(targetCellPosition, domAtPos);
76
88
  (0, _react.useEffect)(function () {
77
- if (isCellMenuOpenByKeyboard && !isContextualMenuOpen) {
89
+ if (isCellMenuOpenByKeyboard && !isCellMenuOpen) {
78
90
  var state = editorView.state,
79
91
  dispatch = editorView.dispatch;
80
92
  // open the menu when the keyboard shortcut is pressed
93
+ if ((0, _expValEquals.expValEquals)('platform_editor_table_menu_updates', 'isEnabled', true)) {
94
+ (0, _commands.toggleActiveTableMenu)({
95
+ type: 'cell',
96
+ openedBy: 'keyboard'
97
+ })(state, dispatch);
98
+ return;
99
+ }
81
100
  (0, _commands.toggleContextualMenu)()(state, dispatch);
82
101
  }
83
- }, [isCellMenuOpenByKeyboard, isContextualMenuOpen, editorView]);
102
+ }, [isCellMenuOpenByKeyboard, isCellMenuOpen, editorView]);
84
103
  if (!targetCellRef || !(targetCellRef instanceof HTMLElement)) {
85
104
  return null;
86
105
  }
@@ -90,12 +109,12 @@ var FloatingContextualButtonInner = /*#__PURE__*/_react.default.memo(function (p
90
109
  // eslint-disable-next-line @atlaskit/ui-styling-standard/no-imported-style-values, @atlaskit/design-system/consistent-css-prop-usage -- Ignored via go/DSP-18766
91
110
  (0, _styles.tableFloatingCellButtonStyles)(),
92
111
  // eslint-disable-next-line @atlaskit/ui-styling-standard/no-imported-style-values, @atlaskit/design-system/consistent-css-prop-usage -- Ignored via go/DSP-18766
93
- isContextualMenuOpen && (0, _styles.tableFloatingCellButtonSelectedStyles)()]
112
+ isCellMenuOpen && (0, _styles.tableFloatingCellButtonSelectedStyles)()]
94
113
  }, (0, _react2.jsx)(_uiMenu.ToolbarButton
95
114
  // eslint-disable-next-line @atlaskit/ui-styling-standard/no-classname-prop -- Ignored via go/DSP-18766
96
115
  , {
97
116
  className: _types.TableCssClassName.CONTEXTUAL_MENU_BUTTON,
98
- selected: isContextualMenuOpen,
117
+ selected: isCellMenuOpen,
99
118
  title: labelCellOptions,
100
119
  keymap: _keymaps.focusToContextMenuTrigger,
101
120
  onClick: handleClick,
@@ -105,7 +124,7 @@ var FloatingContextualButtonInner = /*#__PURE__*/_react.default.memo(function (p
105
124
  size: "small"
106
125
  }),
107
126
  "aria-label": labelCellOptions,
108
- "aria-expanded": isContextualMenuOpen
127
+ "aria-expanded": isCellMenuOpen
109
128
  }));
110
129
  var parentSticky = targetCellRef.parentElement && targetCellRef.parentElement.className.indexOf('sticky') > -1;
111
130
  var parentStickyNative = targetCellRef.parentElement && ((0, _platformFeatureFlags.fg)('platform_editor_table_sticky_header_patch_4') ? tableWrapper === null || tableWrapper === void 0 ? void 0 : tableWrapper.classList.contains(_types.TableCssClassName.TABLE_NODE_WRAPPER_NO_OVERFLOW) : targetCellRef.parentElement.classList.contains(_types.TableCssClassName.NATIVE_STICKY));
@@ -160,7 +179,7 @@ var FloatingContextualButtonInner = /*#__PURE__*/_react.default.memo(function (p
160
179
  targetCellPosition: targetCellPosition,
161
180
  targetCellRef: targetCellRef,
162
181
  mountTo: tableWrapper,
163
- isContextualMenuOpen: isContextualMenuOpen
182
+ isContextualMenuOpen: isCellMenuOpen
164
183
  }, button);
165
184
  }
166
185
  return (0, _react2.jsx)(_ui.Popup, {
@@ -6,99 +6,84 @@ Object.defineProperty(exports, "__esModule", {
6
6
  });
7
7
  exports.CellMenuPopup = void 0;
8
8
  var _react = _interopRequireWildcard(require("react"));
9
- var _bindEventListener = require("bind-event-listener");
10
- var _hooks = require("@atlaskit/editor-common/hooks");
9
+ var _ui = require("@atlaskit/editor-common/ui");
10
+ var _uiReact = require("@atlaskit/editor-common/ui-react");
11
11
  var _userIntent = require("@atlaskit/editor-common/user-intent");
12
12
  var _commands = require("../../pm-plugins/commands");
13
+ var _pluginFactory = require("../../pm-plugins/plugin-factory");
13
14
  var _types = require("../../types");
15
+ var _consts = require("../consts");
14
16
  var _keys = require("../TableMenu/cell/keys");
17
+ var _consts2 = require("../TableMenu/shared/consts");
15
18
  var _TableMenu = require("../TableMenu/shared/TableMenu");
16
19
  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); }
20
+ var PopupWithListeners = (0, _uiReact.withReactEditorViewOuterListeners)(_ui.Popup);
21
+ var NESTED_DROPDOWN_SELECTOR = '[data-toolbar-nested-dropdown-menu]';
22
+ var CELL_MENU_TRIGGER_SELECTOR = ".".concat(_types.TableCssClassName.CONTEXTUAL_MENU_BUTTON);
17
23
  var CellMenuPopup = exports.CellMenuPopup = function CellMenuPopup(_ref) {
18
24
  var api = _ref.api,
25
+ boundariesElement = _ref.boundariesElement,
19
26
  editorView = _ref.editorView,
20
- isCellMenuOpenByKeyboard = _ref.isCellMenuOpenByKeyboard,
21
- isOpen = _ref.isOpen,
22
- targetCellRef = _ref.targetCellRef;
23
- var tableMenuRef = (0, _react.useRef)(null);
24
- var _useSharedPluginState = (0, _hooks.useSharedPluginStateWithSelector)(api, ['userIntent'], function (states) {
25
- var _states$userIntentSta;
26
- return {
27
- currentUserIntent: (_states$userIntentSta = states.userIntentState) === null || _states$userIntentSta === void 0 ? void 0 : _states$userIntentSta.currentUserIntent
28
- };
29
- }),
30
- currentUserIntent = _useSharedPluginState.currentUserIntent;
27
+ mountPoint = _ref.mountPoint,
28
+ scrollableElement = _ref.scrollableElement,
29
+ targetCellRef = _ref.targetCellRef,
30
+ zIndex = _ref.zIndex;
31
+ var popupContentRef = (0, _react.useRef)(null);
32
+ var setOutsideClickTargetRef = (0, _react.useContext)(_uiReact.OutsideClickTargetRefContext);
33
+ var handlePopupRef = (0, _react.useCallback)(function (el) {
34
+ popupContentRef.current = el;
35
+ setOutsideClickTargetRef === null || setOutsideClickTargetRef === void 0 || setOutsideClickTargetRef(el);
36
+ }, [setOutsideClickTargetRef]);
31
37
  var closeCellMenu = (0, _react.useCallback)(function () {
32
- var state = editorView.state,
33
- dispatch = editorView.dispatch,
34
- dom = editorView.dom;
35
- (0, _commands.toggleContextualMenu)()(state, dispatch);
38
+ var _getPluginState = (0, _pluginFactory.getPluginState)(editorView.state),
39
+ isCellMenuOpenByKeyboard = _getPluginState.isCellMenuOpenByKeyboard;
40
+ (0, _commands.closeActiveTableMenu)()(editorView.state, editorView.dispatch);
36
41
  if (isCellMenuOpenByKeyboard) {
37
- (0, _commands.setFocusToCellMenu)(false)(state, dispatch);
38
- dom.focus();
42
+ (0, _commands.setFocusToCellMenu)(false)(editorView.state, editorView.dispatch);
39
43
  }
40
- }, [editorView, isCellMenuOpenByKeyboard]);
41
- (0, _react.useEffect)(function () {
42
- if (!isOpen || currentUserIntent !== 'tableDragMenuPopupOpen') {
43
- return;
44
+ }, [editorView]);
45
+ var isEventInsideCellMenu = (0, _react.useCallback)(function (event) {
46
+ var _popupContentRef$curr;
47
+ var target = event.target;
48
+ if (!(target instanceof Node)) {
49
+ return false;
44
50
  }
45
- closeCellMenu();
46
- }, [closeCellMenu, currentUserIntent, isOpen]);
47
- (0, _react.useEffect)(function () {
48
- if (!isOpen) {
49
- return;
51
+ if ((_popupContentRef$curr = popupContentRef.current) !== null && _popupContentRef$curr !== void 0 && _popupContentRef$curr.contains(target)) {
52
+ return true;
50
53
  }
51
- if (!(targetCellRef instanceof HTMLElement)) {
54
+ return target instanceof Element && Boolean(target.closest(NESTED_DROPDOWN_SELECTOR) || target.closest(CELL_MENU_TRIGGER_SELECTOR));
55
+ }, []);
56
+ var handleCellMenuClickOutside = (0, _react.useCallback)(function (event) {
57
+ if (isEventInsideCellMenu(event)) {
52
58
  return;
53
59
  }
54
- var ownerDocument = targetCellRef.ownerDocument;
55
- var handlePointerDown = function handlePointerDown(event) {
56
- var _tableMenuRef$current;
57
- var target = event.target;
58
- if (!(target instanceof Node)) {
59
- return;
60
- }
61
- if ((_tableMenuRef$current = tableMenuRef.current) !== null && _tableMenuRef$current !== void 0 && _tableMenuRef$current.contains(target)) {
62
- return;
63
- }
64
- var cellMenuButton = ownerDocument.querySelector(".".concat(_types.TableCssClassName.CONTEXTUAL_MENU_BUTTON));
65
- if (cellMenuButton !== null && cellMenuButton !== void 0 && cellMenuButton.contains(target)) {
66
- return;
67
- }
68
- closeCellMenu();
69
- };
70
- var handleKeyDown = function handleKeyDown(event) {
71
- if (event.key === 'Escape') {
72
- closeCellMenu();
73
- }
74
- };
75
- var unbindPointerDown = (0, _bindEventListener.bind)(ownerDocument, {
76
- type: 'pointerdown',
77
- listener: handlePointerDown,
78
- options: {
79
- capture: true
80
- }
81
- });
82
- var unbindKeyDown = (0, _bindEventListener.bind)(ownerDocument, {
83
- type: 'keydown',
84
- listener: handleKeyDown,
85
- options: {
86
- capture: true
87
- }
88
- });
89
- return function () {
90
- unbindPointerDown();
91
- unbindKeyDown();
92
- };
93
- }, [closeCellMenu, isOpen, targetCellRef]);
94
- return /*#__PURE__*/_react.default.createElement(_userIntent.UserIntentPopupWrapper, {
60
+ closeCellMenu();
61
+ }, [closeCellMenu, isEventInsideCellMenu]);
62
+ return /*#__PURE__*/_react.default.createElement(PopupWithListeners, {
63
+ alignX: "right",
64
+ alignY: "top",
65
+ target: targetCellRef,
66
+ mountTo: mountPoint,
67
+ boundariesElement: boundariesElement,
68
+ scrollableElement: scrollableElement,
69
+ fitHeight: _consts.tablePopupMenuFitHeight,
70
+ fitWidth: _consts2.TABLE_MENU_WIDTH,
71
+ zIndex: zIndex,
72
+ forcePlacement: true
73
+ // eslint-disable-next-line @atlassian/perf-linting/no-unstable-inline-props -- Ignored via go/ees017 (to be fixed)
74
+ ,
75
+ offset: [-7, 0],
76
+ stick: true,
77
+ handleClickOutside: handleCellMenuClickOutside,
78
+ handleEscapeKeydown: closeCellMenu
79
+ }, /*#__PURE__*/_react.default.createElement("div", {
80
+ ref: handlePopupRef
81
+ }, /*#__PURE__*/_react.default.createElement(_userIntent.UserIntentPopupWrapper, {
95
82
  api: api,
96
83
  userIntent: "tableContextualMenuPopupOpen"
97
- }, /*#__PURE__*/_react.default.createElement("div", {
98
- ref: tableMenuRef
99
84
  }, /*#__PURE__*/_react.default.createElement(_TableMenu.TableMenu, {
100
85
  api: api,
101
86
  editorView: editorView,
102
87
  surface: _keys.CELL_MENU
103
- })));
88
+ }))));
104
89
  };
@@ -6,6 +6,7 @@ Object.defineProperty(exports, "__esModule", {
6
6
  });
7
7
  exports.default = void 0;
8
8
  var _react = require("@emotion/react");
9
+ var _hooks = require("@atlaskit/editor-common/hooks");
9
10
  var _ui = require("@atlaskit/editor-common/ui");
10
11
  var _utils = require("@atlaskit/editor-prosemirror/utils");
11
12
  var _editorSharedStyles = require("@atlaskit/editor-shared-styles");
@@ -13,7 +14,6 @@ var _utils2 = require("@atlaskit/editor-tables/utils");
13
14
  var _expValEquals = require("@atlaskit/tmp-editor-statsig/exp-val-equals");
14
15
  var _pluginFactory = require("../../pm-plugins/plugin-factory");
15
16
  var _consts = require("../consts");
16
- var _consts2 = require("../TableMenu/shared/consts");
17
17
  var _CellMenuPopup = require("./CellMenuPopup");
18
18
  var _ContextualMenu = _interopRequireDefault(require("./ContextualMenu"));
19
19
  var _styles = require("./styles");
@@ -40,6 +40,14 @@ var FloatingContextualMenu = function FloatingContextualMenu(_ref) {
40
40
  isCommentEditor = _ref.isCommentEditor,
41
41
  api = _ref.api,
42
42
  isDragMenuOpen = _ref.isDragMenuOpen;
43
+ var _useSharedPluginState = (0, _hooks.useSharedPluginStateWithSelector)(api, ['table'], function (states) {
44
+ var _states$tableState;
45
+ return {
46
+ activeTableMenu: (_states$tableState = states.tableState) === null || _states$tableState === void 0 ? void 0 : _states$tableState.activeTableMenu
47
+ };
48
+ }),
49
+ activeTableMenu = _useSharedPluginState.activeTableMenu;
50
+ var isCellMenuOpen = (0, _expValEquals.expValEquals)('platform_editor_table_menu_updates', 'isEnabled', true) ? (activeTableMenu === null || activeTableMenu === void 0 ? void 0 : activeTableMenu.type) === 'cell' : isOpen;
43
51
  if (!editorView) {
44
52
  return null;
45
53
  }
@@ -47,7 +55,7 @@ var FloatingContextualMenu = function FloatingContextualMenu(_ref) {
47
55
  // TargetCellPosition could be outdated: https://product-fabric.atlassian.net/browse/ED-8129
48
56
  var _getPluginState = (0, _pluginFactory.getPluginState)(editorView.state),
49
57
  targetCellPosition = _getPluginState.targetCellPosition;
50
- if (!isOpen || !targetCellPosition || editorView.state.doc.nodeSize <= targetCellPosition) {
58
+ if (!isCellMenuOpen || !targetCellPosition || editorView.state.doc.nodeSize <= targetCellPosition) {
51
59
  return null;
52
60
  }
53
61
  var selection = editorView.state.selection;
@@ -64,6 +72,20 @@ var FloatingContextualMenu = function FloatingContextualMenu(_ref) {
64
72
  return null;
65
73
  }
66
74
  var parentSticky = targetCellRef.parentElement && targetCellRef.parentElement.className.indexOf('sticky') > -1;
75
+ if ((0, _expValEquals.expValEquals)('platform_editor_table_menu_updates', 'isEnabled', true)) {
76
+ return (0, _react.jsx)(_CellMenuPopup.CellMenuPopup, {
77
+ api: api,
78
+ boundariesElement: boundariesElement,
79
+ editorView: editorView,
80
+ mountPoint: mountPoint,
81
+ scrollableElement: scrollableElement
82
+ // Ignored via go/ees005
83
+ // eslint-disable-next-line @atlaskit/editor/no-as-casting
84
+ ,
85
+ targetCellRef: targetCellRef,
86
+ zIndex: parentSticky ? _editorSharedStyles.akEditorFloatingDialogZIndex : _editorSharedStyles.akEditorFloatingOverlapPanelZIndex
87
+ });
88
+ }
67
89
  return (0, _react.jsx)(_ui.Popup, {
68
90
  alignX: "right",
69
91
  alignY: "top"
@@ -75,7 +97,7 @@ var FloatingContextualMenu = function FloatingContextualMenu(_ref) {
75
97
  boundariesElement: boundariesElement,
76
98
  scrollableElement: scrollableElement,
77
99
  fitHeight: _consts.tablePopupMenuFitHeight,
78
- fitWidth: (0, _expValEquals.expValEquals)('platform_editor_table_menu_updates', 'isEnabled', true) ? _consts2.TABLE_MENU_WIDTH : _consts.contextualMenuDropdownWidthDnD
100
+ fitWidth: _consts.contextualMenuDropdownWidthDnD
79
101
  // z-index value below is to ensure that this menu is above other floating menu
80
102
  // in table, but below floating dialogs like typeaheads, pickers, etc.
81
103
  ,
@@ -85,15 +107,7 @@ var FloatingContextualMenu = function FloatingContextualMenu(_ref) {
85
107
  ,
86
108
  offset: [-7, 0],
87
109
  stick: true
88
- }, (0, _expValEquals.expValEquals)('platform_editor_table_menu_updates', 'isEnabled', true) ? (0, _react.jsx)(_CellMenuPopup.CellMenuPopup, {
89
- api: api,
90
- editorView: editorView,
91
- isCellMenuOpenByKeyboard: isCellMenuOpenByKeyboard,
92
- isOpen: isOpen,
93
- targetCellRef: targetCellRef
94
- }) :
95
- // eslint-disable-next-line @atlaskit/ui-styling-standard/no-imported-style-values, @atlaskit/design-system/consistent-css-prop-usage -- Ignored via go/DSP-18766
96
- (0, _react.jsx)("div", {
110
+ }, (0, _react.jsx)("div", {
97
111
  css: (0, _styles.tablePopupStyles)()
98
112
  }, (0, _react.jsx)(_ContextualMenu.default, {
99
113
  editorView: editorView