@atlaskit/editor-plugin-table 7.16.11 → 7.16.13

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 (254) hide show
  1. package/.eslintrc.js +3 -3
  2. package/CHANGELOG.md +16 -0
  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 +83 -27
  6. package/dist/cjs/nodeviews/TableResizer.js +40 -19
  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 +13 -13
  14. package/dist/cjs/ui/ui-styles.js +25 -25
  15. package/dist/cjs/utils/guidelines.js +7 -4
  16. package/dist/cjs/utils/merged-cells.js +3 -3
  17. package/dist/cjs/utils/snapping.js +7 -8
  18. package/dist/es2019/commands/misc.js +3 -3
  19. package/dist/es2019/nodeviews/TableContainer.js +70 -9
  20. package/dist/es2019/nodeviews/TableResizer.js +42 -21
  21. package/dist/es2019/nodeviews/TableRow.js +21 -21
  22. package/dist/es2019/pm-plugins/table-resizing/plugin.js +3 -3
  23. package/dist/es2019/pm-plugins/table-resizing/utils/resize-state.js +4 -4
  24. package/dist/es2019/pm-plugins/table-resizing/utils/scale-table.js +3 -3
  25. package/dist/es2019/ui/FloatingContextualMenu/styles.js +47 -47
  26. package/dist/es2019/ui/FloatingDragMenu/styles.js +30 -30
  27. package/dist/es2019/ui/common-styles.js +802 -816
  28. package/dist/es2019/ui/ui-styles.js +665 -678
  29. package/dist/es2019/utils/guidelines.js +5 -2
  30. package/dist/es2019/utils/merged-cells.js +3 -3
  31. package/dist/es2019/utils/snapping.js +5 -6
  32. package/dist/esm/commands/misc.js +3 -3
  33. package/dist/esm/nodeviews/TableCell.js +10 -10
  34. package/dist/esm/nodeviews/TableContainer.js +85 -29
  35. package/dist/esm/nodeviews/TableResizer.js +42 -21
  36. package/dist/esm/nodeviews/TableRow.js +23 -23
  37. package/dist/esm/pm-plugins/table-resizing/plugin.js +3 -3
  38. package/dist/esm/pm-plugins/table-resizing/utils/resize-state.js +4 -4
  39. package/dist/esm/pm-plugins/table-resizing/utils/scale-table.js +3 -3
  40. package/dist/esm/ui/FloatingContextualMenu/styles.js +1 -1
  41. package/dist/esm/ui/FloatingDragMenu/styles.js +1 -1
  42. package/dist/esm/ui/common-styles.js +13 -13
  43. package/dist/esm/ui/ui-styles.js +25 -25
  44. package/dist/esm/utils/guidelines.js +6 -3
  45. package/dist/esm/utils/merged-cells.js +3 -3
  46. package/dist/esm/utils/snapping.js +6 -7
  47. package/dist/types/nodeviews/TableResizer.d.ts +2 -1
  48. package/dist/types/pm-plugins/decorations/utils/index.d.ts +1 -1
  49. package/dist/types/pm-plugins/drag-and-drop/utils/autoscrollers.d.ts +1 -1
  50. package/dist/types/pm-plugins/drag-and-drop/utils/getDragBehaviour.d.ts +1 -1
  51. package/dist/types/pm-plugins/table-resizing/utils/index.d.ts +1 -1
  52. package/dist/types/ui/ColumnResizeWidget/index.d.ts +1 -1
  53. package/dist/types/ui/FloatingAlignmentButtons/FloatingAlignmentButtons.d.ts +1 -1
  54. package/dist/types/ui/FloatingToolbarLabel/FloatingToolbarLabel.d.ts +1 -1
  55. package/dist/types/ui/TableFloatingColumnControls/ColumnDropTargets/ColumnDropTarget.d.ts +1 -1
  56. package/dist/types/ui/TableFloatingControls/CornerControls/index.d.ts +1 -1
  57. package/dist/types/ui/icons/DragHandleDisabledIcon.d.ts +1 -1
  58. package/dist/types/utils/guidelines.d.ts +2 -1
  59. package/dist/types/utils/snapping.d.ts +3 -2
  60. package/dist/types-ts4.5/nodeviews/TableResizer.d.ts +2 -1
  61. package/dist/types-ts4.5/pm-plugins/decorations/utils/index.d.ts +1 -1
  62. package/dist/types-ts4.5/pm-plugins/drag-and-drop/utils/autoscrollers.d.ts +1 -1
  63. package/dist/types-ts4.5/pm-plugins/drag-and-drop/utils/getDragBehaviour.d.ts +1 -1
  64. package/dist/types-ts4.5/pm-plugins/table-resizing/utils/index.d.ts +1 -1
  65. package/dist/types-ts4.5/ui/ColumnResizeWidget/index.d.ts +1 -1
  66. package/dist/types-ts4.5/ui/FloatingAlignmentButtons/FloatingAlignmentButtons.d.ts +1 -1
  67. package/dist/types-ts4.5/ui/FloatingToolbarLabel/FloatingToolbarLabel.d.ts +1 -1
  68. package/dist/types-ts4.5/ui/TableFloatingColumnControls/ColumnDropTargets/ColumnDropTarget.d.ts +1 -1
  69. package/dist/types-ts4.5/ui/TableFloatingControls/CornerControls/index.d.ts +1 -1
  70. package/dist/types-ts4.5/ui/icons/DragHandleDisabledIcon.d.ts +1 -1
  71. package/dist/types-ts4.5/utils/guidelines.d.ts +2 -1
  72. package/dist/types-ts4.5/utils/snapping.d.ts +3 -2
  73. package/docs/0-intro.tsx +9 -7
  74. package/package.json +3 -3
  75. package/report.api.md +67 -66
  76. package/src/commands/clear.ts +36 -44
  77. package/src/commands/collapse.ts +8 -8
  78. package/src/commands/column-resize.ts +412 -452
  79. package/src/commands/delete.ts +14 -14
  80. package/src/commands/display-mode.ts +10 -11
  81. package/src/commands/go-to-next-cell.ts +48 -54
  82. package/src/commands/hover.ts +210 -227
  83. package/src/commands/index.ts +35 -35
  84. package/src/commands/insert.ts +208 -235
  85. package/src/commands/misc.ts +655 -748
  86. package/src/commands/referentiality.ts +9 -9
  87. package/src/commands/selection.ts +433 -563
  88. package/src/commands/sort.ts +68 -86
  89. package/src/commands/split-cell.ts +14 -14
  90. package/src/commands/toggle.ts +69 -67
  91. package/src/commands-with-analytics.ts +570 -639
  92. package/src/create-plugin-config.ts +13 -13
  93. package/src/event-handlers.ts +513 -612
  94. package/src/handlers.ts +120 -133
  95. package/src/nodeviews/ExternalDropTargets.tsx +68 -73
  96. package/src/nodeviews/OverflowShadowsObserver.ts +148 -157
  97. package/src/nodeviews/TableCell.ts +47 -54
  98. package/src/nodeviews/TableComponent.tsx +1018 -1112
  99. package/src/nodeviews/TableComponentWithSharedState.tsx +91 -94
  100. package/src/nodeviews/TableContainer.tsx +384 -340
  101. package/src/nodeviews/TableNodeViewBase.ts +19 -24
  102. package/src/nodeviews/TableResizer.tsx +642 -653
  103. package/src/nodeviews/TableRow.ts +580 -629
  104. package/src/nodeviews/TableStickyScrollbar.ts +173 -190
  105. package/src/nodeviews/__mocks__/OverflowShadowsObserver.ts +8 -8
  106. package/src/nodeviews/__mocks__/OverridableMock.ts +14 -15
  107. package/src/nodeviews/table.tsx +345 -375
  108. package/src/nodeviews/types.ts +21 -24
  109. package/src/nodeviews/update-overflow-shadows.ts +8 -14
  110. package/src/plugin.tsx +578 -603
  111. package/src/pm-plugins/analytics/actions.ts +10 -12
  112. package/src/pm-plugins/analytics/commands.ts +31 -37
  113. package/src/pm-plugins/analytics/plugin-factory.ts +4 -2
  114. package/src/pm-plugins/analytics/plugin-key.ts +1 -3
  115. package/src/pm-plugins/analytics/plugin.ts +60 -70
  116. package/src/pm-plugins/analytics/reducer.ts +19 -19
  117. package/src/pm-plugins/analytics/types.ts +10 -10
  118. package/src/pm-plugins/analytics/utils/moved-event.ts +38 -38
  119. package/src/pm-plugins/decorations/plugin.ts +58 -77
  120. package/src/pm-plugins/decorations/utils/column-controls.ts +59 -71
  121. package/src/pm-plugins/decorations/utils/column-resizing.ts +50 -57
  122. package/src/pm-plugins/decorations/utils/compose-decorations.ts +6 -6
  123. package/src/pm-plugins/decorations/utils/index.ts +3 -6
  124. package/src/pm-plugins/decorations/utils/types.ts +7 -12
  125. package/src/pm-plugins/default-table-selection.ts +3 -3
  126. package/src/pm-plugins/drag-and-drop/actions.ts +25 -25
  127. package/src/pm-plugins/drag-and-drop/commands-with-analytics.ts +158 -190
  128. package/src/pm-plugins/drag-and-drop/commands.ts +154 -170
  129. package/src/pm-plugins/drag-and-drop/consts.ts +4 -5
  130. package/src/pm-plugins/drag-and-drop/plugin-factory.ts +23 -20
  131. package/src/pm-plugins/drag-and-drop/plugin-key.ts +1 -3
  132. package/src/pm-plugins/drag-and-drop/plugin.ts +329 -383
  133. package/src/pm-plugins/drag-and-drop/reducer.ts +30 -30
  134. package/src/pm-plugins/drag-and-drop/types.ts +8 -8
  135. package/src/pm-plugins/drag-and-drop/utils/autoscrollers.ts +38 -41
  136. package/src/pm-plugins/drag-and-drop/utils/getDragBehaviour.ts +3 -6
  137. package/src/pm-plugins/drag-and-drop/utils/monitor.ts +57 -70
  138. package/src/pm-plugins/keymap.ts +208 -220
  139. package/src/pm-plugins/main.ts +348 -400
  140. package/src/pm-plugins/plugin-factory.ts +32 -34
  141. package/src/pm-plugins/safari-delete-composition-text-issue-workaround.ts +83 -97
  142. package/src/pm-plugins/sticky-headers/commands.ts +2 -6
  143. package/src/pm-plugins/sticky-headers/plugin-key.ts +1 -3
  144. package/src/pm-plugins/sticky-headers/plugin-state.ts +41 -44
  145. package/src/pm-plugins/sticky-headers/plugin.ts +4 -4
  146. package/src/pm-plugins/sticky-headers/types.ts +8 -8
  147. package/src/pm-plugins/sticky-headers/util.ts +10 -10
  148. package/src/pm-plugins/table-analytics.ts +70 -72
  149. package/src/pm-plugins/table-local-id.ts +180 -184
  150. package/src/pm-plugins/table-resizing/commands.ts +72 -85
  151. package/src/pm-plugins/table-resizing/event-handlers.ts +298 -317
  152. package/src/pm-plugins/table-resizing/plugin-factory.ts +10 -10
  153. package/src/pm-plugins/table-resizing/plugin-key.ts +1 -3
  154. package/src/pm-plugins/table-resizing/plugin.ts +61 -68
  155. package/src/pm-plugins/table-resizing/reducer.ts +30 -33
  156. package/src/pm-plugins/table-resizing/utils/colgroup.ts +84 -84
  157. package/src/pm-plugins/table-resizing/utils/column-state.ts +78 -81
  158. package/src/pm-plugins/table-resizing/utils/content-width.ts +94 -114
  159. package/src/pm-plugins/table-resizing/utils/dom.ts +93 -110
  160. package/src/pm-plugins/table-resizing/utils/index.ts +29 -34
  161. package/src/pm-plugins/table-resizing/utils/misc.ts +94 -119
  162. package/src/pm-plugins/table-resizing/utils/resize-column.ts +93 -106
  163. package/src/pm-plugins/table-resizing/utils/resize-logic.ts +240 -257
  164. package/src/pm-plugins/table-resizing/utils/resize-state.ts +343 -372
  165. package/src/pm-plugins/table-resizing/utils/scale-table.ts +202 -207
  166. package/src/pm-plugins/table-resizing/utils/types.ts +17 -17
  167. package/src/pm-plugins/table-resizing/utils/unit-to-number.ts +1 -2
  168. package/src/pm-plugins/table-selection-keymap.ts +25 -51
  169. package/src/pm-plugins/table-width.ts +191 -204
  170. package/src/pm-plugins/view-mode-sort/index.ts +223 -227
  171. package/src/pm-plugins/view-mode-sort/plugin-key.ts +3 -2
  172. package/src/pm-plugins/view-mode-sort/types.ts +12 -12
  173. package/src/pm-plugins/view-mode-sort/utils.ts +108 -117
  174. package/src/reducer.ts +139 -155
  175. package/src/toolbar.tsx +815 -905
  176. package/src/transforms/column-width.ts +186 -213
  177. package/src/transforms/delete-columns.ts +208 -222
  178. package/src/transforms/delete-rows.ts +117 -121
  179. package/src/transforms/fix-tables.ts +190 -215
  180. package/src/transforms/merge.ts +263 -269
  181. package/src/transforms/replace-table.ts +27 -43
  182. package/src/transforms/split.ts +65 -75
  183. package/src/types.ts +421 -427
  184. package/src/ui/ColumnResizeWidget/index.tsx +40 -47
  185. package/src/ui/DragHandle/HandleIconComponent.tsx +9 -13
  186. package/src/ui/DragHandle/index.tsx +221 -250
  187. package/src/ui/DragPreview/index.tsx +35 -35
  188. package/src/ui/FloatingAlignmentButtons/FloatingAlignmentButtons.tsx +33 -41
  189. package/src/ui/FloatingContextualButton/FixedButton.tsx +154 -157
  190. package/src/ui/FloatingContextualButton/index.tsx +109 -115
  191. package/src/ui/FloatingContextualButton/styles.ts +43 -46
  192. package/src/ui/FloatingContextualMenu/ContextualMenu.tsx +634 -694
  193. package/src/ui/FloatingContextualMenu/index.tsx +83 -101
  194. package/src/ui/FloatingContextualMenu/styles.ts +57 -65
  195. package/src/ui/FloatingDeleteButton/DeleteButton.tsx +37 -37
  196. package/src/ui/FloatingDeleteButton/getPopUpOptions.ts +47 -57
  197. package/src/ui/FloatingDeleteButton/index.tsx +319 -350
  198. package/src/ui/FloatingDragMenu/DragMenu.tsx +555 -596
  199. package/src/ui/FloatingDragMenu/DropdownMenu.tsx +152 -162
  200. package/src/ui/FloatingDragMenu/index.tsx +88 -102
  201. package/src/ui/FloatingDragMenu/styles.ts +51 -54
  202. package/src/ui/FloatingInsertButton/InsertButton.tsx +204 -217
  203. package/src/ui/FloatingInsertButton/getPopupOptions.ts +100 -115
  204. package/src/ui/FloatingInsertButton/index.tsx +248 -292
  205. package/src/ui/FloatingToolbarLabel/FloatingToolbarLabel.tsx +24 -29
  206. package/src/ui/TableFloatingColumnControls/ColumnControls/index.tsx +308 -329
  207. package/src/ui/TableFloatingColumnControls/ColumnDropTargets/ColumnDropTarget.tsx +85 -94
  208. package/src/ui/TableFloatingColumnControls/ColumnDropTargets/index.tsx +46 -46
  209. package/src/ui/TableFloatingColumnControls/index.tsx +116 -136
  210. package/src/ui/TableFloatingControls/CornerControls/ClassicCornerControls.tsx +79 -91
  211. package/src/ui/TableFloatingControls/CornerControls/DragCornerControls.tsx +95 -102
  212. package/src/ui/TableFloatingControls/CornerControls/index.tsx +1 -4
  213. package/src/ui/TableFloatingControls/CornerControls/types.ts +8 -8
  214. package/src/ui/TableFloatingControls/FloatingControlsWithSelection.tsx +50 -50
  215. package/src/ui/TableFloatingControls/NumberColumn/index.tsx +111 -124
  216. package/src/ui/TableFloatingControls/RowControls/ClassicControls.tsx +86 -105
  217. package/src/ui/TableFloatingControls/RowControls/DragControls.tsx +305 -341
  218. package/src/ui/TableFloatingControls/RowDropTarget/index.tsx +72 -75
  219. package/src/ui/TableFloatingControls/index.tsx +191 -193
  220. package/src/ui/TableFullWidthLabel/index.tsx +20 -20
  221. package/src/ui/common-styles.ts +880 -912
  222. package/src/ui/consts.ts +29 -74
  223. package/src/ui/icons/AddColLeftIcon.tsx +33 -39
  224. package/src/ui/icons/AddColRightIcon.tsx +33 -39
  225. package/src/ui/icons/AddRowAboveIcon.tsx +16 -22
  226. package/src/ui/icons/AddRowBelowIcon.tsx +33 -39
  227. package/src/ui/icons/DisplayModeIcon.tsx +31 -31
  228. package/src/ui/icons/DragHandleDisabledIcon.tsx +19 -21
  229. package/src/ui/icons/DragHandleIcon.tsx +12 -12
  230. package/src/ui/icons/DragInMotionIcon.tsx +45 -52
  231. package/src/ui/icons/MergeCellsIcon.tsx +22 -28
  232. package/src/ui/icons/MinimisedHandle.tsx +9 -9
  233. package/src/ui/icons/SplitCellIcon.tsx +30 -36
  234. package/src/ui/ui-styles.ts +769 -798
  235. package/src/utils/alignment.ts +1 -1
  236. package/src/utils/analytics.ts +192 -208
  237. package/src/utils/collapse.ts +55 -64
  238. package/src/utils/column-controls.ts +237 -254
  239. package/src/utils/create.ts +30 -30
  240. package/src/utils/decoration.ts +482 -502
  241. package/src/utils/dom.ts +127 -134
  242. package/src/utils/drag-menu.ts +322 -373
  243. package/src/utils/get-allow-add-column-custom-step.ts +4 -5
  244. package/src/utils/guidelines.ts +16 -21
  245. package/src/utils/index.ts +68 -68
  246. package/src/utils/merged-cells.ts +245 -254
  247. package/src/utils/nodes.ts +91 -106
  248. package/src/utils/paste.ts +119 -135
  249. package/src/utils/row-controls.ts +199 -213
  250. package/src/utils/selection.ts +77 -87
  251. package/src/utils/snapping.ts +87 -100
  252. package/src/utils/table.ts +44 -44
  253. package/src/utils/transforms.ts +5 -5
  254. package/src/utils/update-plugin-state-decorations.ts +5 -9
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
  };