@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/utils/dom.ts CHANGED
@@ -1,66 +1,62 @@
1
- import {
2
- closestElement,
3
- containsClassName,
4
- } from '@atlaskit/editor-common/utils';
1
+ import { closestElement, containsClassName } from '@atlaskit/editor-common/utils';
5
2
 
6
3
  import { TableCssClassName as ClassName } from '../types';
7
4
 
8
5
  export const isCell = (node: HTMLElement | null): boolean => {
9
- return Boolean(
10
- node &&
11
- (['TH', 'TD'].indexOf(node.tagName) > -1 ||
12
- !!closestElement(node, `.${ClassName.TABLE_HEADER_CELL}`) ||
13
- !!closestElement(node, `.${ClassName.TABLE_CELL}`)),
14
- );
6
+ return Boolean(
7
+ node &&
8
+ (['TH', 'TD'].indexOf(node.tagName) > -1 ||
9
+ !!closestElement(node, `.${ClassName.TABLE_HEADER_CELL}`) ||
10
+ !!closestElement(node, `.${ClassName.TABLE_CELL}`)),
11
+ );
15
12
  };
16
13
 
17
14
  export const isCornerButton = (node: HTMLElement | null): boolean =>
18
- containsClassName(node, ClassName.CONTROLS_CORNER_BUTTON);
15
+ containsClassName(node, ClassName.CONTROLS_CORNER_BUTTON);
19
16
 
20
17
  export const isInsertRowButton = (node: HTMLElement | null) =>
21
- containsClassName(node, ClassName.CONTROLS_INSERT_ROW) ||
22
- closestElement(node, `.${ClassName.CONTROLS_INSERT_ROW}`) ||
23
- (containsClassName(node, ClassName.CONTROLS_BUTTON_OVERLAY) &&
24
- closestElement(node, `.${ClassName.ROW_CONTROLS}`));
18
+ containsClassName(node, ClassName.CONTROLS_INSERT_ROW) ||
19
+ closestElement(node, `.${ClassName.CONTROLS_INSERT_ROW}`) ||
20
+ (containsClassName(node, ClassName.CONTROLS_BUTTON_OVERLAY) &&
21
+ closestElement(node, `.${ClassName.ROW_CONTROLS}`));
25
22
 
26
23
  export const getColumnOrRowIndex = (target: HTMLElement): [number, number] => [
27
- parseInt(target.getAttribute('data-start-index') || '-1', 10),
28
- parseInt(target.getAttribute('data-end-index') || '-1', 10),
24
+ parseInt(target.getAttribute('data-start-index') || '-1', 10),
25
+ parseInt(target.getAttribute('data-end-index') || '-1', 10),
29
26
  ];
30
27
 
31
- export const isColumnControlsDecorations = (
32
- node: HTMLElement | null,
33
- ): boolean => containsClassName(node, ClassName.COLUMN_CONTROLS_DECORATIONS);
28
+ export const isColumnControlsDecorations = (node: HTMLElement | null): boolean =>
29
+ containsClassName(node, ClassName.COLUMN_CONTROLS_DECORATIONS);
34
30
 
35
31
  export const isRowControlsButton = (node: HTMLElement | null): boolean =>
36
- containsClassName(node, ClassName.ROW_CONTROLS_BUTTON) ||
37
- containsClassName(node, ClassName.NUMBERED_COLUMN_BUTTON);
32
+ containsClassName(node, ClassName.ROW_CONTROLS_BUTTON) ||
33
+ containsClassName(node, ClassName.NUMBERED_COLUMN_BUTTON);
38
34
 
39
35
  export const isResizeHandleDecoration = (node: HTMLElement | null): boolean =>
40
- containsClassName(node, ClassName.RESIZE_HANDLE_DECORATION);
36
+ containsClassName(node, ClassName.RESIZE_HANDLE_DECORATION);
41
37
 
42
38
  export const isTableControlsButton = (node: HTMLElement | null): boolean =>
43
- containsClassName(node, ClassName.CONTROLS_BUTTON) ||
44
- containsClassName(node, ClassName.ROW_CONTROLS_BUTTON_WRAP);
39
+ containsClassName(node, ClassName.CONTROLS_BUTTON) ||
40
+ containsClassName(node, ClassName.ROW_CONTROLS_BUTTON_WRAP);
45
41
 
46
42
  export const isTableContainerOrWrapper = (node: HTMLElement | null): boolean =>
47
- containsClassName(node, ClassName.TABLE_CONTAINER) ||
48
- containsClassName(node, ClassName.TABLE_NODE_WRAPPER);
43
+ containsClassName(node, ClassName.TABLE_CONTAINER) ||
44
+ containsClassName(node, ClassName.TABLE_NODE_WRAPPER);
49
45
 
50
46
  /** drag-and-drop classes */
51
47
  export const isDragRowControlsButton = (node: HTMLElement | null) =>
52
- containsClassName(node, ClassName.DRAG_ROW_CONTROLS) ||
53
- closestElement(node, `.${ClassName.DRAG_ROW_CONTROLS}`);
48
+ containsClassName(node, ClassName.DRAG_ROW_CONTROLS) ||
49
+ closestElement(node, `.${ClassName.DRAG_ROW_CONTROLS}`);
54
50
 
55
51
  export const isDragRowFloatingInsertDot = (node: HTMLElement | null) =>
56
- containsClassName(node, ClassName.DRAG_ROW_FLOATING_INSERT_DOT_WRAPPER);
52
+ containsClassName(node, ClassName.DRAG_ROW_FLOATING_INSERT_DOT_WRAPPER);
57
53
 
58
54
  export const isDragColumnFloatingInsertDot = (node: HTMLElement | null) =>
59
- containsClassName(node, ClassName.DRAG_COLUMN_FLOATING_INSERT_DOT_WRAPPER);
55
+ containsClassName(node, ClassName.DRAG_COLUMN_FLOATING_INSERT_DOT_WRAPPER);
60
56
 
61
57
  export const isDragCornerButton = (node: HTMLElement | null) =>
62
- containsClassName(node, ClassName.DRAG_CORNER_BUTTON) ||
63
- containsClassName(node, ClassName.DRAG_CORNER_BUTTON_INNER);
58
+ containsClassName(node, ClassName.DRAG_CORNER_BUTTON) ||
59
+ containsClassName(node, ClassName.DRAG_CORNER_BUTTON_INNER);
64
60
 
65
61
  /*
66
62
  * This function returns which side of a given element the mouse cursor is,
@@ -125,134 +121,131 @@ export const isDragCornerButton = (node: HTMLElement | null) =>
125
121
  * @returns
126
122
  */
127
123
  export const getMousePositionHorizontalRelativeByElement = (
128
- mouseEvent: MouseEvent,
129
- offsetX: number,
130
- gapInPixels?: number,
124
+ mouseEvent: MouseEvent,
125
+ offsetX: number,
126
+ gapInPixels?: number,
131
127
  ): 'left' | 'right' | null => {
132
- const element = mouseEvent.target;
133
-
134
- if (element instanceof HTMLElement) {
135
- const width = element.clientWidth; // reflow
136
- const x = !Number.isNaN(offsetX) ? offsetX : mouseEvent.offsetX; // reflow
137
-
138
- if (width <= 0) {
139
- return null;
140
- }
141
-
142
- if (!gapInPixels) {
143
- return x / width > 0.5 ? 'right' : 'left';
144
- } else {
145
- if (x <= gapInPixels) {
146
- return 'left';
147
- } else if (x >= width - gapInPixels) {
148
- return 'right';
149
- }
150
- }
151
- }
152
-
153
- return null;
128
+ const element = mouseEvent.target;
129
+
130
+ if (element instanceof HTMLElement) {
131
+ const width = element.clientWidth; // reflow
132
+ const x = !Number.isNaN(offsetX) ? offsetX : mouseEvent.offsetX; // reflow
133
+
134
+ if (width <= 0) {
135
+ return null;
136
+ }
137
+
138
+ if (!gapInPixels) {
139
+ return x / width > 0.5 ? 'right' : 'left';
140
+ } else {
141
+ if (x <= gapInPixels) {
142
+ return 'left';
143
+ } else if (x >= width - gapInPixels) {
144
+ return 'right';
145
+ }
146
+ }
147
+ }
148
+
149
+ return null;
154
150
  };
155
151
 
156
152
  export const getMousePositionVerticalRelativeByElement = (
157
- mouseEvent: MouseEvent,
153
+ mouseEvent: MouseEvent,
158
154
  ): 'top' | 'bottom' | null => {
159
- const element = mouseEvent.target;
160
- if (element instanceof HTMLElement) {
161
- const elementRect = element.getBoundingClientRect();
162
- if (elementRect.height <= 0) {
163
- return null;
164
- }
165
-
166
- const y = mouseEvent.clientY - elementRect.top;
167
- return y / elementRect.height > 0.5 ? 'bottom' : 'top';
168
- }
169
-
170
- return null;
155
+ const element = mouseEvent.target;
156
+ if (element instanceof HTMLElement) {
157
+ const elementRect = element.getBoundingClientRect();
158
+ if (elementRect.height <= 0) {
159
+ return null;
160
+ }
161
+
162
+ const y = mouseEvent.clientY - elementRect.top;
163
+ return y / elementRect.height > 0.5 ? 'bottom' : 'top';
164
+ }
165
+
166
+ return null;
171
167
  };
172
168
 
173
169
  export const hasResizeHandler = ({
174
- columnEndIndexTarget,
175
- target,
170
+ columnEndIndexTarget,
171
+ target,
176
172
  }: {
177
- columnEndIndexTarget: number;
178
- target: HTMLElement;
173
+ columnEndIndexTarget: number;
174
+ target: HTMLElement;
179
175
  }): boolean => {
180
- const tableElement = closestElement(target, 'table');
176
+ const tableElement = closestElement(target, 'table');
181
177
 
182
- if (!tableElement) {
183
- return false;
184
- }
178
+ if (!tableElement) {
179
+ return false;
180
+ }
185
181
 
186
- const query = [
187
- `.${ClassName.RESIZE_HANDLE_DECORATION}`,
188
- `[data-end-index="${columnEndIndexTarget}"]`,
189
- ];
182
+ const query = [
183
+ `.${ClassName.RESIZE_HANDLE_DECORATION}`,
184
+ `[data-end-index="${columnEndIndexTarget}"]`,
185
+ ];
190
186
 
191
- const decorationElement = tableElement.querySelectorAll(query.join(''));
187
+ const decorationElement = tableElement.querySelectorAll(query.join(''));
192
188
 
193
- if (!decorationElement || decorationElement.length === 0) {
194
- return false;
195
- }
189
+ if (!decorationElement || decorationElement.length === 0) {
190
+ return false;
191
+ }
196
192
 
197
- return true;
193
+ return true;
198
194
  };
199
195
 
200
196
  export type TableDOMElements = {
201
- wrapper: HTMLDivElement;
202
- table: HTMLTableElement;
197
+ wrapper: HTMLDivElement;
198
+ table: HTMLTableElement;
203
199
  };
204
200
 
205
201
  export const getTree = (tr: HTMLTableRowElement): TableDOMElements | null => {
206
- // pm renders into tbody, owned by react
207
- const tbody = tr.parentElement;
208
- if (!tbody) {
209
- return null;
210
- }
211
-
212
- // rendered by react
213
- const table = tbody.parentElement;
214
- if (!table) {
215
- return null;
216
- }
217
-
218
- // rendered by react
219
- const wrapper = table.parentElement;
220
- if (!wrapper) {
221
- return null;
222
- }
223
-
224
- return {
225
- wrapper: wrapper as HTMLDivElement,
226
- table: table as HTMLTableElement,
227
- };
202
+ // pm renders into tbody, owned by react
203
+ const tbody = tr.parentElement;
204
+ if (!tbody) {
205
+ return null;
206
+ }
207
+
208
+ // rendered by react
209
+ const table = tbody.parentElement;
210
+ if (!table) {
211
+ return null;
212
+ }
213
+
214
+ // rendered by react
215
+ const wrapper = table.parentElement;
216
+ if (!wrapper) {
217
+ return null;
218
+ }
219
+
220
+ return {
221
+ wrapper: wrapper as HTMLDivElement,
222
+ table: table as HTMLTableElement,
223
+ };
228
224
  };
229
225
 
230
226
  export const getTop = (element: HTMLElement | Window | undefined): number => {
231
- if (!element || element instanceof Window) {
232
- return 0;
233
- }
227
+ if (!element || element instanceof Window) {
228
+ return 0;
229
+ }
234
230
 
235
- return element?.getBoundingClientRect?.()?.top ?? 0;
231
+ return element?.getBoundingClientRect?.()?.top ?? 0;
236
232
  };
237
233
 
238
234
  export const findNearestCellIndexToPoint = (
239
- x: number,
240
- y: number,
235
+ x: number,
236
+ y: number,
241
237
  ): { row: number; col: number } | undefined => {
242
- const elements = document.elementsFromPoint(x, y);
243
- const cell = elements.find(
244
- (el) =>
245
- el.nodeName.toUpperCase() === 'TD' || el.nodeName.toUpperCase() === 'TH',
246
- ) as HTMLTableCellElement | undefined;
247
- const row = (cell?.parentElement ?? undefined) as
248
- | HTMLTableRowElement
249
- | undefined;
250
-
251
- if (!Number.isFinite(row?.rowIndex) || !Number.isFinite(cell?.cellIndex)) {
252
- return undefined;
253
- }
254
- return {
255
- row: row!.rowIndex,
256
- col: cell!.cellIndex,
257
- };
238
+ const elements = document.elementsFromPoint(x, y);
239
+ const cell = elements.find(
240
+ (el) => el.nodeName.toUpperCase() === 'TD' || el.nodeName.toUpperCase() === 'TH',
241
+ ) as HTMLTableCellElement | undefined;
242
+ const row = (cell?.parentElement ?? undefined) as HTMLTableRowElement | undefined;
243
+
244
+ if (!Number.isFinite(row?.rowIndex) || !Number.isFinite(cell?.cellIndex)) {
245
+ return undefined;
246
+ }
247
+ return {
248
+ row: row!.rowIndex,
249
+ col: cell!.cellIndex,
250
+ };
258
251
  };