@infinite-table/infinite-react 0.5.0 → 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 +9 -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,185 +0,0 @@
1
- import * as React from 'react';
2
-
3
- import type { Scrollbars } from '../..';
4
- import { useMatrixBrain } from '../../../HeadlessTable';
5
- import { getScrollbarWidth } from '../../../utils/getScrollbarWidth';
6
- import { MatrixBrain } from '../../../VirtualBrain/MatrixBrain';
7
- import { useInfiniteTable } from '../../hooks/useInfiniteTable';
8
-
9
- import { buildColumnAndGroupTree } from './buildColumnAndGroupTree';
10
- import { HeaderScrollbarPlaceholderCls, HeaderWrapperCls } from './header.css';
11
- import { InfiniteTableHeader } from './InfiniteTableHeader';
12
-
13
- export type TableHeaderWrapperProps = {
14
- headerBrain: MatrixBrain;
15
- bodyBrain: MatrixBrain;
16
- scrollbars: Scrollbars;
17
- };
18
- export function TableHeaderWrapper<T>(props: TableHeaderWrapperProps) {
19
- const { headerBrain, bodyBrain, scrollbars } = props;
20
-
21
- const tableContextValue = useInfiniteTable<T>();
22
-
23
- const {
24
- computedPinnedStartColumns,
25
- computedPinnedEndColumns,
26
- computedVisibleColumns,
27
- columnSize,
28
- showColumnFilters,
29
- } = tableContextValue.computed;
30
-
31
- const {
32
- componentState: {
33
- columnHeaderHeight,
34
- columnGroupsDepthsMap,
35
- columnGroupsMaxDepth,
36
- computedColumnGroups,
37
- },
38
- } = tableContextValue;
39
-
40
- const rows =
41
- !computedColumnGroups || !computedColumnGroups.size
42
- ? 1
43
- : columnGroupsMaxDepth + 2;
44
-
45
- const height =
46
- rows * columnHeaderHeight + (showColumnFilters ? columnHeaderHeight : 0);
47
- // console.log({
48
- // columnGroupsMaxDepth,
49
- // computedColumnGroups,
50
- // rows,
51
- // columnHeaderHeight,
52
- // });
53
-
54
- const columnAndGroupTreeInfo = React.useMemo(() => {
55
- if (!computedColumnGroups || !computedColumnGroups.size) {
56
- return undefined;
57
- }
58
-
59
- return buildColumnAndGroupTree(
60
- computedVisibleColumns,
61
- computedColumnGroups,
62
- columnGroupsDepthsMap,
63
- columnGroupsMaxDepth,
64
- );
65
- }, [computedVisibleColumns, computedColumnGroups, columnGroupsDepthsMap]);
66
-
67
- const cellspan = React.useCallback(
68
- ({ rowIndex, colIndex }: { rowIndex: number; colIndex: number }) => {
69
- const column = computedVisibleColumns[colIndex];
70
-
71
- const rowspan = 1;
72
- const colspan = 1;
73
- if (!column || !columnAndGroupTreeInfo) {
74
- return { rowspan, colspan };
75
- }
76
-
77
- const treeItem = columnAndGroupTreeInfo.pathsToCells.get([
78
- rowIndex,
79
- colIndex,
80
- ]);
81
-
82
- if (!treeItem) {
83
- return { rowspan, colspan };
84
- }
85
- if (treeItem.type === 'column') {
86
- return {
87
- colspan,
88
- rowspan: rows - treeItem.depth,
89
- };
90
- }
91
-
92
- const index = treeItem.columnItems.findIndex(
93
- (child) => child.id === column.id,
94
- );
95
-
96
- return {
97
- rowspan,
98
- colspan: index === 0 ? treeItem.columnItems.length : 1,
99
- };
100
- },
101
- [
102
- computedColumnGroups,
103
- columnGroupsMaxDepth,
104
- computedVisibleColumns,
105
- columnAndGroupTreeInfo,
106
- rows,
107
- columnGroupsDepthsMap,
108
- ],
109
- );
110
-
111
- const rowspan = React.useCallback(
112
- ({ rowIndex, colIndex }: { rowIndex: number; colIndex: number }) =>
113
- cellspan({ rowIndex, colIndex }).rowspan,
114
- [cellspan],
115
- );
116
- const colspan = React.useCallback(
117
- ({ rowIndex, colIndex }: { rowIndex: number; colIndex: number }) =>
118
- cellspan({ rowIndex, colIndex }).colspan,
119
- [cellspan],
120
- );
121
-
122
- const rowHeight = React.useCallback(
123
- (index: number) => {
124
- // if we need to show the column filters
125
-
126
- return showColumnFilters
127
- ? index < rows - 1
128
- ? columnHeaderHeight
129
- : 2 * columnHeaderHeight
130
- : columnHeaderHeight;
131
- },
132
- [rows, showColumnFilters, columnHeaderHeight],
133
- );
134
-
135
- useMatrixBrain(
136
- headerBrain,
137
- {
138
- colWidth: columnSize,
139
- rowHeight,
140
- rows,
141
- cols: computedVisibleColumns.length,
142
- height,
143
- rowspan,
144
- colspan,
145
- },
146
- {
147
- fixedColsEnd: computedPinnedEndColumns.length,
148
- fixedColsStart: computedPinnedStartColumns.length,
149
- },
150
- );
151
-
152
- const header = (
153
- <InfiniteTableHeader
154
- columns={computedVisibleColumns}
155
- headerBrain={headerBrain}
156
- bodyBrain={bodyBrain}
157
- columnHeaderHeight={height}
158
- columnGroupsMaxDepth={columnGroupsMaxDepth}
159
- columnAndGroupTreeInfo={columnAndGroupTreeInfo}
160
- />
161
- );
162
-
163
- const verticalScrollbarPlaceholder =
164
- scrollbars.vertical && getScrollbarWidth() ? (
165
- <div
166
- className={HeaderScrollbarPlaceholderCls}
167
- style={{
168
- zIndex: 1000,
169
- width: getScrollbarWidth(),
170
- }}
171
- />
172
- ) : null;
173
-
174
- return (
175
- <div
176
- className={HeaderWrapperCls}
177
- style={{
178
- height: height,
179
- }}
180
- >
181
- {header}
182
- {verticalScrollbarPlaceholder}
183
- </div>
184
- );
185
- }
@@ -1,159 +0,0 @@
1
- import { CSSProperties, PointerEvent, useRef, useState } from 'react';
2
- import * as React from 'react';
3
- import { FlexComputeGroupResizeResult } from '../../../../flexbox';
4
- import { internalProps } from '../../../internalProps';
5
- import { InfiniteTableComputedColumn } from '../../../types';
6
-
7
- import { getColumnGroupResizer } from './columnResizer';
8
- import {
9
- ResizeHandleCls,
10
- ResizeHandleRecipeCls,
11
- ResizeHandleDraggerClsRecipe,
12
- } from './ResizeHandle.css';
13
- import type { MatrixBrain } from '../../../../VirtualBrain/MatrixBrain';
14
- import { ThemeVars } from '../../../theme.css';
15
-
16
- type GroupResizeHandleProps<T> = {
17
- groupColumns: InfiniteTableComputedColumn<T>[];
18
- columns: InfiniteTableComputedColumn<T>[];
19
-
20
- style: CSSProperties;
21
-
22
- brain: MatrixBrain;
23
- computeResize: (diff: number) => FlexComputeGroupResizeResult;
24
-
25
- onResize: (diff: number) => void;
26
- };
27
-
28
- const { rootClassName } = internalProps;
29
-
30
- export const InfiniteTableHeaderCellResizeHandleCls = `${rootClassName}HeaderCell_ResizeHandle`;
31
-
32
- function GroupResizeHandleFn<T>(props: GroupResizeHandleProps<T>) {
33
- const domRef = useRef<HTMLDivElement>(null);
34
- const [constrained, setConstrained] = useState(false);
35
- const constrainedRef = useRef<boolean>(constrained);
36
- constrainedRef.current = constrained;
37
-
38
- const col = props.groupColumns[0];
39
- if (!col) {
40
- return null;
41
- }
42
- const computedPinned = col.computedPinned;
43
- const computedFirstInCategory = col.computedFirstInCategory;
44
- const computedLastInCategory = col.computedLastInCategory;
45
-
46
- const onPointerDown = (e: PointerEvent) => {
47
- e.stopPropagation();
48
-
49
- const pointerId = e.pointerId;
50
- const initialX = e.clientX;
51
- const target = e.target as HTMLElement;
52
-
53
- target.setPointerCapture(pointerId);
54
-
55
- let initialMove = true;
56
-
57
- const resizer = getColumnGroupResizer(
58
- props.groupColumns.map((c) => c.computedVisibleIndex),
59
- {
60
- columns: props.columns,
61
- domRef,
62
- },
63
- );
64
-
65
- const resizeDiff = (diff: number) => {
66
- if (computedPinned === 'end') {
67
- diff *= -1;
68
- }
69
- const { constrained, adjustedDiffs, adjustedDiff } =
70
- props.computeResize(diff);
71
-
72
- if (constrainedRef.current !== constrained) {
73
- setConstrained(constrained);
74
- }
75
-
76
- resizer.resize(adjustedDiffs);
77
-
78
- return adjustedDiff;
79
- };
80
-
81
- const onPointerMove = (e: PointerEvent) => {
82
- if (initialMove) {
83
- // since this group could be dragged so all columns have the minimum width
84
- // and new columns could come into the viewport, which might not be visible yet, and thus are hidden via virtualization
85
- // we need to adjust the available size while dragging to determine the brain to render additional columns
86
-
87
- const maxDiff = props.groupColumns.reduce((diff, col) => {
88
- return diff + col.computedWidth - col.computedMinWidth;
89
- }, 0);
90
- const currentSize = props.brain.getAvailableSize();
91
- const newSize = {
92
- width: currentSize.width + maxDiff,
93
- height: currentSize.height,
94
- };
95
-
96
- props.brain.setAvailableSize(newSize);
97
- initialMove = false;
98
- }
99
-
100
- resizeDiff(Math.round(e.clientX - initialX));
101
- };
102
-
103
- const onPointerUp = (e: PointerEvent) => {
104
- target.releasePointerCapture(pointerId);
105
-
106
- //@ts-ignore
107
- target.removeEventListener('pointermove', onPointerMove);
108
- //@ts-ignore
109
- target.removeEventListener('pointerup', onPointerUp);
110
-
111
- const diff = Math.round(e.clientX - initialX);
112
- const adjustedDiffs = resizeDiff(diff);
113
-
114
- props.onResize(adjustedDiffs);
115
- };
116
-
117
- //@ts-ignore
118
- target.addEventListener('pointermove', onPointerMove);
119
- //@ts-ignore
120
- target.addEventListener('pointerup', onPointerUp);
121
- };
122
-
123
- const style =
124
- (computedPinned === false || computedPinned === 'start') &&
125
- computedLastInCategory
126
- ? {
127
- right:
128
- computedPinned === 'start'
129
- ? 0
130
- : ThemeVars.components.HeaderCell.resizeHandleWidth,
131
- }
132
- : computedPinned === 'end' && computedFirstInCategory
133
- ? { right: 'none', left: 0 }
134
- : undefined;
135
-
136
- return (
137
- <div
138
- ref={domRef}
139
- className={`${InfiniteTableHeaderCellResizeHandleCls} ${ResizeHandleCls} ${ResizeHandleRecipeCls(
140
- {
141
- computedPinned,
142
- computedFirstInCategory,
143
- computedLastInCategory,
144
- },
145
- )}`}
146
- onPointerDown={onPointerDown}
147
- >
148
- <div
149
- style={{ ...style, ...props.style }}
150
- className={ResizeHandleDraggerClsRecipe({
151
- constrained,
152
- })}
153
- />
154
- </div>
155
- );
156
- }
157
- export const GroupResizeHandle = React.memo(
158
- GroupResizeHandleFn,
159
- ) as typeof GroupResizeHandleFn;
@@ -1,124 +0,0 @@
1
- import { style } from '@vanilla-extract/css';
2
- import { recipe } from '@vanilla-extract/recipes';
3
- import { ThemeVars } from '../../../theme.css';
4
-
5
- import {
6
- position,
7
- right,
8
- top,
9
- bottom,
10
- cursor,
11
- left,
12
- overflow,
13
- } from '../../../utilities.css';
14
-
15
- export const ResizeHandleCls = style(
16
- [
17
- position.absolute,
18
- top['0'],
19
- right['0'],
20
- bottom['0'],
21
- cursor.colResize,
22
- overflow.hidden,
23
- {
24
- transform: 'translateX(50%)',
25
- width: ThemeVars.components.HeaderCell.resizeHandleActiveAreaWidth,
26
- selectors: {
27
- '&:hover': {
28
- overflow: 'visible',
29
- },
30
- },
31
- },
32
- ],
33
-
34
- 'ResizeHandleCls',
35
- );
36
-
37
- export const ResizeHandleRecipeCls = recipe({
38
- variants: {
39
- computedPinned: {
40
- start: {},
41
- end: [
42
- left['0'],
43
- right['auto'],
44
- {
45
- transform: 'translateX(-50%)',
46
- },
47
- ],
48
- false: {},
49
- },
50
- computedFirstInCategory: {
51
- true: {},
52
- false: {},
53
- },
54
- computedLastInCategory: {
55
- true: {},
56
- false: {},
57
- },
58
- },
59
- compoundVariants: [
60
- {
61
- variants: {
62
- computedPinned: 'end',
63
- computedLastInCategory: false,
64
- computedFirstInCategory: true,
65
- },
66
- style: {
67
- transform: 'none',
68
- },
69
- },
70
- {
71
- variants: {
72
- computedPinned: false,
73
- computedFirstInCategory: false,
74
- computedLastInCategory: true,
75
- },
76
- style: {
77
- transform: 'none',
78
- },
79
- },
80
- {
81
- variants: {
82
- computedPinned: 'start',
83
- computedFirstInCategory: false,
84
- computedLastInCategory: true,
85
- },
86
- style: {
87
- transform: 'none',
88
- },
89
- },
90
- ],
91
- });
92
-
93
- export const ResizeHandleDraggerClsRecipe = recipe({
94
- base: [
95
- position.absolute,
96
- top['0'],
97
-
98
- bottom['0'],
99
- {
100
- right: `calc((${ThemeVars.components.HeaderCell.resizeHandleActiveAreaWidth} - ${ThemeVars.components.HeaderCell.resizeHandleWidth}) / 2)`,
101
- width: ThemeVars.components.HeaderCell.resizeHandleWidth,
102
- selectors: {
103
- [`${ResizeHandleCls}:hover &`]: {
104
- background:
105
- ThemeVars.components.HeaderCell.resizeHandleHoverBackground,
106
- },
107
- },
108
- },
109
- ],
110
- variants: {
111
- constrained: {
112
- false: {},
113
- true: {
114
- selectors: {
115
- [`${ResizeHandleCls}:hover &`]: {
116
- background:
117
- ThemeVars.components.HeaderCell
118
- .resizeHandleConstrainedHoverBackground,
119
- },
120
- },
121
- },
122
- },
123
- },
124
- });
@@ -1,166 +0,0 @@
1
- import { RefObject } from 'react';
2
-
3
- import { InfiniteTableComputedColumn } from '../../../types';
4
- import {
5
- addToInfiniteColumnOffset,
6
- setInfiniteColumnOffset,
7
- setInfiniteColumnWidth,
8
- } from '../../../utils/infiniteDOMUtils';
9
-
10
- export function getColumnResizer<T>(
11
- colIndex: number,
12
- {
13
- columns,
14
- shareSpaceOnResize,
15
- domRef,
16
- }: {
17
- columns: InfiniteTableComputedColumn<T>[];
18
- shareSpaceOnResize: boolean;
19
- domRef: RefObject<HTMLDivElement>;
20
- },
21
- ) {
22
- const column = columns[colIndex];
23
-
24
- return {
25
- resize(diff: number) {
26
- // set the new width for the current column
27
- setInfiniteColumnWidth(
28
- colIndex,
29
- column.computedWidth + diff,
30
- domRef.current,
31
- );
32
-
33
- const nextColIndex = colIndex + 1;
34
-
35
- if (shareSpaceOnResize) {
36
- // and then manage width and offset for next column
37
- const nextColumn = columns[nextColIndex];
38
- if (!nextColumn) {
39
- return;
40
- }
41
- setInfiniteColumnWidth(
42
- nextColIndex,
43
- nextColumn.computedWidth - diff,
44
- domRef.current,
45
- );
46
-
47
- if (nextColumn.computedPinned === 'start') {
48
- addToInfiniteColumnOffset(nextColumn, diff, domRef.current);
49
- } else {
50
- setInfiniteColumnOffset(
51
- nextColIndex,
52
- nextColumn.computedOffset + diff,
53
- domRef.current,
54
- );
55
- }
56
- return;
57
- }
58
- if (column.computedPinned === 'end') {
59
- // when a pinned end col is resized
60
- // we need to adjust just it's own width
61
- // and no other offsets, since the offsets are computed
62
- // based on the widths of previos pinned end cols
63
- // see #startcoloffsets-pinnedend
64
-
65
- // TODO it would be a great idea to computed offsets for all other columns
66
- // in this way, and we would not need to adjust offsets anymore on resize - just
67
- // adjust column widths
68
- return;
69
- }
70
-
71
- if (column.computedPinned === 'start') {
72
- for (let i = nextColIndex, len = columns.length; i < len; i++) {
73
- const col = columns[i];
74
-
75
- if (col.computedPinned === 'start') {
76
- addToInfiniteColumnOffset(col, diff, domRef.current);
77
- continue;
78
- }
79
- if (col.computedPinned === 'end') {
80
- continue;
81
- }
82
- setInfiniteColumnOffset(i, col.computedOffset + diff, domRef.current);
83
- }
84
- return;
85
- }
86
-
87
- for (let i = nextColIndex, len = columns.length; i < len; i++) {
88
- const col = columns[i];
89
-
90
- if (col.computedPinned) {
91
- continue;
92
- }
93
- setInfiniteColumnOffset(i, col.computedOffset + diff, domRef.current);
94
- }
95
- },
96
- };
97
- }
98
- /**
99
- *
100
- * @param colIndexes An array of indexes for the columns that will be resized
101
- * @param config
102
- * @param config.columns The array of computed visible columns
103
- * @param config.domRef A ref that points to the DOM node of the component.
104
- * @returns The resizer object, with a resize(diffs: number[]) method that should be called when the user moves/drags the resize handle.
105
- */
106
- export function getColumnGroupResizer<T>(
107
- colIndexes: number[],
108
- config: {
109
- columns: InfiniteTableComputedColumn<T>[];
110
- domRef: RefObject<HTMLDivElement>;
111
- },
112
- ) {
113
- const lastColIndex = colIndexes[colIndexes.length - 1];
114
-
115
- return {
116
- /**
117
- * Performs real-time resizing of columns by updating the corresponding
118
- * CSS variables for the corresponding colIndexes.
119
- *
120
- * Note: this resize is transient - so after the resize handle is dropped,
121
- * the table needs to be re-rendered so that the actual widths end up in the component state as well.
122
- *
123
- * @param diffs an array of diffs, one for each column in the colIndexes
124
- */
125
- resize(diffs: number[]) {
126
- const { columns, domRef } = config;
127
- const firstCol = columns[colIndexes[0]];
128
- let offset = firstCol.computedOffset;
129
- let diffSum = 0;
130
-
131
- const node = domRef.current;
132
-
133
- diffs.forEach((diff, i) => {
134
- diffSum += diff;
135
-
136
- const colIndex = colIndexes[i];
137
- const column = columns[colIndex];
138
- const newWidth = column.computedWidth + diff;
139
-
140
- setInfiniteColumnWidth(colIndex, newWidth, node);
141
-
142
- if (column.computedPinned === 'end') {
143
- return;
144
- }
145
-
146
- if (offset) {
147
- setInfiniteColumnOffset(colIndex, offset, node);
148
- }
149
- offset += newWidth;
150
- });
151
-
152
- if (firstCol.computedPinned === 'end') {
153
- return;
154
- }
155
-
156
- for (let i = lastColIndex + 1; i < columns.length; i++) {
157
- const col = columns[i];
158
-
159
- if (col.computedPinned === 'end') {
160
- continue;
161
- }
162
- setInfiniteColumnOffset(i, col.computedOffset + diffSum, node);
163
- }
164
- },
165
- };
166
- }