@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
@@ -1,214 +1,182 @@
1
1
  import {
2
- ACTION_SUBJECT,
3
- EVENT_TYPE,
4
- INPUT_METHOD,
5
- TABLE_ACTION,
6
- TABLE_STATUS,
2
+ ACTION_SUBJECT,
3
+ EVENT_TYPE,
4
+ INPUT_METHOD,
5
+ TABLE_ACTION,
6
+ TABLE_STATUS,
7
7
  } from '@atlaskit/editor-common/analytics';
8
8
  import type { EditorAnalyticsAPI } from '@atlaskit/editor-common/analytics';
9
9
  import type { Command } from '@atlaskit/editor-common/types';
10
- import type {
11
- EditorState,
12
- Transaction,
13
- } from '@atlaskit/editor-prosemirror/state';
10
+ import type { EditorState, Transaction } from '@atlaskit/editor-prosemirror/state';
14
11
  import { CellSelection } from '@atlaskit/editor-tables/cell-selection';
15
- import {
16
- findCellRectClosestToPos,
17
- getSelectionRect,
18
- } from '@atlaskit/editor-tables/utils';
12
+ import { findCellRectClosestToPos, getSelectionRect } from '@atlaskit/editor-tables/utils';
19
13
 
20
14
  import type { DraggableData, DraggableType } from '../../types';
21
- import {
22
- getSelectedColumnIndexes,
23
- getSelectedRowIndexes,
24
- getSelectedTableInfo,
25
- } from '../../utils';
15
+ import { getSelectedColumnIndexes, getSelectedRowIndexes, getSelectedTableInfo } from '../../utils';
26
16
  import { withEditorAnalyticsAPI } from '../../utils/analytics';
27
17
  import { canMove, getTargetIndex } from '../../utils/drag-menu';
28
18
 
29
19
  import { clearDropTarget, cloneSource, moveSource } from './commands';
30
20
 
31
21
  export const clearDropTargetWithAnalytics =
32
- (editorAnalyticsAPI: EditorAnalyticsAPI | undefined | null) =>
33
- (
34
- inputMethod: INPUT_METHOD.TABLE_CONTEXT_MENU | INPUT_METHOD.DRAG_AND_DROP,
35
- sourceType: DraggableType,
36
- sourceIndexes: number[] | undefined,
37
- status: TABLE_STATUS.CANCELLED | TABLE_STATUS.INVALID,
38
- tr?: Transaction,
39
- ) => {
40
- return withEditorAnalyticsAPI(({ selection }: EditorState) => {
41
- const { totalRowCount, totalColumnCount } =
42
- getSelectedTableInfo(selection);
43
- return {
44
- action:
45
- sourceType === 'table-row'
46
- ? TABLE_ACTION.MOVED_ROW
47
- : TABLE_ACTION.MOVED_COLUMN,
48
- actionSubject: ACTION_SUBJECT.TABLE,
49
- actionSubjectId: null,
50
- attributes: {
51
- inputMethod,
52
- count: sourceIndexes?.length ?? 0,
53
- distance: 0,
54
- status,
55
- totalRowCount,
56
- totalColumnCount,
57
- },
58
- eventType: EVENT_TYPE.TRACK,
59
- };
60
- })(editorAnalyticsAPI)((state, dispatch) => {
61
- if (dispatch) {
62
- clearDropTarget(tr)(state, dispatch);
63
- }
64
- return true;
65
- });
66
- };
22
+ (editorAnalyticsAPI: EditorAnalyticsAPI | undefined | null) =>
23
+ (
24
+ inputMethod: INPUT_METHOD.TABLE_CONTEXT_MENU | INPUT_METHOD.DRAG_AND_DROP,
25
+ sourceType: DraggableType,
26
+ sourceIndexes: number[] | undefined,
27
+ status: TABLE_STATUS.CANCELLED | TABLE_STATUS.INVALID,
28
+ tr?: Transaction,
29
+ ) => {
30
+ return withEditorAnalyticsAPI(({ selection }: EditorState) => {
31
+ const { totalRowCount, totalColumnCount } = getSelectedTableInfo(selection);
32
+ return {
33
+ action: sourceType === 'table-row' ? TABLE_ACTION.MOVED_ROW : TABLE_ACTION.MOVED_COLUMN,
34
+ actionSubject: ACTION_SUBJECT.TABLE,
35
+ actionSubjectId: null,
36
+ attributes: {
37
+ inputMethod,
38
+ count: sourceIndexes?.length ?? 0,
39
+ distance: 0,
40
+ status,
41
+ totalRowCount,
42
+ totalColumnCount,
43
+ },
44
+ eventType: EVENT_TYPE.TRACK,
45
+ };
46
+ })(editorAnalyticsAPI)((state, dispatch) => {
47
+ if (dispatch) {
48
+ clearDropTarget(tr)(state, dispatch);
49
+ }
50
+ return true;
51
+ });
52
+ };
67
53
 
68
54
  export const moveSourceWithAnalytics =
69
- (editorAnalyticsAPI: EditorAnalyticsAPI | undefined | null) =>
70
- (
71
- inputMethod:
72
- | INPUT_METHOD.TABLE_CONTEXT_MENU
73
- | INPUT_METHOD.DRAG_AND_DROP
74
- | INPUT_METHOD.SHORTCUT,
75
- sourceType: DraggableType,
76
- sourceIndexes: number[],
77
- targetIndex: number,
78
- tr?: Transaction,
79
- ) => {
80
- return withEditorAnalyticsAPI(({ selection }: EditorState) => {
81
- const direction = sourceIndexes[0] > targetIndex ? -1 : 1;
82
- const { totalRowCount, totalColumnCount } =
83
- getSelectedTableInfo(selection);
84
- return {
85
- action:
86
- sourceType === 'table-row'
87
- ? TABLE_ACTION.MOVED_ROW
88
- : TABLE_ACTION.MOVED_COLUMN,
89
- actionSubject: ACTION_SUBJECT.TABLE,
90
- actionSubjectId: null,
91
- attributes: {
92
- inputMethod,
93
- count: sourceIndexes.length,
94
- // This identifies the total amount of row/cols the move operation covered. The distance covered should be a representaion
95
- // of the minimum distance. This will account for large selection being moved causing a large distance travelled value.
96
- distance:
97
- Math.min(...sourceIndexes.map((v) => Math.abs(targetIndex - v))) *
98
- direction,
99
- // If a drop doesn't actually change anything then we're going to mark the event as cancelled.
100
- status: sourceIndexes.includes(targetIndex)
101
- ? TABLE_STATUS.CANCELLED
102
- : TABLE_STATUS.SUCCESS,
103
- totalRowCount,
104
- totalColumnCount,
105
- },
106
- eventType: EVENT_TYPE.TRACK,
107
- };
108
- })(editorAnalyticsAPI)((state, dispatch) => {
109
- if (dispatch) {
110
- moveSource(sourceType, sourceIndexes, targetIndex, tr)(state, dispatch);
111
- }
112
- return true;
113
- });
114
- };
55
+ (editorAnalyticsAPI: EditorAnalyticsAPI | undefined | null) =>
56
+ (
57
+ inputMethod:
58
+ | INPUT_METHOD.TABLE_CONTEXT_MENU
59
+ | INPUT_METHOD.DRAG_AND_DROP
60
+ | INPUT_METHOD.SHORTCUT,
61
+ sourceType: DraggableType,
62
+ sourceIndexes: number[],
63
+ targetIndex: number,
64
+ tr?: Transaction,
65
+ ) => {
66
+ return withEditorAnalyticsAPI(({ selection }: EditorState) => {
67
+ const direction = sourceIndexes[0] > targetIndex ? -1 : 1;
68
+ const { totalRowCount, totalColumnCount } = getSelectedTableInfo(selection);
69
+ return {
70
+ action: sourceType === 'table-row' ? TABLE_ACTION.MOVED_ROW : TABLE_ACTION.MOVED_COLUMN,
71
+ actionSubject: ACTION_SUBJECT.TABLE,
72
+ actionSubjectId: null,
73
+ attributes: {
74
+ inputMethod,
75
+ count: sourceIndexes.length,
76
+ // This identifies the total amount of row/cols the move operation covered. The distance covered should be a representaion
77
+ // of the minimum distance. This will account for large selection being moved causing a large distance travelled value.
78
+ distance: Math.min(...sourceIndexes.map((v) => Math.abs(targetIndex - v))) * direction,
79
+ // If a drop doesn't actually change anything then we're going to mark the event as cancelled.
80
+ status: sourceIndexes.includes(targetIndex)
81
+ ? TABLE_STATUS.CANCELLED
82
+ : TABLE_STATUS.SUCCESS,
83
+ totalRowCount,
84
+ totalColumnCount,
85
+ },
86
+ eventType: EVENT_TYPE.TRACK,
87
+ };
88
+ })(editorAnalyticsAPI)((state, dispatch) => {
89
+ if (dispatch) {
90
+ moveSource(sourceType, sourceIndexes, targetIndex, tr)(state, dispatch);
91
+ }
92
+ return true;
93
+ });
94
+ };
115
95
 
116
96
  export const moveSourceWithAnalyticsViaShortcut =
117
- (editorAnalyticsAPI: EditorAnalyticsAPI | undefined | null) =>
118
- (sourceType: DraggableType, direction: DraggableData['direction']): Command =>
119
- (state, dispatch) => {
120
- const { selection } = state;
121
- const isCellSelection = selection instanceof CellSelection;
122
- const selectionRect = isCellSelection
123
- ? getSelectionRect(selection)
124
- : findCellRectClosestToPos(selection.$from);
97
+ (editorAnalyticsAPI: EditorAnalyticsAPI | undefined | null) =>
98
+ (sourceType: DraggableType, direction: DraggableData['direction']): Command =>
99
+ (state, dispatch) => {
100
+ const { selection } = state;
101
+ const isCellSelection = selection instanceof CellSelection;
102
+ const selectionRect = isCellSelection
103
+ ? getSelectionRect(selection)
104
+ : findCellRectClosestToPos(selection.$from);
125
105
 
126
- if (!selectionRect) {
127
- return false;
128
- }
106
+ if (!selectionRect) {
107
+ return false;
108
+ }
129
109
 
130
- const isRow = sourceType === 'table-row';
131
- const selectedIndexes = isRow
132
- ? getSelectedRowIndexes(selectionRect)
133
- : getSelectedColumnIndexes(selectionRect);
134
- if (selectedIndexes.length === 0) {
135
- return false;
136
- }
110
+ const isRow = sourceType === 'table-row';
111
+ const selectedIndexes = isRow
112
+ ? getSelectedRowIndexes(selectionRect)
113
+ : getSelectedColumnIndexes(selectionRect);
114
+ if (selectedIndexes.length === 0) {
115
+ return false;
116
+ }
137
117
 
138
- const { totalRowCount, totalColumnCount } = getSelectedTableInfo(selection);
139
- if (
140
- !canMove(
141
- sourceType,
142
- direction,
143
- isRow ? totalRowCount : totalColumnCount,
144
- selection,
145
- selectionRect,
146
- )
147
- ) {
148
- return false;
149
- }
118
+ const { totalRowCount, totalColumnCount } = getSelectedTableInfo(selection);
119
+ if (
120
+ !canMove(
121
+ sourceType,
122
+ direction,
123
+ isRow ? totalRowCount : totalColumnCount,
124
+ selection,
125
+ selectionRect,
126
+ )
127
+ ) {
128
+ return false;
129
+ }
150
130
 
151
- const targetIndex = getTargetIndex(selectedIndexes, direction);
131
+ const targetIndex = getTargetIndex(selectedIndexes, direction);
152
132
 
153
- return moveSourceWithAnalytics(editorAnalyticsAPI)(
154
- INPUT_METHOD.SHORTCUT,
155
- sourceType,
156
- selectedIndexes,
157
- targetIndex,
158
- )(state, dispatch);
159
- };
133
+ return moveSourceWithAnalytics(editorAnalyticsAPI)(
134
+ INPUT_METHOD.SHORTCUT,
135
+ sourceType,
136
+ selectedIndexes,
137
+ targetIndex,
138
+ )(state, dispatch);
139
+ };
160
140
 
161
141
  export const cloneSourceWithAnalytics =
162
- (editorAnalyticsAPI: EditorAnalyticsAPI | undefined | null) =>
163
- (
164
- inputMethod:
165
- | INPUT_METHOD.TABLE_CONTEXT_MENU
166
- | INPUT_METHOD.DRAG_AND_DROP
167
- | INPUT_METHOD.SHORTCUT,
168
- sourceType: DraggableType,
169
- sourceIndexes: number[],
170
- targetIndex: number,
171
- targetDirection: 'start' | 'end',
172
- tr?: Transaction,
173
- ) => {
174
- return withEditorAnalyticsAPI(({ selection }: EditorState) => {
175
- const direction = sourceIndexes[0] > targetIndex ? -1 : 1;
176
- const { totalRowCount, totalColumnCount } =
177
- getSelectedTableInfo(selection);
178
- return {
179
- action:
180
- sourceType === 'table-row'
181
- ? TABLE_ACTION.CLONED_ROW
182
- : TABLE_ACTION.CLONED_COLUMN,
183
- actionSubject: ACTION_SUBJECT.TABLE,
184
- actionSubjectId: null,
185
- attributes: {
186
- inputMethod,
187
- count: sourceIndexes.length,
188
- // This identifies the total amount of row/cols the move operation covered. The distance covered should be a representaion
189
- // of the minimum distance. This will account for large selection being moved causing a large distance travelled value.
190
- distance:
191
- Math.min(...sourceIndexes.map((v) => Math.abs(targetIndex - v))) *
192
- direction,
193
- // If a drop doesn't actually change anything then we're going to mark the event as cancelled.
194
- status: sourceIndexes.includes(targetIndex)
195
- ? TABLE_STATUS.CANCELLED
196
- : TABLE_STATUS.SUCCESS,
197
- totalRowCount,
198
- totalColumnCount,
199
- },
200
- eventType: EVENT_TYPE.TRACK,
201
- };
202
- })(editorAnalyticsAPI)((state, dispatch) => {
203
- if (dispatch) {
204
- cloneSource(
205
- sourceType,
206
- sourceIndexes,
207
- targetIndex,
208
- targetDirection,
209
- tr,
210
- )(state, dispatch);
211
- }
212
- return true;
213
- });
214
- };
142
+ (editorAnalyticsAPI: EditorAnalyticsAPI | undefined | null) =>
143
+ (
144
+ inputMethod:
145
+ | INPUT_METHOD.TABLE_CONTEXT_MENU
146
+ | INPUT_METHOD.DRAG_AND_DROP
147
+ | INPUT_METHOD.SHORTCUT,
148
+ sourceType: DraggableType,
149
+ sourceIndexes: number[],
150
+ targetIndex: number,
151
+ targetDirection: 'start' | 'end',
152
+ tr?: Transaction,
153
+ ) => {
154
+ return withEditorAnalyticsAPI(({ selection }: EditorState) => {
155
+ const direction = sourceIndexes[0] > targetIndex ? -1 : 1;
156
+ const { totalRowCount, totalColumnCount } = getSelectedTableInfo(selection);
157
+ return {
158
+ action: sourceType === 'table-row' ? TABLE_ACTION.CLONED_ROW : TABLE_ACTION.CLONED_COLUMN,
159
+ actionSubject: ACTION_SUBJECT.TABLE,
160
+ actionSubjectId: null,
161
+ attributes: {
162
+ inputMethod,
163
+ count: sourceIndexes.length,
164
+ // This identifies the total amount of row/cols the move operation covered. The distance covered should be a representaion
165
+ // of the minimum distance. This will account for large selection being moved causing a large distance travelled value.
166
+ distance: Math.min(...sourceIndexes.map((v) => Math.abs(targetIndex - v))) * direction,
167
+ // If a drop doesn't actually change anything then we're going to mark the event as cancelled.
168
+ status: sourceIndexes.includes(targetIndex)
169
+ ? TABLE_STATUS.CANCELLED
170
+ : TABLE_STATUS.SUCCESS,
171
+ totalRowCount,
172
+ totalColumnCount,
173
+ },
174
+ eventType: EVENT_TYPE.TRACK,
175
+ };
176
+ })(editorAnalyticsAPI)((state, dispatch) => {
177
+ if (dispatch) {
178
+ cloneSource(sourceType, sourceIndexes, targetIndex, targetDirection, tr)(state, dispatch);
179
+ }
180
+ return true;
181
+ });
182
+ };