@atlaskit/editor-plugin-table 7.16.10 → 7.16.12

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 (244) hide show
  1. package/.eslintrc.js +3 -3
  2. package/CHANGELOG.md +1836 -1831
  3. package/dist/cjs/commands/misc.js +3 -3
  4. package/dist/cjs/nodeviews/TableCell.js +10 -10
  5. package/dist/cjs/nodeviews/TableContainer.js +41 -6
  6. package/dist/cjs/nodeviews/TableResizer.js +7 -7
  7. package/dist/cjs/nodeviews/TableRow.js +23 -23
  8. package/dist/cjs/pm-plugins/table-resizing/plugin.js +3 -3
  9. package/dist/cjs/pm-plugins/table-resizing/utils/resize-state.js +4 -4
  10. package/dist/cjs/pm-plugins/table-resizing/utils/scale-table.js +3 -3
  11. package/dist/cjs/ui/FloatingContextualMenu/styles.js +1 -1
  12. package/dist/cjs/ui/FloatingDragMenu/styles.js +1 -1
  13. package/dist/cjs/ui/common-styles.js +19 -13
  14. package/dist/cjs/ui/ui-styles.js +25 -25
  15. package/dist/cjs/utils/merged-cells.js +3 -3
  16. package/dist/es2019/commands/misc.js +3 -3
  17. package/dist/es2019/nodeviews/TableContainer.js +43 -5
  18. package/dist/es2019/nodeviews/TableResizer.js +7 -7
  19. package/dist/es2019/nodeviews/TableRow.js +21 -21
  20. package/dist/es2019/pm-plugins/table-resizing/plugin.js +3 -3
  21. package/dist/es2019/pm-plugins/table-resizing/utils/resize-state.js +4 -4
  22. package/dist/es2019/pm-plugins/table-resizing/utils/scale-table.js +3 -3
  23. package/dist/es2019/ui/FloatingContextualMenu/styles.js +47 -47
  24. package/dist/es2019/ui/FloatingDragMenu/styles.js +30 -30
  25. package/dist/es2019/ui/common-styles.js +808 -814
  26. package/dist/es2019/ui/ui-styles.js +665 -678
  27. package/dist/es2019/utils/merged-cells.js +3 -3
  28. package/dist/esm/commands/misc.js +3 -3
  29. package/dist/esm/nodeviews/TableCell.js +10 -10
  30. package/dist/esm/nodeviews/TableContainer.js +42 -7
  31. package/dist/esm/nodeviews/TableResizer.js +7 -7
  32. package/dist/esm/nodeviews/TableRow.js +23 -23
  33. package/dist/esm/pm-plugins/table-resizing/plugin.js +3 -3
  34. package/dist/esm/pm-plugins/table-resizing/utils/resize-state.js +4 -4
  35. package/dist/esm/pm-plugins/table-resizing/utils/scale-table.js +3 -3
  36. package/dist/esm/ui/FloatingContextualMenu/styles.js +1 -1
  37. package/dist/esm/ui/FloatingDragMenu/styles.js +1 -1
  38. package/dist/esm/ui/common-styles.js +19 -13
  39. package/dist/esm/ui/ui-styles.js +25 -25
  40. package/dist/esm/utils/merged-cells.js +3 -3
  41. package/dist/types/pm-plugins/decorations/utils/index.d.ts +1 -1
  42. package/dist/types/pm-plugins/drag-and-drop/utils/autoscrollers.d.ts +1 -1
  43. package/dist/types/pm-plugins/drag-and-drop/utils/getDragBehaviour.d.ts +1 -1
  44. package/dist/types/pm-plugins/table-resizing/utils/index.d.ts +1 -1
  45. package/dist/types/ui/ColumnResizeWidget/index.d.ts +1 -1
  46. package/dist/types/ui/FloatingAlignmentButtons/FloatingAlignmentButtons.d.ts +1 -1
  47. package/dist/types/ui/FloatingToolbarLabel/FloatingToolbarLabel.d.ts +1 -1
  48. package/dist/types/ui/TableFloatingColumnControls/ColumnDropTargets/ColumnDropTarget.d.ts +1 -1
  49. package/dist/types/ui/TableFloatingControls/CornerControls/index.d.ts +1 -1
  50. package/dist/types/ui/icons/DragHandleDisabledIcon.d.ts +1 -1
  51. package/dist/types-ts4.5/pm-plugins/decorations/utils/index.d.ts +1 -1
  52. package/dist/types-ts4.5/pm-plugins/drag-and-drop/utils/autoscrollers.d.ts +1 -1
  53. package/dist/types-ts4.5/pm-plugins/drag-and-drop/utils/getDragBehaviour.d.ts +1 -1
  54. package/dist/types-ts4.5/pm-plugins/table-resizing/utils/index.d.ts +1 -1
  55. package/dist/types-ts4.5/ui/ColumnResizeWidget/index.d.ts +1 -1
  56. package/dist/types-ts4.5/ui/FloatingAlignmentButtons/FloatingAlignmentButtons.d.ts +1 -1
  57. package/dist/types-ts4.5/ui/FloatingToolbarLabel/FloatingToolbarLabel.d.ts +1 -1
  58. package/dist/types-ts4.5/ui/TableFloatingColumnControls/ColumnDropTargets/ColumnDropTarget.d.ts +1 -1
  59. package/dist/types-ts4.5/ui/TableFloatingControls/CornerControls/index.d.ts +1 -1
  60. package/dist/types-ts4.5/ui/icons/DragHandleDisabledIcon.d.ts +1 -1
  61. package/docs/0-intro.tsx +9 -7
  62. package/package.json +5 -4
  63. package/report.api.md +67 -66
  64. package/src/commands/clear.ts +36 -44
  65. package/src/commands/collapse.ts +8 -8
  66. package/src/commands/column-resize.ts +412 -452
  67. package/src/commands/delete.ts +14 -14
  68. package/src/commands/display-mode.ts +10 -11
  69. package/src/commands/go-to-next-cell.ts +48 -54
  70. package/src/commands/hover.ts +210 -227
  71. package/src/commands/index.ts +35 -35
  72. package/src/commands/insert.ts +208 -235
  73. package/src/commands/misc.ts +655 -748
  74. package/src/commands/referentiality.ts +9 -9
  75. package/src/commands/selection.ts +433 -563
  76. package/src/commands/sort.ts +68 -86
  77. package/src/commands/split-cell.ts +14 -14
  78. package/src/commands/toggle.ts +69 -67
  79. package/src/commands-with-analytics.ts +570 -639
  80. package/src/create-plugin-config.ts +13 -13
  81. package/src/event-handlers.ts +513 -612
  82. package/src/handlers.ts +120 -133
  83. package/src/nodeviews/ExternalDropTargets.tsx +68 -73
  84. package/src/nodeviews/OverflowShadowsObserver.ts +148 -157
  85. package/src/nodeviews/TableCell.ts +47 -54
  86. package/src/nodeviews/TableComponent.tsx +1018 -1112
  87. package/src/nodeviews/TableComponentWithSharedState.tsx +91 -94
  88. package/src/nodeviews/TableContainer.tsx +363 -339
  89. package/src/nodeviews/TableNodeViewBase.ts +19 -24
  90. package/src/nodeviews/TableResizer.tsx +565 -657
  91. package/src/nodeviews/TableRow.ts +580 -629
  92. package/src/nodeviews/TableStickyScrollbar.ts +173 -190
  93. package/src/nodeviews/__mocks__/OverflowShadowsObserver.ts +8 -8
  94. package/src/nodeviews/__mocks__/OverridableMock.ts +14 -15
  95. package/src/nodeviews/table.tsx +345 -375
  96. package/src/nodeviews/types.ts +21 -24
  97. package/src/nodeviews/update-overflow-shadows.ts +8 -14
  98. package/src/plugin.tsx +578 -603
  99. package/src/pm-plugins/analytics/actions.ts +10 -12
  100. package/src/pm-plugins/analytics/commands.ts +31 -37
  101. package/src/pm-plugins/analytics/plugin-factory.ts +4 -2
  102. package/src/pm-plugins/analytics/plugin-key.ts +1 -3
  103. package/src/pm-plugins/analytics/plugin.ts +60 -70
  104. package/src/pm-plugins/analytics/reducer.ts +19 -19
  105. package/src/pm-plugins/analytics/types.ts +10 -10
  106. package/src/pm-plugins/analytics/utils/moved-event.ts +38 -38
  107. package/src/pm-plugins/decorations/plugin.ts +58 -77
  108. package/src/pm-plugins/decorations/utils/column-controls.ts +59 -71
  109. package/src/pm-plugins/decorations/utils/column-resizing.ts +50 -57
  110. package/src/pm-plugins/decorations/utils/compose-decorations.ts +6 -6
  111. package/src/pm-plugins/decorations/utils/index.ts +3 -6
  112. package/src/pm-plugins/decorations/utils/types.ts +7 -12
  113. package/src/pm-plugins/default-table-selection.ts +3 -3
  114. package/src/pm-plugins/drag-and-drop/actions.ts +25 -25
  115. package/src/pm-plugins/drag-and-drop/commands-with-analytics.ts +158 -190
  116. package/src/pm-plugins/drag-and-drop/commands.ts +154 -170
  117. package/src/pm-plugins/drag-and-drop/consts.ts +4 -5
  118. package/src/pm-plugins/drag-and-drop/plugin-factory.ts +23 -20
  119. package/src/pm-plugins/drag-and-drop/plugin-key.ts +1 -3
  120. package/src/pm-plugins/drag-and-drop/plugin.ts +329 -383
  121. package/src/pm-plugins/drag-and-drop/reducer.ts +30 -30
  122. package/src/pm-plugins/drag-and-drop/types.ts +8 -8
  123. package/src/pm-plugins/drag-and-drop/utils/autoscrollers.ts +38 -41
  124. package/src/pm-plugins/drag-and-drop/utils/getDragBehaviour.ts +3 -6
  125. package/src/pm-plugins/drag-and-drop/utils/monitor.ts +57 -70
  126. package/src/pm-plugins/keymap.ts +208 -220
  127. package/src/pm-plugins/main.ts +348 -400
  128. package/src/pm-plugins/plugin-factory.ts +32 -34
  129. package/src/pm-plugins/safari-delete-composition-text-issue-workaround.ts +83 -97
  130. package/src/pm-plugins/sticky-headers/commands.ts +2 -6
  131. package/src/pm-plugins/sticky-headers/plugin-key.ts +1 -3
  132. package/src/pm-plugins/sticky-headers/plugin-state.ts +41 -44
  133. package/src/pm-plugins/sticky-headers/plugin.ts +4 -4
  134. package/src/pm-plugins/sticky-headers/types.ts +8 -8
  135. package/src/pm-plugins/sticky-headers/util.ts +10 -10
  136. package/src/pm-plugins/table-analytics.ts +70 -72
  137. package/src/pm-plugins/table-local-id.ts +180 -184
  138. package/src/pm-plugins/table-resizing/commands.ts +72 -85
  139. package/src/pm-plugins/table-resizing/event-handlers.ts +298 -317
  140. package/src/pm-plugins/table-resizing/plugin-factory.ts +10 -10
  141. package/src/pm-plugins/table-resizing/plugin-key.ts +1 -3
  142. package/src/pm-plugins/table-resizing/plugin.ts +61 -68
  143. package/src/pm-plugins/table-resizing/reducer.ts +30 -33
  144. package/src/pm-plugins/table-resizing/utils/colgroup.ts +84 -84
  145. package/src/pm-plugins/table-resizing/utils/column-state.ts +78 -81
  146. package/src/pm-plugins/table-resizing/utils/content-width.ts +94 -114
  147. package/src/pm-plugins/table-resizing/utils/dom.ts +93 -110
  148. package/src/pm-plugins/table-resizing/utils/index.ts +29 -34
  149. package/src/pm-plugins/table-resizing/utils/misc.ts +94 -119
  150. package/src/pm-plugins/table-resizing/utils/resize-column.ts +93 -106
  151. package/src/pm-plugins/table-resizing/utils/resize-logic.ts +240 -257
  152. package/src/pm-plugins/table-resizing/utils/resize-state.ts +343 -372
  153. package/src/pm-plugins/table-resizing/utils/scale-table.ts +202 -207
  154. package/src/pm-plugins/table-resizing/utils/types.ts +17 -17
  155. package/src/pm-plugins/table-resizing/utils/unit-to-number.ts +1 -2
  156. package/src/pm-plugins/table-selection-keymap.ts +25 -51
  157. package/src/pm-plugins/table-width.ts +191 -204
  158. package/src/pm-plugins/view-mode-sort/index.ts +223 -227
  159. package/src/pm-plugins/view-mode-sort/plugin-key.ts +3 -2
  160. package/src/pm-plugins/view-mode-sort/types.ts +12 -12
  161. package/src/pm-plugins/view-mode-sort/utils.ts +108 -117
  162. package/src/reducer.ts +139 -155
  163. package/src/toolbar.tsx +815 -905
  164. package/src/transforms/column-width.ts +186 -213
  165. package/src/transforms/delete-columns.ts +208 -222
  166. package/src/transforms/delete-rows.ts +117 -121
  167. package/src/transforms/fix-tables.ts +190 -215
  168. package/src/transforms/merge.ts +263 -269
  169. package/src/transforms/replace-table.ts +27 -43
  170. package/src/transforms/split.ts +65 -75
  171. package/src/types.ts +421 -427
  172. package/src/ui/ColumnResizeWidget/index.tsx +40 -47
  173. package/src/ui/DragHandle/HandleIconComponent.tsx +9 -13
  174. package/src/ui/DragHandle/index.tsx +221 -250
  175. package/src/ui/DragPreview/index.tsx +35 -35
  176. package/src/ui/FloatingAlignmentButtons/FloatingAlignmentButtons.tsx +33 -41
  177. package/src/ui/FloatingContextualButton/FixedButton.tsx +154 -157
  178. package/src/ui/FloatingContextualButton/index.tsx +109 -115
  179. package/src/ui/FloatingContextualButton/styles.ts +43 -46
  180. package/src/ui/FloatingContextualMenu/ContextualMenu.tsx +634 -694
  181. package/src/ui/FloatingContextualMenu/index.tsx +83 -101
  182. package/src/ui/FloatingContextualMenu/styles.ts +57 -65
  183. package/src/ui/FloatingDeleteButton/DeleteButton.tsx +37 -37
  184. package/src/ui/FloatingDeleteButton/getPopUpOptions.ts +47 -57
  185. package/src/ui/FloatingDeleteButton/index.tsx +319 -350
  186. package/src/ui/FloatingDragMenu/DragMenu.tsx +555 -596
  187. package/src/ui/FloatingDragMenu/DropdownMenu.tsx +152 -162
  188. package/src/ui/FloatingDragMenu/index.tsx +88 -102
  189. package/src/ui/FloatingDragMenu/styles.ts +51 -54
  190. package/src/ui/FloatingInsertButton/InsertButton.tsx +204 -217
  191. package/src/ui/FloatingInsertButton/getPopupOptions.ts +100 -115
  192. package/src/ui/FloatingInsertButton/index.tsx +248 -292
  193. package/src/ui/FloatingToolbarLabel/FloatingToolbarLabel.tsx +24 -29
  194. package/src/ui/TableFloatingColumnControls/ColumnControls/index.tsx +308 -329
  195. package/src/ui/TableFloatingColumnControls/ColumnDropTargets/ColumnDropTarget.tsx +85 -94
  196. package/src/ui/TableFloatingColumnControls/ColumnDropTargets/index.tsx +46 -46
  197. package/src/ui/TableFloatingColumnControls/index.tsx +116 -136
  198. package/src/ui/TableFloatingControls/CornerControls/ClassicCornerControls.tsx +79 -91
  199. package/src/ui/TableFloatingControls/CornerControls/DragCornerControls.tsx +95 -102
  200. package/src/ui/TableFloatingControls/CornerControls/index.tsx +1 -4
  201. package/src/ui/TableFloatingControls/CornerControls/types.ts +8 -8
  202. package/src/ui/TableFloatingControls/FloatingControlsWithSelection.tsx +50 -50
  203. package/src/ui/TableFloatingControls/NumberColumn/index.tsx +111 -124
  204. package/src/ui/TableFloatingControls/RowControls/ClassicControls.tsx +86 -105
  205. package/src/ui/TableFloatingControls/RowControls/DragControls.tsx +305 -341
  206. package/src/ui/TableFloatingControls/RowDropTarget/index.tsx +72 -75
  207. package/src/ui/TableFloatingControls/index.tsx +191 -193
  208. package/src/ui/TableFullWidthLabel/index.tsx +20 -20
  209. package/src/ui/common-styles.ts +881 -903
  210. package/src/ui/consts.ts +29 -74
  211. package/src/ui/icons/AddColLeftIcon.tsx +33 -39
  212. package/src/ui/icons/AddColRightIcon.tsx +33 -39
  213. package/src/ui/icons/AddRowAboveIcon.tsx +16 -22
  214. package/src/ui/icons/AddRowBelowIcon.tsx +33 -39
  215. package/src/ui/icons/DisplayModeIcon.tsx +31 -31
  216. package/src/ui/icons/DragHandleDisabledIcon.tsx +19 -21
  217. package/src/ui/icons/DragHandleIcon.tsx +12 -12
  218. package/src/ui/icons/DragInMotionIcon.tsx +45 -52
  219. package/src/ui/icons/MergeCellsIcon.tsx +22 -28
  220. package/src/ui/icons/MinimisedHandle.tsx +9 -9
  221. package/src/ui/icons/SplitCellIcon.tsx +30 -36
  222. package/src/ui/ui-styles.ts +769 -798
  223. package/src/utils/alignment.ts +1 -1
  224. package/src/utils/analytics.ts +192 -208
  225. package/src/utils/collapse.ts +55 -64
  226. package/src/utils/column-controls.ts +237 -254
  227. package/src/utils/create.ts +30 -30
  228. package/src/utils/decoration.ts +482 -502
  229. package/src/utils/dom.ts +127 -134
  230. package/src/utils/drag-menu.ts +322 -373
  231. package/src/utils/get-allow-add-column-custom-step.ts +4 -5
  232. package/src/utils/guidelines.ts +10 -21
  233. package/src/utils/index.ts +68 -68
  234. package/src/utils/merged-cells.ts +245 -254
  235. package/src/utils/nodes.ts +91 -106
  236. package/src/utils/paste.ts +119 -135
  237. package/src/utils/row-controls.ts +199 -213
  238. package/src/utils/selection.ts +77 -87
  239. package/src/utils/snapping.ts +84 -97
  240. package/src/utils/table.ts +44 -44
  241. package/src/utils/transforms.ts +5 -5
  242. package/src/utils/update-plugin-state-decorations.ts +5 -9
  243. package/tsconfig.app.json +107 -107
  244. package/tsconfig.dev.json +47 -47
package/src/handlers.ts CHANGED
@@ -4,10 +4,7 @@ import type { TableColumnOrdering } from '@atlaskit/custom-steps';
4
4
  import { isTextInput } from '@atlaskit/editor-common/utils';
5
5
  import type { NodeType } from '@atlaskit/editor-prosemirror/model';
6
6
  // @ts-ignore -- ReadonlyTransaction is a local declaration and will cause a TS2305 error in CCFE typecheck
7
- import type {
8
- ReadonlyTransaction,
9
- Transaction,
10
- } from '@atlaskit/editor-prosemirror/state';
7
+ import type { ReadonlyTransaction, Transaction } from '@atlaskit/editor-prosemirror/state';
11
8
  import type { ContentNodeWithPos } from '@atlaskit/editor-prosemirror/utils';
12
9
  import { findParentNodeOfType } from '@atlaskit/editor-prosemirror/utils';
13
10
  import { findTable } from '@atlaskit/editor-tables/utils';
@@ -17,157 +14,147 @@ import { pluginKey as tableResizingPluginKey } from './pm-plugins/table-resizing
17
14
  import type { TablePluginState } from './types';
18
15
  import { isTableCollapsible } from './utils/collapse';
19
16
  import {
20
- checkIfHeaderColumnEnabled,
21
- checkIfHeaderRowEnabled,
22
- checkIfNumberColumnEnabled,
17
+ checkIfHeaderColumnEnabled,
18
+ checkIfHeaderRowEnabled,
19
+ checkIfNumberColumnEnabled,
23
20
  } from './utils/nodes';
24
21
 
25
22
  const nextTableSorting = (
26
- tr: Transaction | ReadonlyTransaction,
27
- table?: ContentNodeWithPos,
23
+ tr: Transaction | ReadonlyTransaction,
24
+ table?: ContentNodeWithPos,
28
25
  ): TableColumnOrdering | undefined => {
29
- const tableSortStep: TableSortStep = tr.steps.find(
30
- (step) => step instanceof TableSortStep,
31
- ) as TableSortStep;
26
+ const tableSortStep: TableSortStep = tr.steps.find(
27
+ (step) => step instanceof TableSortStep,
28
+ ) as TableSortStep;
32
29
 
33
- return tableSortStep && table && table.pos === tableSortStep.pos
34
- ? tableSortStep.next
35
- : undefined;
30
+ return tableSortStep && table && table.pos === tableSortStep.pos ? tableSortStep.next : undefined;
36
31
  };
37
32
 
38
33
  const nextResizeHandleColumnIndex = (
39
- tr: Transaction | ReadonlyTransaction,
40
- resizeHandleColumnIndex?: number,
34
+ tr: Transaction | ReadonlyTransaction,
35
+ resizeHandleColumnIndex?: number,
41
36
  ): number | undefined => {
42
- if (tr.getMeta(tableResizingPluginKey)) {
43
- return undefined;
44
- }
37
+ if (tr.getMeta(tableResizingPluginKey)) {
38
+ return undefined;
39
+ }
45
40
 
46
- return resizeHandleColumnIndex;
41
+ return resizeHandleColumnIndex;
47
42
  };
48
43
 
49
44
  type BuilderTablePluginState = (props: {
50
- tr: Transaction | ReadonlyTransaction;
51
- table?: ContentNodeWithPos;
45
+ tr: Transaction | ReadonlyTransaction;
46
+ table?: ContentNodeWithPos;
52
47
  }) => (pluginState: TablePluginState) => TablePluginState;
53
48
 
54
49
  const updateTargetCellPosition: BuilderTablePluginState =
55
- ({ tr, table }) =>
56
- (pluginState: TablePluginState) => {
57
- const tableNode = table && table.node;
58
- if (!tableNode) {
59
- return {
60
- ...pluginState,
61
- targetCellPosition: undefined,
62
- };
63
- }
64
-
65
- const { tableCell, tableHeader } = tr.doc.type.schema.nodes;
66
- const cell = findParentNodeOfType([tableCell, tableHeader])(tr.selection);
67
- const targetCellPosition = cell ? cell.pos : undefined;
68
-
69
- if (pluginState.targetCellPosition === targetCellPosition) {
70
- return pluginState;
71
- }
72
-
73
- return {
74
- ...pluginState,
75
- targetCellPosition,
76
- };
77
- };
50
+ ({ tr, table }) =>
51
+ (pluginState: TablePluginState) => {
52
+ const tableNode = table && table.node;
53
+ if (!tableNode) {
54
+ return {
55
+ ...pluginState,
56
+ targetCellPosition: undefined,
57
+ };
58
+ }
59
+
60
+ const { tableCell, tableHeader } = tr.doc.type.schema.nodes;
61
+ const cell = findParentNodeOfType([tableCell, tableHeader])(tr.selection);
62
+ const targetCellPosition = cell ? cell.pos : undefined;
63
+
64
+ if (pluginState.targetCellPosition === targetCellPosition) {
65
+ return pluginState;
66
+ }
67
+
68
+ return {
69
+ ...pluginState,
70
+ targetCellPosition,
71
+ };
72
+ };
78
73
 
79
74
  const updateTableNodePluginState: BuilderTablePluginState =
80
- ({ tr, table }) =>
81
- (pluginState) => {
82
- const tableNode = table && table.node;
83
-
84
- if (!tableNode || isTextInput(tr)) {
85
- return pluginState;
86
- }
87
-
88
- return {
89
- ...pluginState,
90
- ...defaultTableSelection,
91
- tableNode,
92
- ordering: nextTableSorting(tr, table),
93
- resizeHandleColumnIndex: nextResizeHandleColumnIndex(
94
- tr,
95
- pluginState.resizeHandleColumnIndex,
96
- ),
97
- isNumberColumnEnabled: checkIfNumberColumnEnabled(tr.selection),
98
- isHeaderColumnEnabled: checkIfHeaderColumnEnabled(tr.selection),
99
- isHeaderRowEnabled: checkIfHeaderRowEnabled(tr.selection),
100
- };
101
- };
75
+ ({ tr, table }) =>
76
+ (pluginState) => {
77
+ const tableNode = table && table.node;
78
+
79
+ if (!tableNode || isTextInput(tr)) {
80
+ return pluginState;
81
+ }
82
+
83
+ return {
84
+ ...pluginState,
85
+ ...defaultTableSelection,
86
+ tableNode,
87
+ ordering: nextTableSorting(tr, table),
88
+ resizeHandleColumnIndex: nextResizeHandleColumnIndex(tr, pluginState.resizeHandleColumnIndex),
89
+ isNumberColumnEnabled: checkIfNumberColumnEnabled(tr.selection),
90
+ isHeaderColumnEnabled: checkIfHeaderColumnEnabled(tr.selection),
91
+ isHeaderRowEnabled: checkIfHeaderRowEnabled(tr.selection),
92
+ };
93
+ };
102
94
 
103
95
  const updateCollapseHandler: BuilderTablePluginState =
104
- ({ tr, table }) =>
105
- (pluginState) => {
106
- const tableNode = table && table.node;
107
- const schema = tr.doc.type.schema;
108
- const allowCollapse = pluginState.pluginConfig.allowCollapse;
109
- const isExpandInSchema = schema.nodes.expand !== undefined;
110
- const isCollapseEnabled = allowCollapse && isExpandInSchema;
111
-
112
- /**
113
- * If we don't have focus, or collapse isn't allowed, or a table node doesn't
114
- * exist, we don't need to waste extra checks below
115
- */
116
- if (!pluginState.editorHasFocus || !isCollapseEnabled || !tableNode) {
117
- return pluginState;
118
- }
119
-
120
- const expandNodeType = schema.nodes.expand as NodeType;
121
- const isTableCollapsed =
122
- expandNodeType && !!findParentNodeOfType(expandNodeType)(tr.selection);
123
-
124
- const trCanBeCollapsed = isTableCollapsible(tr).tableIsCollapsible;
125
-
126
- // We're focused on a table + we're not inside an expand
127
- const canCollapseTable: boolean =
128
- !!pluginState.tableNode &&
129
- // is it already collapsed?
130
- !isTableCollapsed &&
131
- !!trCanBeCollapsed;
132
-
133
- if (
134
- pluginState.isTableCollapsed !== isTableCollapsed ||
135
- pluginState.canCollapseTable !== canCollapseTable
136
- ) {
137
- return {
138
- ...pluginState,
139
- isTableCollapsed,
140
- canCollapseTable,
141
- };
142
- }
143
-
144
- return pluginState;
145
- };
96
+ ({ tr, table }) =>
97
+ (pluginState) => {
98
+ const tableNode = table && table.node;
99
+ const schema = tr.doc.type.schema;
100
+ const allowCollapse = pluginState.pluginConfig.allowCollapse;
101
+ const isExpandInSchema = schema.nodes.expand !== undefined;
102
+ const isCollapseEnabled = allowCollapse && isExpandInSchema;
103
+
104
+ /**
105
+ * If we don't have focus, or collapse isn't allowed, or a table node doesn't
106
+ * exist, we don't need to waste extra checks below
107
+ */
108
+ if (!pluginState.editorHasFocus || !isCollapseEnabled || !tableNode) {
109
+ return pluginState;
110
+ }
111
+
112
+ const expandNodeType = schema.nodes.expand as NodeType;
113
+ const isTableCollapsed = expandNodeType && !!findParentNodeOfType(expandNodeType)(tr.selection);
114
+
115
+ const trCanBeCollapsed = isTableCollapsible(tr).tableIsCollapsible;
116
+
117
+ // We're focused on a table + we're not inside an expand
118
+ const canCollapseTable: boolean =
119
+ !!pluginState.tableNode &&
120
+ // is it already collapsed?
121
+ !isTableCollapsed &&
122
+ !!trCanBeCollapsed;
123
+
124
+ if (
125
+ pluginState.isTableCollapsed !== isTableCollapsed ||
126
+ pluginState.canCollapseTable !== canCollapseTable
127
+ ) {
128
+ return {
129
+ ...pluginState,
130
+ isTableCollapsed,
131
+ canCollapseTable,
132
+ };
133
+ }
134
+
135
+ return pluginState;
136
+ };
146
137
 
147
138
  const buildPluginState =
148
- (builders: Array<BuilderTablePluginState>): BuilderTablePluginState =>
149
- (props) =>
150
- (pluginState) => {
151
- if (!props.table) {
152
- return pluginState.targetCellPosition
153
- ? { ...pluginState, targetCellPosition: undefined }
154
- : pluginState;
155
- }
156
- return builders.reduce(
157
- (_pluginState, transform) => transform(props)(_pluginState),
158
- pluginState,
159
- );
160
- };
139
+ (builders: Array<BuilderTablePluginState>): BuilderTablePluginState =>
140
+ (props) =>
141
+ (pluginState) => {
142
+ if (!props.table) {
143
+ return pluginState.targetCellPosition
144
+ ? { ...pluginState, targetCellPosition: undefined }
145
+ : pluginState;
146
+ }
147
+ return builders.reduce(
148
+ (_pluginState, transform) => transform(props)(_pluginState),
149
+ pluginState,
150
+ );
151
+ };
161
152
 
162
153
  export const handleDocOrSelectionChanged = (
163
- tr: Transaction | ReadonlyTransaction,
164
- pluginState: TablePluginState,
154
+ tr: Transaction | ReadonlyTransaction,
155
+ pluginState: TablePluginState,
165
156
  ): TablePluginState =>
166
- buildPluginState([
167
- updateTargetCellPosition,
168
- updateTableNodePluginState,
169
- updateCollapseHandler,
170
- ])({
171
- tr,
172
- table: findTable(tr.selection),
173
- })(pluginState);
157
+ buildPluginState([updateTargetCellPosition, updateTableNodePluginState, updateCollapseHandler])({
158
+ tr,
159
+ table: findTable(tr.selection),
160
+ })(pluginState);
@@ -11,83 +11,78 @@ import { ColumnDropTarget } from '../ui/TableFloatingColumnControls/ColumnDropTa
11
11
  import { getColumnsWidths } from '../utils';
12
12
 
13
13
  export const ExternalDropTargets = ({
14
- editorView,
15
- node,
16
- getScrollOffset,
17
- getTableWrapperWidth,
14
+ editorView,
15
+ node,
16
+ getScrollOffset,
17
+ getTableWrapperWidth,
18
18
  }: {
19
- editorView: EditorView;
20
- node?: PMNode;
21
- getScrollOffset: () => number;
22
- getTableWrapperWidth: () => number;
19
+ editorView: EditorView;
20
+ node?: PMNode;
21
+ getScrollOffset: () => number;
22
+ getTableWrapperWidth: () => number;
23
23
  }) => {
24
- const [isDragging, setIsDragging] = useState(false);
25
- const currentNodeLocalId = node?.attrs.localId;
24
+ const [isDragging, setIsDragging] = useState(false);
25
+ const currentNodeLocalId = node?.attrs.localId;
26
26
 
27
- useEffect(() => {
28
- return monitorForElements({
29
- canMonitor({ source }) {
30
- const { type, indexes, localId } =
31
- source.data as Partial<DraggableSourceData>;
32
- return (
33
- type === 'table-column' &&
34
- !!indexes?.length &&
35
- localId === currentNodeLocalId
36
- );
37
- },
38
- onDragStart() {
39
- setIsDragging(true);
40
- },
41
- onDrop() {
42
- setIsDragging(false);
43
- },
44
- });
45
- }, [currentNodeLocalId, editorView]);
27
+ useEffect(() => {
28
+ return monitorForElements({
29
+ canMonitor({ source }) {
30
+ const { type, indexes, localId } = source.data as Partial<DraggableSourceData>;
31
+ return type === 'table-column' && !!indexes?.length && localId === currentNodeLocalId;
32
+ },
33
+ onDragStart() {
34
+ setIsDragging(true);
35
+ },
36
+ onDrop() {
37
+ setIsDragging(false);
38
+ },
39
+ });
40
+ }, [currentNodeLocalId, editorView]);
46
41
 
47
- if (!isDragging) {
48
- return null;
49
- }
42
+ if (!isDragging) {
43
+ return null;
44
+ }
50
45
 
51
- const colWidths = getColumnsWidths(editorView);
46
+ const colWidths = getColumnsWidths(editorView);
52
47
 
53
- return (
54
- <div
55
- style={{
56
- width: getTableWrapperWidth(),
57
- // eslint-disable-next-line @atlaskit/ui-styling-standard/enforce-style-prop -- Ignored via go/DSP-18766
58
- overflow: 'hidden',
59
- // eslint-disable-next-line @atlaskit/ui-styling-standard/enforce-style-prop -- Ignored via go/DSP-18766
60
- position: 'absolute',
61
- // eslint-disable-next-line @atlaskit/design-system/ensure-design-token-usage/preview
62
- top: `-${dropTargetExtendedWidth - tableMarginTop}px`,
63
- // eslint-disable-next-line @atlaskit/ui-styling-standard/enforce-style-prop -- Ignored via go/DSP-18766
64
- pointerEvents: 'auto',
65
- zIndex: `${dropTargetsZIndex}`,
66
- }}
67
- data-testid="table-floating-column-extended-drop-targets"
68
- >
69
- <div
70
- style={{
71
- // eslint-disable-next-line @atlaskit/ui-styling-standard/enforce-style-prop -- Ignored via go/DSP-18766
72
- display: 'flex',
73
- // move drop targets based on table wrapper scroll
74
- // eslint-disable-next-line @atlaskit/design-system/ensure-design-token-usage/preview
75
- marginLeft: `-${getScrollOffset()}px`,
76
- }}
77
- >
78
- {colWidths?.map((width, index) => {
79
- return (
80
- <ColumnDropTarget
81
- key={index}
82
- index={index}
83
- localId={currentNodeLocalId}
84
- width={width}
85
- height={dropTargetExtendedWidth}
86
- marginTop={0}
87
- />
88
- );
89
- })}
90
- </div>
91
- </div>
92
- );
48
+ return (
49
+ <div
50
+ style={{
51
+ width: getTableWrapperWidth(),
52
+ // eslint-disable-next-line @atlaskit/ui-styling-standard/enforce-style-prop -- Ignored via go/DSP-18766
53
+ overflow: 'hidden',
54
+ // eslint-disable-next-line @atlaskit/ui-styling-standard/enforce-style-prop -- Ignored via go/DSP-18766
55
+ position: 'absolute',
56
+ // eslint-disable-next-line @atlaskit/design-system/ensure-design-token-usage/preview
57
+ top: `-${dropTargetExtendedWidth - tableMarginTop}px`,
58
+ // eslint-disable-next-line @atlaskit/ui-styling-standard/enforce-style-prop -- Ignored via go/DSP-18766
59
+ pointerEvents: 'auto',
60
+ zIndex: `${dropTargetsZIndex}`,
61
+ }}
62
+ data-testid="table-floating-column-extended-drop-targets"
63
+ >
64
+ <div
65
+ style={{
66
+ // eslint-disable-next-line @atlaskit/ui-styling-standard/enforce-style-prop -- Ignored via go/DSP-18766
67
+ display: 'flex',
68
+ // move drop targets based on table wrapper scroll
69
+ // eslint-disable-next-line @atlaskit/design-system/ensure-design-token-usage/preview
70
+ marginLeft: `-${getScrollOffset()}px`,
71
+ }}
72
+ >
73
+ {colWidths?.map((width, index) => {
74
+ return (
75
+ <ColumnDropTarget
76
+ key={index}
77
+ index={index}
78
+ localId={currentNodeLocalId}
79
+ width={width}
80
+ height={dropTargetExtendedWidth}
81
+ marginTop={0}
82
+ />
83
+ );
84
+ })}
85
+ </div>
86
+ </div>
87
+ );
93
88
  };