@atlaskit/editor-plugin-table 7.4.8 → 7.5.0

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 (192) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/dist/cjs/commands/column-resize.js +4 -2
  3. package/dist/cjs/commands/delete.js +2 -1
  4. package/dist/cjs/commands/insert.js +6 -3
  5. package/dist/cjs/commands-with-analytics.js +4 -2
  6. package/dist/cjs/event-handlers.js +2 -1
  7. package/dist/cjs/nodeviews/TableComponent.js +116 -47
  8. package/dist/cjs/nodeviews/TableContainer.js +8 -4
  9. package/dist/cjs/nodeviews/TableResizer.js +6 -5
  10. package/dist/cjs/nodeviews/table.js +12 -4
  11. package/dist/cjs/plugin.js +50 -47
  12. package/dist/cjs/pm-plugins/drag-and-drop/plugin.js +9 -6
  13. package/dist/cjs/pm-plugins/keymap.js +6 -3
  14. package/dist/cjs/pm-plugins/main.js +4 -1
  15. package/dist/cjs/pm-plugins/table-resizing/event-handlers.js +7 -3
  16. package/dist/cjs/pm-plugins/table-resizing/utils/colgroup.js +32 -11
  17. package/dist/cjs/pm-plugins/table-resizing/utils/consts.js +4 -2
  18. package/dist/cjs/pm-plugins/table-resizing/utils/index.js +24 -0
  19. package/dist/cjs/pm-plugins/table-resizing/utils/misc.js +20 -1
  20. package/dist/cjs/pm-plugins/table-resizing/utils/resize-column.js +2 -1
  21. package/dist/cjs/pm-plugins/table-resizing/utils/resize-state.js +52 -11
  22. package/dist/cjs/pm-plugins/table-resizing/utils/scale-table.js +19 -8
  23. package/dist/cjs/toolbar.js +17 -10
  24. package/dist/cjs/transforms/column-width.js +22 -7
  25. package/dist/cjs/transforms/delete-columns.js +2 -1
  26. package/dist/cjs/ui/FloatingContextualMenu/ContextualMenu.js +45 -38
  27. package/dist/cjs/ui/FloatingContextualMenu/index.js +5 -3
  28. package/dist/cjs/ui/FloatingDragMenu/DragMenu.js +15 -4
  29. package/dist/cjs/ui/FloatingDragMenu/DropdownMenu.js +53 -8
  30. package/dist/cjs/ui/FloatingDragMenu/index.js +15 -6
  31. package/dist/cjs/ui/FloatingInsertButton/index.js +5 -1
  32. package/dist/cjs/ui/consts.js +2 -1
  33. package/dist/cjs/utils/create.js +1 -1
  34. package/dist/cjs/utils/drag-menu.js +4 -3
  35. package/dist/es2019/commands/column-resize.js +4 -3
  36. package/dist/es2019/commands/delete.js +2 -2
  37. package/dist/es2019/commands/insert.js +6 -6
  38. package/dist/es2019/commands-with-analytics.js +4 -4
  39. package/dist/es2019/event-handlers.js +2 -2
  40. package/dist/es2019/nodeviews/TableComponent.js +77 -8
  41. package/dist/es2019/nodeviews/TableContainer.js +8 -4
  42. package/dist/es2019/nodeviews/TableResizer.js +6 -5
  43. package/dist/es2019/nodeviews/table.js +12 -4
  44. package/dist/es2019/plugin.js +14 -8
  45. package/dist/es2019/pm-plugins/drag-and-drop/plugin.js +7 -4
  46. package/dist/es2019/pm-plugins/keymap.js +6 -3
  47. package/dist/es2019/pm-plugins/main.js +4 -1
  48. package/dist/es2019/pm-plugins/table-resizing/event-handlers.js +7 -3
  49. package/dist/es2019/pm-plugins/table-resizing/utils/colgroup.js +31 -12
  50. package/dist/es2019/pm-plugins/table-resizing/utils/consts.js +3 -1
  51. package/dist/es2019/pm-plugins/table-resizing/utils/index.js +2 -2
  52. package/dist/es2019/pm-plugins/table-resizing/utils/misc.js +20 -2
  53. package/dist/es2019/pm-plugins/table-resizing/utils/resize-column.js +2 -2
  54. package/dist/es2019/pm-plugins/table-resizing/utils/resize-state.js +47 -10
  55. package/dist/es2019/pm-plugins/table-resizing/utils/scale-table.js +19 -12
  56. package/dist/es2019/toolbar.js +15 -12
  57. package/dist/es2019/transforms/column-width.js +24 -10
  58. package/dist/es2019/transforms/delete-columns.js +2 -2
  59. package/dist/es2019/ui/FloatingContextualMenu/ContextualMenu.js +12 -5
  60. package/dist/es2019/ui/FloatingContextualMenu/index.js +6 -4
  61. package/dist/es2019/ui/FloatingDragMenu/DragMenu.js +15 -4
  62. package/dist/es2019/ui/FloatingDragMenu/DropdownMenu.js +42 -8
  63. package/dist/es2019/ui/FloatingDragMenu/index.js +16 -7
  64. package/dist/es2019/ui/FloatingInsertButton/index.js +5 -1
  65. package/dist/es2019/ui/consts.js +1 -0
  66. package/dist/es2019/utils/create.js +1 -1
  67. package/dist/es2019/utils/drag-menu.js +4 -4
  68. package/dist/esm/commands/column-resize.js +4 -2
  69. package/dist/esm/commands/delete.js +2 -1
  70. package/dist/esm/commands/insert.js +6 -3
  71. package/dist/esm/commands-with-analytics.js +4 -2
  72. package/dist/esm/event-handlers.js +2 -1
  73. package/dist/esm/nodeviews/TableComponent.js +118 -49
  74. package/dist/esm/nodeviews/TableContainer.js +8 -4
  75. package/dist/esm/nodeviews/TableResizer.js +6 -5
  76. package/dist/esm/nodeviews/table.js +12 -4
  77. package/dist/esm/plugin.js +50 -47
  78. package/dist/esm/pm-plugins/drag-and-drop/plugin.js +9 -6
  79. package/dist/esm/pm-plugins/keymap.js +6 -3
  80. package/dist/esm/pm-plugins/main.js +4 -1
  81. package/dist/esm/pm-plugins/table-resizing/event-handlers.js +7 -3
  82. package/dist/esm/pm-plugins/table-resizing/utils/colgroup.js +32 -11
  83. package/dist/esm/pm-plugins/table-resizing/utils/consts.js +3 -1
  84. package/dist/esm/pm-plugins/table-resizing/utils/index.js +2 -2
  85. package/dist/esm/pm-plugins/table-resizing/utils/misc.js +22 -2
  86. package/dist/esm/pm-plugins/table-resizing/utils/resize-column.js +2 -1
  87. package/dist/esm/pm-plugins/table-resizing/utils/resize-state.js +52 -11
  88. package/dist/esm/pm-plugins/table-resizing/utils/scale-table.js +19 -8
  89. package/dist/esm/toolbar.js +17 -10
  90. package/dist/esm/transforms/column-width.js +23 -8
  91. package/dist/esm/transforms/delete-columns.js +2 -1
  92. package/dist/esm/ui/FloatingContextualMenu/ContextualMenu.js +45 -38
  93. package/dist/esm/ui/FloatingContextualMenu/index.js +6 -4
  94. package/dist/esm/ui/FloatingDragMenu/DragMenu.js +15 -4
  95. package/dist/esm/ui/FloatingDragMenu/DropdownMenu.js +50 -9
  96. package/dist/esm/ui/FloatingDragMenu/index.js +16 -7
  97. package/dist/esm/ui/FloatingInsertButton/index.js +5 -1
  98. package/dist/esm/ui/consts.js +1 -0
  99. package/dist/esm/utils/create.js +1 -1
  100. package/dist/esm/utils/drag-menu.js +4 -3
  101. package/dist/types/commands/column-resize.d.ts +1 -1
  102. package/dist/types/commands/delete.d.ts +1 -1
  103. package/dist/types/commands/insert.d.ts +3 -3
  104. package/dist/types/commands-with-analytics.d.ts +2 -2
  105. package/dist/types/event-handlers.d.ts +1 -1
  106. package/dist/types/nodeviews/TableComponent.d.ts +3 -0
  107. package/dist/types/nodeviews/TableContainer.d.ts +4 -2
  108. package/dist/types/nodeviews/TableResizer.d.ts +2 -1
  109. package/dist/types/nodeviews/table.d.ts +1 -0
  110. package/dist/types/pm-plugins/drag-and-drop/plugin.d.ts +3 -2
  111. package/dist/types/pm-plugins/keymap.d.ts +2 -2
  112. package/dist/types/pm-plugins/table-resizing/utils/colgroup.d.ts +2 -2
  113. package/dist/types/pm-plugins/table-resizing/utils/consts.d.ts +2 -0
  114. package/dist/types/pm-plugins/table-resizing/utils/index.d.ts +2 -2
  115. package/dist/types/pm-plugins/table-resizing/utils/misc.d.ts +7 -0
  116. package/dist/types/pm-plugins/table-resizing/utils/resize-column.d.ts +1 -1
  117. package/dist/types/pm-plugins/table-resizing/utils/resize-state.d.ts +4 -3
  118. package/dist/types/pm-plugins/table-resizing/utils/scale-table.d.ts +4 -4
  119. package/dist/types/toolbar.d.ts +2 -2
  120. package/dist/types/transforms/column-width.d.ts +1 -1
  121. package/dist/types/transforms/delete-columns.d.ts +1 -1
  122. package/dist/types/ui/FloatingContextualMenu/ContextualMenu.d.ts +2 -1
  123. package/dist/types/ui/FloatingContextualMenu/index.d.ts +1 -1
  124. package/dist/types/ui/FloatingDragMenu/DragMenu.d.ts +7 -1
  125. package/dist/types/ui/FloatingDragMenu/DropdownMenu.d.ts +8 -2
  126. package/dist/types/ui/FloatingDragMenu/index.d.ts +3 -2
  127. package/dist/types/ui/FloatingInsertButton/index.d.ts +2 -1
  128. package/dist/types/ui/consts.d.ts +1 -0
  129. package/dist/types/utils/drag-menu.d.ts +1 -1
  130. package/dist/types-ts4.5/commands/column-resize.d.ts +1 -1
  131. package/dist/types-ts4.5/commands/delete.d.ts +1 -1
  132. package/dist/types-ts4.5/commands/insert.d.ts +3 -3
  133. package/dist/types-ts4.5/commands-with-analytics.d.ts +2 -2
  134. package/dist/types-ts4.5/event-handlers.d.ts +1 -1
  135. package/dist/types-ts4.5/nodeviews/TableComponent.d.ts +3 -0
  136. package/dist/types-ts4.5/nodeviews/TableContainer.d.ts +4 -2
  137. package/dist/types-ts4.5/nodeviews/TableResizer.d.ts +2 -1
  138. package/dist/types-ts4.5/nodeviews/table.d.ts +1 -0
  139. package/dist/types-ts4.5/pm-plugins/drag-and-drop/plugin.d.ts +3 -2
  140. package/dist/types-ts4.5/pm-plugins/keymap.d.ts +2 -2
  141. package/dist/types-ts4.5/pm-plugins/table-resizing/utils/colgroup.d.ts +2 -2
  142. package/dist/types-ts4.5/pm-plugins/table-resizing/utils/consts.d.ts +2 -0
  143. package/dist/types-ts4.5/pm-plugins/table-resizing/utils/index.d.ts +2 -2
  144. package/dist/types-ts4.5/pm-plugins/table-resizing/utils/misc.d.ts +7 -0
  145. package/dist/types-ts4.5/pm-plugins/table-resizing/utils/resize-column.d.ts +1 -1
  146. package/dist/types-ts4.5/pm-plugins/table-resizing/utils/resize-state.d.ts +4 -3
  147. package/dist/types-ts4.5/pm-plugins/table-resizing/utils/scale-table.d.ts +4 -4
  148. package/dist/types-ts4.5/toolbar.d.ts +2 -2
  149. package/dist/types-ts4.5/transforms/column-width.d.ts +1 -1
  150. package/dist/types-ts4.5/transforms/delete-columns.d.ts +1 -1
  151. package/dist/types-ts4.5/ui/FloatingContextualMenu/ContextualMenu.d.ts +2 -1
  152. package/dist/types-ts4.5/ui/FloatingContextualMenu/index.d.ts +1 -1
  153. package/dist/types-ts4.5/ui/FloatingDragMenu/DragMenu.d.ts +7 -1
  154. package/dist/types-ts4.5/ui/FloatingDragMenu/DropdownMenu.d.ts +8 -2
  155. package/dist/types-ts4.5/ui/FloatingDragMenu/index.d.ts +3 -2
  156. package/dist/types-ts4.5/ui/FloatingInsertButton/index.d.ts +2 -1
  157. package/dist/types-ts4.5/ui/consts.d.ts +1 -0
  158. package/dist/types-ts4.5/utils/drag-menu.d.ts +1 -1
  159. package/package.json +3 -3
  160. package/src/commands/column-resize.ts +3 -0
  161. package/src/commands/delete.ts +2 -1
  162. package/src/commands/insert.ts +15 -6
  163. package/src/commands-with-analytics.ts +9 -3
  164. package/src/event-handlers.ts +2 -0
  165. package/src/nodeviews/TableComponent.tsx +91 -5
  166. package/src/nodeviews/TableContainer.tsx +6 -0
  167. package/src/nodeviews/TableResizer.tsx +6 -0
  168. package/src/nodeviews/table.tsx +15 -10
  169. package/src/plugin.tsx +17 -5
  170. package/src/pm-plugins/drag-and-drop/plugin.ts +16 -8
  171. package/src/pm-plugins/keymap.ts +11 -3
  172. package/src/pm-plugins/main.ts +3 -0
  173. package/src/pm-plugins/table-resizing/event-handlers.ts +11 -1
  174. package/src/pm-plugins/table-resizing/utils/colgroup.ts +49 -17
  175. package/src/pm-plugins/table-resizing/utils/consts.ts +2 -0
  176. package/src/pm-plugins/table-resizing/utils/index.ts +8 -1
  177. package/src/pm-plugins/table-resizing/utils/misc.ts +25 -1
  178. package/src/pm-plugins/table-resizing/utils/resize-column.ts +2 -1
  179. package/src/pm-plugins/table-resizing/utils/resize-state.ts +56 -11
  180. package/src/pm-plugins/table-resizing/utils/scale-table.ts +24 -6
  181. package/src/toolbar.tsx +18 -5
  182. package/src/transforms/column-width.ts +33 -11
  183. package/src/transforms/delete-columns.ts +7 -2
  184. package/src/ui/FloatingContextualMenu/ContextualMenu.tsx +20 -5
  185. package/src/ui/FloatingContextualMenu/index.tsx +4 -1
  186. package/src/ui/FloatingDragMenu/DragMenu.tsx +19 -1
  187. package/src/ui/FloatingDragMenu/DropdownMenu.tsx +94 -50
  188. package/src/ui/FloatingDragMenu/index.tsx +17 -4
  189. package/src/ui/FloatingInsertButton/index.tsx +17 -5
  190. package/src/ui/consts.ts +1 -0
  191. package/src/utils/create.ts +1 -3
  192. package/src/utils/drag-menu.ts +4 -1
@@ -23,6 +23,7 @@ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t =
23
23
  // Base function to trigger the actual scale on a table node.
24
24
  // Will only resize/scale if a table has been previously resized.
25
25
  var scale = exports.scale = function scale(tableRef, options, domAtPos) {
26
+ var tablePreserveWidth = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
26
27
  /**
27
28
  * isBreakoutEnabled === true -> default center aligned
28
29
  * isBreakoutEnabled === false -> full width mode
@@ -67,18 +68,21 @@ var scale = exports.scale = function scale(tableRef, options, domAtPos) {
67
68
  table: node,
68
69
  tableRef: tableRef,
69
70
  start: start,
70
- domAtPos: domAtPos
71
+ domAtPos: domAtPos,
72
+ tablePreserveWidth: tablePreserveWidth
71
73
  });
72
74
  return scaleTableTo(resizeState, newWidth);
73
75
  };
74
76
  var scaleWithParent = exports.scaleWithParent = function scaleWithParent(tableRef, parentWidth, table, start, domAtPos) {
77
+ var tablePreserveWidth = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : false;
75
78
  var resizeState = (0, _resizeState.getResizeState)({
76
79
  minWidth: _styles.tableCellMinWidth,
77
80
  maxSize: parentWidth,
78
81
  table: table,
79
82
  tableRef: tableRef,
80
83
  start: start,
81
- domAtPos: domAtPos
84
+ domAtPos: domAtPos,
85
+ tablePreserveWidth: tablePreserveWidth
82
86
  });
83
87
  if (table.attrs.isNumberColumnEnabled) {
84
88
  parentWidth -= _editorSharedStyles.akEditorTableNumberColumnWidth;
@@ -110,6 +114,7 @@ function scaleTableTo(state, maxSize) {
110
114
  return (0, _resizeState.adjustColumnsWidths)(newState, maxSize);
111
115
  }
112
116
  var previewScaleTable = exports.previewScaleTable = function previewScaleTable(tableRef, options, domAtPos) {
117
+ var tablePreserveWidth = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
113
118
  var node = options.node,
114
119
  start = options.start,
115
120
  parentWidth = options.parentWidth;
@@ -121,18 +126,22 @@ var previewScaleTable = exports.previewScaleTable = function previewScaleTable(t
121
126
  var width = isNumberColumnEnabled ? parentWidth - _editorSharedStyles.akEditorTableNumberColumnWidth : parentWidth;
122
127
  tableRef.style.width = "".concat(width, "px");
123
128
  }
124
- if (!(0, _colgroup.hasTableBeenResized)(node)) {
129
+
130
+ // If the table hasn't been resize, the colgroup 48px width values will gracefully scale down.
131
+ // If we are scaling the table down with tablePreserveWidth, the colgroup widths may be scaled to a value that is not 48px.
132
+ if (!(0, _colgroup.hasTableBeenResized)(node) && !tablePreserveWidth) {
125
133
  (0, _dom.syncStickyRowToTable)(tableRef);
126
134
  return;
127
135
  }
128
- var resizeState = parentWidth ? scaleWithParent(tableRef, parentWidth, node, start, domAtPos) : scale(tableRef, options, domAtPos);
136
+ var resizeState = parentWidth ? scaleWithParent(tableRef, parentWidth, node, start, domAtPos, tablePreserveWidth) : scale(tableRef, options, domAtPos, tablePreserveWidth);
129
137
  if (resizeState) {
130
- (0, _resizeState.updateColgroup)(resizeState, tableRef);
138
+ (0, _resizeState.updateColgroup)(resizeState, tableRef, tablePreserveWidth);
131
139
  }
132
140
  };
133
141
 
134
142
  // Scale the table to meet new requirements (col, layout change etc)
135
143
  var scaleTable = exports.scaleTable = function scaleTable(tableRef, options, domAtPos) {
144
+ var tablePreserveWidth = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
136
145
  return function (tr) {
137
146
  if (!tableRef) {
138
147
  return tr;
@@ -145,15 +154,17 @@ var scaleTable = exports.scaleTable = function scaleTable(tableRef, options, dom
145
154
  if ((0, _colgroup.hasTableBeenResized)(node) === false) {
146
155
  // If its not a re-sized table, we still want to re-create cols
147
156
  // To force reflow of columns upon delete.
148
- (0, _colgroup.insertColgroupFromNode)(tableRef, node);
157
+ if (!tablePreserveWidth) {
158
+ (0, _colgroup.insertColgroupFromNode)(tableRef, node);
159
+ }
149
160
  tr.setMeta('scrollIntoView', false);
150
161
  return tr;
151
162
  }
152
163
  var resizeState;
153
164
  if (parentWidth) {
154
- resizeState = scaleWithParent(tableRef, parentWidth, node, start, domAtPos);
165
+ resizeState = scaleWithParent(tableRef, parentWidth, node, start, domAtPos, tablePreserveWidth);
155
166
  } else {
156
- resizeState = scale(tableRef, options, domAtPos);
167
+ resizeState = scale(tableRef, options, domAtPos, tablePreserveWidth);
157
168
  }
158
169
  if (resizeState) {
159
170
  tr = (0, _transforms.updateColumnWidths)(resizeState, node, start)(tr);
@@ -96,6 +96,7 @@ var getToolbarMenuConfig = exports.getToolbarMenuConfig = function getToolbarMen
96
96
  var getToolbarCellOptionsConfig = exports.getToolbarCellOptionsConfig = function getToolbarCellOptionsConfig(editorState, editorView, initialSelectionRect, _ref2, getEditorContainerWidth, editorAnalyticsAPI) {
97
97
  var _pluginState$pluginCo, _pluginState$pluginCo2;
98
98
  var formatMessage = _ref2.formatMessage;
99
+ var tablePreserveWidth = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : false;
99
100
  var top = initialSelectionRect.top,
100
101
  bottom = initialSelectionRect.bottom,
101
102
  right = initialSelectionRect.right,
@@ -110,7 +111,7 @@ var getToolbarCellOptionsConfig = exports.getToolbarCellOptionsConfig = function
110
111
  var selectionRect = getClosestSelectionRect(state);
111
112
  var index = selectionRect === null || selectionRect === void 0 ? void 0 : selectionRect.right;
112
113
  if (index) {
113
- (0, _commandsWithAnalytics.insertColumnWithAnalytics)(getEditorContainerWidth, editorAnalyticsAPI)(_analytics.INPUT_METHOD.FLOATING_TB, index)(state, dispatch, view);
114
+ (0, _commandsWithAnalytics.insertColumnWithAnalytics)(getEditorContainerWidth, editorAnalyticsAPI, tablePreserveWidth)(_analytics.INPUT_METHOD.FLOATING_TB, index)(state, dispatch, view);
114
115
  }
115
116
  return true;
116
117
  },
@@ -189,7 +190,7 @@ var getToolbarCellOptionsConfig = exports.getToolbarCellOptionsConfig = function
189
190
  }];
190
191
  if (pluginState !== null && pluginState !== void 0 && (_pluginState$pluginCo = pluginState.pluginConfig) !== null && _pluginState$pluginCo !== void 0 && _pluginState$pluginCo.allowDistributeColumns) {
191
192
  var _newResizeStateWithAn;
192
- var newResizeStateWithAnalytics = editorView ? (0, _resizeState.getNewResizeStateFromSelectedColumns)(initialSelectionRect, editorState, editorView.domAtPos.bind(editorView), getEditorContainerWidth) : undefined;
193
+ var newResizeStateWithAnalytics = editorView ? (0, _resizeState.getNewResizeStateFromSelectedColumns)(initialSelectionRect, editorState, editorView.domAtPos.bind(editorView), getEditorContainerWidth, tablePreserveWidth) : undefined;
193
194
  var wouldChange = (_newResizeStateWithAn = newResizeStateWithAnalytics === null || newResizeStateWithAnalytics === void 0 ? void 0 : newResizeStateWithAnalytics.changed) !== null && _newResizeStateWithAn !== void 0 ? _newResizeStateWithAn : false;
194
195
  var distributeColumnWidths = function distributeColumnWidths(state, dispatch) {
195
196
  if (newResizeStateWithAnalytics) {
@@ -309,10 +310,13 @@ var getToolbarConfig = exports.getToolbarConfig = function getToolbarConfig(getE
309
310
  if (tableObject && pluginState.editorHasFocus && !isWidthResizing) {
310
311
  var nodeType = state.schema.nodes.table;
311
312
  var menu = getToolbarMenuConfig(config, pluginState, intl, editorAnalyticsAPI);
313
+ var _getEditorFeatureFlag = getEditorFeatureFlags(),
314
+ _getEditorFeatureFlag2 = _getEditorFeatureFlag.tablePreserveWidth,
315
+ tablePreserveWidth = _getEditorFeatureFlag2 === void 0 ? false : _getEditorFeatureFlag2;
312
316
  var cellItems;
313
- cellItems = pluginState.isDragAndDropEnabled ? [] : getCellItems(config, state, getEditorView(), intl, getEditorContainerWidth, editorAnalyticsAPI);
317
+ cellItems = pluginState.isDragAndDropEnabled ? [] : getCellItems(config, state, getEditorView(), intl, getEditorContainerWidth, editorAnalyticsAPI, tablePreserveWidth);
314
318
  var columnSettingsItems;
315
- columnSettingsItems = pluginState.isDragAndDropEnabled && (0, _platformFeatureFlags.getBooleanFF)('platform.editor.table.new-cell-context-menu-styling') ? getColumnSettingItems(state, getEditorView(), intl, getEditorContainerWidth, editorAnalyticsAPI) : [];
319
+ columnSettingsItems = pluginState.isDragAndDropEnabled && (0, _platformFeatureFlags.getBooleanFF)('platform.editor.table.new-cell-context-menu-styling') ? getColumnSettingItems(state, getEditorView(), intl, getEditorContainerWidth, editorAnalyticsAPI, tablePreserveWidth) : [];
316
320
  var colorPicker = getColorPicker(state, menu, intl, editorAnalyticsAPI);
317
321
 
318
322
  // Check if we need to show confirm dialog for delete button
@@ -351,8 +355,8 @@ var getToolbarConfig = exports.getToolbarConfig = function getToolbarConfig(getE
351
355
  }
352
356
  return element;
353
357
  };
354
- var _getEditorFeatureFlag = getEditorFeatureFlags(),
355
- stickyScrollbar = _getEditorFeatureFlag.stickyScrollbar;
358
+ var _getEditorFeatureFlag3 = getEditorFeatureFlags(),
359
+ stickyScrollbar = _getEditorFeatureFlag3.stickyScrollbar;
356
360
  return {
357
361
  title: 'Table floating controls',
358
362
  getDomRef: getDomRef,
@@ -411,22 +415,24 @@ var separator = function separator(hidden) {
411
415
  };
412
416
  var getCellItems = function getCellItems(pluginConfig, state, view, _ref3, getEditorContainerWidth, editorAnalyticsAPI) {
413
417
  var formatMessage = _ref3.formatMessage;
418
+ var tablePreserveWidth = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : false;
414
419
  var initialSelectionRect = getClosestSelectionRect(state);
415
420
  if (initialSelectionRect) {
416
421
  var cellOptions = getToolbarCellOptionsConfig(state, view, initialSelectionRect, {
417
422
  formatMessage: formatMessage
418
- }, getEditorContainerWidth, editorAnalyticsAPI);
423
+ }, getEditorContainerWidth, editorAnalyticsAPI, tablePreserveWidth);
419
424
  return [cellOptions, separator(cellOptions.hidden)];
420
425
  }
421
426
  return [];
422
427
  };
423
428
  var getDistributeConfig = exports.getDistributeConfig = function getDistributeConfig(getEditorContainerWidth, editorAnalyticsAPI) {
429
+ var tablePreserveWidth = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
424
430
  return function (state, dispatch, editorView) {
425
431
  var selectionOrTableRect = getClosestSelectionOrTableRect(state);
426
432
  if (!editorView || !selectionOrTableRect) {
427
433
  return false;
428
434
  }
429
- var newResizeStateWithAnalytics = (0, _resizeState.getNewResizeStateFromSelectedColumns)(selectionOrTableRect, state, editorView.domAtPos.bind(editorView), getEditorContainerWidth);
435
+ var newResizeStateWithAnalytics = (0, _resizeState.getNewResizeStateFromSelectedColumns)(selectionOrTableRect, state, editorView.domAtPos.bind(editorView), getEditorContainerWidth, tablePreserveWidth);
430
436
  if (newResizeStateWithAnalytics) {
431
437
  (0, _commandsWithAnalytics.distributeColumnsWidthsWithAnalytics)(editorAnalyticsAPI)(_analytics.INPUT_METHOD.FLOATING_TB, newResizeStateWithAnalytics)(state, dispatch);
432
438
  return true;
@@ -440,12 +446,13 @@ var getDistributeConfig = exports.getDistributeConfig = function getDistributeCo
440
446
  var getColumnSettingItems = function getColumnSettingItems(editorState, editorView, _ref4, getEditorContainerWidth, editorAnalyticsAPI) {
441
447
  var _newResizeStateWithAn2, _pluginState$pluginCo3;
442
448
  var formatMessage = _ref4.formatMessage;
449
+ var tablePreserveWidth = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : false;
443
450
  var pluginState = (0, _pluginFactory.getPluginState)(editorState);
444
451
  var selectionOrTableRect = getClosestSelectionOrTableRect(editorState);
445
452
  if (!selectionOrTableRect || !editorView) {
446
453
  return [];
447
454
  }
448
- var newResizeStateWithAnalytics = (0, _resizeState.getNewResizeStateFromSelectedColumns)(selectionOrTableRect, editorState, editorView.domAtPos.bind(editorView), getEditorContainerWidth);
455
+ var newResizeStateWithAnalytics = (0, _resizeState.getNewResizeStateFromSelectedColumns)(selectionOrTableRect, editorState, editorView.domAtPos.bind(editorView), getEditorContainerWidth, tablePreserveWidth);
449
456
  var wouldChange = (_newResizeStateWithAn2 = newResizeStateWithAnalytics === null || newResizeStateWithAnalytics === void 0 ? void 0 : newResizeStateWithAnalytics.changed) !== null && _newResizeStateWithAn2 !== void 0 ? _newResizeStateWithAn2 : false;
450
457
  if (pluginState !== null && pluginState !== void 0 && (_pluginState$pluginCo3 = pluginState.pluginConfig) !== null && _pluginState$pluginCo3 !== void 0 && _pluginState$pluginCo3.allowDistributeColumns && pluginState.isDragAndDropEnabled) {
451
458
  return [{
@@ -454,7 +461,7 @@ var getColumnSettingItems = function getColumnSettingItems(editorState, editorVi
454
461
  title: formatMessage(_messages.tableMessages.distributeColumns),
455
462
  icon: _layoutThreeEqual.default,
456
463
  onClick: function onClick(state, dispatch, view) {
457
- return getDistributeConfig(getEditorContainerWidth, editorAnalyticsAPI)(state, dispatch, view);
464
+ return getDistributeConfig(getEditorContainerWidth, editorAnalyticsAPI, tablePreserveWidth)(state, dispatch, view);
458
465
  },
459
466
  disabled: !wouldChange
460
467
  }, {
@@ -94,9 +94,9 @@ var updateColumnWidths = exports.updateColumnWidths = function updateColumnWidth
94
94
  * @returns Updated transaction with rescaled columns for a given table
95
95
  */
96
96
  var rescaleColumns = exports.rescaleColumns = function rescaleColumns() {
97
+ var tablePreserveWidth = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
97
98
  return function (table, view) {
98
99
  return function (tr) {
99
- var _tableRef$parentEleme, _tableRef$parentEleme2;
100
100
  if (!view) {
101
101
  return tr;
102
102
  }
@@ -108,14 +108,28 @@ var rescaleColumns = exports.rescaleColumns = function rescaleColumns() {
108
108
  return tr;
109
109
  }
110
110
  var isResized = (0, _utils.hasTableBeenResized)(table.node);
111
- // get current table info
112
111
  var previousTableInfo = {
113
- // when table is resized the tableRef client width will be 1px larger than colGroup, which is used in calculations
114
- width: isResized ? tableRef.clientWidth - 1 : tableRef.clientWidth,
115
- /** the is the width the table can reach before overflowing */
116
- possibleMaxWidth: (0, _platformFeatureFlags.getBooleanFF)('platform.editor.custom-table-width') ? (tableRef === null || tableRef === void 0 || (_tableRef$parentEleme = tableRef.parentElement) === null || _tableRef$parentEleme === void 0 ? void 0 : _tableRef$parentEleme.clientWidth) || 0 : ((tableRef === null || tableRef === void 0 || (_tableRef$parentEleme2 = tableRef.parentElement) === null || _tableRef$parentEleme2 === void 0 ? void 0 : _tableRef$parentEleme2.clientWidth) || 0) - _commonStyles.insertColumnButtonOffset,
112
+ width: 0,
113
+ possibleMaxWidth: 0,
117
114
  isResized: isResized
118
115
  };
116
+ if (tablePreserveWidth) {
117
+ previousTableInfo = {
118
+ // TODO - ensure correct width is returned when table doesn't have a width value
119
+ width: (0, _utils.getTableElementWidth)(table.node),
120
+ possibleMaxWidth: (0, _platformFeatureFlags.getBooleanFF)('platform.editor.custom-table-width') ? (0, _utils.getTableContainerElement)(table.node) : (0, _utils.getTableContainerElement)(table.node) - _commonStyles.insertColumnButtonOffset,
121
+ isResized: isResized
122
+ };
123
+ } else {
124
+ var _tableRef$parentEleme, _tableRef$parentEleme2;
125
+ previousTableInfo = {
126
+ // when table is resized the tableRef client width will be 1px larger than colGroup, which is used in calculations
127
+ width: isResized ? tableRef.clientWidth - 1 : tableRef.clientWidth,
128
+ /** the is the width the table can reach before overflowing */
129
+ possibleMaxWidth: (0, _platformFeatureFlags.getBooleanFF)('platform.editor.custom-table-width') ? (tableRef === null || tableRef === void 0 || (_tableRef$parentEleme = tableRef.parentElement) === null || _tableRef$parentEleme === void 0 ? void 0 : _tableRef$parentEleme.clientWidth) || 0 : ((tableRef === null || tableRef === void 0 || (_tableRef$parentEleme2 = tableRef.parentElement) === null || _tableRef$parentEleme2 === void 0 ? void 0 : _tableRef$parentEleme2.clientWidth) || 0) - _commonStyles.insertColumnButtonOffset,
130
+ isResized: isResized
131
+ };
132
+ }
119
133
 
120
134
  // determine the new table, based on new width
121
135
  var newTableInfo = {
@@ -160,7 +174,8 @@ var rescaleColumns = exports.rescaleColumns = function rescaleColumns() {
160
174
  start: table.start,
161
175
  tableRef: tableRef,
162
176
  domAtPos: domAtPos,
163
- maxSize: previousTableInfo.possibleMaxWidth
177
+ maxSize: previousTableInfo.possibleMaxWidth,
178
+ tablePreserveWidth: tablePreserveWidth
164
179
  });
165
180
 
166
181
  // Two scenarios that require scaling:
@@ -212,6 +212,7 @@ function fixRowSpans(table) {
212
212
  return table.type.createChecked(table.attrs, rows, table.marks);
213
213
  }
214
214
  var deleteColumns = exports.deleteColumns = function deleteColumns(rect, allowCustomStep, view) {
215
+ var tablePreserveWidth = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
215
216
  return function (tr) {
216
217
  var updatedTr = tr;
217
218
  updatedTr.setMeta(_tableAnalytics.META_KEYS.OVERFLOW_TRIGGER, {
@@ -224,7 +225,7 @@ var deleteColumns = exports.deleteColumns = function deleteColumns(rect, allowCu
224
225
  }
225
226
  var table = (0, _utils.findTable)(updatedTr.selection);
226
227
  if (table) {
227
- updatedTr = (0, _columnWidth.rescaleColumns)()(table, view)(updatedTr);
228
+ updatedTr = (0, _columnWidth.rescaleColumns)(tablePreserveWidth)(table, view)(updatedTr);
228
229
  }
229
230
  return updatedTr;
230
231
  };
@@ -279,8 +279,11 @@ var ContextualMenu = exports.ContextualMenu = /*#__PURE__*/function (_Component)
279
279
  isDragAndDropEnabled = _getPluginState8.isDragAndDropEnabled,
280
280
  allowDistributeColumns = _getPluginState8.pluginConfig.allowDistributeColumns;
281
281
  if (allowDistributeColumns && (!isDragAndDropEnabled || !(0, _platformFeatureFlags.getBooleanFF)('platform.editor.table.new-cell-context-menu-styling'))) {
282
- var _newResizeState$chang;
283
- var newResizeState = (0, _resizeState.getNewResizeStateFromSelectedColumns)(selectionRect, editorView.state, editorView.domAtPos.bind(editorView), getEditorContainerWidth);
282
+ var _this$props$getEditor, _this$props9, _newResizeState$chang;
283
+ var _ref = ((_this$props$getEditor = (_this$props9 = _this.props).getEditorFeatureFlags) === null || _this$props$getEditor === void 0 ? void 0 : _this$props$getEditor.call(_this$props9)) || {},
284
+ _ref$tablePreserveWid = _ref.tablePreserveWidth,
285
+ tablePreserveWidth = _ref$tablePreserveWid === void 0 ? false : _ref$tablePreserveWid;
286
+ var newResizeState = (0, _resizeState.getNewResizeStateFromSelectedColumns)(selectionRect, editorView.state, editorView.domAtPos.bind(editorView), getEditorContainerWidth, tablePreserveWidth);
284
287
  var wouldChange = (_newResizeState$chang = newResizeState === null || newResizeState === void 0 ? void 0 : newResizeState.changed) !== null && _newResizeState$chang !== void 0 ? _newResizeState$chang : false;
285
288
  return {
286
289
  content: formatMessage(_messages.tableMessages.distributeColumns),
@@ -293,10 +296,10 @@ var ContextualMenu = exports.ContextualMenu = /*#__PURE__*/function (_Component)
293
296
  return null;
294
297
  });
295
298
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "createSortColumnItems", function () {
296
- var _this$props9 = _this.props,
297
- formatMessage = _this$props9.intl.formatMessage,
298
- editorView = _this$props9.editorView,
299
- allowColumnSorting = _this$props9.allowColumnSorting;
299
+ var _this$props10 = _this.props,
300
+ formatMessage = _this$props10.intl.formatMessage,
301
+ editorView = _this$props10.editorView,
302
+ allowColumnSorting = _this$props10.allowColumnSorting;
300
303
  var _getPluginState9 = (0, _pluginFactory.getPluginState)(editorView.state),
301
304
  isDragAndDropEnabled = _getPluginState9.isDragAndDropEnabled;
302
305
  if (allowColumnSorting && (!isDragAndDropEnabled || !(0, _platformFeatureFlags.getBooleanFF)('platform.editor.table.new-cell-context-menu-styling'))) {
@@ -362,18 +365,22 @@ var ContextualMenu = exports.ContextualMenu = /*#__PURE__*/function (_Component)
362
365
  items[1].items.push(deleteRowItem);
363
366
  return items;
364
367
  });
365
- (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "onMenuItemActivated", function (_ref) {
366
- var item = _ref.item;
367
- var _this$props10 = _this.props,
368
- editorView = _this$props10.editorView,
369
- selectionRect = _this$props10.selectionRect,
370
- editorAnalyticsAPI = _this$props10.editorAnalyticsAPI,
371
- getEditorContainerWidth = _this$props10.getEditorContainerWidth;
368
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "onMenuItemActivated", function (_ref2) {
369
+ var item = _ref2.item;
370
+ var _this$props11 = _this.props,
371
+ editorView = _this$props11.editorView,
372
+ selectionRect = _this$props11.selectionRect,
373
+ editorAnalyticsAPI = _this$props11.editorAnalyticsAPI,
374
+ getEditorContainerWidth = _this$props11.getEditorContainerWidth,
375
+ getEditorFeatureFlags = _this$props11.getEditorFeatureFlags;
372
376
  // TargetCellPosition could be outdated: https://product-fabric.atlassian.net/browse/ED-8129
373
377
  var state = editorView.state,
374
378
  dispatch = editorView.dispatch;
375
379
  var _getPluginState10 = (0, _pluginFactory.getPluginState)(state),
376
380
  targetCellPosition = _getPluginState10.targetCellPosition;
381
+ var _ref3 = (getEditorFeatureFlags === null || getEditorFeatureFlags === void 0 ? void 0 : getEditorFeatureFlags()) || {},
382
+ _ref3$tablePreserveWi = _ref3.tablePreserveWidth,
383
+ tablePreserveWidth = _ref3$tablePreserveWi === void 0 ? false : _ref3$tablePreserveWi;
377
384
  switch (item.value.name) {
378
385
  case 'sort_column_desc':
379
386
  (0, _commandsWithAnalytics.sortColumnWithAnalytics)(editorAnalyticsAPI)(_analytics.INPUT_METHOD.CONTEXT_MENU, selectionRect.left, _customSteps.TableSortOrder.DESC)(state, dispatch);
@@ -392,7 +399,7 @@ var ContextualMenu = exports.ContextualMenu = /*#__PURE__*/function (_Component)
392
399
  _this.toggleOpen();
393
400
  break;
394
401
  case 'distribute_columns':
395
- var newResizeStateWithAnalytics = (0, _resizeState.getNewResizeStateFromSelectedColumns)(selectionRect, state, editorView.domAtPos.bind(editorView), getEditorContainerWidth);
402
+ var newResizeStateWithAnalytics = (0, _resizeState.getNewResizeStateFromSelectedColumns)(selectionRect, state, editorView.domAtPos.bind(editorView), getEditorContainerWidth, tablePreserveWidth);
396
403
  if (newResizeStateWithAnalytics) {
397
404
  (0, _commandsWithAnalytics.distributeColumnsWidthsWithAnalytics)(editorAnalyticsAPI)(_analytics.INPUT_METHOD.CONTEXT_MENU, newResizeStateWithAnalytics)(state, dispatch);
398
405
  _this.toggleOpen();
@@ -403,7 +410,7 @@ var ContextualMenu = exports.ContextualMenu = /*#__PURE__*/function (_Component)
403
410
  _this.toggleOpen();
404
411
  break;
405
412
  case 'insert_column':
406
- (0, _commandsWithAnalytics.insertColumnWithAnalytics)(getEditorContainerWidth, editorAnalyticsAPI)(_analytics.INPUT_METHOD.CONTEXT_MENU, selectionRect.right)(state, dispatch, editorView);
413
+ (0, _commandsWithAnalytics.insertColumnWithAnalytics)(getEditorContainerWidth, editorAnalyticsAPI, tablePreserveWidth)(_analytics.INPUT_METHOD.CONTEXT_MENU, selectionRect.right)(state, dispatch, editorView);
407
414
  _this.toggleOpen();
408
415
  break;
409
416
  case 'insert_row':
@@ -426,11 +433,11 @@ var ContextualMenu = exports.ContextualMenu = /*#__PURE__*/function (_Component)
426
433
  }
427
434
  });
428
435
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "toggleOpen", function () {
429
- var _this$props11 = _this.props,
430
- isOpen = _this$props11.isOpen,
431
- _this$props11$editorV = _this$props11.editorView,
432
- state = _this$props11$editorV.state,
433
- dispatch = _this$props11$editorV.dispatch;
436
+ var _this$props12 = _this.props,
437
+ isOpen = _this$props12.isOpen,
438
+ _this$props12$editorV = _this$props12.editorView,
439
+ state = _this$props12$editorV.state,
440
+ dispatch = _this$props12$editorV.dispatch;
434
441
  (0, _commands.toggleContextualMenu)()(state, dispatch);
435
442
  if (!isOpen) {
436
443
  _this.setState({
@@ -447,13 +454,13 @@ var ContextualMenu = exports.ContextualMenu = /*#__PURE__*/function (_Component)
447
454
  isSubmenuOpen: false
448
455
  });
449
456
  });
450
- (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "handleItemMouseEnter", function (_ref2) {
451
- var item = _ref2.item;
452
- var _this$props12 = _this.props,
453
- _this$props12$editorV = _this$props12.editorView,
454
- state = _this$props12$editorV.state,
455
- dispatch = _this$props12$editorV.dispatch,
456
- selectionRect = _this$props12.selectionRect;
457
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "handleItemMouseEnter", function (_ref4) {
458
+ var item = _ref4.item;
459
+ var _this$props13 = _this.props,
460
+ _this$props13$editorV = _this$props13.editorView,
461
+ state = _this$props13$editorV.state,
462
+ dispatch = _this$props13$editorV.dispatch,
463
+ selectionRect = _this$props13.selectionRect;
457
464
  if (item.value.name === 'background') {
458
465
  if (!_this.state.isSubmenuOpen) {
459
466
  _this.setState({
@@ -471,8 +478,8 @@ var ContextualMenu = exports.ContextualMenu = /*#__PURE__*/function (_Component)
471
478
  (0, _commands.hoverMergedCells)()(state, dispatch);
472
479
  }
473
480
  });
474
- (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "handleItemMouseLeave", function (_ref3) {
475
- var item = _ref3.item;
481
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "handleItemMouseLeave", function (_ref5) {
482
+ var item = _ref5.item;
476
483
  var _this$props$editorVie2 = _this.props.editorView,
477
484
  state = _this$props$editorVie2.state,
478
485
  dispatch = _this$props$editorVie2.dispatch;
@@ -491,9 +498,9 @@ var ContextualMenu = exports.ContextualMenu = /*#__PURE__*/function (_Component)
491
498
  }
492
499
  });
493
500
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "setColor", function (color) {
494
- var _this$props13 = _this.props,
495
- editorView = _this$props13.editorView,
496
- editorAnalyticsAPI = _this$props13.editorAnalyticsAPI;
501
+ var _this$props14 = _this.props,
502
+ editorView = _this$props14.editorView,
503
+ editorAnalyticsAPI = _this$props14.editorAnalyticsAPI;
497
504
  // TargetCellPosition could be outdated: https://product-fabric.atlassian.net/browse/ED-8129
498
505
  var _getPluginState12 = (0, _pluginFactory.getPluginState)(editorView.state),
499
506
  targetCellPosition = _getPluginState12.targetCellPosition;
@@ -507,12 +514,12 @@ var ContextualMenu = exports.ContextualMenu = /*#__PURE__*/function (_Component)
507
514
  (0, _createClass2.default)(ContextualMenu, [{
508
515
  key: "render",
509
516
  value: function render() {
510
- var _this$props14 = this.props,
511
- isOpen = _this$props14.isOpen,
512
- mountPoint = _this$props14.mountPoint,
513
- offset = _this$props14.offset,
514
- boundariesElement = _this$props14.boundariesElement,
515
- editorView = _this$props14.editorView;
517
+ var _this$props15 = this.props,
518
+ isOpen = _this$props15.isOpen,
519
+ mountPoint = _this$props15.mountPoint,
520
+ offset = _this$props15.offset,
521
+ boundariesElement = _this$props15.boundariesElement,
522
+ editorView = _this$props15.editorView;
516
523
  var _getPluginState13 = (0, _pluginFactory.getPluginState)(editorView.state),
517
524
  isDragAndDropEnabled = _getPluginState13.isDragAndDropEnabled;
518
525
  var items = isDragAndDropEnabled && (0, _platformFeatureFlags.getBooleanFF)('platform.editor.table.new-cell-context-menu-styling') ? this.createNewContextMenuItems() : this.createOriginalContextMenuItems();
@@ -24,7 +24,8 @@ var FloatingContextualMenu = function FloatingContextualMenu(_ref) {
24
24
  isOpen = _ref.isOpen,
25
25
  pluginConfig = _ref.pluginConfig,
26
26
  editorAnalyticsAPI = _ref.editorAnalyticsAPI,
27
- getEditorContainerWidth = _ref.getEditorContainerWidth;
27
+ getEditorContainerWidth = _ref.getEditorContainerWidth,
28
+ getEditorFeatureFlags = _ref.getEditorFeatureFlags;
28
29
  // TargetCellPosition could be outdated: https://product-fabric.atlassian.net/browse/ED-8129
29
30
  var _getPluginState = (0, _pluginFactory.getPluginState)(editorView.state),
30
31
  targetCellPosition = _getPluginState.targetCellPosition,
@@ -50,7 +51,7 @@ var FloatingContextualMenu = function FloatingContextualMenu(_ref) {
50
51
  mountTo: mountPoint,
51
52
  boundariesElement: boundariesElement,
52
53
  scrollableElement: scrollableElement,
53
- fitHeight: 188,
54
+ fitHeight: _consts.tablePopupMenuFitHeight,
54
55
  fitWidth: isDragAndDropEnabled ? _consts.contextualMenuDropdownWidthDnD : _consts.contextualMenuDropdownWidth
55
56
  // z-index value below is to ensure that this menu is above other floating menu
56
57
  // in table, but below floating dialogs like typeaheads, pickers, etc.
@@ -72,7 +73,8 @@ var FloatingContextualMenu = function FloatingContextualMenu(_ref) {
72
73
  selectionRect: selectionRect,
73
74
  boundariesElement: boundariesElement,
74
75
  editorAnalyticsAPI: editorAnalyticsAPI,
75
- getEditorContainerWidth: getEditorContainerWidth
76
+ getEditorContainerWidth: getEditorContainerWidth,
77
+ getEditorFeatureFlags: getEditorFeatureFlags
76
78
  })));
77
79
  };
78
80
  FloatingContextualMenu.displayName = 'FloatingContextualMenu';
@@ -185,7 +185,13 @@ var DragMenu = exports.DragMenu = /*#__PURE__*/_react.default.memo(function (_re
185
185
  getEditorContainerWidth = _ref.getEditorContainerWidth,
186
186
  editorAnalyticsAPI = _ref.editorAnalyticsAPI,
187
187
  pluginConfig = _ref.pluginConfig,
188
- formatMessage = _ref.intl.formatMessage;
188
+ formatMessage = _ref.intl.formatMessage,
189
+ fitHeight = _ref.fitHeight,
190
+ fitWidth = _ref.fitWidth,
191
+ mountPoint = _ref.mountPoint,
192
+ scrollableElement = _ref.scrollableElement,
193
+ boundariesElement = _ref.boundariesElement,
194
+ tablePreserveWidth = _ref.tablePreserveWidth;
189
195
  var state = editorView.state,
190
196
  dispatch = editorView.dispatch;
191
197
  var selection = state.selection;
@@ -201,7 +207,7 @@ var DragMenu = exports.DragMenu = /*#__PURE__*/_react.default.memo(function (_re
201
207
  var shouldMoveDisabled = index !== undefined && hasMergedCells(index)(selection);
202
208
  var hasMergedCellsInTable = (0, _utils3.getMergedCellsPositions)(state.tr).length > 0;
203
209
  var allowBackgroundColor = (_pluginConfig$allowBa = pluginConfig === null || pluginConfig === void 0 ? void 0 : pluginConfig.allowBackgroundColor) !== null && _pluginConfig$allowBa !== void 0 ? _pluginConfig$allowBa : false;
204
- var dragMenuConfig = (0, _dragMenu.getDragMenuConfig)(direction, getEditorContainerWidth, !shouldMoveDisabled, hasMergedCellsInTable, editorView, tableMap, index, targetCellPosition, selectionRect, editorAnalyticsAPI, pluginConfig === null || pluginConfig === void 0 ? void 0 : pluginConfig.isHeaderRowRequired);
210
+ var dragMenuConfig = (0, _dragMenu.getDragMenuConfig)(direction, getEditorContainerWidth, !shouldMoveDisabled, hasMergedCellsInTable, editorView, tableMap, index, targetCellPosition, selectionRect, editorAnalyticsAPI, pluginConfig === null || pluginConfig === void 0 ? void 0 : pluginConfig.isHeaderRowRequired, tablePreserveWidth);
205
211
  var _convertToDropdownIte = convertToDropdownItems(dragMenuConfig, formatMessage, selectionRect),
206
212
  menuItems = _convertToDropdownIte.menuItems,
207
213
  menuCallback = _convertToDropdownIte.menuCallback;
@@ -457,12 +463,17 @@ var DragMenu = exports.DragMenu = /*#__PURE__*/_react.default.memo(function (_re
457
463
  section: {
458
464
  hasSeparator: true
459
465
  },
460
- target: target,
461
466
  items: menuItems,
462
467
  onItemActivated: handleMenuItemActivated,
463
468
  onMouseEnter: handleItemMouseEnter,
464
469
  onMouseLeave: handleItemMouseLeave,
465
- handleClose: closeMenu
470
+ handleClose: closeMenu,
471
+ fitHeight: fitHeight,
472
+ fitWidth: fitWidth,
473
+ direction: direction,
474
+ mountPoint: mountPoint,
475
+ boundariesElement: boundariesElement,
476
+ scrollableElement: scrollableElement
466
477
  });
467
478
  });
468
479
  var _default = exports.default = (0, _reactIntlNext.injectIntl)(DragMenu);
@@ -1,32 +1,55 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ var _typeof = require("@babel/runtime/helpers/typeof");
4
5
  Object.defineProperty(exports, "__esModule", {
5
6
  value: true
6
7
  });
7
8
  exports.DropdownMenu = void 0;
8
- var _react = _interopRequireDefault(require("react"));
9
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
10
+ var _react = _interopRequireWildcard(require("react"));
9
11
  var _ui = require("@atlaskit/editor-common/ui");
10
12
  var _uiMenu = require("@atlaskit/editor-common/ui-menu");
11
13
  var _uiReact = require("@atlaskit/editor-common/ui-react");
14
+ var _editorSharedStyles = require("@atlaskit/editor-shared-styles");
12
15
  var _menu = require("@atlaskit/menu");
13
16
  var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
14
17
  var _consts = require("../consts");
18
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
19
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
20
+ /* eslint-disable @atlaskit/design-system/prefer-primitives */
21
+
15
22
  var DropListWithOutsideListeners = (0, _uiReact.withReactEditorViewOuterListeners)(_ui.DropList);
16
23
  var DropdownMenu = exports.DropdownMenu = function DropdownMenu(_ref) {
17
- var target = _ref.target,
18
- items = _ref.items,
24
+ var items = _ref.items,
19
25
  section = _ref.section,
20
26
  disableKeyboardHandling = _ref.disableKeyboardHandling,
21
27
  onItemActivated = _ref.onItemActivated,
22
28
  handleClose = _ref.handleClose,
23
29
  onMouseEnter = _ref.onMouseEnter,
24
- onMouseLeave = _ref.onMouseLeave;
30
+ onMouseLeave = _ref.onMouseLeave,
31
+ fitWidth = _ref.fitWidth,
32
+ fitHeight = _ref.fitHeight,
33
+ direction = _ref.direction,
34
+ mountPoint = _ref.mountPoint,
35
+ boundariesElement = _ref.boundariesElement,
36
+ scrollableElement = _ref.scrollableElement;
37
+ var _useState = (0, _react.useState)(['bottom', 'left']),
38
+ _useState2 = (0, _slicedToArray2.default)(_useState, 2),
39
+ popupPlacement = _useState2[0],
40
+ setPopupPlacement = _useState2[1];
41
+ var _useState3 = (0, _react.useState)(null),
42
+ _useState4 = (0, _slicedToArray2.default)(_useState3, 2),
43
+ targetRefDiv = _useState4[0],
44
+ setTargetRefDiv = _useState4[1];
45
+ var handleRef = function handleRef(ref) {
46
+ setTargetRefDiv(ref);
47
+ };
25
48
  var innerMenu = function innerMenu() {
26
49
  return /*#__PURE__*/_react.default.createElement(DropListWithOutsideListeners, {
27
50
  isOpen: true,
28
51
  shouldFitContainer: true,
29
- position: ['bottom', 'left'].join(' '),
52
+ position: popupPlacement.join(' '),
30
53
  handleClickOutside: function handleClickOutside() {
31
54
  return handleClose('editor');
32
55
  },
@@ -41,7 +64,7 @@ var DropdownMenu = exports.DropdownMenu = function DropdownMenu(_ref) {
41
64
  e.stopPropagation();
42
65
  }
43
66
  },
44
- targetRef: target
67
+ targetRef: targetRefDiv
45
68
  }, /*#__PURE__*/_react.default.createElement("div", {
46
69
  style: {
47
70
  height: 0,
@@ -70,7 +93,29 @@ var DropdownMenu = exports.DropdownMenu = function DropdownMenu(_ref) {
70
93
  if (disableKeyboardHandling) {
71
94
  return innerMenu();
72
95
  }
73
- return /*#__PURE__*/_react.default.createElement(_uiMenu.ArrowKeyNavigationProvider, {
96
+
97
+ // more offsets calculation as offsets depend on the direction and updated placement here
98
+ var offsetY = direction === 'row' ? popupPlacement[0] === 'bottom' ? -8 : -34 : 0;
99
+ var offsetX = direction === 'column' ? popupPlacement[1] === 'left' ? 0 : -7 : 0;
100
+ return /*#__PURE__*/_react.default.createElement("div", {
101
+ className: "drag-dropdown-menu-wrapper"
102
+ }, /*#__PURE__*/_react.default.createElement("div", {
103
+ className: "drag-dropdown-menu-popup-ref",
104
+ ref: handleRef
105
+ }), /*#__PURE__*/_react.default.createElement(_ui.Popup, {
106
+ target: targetRefDiv,
107
+ mountTo: mountPoint,
108
+ boundariesElement: boundariesElement,
109
+ scrollableElement: scrollableElement,
110
+ onPlacementChanged: function onPlacementChanged(placement) {
111
+ setPopupPlacement(placement);
112
+ },
113
+ fitHeight: fitHeight,
114
+ fitWidth: fitWidth,
115
+ zIndex: _editorSharedStyles.akEditorFloatingPanelZIndex,
116
+ offset: [offsetX, offsetY],
117
+ allowOutOfBounds: true // required as this popup is child of a parent popup, should be allowed to be out of bound of the parent popup, otherwise horizontal offset is not right
118
+ }, /*#__PURE__*/_react.default.createElement(_uiMenu.ArrowKeyNavigationProvider, {
74
119
  closeOnTab: true,
75
120
  type: _uiMenu.ArrowKeyNavigationType.MENU,
76
121
  onSelection: function onSelection(index) {
@@ -119,5 +164,5 @@ var DropdownMenu = exports.DropdownMenu = function DropdownMenu(_ref) {
119
164
  });
120
165
  }
121
166
  }
122
- }, innerMenu());
167
+ }, innerMenu())));
123
168
  };