@atlaskit/editor-plugin-table 7.5.3 → 7.5.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (229) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/dist/cjs/commands/column-resize.js +3 -3
  3. package/dist/cjs/commands/delete.js +2 -2
  4. package/dist/cjs/commands/insert.js +15 -15
  5. package/dist/cjs/commands-with-analytics.js +7 -7
  6. package/dist/cjs/event-handlers.js +2 -2
  7. package/dist/cjs/nodeviews/TableComponent.js +46 -59
  8. package/dist/cjs/nodeviews/TableContainer.js +5 -5
  9. package/dist/cjs/nodeviews/TableResizer.js +12 -12
  10. package/dist/cjs/nodeviews/table.js +9 -9
  11. package/dist/cjs/plugin.js +58 -56
  12. package/dist/cjs/pm-plugins/drag-and-drop/plugin.js +13 -13
  13. package/dist/cjs/pm-plugins/keymap.js +6 -8
  14. package/dist/cjs/pm-plugins/main.js +4 -6
  15. package/dist/cjs/pm-plugins/sticky-headers/plugin.js +2 -3
  16. package/dist/cjs/pm-plugins/table-resizing/event-handlers.js +12 -12
  17. package/dist/cjs/pm-plugins/table-resizing/utils/colgroup.js +2 -2
  18. package/dist/cjs/pm-plugins/table-resizing/utils/consts.js +4 -2
  19. package/dist/cjs/pm-plugins/table-resizing/utils/index.js +2 -2
  20. package/dist/cjs/pm-plugins/table-resizing/utils/misc.js +3 -3
  21. package/dist/cjs/pm-plugins/table-resizing/utils/resize-column.js +3 -3
  22. package/dist/cjs/pm-plugins/table-resizing/utils/resize-state.js +11 -12
  23. package/dist/cjs/pm-plugins/table-resizing/utils/scale-table.js +13 -13
  24. package/dist/cjs/pm-plugins/table-width.js +6 -2
  25. package/dist/cjs/toolbar.js +21 -21
  26. package/dist/cjs/transforms/column-width.js +4 -4
  27. package/dist/cjs/transforms/delete-columns.js +2 -2
  28. package/dist/cjs/ui/ColumnResizeWidget/index.js +4 -5
  29. package/dist/cjs/ui/FloatingContextualMenu/ContextualMenu.js +53 -55
  30. package/dist/cjs/ui/FloatingContextualMenu/index.js +2 -4
  31. package/dist/cjs/ui/FloatingDragMenu/DragMenu.js +2 -2
  32. package/dist/cjs/ui/FloatingDragMenu/index.js +6 -6
  33. package/dist/cjs/ui/FloatingInsertButton/index.js +6 -7
  34. package/dist/cjs/utils/create.js +2 -5
  35. package/dist/cjs/utils/drag-menu.js +4 -4
  36. package/dist/cjs/utils/guidelines.js +5 -2
  37. package/dist/cjs/utils/snapping.js +14 -1
  38. package/dist/es2019/commands/column-resize.js +3 -3
  39. package/dist/es2019/commands/delete.js +2 -2
  40. package/dist/es2019/commands/insert.js +12 -12
  41. package/dist/es2019/commands-with-analytics.js +6 -6
  42. package/dist/es2019/event-handlers.js +2 -2
  43. package/dist/es2019/nodeviews/TableComponent.js +25 -36
  44. package/dist/es2019/nodeviews/TableContainer.js +6 -6
  45. package/dist/es2019/nodeviews/TableResizer.js +14 -14
  46. package/dist/es2019/nodeviews/table.js +9 -9
  47. package/dist/es2019/plugin.js +17 -17
  48. package/dist/es2019/pm-plugins/drag-and-drop/plugin.js +6 -6
  49. package/dist/es2019/pm-plugins/keymap.js +5 -8
  50. package/dist/es2019/pm-plugins/main.js +3 -5
  51. package/dist/es2019/pm-plugins/sticky-headers/plugin.js +1 -1
  52. package/dist/es2019/pm-plugins/table-resizing/event-handlers.js +5 -5
  53. package/dist/es2019/pm-plugins/table-resizing/utils/colgroup.js +2 -2
  54. package/dist/es2019/pm-plugins/table-resizing/utils/consts.js +3 -1
  55. package/dist/es2019/pm-plugins/table-resizing/utils/index.js +1 -1
  56. package/dist/es2019/pm-plugins/table-resizing/utils/misc.js +2 -2
  57. package/dist/es2019/pm-plugins/table-resizing/utils/resize-column.js +3 -2
  58. package/dist/es2019/pm-plugins/table-resizing/utils/resize-state.js +12 -13
  59. package/dist/es2019/pm-plugins/table-resizing/utils/scale-table.js +13 -13
  60. package/dist/es2019/pm-plugins/table-width.js +6 -2
  61. package/dist/es2019/toolbar.js +15 -15
  62. package/dist/es2019/transforms/column-width.js +5 -5
  63. package/dist/es2019/transforms/delete-columns.js +2 -2
  64. package/dist/es2019/ui/ColumnResizeWidget/index.js +0 -1
  65. package/dist/es2019/ui/FloatingContextualMenu/ContextualMenu.js +9 -12
  66. package/dist/es2019/ui/FloatingContextualMenu/index.js +2 -4
  67. package/dist/es2019/ui/FloatingDragMenu/DragMenu.js +2 -2
  68. package/dist/es2019/ui/FloatingDragMenu/index.js +5 -5
  69. package/dist/es2019/ui/FloatingInsertButton/index.js +5 -6
  70. package/dist/es2019/utils/create.js +2 -5
  71. package/dist/es2019/utils/drag-menu.js +4 -4
  72. package/dist/es2019/utils/guidelines.js +3 -2
  73. package/dist/es2019/utils/snapping.js +12 -1
  74. package/dist/esm/commands/column-resize.js +3 -3
  75. package/dist/esm/commands/delete.js +2 -2
  76. package/dist/esm/commands/insert.js +15 -15
  77. package/dist/esm/commands-with-analytics.js +7 -7
  78. package/dist/esm/event-handlers.js +2 -2
  79. package/dist/esm/nodeviews/TableComponent.js +45 -58
  80. package/dist/esm/nodeviews/TableContainer.js +6 -6
  81. package/dist/esm/nodeviews/TableResizer.js +14 -14
  82. package/dist/esm/nodeviews/table.js +9 -9
  83. package/dist/esm/plugin.js +58 -56
  84. package/dist/esm/pm-plugins/drag-and-drop/plugin.js +13 -13
  85. package/dist/esm/pm-plugins/keymap.js +6 -8
  86. package/dist/esm/pm-plugins/main.js +4 -6
  87. package/dist/esm/pm-plugins/sticky-headers/plugin.js +2 -3
  88. package/dist/esm/pm-plugins/table-resizing/event-handlers.js +12 -12
  89. package/dist/esm/pm-plugins/table-resizing/utils/colgroup.js +2 -2
  90. package/dist/esm/pm-plugins/table-resizing/utils/consts.js +3 -1
  91. package/dist/esm/pm-plugins/table-resizing/utils/index.js +1 -1
  92. package/dist/esm/pm-plugins/table-resizing/utils/misc.js +2 -2
  93. package/dist/esm/pm-plugins/table-resizing/utils/resize-column.js +4 -3
  94. package/dist/esm/pm-plugins/table-resizing/utils/resize-state.js +13 -14
  95. package/dist/esm/pm-plugins/table-resizing/utils/scale-table.js +13 -13
  96. package/dist/esm/pm-plugins/table-width.js +6 -2
  97. package/dist/esm/toolbar.js +21 -21
  98. package/dist/esm/transforms/column-width.js +5 -5
  99. package/dist/esm/transforms/delete-columns.js +2 -2
  100. package/dist/esm/ui/ColumnResizeWidget/index.js +0 -1
  101. package/dist/esm/ui/FloatingContextualMenu/ContextualMenu.js +53 -55
  102. package/dist/esm/ui/FloatingContextualMenu/index.js +2 -4
  103. package/dist/esm/ui/FloatingDragMenu/DragMenu.js +2 -2
  104. package/dist/esm/ui/FloatingDragMenu/index.js +6 -6
  105. package/dist/esm/ui/FloatingInsertButton/index.js +6 -7
  106. package/dist/esm/utils/create.js +2 -5
  107. package/dist/esm/utils/drag-menu.js +4 -4
  108. package/dist/esm/utils/guidelines.js +5 -2
  109. package/dist/esm/utils/snapping.js +14 -1
  110. package/dist/types/commands/column-resize.d.ts +1 -1
  111. package/dist/types/commands/delete.d.ts +1 -1
  112. package/dist/types/commands/insert.d.ts +7 -7
  113. package/dist/types/commands-with-analytics.d.ts +3 -3
  114. package/dist/types/event-handlers.d.ts +1 -1
  115. package/dist/types/nodeviews/TableComponent.d.ts +2 -3
  116. package/dist/types/nodeviews/TableContainer.d.ts +4 -4
  117. package/dist/types/nodeviews/TableResizer.d.ts +2 -2
  118. package/dist/types/nodeviews/table.d.ts +1 -1
  119. package/dist/types/nodeviews/types.d.ts +1 -0
  120. package/dist/types/plugin.d.ts +1 -0
  121. package/dist/types/pm-plugins/drag-and-drop/plugin.d.ts +1 -2
  122. package/dist/types/pm-plugins/keymap.d.ts +2 -2
  123. package/dist/types/pm-plugins/main.d.ts +1 -1
  124. package/dist/types/pm-plugins/sticky-headers/plugin.d.ts +2 -3
  125. package/dist/types/pm-plugins/table-resizing/utils/colgroup.d.ts +1 -1
  126. package/dist/types/pm-plugins/table-resizing/utils/consts.d.ts +1 -0
  127. package/dist/types/pm-plugins/table-resizing/utils/index.d.ts +1 -1
  128. package/dist/types/pm-plugins/table-resizing/utils/misc.d.ts +1 -1
  129. package/dist/types/pm-plugins/table-resizing/utils/resize-column.d.ts +2 -1
  130. package/dist/types/pm-plugins/table-resizing/utils/resize-state.d.ts +4 -4
  131. package/dist/types/pm-plugins/table-resizing/utils/scale-table.d.ts +4 -4
  132. package/dist/types/pm-plugins/table-width.d.ts +1 -2
  133. package/dist/types/toolbar.d.ts +2 -2
  134. package/dist/types/transforms/column-width.d.ts +1 -1
  135. package/dist/types/transforms/delete-columns.d.ts +1 -1
  136. package/dist/types/types.d.ts +1 -0
  137. package/dist/types/ui/ColumnResizeWidget/index.d.ts +2 -2
  138. package/dist/types/ui/FloatingContextualMenu/index.d.ts +1 -1
  139. package/dist/types/ui/FloatingDragMenu/DragMenu.d.ts +2 -2
  140. package/dist/types/ui/FloatingDragMenu/index.d.ts +2 -3
  141. package/dist/types/ui/FloatingInsertButton/index.d.ts +1 -2
  142. package/dist/types/ui/TableFloatingColumnControls/ColumnDropTargets/ColumnDropTarget.d.ts +2 -2
  143. package/dist/types/ui/TableFloatingColumnControls/ColumnDropTargets/index.d.ts +2 -2
  144. package/dist/types/ui/TableFloatingColumnControls/index.d.ts +2 -2
  145. package/dist/types/utils/create.d.ts +1 -2
  146. package/dist/types/utils/drag-menu.d.ts +2 -2
  147. package/dist/types/utils/guidelines.d.ts +1 -0
  148. package/dist/types/utils/snapping.d.ts +2 -0
  149. package/dist/types-ts4.5/commands/column-resize.d.ts +1 -1
  150. package/dist/types-ts4.5/commands/delete.d.ts +1 -1
  151. package/dist/types-ts4.5/commands/insert.d.ts +7 -7
  152. package/dist/types-ts4.5/commands-with-analytics.d.ts +3 -3
  153. package/dist/types-ts4.5/event-handlers.d.ts +1 -1
  154. package/dist/types-ts4.5/nodeviews/TableComponent.d.ts +2 -3
  155. package/dist/types-ts4.5/nodeviews/TableContainer.d.ts +4 -4
  156. package/dist/types-ts4.5/nodeviews/TableResizer.d.ts +2 -2
  157. package/dist/types-ts4.5/nodeviews/table.d.ts +1 -1
  158. package/dist/types-ts4.5/nodeviews/types.d.ts +1 -0
  159. package/dist/types-ts4.5/plugin.d.ts +1 -0
  160. package/dist/types-ts4.5/pm-plugins/drag-and-drop/plugin.d.ts +1 -2
  161. package/dist/types-ts4.5/pm-plugins/keymap.d.ts +2 -2
  162. package/dist/types-ts4.5/pm-plugins/main.d.ts +1 -1
  163. package/dist/types-ts4.5/pm-plugins/sticky-headers/plugin.d.ts +2 -3
  164. package/dist/types-ts4.5/pm-plugins/table-resizing/utils/colgroup.d.ts +1 -1
  165. package/dist/types-ts4.5/pm-plugins/table-resizing/utils/consts.d.ts +1 -0
  166. package/dist/types-ts4.5/pm-plugins/table-resizing/utils/index.d.ts +1 -1
  167. package/dist/types-ts4.5/pm-plugins/table-resizing/utils/misc.d.ts +1 -1
  168. package/dist/types-ts4.5/pm-plugins/table-resizing/utils/resize-column.d.ts +2 -1
  169. package/dist/types-ts4.5/pm-plugins/table-resizing/utils/resize-state.d.ts +4 -4
  170. package/dist/types-ts4.5/pm-plugins/table-resizing/utils/scale-table.d.ts +4 -4
  171. package/dist/types-ts4.5/pm-plugins/table-width.d.ts +1 -2
  172. package/dist/types-ts4.5/toolbar.d.ts +2 -2
  173. package/dist/types-ts4.5/transforms/column-width.d.ts +1 -1
  174. package/dist/types-ts4.5/transforms/delete-columns.d.ts +1 -1
  175. package/dist/types-ts4.5/types.d.ts +1 -0
  176. package/dist/types-ts4.5/ui/ColumnResizeWidget/index.d.ts +2 -2
  177. package/dist/types-ts4.5/ui/FloatingContextualMenu/index.d.ts +1 -1
  178. package/dist/types-ts4.5/ui/FloatingDragMenu/DragMenu.d.ts +2 -2
  179. package/dist/types-ts4.5/ui/FloatingDragMenu/index.d.ts +2 -3
  180. package/dist/types-ts4.5/ui/FloatingInsertButton/index.d.ts +1 -2
  181. package/dist/types-ts4.5/ui/TableFloatingColumnControls/ColumnDropTargets/ColumnDropTarget.d.ts +2 -2
  182. package/dist/types-ts4.5/ui/TableFloatingColumnControls/ColumnDropTargets/index.d.ts +2 -2
  183. package/dist/types-ts4.5/ui/TableFloatingColumnControls/index.d.ts +2 -2
  184. package/dist/types-ts4.5/utils/create.d.ts +1 -2
  185. package/dist/types-ts4.5/utils/drag-menu.d.ts +2 -2
  186. package/dist/types-ts4.5/utils/guidelines.d.ts +1 -0
  187. package/dist/types-ts4.5/utils/snapping.d.ts +2 -0
  188. package/package.json +2 -2
  189. package/src/commands/column-resize.ts +4 -3
  190. package/src/commands/delete.ts +2 -2
  191. package/src/commands/insert.ts +15 -27
  192. package/src/commands-with-analytics.ts +6 -9
  193. package/src/event-handlers.ts +2 -2
  194. package/src/nodeviews/TableComponent.tsx +31 -46
  195. package/src/nodeviews/TableContainer.tsx +16 -7
  196. package/src/nodeviews/TableResizer.tsx +44 -24
  197. package/src/nodeviews/table.tsx +6 -5
  198. package/src/nodeviews/types.ts +1 -0
  199. package/src/plugin.tsx +12 -28
  200. package/src/pm-plugins/drag-and-drop/plugin.ts +10 -15
  201. package/src/pm-plugins/keymap.ts +6 -13
  202. package/src/pm-plugins/main.ts +3 -3
  203. package/src/pm-plugins/sticky-headers/plugin.ts +2 -11
  204. package/src/pm-plugins/table-resizing/event-handlers.ts +6 -4
  205. package/src/pm-plugins/table-resizing/utils/colgroup.ts +2 -2
  206. package/src/pm-plugins/table-resizing/utils/consts.ts +2 -0
  207. package/src/pm-plugins/table-resizing/utils/index.ts +1 -1
  208. package/src/pm-plugins/table-resizing/utils/misc.ts +2 -2
  209. package/src/pm-plugins/table-resizing/utils/resize-column.ts +5 -2
  210. package/src/pm-plugins/table-resizing/utils/resize-state.ts +18 -13
  211. package/src/pm-plugins/table-resizing/utils/scale-table.ts +14 -14
  212. package/src/pm-plugins/table-width.ts +4 -6
  213. package/src/toolbar.tsx +16 -19
  214. package/src/transforms/column-width.ts +7 -6
  215. package/src/transforms/delete-columns.ts +2 -2
  216. package/src/types.ts +1 -0
  217. package/src/ui/ColumnResizeWidget/index.tsx +2 -4
  218. package/src/ui/FloatingContextualMenu/ContextualMenu.tsx +11 -16
  219. package/src/ui/FloatingContextualMenu/index.tsx +0 -2
  220. package/src/ui/FloatingDragMenu/DragMenu.tsx +3 -3
  221. package/src/ui/FloatingDragMenu/index.tsx +4 -8
  222. package/src/ui/FloatingInsertButton/index.tsx +11 -22
  223. package/src/ui/TableFloatingColumnControls/ColumnDropTargets/ColumnDropTarget.tsx +2 -2
  224. package/src/ui/TableFloatingColumnControls/ColumnDropTargets/index.tsx +2 -2
  225. package/src/ui/TableFloatingColumnControls/index.tsx +2 -2
  226. package/src/utils/create.ts +2 -5
  227. package/src/utils/drag-menu.ts +8 -13
  228. package/src/utils/guidelines.ts +12 -1
  229. package/src/utils/snapping.ts +36 -0
@@ -102,7 +102,7 @@ export default class TableView extends ReactNodeView<Props> {
102
102
  private resizeObserver?: ResizeObserver;
103
103
  eventDispatcher?: EventDispatcher;
104
104
  getPos: getPosHandlerNode;
105
- getEditorFeatureFlags: GetEditorFeatureFlags;
105
+ options;
106
106
 
107
107
  constructor(props: Props) {
108
108
  super(
@@ -119,7 +119,7 @@ export default class TableView extends ReactNodeView<Props> {
119
119
  );
120
120
  this.getPos = props.getPos;
121
121
  this.eventDispatcher = props.eventDispatcher;
122
- this.getEditorFeatureFlags = props.getEditorFeatureFlags;
122
+ this.options = props.options;
123
123
  }
124
124
 
125
125
  getContentDOM() {
@@ -133,9 +133,8 @@ export default class TableView extends ReactNodeView<Props> {
133
133
 
134
134
  if (rendered.dom) {
135
135
  this.table = rendered.dom;
136
- const { tablePreserveWidth = false } = this.getEditorFeatureFlags();
137
136
  // Preserve Table Width cannot have inline width set on the table
138
- if (!tablePreserveWidth) {
137
+ if (!this.options?.isTableScalingEnabled) {
139
138
  const tableInlineWidth = getInlineWidth(
140
139
  this.node,
141
140
  this.reactComponentProps.options,
@@ -255,6 +254,7 @@ export default class TableView extends ReactNodeView<Props> {
255
254
  isHeaderRowEnabled={pluginState!.isHeaderRowEnabled}
256
255
  isHeaderColumnEnabled={pluginState!.isHeaderColumnEnabled}
257
256
  isDragAndDropEnabled={pluginState!.isDragAndDropEnabled}
257
+ isTableScalingEnabled={pluginState!.isTableScalingEnabled}
258
258
  tableActive={tableActive}
259
259
  ordering={pluginState!.ordering as TableColumnOrdering}
260
260
  isResizing={isResizing}
@@ -264,7 +264,6 @@ export default class TableView extends ReactNodeView<Props> {
264
264
  getEditorFeatureFlags={props.getEditorFeatureFlags}
265
265
  dispatchAnalyticsEvent={props.dispatchAnalyticsEvent}
266
266
  pluginInjectionApi={props.pluginInjectionApi}
267
- tableRef={this.table}
268
267
  />
269
268
  );
270
269
  }}
@@ -362,6 +361,7 @@ export const createTableView = (
362
361
  wasFullWidthModeEnabled,
363
362
  isTableResizingEnabled,
364
363
  isDragAndDropEnabled,
364
+ isTableScalingEnabled,
365
365
  } = getPluginState(view.state);
366
366
  const { allowColumnResizing } = getPluginConfig(pluginConfig);
367
367
  const hasIntlContext = true;
@@ -379,6 +379,7 @@ export const createTableView = (
379
379
  wasFullWidthModeEnabled,
380
380
  isTableResizingEnabled,
381
381
  isDragAndDropEnabled,
382
+ isTableScalingEnabled,
382
383
  },
383
384
  getEditorContainerWidth,
384
385
  getEditorFeatureFlags,
@@ -16,6 +16,7 @@ export type TableOptions = {
16
16
  wasFullWidthModeEnabled?: boolean;
17
17
  isTableResizingEnabled?: boolean;
18
18
  isDragAndDropEnabled?: boolean;
19
+ isTableScalingEnabled?: boolean;
19
20
  };
20
21
 
21
22
  export interface Props {
package/src/plugin.tsx CHANGED
@@ -52,6 +52,7 @@ import {
52
52
  } from './pm-plugins/drag-and-drop';
53
53
  import { keymapPlugin } from './pm-plugins/keymap';
54
54
  import { createPlugin } from './pm-plugins/main';
55
+ import { getPluginState } from './pm-plugins/plugin-factory';
55
56
  import { pluginKey } from './pm-plugins/plugin-key';
56
57
  import { createPlugin as createTableSafariDeleteCompositionTextIssueWorkaroundPlugin } from './pm-plugins/safari-delete-composition-text-issue-workaround';
57
58
  import {
@@ -92,6 +93,7 @@ export interface TablePluginOptions {
92
93
  fullWidthEnabled?: boolean;
93
94
  wasFullWidthEnabled?: boolean;
94
95
  getEditorFeatureFlags?: GetEditorFeatureFlags;
96
+ isTableScalingEnabled?: boolean;
95
97
  }
96
98
 
97
99
  type InsertTableAction = (analyticsPayload: AnalyticsEventPayload) => Command;
@@ -157,8 +159,8 @@ const tablesPlugin: TablePlugin = ({ config: options, api }) => {
157
159
  (analyticsPayload): Command =>
158
160
  (state, dispatch) => {
159
161
  const node = createTableWithWidth(
162
+ options?.isTableScalingEnabled,
160
163
  options?.fullWidthEnabled,
161
- options?.getEditorFeatureFlags,
162
164
  )(state.schema);
163
165
 
164
166
  return (
@@ -179,7 +181,7 @@ const tablesPlugin: TablePlugin = ({ config: options, api }) => {
179
181
  commands: {
180
182
  insertTableWithSize: insertTableWithSize(
181
183
  options?.fullWidthEnabled,
182
- options?.getEditorFeatureFlags,
184
+ options?.isTableScalingEnabled,
183
185
  api?.analytics?.actions,
184
186
  ),
185
187
  },
@@ -216,6 +218,7 @@ const tablesPlugin: TablePlugin = ({ config: options, api }) => {
216
218
  tableOptions,
217
219
  getEditorFeatureFlags,
218
220
  dragAndDropEnabled,
221
+ isTableScalingEnabled,
219
222
  } = options || ({} as TablePluginOptions);
220
223
  return createPlugin(
221
224
  dispatchAnalyticsEvent,
@@ -233,6 +236,7 @@ const tablesPlugin: TablePlugin = ({ config: options, api }) => {
233
236
  dragAndDropEnabled,
234
237
  editorAnalyticsAPI,
235
238
  api,
239
+ isTableScalingEnabled,
236
240
  );
237
241
  },
238
242
  },
@@ -261,14 +265,14 @@ const tablesPlugin: TablePlugin = ({ config: options, api }) => {
261
265
  {
262
266
  name: 'tableKeymap',
263
267
  plugin: () => {
264
- const { dragAndDropEnabled, getEditorFeatureFlags } =
268
+ const { dragAndDropEnabled, isTableScalingEnabled = false } =
265
269
  options || ({} as TablePluginOptions);
266
270
 
267
271
  return keymapPlugin(
268
272
  defaultGetEditorContainerWidth,
269
273
  editorAnalyticsAPI,
270
- getEditorFeatureFlags,
271
274
  dragAndDropEnabled,
275
+ isTableScalingEnabled,
272
276
  );
273
277
  },
274
278
  },
@@ -308,26 +312,14 @@ const tablesPlugin: TablePlugin = ({ config: options, api }) => {
308
312
  name: 'tableStickyHeaders',
309
313
  plugin: ({ dispatch, eventDispatcher }) =>
310
314
  options && options.tableOptions.stickyHeaders
311
- ? createStickyHeadersPlugin(
312
- dispatch,
313
- eventDispatcher,
314
- () => [],
315
- options?.getEditorFeatureFlags ||
316
- defaultGetEditorFeatureFlags,
317
- )
315
+ ? createStickyHeadersPlugin(dispatch, () => [])
318
316
  : undefined,
319
317
  },
320
318
  {
321
319
  name: 'tableDragAndDrop',
322
320
  plugin: ({ dispatch }) => {
323
- const { getEditorFeatureFlags } =
324
- options || ({} as TablePluginOptions);
325
321
  return options?.dragAndDropEnabled
326
- ? createDragAndDropPlugin(
327
- dispatch,
328
- getEditorFeatureFlags,
329
- editorAnalyticsAPI,
330
- )
322
+ ? createDragAndDropPlugin(dispatch, editorAnalyticsAPI)
331
323
  : undefined;
332
324
  },
333
325
  },
@@ -343,7 +335,6 @@ const tablesPlugin: TablePlugin = ({ config: options, api }) => {
343
335
  dispatch,
344
336
  dispatchAnalyticsEvent,
345
337
  options?.fullWidthEnabled ?? false,
346
- options?.getEditorFeatureFlags,
347
338
  )
348
339
  : undefined,
349
340
  },
@@ -511,10 +502,6 @@ const tablesPlugin: TablePlugin = ({ config: options, api }) => {
511
502
  dispatchAnalyticsEvent={dispatchAnalyticsEvent}
512
503
  editorAnalyticsAPI={editorAnalyticsAPI}
513
504
  getEditorContainerWidth={defaultGetEditorContainerWidth}
514
- getEditorFeatureFlags={
515
- options?.getEditorFeatureFlags ||
516
- defaultGetEditorFeatureFlags
517
- }
518
505
  />
519
506
  )}
520
507
  {options?.allowContextualMenu && (
@@ -548,10 +535,6 @@ const tablesPlugin: TablePlugin = ({ config: options, api }) => {
548
535
  editorAnalyticsAPI={editorAnalyticsAPI}
549
536
  stickyHeaders={stickyHeader}
550
537
  pluginConfig={pluginConfig}
551
- getEditorFeatureFlags={
552
- options?.getEditorFeatureFlags ||
553
- defaultGetEditorFeatureFlags
554
- }
555
538
  />
556
539
  )}
557
540
  {allowControls && !isDragAndDropEnabled && !isResizing && (
@@ -591,11 +574,12 @@ const tablesPlugin: TablePlugin = ({ config: options, api }) => {
591
574
  action(insert, state) {
592
575
  // see comment on tablesPlugin.getSharedState on usage
593
576
  const tableState = api?.table?.sharedState.currentState();
577
+ const { isTableScalingEnabled = false } = getPluginState(state);
594
578
 
595
579
  const tr = insert(
596
580
  createTableWithWidth(
581
+ isTableScalingEnabled,
597
582
  tableState?.isFullWidthModeEnabled,
598
- options?.getEditorFeatureFlags,
599
583
  )(state.schema),
600
584
  );
601
585
  editorAnalyticsAPI?.attachAnalyticsEvent({
@@ -2,7 +2,6 @@ import { INPUT_METHOD, TABLE_STATUS } from '@atlaskit/editor-common/analytics';
2
2
  import type { EditorAnalyticsAPI } from '@atlaskit/editor-common/analytics';
3
3
  import type { Dispatch } from '@atlaskit/editor-common/event-dispatcher';
4
4
  import { SafePlugin } from '@atlaskit/editor-common/safe-plugin';
5
- import type { GetEditorFeatureFlags } from '@atlaskit/editor-common/types';
6
5
  import type { EditorView } from '@atlaskit/editor-prosemirror/view';
7
6
  import { DecorationSet } from '@atlaskit/editor-prosemirror/view';
8
7
  import { CellSelection } from '@atlaskit/editor-tables/cell-selection';
@@ -34,11 +33,7 @@ import { createPluginState, getPluginState } from './plugin-factory';
34
33
  import { pluginKey } from './plugin-key';
35
34
  import { getDraggableDataFromEvent } from './utils/monitor';
36
35
 
37
- const destroyFn = (
38
- editorView: EditorView,
39
- editorAnalyticsAPI: any,
40
- getEditorFeatureFlags?: GetEditorFeatureFlags,
41
- ) => {
36
+ const destroyFn = (editorView: EditorView, editorAnalyticsAPI: any) => {
42
37
  const editorPageScrollContainer = document.querySelector(
43
38
  '.fabric-editor-popup-scroll-parent',
44
39
  );
@@ -223,9 +218,14 @@ const destroyFn = (
223
218
  editorView.state,
224
219
  );
225
220
  if (tableRef && tableNode) {
226
- const { tablePreserveWidth = false } =
227
- getEditorFeatureFlags?.() || {};
228
- insertColgroupFromNode(tableRef, tableNode, tablePreserveWidth);
221
+ const { isTableScalingEnabled = false } = getTablePluginState(
222
+ editorView.state,
223
+ );
224
+ insertColgroupFromNode(
225
+ tableRef,
226
+ tableNode,
227
+ isTableScalingEnabled,
228
+ );
229
229
  }
230
230
  }
231
231
 
@@ -238,7 +238,6 @@ const destroyFn = (
238
238
 
239
239
  export const createPlugin = (
240
240
  dispatch: Dispatch,
241
- getEditorFeatureFlags?: GetEditorFeatureFlags,
242
241
  editorAnalyticsAPI?: EditorAnalyticsAPI,
243
242
  ) => {
244
243
  return new SafePlugin({
@@ -311,11 +310,7 @@ export const createPlugin = (
311
310
  },
312
311
  view: (editorView: EditorView) => {
313
312
  return {
314
- destroy: destroyFn(
315
- editorView,
316
- editorAnalyticsAPI,
317
- getEditorFeatureFlags,
318
- ),
313
+ destroy: destroyFn(editorView, editorAnalyticsAPI),
319
314
  };
320
315
  },
321
316
  props: {
@@ -30,10 +30,7 @@ import {
30
30
  toggleTable,
31
31
  } from '@atlaskit/editor-common/keymaps';
32
32
  import type { SafePlugin } from '@atlaskit/editor-common/safe-plugin';
33
- import type {
34
- GetEditorContainerWidth,
35
- GetEditorFeatureFlags,
36
- } from '@atlaskit/editor-common/types';
33
+ import type { GetEditorContainerWidth } from '@atlaskit/editor-common/types';
37
34
  import { chainCommands } from '@atlaskit/editor-prosemirror/commands';
38
35
  import { keymap } from '@atlaskit/editor-prosemirror/keymap';
39
36
  import { getBooleanFF } from '@atlaskit/platform-feature-flags';
@@ -72,8 +69,8 @@ const createTableWithAnalytics = (
72
69
  export function keymapPlugin(
73
70
  getEditorContainerWidth: GetEditorContainerWidth,
74
71
  editorAnalyticsAPI: EditorAnalyticsAPI | undefined | null,
75
- getEditorFeatureFlags?: GetEditorFeatureFlags,
76
72
  dragAndDropEnabled?: boolean,
73
+ isTableScalingEnabled = false,
77
74
  ): SafePlugin {
78
75
  const list = {};
79
76
 
@@ -121,13 +118,13 @@ export function keymapPlugin(
121
118
 
122
119
  bindKeymapWithCommand(
123
120
  addColumnBefore.common!,
124
- addColumnBeforeCommand(getEditorContainerWidth),
121
+ addColumnBeforeCommand(isTableScalingEnabled),
125
122
  list,
126
123
  );
127
124
 
128
125
  bindKeymapWithCommand(
129
126
  addColumnAfter.common!,
130
- addColumnAfterCommand(getEditorContainerWidth),
127
+ addColumnAfterCommand(isTableScalingEnabled),
131
128
  list,
132
129
  );
133
130
 
@@ -182,10 +179,6 @@ export function keymapPlugin(
182
179
  }
183
180
 
184
181
  if (getBooleanFF('platform.editor.a11y-column-resizing_emcvz')) {
185
- const { tablePreserveWidth = false } = getEditorFeatureFlags
186
- ? getEditorFeatureFlags()
187
- : {};
188
-
189
182
  bindKeymapWithCommand(
190
183
  startColumnResizing.common!,
191
184
  initiateKeyboardColumnResizing,
@@ -201,7 +194,7 @@ export function keymapPlugin(
201
194
  changeColumnWidthByStepWithAnalytics(editorAnalyticsAPI)(
202
195
  -10,
203
196
  getEditorContainerWidth,
204
- tablePreserveWidth,
197
+ isTableScalingEnabled,
205
198
  INPUT_METHOD.SHORTCUT,
206
199
  ),
207
200
  list,
@@ -212,7 +205,7 @@ export function keymapPlugin(
212
205
  changeColumnWidthByStepWithAnalytics(editorAnalyticsAPI)(
213
206
  10,
214
207
  getEditorContainerWidth,
215
- tablePreserveWidth,
208
+ isTableScalingEnabled,
216
209
  INPUT_METHOD.SHORTCUT,
217
210
  ),
218
211
  list,
@@ -114,6 +114,7 @@ export const createPlugin = (
114
114
  dragAndDropEnabled?: boolean,
115
115
  editorAnalyticsAPI?: EditorAnalyticsAPI,
116
116
  pluginInjectionApi?: PluginInjectionAPI,
117
+ isTableScalingEnabled?: boolean,
117
118
  ) => {
118
119
  const state = createPluginState(dispatch, {
119
120
  pluginConfig,
@@ -127,6 +128,7 @@ export const createPlugin = (
127
128
  isHeaderRowEnabled: !!pluginConfig.allowHeaderRow,
128
129
  isHeaderColumnEnabled: false,
129
130
  isDragAndDropEnabled: dragAndDropEnabled,
131
+ isTableScalingEnabled: isTableScalingEnabled,
130
132
  ...defaultHoveredCell,
131
133
  ...defaultTableSelection,
132
134
  getIntl,
@@ -188,8 +190,6 @@ export const createPlugin = (
188
190
  });
189
191
  }
190
192
 
191
- const { tablePreserveWidth = false } = getEditorFeatureFlags();
192
-
193
193
  if (tr) {
194
194
  // "fixTables" removes empty rows as we don't allow that in schema
195
195
  const updatedTr = handleCut(
@@ -198,7 +198,7 @@ export const createPlugin = (
198
198
  newState,
199
199
  editorAnalyticsAPI,
200
200
  editorViewRef || undefined,
201
- tablePreserveWidth,
201
+ isTableScalingEnabled,
202
202
  );
203
203
  return fixTables(updatedTr) || updatedTr;
204
204
  }
@@ -1,19 +1,10 @@
1
- import type {
2
- Dispatch,
3
- EventDispatcher,
4
- } from '@atlaskit/editor-common/event-dispatcher';
1
+ import type { Dispatch } from '@atlaskit/editor-common/event-dispatcher';
5
2
  import { SafePlugin } from '@atlaskit/editor-common/safe-plugin';
6
- import type { GetEditorFeatureFlags } from '@atlaskit/editor-common/types';
7
3
 
8
4
  import { pluginKey } from './plugin-key';
9
5
  import { createPluginState } from './plugin-state';
10
6
 
11
- export const createPlugin = (
12
- dispatch: Dispatch,
13
- eventDispatcher: EventDispatcher,
14
- initialState = () => [],
15
- getEditorFeatureFlags: GetEditorFeatureFlags,
16
- ) => {
7
+ export const createPlugin = (dispatch: Dispatch, initialState = () => []) => {
17
8
  return new SafePlugin({
18
9
  state: createPluginState(dispatch, initialState),
19
10
  key: pluginKey,
@@ -49,7 +49,7 @@ export const handleMouseDown = (
49
49
  const { state, dispatch } = view;
50
50
  const editorDisabled = !view.editable;
51
51
  const domAtPos = view.domAtPos.bind(view);
52
- const { tablePreserveWidth = false } = getEditorFeatureFlags();
52
+ const { isTableScalingEnabled = false } = getTablePluginState(state);
53
53
 
54
54
  if (
55
55
  editorDisabled ||
@@ -119,7 +119,7 @@ export const handleMouseDown = (
119
119
  tableRef: dom,
120
120
  start,
121
121
  domAtPos,
122
- tablePreserveWidth,
122
+ isTableScalingEnabled: isTableScalingEnabled,
123
123
  });
124
124
 
125
125
  if (
@@ -209,8 +209,9 @@ export const handleMouseDown = (
209
209
  colIndex,
210
210
  clientX - startX,
211
211
  dom,
212
+ originalTable,
212
213
  resizingSelectedColumns ? selectedColumns : undefined,
213
- tablePreserveWidth,
214
+ isTableScalingEnabled,
214
215
  );
215
216
 
216
217
  const resizedDelta = clientX - startX;
@@ -292,8 +293,9 @@ export const handleMouseDown = (
292
293
  colIndex,
293
294
  clientX - dragging.startX,
294
295
  dom,
296
+ table,
295
297
  undefined,
296
- tablePreserveWidth,
298
+ isTableScalingEnabled,
297
299
  );
298
300
 
299
301
  updateControls()(state);
@@ -95,7 +95,7 @@ export const generateColgroup = (table: PmNode, tableRef?: HTMLElement) => {
95
95
  export const insertColgroupFromNode = (
96
96
  tableRef: HTMLTableElement,
97
97
  table: PmNode,
98
- tablePreserveWidth = false,
98
+ isTableScalingEnabled = false,
99
99
  shouldRemove = true,
100
100
  ): HTMLCollection => {
101
101
  let colgroup = tableRef.querySelector('colgroup') as HTMLElement;
@@ -105,7 +105,7 @@ export const insertColgroupFromNode = (
105
105
 
106
106
  colgroup = renderColgroupFromNode(
107
107
  table,
108
- tablePreserveWidth ? tableRef : undefined,
108
+ isTableScalingEnabled ? tableRef : undefined,
109
109
  );
110
110
  if (shouldRemove) {
111
111
  tableRef.insertBefore(colgroup, tableRef.firstChild);
@@ -2,3 +2,5 @@ export const COLUMN_MIN_WIDTH = 48;
2
2
  export const TABLE_DEFAULT_WIDTH = 760;
3
3
  export const TABLE_MAX_WIDTH = 1800;
4
4
  export const MAX_SCALING_PERCENT = 0.3;
5
+ // Used to calculate the width of a table using the Editor width
6
+ export const TABLE_EDITOR_MARGIN = 76;
@@ -31,7 +31,7 @@ export {
31
31
  domCellAround,
32
32
  getTableMaxWidth,
33
33
  getTableElementWidth,
34
- getTableContainerElement,
34
+ getTableContainerElementWidth,
35
35
  } from './misc';
36
36
  export { updateControls, isClickNear, getResizeCellPos } from './dom';
37
37
  export {
@@ -150,9 +150,9 @@ export const getTableElementWidth = (table: PMNode) => {
150
150
  return calcTableColumnWidths(table).reduce((sum, width) => sum + width, 0);
151
151
  }
152
152
 
153
- return getTableContainerElement(table);
153
+ return getTableContainerElementWidth(table);
154
154
  };
155
155
 
156
- export const getTableContainerElement = (table: PMNode) => {
156
+ export const getTableContainerElementWidth = (table: PMNode) => {
157
157
  return getTableContainerWidth(table);
158
158
  };
@@ -1,4 +1,6 @@
1
1
  // Resize a given column by an amount from the current state
2
+ import type { Node as PmNode } from '@atlaskit/editor-prosemirror/model';
3
+
2
4
  import { growColumn, shrinkColumn } from './resize-logic';
3
5
  import { updateColgroup } from './resize-state';
4
6
  import type { ResizeState } from './types';
@@ -8,8 +10,9 @@ export const resizeColumn = (
8
10
  colIndex: number,
9
11
  amount: number,
10
12
  tableRef: HTMLElement,
13
+ tableNode: PmNode,
11
14
  selectedColumns?: number[],
12
- tablePreserveWidth = false,
15
+ isTableScalingEnabled = false,
13
16
  ): ResizeState => {
14
17
  const newState =
15
18
  amount > 0
@@ -18,7 +21,7 @@ export const resizeColumn = (
18
21
  ? shrinkColumn(resizeState, colIndex, amount, selectedColumns)
19
22
  : resizeState;
20
23
 
21
- updateColgroup(newState, tableRef, tablePreserveWidth);
24
+ updateColgroup(newState, tableRef, tableNode, isTableScalingEnabled);
22
25
 
23
26
  return newState;
24
27
  };
@@ -20,10 +20,14 @@ import {
20
20
  import type { ColumnState } from './column-state';
21
21
  import { getCellsRefsInColumn, getColumnStateFromDOM } from './column-state';
22
22
  import { syncStickyRowToTable } from './dom';
23
- import { getTableMaxWidth } from './misc';
23
+ import { getTableContainerElementWidth, getTableMaxWidth } from './misc';
24
24
  import type { ResizeState, ResizeStateWithAnalytics } from './types';
25
25
 
26
- import { MAX_SCALING_PERCENT, TABLE_DEFAULT_WIDTH } from './index';
26
+ import {
27
+ COLUMN_MIN_WIDTH,
28
+ MAX_SCALING_PERCENT,
29
+ TABLE_DEFAULT_WIDTH,
30
+ } from './index';
27
31
 
28
32
  export const getResizeState = ({
29
33
  minWidth,
@@ -32,7 +36,7 @@ export const getResizeState = ({
32
36
  tableRef,
33
37
  start,
34
38
  domAtPos,
35
- tablePreserveWidth = false,
39
+ isTableScalingEnabled = false,
36
40
  }: {
37
41
  minWidth: number;
38
42
  maxSize: number;
@@ -40,7 +44,7 @@ export const getResizeState = ({
40
44
  tableRef: HTMLTableElement;
41
45
  start: number;
42
46
  domAtPos: (pos: number) => { node: Node; offset: number };
43
- tablePreserveWidth: boolean;
47
+ isTableScalingEnabled: boolean;
44
48
  }): ResizeState => {
45
49
  // If the table has been resized, we can use the column widths from the table node
46
50
  if (hasTableBeenResized(table)) {
@@ -63,23 +67,23 @@ export const getResizeState = ({
63
67
  };
64
68
  }
65
69
 
66
- const shouldReinsertColgroup = !tablePreserveWidth;
70
+ const shouldReinsertColgroup = !isTableScalingEnabled;
67
71
 
68
72
  // Getting the resize state from DOM
69
73
  const colgroupChildren = insertColgroupFromNode(
70
74
  tableRef,
71
75
  table,
72
- tablePreserveWidth,
76
+ isTableScalingEnabled,
73
77
  shouldReinsertColgroup, // don't reinsert colgroup when preserving table width - this causes widths to jump
74
78
  );
75
79
  const cols = Array.from(colgroupChildren).map((_, index) => {
76
80
  // If the table hasn't been resized and we have a table width attribute, we can use it
77
81
  // to calculate the widths of the columns
78
- if (tablePreserveWidth && table.attrs.width) {
82
+ if (isTableScalingEnabled && table.attrs.width) {
79
83
  return {
80
84
  index,
81
85
  width: table.attrs.width / colgroupChildren.length,
82
- minWidth: 48,
86
+ minWidth: COLUMN_MIN_WIDTH,
83
87
  };
84
88
  }
85
89
  const cellsRefs = getCellsRefsInColumn(index, table, start, domAtPos);
@@ -104,14 +108,15 @@ export const getResizeState = ({
104
108
  export const updateColgroup = (
105
109
  state: ResizeState,
106
110
  tableRef: HTMLElement,
107
- tablePreserveWidth?: boolean,
111
+ tableNode?: PMNode,
112
+ isTableScalingEnabled?: boolean,
108
113
  ): void => {
109
114
  const cols = tableRef.querySelectorAll('col');
110
115
 
111
116
  if (getBooleanFF('platform.editor.custom-table-width')) {
112
117
  const columnsCount = cols.length;
113
- if (tablePreserveWidth) {
114
- const tableWidth = parseInt(tableRef.dataset?.tableWidth || ''); // TODO - get this value from the table node, not the dom
118
+ if (isTableScalingEnabled && tableNode) {
119
+ const tableWidth = getTableContainerElementWidth(tableNode);
115
120
  if (tableWidth) {
116
121
  let renderWidth =
117
122
  tableRef.parentElement?.clientWidth || TABLE_DEFAULT_WIDTH;
@@ -349,7 +354,7 @@ export const getNewResizeStateFromSelectedColumns = (
349
354
  state: EditorState,
350
355
  domAtPos: (pos: number) => { node: Node; offset: number },
351
356
  getEditorContainerWidth: GetEditorContainerWidth,
352
- tablePreserveWidth = false,
357
+ isTableScalingEnabled = false,
353
358
  ): ResizeStateWithAnalytics | undefined => {
354
359
  // Fail early so that we don't do complex calculations for no reason
355
360
  const numColumnsSelected = rect.right - rect.left;
@@ -394,7 +399,7 @@ export const getNewResizeStateFromSelectedColumns = (
394
399
  tableRef,
395
400
  start: table.start,
396
401
  domAtPos,
397
- tablePreserveWidth,
402
+ isTableScalingEnabled,
398
403
  });
399
404
 
400
405
  const newResizeState = evenSelectedColumnsWidths(resizeState, rect);