@atlaskit/editor-plugin-table 0.1.0 → 0.1.1

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 (190) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/dist/cjs/plugins/table/ui/FloatingDeleteButton/index.js +2 -1
  3. package/dist/cjs/version.json +1 -1
  4. package/dist/es2019/plugins/table/ui/FloatingDeleteButton/index.js +2 -1
  5. package/dist/es2019/version.json +1 -1
  6. package/dist/esm/plugins/table/ui/FloatingDeleteButton/index.js +2 -1
  7. package/dist/esm/version.json +1 -1
  8. package/examples/99-testing.tsx +35 -30
  9. package/package.json +2 -11
  10. package/src/__tests__/integration/__fixtures__/auto-size-documents.ts +5 -10
  11. package/src/__tests__/integration/__fixtures__/layout-documents.ts +1 -2
  12. package/src/__tests__/integration/__fixtures__/resize-documents.ts +5 -10
  13. package/src/__tests__/integration/resize.ts +1 -2
  14. package/src/__tests__/unit/analytics.ts +33 -32
  15. package/src/__tests__/unit/collab.ts +12 -9
  16. package/src/__tests__/unit/commands/sort.ts +28 -28
  17. package/src/__tests__/unit/copy-paste.ts +6 -8
  18. package/src/__tests__/unit/event-handlers.ts +7 -10
  19. package/src/__tests__/unit/fix-tables.ts +17 -23
  20. package/src/__tests__/unit/get-toolbar-config.ts +0 -5
  21. package/src/__tests__/unit/hover-selection.ts +1 -66
  22. package/src/__tests__/unit/index-with-fake-timers.ts +1 -1
  23. package/src/__tests__/unit/index.ts +5 -5
  24. package/src/__tests__/unit/nodeviews/TableComponent.tsx +11 -218
  25. package/src/__tests__/unit/nodeviews/cell.ts +12 -10
  26. package/src/__tests__/unit/nodeviews/table.ts +25 -26
  27. package/src/__tests__/unit/pm-plugins/safari-delete-composition-text-issue-workaround.ts +11 -8
  28. package/src/__tests__/unit/pm-plugins/sticky-headers/tableRow.tsx +11 -12
  29. package/src/__tests__/unit/toolbar.ts +18 -5
  30. package/src/__tests__/unit/ui/ContextualMenu.tsx +55 -0
  31. package/src/__tests__/unit/ui/CornerControls.tsx +7 -7
  32. package/src/__tests__/unit/ui/FloatingContextualButton.tsx +45 -49
  33. package/src/__tests__/unit/ui/FloatingContextualMenu.tsx +49 -0
  34. package/src/__tests__/unit/ui/FloatingDeleteButton.tsx +30 -2
  35. package/src/__tests__/unit/ui/FloatingInsertButton.tsx +143 -111
  36. package/src/__tests__/unit/ui/RowControls.tsx +112 -141
  37. package/src/__tests__/unit/ui/TableFloatingControls.tsx +18 -15
  38. package/src/__tests__/unit/undo-redo.ts +10 -9
  39. package/src/__tests__/unit/utils/nodes.ts +8 -4
  40. package/src/__tests__/unit/utils/row-controls.ts +8 -4
  41. package/src/plugins/table/commands/clear.ts +30 -29
  42. package/src/plugins/table/commands/go-to-next-cell.ts +41 -38
  43. package/src/plugins/table/commands/insert.ts +91 -91
  44. package/src/plugins/table/commands/misc.ts +123 -125
  45. package/src/plugins/table/commands/selection.ts +329 -319
  46. package/src/plugins/table/commands-with-analytics.ts +299 -294
  47. package/src/plugins/table/event-handlers.ts +111 -111
  48. package/src/plugins/table/handlers.ts +95 -94
  49. package/src/plugins/table/nodeviews/OverflowShadowsObserver.ts +4 -3
  50. package/src/plugins/table/nodeviews/TableComponent.tsx +6 -9
  51. package/src/plugins/table/nodeviews/update-overflow-shadows.ts +39 -39
  52. package/src/plugins/table/pm-plugins/decorations/utils/column-controls.ts +7 -9
  53. package/src/plugins/table/pm-plugins/decorations/utils/column-resizing.ts +30 -30
  54. package/src/plugins/table/pm-plugins/decorations/utils/compose-decorations.ts +7 -7
  55. package/src/plugins/table/pm-plugins/plugin-factory.ts +33 -33
  56. package/src/plugins/table/pm-plugins/safari-delete-composition-text-issue-workaround.ts +6 -9
  57. package/src/plugins/table/pm-plugins/sticky-headers/nodeviews/tableRow.ts +3 -2
  58. package/src/plugins/table/pm-plugins/table-resizing/commands.ts +98 -90
  59. package/src/plugins/table/pm-plugins/table-resizing/utils/dom.ts +46 -47
  60. package/src/plugins/table/toolbar.tsx +116 -113
  61. package/src/plugins/table/transforms/column-width.ts +143 -146
  62. package/src/plugins/table/transforms/delete-columns.ts +144 -142
  63. package/src/plugins/table/transforms/delete-rows.ts +110 -111
  64. package/src/plugins/table/transforms/metadata.ts +9 -9
  65. package/src/plugins/table/ui/FloatingContextualMenu/ContextualMenu.tsx +7 -6
  66. package/src/plugins/table/ui/FloatingDeleteButton/index.tsx +3 -2
  67. package/src/plugins/table/ui/FloatingInsertButton/index.tsx +2 -5
  68. package/src/plugins/table/ui/LayoutButton/index.tsx +2 -6
  69. package/src/plugins/table/ui/common-styles.ts +1 -3
  70. package/src/plugins/table/utils/analytics.ts +24 -25
  71. package/src/plugins/table/utils/dom.ts +3 -3
  72. package/src/plugins/table/utils/row-controls.ts +92 -93
  73. package/dist/types-ts4.0/index.d.ts +0 -1
  74. package/dist/types-ts4.0/plugins/table/commands/clear.d.ts +0 -3
  75. package/dist/types-ts4.0/plugins/table/commands/collapse.d.ts +0 -2
  76. package/dist/types-ts4.0/plugins/table/commands/go-to-next-cell.d.ts +0 -4
  77. package/dist/types-ts4.0/plugins/table/commands/hover.d.ts +0 -8
  78. package/dist/types-ts4.0/plugins/table/commands/index.d.ts +0 -7
  79. package/dist/types-ts4.0/plugins/table/commands/insert.d.ts +0 -10
  80. package/dist/types-ts4.0/plugins/table/commands/misc.d.ts +0 -27
  81. package/dist/types-ts4.0/plugins/table/commands/selection.d.ts +0 -8
  82. package/dist/types-ts4.0/plugins/table/commands/sort.d.ts +0 -3
  83. package/dist/types-ts4.0/plugins/table/commands/split-cell.d.ts +0 -6
  84. package/dist/types-ts4.0/plugins/table/commands/toggle.d.ts +0 -12
  85. package/dist/types-ts4.0/plugins/table/commands-with-analytics.d.ts +0 -26
  86. package/dist/types-ts4.0/plugins/table/create-plugin-config.d.ts +0 -2
  87. package/dist/types-ts4.0/plugins/table/event-handlers.d.ts +0 -16
  88. package/dist/types-ts4.0/plugins/table/handlers.d.ts +0 -3
  89. package/dist/types-ts4.0/plugins/table/index.d.ts +0 -17
  90. package/dist/types-ts4.0/plugins/table/nodeviews/OverflowShadowsObserver.d.ts +0 -26
  91. package/dist/types-ts4.0/plugins/table/nodeviews/TableComponent.d.ts +0 -72
  92. package/dist/types-ts4.0/plugins/table/nodeviews/__mocks__/OverflowShadowsObserver.d.ts +0 -9
  93. package/dist/types-ts4.0/plugins/table/nodeviews/__mocks__/OverridableMock.d.ts +0 -9
  94. package/dist/types-ts4.0/plugins/table/nodeviews/table.d.ts +0 -31
  95. package/dist/types-ts4.0/plugins/table/nodeviews/tableCell.d.ts +0 -19
  96. package/dist/types-ts4.0/plugins/table/nodeviews/types.d.ts +0 -24
  97. package/dist/types-ts4.0/plugins/table/nodeviews/update-overflow-shadows.d.ts +0 -8
  98. package/dist/types-ts4.0/plugins/table/pm-plugins/decorations/plugin.d.ts +0 -7
  99. package/dist/types-ts4.0/plugins/table/pm-plugins/decorations/utils/column-controls.d.ts +0 -3
  100. package/dist/types-ts4.0/plugins/table/pm-plugins/decorations/utils/column-resizing.d.ts +0 -2
  101. package/dist/types-ts4.0/plugins/table/pm-plugins/decorations/utils/compose-decorations.d.ts +0 -2
  102. package/dist/types-ts4.0/plugins/table/pm-plugins/decorations/utils/index.d.ts +0 -3
  103. package/dist/types-ts4.0/plugins/table/pm-plugins/decorations/utils/types.d.ts +0 -6
  104. package/dist/types-ts4.0/plugins/table/pm-plugins/default-table-selection.d.ts +0 -5
  105. package/dist/types-ts4.0/plugins/table/pm-plugins/keymap.d.ts +0 -5
  106. package/dist/types-ts4.0/plugins/table/pm-plugins/main.d.ts +0 -8
  107. package/dist/types-ts4.0/plugins/table/pm-plugins/plugin-factory.d.ts +0 -1
  108. package/dist/types-ts4.0/plugins/table/pm-plugins/plugin-key.d.ts +0 -3
  109. package/dist/types-ts4.0/plugins/table/pm-plugins/safari-delayed-dom-selection-syncing-workaround.d.ts +0 -4
  110. package/dist/types-ts4.0/plugins/table/pm-plugins/safari-delete-composition-text-issue-workaround.d.ts +0 -15
  111. package/dist/types-ts4.0/plugins/table/pm-plugins/sticky-headers/commands.d.ts +0 -3
  112. package/dist/types-ts4.0/plugins/table/pm-plugins/sticky-headers/index.d.ts +0 -6
  113. package/dist/types-ts4.0/plugins/table/pm-plugins/sticky-headers/nodeviews/dom.d.ts +0 -6
  114. package/dist/types-ts4.0/plugins/table/pm-plugins/sticky-headers/nodeviews/tableRow.d.ts +0 -65
  115. package/dist/types-ts4.0/plugins/table/pm-plugins/sticky-headers/plugin-key.d.ts +0 -3
  116. package/dist/types-ts4.0/plugins/table/pm-plugins/sticky-headers/plugin-state.d.ts +0 -3
  117. package/dist/types-ts4.0/plugins/table/pm-plugins/sticky-headers/plugin.d.ts +0 -4
  118. package/dist/types-ts4.0/plugins/table/pm-plugins/sticky-headers/types.d.ts +0 -16
  119. package/dist/types-ts4.0/plugins/table/pm-plugins/sticky-headers/util.d.ts +0 -2
  120. package/dist/types-ts4.0/plugins/table/pm-plugins/table-local-id.d.ts +0 -22
  121. package/dist/types-ts4.0/plugins/table/pm-plugins/table-resizing/commands.d.ts +0 -25
  122. package/dist/types-ts4.0/plugins/table/pm-plugins/table-resizing/event-handlers.d.ts +0 -4
  123. package/dist/types-ts4.0/plugins/table/pm-plugins/table-resizing/index.d.ts +0 -4
  124. package/dist/types-ts4.0/plugins/table/pm-plugins/table-resizing/plugin-factory.d.ts +0 -4
  125. package/dist/types-ts4.0/plugins/table/pm-plugins/table-resizing/plugin-key.d.ts +0 -3
  126. package/dist/types-ts4.0/plugins/table/pm-plugins/table-resizing/plugin.d.ts +0 -6
  127. package/dist/types-ts4.0/plugins/table/pm-plugins/table-resizing/reducer.d.ts +0 -3
  128. package/dist/types-ts4.0/plugins/table/pm-plugins/table-resizing/utils/colgroup.d.ts +0 -8
  129. package/dist/types-ts4.0/plugins/table/pm-plugins/table-resizing/utils/column-state.d.ts +0 -14
  130. package/dist/types-ts4.0/plugins/table/pm-plugins/table-resizing/utils/content-width.d.ts +0 -4
  131. package/dist/types-ts4.0/plugins/table/pm-plugins/table-resizing/utils/dom.d.ts +0 -13
  132. package/dist/types-ts4.0/plugins/table/pm-plugins/table-resizing/utils/index.d.ts +0 -12
  133. package/dist/types-ts4.0/plugins/table/pm-plugins/table-resizing/utils/misc.d.ts +0 -22
  134. package/dist/types-ts4.0/plugins/table/pm-plugins/table-resizing/utils/resize-column.d.ts +0 -2
  135. package/dist/types-ts4.0/plugins/table/pm-plugins/table-resizing/utils/resize-logic.d.ts +0 -4
  136. package/dist/types-ts4.0/plugins/table/pm-plugins/table-resizing/utils/resize-state.d.ts +0 -29
  137. package/dist/types-ts4.0/plugins/table/pm-plugins/table-resizing/utils/scale-table.d.ts +0 -17
  138. package/dist/types-ts4.0/plugins/table/pm-plugins/table-resizing/utils/types.d.ts +0 -22
  139. package/dist/types-ts4.0/plugins/table/pm-plugins/table-resizing/utils/unit-to-number.d.ts +0 -1
  140. package/dist/types-ts4.0/plugins/table/pm-plugins/table-selection-keymap.d.ts +0 -4
  141. package/dist/types-ts4.0/plugins/table/reducer.d.ts +0 -3
  142. package/dist/types-ts4.0/plugins/table/toolbar.d.ts +0 -36
  143. package/dist/types-ts4.0/plugins/table/transforms/column-width.d.ts +0 -18
  144. package/dist/types-ts4.0/plugins/table/transforms/delete-columns.d.ts +0 -3
  145. package/dist/types-ts4.0/plugins/table/transforms/delete-rows.d.ts +0 -3
  146. package/dist/types-ts4.0/plugins/table/transforms/fix-tables.d.ts +0 -10
  147. package/dist/types-ts4.0/plugins/table/transforms/index.d.ts +0 -7
  148. package/dist/types-ts4.0/plugins/table/transforms/merge.d.ts +0 -5
  149. package/dist/types-ts4.0/plugins/table/transforms/metadata.d.ts +0 -21
  150. package/dist/types-ts4.0/plugins/table/transforms/replace-table.d.ts +0 -5
  151. package/dist/types-ts4.0/plugins/table/transforms/split.d.ts +0 -9
  152. package/dist/types-ts4.0/plugins/table/types.d.ts +0 -328
  153. package/dist/types-ts4.0/plugins/table/ui/FloatingContextualButton/index.d.ts +0 -29
  154. package/dist/types-ts4.0/plugins/table/ui/FloatingContextualButton/styles.d.ts +0 -1
  155. package/dist/types-ts4.0/plugins/table/ui/FloatingContextualMenu/ContextualMenu.d.ts +0 -87
  156. package/dist/types-ts4.0/plugins/table/ui/FloatingContextualMenu/index.d.ts +0 -22
  157. package/dist/types-ts4.0/plugins/table/ui/FloatingContextualMenu/styles.d.ts +0 -2
  158. package/dist/types-ts4.0/plugins/table/ui/FloatingDeleteButton/DeleteButton.d.ts +0 -14
  159. package/dist/types-ts4.0/plugins/table/ui/FloatingDeleteButton/getPopUpOptions.d.ts +0 -10
  160. package/dist/types-ts4.0/plugins/table/ui/FloatingDeleteButton/index.d.ts +0 -54
  161. package/dist/types-ts4.0/plugins/table/ui/FloatingDeleteButton/types.d.ts +0 -1
  162. package/dist/types-ts4.0/plugins/table/ui/FloatingInsertButton/InsertButton.d.ts +0 -12
  163. package/dist/types-ts4.0/plugins/table/ui/FloatingInsertButton/getPopupOptions.d.ts +0 -3
  164. package/dist/types-ts4.0/plugins/table/ui/FloatingInsertButton/index.d.ts +0 -35
  165. package/dist/types-ts4.0/plugins/table/ui/LayoutButton/index.d.ts +0 -21
  166. package/dist/types-ts4.0/plugins/table/ui/TableFloatingControls/CornerControls/index.d.ts +0 -16
  167. package/dist/types-ts4.0/plugins/table/ui/TableFloatingControls/NumberColumn/index.d.ts +0 -21
  168. package/dist/types-ts4.0/plugins/table/ui/TableFloatingControls/RowControls/index.d.ts +0 -17
  169. package/dist/types-ts4.0/plugins/table/ui/TableFloatingControls/index.d.ts +0 -40
  170. package/dist/types-ts4.0/plugins/table/ui/common-styles.d.ts +0 -4
  171. package/dist/types-ts4.0/plugins/table/ui/consts.d.ts +0 -39
  172. package/dist/types-ts4.0/plugins/table/ui/messages.d.ts +0 -38
  173. package/dist/types-ts4.0/plugins/table/ui/ui-styles.d.ts +0 -15
  174. package/dist/types-ts4.0/plugins/table/utils/analytics.d.ts +0 -18
  175. package/dist/types-ts4.0/plugins/table/utils/collapse.d.ts +0 -29
  176. package/dist/types-ts4.0/plugins/table/utils/column-controls.d.ts +0 -10
  177. package/dist/types-ts4.0/plugins/table/utils/decoration.d.ts +0 -16
  178. package/dist/types-ts4.0/plugins/table/utils/dom.d.ts +0 -20
  179. package/dist/types-ts4.0/plugins/table/utils/get-allow-add-column-custom-step.d.ts +0 -2
  180. package/dist/types-ts4.0/plugins/table/utils/index.d.ts +0 -11
  181. package/dist/types-ts4.0/plugins/table/utils/nodes.d.ts +0 -12
  182. package/dist/types-ts4.0/plugins/table/utils/paste.d.ts +0 -14
  183. package/dist/types-ts4.0/plugins/table/utils/referentiality.d.ts +0 -2
  184. package/dist/types-ts4.0/plugins/table/utils/row-controls.d.ts +0 -16
  185. package/dist/types-ts4.0/plugins/table/utils/selection.d.ts +0 -6
  186. package/dist/types-ts4.0/plugins/table/utils/table.d.ts +0 -4
  187. package/dist/types-ts4.0/plugins/table/utils/update-plugin-state-decorations.d.ts +0 -4
  188. package/dist/types-ts4.0/plugins/table-plugin.d.ts +0 -2
  189. package/src/plugins/table/ui/FloatingContextualMenu/__tests__/ContextualMenu.tsx +0 -56
  190. package/src/plugins/table/ui/FloatingContextualMenu/__tests__/FloatingContextualMenu.tsx +0 -50
@@ -11,36 +11,36 @@ import { DecorationTransformer } from './types';
11
11
 
12
12
  const emptyDecorations = [[], []];
13
13
 
14
- const updateColumnResizeHandle = (
15
- columnResizesDecorations: Decoration[],
16
- ): DecorationTransformer => ({ decorationSet, tr }) =>
17
- updateDecorations(
18
- tr.doc,
19
- decorationSet,
20
- columnResizesDecorations,
21
- TableDecorations.COLUMN_RESIZING_HANDLE,
22
- );
14
+ const updateColumnResizeHandle =
15
+ (columnResizesDecorations: Decoration[]): DecorationTransformer =>
16
+ ({ decorationSet, tr }) =>
17
+ updateDecorations(
18
+ tr.doc,
19
+ decorationSet,
20
+ columnResizesDecorations,
21
+ TableDecorations.COLUMN_RESIZING_HANDLE,
22
+ );
23
23
 
24
- const updateLastCellElement = (
25
- lastCellElementsDecorations: Decoration[],
26
- ): DecorationTransformer => ({ decorationSet, tr }) =>
27
- updateDecorations(
28
- tr.doc,
29
- decorationSet,
30
- lastCellElementsDecorations,
31
- TableDecorations.LAST_CELL_ELEMENT,
32
- );
24
+ const updateLastCellElement =
25
+ (lastCellElementsDecorations: Decoration[]): DecorationTransformer =>
26
+ ({ decorationSet, tr }) =>
27
+ updateDecorations(
28
+ tr.doc,
29
+ decorationSet,
30
+ lastCellElementsDecorations,
31
+ TableDecorations.LAST_CELL_ELEMENT,
32
+ );
33
33
 
34
- export const buildColumnResizingDecorations = (
35
- columnEndIndex: number,
36
- ): DecorationTransformer => ({ tr, decorationSet }): DecorationSet => {
37
- const [columnResizesDecorations, lastCellElementsDecorations] =
38
- columnEndIndex < 0
39
- ? emptyDecorations
40
- : createResizeHandleDecoration(tr, { right: columnEndIndex });
34
+ export const buildColumnResizingDecorations =
35
+ (columnEndIndex: number): DecorationTransformer =>
36
+ ({ tr, decorationSet }): DecorationSet => {
37
+ const [columnResizesDecorations, lastCellElementsDecorations] =
38
+ columnEndIndex < 0
39
+ ? emptyDecorations
40
+ : createResizeHandleDecoration(tr, { right: columnEndIndex });
41
41
 
42
- return composeDecorations([
43
- updateColumnResizeHandle(columnResizesDecorations),
44
- updateLastCellElement(lastCellElementsDecorations),
45
- ])({ decorationSet, tr });
46
- };
42
+ return composeDecorations([
43
+ updateColumnResizeHandle(columnResizesDecorations),
44
+ updateLastCellElement(lastCellElementsDecorations),
45
+ ])({ decorationSet, tr });
46
+ };
@@ -2,10 +2,10 @@ import { DecorationSet } from 'prosemirror-view';
2
2
 
3
3
  import { DecorationTransformer } from './types';
4
4
 
5
- export const composeDecorations = (
6
- transformers: Array<DecorationTransformer>,
7
- ): DecorationTransformer => ({ decorationSet, tr }): DecorationSet =>
8
- transformers.reduce(
9
- (decorationSet, transform) => transform({ decorationSet, tr }),
10
- decorationSet,
11
- );
5
+ export const composeDecorations =
6
+ (transformers: Array<DecorationTransformer>): DecorationTransformer =>
7
+ ({ decorationSet, tr }): DecorationSet =>
8
+ transformers.reduce(
9
+ (decorationSet, transform) => transform({ decorationSet, tr }),
10
+ decorationSet,
11
+ );
@@ -3,41 +3,41 @@ import { handleDocOrSelectionChanged } from '../handlers';
3
3
  import reducer from '../reducer';
4
4
  import { pluginKey } from './plugin-key';
5
5
 
6
- export const {
7
- createPluginState,
8
- createCommand,
9
- getPluginState,
10
- } = pluginFactory(pluginKey, reducer, {
11
- mapping: (tr, pluginState) => {
12
- if (tr.docChanged) {
13
- let updatedTargetCell = {};
14
- if (pluginState.targetCellPosition) {
15
- const { pos, deleted } = tr.mapping.mapResult(
16
- pluginState.targetCellPosition,
17
- );
6
+ export const { createPluginState, createCommand, getPluginState } =
7
+ pluginFactory(pluginKey, reducer, {
8
+ mapping: (tr, pluginState) => {
9
+ if (tr.docChanged) {
10
+ let updatedTargetCell = {};
11
+ if (pluginState.targetCellPosition) {
12
+ const { pos, deleted } = tr.mapping.mapResult(
13
+ pluginState.targetCellPosition,
14
+ );
18
15
 
19
- updatedTargetCell = {
20
- targetCellPosition: deleted ? undefined : pos,
21
- };
22
- }
16
+ updatedTargetCell = {
17
+ targetCellPosition: deleted ? undefined : pos,
18
+ };
19
+ }
23
20
 
24
- let updatedTablePos = {};
25
- if (pluginState.tablePos) {
26
- const { pos, deleted } = tr.mapping.mapResult(pluginState.tablePos, -1);
21
+ let updatedTablePos = {};
22
+ if (pluginState.tablePos) {
23
+ const { pos, deleted } = tr.mapping.mapResult(
24
+ pluginState.tablePos,
25
+ -1,
26
+ );
27
27
 
28
- updatedTablePos = {
29
- tablePos: deleted ? undefined : pos,
28
+ updatedTablePos = {
29
+ tablePos: deleted ? undefined : pos,
30
+ };
31
+ }
32
+
33
+ return {
34
+ ...pluginState,
35
+ ...updatedTargetCell,
36
+ ...updatedTablePos,
30
37
  };
31
38
  }
32
-
33
- return {
34
- ...pluginState,
35
- ...updatedTargetCell,
36
- ...updatedTablePos,
37
- };
38
- }
39
- return pluginState;
40
- },
41
- onDocChanged: handleDocOrSelectionChanged,
42
- onSelectionChanged: handleDocOrSelectionChanged,
43
- });
39
+ return pluginState;
40
+ },
41
+ onDocChanged: handleDocOrSelectionChanged,
42
+ onSelectionChanged: handleDocOrSelectionChanged,
43
+ });
@@ -12,9 +12,10 @@ interface SafariDeleteCompositionTextIssueWorkaroundPluginState {
12
12
  decorations: DecorationSet;
13
13
  }
14
14
 
15
- export const tableSafariDeleteCompositionTextIssueWorkaroundKey = new PluginKey<
16
- SafariDeleteCompositionTextIssueWorkaroundPluginState
17
- >('tableSafariDeleteCompositionTextIssueWorkaround');
15
+ export const tableSafariDeleteCompositionTextIssueWorkaroundKey =
16
+ new PluginKey<SafariDeleteCompositionTextIssueWorkaroundPluginState>(
17
+ 'tableSafariDeleteCompositionTextIssueWorkaround',
18
+ );
18
19
 
19
20
  export const createPlugin = () => {
20
21
  return new SafePlugin<SafariDeleteCompositionTextIssueWorkaroundPluginState>({
@@ -73,12 +74,8 @@ export const createPlugin = () => {
73
74
  return false;
74
75
  }
75
76
  const range = selection.getRangeAt(0);
76
- const {
77
- startContainer,
78
- endContainer,
79
- endOffset,
80
- startOffset,
81
- } = range;
77
+ const { startContainer, endContainer, endOffset, startOffset } =
78
+ range;
82
79
  /**
83
80
  * On Safari when composition text is deleted, it deletes any empty elements it finds up the dom tree. Prosemirror can sometimes be confused by this
84
81
  * and will think that we meant to delete those elements. This fix forces the resulting node to not be empty.
@@ -526,8 +526,9 @@ export class TableRowNodeView implements NodeView {
526
526
  shouldHeaderStick = (tree: TableDOMElements): boolean => {
527
527
  const { wrapper } = tree;
528
528
  const tableWrapperRect = wrapper.getBoundingClientRect();
529
- const editorAreaRect = (this
530
- .editorScrollableElement as HTMLElement).getBoundingClientRect();
529
+ const editorAreaRect = (
530
+ this.editorScrollableElement as HTMLElement
531
+ ).getBoundingClientRect();
531
532
 
532
533
  const stickyHeaderRect = this.contentDOM.getBoundingClientRect();
533
534
  const firstHeaderRow = !this.dom.previousElementSibling;
@@ -22,106 +22,114 @@ import {
22
22
  import { ContentNodeWithPos } from 'prosemirror-utils';
23
23
 
24
24
  // Scale the table to meet new requirements (col, layout change etc)
25
- export const scaleTable = (
26
- tableRef: HTMLTableElement | null | undefined,
27
- options: ScaleOptions,
28
- domAtPos: DomAtPos,
29
- ): Command => (state, dispatch) => {
30
- if (!tableRef) {
31
- return false;
32
- }
25
+ export const scaleTable =
26
+ (
27
+ tableRef: HTMLTableElement | null | undefined,
28
+ options: ScaleOptions,
29
+ domAtPos: DomAtPos,
30
+ ): Command =>
31
+ (state, dispatch) => {
32
+ if (!tableRef) {
33
+ return false;
34
+ }
35
+
36
+ const { node, start, parentWidth } = options;
37
+
38
+ // If a table has not been resized yet, columns should be auto.
39
+ if (hasTableBeenResized(node) === false) {
40
+ // If its not a re-sized table, we still want to re-create cols
41
+ // To force reflow of columns upon delete.
42
+ recreateResizeColsByNode(tableRef, node);
43
+ return false;
44
+ }
33
45
 
34
- const { node, start, parentWidth } = options;
46
+ let resizeState;
47
+ if (parentWidth) {
48
+ resizeState = scaleWithParent(
49
+ tableRef,
50
+ parentWidth,
51
+ node,
52
+ start,
53
+ domAtPos,
54
+ );
55
+ } else {
56
+ resizeState = scale(tableRef, options, domAtPos);
57
+ }
58
+
59
+ if (resizeState) {
60
+ let { tr } = state;
61
+ tr = updateColumnWidths(resizeState, node, start)(tr);
62
+
63
+ if (tr.docChanged && dispatch) {
64
+ tr.setMeta('scrollIntoView', false);
65
+ // TODO: ED-8995
66
+ // We need to do this check to reduce the number of race conditions when working with tables.
67
+ // This metadata is been used in the sendTransaction function in the Collab plugin
68
+ tr.setMeta('scaleTable', true);
69
+ dispatch(tr);
70
+ return true;
71
+ }
72
+ }
35
73
 
36
- // If a table has not been resized yet, columns should be auto.
37
- if (hasTableBeenResized(node) === false) {
38
- // If its not a re-sized table, we still want to re-create cols
39
- // To force reflow of columns upon delete.
40
- recreateResizeColsByNode(tableRef, node);
41
74
  return false;
42
- }
43
-
44
- let resizeState;
45
- if (parentWidth) {
46
- resizeState = scaleWithParent(tableRef, parentWidth, node, start, domAtPos);
47
- } else {
48
- resizeState = scale(tableRef, options, domAtPos);
49
- }
50
-
51
- if (resizeState) {
52
- let { tr } = state;
53
- tr = updateColumnWidths(resizeState, node, start)(tr);
54
-
55
- if (tr.docChanged && dispatch) {
56
- tr.setMeta('scrollIntoView', false);
57
- // TODO: ED-8995
58
- // We need to do this check to reduce the number of race conditions when working with tables.
59
- // This metadata is been used in the sendTransaction function in the Collab plugin
60
- tr.setMeta('scaleTable', true);
61
- dispatch(tr);
75
+ };
76
+
77
+ export const evenColumns =
78
+ ({
79
+ resizeState,
80
+ table,
81
+ start,
82
+ event,
83
+ }: {
84
+ resizeState: ResizeState;
85
+ table: PMNode;
86
+ start: number;
87
+ event: MouseEvent;
88
+ }): Command =>
89
+ (state, dispatch) => {
90
+ if (!isTableSelected(state.selection)) {
91
+ return false;
92
+ }
93
+
94
+ // double click detection logic
95
+ // Note: ProseMirror's handleDoubleClick doesn't quite work with DOM mousedown event handler
96
+ const { lastClick } = getPluginState(state);
97
+ const now = Date.now();
98
+ if (
99
+ lastClick &&
100
+ now - lastClick.time < 500 &&
101
+ isClickNear(event, lastClick)
102
+ ) {
103
+ const newState = evenAllColumnsWidths(resizeState);
104
+ setLastClick(null, (tr) =>
105
+ updateColumnWidths(newState, table, start)(tr),
106
+ )(state, dispatch);
107
+
62
108
  return true;
63
109
  }
64
- }
65
-
66
- return false;
67
- };
68
-
69
- export const evenColumns = ({
70
- resizeState,
71
- table,
72
- start,
73
- event,
74
- }: {
75
- resizeState: ResizeState;
76
- table: PMNode;
77
- start: number;
78
- event: MouseEvent;
79
- }): Command => (state, dispatch) => {
80
- if (!isTableSelected(state.selection)) {
81
- return false;
82
- }
83
-
84
- // double click detection logic
85
- // Note: ProseMirror's handleDoubleClick doesn't quite work with DOM mousedown event handler
86
- const { lastClick } = getPluginState(state);
87
- const now = Date.now();
88
- if (
89
- lastClick &&
90
- now - lastClick.time < 500 &&
91
- isClickNear(event, lastClick)
92
- ) {
93
- const newState = evenAllColumnsWidths(resizeState);
94
- setLastClick(null, (tr) => updateColumnWidths(newState, table, start)(tr))(
110
+
111
+ setLastClick({ x: event.clientX, y: event.clientY, time: now })(
95
112
  state,
96
113
  dispatch,
97
114
  );
98
115
 
99
- return true;
100
- }
101
-
102
- setLastClick({ x: event.clientX, y: event.clientY, time: now })(
103
- state,
104
- dispatch,
105
- );
116
+ return false;
117
+ };
118
+
119
+ export const distributeColumnsWidths =
120
+ (newResizeState: ResizeState, table: ContentNodeWithPos): Command =>
121
+ (state, dispatch) => {
122
+ if (dispatch) {
123
+ const tr = updateColumnWidths(
124
+ newResizeState,
125
+ table.node,
126
+ table.start,
127
+ )(state.tr);
128
+ stopResizing(tr)(state, dispatch);
129
+ }
106
130
 
107
- return false;
108
- };
109
-
110
- export const distributeColumnsWidths = (
111
- newResizeState: ResizeState,
112
- table: ContentNodeWithPos,
113
- ): Command => (state, dispatch) => {
114
- if (dispatch) {
115
- const tr = updateColumnWidths(
116
- newResizeState,
117
- table.node,
118
- table.start,
119
- )(state.tr);
120
- stopResizing(tr)(state, dispatch);
121
- }
122
-
123
- return true;
124
- };
131
+ return true;
132
+ };
125
133
 
126
134
  export const setResizeHandlePos = (resizeHandlePos: number | null) =>
127
135
  createCommand({
@@ -20,61 +20,60 @@ import { getRowHeights } from '../../../utils/row-controls';
20
20
  import { colWidthsForRow } from '../../../utils/column-controls';
21
21
  import { getPluginState as getMainPluginState } from '../../plugin-factory';
22
22
 
23
- export const updateControls = (
24
- getEditorFeatureFlags: GetEditorFeatureFlags,
25
- ) => (state: EditorState) => {
26
- const { tableRef } = getMainPluginState(state);
27
- if (!tableRef) {
28
- return;
29
- }
30
- const tr = tableRef.querySelector('tr');
31
- if (!tr) {
32
- return;
33
- }
34
- const wrapper = tableRef.parentElement;
35
- if (!(wrapper && wrapper.parentElement)) {
36
- return;
37
- }
23
+ export const updateControls =
24
+ (getEditorFeatureFlags: GetEditorFeatureFlags) => (state: EditorState) => {
25
+ const { tableRef } = getMainPluginState(state);
26
+ if (!tableRef) {
27
+ return;
28
+ }
29
+ const tr = tableRef.querySelector('tr');
30
+ if (!tr) {
31
+ return;
32
+ }
33
+ const wrapper = tableRef.parentElement;
34
+ if (!(wrapper && wrapper.parentElement)) {
35
+ return;
36
+ }
38
37
 
39
- const rowControls = wrapper.parentElement.querySelectorAll<HTMLElement>(
40
- `.${ClassName.ROW_CONTROLS_BUTTON_WRAP}`,
41
- );
42
- const numberedRows = wrapper.parentElement.querySelectorAll<HTMLElement>(
43
- ClassName.NUMBERED_COLUMN_BUTTON,
44
- );
38
+ const rowControls = wrapper.parentElement.querySelectorAll<HTMLElement>(
39
+ `.${ClassName.ROW_CONTROLS_BUTTON_WRAP}`,
40
+ );
41
+ const numberedRows = wrapper.parentElement.querySelectorAll<HTMLElement>(
42
+ ClassName.NUMBERED_COLUMN_BUTTON,
43
+ );
45
44
 
46
- syncStickyRowToTable(tableRef);
45
+ syncStickyRowToTable(tableRef);
47
46
 
48
- const rowHeights = getRowHeights(tableRef);
47
+ const rowHeights = getRowHeights(tableRef);
49
48
 
50
- // update rows controls height on resize
51
- for (let i = 0, count = rowControls.length; i < count; i++) {
52
- const height = rowHeights[i];
53
- if (height) {
54
- rowControls[i].style.height = `${height}px`;
49
+ // update rows controls height on resize
50
+ for (let i = 0, count = rowControls.length; i < count; i++) {
51
+ const height = rowHeights[i];
52
+ if (height) {
53
+ rowControls[i].style.height = `${height}px`;
55
54
 
56
- if (numberedRows.length) {
57
- numberedRows[i].style.height = `${height}px`;
55
+ if (numberedRows.length) {
56
+ numberedRows[i].style.height = `${height}px`;
57
+ }
58
58
  }
59
59
  }
60
- }
61
60
 
62
- const rightShadows = wrapper.parentElement.querySelectorAll<HTMLElement>(
63
- `.${ClassName.TABLE_RIGHT_SHADOW}`,
64
- );
65
-
66
- const leftShadows = wrapper.parentElement.querySelectorAll<HTMLElement>(
67
- `.${ClassName.TABLE_LEFT_SHADOW}`,
68
- );
69
-
70
- updateOverflowShadows(getEditorFeatureFlags)(
71
- state,
72
- wrapper,
73
- tableRef,
74
- rightShadows,
75
- leftShadows,
76
- );
77
- };
61
+ const rightShadows = wrapper.parentElement.querySelectorAll<HTMLElement>(
62
+ `.${ClassName.TABLE_RIGHT_SHADOW}`,
63
+ );
64
+
65
+ const leftShadows = wrapper.parentElement.querySelectorAll<HTMLElement>(
66
+ `.${ClassName.TABLE_LEFT_SHADOW}`,
67
+ );
68
+
69
+ updateOverflowShadows(getEditorFeatureFlags)(
70
+ state,
71
+ wrapper,
72
+ tableRef,
73
+ rightShadows,
74
+ leftShadows,
75
+ );
76
+ };
78
77
 
79
78
  export const isClickNear = (
80
79
  event: MouseEvent,