@infinite-table/infinite-react 0.5.1 → 0.5.2

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 (282) hide show
  1. package/README.md +104 -0
  2. package/index.css +896 -0
  3. package/index.d.ts +2264 -0
  4. package/index.esm.css +896 -0
  5. package/index.esm.js +15404 -0
  6. package/index.js +15240 -0
  7. package/package.json +2 -94
  8. package/.vscode/settings.json +0 -3
  9. package/API.md +0 -0
  10. package/build/buildPackageJson.js +0 -43
  11. package/build/scripts/test.js +0 -37
  12. package/bundler.config.js +0 -25
  13. package/globals.d.ts +0 -7
  14. package/rollup.config.js +0 -15
  15. package/run-build-deepmap.js +0 -47
  16. package/run-build.js +0 -45
  17. package/run-dts-concat.js +0 -21
  18. package/src/components/CSSVariableWatch.tsx +0 -82
  19. package/src/components/DataSource/BooleanCollectionState.ts +0 -214
  20. package/src/components/DataSource/BooleanDeepCollectionState.ts +0 -208
  21. package/src/components/DataSource/DataSourceContext.ts +0 -20
  22. package/src/components/DataSource/GroupRowsState.ts +0 -74
  23. package/src/components/DataSource/Indexer.ts +0 -27
  24. package/src/components/DataSource/RowSelectionState.ts +0 -763
  25. package/src/components/DataSource/defaultFilterTypes.ts +0 -64
  26. package/src/components/DataSource/index.tsx +0 -108
  27. package/src/components/DataSource/privateHooks/getChangeDetect.ts +0 -7
  28. package/src/components/DataSource/privateHooks/useLoadData.ts +0 -783
  29. package/src/components/DataSource/publicHooks/useDataSource.ts +0 -19
  30. package/src/components/DataSource/publicHooks/useDataSourceActions.ts +0 -14
  31. package/src/components/DataSource/state/getInitialState.ts +0 -494
  32. package/src/components/DataSource/state/normalizeSortInfo.ts +0 -35
  33. package/src/components/DataSource/state/reducer.ts +0 -466
  34. package/src/components/DataSource/state/rowInfoStatus.ts +0 -27
  35. package/src/components/DataSource/types.ts +0 -548
  36. package/src/components/HeadlessTable/HeadlessTableWithPinnedContainers.tsx +0 -142
  37. package/src/components/HeadlessTable/MappedCells.ts +0 -251
  38. package/src/components/HeadlessTable/RawTable.tsx +0 -98
  39. package/src/components/HeadlessTable/ReactHeadlessTableRenderer.tsx +0 -1516
  40. package/src/components/HeadlessTable/index.tsx +0 -234
  41. package/src/components/InfiniteTable/InfiniteCls.css.ts +0 -164
  42. package/src/components/InfiniteTable/InfiniteTableContext.ts +0 -16
  43. package/src/components/InfiniteTable/api/getImperativeApi.ts +0 -391
  44. package/src/components/InfiniteTable/api/getSelectionApi.ts +0 -364
  45. package/src/components/InfiniteTable/api/type.ts +0 -11
  46. package/src/components/InfiniteTable/components/ActiveCellIndicator.css.ts +0 -51
  47. package/src/components/InfiniteTable/components/ActiveCellIndicator.tsx +0 -116
  48. package/src/components/InfiniteTable/components/ActiveRowIndicator.css.ts +0 -56
  49. package/src/components/InfiniteTable/components/ActiveRowIndicator.tsx +0 -94
  50. package/src/components/InfiniteTable/components/CheckBox.css.ts +0 -13
  51. package/src/components/InfiniteTable/components/CheckBox.tsx +0 -96
  52. package/src/components/InfiniteTable/components/FilterEditors.tsx +0 -52
  53. package/src/components/InfiniteTable/components/InfiniteTableBody/InfiniteTableBody.tsx +0 -27
  54. package/src/components/InfiniteTable/components/InfiniteTableBody/index.tsx +0 -1
  55. package/src/components/InfiniteTable/components/InfiniteTableFooter/InfiniteTableFooter.tsx +0 -31
  56. package/src/components/InfiniteTable/components/InfiniteTableFooter/index.tsx +0 -1
  57. package/src/components/InfiniteTable/components/InfiniteTableHeader/InfiniteTableColumnHeaderFilter.tsx +0 -102
  58. package/src/components/InfiniteTable/components/InfiniteTableHeader/InfiniteTableHeader.tsx +0 -163
  59. package/src/components/InfiniteTable/components/InfiniteTableHeader/InfiniteTableHeaderCell.tsx +0 -574
  60. package/src/components/InfiniteTable/components/InfiniteTableHeader/InfiniteTableHeaderGroup.tsx +0 -79
  61. package/src/components/InfiniteTable/components/InfiniteTableHeader/InfiniteTableHeaderTypes.tsx +0 -25
  62. package/src/components/InfiniteTable/components/InfiniteTableHeader/InfiniteTableHeaderWrapper.tsx +0 -185
  63. package/src/components/InfiniteTable/components/InfiniteTableHeader/ResizeHandle/GroupResizeHandle.tsx +0 -159
  64. package/src/components/InfiniteTable/components/InfiniteTableHeader/ResizeHandle/ResizeHandle.css.ts +0 -124
  65. package/src/components/InfiniteTable/components/InfiniteTableHeader/ResizeHandle/columnResizer.ts +0 -166
  66. package/src/components/InfiniteTable/components/InfiniteTableHeader/ResizeHandle/index.tsx +0 -146
  67. package/src/components/InfiniteTable/components/InfiniteTableHeader/buildColumnAndGroupTree.ts +0 -240
  68. package/src/components/InfiniteTable/components/InfiniteTableHeader/header.css.ts +0 -358
  69. package/src/components/InfiniteTable/components/InfiniteTableHeader/index.tsx +0 -1
  70. package/src/components/InfiniteTable/components/InfiniteTableHeader/useColumnGroupResizeHandle.tsx +0 -114
  71. package/src/components/InfiniteTable/components/InfiniteTableHeader/useColumnResizeHandle.tsx +0 -146
  72. package/src/components/InfiniteTable/components/InfiniteTableLicenseFooter/footer.css.ts +0 -7
  73. package/src/components/InfiniteTable/components/InfiniteTableLicenseFooter/index.tsx +0 -110
  74. package/src/components/InfiniteTable/components/InfiniteTableRow/InfiniteTableCell.tsx +0 -120
  75. package/src/components/InfiniteTable/components/InfiniteTableRow/InfiniteTableCellTypes.ts +0 -74
  76. package/src/components/InfiniteTable/components/InfiniteTableRow/InfiniteTableColumnCell.tsx +0 -457
  77. package/src/components/InfiniteTable/components/InfiniteTableRow/InfiniteTableRow.tsx +0 -107
  78. package/src/components/InfiniteTable/components/InfiniteTableRow/InfiniteTableRowClassName.ts +0 -6
  79. package/src/components/InfiniteTable/components/InfiniteTableRow/InfiniteTableRowTypes.ts +0 -32
  80. package/src/components/InfiniteTable/components/InfiniteTableRow/InfiniteTableRowUnvirtualized.tsx +0 -75
  81. package/src/components/InfiniteTable/components/InfiniteTableRow/columnRendering.tsx +0 -263
  82. package/src/components/InfiniteTable/components/InfiniteTableRow/index.tsx +0 -1
  83. package/src/components/InfiniteTable/components/InfiniteTableRow/row.css.ts +0 -74
  84. package/src/components/InfiniteTable/components/InfiniteTableRow/useRowDOMProps.ts +0 -199
  85. package/src/components/InfiniteTable/components/LoadMask.css.ts +0 -34
  86. package/src/components/InfiniteTable/components/LoadMask.tsx +0 -27
  87. package/src/components/InfiniteTable/components/ScrollbarPlaceholder.tsx +0 -56
  88. package/src/components/InfiniteTable/components/cell.css.ts +0 -192
  89. package/src/components/InfiniteTable/components/icons/ArrowDown.tsx +0 -14
  90. package/src/components/InfiniteTable/components/icons/ArrowUp.tsx +0 -14
  91. package/src/components/InfiniteTable/components/icons/ExpanderIcon.css.ts +0 -31
  92. package/src/components/InfiniteTable/components/icons/ExpanderIcon.tsx +0 -63
  93. package/src/components/InfiniteTable/components/icons/Icon.tsx +0 -18
  94. package/src/components/InfiniteTable/components/icons/InfiniteTableIconClassName.ts +0 -1
  95. package/src/components/InfiniteTable/components/icons/LoadingIcon.css.ts +0 -8
  96. package/src/components/InfiniteTable/components/icons/LoadingIcon.tsx +0 -45
  97. package/src/components/InfiniteTable/components/icons/MenuIcon.tsx +0 -50
  98. package/src/components/InfiniteTable/components/icons/SortIcon.tsx +0 -113
  99. package/src/components/InfiniteTable/eventHandlers/eventHandlerTypes.ts +0 -57
  100. package/src/components/InfiniteTable/eventHandlers/index.ts +0 -95
  101. package/src/components/InfiniteTable/eventHandlers/keyboardNavigation.ts +0 -232
  102. package/src/components/InfiniteTable/eventHandlers/keyboardSelection.ts +0 -110
  103. package/src/components/InfiniteTable/eventHandlers/onCellClick.ts +0 -94
  104. package/src/components/InfiniteTable/eventHandlers/onKeyDown.ts +0 -25
  105. package/src/components/InfiniteTable/hooks/adjustColumnOrderForAllColumns.ts +0 -70
  106. package/src/components/InfiniteTable/hooks/reorderColumnsOnDrag.ts +0 -476
  107. package/src/components/InfiniteTable/hooks/useAutoSizeColumns.ts +0 -206
  108. package/src/components/InfiniteTable/hooks/useCellClassName.ts +0 -80
  109. package/src/components/InfiniteTable/hooks/useCellRendering.tsx +0 -217
  110. package/src/components/InfiniteTable/hooks/useColumnGroups.ts +0 -71
  111. package/src/components/InfiniteTable/hooks/useColumnMenu.ts +0 -72
  112. package/src/components/InfiniteTable/hooks/useColumnPointerEvents.ts +0 -258
  113. package/src/components/InfiniteTable/hooks/useColumnRowspan.ts +0 -43
  114. package/src/components/InfiniteTable/hooks/useColumnSizeFn.ts +0 -24
  115. package/src/components/InfiniteTable/hooks/useColumnsWhen.ts +0 -582
  116. package/src/components/InfiniteTable/hooks/useComputed.ts +0 -186
  117. package/src/components/InfiniteTable/hooks/useComputedVisibleColumns.ts +0 -219
  118. package/src/components/InfiniteTable/hooks/useDOMProps.ts +0 -306
  119. package/src/components/InfiniteTable/hooks/useEffectWithRaf.ts +0 -47
  120. package/src/components/InfiniteTable/hooks/useInfiniteTable.ts +0 -10
  121. package/src/components/InfiniteTable/hooks/useInfiniteTableState.ts +0 -11
  122. package/src/components/InfiniteTable/hooks/useInternalProps.ts +0 -8
  123. package/src/components/InfiniteTable/hooks/useLicense/LicenseDetails.ts +0 -13
  124. package/src/components/InfiniteTable/hooks/useLicense/crc32.ts +0 -56
  125. package/src/components/InfiniteTable/hooks/useLicense/decode.ts +0 -147
  126. package/src/components/InfiniteTable/hooks/useLicense/useLicense.ts +0 -39
  127. package/src/components/InfiniteTable/hooks/useRerenderOnKeyChange.ts +0 -21
  128. package/src/components/InfiniteTable/hooks/useRowHover.ts +0 -18
  129. package/src/components/InfiniteTable/hooks/useScrollToActiveCell.ts +0 -48
  130. package/src/components/InfiniteTable/hooks/useScrollToActiveRow.ts +0 -44
  131. package/src/components/InfiniteTable/hooks/useScrollbars.ts +0 -51
  132. package/src/components/InfiniteTable/hooks/useToggleGroupRow.ts +0 -56
  133. package/src/components/InfiniteTable/hooks/useUnpinnedRendering.tsx +0 -165
  134. package/src/components/InfiniteTable/hooks/useYourBrain.ts +0 -55
  135. package/src/components/InfiniteTable/index.tsx +0 -352
  136. package/src/components/InfiniteTable/internalProps.ts +0 -4
  137. package/src/components/InfiniteTable/state/computeColumnGroupsDepths.ts +0 -29
  138. package/src/components/InfiniteTable/state/getColumnVisibilityForHideEmptyGroupColumns.ts +0 -127
  139. package/src/components/InfiniteTable/state/getInitialState.ts +0 -375
  140. package/src/components/InfiniteTable/theme.css.ts +0 -556
  141. package/src/components/InfiniteTable/types/InfiniteTableAction.ts +0 -6
  142. package/src/components/InfiniteTable/types/InfiniteTableActionType.ts +0 -12
  143. package/src/components/InfiniteTable/types/InfiniteTableColumn.ts +0 -478
  144. package/src/components/InfiniteTable/types/InfiniteTableComputedValues.ts +0 -43
  145. package/src/components/InfiniteTable/types/InfiniteTableContextValue.ts +0 -12
  146. package/src/components/InfiniteTable/types/InfiniteTableInternalProps.ts +0 -3
  147. package/src/components/InfiniteTable/types/InfiniteTableProps.ts +0 -511
  148. package/src/components/InfiniteTable/types/InfiniteTableState.ts +0 -195
  149. package/src/components/InfiniteTable/types/Utility.ts +0 -35
  150. package/src/components/InfiniteTable/types/index.ts +0 -96
  151. package/src/components/InfiniteTable/utilities.css.ts +0 -179
  152. package/src/components/InfiniteTable/utils/MultiRowSelector.ts +0 -111
  153. package/src/components/InfiniteTable/utils/RenderHookComponentForInfinite.tsx +0 -52
  154. package/src/components/InfiniteTable/utils/adjustColumnOrderForPinning.ts +0 -33
  155. package/src/components/InfiniteTable/utils/assignFiltered.ts +0 -29
  156. package/src/components/InfiniteTable/utils/defaultGetColumContextMenuItems.tsx +0 -108
  157. package/src/components/InfiniteTable/utils/getColumnComputedType.ts +0 -33
  158. package/src/components/InfiniteTable/utils/getColumnForGroupBy.tsx +0 -313
  159. package/src/components/InfiniteTable/utils/getComputedVisibleColumns.ts +0 -773
  160. package/src/components/InfiniteTable/utils/getContextMenuForColumn.tsx +0 -72
  161. package/src/components/InfiniteTable/utils/infiniteDOMUtils.ts +0 -189
  162. package/src/components/InfiniteTable/utils/mapToObject.ts +0 -20
  163. package/src/components/InfiniteTable/utils/moveXatY.ts +0 -25
  164. package/src/components/InfiniteTable/utils/objectValuesExcept.ts +0 -9
  165. package/src/components/InfiniteTable/utils/progressiveSpeedScroller.ts +0 -158
  166. package/src/components/InfiniteTable/utils/rafFn.ts +0 -13
  167. package/src/components/InfiniteTable/utils/toCSSVarName.ts +0 -1
  168. package/src/components/InfiniteTable/utils/toMap.ts +0 -24
  169. package/src/components/Menu/Menu.tsx +0 -750
  170. package/src/components/Menu/MenuCls.css.ts +0 -139
  171. package/src/components/Menu/MenuContext.ts +0 -10
  172. package/src/components/Menu/MenuContextValue.ts +0 -15
  173. package/src/components/Menu/MenuProps.ts +0 -98
  174. package/src/components/Menu/MenuState.ts +0 -56
  175. package/src/components/Menu/MenuTriangleContext.ts +0 -352
  176. package/src/components/Menu/childrenToRuntimeItems.tsx +0 -103
  177. package/src/components/Menu/getMenuState.tsx +0 -119
  178. package/src/components/Menu/index.tsx +0 -88
  179. package/src/components/Menu/propToIdentifyMenu.ts +0 -1
  180. package/src/components/RawList/AvoidReactDiff.tsx +0 -48
  181. package/src/components/RawList/MappedItems.ts +0 -143
  182. package/src/components/RawList/ReactVirtualRenderer.tsx +0 -307
  183. package/src/components/RawList/index.tsx +0 -42
  184. package/src/components/RawList/types.ts +0 -23
  185. package/src/components/RawList/useVirtualRenderer.ts +0 -36
  186. package/src/components/RenderHookComponent.tsx +0 -10
  187. package/src/components/ResizeObserver/index.tsx +0 -170
  188. package/src/components/VirtualBrain/MatrixBrain.ts +0 -1621
  189. package/src/components/VirtualBrain/ScrollListener.ts +0 -39
  190. package/src/components/VirtualBrain/index.ts +0 -664
  191. package/src/components/VirtualList/ColumnListWithExternalScrolling.tsx +0 -78
  192. package/src/components/VirtualList/InfiniteListRootClassName.ts +0 -1
  193. package/src/components/VirtualList/RowListWithExternalScrolling.tsx +0 -120
  194. package/src/components/VirtualList/SpacePlaceholder.tsx +0 -32
  195. package/src/components/VirtualList/VirtualList.css.ts +0 -29
  196. package/src/components/VirtualList/VirtualList.tsx +0 -141
  197. package/src/components/VirtualList/VirtualRowList.tsx +0 -34
  198. package/src/components/VirtualList/types.ts +0 -56
  199. package/src/components/VirtualList/useCorrectHeightForRowElements.ts +0 -14
  200. package/src/components/VirtualScrollContainer/VirtualScrollContainer.css.ts +0 -51
  201. package/src/components/VirtualScrollContainer/getScrollableClassName.ts +0 -30
  202. package/src/components/VirtualScrollContainer/index.tsx +0 -63
  203. package/src/components/flexbox/index.ts +0 -562
  204. package/src/components/hooks/useComponentState/index.tsx +0 -562
  205. package/src/components/hooks/useComponentState/types.ts +0 -32
  206. package/src/components/hooks/useEffectOnceWithProperUnmount.ts +0 -33
  207. package/src/components/hooks/useEffectWithChanges.ts +0 -56
  208. package/src/components/hooks/useImmutableRef.ts +0 -7
  209. package/src/components/hooks/useInterceptedMap.ts +0 -71
  210. package/src/components/hooks/useLatest.tsx +0 -8
  211. package/src/components/hooks/useLazyLatest.ts +0 -23
  212. package/src/components/hooks/useMemoShallowObjectMerge.ts +0 -16
  213. package/src/components/hooks/useMounted.ts +0 -18
  214. package/src/components/hooks/useOnMount.ts +0 -21
  215. package/src/components/hooks/useOnScroll.ts +0 -34
  216. package/src/components/hooks/useOnce.ts +0 -10
  217. package/src/components/hooks/useOverlay/index.tsx +0 -418
  218. package/src/components/hooks/usePrevious.ts +0 -8
  219. package/src/components/hooks/usePropertyOld.ts +0 -168
  220. package/src/components/hooks/useRerender.ts +0 -12
  221. package/src/components/hooks/xuseProperty.ts +0 -165
  222. package/src/components/types/CellPosition.ts +0 -4
  223. package/src/components/types/NonUndefined.ts +0 -1
  224. package/src/components/types/RemoveObject.ts +0 -22
  225. package/src/components/types/Renderable.ts +0 -3
  226. package/src/components/types/ScrollPosition.ts +0 -7
  227. package/src/components/types/Setter.ts +0 -2
  228. package/src/components/types/Size.ts +0 -6
  229. package/src/components/types/SubscriptionCallback.ts +0 -10
  230. package/src/components/types/VoidFn.ts +0 -1
  231. package/src/components/utils/buildSubscriptionCallback.tsx +0 -60
  232. package/src/components/utils/clamp.ts +0 -3
  233. package/src/components/utils/debounce.ts +0 -16
  234. package/src/components/utils/decamelize.ts +0 -11
  235. package/src/components/utils/discardCallsWithEqualArg.ts +0 -42
  236. package/src/components/utils/getRenderIndexes.ts +0 -33
  237. package/src/components/utils/getScrollbarWidth.ts +0 -31
  238. package/src/components/utils/getVirtualRenderCount.ts +0 -21
  239. package/src/components/utils/isControlled.ts +0 -12
  240. package/src/components/utils/isControlledValue.ts +0 -5
  241. package/src/index.tsx +0 -34
  242. package/src/test.tsx +0 -18
  243. package/src/utils/DeepMap/index.ts +0 -588
  244. package/src/utils/DeepMap/once.ts +0 -16
  245. package/src/utils/DeepMap/sortAscending.ts +0 -1
  246. package/src/utils/DeepMap/tsconfig.deepmap.json +0 -17
  247. package/src/utils/DeepMap/xpackage.json +0 -26
  248. package/src/utils/debug.ts +0 -40
  249. package/src/utils/deepClone.ts +0 -38
  250. package/src/utils/getGlobal.ts +0 -3
  251. package/src/utils/groupAndPivot/defaultToKey.ts +0 -3
  252. package/src/utils/groupAndPivot/getGroupKeysForDataItem.ts +0 -19
  253. package/src/utils/groupAndPivot/getPivotColumnsAndColumnGroups.ts +0 -361
  254. package/src/utils/groupAndPivot/index.ts +0 -1229
  255. package/src/utils/groupAndPivot/types.ts +0 -10
  256. package/src/utils/join.ts +0 -4
  257. package/src/utils/mathIntersection.ts +0 -21
  258. package/src/utils/minified.d.ts +0 -2
  259. package/src/utils/minified.js +0 -6
  260. package/src/utils/multisort/index.ts +0 -151
  261. package/src/utils/multisort/sortTypes.ts +0 -25
  262. package/src/utils/notes-status.md +0 -92
  263. package/src/utils/pageGeometry/ConvexPoly.ts +0 -34
  264. package/src/utils/pageGeometry/Point.ts +0 -51
  265. package/src/utils/pageGeometry/PolyWithPoints.ts +0 -52
  266. package/src/utils/pageGeometry/Rectangle.ts +0 -98
  267. package/src/utils/pageGeometry/Triangle.ts +0 -16
  268. package/src/utils/pageGeometry/alignment/index.ts +0 -221
  269. package/src/utils/pageGeometry/polyContainsPoint.ts +0 -182
  270. package/src/utils/pageGeometry/types.ts +0 -3
  271. package/src/utils/proxyFnCall.ts +0 -46
  272. package/src/utils/raf.ts +0 -13
  273. package/src/utils/selectParent.ts +0 -18
  274. package/src/utils/shallowEqualObjects.ts +0 -49
  275. package/src/utils/stripVar.ts +0 -3
  276. package/src/utils/toUpperFirst.ts +0 -5
  277. package/todo.md +0 -2
  278. package/tsconfig.build.json +0 -8
  279. package/tsconfig.dev.json +0 -7
  280. package/tsconfig.json +0 -30
  281. package/tsconfig.typebundler.json +0 -13
  282. package/typedoc.json +0 -4
@@ -1,146 +0,0 @@
1
- import { PointerEvent, useRef, useState } from 'react';
2
- import * as React from 'react';
3
- import { FlexComputeResizeResult } from '../../../../flexbox';
4
- import { internalProps } from '../../../internalProps';
5
- import { InfiniteTableComputedColumn } from '../../../types';
6
-
7
- import { getColumnResizer } from './columnResizer';
8
- import {
9
- ResizeHandleCls,
10
- ResizeHandleDraggerClsRecipe,
11
- ResizeHandleRecipeCls,
12
- } from './ResizeHandle.css';
13
-
14
- type ResizeHandleProps<T> = {
15
- columnIndex: number;
16
- columns: InfiniteTableComputedColumn<T>[];
17
-
18
- computeResize: ({
19
- diff,
20
- shareSpaceOnResize,
21
- }: {
22
- diff: number;
23
- shareSpaceOnResize: boolean;
24
- }) => FlexComputeResizeResult;
25
-
26
- onResize: ({
27
- diff,
28
- shareSpaceOnResize,
29
- }: {
30
- diff: number;
31
- shareSpaceOnResize: boolean;
32
- }) => void;
33
- };
34
-
35
- const { rootClassName } = internalProps;
36
-
37
- /**
38
- * For the resize handle for column groups, see GroupResizeHandle.tsx
39
- */
40
-
41
- export const InfiniteTableHeaderCellResizeHandleCls = `${rootClassName}HeaderCell_ResizeHandle`;
42
-
43
- function ResizeHandleFn<T>(props: ResizeHandleProps<T>) {
44
- const domRef = useRef<HTMLDivElement>(null);
45
- const [constrained, setConstrained] = useState(false);
46
- const constrainedRef = useRef<boolean>(constrained);
47
- constrainedRef.current = constrained;
48
-
49
- const col = props.columns[props.columnIndex];
50
-
51
- if (!col) {
52
- return null;
53
- }
54
- const computedPinned = col.computedPinned;
55
- const computedFirstInCategory = col.computedFirstInCategory;
56
- const computedLastInCategory = col.computedLastInCategory;
57
-
58
- const onPointerDown = (e: PointerEvent) => {
59
- e.stopPropagation();
60
-
61
- const shareSpaceOnResize = !!e.shiftKey;
62
- const pointerId = e.pointerId;
63
- const initialX = e.clientX;
64
- const target = e.target as HTMLElement;
65
-
66
- target.setPointerCapture(pointerId);
67
-
68
- const resizer = getColumnResizer(props.columnIndex, {
69
- columns: props.columns,
70
- shareSpaceOnResize,
71
- domRef,
72
- });
73
-
74
- const resizeDiff = (diff: number) => {
75
- if (computedPinned === 'end') {
76
- diff *= -1;
77
- }
78
- const { adjustedDiff, constrained } = props.computeResize({
79
- diff,
80
- shareSpaceOnResize,
81
- });
82
-
83
- if (constrainedRef.current !== constrained) {
84
- setConstrained(constrained);
85
- }
86
-
87
- resizer.resize(adjustedDiff);
88
-
89
- return adjustedDiff;
90
- };
91
-
92
- const onPointerMove = (e: PointerEvent) => {
93
- resizeDiff(Math.round(e.clientX - initialX));
94
- };
95
-
96
- const onPointerUp = (e: PointerEvent) => {
97
- target.releasePointerCapture(pointerId);
98
-
99
- //@ts-ignore
100
- target.removeEventListener('pointermove', onPointerMove);
101
- //@ts-ignore
102
- target.removeEventListener('pointerup', onPointerUp);
103
-
104
- const diff = Math.round(e.clientX - initialX);
105
- const adjustedDiff = resizeDiff(diff);
106
-
107
- props.onResize({ diff: adjustedDiff, shareSpaceOnResize });
108
- };
109
-
110
- //@ts-ignore
111
- target.addEventListener('pointermove', onPointerMove);
112
- //@ts-ignore
113
- target.addEventListener('pointerup', onPointerUp);
114
- };
115
-
116
- const style =
117
- (computedPinned === false || computedPinned === 'start') &&
118
- computedLastInCategory
119
- ? {
120
- right: computedPinned === 'start' ? 0 : 0, //ThemeVars.components.HeaderCell.resizeHandleWidth,
121
- }
122
- : computedPinned === 'end' && computedFirstInCategory
123
- ? { right: 'none', left: 0 }
124
- : undefined;
125
- return (
126
- <div
127
- ref={domRef}
128
- className={`${InfiniteTableHeaderCellResizeHandleCls} ${ResizeHandleCls} ${ResizeHandleRecipeCls(
129
- {
130
- computedPinned,
131
- computedFirstInCategory,
132
- computedLastInCategory,
133
- },
134
- )}`}
135
- onPointerDown={onPointerDown}
136
- >
137
- <div
138
- style={style}
139
- className={ResizeHandleDraggerClsRecipe({
140
- constrained,
141
- })}
142
- />
143
- </div>
144
- );
145
- }
146
- export const ResizeHandle = React.memo(ResizeHandleFn) as typeof ResizeHandleFn;
@@ -1,240 +0,0 @@
1
- import { DeepMap } from '../../../../utils/DeepMap';
2
- import {
3
- InfiniteTableColumnGroup,
4
- InfiniteTableComputedColumn,
5
- InfiniteTableState,
6
- } from '../../types';
7
- import { InfiniteTableColumnPinnedValues } from '../../types/InfiniteTableProps';
8
-
9
- export type ColGroupTreeBaseItem = {
10
- id: string;
11
- groupOffset: number;
12
- depth: number;
13
- computedPinned: InfiniteTableColumnPinnedValues;
14
- computedWidth: number;
15
- };
16
- export type ColGroupTreeColumnItem<T> = ColGroupTreeBaseItem & {
17
- type: 'column';
18
- ref: InfiniteTableComputedColumn<T>;
19
- };
20
-
21
- export type ColGroupTreeGroupItem<T> = ColGroupTreeBaseItem & {
22
- type: 'group';
23
- ref: InfiniteTableColumnGroup;
24
-
25
- uniqueGroupId: string[];
26
-
27
- children: ColGroupTreeItem<T>[];
28
- columnItems: ColGroupTreeColumnItem<T>[];
29
- };
30
- export type ColGroupTreeItem<T> =
31
- | ColGroupTreeColumnItem<T>
32
- | ColGroupTreeGroupItem<T>;
33
-
34
- /*
35
- * -----------------------------------------------------------------------------------------------
36
- * | ADDRESS | | A D D R E S S | contact info |
37
- * |_______________________| |_______________________________________|_________________|
38
- * | street | LOCATION| | street | LOCATION | |
39
- * |_____________|_________|___________|_______________________|_______________| |
40
- * | streetNo | city | firstName | streetName |country|region | email | phone |
41
- *
42
- */
43
-
44
- export type ColumnAndGroupTreeInfo<T> = {
45
- tree: ColGroupTreeItem<T>[];
46
- pathsToCells: DeepMap<number, ColGroupTreeItem<T>>;
47
- };
48
-
49
- export function buildColumnAndGroupTree<T>(
50
- columns: InfiniteTableComputedColumn<T>[],
51
- columnGroups: InfiniteTableState<T>['columnGroups'],
52
- columnGroupsDepthsMap: InfiniteTableState<T>['columnGroupsDepthsMap'],
53
- columnGroupsMaxDepth: number,
54
-
55
- /**
56
- * The returned pathsToCells is a deepmap that maps cells to their corresponding treeitem,
57
- * namely, it answers the question - for cell at [2,3] - third row, forth col,
58
- * which is my tree item?
59
- *
60
- * For example, in the above drawing, [0,1] we have the ADDRESS tree item
61
- * For example, in the above drawing, at [1,1] we have the LOCATION tree item
62
- */
63
- ): ColumnAndGroupTreeInfo<T> {
64
- /*
65
- * this is basically a tree with multiple top-level nodes
66
- * and we return the top-level nodes in the tree (we consider the table above to be a tree,
67
- * with first row items being the top-level nodes)
68
- *
69
- * this map contains columns or groups.
70
- *
71
- * the keys for columns are arrays with single elements, the column id
72
- * the keys for groups are arrays with the path from the first column in the group
73
- * all the way up to the group itself:
74
- * - eg, for first ADDRESS group above, the key will be : ['streetNo','street','address']
75
- * - eg, for the second ADDRESS group above, the key will be : ['streetName','street','address']
76
- *
77
- */
78
- const map: Map<string[], ColGroupTreeItem<T>> = new Map();
79
-
80
- /*
81
- *
82
- * We'll also need a temporary map of groups/cols items, where groups will be keyed
83
- * only by a single string, the group id
84
- *
85
- * eg: we need that, as for example when we reach (city=>location=>address) group, we need access to the
86
- * address group previously created by streetNo=>street=>address
87
- *
88
- */
89
- const temporaryMap: Map<string, ColGroupTreeItem<T>> = new Map();
90
-
91
- // this will contain all parent groups for a column:
92
- // eg: for streetNo, it will contain: street, address
93
- // eg: for city, it will contain: location, address
94
-
95
- const mapOfAllParentGroupsForColumns: Map<string, Set<string>> = new Map();
96
-
97
- columns.forEach((col, index) => {
98
- const colId = col.id;
99
- const previousColumn = columns[index - 1];
100
- const previousColumnId = previousColumn?.id ?? '';
101
-
102
- const parentGroups = new Set<string>();
103
-
104
- const parentGroupsOfPreviousColumn =
105
- previousColumn?.computedPinned !== col.computedPinned
106
- ? new Set()
107
- : mapOfAllParentGroupsForColumns.get(previousColumnId) ?? new Set();
108
-
109
- mapOfAllParentGroupsForColumns.set(colId, parentGroups);
110
-
111
- const colItem: ColGroupTreeColumnItem<T> = {
112
- type: 'column',
113
- id: colId,
114
- ref: col,
115
- groupOffset: 0,
116
- computedPinned: col.computedPinned,
117
- computedWidth: col.computedWidth,
118
- depth: col.columnGroup
119
- ? (columnGroupsDepthsMap.get(col.columnGroup) ?? 0) + 1
120
- : 0,
121
- };
122
-
123
- map.set([colId], colItem);
124
-
125
- let groupId = col.columnGroup;
126
- let colGroupItem: ColGroupTreeGroupItem<T> | undefined;
127
- let prevGroupItem: ColGroupTreeItem<T> | undefined = colItem;
128
-
129
- while (groupId) {
130
- const colGroup = columnGroups.get(groupId);
131
-
132
- if (colGroup) {
133
- parentGroups.add(groupId);
134
-
135
- const groupAbsoluteId = [colId, ...parentGroups];
136
-
137
- colGroupItem = parentGroupsOfPreviousColumn.has(groupId)
138
- ? (temporaryMap.get(groupId) as ColGroupTreeGroupItem<T> | undefined)
139
- : undefined;
140
-
141
- if (!colGroupItem) {
142
- colGroupItem = {
143
- id: groupId,
144
- type: 'group',
145
- ref: colGroup,
146
- columnItems: [],
147
- children: [],
148
- groupOffset: 0,
149
- uniqueGroupId: [groupId],
150
- computedWidth: 0,
151
- computedPinned: colItem.computedPinned,
152
- depth: columnGroupsDepthsMap.get(groupId) ?? 0,
153
- };
154
- map.set(groupAbsoluteId, colGroupItem);
155
- temporaryMap.set(groupId, colGroupItem);
156
- }
157
-
158
- colGroupItem.columnItems.push(colItem);
159
- colGroupItem.uniqueGroupId.push(colItem.id);
160
-
161
- if (
162
- prevGroupItem &&
163
- !parentGroupsOfPreviousColumn.has(prevGroupItem.id)
164
- ) {
165
- colGroupItem.children.push(prevGroupItem);
166
- }
167
-
168
- prevGroupItem = colGroupItem;
169
-
170
- groupId = colGroup.columnGroup;
171
- } else {
172
- break;
173
- }
174
- }
175
- });
176
-
177
- const result: ColGroupTreeItem<T>[] = [];
178
- const pathsToCells: DeepMap<number, ColGroupTreeItem<T>> = new DeepMap();
179
-
180
- let groupOffset = 0;
181
-
182
- // get the root nodes from the tree
183
- // - the root nodes are the nodes without a parent column group
184
- map.forEach((item) => {
185
- if (!item.ref.columnGroup) {
186
- const itemWidth =
187
- item.type === 'column'
188
- ? item.ref.computedWidth
189
- : item.columnItems.reduce(
190
- (sum, col) => sum + col.ref.computedWidth,
191
- 0,
192
- );
193
-
194
- item.groupOffset = groupOffset;
195
- item.computedWidth = itemWidth;
196
-
197
- if (item.type === 'group') {
198
- assignGroupOffsetsAndComputedWidths(item.children);
199
- }
200
- result.push(item);
201
-
202
- groupOffset += itemWidth;
203
- }
204
-
205
- if (item.type === 'group') {
206
- item.columnItems.forEach((colItem) => {
207
- pathsToCells.set([item.depth, colItem.ref.computedVisibleIndex], item);
208
- });
209
- } else {
210
- for (let i = item.depth; i <= columnGroupsMaxDepth + 1; i++) {
211
- pathsToCells.set([i, item.ref.computedVisibleIndex], item);
212
- }
213
- }
214
- });
215
-
216
- map.clear();
217
- temporaryMap.clear();
218
-
219
- return { tree: result, pathsToCells };
220
- }
221
-
222
- function assignGroupOffsetsAndComputedWidths<T>(
223
- items: ColGroupTreeItem<T>[],
224
- groupOffset = 0,
225
- ) {
226
- items.forEach((item) => {
227
- const itemWidth =
228
- item.type === 'column'
229
- ? item.ref.computedWidth
230
- : item.columnItems.reduce((sum, col) => sum + col.ref.computedWidth, 0);
231
-
232
- item.computedWidth = itemWidth;
233
- item.groupOffset = groupOffset;
234
- if (item.type === 'group') {
235
- assignGroupOffsetsAndComputedWidths(item.children);
236
- }
237
-
238
- groupOffset += itemWidth;
239
- });
240
- }