@atlaskit/editor-plugin-table 2.9.0 → 2.10.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 (104) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/dist/cjs/plugins/table/event-handlers.js +52 -56
  3. package/dist/cjs/plugins/table/nodeviews/TableComponent.js +19 -69
  4. package/dist/cjs/plugins/table/nodeviews/TableContainer.js +9 -0
  5. package/dist/cjs/plugins/table/nodeviews/TableResizer.js +19 -4
  6. package/dist/cjs/plugins/table/nodeviews/table.js +23 -30
  7. package/dist/cjs/plugins/table/nodeviews/tableCell.js +3 -6
  8. package/dist/cjs/plugins/table/nodeviews/update-overflow-shadows.js +2 -40
  9. package/dist/cjs/plugins/table/pm-plugins/main.js +3 -3
  10. package/dist/cjs/plugins/table/pm-plugins/sticky-headers/nodeviews/tableRow.js +2 -73
  11. package/dist/cjs/plugins/table/pm-plugins/sticky-headers/plugin.js +1 -1
  12. package/dist/cjs/plugins/table/pm-plugins/table-resizing/event-handlers.js +1 -1
  13. package/dist/cjs/plugins/table/pm-plugins/table-resizing/utils/dom.js +1 -5
  14. package/dist/cjs/plugins/table/ui/TableFloatingControls/index.js +3 -7
  15. package/dist/cjs/plugins/table/ui/common-styles.js +2 -2
  16. package/dist/cjs/plugins/table/utils/dom.js +5 -12
  17. package/dist/es2019/plugins/table/event-handlers.js +3 -6
  18. package/dist/es2019/plugins/table/nodeviews/TableComponent.js +18 -69
  19. package/dist/es2019/plugins/table/nodeviews/TableContainer.js +9 -0
  20. package/dist/es2019/plugins/table/nodeviews/TableResizer.js +19 -4
  21. package/dist/es2019/plugins/table/nodeviews/table.js +24 -32
  22. package/dist/es2019/plugins/table/nodeviews/tableCell.js +3 -7
  23. package/dist/es2019/plugins/table/nodeviews/update-overflow-shadows.js +0 -35
  24. package/dist/es2019/plugins/table/pm-plugins/main.js +3 -4
  25. package/dist/es2019/plugins/table/pm-plugins/sticky-headers/nodeviews/tableRow.js +2 -77
  26. package/dist/es2019/plugins/table/pm-plugins/sticky-headers/plugin.js +1 -1
  27. package/dist/es2019/plugins/table/pm-plugins/table-resizing/event-handlers.js +1 -1
  28. package/dist/es2019/plugins/table/pm-plugins/table-resizing/utils/dom.js +1 -5
  29. package/dist/es2019/plugins/table/ui/TableFloatingControls/index.js +3 -9
  30. package/dist/es2019/plugins/table/ui/common-styles.js +3 -3
  31. package/dist/es2019/plugins/table/utils/dom.js +5 -12
  32. package/dist/esm/plugins/table/event-handlers.js +52 -56
  33. package/dist/esm/plugins/table/nodeviews/TableComponent.js +19 -69
  34. package/dist/esm/plugins/table/nodeviews/TableContainer.js +9 -0
  35. package/dist/esm/plugins/table/nodeviews/TableResizer.js +19 -4
  36. package/dist/esm/plugins/table/nodeviews/table.js +23 -30
  37. package/dist/esm/plugins/table/nodeviews/tableCell.js +3 -6
  38. package/dist/esm/plugins/table/nodeviews/update-overflow-shadows.js +0 -37
  39. package/dist/esm/plugins/table/pm-plugins/main.js +3 -3
  40. package/dist/esm/plugins/table/pm-plugins/sticky-headers/nodeviews/tableRow.js +2 -73
  41. package/dist/esm/plugins/table/pm-plugins/sticky-headers/plugin.js +1 -1
  42. package/dist/esm/plugins/table/pm-plugins/table-resizing/event-handlers.js +1 -1
  43. package/dist/esm/plugins/table/pm-plugins/table-resizing/utils/dom.js +1 -5
  44. package/dist/esm/plugins/table/ui/TableFloatingControls/index.js +3 -7
  45. package/dist/esm/plugins/table/ui/common-styles.js +2 -2
  46. package/dist/esm/plugins/table/utils/dom.js +5 -12
  47. package/dist/types/plugins/table/event-handlers.d.ts +1 -2
  48. package/dist/types/plugins/table/nodeviews/TableComponent.d.ts +0 -2
  49. package/dist/types/plugins/table/nodeviews/TableContainer.d.ts +6 -5
  50. package/dist/types/plugins/table/nodeviews/TableResizer.d.ts +2 -1
  51. package/dist/types/plugins/table/nodeviews/table.d.ts +0 -1
  52. package/dist/types/plugins/table/nodeviews/tableCell.d.ts +2 -3
  53. package/dist/types/plugins/table/nodeviews/types.d.ts +0 -1
  54. package/dist/types/plugins/table/nodeviews/update-overflow-shadows.d.ts +0 -6
  55. package/dist/types/plugins/table/pm-plugins/sticky-headers/nodeviews/tableRow.d.ts +1 -6
  56. package/dist/types/plugins/table/pm-plugins/table-resizing/utils/dom.d.ts +1 -2
  57. package/dist/types/plugins/table/types.d.ts +2 -2
  58. package/dist/types/plugins/table/ui/TableFloatingControls/index.d.ts +0 -1
  59. package/dist/types/plugins/table/utils/dom.d.ts +1 -1
  60. package/dist/types-ts4.5/plugins/table/event-handlers.d.ts +1 -2
  61. package/dist/types-ts4.5/plugins/table/nodeviews/TableComponent.d.ts +0 -2
  62. package/dist/types-ts4.5/plugins/table/nodeviews/TableContainer.d.ts +6 -5
  63. package/dist/types-ts4.5/plugins/table/nodeviews/TableResizer.d.ts +2 -1
  64. package/dist/types-ts4.5/plugins/table/nodeviews/table.d.ts +0 -1
  65. package/dist/types-ts4.5/plugins/table/nodeviews/tableCell.d.ts +2 -3
  66. package/dist/types-ts4.5/plugins/table/nodeviews/types.d.ts +0 -1
  67. package/dist/types-ts4.5/plugins/table/nodeviews/update-overflow-shadows.d.ts +0 -6
  68. package/dist/types-ts4.5/plugins/table/pm-plugins/sticky-headers/nodeviews/tableRow.d.ts +1 -6
  69. package/dist/types-ts4.5/plugins/table/pm-plugins/table-resizing/utils/dom.d.ts +1 -2
  70. package/dist/types-ts4.5/plugins/table/types.d.ts +2 -2
  71. package/dist/types-ts4.5/plugins/table/ui/TableFloatingControls/index.d.ts +0 -1
  72. package/dist/types-ts4.5/plugins/table/utils/dom.d.ts +1 -1
  73. package/package.json +2 -2
  74. package/report.api.md +2 -0
  75. package/src/__tests__/integration/horizontal-scroll-shadows.ts +6 -9
  76. package/src/__tests__/integration/resize.ts +6 -16
  77. package/src/__tests__/unit/event-handlers.ts +1 -4
  78. package/src/__tests__/unit/nodeviews/TableComponent.tsx +48 -92
  79. package/src/__tests__/unit/nodeviews/cell.ts +1 -3
  80. package/src/__tests__/unit/nodeviews/table.ts +71 -83
  81. package/src/__tests__/unit/pm-plugins/sticky-headers/tableRow.tsx +5 -9
  82. package/src/__tests__/unit/ui/RowControls.tsx +1 -0
  83. package/src/__tests__/unit/utils/dom.ts +6 -112
  84. package/src/plugins/table/event-handlers.ts +72 -79
  85. package/src/plugins/table/nodeviews/TableComponent.tsx +37 -114
  86. package/src/plugins/table/nodeviews/TableContainer.tsx +17 -11
  87. package/src/plugins/table/nodeviews/TableResizer.tsx +34 -4
  88. package/src/plugins/table/nodeviews/table.tsx +22 -30
  89. package/src/plugins/table/nodeviews/tableCell.tsx +3 -11
  90. package/src/plugins/table/nodeviews/types.ts +0 -1
  91. package/src/plugins/table/nodeviews/update-overflow-shadows.ts +0 -54
  92. package/src/plugins/table/pm-plugins/main.ts +4 -22
  93. package/src/plugins/table/pm-plugins/sticky-headers/nodeviews/tableRow.ts +1 -83
  94. package/src/plugins/table/pm-plugins/sticky-headers/plugin.ts +1 -7
  95. package/src/plugins/table/pm-plugins/table-resizing/event-handlers.ts +1 -1
  96. package/src/plugins/table/pm-plugins/table-resizing/utils/dom.ts +30 -48
  97. package/src/plugins/table/types.ts +3 -2
  98. package/src/plugins/table/ui/TableFloatingControls/index.tsx +3 -15
  99. package/src/plugins/table/ui/common-styles.ts +1 -1
  100. package/src/plugins/table/utils/dom.ts +3 -11
  101. package/tmp/api-report-tmp.d.ts +2 -0
  102. package/dist/cjs/version.json +0 -5
  103. package/dist/es2019/version.json +0 -5
  104. package/dist/esm/version.json +0 -5
@@ -7,7 +7,7 @@ import {
7
7
  mountEditor,
8
8
  } from '@atlaskit/editor-test-helpers/testing-example-page';
9
9
  import { BrowserTestCase } from '@atlaskit/webdriver-runner/runner';
10
- import WebdriverPage from '@atlaskit/webdriver-runner/wd-wrapper';
10
+ import type WebdriverPage from '@atlaskit/webdriver-runner/wd-wrapper';
11
11
 
12
12
  import { TableCssClassName as className } from '../../plugins/table/types';
13
13
 
@@ -15,19 +15,16 @@ import basicTable from './__fixtures__/basic-table';
15
15
 
16
16
  const checkShadows = async (page: WebdriverPage, side?: 'left' | 'right') => {
17
17
  const leftShadow = await page.$(`.${className.TABLE_LEFT_SHADOW}`);
18
- const leftShadowStyle = await leftShadow.getAttribute('style');
19
18
  const rightShadow = await page.$(`.${className.TABLE_RIGHT_SHADOW}`);
20
- const rightShadowStyle = await rightShadow.getAttribute('style');
21
19
 
22
20
  if (!side) {
23
- return (
24
- leftShadowStyle.includes('display: block;') &&
25
- rightShadowStyle.includes('display: block;')
26
- );
21
+ const leftDisplayed = await leftShadow.isDisplayed();
22
+ const rightDisplayed = await rightShadow.isDisplayed();
23
+ return leftDisplayed && rightDisplayed;
27
24
  } else if (side === 'left') {
28
- return leftShadowStyle.includes('display: block;');
25
+ return await leftShadow.isDisplayed();
29
26
  } else if (side === 'right') {
30
- return rightShadowStyle.includes('display: block;');
27
+ return await rightShadow.isDisplayed();
31
28
  }
32
29
  };
33
30
 
@@ -178,19 +178,10 @@ BrowserTestCase(
178
178
  },
179
179
  );
180
180
 
181
- [
182
- {
183
- test: 'Should stack columns to the right and go to overflow',
184
- featureFlags: {},
185
- },
186
- {
187
- test: 'Should stack columns to the right and go to overflow with overflowShadowsOptimisation',
188
- featureFlags: {
189
- tableOverflowShadowsOptimization: true,
190
- },
191
- },
192
- ].forEach(({ test, featureFlags }) => {
193
- BrowserTestCase(test, {}, async (client: any, testName: string) => {
181
+ BrowserTestCase(
182
+ 'Should stack columns to the right and go to overflow',
183
+ {},
184
+ async (client: any, testName: string) => {
194
185
  const page = await goToEditorTestingWDExample(
195
186
  client,
196
187
  'editor-plugin-table',
@@ -202,15 +193,14 @@ BrowserTestCase(
202
193
  allowTables: {
203
194
  advanced: true,
204
195
  },
205
- featureFlags,
206
196
  });
207
197
 
208
198
  await resizeColumn(page, { cellHandlePos: 2, resizeWidth: 420 });
209
199
 
210
200
  const doc = await page.$eval(editable, getDocFromElement);
211
201
  expect(doc).toMatchCustomDocSnapshot(testName);
212
- });
213
- });
202
+ },
203
+ );
214
204
 
215
205
  BrowserTestCase(
216
206
  'Should bulk resize 3 columns in 4 columns table',
@@ -154,7 +154,6 @@ describe('table plugin: decorations', () => {
154
154
 
155
155
  describe('table event handlers', () => {
156
156
  const createEditor = createProsemirrorEditorFactory();
157
- const fakeGetEditorFeatureFlags = () => ({});
158
157
  const editor = (doc: DocBuilder) =>
159
158
  createEditor({
160
159
  doc,
@@ -222,9 +221,7 @@ describe('table event handlers', () => {
222
221
  const event = {
223
222
  target: firstCell.node,
224
223
  };
225
- expect(
226
- handleMouseMove(fakeGetEditorFeatureFlags)(editorView, event as any),
227
- ).toEqual(false);
224
+ expect(handleMouseMove(editorView, event as any)).toEqual(false);
228
225
  });
229
226
  });
230
227
  });
@@ -6,6 +6,7 @@ import { replaceRaf } from 'raf-stub';
6
6
  import type { EventDispatcher } from '@atlaskit/editor-common/event-dispatcher';
7
7
  import { Command } from '@atlaskit/editor-common/types';
8
8
  import { TextSelection } from '@atlaskit/editor-prosemirror/state';
9
+ import { EditorView } from '@atlaskit/editor-prosemirror/view';
9
10
  import { selectTableClosestToPos } from '@atlaskit/editor-tables/src/utils/select-nodes';
10
11
  import {
11
12
  findTable,
@@ -73,6 +74,33 @@ describe('table -> nodeviews -> TableComponent.tsx', () => {
73
74
  pluginKey,
74
75
  });
75
76
  };
77
+ const getTableComponent = (editorView: EditorView, props: any = {}) => {
78
+ const tableF = findTable(editorView.state.selection);
79
+ const getNode = () => tableF!.node;
80
+ return (
81
+ <TableComponent
82
+ view={editorView}
83
+ eventDispatcher={
84
+ { on: () => {}, off: () => {} } as any as EventDispatcher
85
+ }
86
+ // @ts-ignore
87
+ containerWidth={{}}
88
+ // @ts-ignore
89
+ getNode={getNode}
90
+ getEditorFeatureFlags={getEditorFeatureFlags}
91
+ allowControls
92
+ contentDOM={(wrapper: HTMLElement | null) => {
93
+ const node = editorView.dom.getElementsByTagName('table')[0];
94
+ if (!wrapper?.firstChild) {
95
+ wrapper?.appendChild(node);
96
+ }
97
+ }}
98
+ getPos={jest.fn()}
99
+ {...props}
100
+ />
101
+ );
102
+ };
103
+
76
104
  afterEach(() => {
77
105
  jest.clearAllMocks();
78
106
  });
@@ -81,17 +109,11 @@ describe('table -> nodeviews -> TableComponent.tsx', () => {
81
109
  it('should add table selected css class to the selected table', () => {
82
110
  const { editorView } = editor(
83
111
  doc(p('text'), table()(tr(tdEmpty, tdEmpty, tdCursor))),
84
- {
85
- tableCellOptimization: true,
86
- tableRenderOptimization: true,
87
- stickyHeadersOptimization: true,
88
- initialRenderOptimization: true,
89
- },
90
112
  );
91
113
  const { state, dispatch } = editorView;
92
114
  dispatch(selectTable(state.tr));
93
- requestAnimationFrame.step();
94
- const tableContainer = document.querySelector(
115
+ const { container } = render(getTableComponent(editorView));
116
+ const tableContainer = container.querySelector(
95
117
  `.${ClassName.TABLE_CONTAINER}`,
96
118
  );
97
119
  expect(
@@ -135,45 +157,12 @@ describe('table -> nodeviews -> TableComponent.tsx', () => {
135
157
 
136
158
  render(
137
159
  <div>
138
- <TableComponent
139
- view={editorView}
140
- eventDispatcher={
141
- { on: () => {}, off: () => {} } as any as EventDispatcher
142
- }
143
- // @ts-ignore
144
- containerWidth={{}}
145
- // @ts-ignore
146
- getNode={getTableNode(1)}
147
- getEditorFeatureFlags={getEditorFeatureFlags}
148
- allowControls
149
- contentDOM={(wrapper: HTMLElement | null) => {
150
- const node = editorView.dom.getElementsByTagName('table')[0];
151
- if (!wrapper?.firstChild) {
152
- wrapper?.appendChild(node);
153
- }
154
- }}
155
- getPos={jest.fn()}
156
- />
157
- <TableComponent
158
- view={editorView}
159
- eventDispatcher={
160
- { on: () => {}, off: () => {} } as any as EventDispatcher
161
- }
162
- // @ts-ignore
163
- containerWidth={{}}
164
- // @ts-ignore
165
- getNode={getTableNode(2)}
166
- getEditorFeatureFlags={getEditorFeatureFlags}
167
- allowControls
168
- contentDOM={(wrapper: HTMLElement | null) => {
169
- const node = editorView.dom.getElementsByTagName('table')[0];
170
- if (!wrapper?.firstChild) {
171
- wrapper?.appendChild(node);
172
- }
173
- }}
174
- getPos={jest.fn()}
175
- />
176
- ,
160
+ {getTableComponent(editorView, {
161
+ getNode: getTableNode(1),
162
+ })}
163
+ {getTableComponent(editorView, {
164
+ getNode: getTableNode(2),
165
+ })}
177
166
  </div>,
178
167
  );
179
168
  expect(clearHoverSelectionSpy).not.toBeCalled();
@@ -189,8 +178,8 @@ describe('table -> nodeviews -> TableComponent.tsx', () => {
189
178
  const { editorView } = editor(
190
179
  doc(p('text'), table()(tr(thEmpty, thEmpty, thEmpty))),
191
180
  );
192
- const { state, dispatch } = editorView;
193
181
 
182
+ const { state, dispatch } = editorView;
194
183
  const isInDanger = true;
195
184
  hoverTable(isInDanger)(state, dispatch);
196
185
  dispatch(selectTable(state.tr));
@@ -198,29 +187,19 @@ describe('table -> nodeviews -> TableComponent.tsx', () => {
198
187
  const tableF = findTable(state.selection);
199
188
  const getNode = () => tableF!.node;
200
189
 
190
+ const { rerender } = render(
191
+ getTableComponent(editorView, {
192
+ getNode,
193
+ }),
194
+ );
195
+
201
196
  const newTr = state.tr.setSelection(TextSelection.create(state.doc, 0));
202
197
  dispatch(newTr);
203
198
 
204
- render(
205
- <TableComponent
206
- view={editorView}
207
- eventDispatcher={
208
- { on: () => {}, off: () => {} } as any as EventDispatcher
209
- }
210
- // @ts-ignore
211
- containerWidth={{}}
212
- // @ts-ignore
213
- getNode={getNode}
214
- getEditorFeatureFlags={getEditorFeatureFlags}
215
- allowControls
216
- contentDOM={(wrapper: HTMLElement | null) => {
217
- const node = editorView.dom.getElementsByTagName('table')[0];
218
- if (!wrapper?.firstChild) {
219
- wrapper?.appendChild(node);
220
- }
221
- }}
222
- getPos={jest.fn()}
223
- />,
199
+ rerender(
200
+ getTableComponent(editorView, {
201
+ getNode,
202
+ }),
224
203
  );
225
204
  expect(clearHoverSelectionSpy).toBeCalledTimes(1);
226
205
  });
@@ -295,30 +274,7 @@ describe('table -> nodeviews -> TableComponent.tsx', () => {
295
274
  const { editorView: view } = editor(
296
275
  doc(p('text'), table()(tr(td()(p('{<>}text')), tdEmpty, tdEmpty))),
297
276
  );
298
-
299
- const tableF = findTable(view.state.selection);
300
- const getNode = () => tableF!.node;
301
- const { container } = render(
302
- <TableComponent
303
- view={view}
304
- eventDispatcher={
305
- { on: jest.fn(), off: jest.fn() } as unknown as EventDispatcher
306
- }
307
- // @ts-ignore
308
- containerWidth={{}}
309
- getNode={getNode}
310
- contentDOM={(contentElement: HTMLElement | null) => {
311
- const node = view.dom.getElementsByTagName('table')[0];
312
-
313
- if (!contentElement?.firstChild) {
314
- contentElement?.appendChild(node);
315
- }
316
- }}
317
- getEditorFeatureFlags={getEditorFeatureFlags}
318
- getPos={jest.fn()}
319
- {...props}
320
- />,
321
- );
277
+ const { container } = render(getTableComponent(view, props));
322
278
  const controlsContainer = container.querySelector(
323
279
  `.${ClassName.WITH_CONTROLS}`,
324
280
  );
@@ -111,9 +111,7 @@ describe('table -> nodeviews -> tableCell.tsx', () => {
111
111
  refs: { pos },
112
112
  } = editor(
113
113
  doc(p('text'), table()(tr(td()(p('{pos}text')), tdEmpty, tdEmpty))),
114
- {
115
- tableCellOptimization: true,
116
- },
114
+ {},
117
115
  );
118
116
  const { state, dispatch } = editorView;
119
117
  const cell = findCellClosestToPos(state.doc.resolve(pos))!;
@@ -36,97 +36,85 @@ describe('table -> nodeviews -> table.tsx', () => {
36
36
  table(attrs)(...args)(defaultSchema);
37
37
 
38
38
  describe('TableView', () => {
39
- describe('with tableRenderOptimization', () => {
40
- const editor = (doc: DocBuilder) =>
41
- createEditor({
42
- doc,
43
- preset: new Preset<LightEditorPlugin>()
44
- .add([featureFlagsPlugin, {}])
45
- .add([analyticsPlugin, {}])
46
- .add(contentInsertionPlugin)
47
- .add(widthPlugin)
48
- .add(guidelinePlugin)
49
- .add([
50
- tablePlugin,
51
- {
52
- tableOptions: {},
53
- getEditorFeatureFlags: () => ({
54
- tableRenderOptimization: true,
55
- }),
56
- },
57
- ]),
58
- pluginKey,
59
- });
39
+ const editor = (doc: DocBuilder) =>
40
+ createEditor({
41
+ doc,
42
+ preset: new Preset<LightEditorPlugin>()
43
+ .add([featureFlagsPlugin, {}])
44
+ .add([analyticsPlugin, {}])
45
+ .add(contentInsertionPlugin)
46
+ .add(widthPlugin)
47
+ .add(guidelinePlugin)
48
+ .add([
49
+ tablePlugin,
50
+ {
51
+ tableOptions: {},
52
+ },
53
+ ]),
54
+ pluginKey,
55
+ });
60
56
 
61
- describe('on view update', () => {
62
- let tableNode: PMNode,
63
- tableNodeView: TableView,
64
- renderSpy: jest.SpyInstance,
65
- view: EditorView;
66
- beforeEach(() => {
67
- tableNode = createTableNode({
68
- isNumberColumnEnabled: true,
69
- })(tr(td()(p('{<>}text')), tdEmpty, tdEmpty));
70
- const { editorView, portalProviderAPI, eventDispatcher } = editor(
71
- doc(
72
- p('text'),
73
- table()(tr(tdCursor, tdEmpty), tr(tdEmpty, tdEmpty)),
74
- ),
75
- );
76
- view = editorView;
77
- tableNodeView = new TableView({
78
- node: tableNode,
79
- allowColumnResizing: false,
80
- view: editorView,
81
- portalProviderAPI,
82
- eventDispatcher,
83
- getPos: () => 1,
84
- tableRenderOptimization: true,
85
- getEditorContainerWidth: () => ({ width: 500 }),
86
- getEditorFeatureFlags: () => ({}),
87
- hasIntlContext: true,
88
- }).init();
57
+ describe('on view update', () => {
58
+ let tableNode: PMNode,
59
+ tableNodeView: TableView,
60
+ renderSpy: jest.SpyInstance,
61
+ view: EditorView;
62
+ beforeEach(() => {
63
+ tableNode = createTableNode({
64
+ isNumberColumnEnabled: true,
65
+ })(tr(td()(p('{<>}text')), tdEmpty, tdEmpty));
66
+ const { editorView, portalProviderAPI, eventDispatcher } = editor(
67
+ doc(p('text'), table()(tr(tdCursor, tdEmpty), tr(tdEmpty, tdEmpty))),
68
+ );
69
+ view = editorView;
70
+ tableNodeView = new TableView({
71
+ node: tableNode,
72
+ allowColumnResizing: false,
73
+ view: editorView,
74
+ portalProviderAPI,
75
+ eventDispatcher,
76
+ getPos: () => 1,
77
+ getEditorContainerWidth: () => ({ width: 500 }),
78
+ getEditorFeatureFlags: () => ({}),
79
+ hasIntlContext: true,
80
+ }).init();
89
81
 
90
- renderSpy = jest.spyOn(tableNodeView, 'render');
91
- });
82
+ renderSpy = jest.spyOn(tableNodeView, 'render');
83
+ });
92
84
 
93
- it('does not rerender if attributes or table width did not change', () => {
94
- const newNodeWithUnchangedAttributesOrWidth = createTableNode({
95
- isNumberColumnEnabled: true,
96
- })(tr(td()(p('{<>}text1')), tdEmpty, tdEmpty));
97
- tableNodeView.update(newNodeWithUnchangedAttributesOrWidth, []);
98
- expect(renderSpy).not.toHaveBeenCalled();
99
- });
85
+ it('does not rerender if attributes or table width did not change', () => {
86
+ const newNodeWithUnchangedAttributesOrWidth = createTableNode({
87
+ isNumberColumnEnabled: true,
88
+ })(tr(td()(p('{<>}text1')), tdEmpty, tdEmpty));
89
+ tableNodeView.update(newNodeWithUnchangedAttributesOrWidth, []);
90
+ expect(renderSpy).not.toHaveBeenCalled();
91
+ });
100
92
 
101
- it('rerenders when table width changes', () => {
102
- const newNodeWithUnchangedAttributesAndExtraColumn = createTableNode({
103
- isNumberColumnEnabled: true,
104
- })(tr(td()(p('{<>}text1')), tdEmpty, tdEmpty, tdEmpty));
105
- tableNodeView.update(
106
- newNodeWithUnchangedAttributesAndExtraColumn,
107
- [],
108
- );
109
- expect(renderSpy).toHaveBeenCalled();
110
- });
93
+ it('rerenders when table width changes', () => {
94
+ const newNodeWithUnchangedAttributesAndExtraColumn = createTableNode({
95
+ isNumberColumnEnabled: true,
96
+ })(tr(td()(p('{<>}text1')), tdEmpty, tdEmpty, tdEmpty));
97
+ tableNodeView.update(newNodeWithUnchangedAttributesAndExtraColumn, []);
98
+ expect(renderSpy).toHaveBeenCalled();
99
+ });
111
100
 
112
- it('rerenders when attributes change', () => {
113
- const newNodeWithChangedAttributes = createTableNode({
114
- isNumberColumnEnabled: false,
115
- })(tr(td()(p('{<>}text1')), tdEmpty));
101
+ it('rerenders when attributes change', () => {
102
+ const newNodeWithChangedAttributes = createTableNode({
103
+ isNumberColumnEnabled: false,
104
+ })(tr(td()(p('{<>}text1')), tdEmpty));
116
105
 
117
- tableNodeView.update(newNodeWithChangedAttributes, []);
118
- expect(renderSpy).toHaveBeenCalled();
119
- });
106
+ tableNodeView.update(newNodeWithChangedAttributes, []);
107
+ expect(renderSpy).toHaveBeenCalled();
108
+ });
120
109
 
121
- it('rerenders when hovered rows change but attributes dont change', () => {
122
- const newNodeWithUnchangedAttributes = createTableNode({
123
- isNumberColumnEnabled: true,
124
- })(tr(td()(p('{<>}text1')), tdEmpty));
110
+ it('rerenders when hovered rows change but attributes dont change', () => {
111
+ const newNodeWithUnchangedAttributes = createTableNode({
112
+ isNumberColumnEnabled: true,
113
+ })(tr(td()(p('{<>}text1')), tdEmpty));
125
114
 
126
- hoverRows([1])(view.state, view.dispatch);
127
- tableNodeView.update(newNodeWithUnchangedAttributes, []);
128
- expect(renderSpy).toHaveBeenCalled();
129
- });
115
+ hoverRows([1])(view.state, view.dispatch);
116
+ tableNodeView.update(newNodeWithUnchangedAttributes, []);
117
+ expect(renderSpy).toHaveBeenCalled();
130
118
  });
131
119
  });
132
120
  });
@@ -55,8 +55,8 @@ describe('TableRowNodeView', () => {
55
55
  let tableRowNodeView: TableRowNodeView;
56
56
  const fakeGetEditorFeatureFlags = jest.fn(() => ({}));
57
57
  const createEditor = createProsemirrorEditorFactory();
58
- const editor = (doc: DocBuilder, stickyHeadersOptimization?: boolean) => {
59
- const featureFlags = { stickyHeadersOptimization };
58
+ const editor = (doc: DocBuilder) => {
59
+ const featureFlags = {};
60
60
  fakeGetEditorFeatureFlags.mockReturnValue(featureFlags);
61
61
  return createEditor({
62
62
  doc,
@@ -114,7 +114,6 @@ describe('TableRowNodeView', () => {
114
114
  editorView,
115
115
  jest.fn(),
116
116
  eventDispatcher,
117
- fakeGetEditorFeatureFlags,
118
117
  );
119
118
  });
120
119
  afterEach(() => {
@@ -216,7 +215,6 @@ describe('TableRowNodeView', () => {
216
215
  editorView,
217
216
  jest.fn(),
218
217
  eventDispatcher,
219
- fakeGetEditorFeatureFlags,
220
218
  );
221
219
  tableRowDom = editorView.dom.getElementsByTagName('tr')[0];
222
220
  });
@@ -258,7 +256,7 @@ describe('TableRowNodeView', () => {
258
256
  });
259
257
  });
260
258
 
261
- describe('with stickyHeadersOptimization', () => {
259
+ describe('sticky headers', () => {
262
260
  let rafStub: Stub;
263
261
  let originalIntersectionObserver: object;
264
262
  let originalResizeObserver: object;
@@ -323,6 +321,7 @@ describe('TableRowNodeView', () => {
323
321
  ) {
324
322
  this.disconnect = jest.fn();
325
323
  this.observe = jest.fn();
324
+ this.unobserve = jest.fn();
326
325
  intersectCallback = callback;
327
326
  };
328
327
 
@@ -332,6 +331,7 @@ describe('TableRowNodeView', () => {
332
331
  ) {
333
332
  this.disconnect = jest.fn();
334
333
  this.observe = jest.fn();
334
+ this.unobserve = jest.fn();
335
335
  resizeCallback = callback;
336
336
  };
337
337
  });
@@ -349,7 +349,6 @@ describe('TableRowNodeView', () => {
349
349
 
350
350
  const editorData = editor(
351
351
  doc(table()(tr(thEmpty, thEmpty), tr(tdEmpty, tdEmpty))),
352
- true, // toggle to enable optimization
353
352
  );
354
353
  editorView = editorData.editorView;
355
354
  eventDispatcher = editorData.eventDispatcher;
@@ -362,7 +361,6 @@ describe('TableRowNodeView', () => {
362
361
  editorView,
363
362
  jest.fn(),
364
363
  eventDispatcher,
365
- fakeGetEditorFeatureFlags,
366
364
  );
367
365
  tableRowNodeView.dom = tableRowDom;
368
366
  });
@@ -604,7 +602,6 @@ describe('TableRowNodeView', () => {
604
602
  beforeEach(() => {
605
603
  const editorData = editor(
606
604
  doc(table()(tr(thEmpty, thEmpty), tr(tdEmpty, tdEmpty))),
607
- true, // toggle to enable optimization
608
605
  );
609
606
  editorView = editorData.editorView;
610
607
  eventDispatcher = editorData.eventDispatcher;
@@ -616,7 +613,6 @@ describe('TableRowNodeView', () => {
616
613
  editorView,
617
614
  jest.fn(),
618
615
  eventDispatcher,
619
- fakeGetEditorFeatureFlags,
620
616
  );
621
617
  tableRowNodeView.dom = tableRowDom;
622
618
 
@@ -46,6 +46,7 @@ describe('RowControls', () => {
46
46
  ) {
47
47
  this.disconnect = jest.fn();
48
48
  this.observe = jest.fn();
49
+ this.unobserve = jest.fn();
49
50
  };
50
51
  });
51
52