@atlaskit/editor-plugin-table 1.5.5 → 1.6.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 (61) hide show
  1. package/CHANGELOG.md +10 -0
  2. package/dist/cjs/plugins/table/index.js +12 -11
  3. package/dist/cjs/plugins/table/nodeviews/TableComponent.js +37 -78
  4. package/dist/cjs/plugins/table/nodeviews/TableContainer.js +131 -0
  5. package/dist/cjs/plugins/table/nodeviews/TableResizer.js +65 -0
  6. package/dist/cjs/plugins/table/pm-plugins/table-resizing/commands.js +4 -49
  7. package/dist/cjs/plugins/table/pm-plugins/table-resizing/index.js +0 -7
  8. package/dist/cjs/plugins/table/pm-plugins/table-resizing/utils/index.js +12 -6
  9. package/dist/cjs/plugins/table/pm-plugins/table-resizing/utils/misc.js +3 -11
  10. package/dist/cjs/plugins/table/pm-plugins/table-resizing/utils/scale-table.js +61 -2
  11. package/dist/cjs/version.json +1 -1
  12. package/dist/es2019/plugins/table/index.js +12 -11
  13. package/dist/es2019/plugins/table/nodeviews/TableComponent.js +17 -64
  14. package/dist/es2019/plugins/table/nodeviews/TableContainer.js +124 -0
  15. package/dist/es2019/plugins/table/nodeviews/TableResizer.js +56 -0
  16. package/dist/es2019/plugins/table/pm-plugins/table-resizing/commands.js +2 -48
  17. package/dist/es2019/plugins/table/pm-plugins/table-resizing/index.js +0 -1
  18. package/dist/es2019/plugins/table/pm-plugins/table-resizing/utils/index.js +2 -2
  19. package/dist/es2019/plugins/table/pm-plugins/table-resizing/utils/misc.js +5 -10
  20. package/dist/es2019/plugins/table/pm-plugins/table-resizing/utils/scale-table.js +61 -2
  21. package/dist/es2019/version.json +1 -1
  22. package/dist/esm/plugins/table/index.js +12 -11
  23. package/dist/esm/plugins/table/nodeviews/TableComponent.js +39 -81
  24. package/dist/esm/plugins/table/nodeviews/TableContainer.js +119 -0
  25. package/dist/esm/plugins/table/nodeviews/TableResizer.js +57 -0
  26. package/dist/esm/plugins/table/pm-plugins/table-resizing/commands.js +4 -48
  27. package/dist/esm/plugins/table/pm-plugins/table-resizing/index.js +0 -1
  28. package/dist/esm/plugins/table/pm-plugins/table-resizing/utils/index.js +2 -2
  29. package/dist/esm/plugins/table/pm-plugins/table-resizing/utils/misc.js +5 -10
  30. package/dist/esm/plugins/table/pm-plugins/table-resizing/utils/scale-table.js +59 -2
  31. package/dist/esm/version.json +1 -1
  32. package/dist/types/plugins/table/nodeviews/TableComponent.d.ts +0 -3
  33. package/dist/types/plugins/table/nodeviews/TableContainer.d.ts +35 -0
  34. package/dist/types/plugins/table/nodeviews/TableResizer.d.ts +13 -0
  35. package/dist/types/plugins/table/pm-plugins/table-resizing/commands.d.ts +2 -4
  36. package/dist/types/plugins/table/pm-plugins/table-resizing/index.d.ts +0 -1
  37. package/dist/types/plugins/table/pm-plugins/table-resizing/utils/index.d.ts +2 -2
  38. package/dist/types/plugins/table/pm-plugins/table-resizing/utils/misc.d.ts +0 -1
  39. package/dist/types/plugins/table/pm-plugins/table-resizing/utils/scale-table.d.ts +3 -0
  40. package/dist/types/plugins/table/types.d.ts +1 -0
  41. package/dist/types-ts4.5/plugins/table/nodeviews/TableComponent.d.ts +0 -3
  42. package/dist/types-ts4.5/plugins/table/nodeviews/TableContainer.d.ts +35 -0
  43. package/dist/types-ts4.5/plugins/table/nodeviews/TableResizer.d.ts +13 -0
  44. package/dist/types-ts4.5/plugins/table/pm-plugins/table-resizing/commands.d.ts +2 -4
  45. package/dist/types-ts4.5/plugins/table/pm-plugins/table-resizing/index.d.ts +0 -1
  46. package/dist/types-ts4.5/plugins/table/pm-plugins/table-resizing/utils/index.d.ts +2 -2
  47. package/dist/types-ts4.5/plugins/table/pm-plugins/table-resizing/utils/misc.d.ts +0 -1
  48. package/dist/types-ts4.5/plugins/table/pm-plugins/table-resizing/utils/scale-table.d.ts +3 -0
  49. package/dist/types-ts4.5/plugins/table/types.d.ts +1 -0
  50. package/package.json +3 -3
  51. package/src/__tests__/integration/sticky-header.ts +4 -1
  52. package/src/__tests__/unit/nodeviews/TableContainer.tsx +164 -0
  53. package/src/plugins/table/index.tsx +21 -18
  54. package/src/plugins/table/nodeviews/TableComponent.tsx +21 -78
  55. package/src/plugins/table/nodeviews/TableContainer.tsx +200 -0
  56. package/src/plugins/table/nodeviews/TableResizer.tsx +88 -0
  57. package/src/plugins/table/pm-plugins/table-resizing/commands.ts +3 -72
  58. package/src/plugins/table/pm-plugins/table-resizing/index.ts +0 -1
  59. package/src/plugins/table/pm-plugins/table-resizing/utils/index.ts +6 -2
  60. package/src/plugins/table/pm-plugins/table-resizing/utils/misc.ts +7 -12
  61. package/src/plugins/table/pm-plugins/table-resizing/utils/scale-table.ts +79 -0
@@ -1,4 +1,5 @@
1
1
  import { Node as PMNode } from 'prosemirror-model';
2
+ import { Transaction } from 'prosemirror-state';
2
3
 
3
4
  import { tableCellMinWidth } from '@atlaskit/editor-common/styles';
4
5
  import { akEditorTableNumberColumnWidth } from '@atlaskit/editor-shared-styles';
@@ -12,8 +13,11 @@ import {
12
13
  adjustColumnsWidths,
13
14
  getResizeState,
14
15
  getTotalWidth,
16
+ updateColgroup,
15
17
  } from '../utils/resize-state';
16
18
  import { ResizeState } from '../utils/types';
19
+ import { hasTableBeenResized, insertColgroupFromNode } from './colgroup';
20
+ import { updateColumnWidths } from '../../../transforms';
17
21
 
18
22
  export interface ScaleOptions {
19
23
  node: PMNode;
@@ -140,3 +144,78 @@ export function scaleTableTo(state: ResizeState, maxSize: number): ResizeState {
140
144
 
141
145
  return adjustColumnsWidths(newState, maxSize);
142
146
  }
147
+
148
+ export const previewScaleTable = (
149
+ tableRef: HTMLTableElement | null | undefined,
150
+ options: ScaleOptions,
151
+ domAtPos: DomAtPos,
152
+ ) => {
153
+ const { node, start, parentWidth } = options;
154
+
155
+ if (!tableRef || !hasTableBeenResized(node)) {
156
+ return;
157
+ }
158
+
159
+ const resizeState = parentWidth
160
+ ? scaleWithParent(tableRef, parentWidth, node, start, domAtPos)
161
+ : scale(tableRef, options, domAtPos);
162
+
163
+ if (resizeState) {
164
+ updateColgroup(resizeState, tableRef);
165
+ }
166
+ };
167
+
168
+ // Scale the table to meet new requirements (col, layout change etc)
169
+ export const scaleTable =
170
+ (
171
+ tableRef: HTMLTableElement | null | undefined,
172
+ options: ScaleOptions,
173
+ domAtPos: DomAtPos,
174
+ ) =>
175
+ (tr: Transaction) => {
176
+ if (!tableRef) {
177
+ return tr;
178
+ }
179
+
180
+ const { node, start, parentWidth, layoutChanged } = options;
181
+
182
+ // If a table has not been resized yet, columns should be auto.
183
+ if (hasTableBeenResized(node) === false) {
184
+ // If its not a re-sized table, we still want to re-create cols
185
+ // To force reflow of columns upon delete.
186
+ insertColgroupFromNode(tableRef, node);
187
+ return tr;
188
+ }
189
+
190
+ let resizeState;
191
+ if (parentWidth) {
192
+ resizeState = scaleWithParent(
193
+ tableRef,
194
+ parentWidth,
195
+ node,
196
+ start,
197
+ domAtPos,
198
+ );
199
+ } else {
200
+ resizeState = scale(tableRef, options, domAtPos);
201
+ }
202
+
203
+ if (resizeState) {
204
+ tr = updateColumnWidths(resizeState, node, start)(tr);
205
+
206
+ if (tr.docChanged) {
207
+ tr.setMeta('scrollIntoView', false);
208
+ // TODO: ED-8995
209
+ // We need to do this check to reduce the number of race conditions when working with tables.
210
+ // This metadata is been used in the sendTransaction function in the Collab plugin
211
+ /* Added !layoutChanged check here to solve unnecessary scroll bar after publish when click on breakout button multiple times and publish
212
+ scaleTable is only called once every time a breakout button is clicked, so it is safe not to add the meta 'scaleTable' to the tr.
213
+ Leaving the tr.setMeta('scaleTable', true) here for race conditions that we aren't aware of.
214
+ */
215
+ !layoutChanged && tr.setMeta('scaleTable', true);
216
+ return tr;
217
+ }
218
+ }
219
+
220
+ return tr;
221
+ };