@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,165 +0,0 @@
1
- //@ts-nocheck - this file is not being used
2
- import * as React from 'react';
3
- import { useCallback } from 'react';
4
-
5
- import { getScrollbarWidth } from '../../utils/getScrollbarWidth';
6
- import { RenderRow } from '../../VirtualList/types';
7
- import type { VirtualBrain, VirtualBrainOptions } from '../../VirtualBrain';
8
-
9
- import { VirtualRowList } from '../../VirtualList/VirtualRowList';
10
- import type { Size } from '../../types/Size';
11
- import type {
12
- InfiniteTableComputedColumn,
13
- InfiniteTableRowInfo,
14
- } from '../types';
15
- import type { InfiniteTableRowProps } from '../components/InfiniteTableRow/InfiniteTableRowTypes';
16
-
17
- import { InfiniteTableRow } from '../components/InfiniteTableRow';
18
- import { TableRowUnvirtualized } from '../components/InfiniteTableRow/InfiniteTableRowUnvirtualized';
19
- import { InfiniteTableState } from '../types/InfiniteTableState';
20
- import { InfiniteTableToggleGroupRowFn } from '../types/InfiniteTableColumn';
21
-
22
- type UnpinnedRenderingParams<T> = {
23
- columnShifts: number[] | null;
24
- bodySize: Size;
25
- getData: () => InfiniteTableRowInfo<T>[];
26
- rowHeight: number;
27
- toggleGroupRow: InfiniteTableToggleGroupRowFn;
28
-
29
- repaintId: string | number;
30
- applyScrollHorizontal: ({ scrollLeft }: { scrollLeft: number }) => void;
31
- verticalVirtualBrain: VirtualBrain;
32
- horizontalVirtualBrain: VirtualBrain;
33
-
34
- computedPinnedEndColumns: InfiniteTableComputedColumn<T>[];
35
- computedUnpinnedColumns: InfiniteTableComputedColumn<T>[];
36
- computedUnpinnedColumnsWidth: number;
37
- computedPinnedStartWidth: number;
38
- computedPinnedEndWidth: number;
39
- rowSpan?: VirtualBrainOptions['itemSpan'];
40
-
41
- getState: () => InfiniteTableState<T>;
42
- };
43
- export function useUnpinnedRendering<T>(params: UnpinnedRenderingParams<T>) {
44
- const {
45
- columnShifts,
46
- bodySize,
47
- getData,
48
- rowHeight,
49
- toggleGroupRow,
50
-
51
- repaintId,
52
-
53
- applyScrollHorizontal,
54
- verticalVirtualBrain,
55
- horizontalVirtualBrain,
56
- computedUnpinnedColumnsWidth,
57
- computedPinnedStartWidth,
58
- computedPinnedEndWidth,
59
-
60
- computedUnpinnedColumns,
61
-
62
- rowSpan,
63
- getState,
64
- } = params;
65
-
66
- const { virtualizeColumns } = getState();
67
-
68
- const shouldVirtualizeColumns =
69
- typeof virtualizeColumns === 'function'
70
- ? virtualizeColumns(computedUnpinnedColumns)
71
- : virtualizeColumns ?? true;
72
-
73
- const renderRowUnpinned: RenderRow = useCallback(
74
- (rowParams) => {
75
- const dataArray = getData();
76
- const rowInfo = dataArray[rowParams.rowIndex];
77
-
78
- const { showZebraRows, showHoverRows } = getState();
79
-
80
- const rowProps: InfiniteTableRowProps<T> = {
81
- rowInfo,
82
- showZebraRows,
83
- showHoverRows,
84
- getData,
85
- rowSpan,
86
- toggleGroupRow,
87
- virtualizeColumns: shouldVirtualizeColumns,
88
- brain: null!,
89
- verticalBrain: verticalVirtualBrain,
90
- columns: computedUnpinnedColumns,
91
- rowWidth: computedUnpinnedColumnsWidth,
92
- ...rowParams,
93
- };
94
-
95
- if (shouldVirtualizeColumns) {
96
- rowProps.brain = horizontalVirtualBrain;
97
- rowProps.repaintId = repaintId;
98
- }
99
-
100
- const TableRowComponent = shouldVirtualizeColumns
101
- ? InfiniteTableRow
102
- : TableRowUnvirtualized;
103
-
104
- return <TableRowComponent<T> {...rowProps} />;
105
- },
106
- [
107
- repaintId,
108
- rowHeight,
109
- rowSpan,
110
-
111
- computedUnpinnedColumns,
112
- computedUnpinnedColumnsWidth,
113
-
114
- shouldVirtualizeColumns,
115
- horizontalVirtualBrain,
116
- verticalVirtualBrain,
117
- ],
118
- );
119
-
120
- const fakeScrollbar = getScrollbarWidth() ? (
121
- <div
122
- data-name="horizontal-scrollbar-placeholder--fake"
123
- style={{
124
- position: 'absolute',
125
- left: 0,
126
- right: 0,
127
- bottom: 0,
128
- height: getScrollbarWidth() + 1,
129
- overflow: 'auto',
130
- visibility: columnShifts ? 'visible' : 'hidden',
131
- }}
132
- >
133
- <div style={{ height: '100%', width: computedUnpinnedColumnsWidth }} />
134
- </div>
135
- ) : null;
136
-
137
- //TODO in the future, we can use something more lightweight instead of the VirtualRowList
138
- // as the root of the InfiniteTable already renders a VirtualScrollContainer
139
- // and the VirtualRowList contains another VirtualScrollContainer
140
- // so I think we could optimize this 🤔 or remove the root VirtualScrollContainer there 🤷‍♂️
141
- return rowHeight != 0 ? (
142
- <VirtualRowList
143
- repaintId={`${repaintId}-unpinned-`}
144
- brain={verticalVirtualBrain}
145
- onContainerScroll={applyScrollHorizontal}
146
- scrollable={
147
- columnShifts
148
- ? 'visible'
149
- : { vertical: false, horizontal: !columnShifts }
150
- }
151
- style={{
152
- height: bodySize.height,
153
- top: 0,
154
- position: 'absolute',
155
- left: computedPinnedStartWidth,
156
- right: computedPinnedEndWidth,
157
- }}
158
- count={getData().length}
159
- rowHeight={rowHeight}
160
- renderRow={renderRowUnpinned}
161
- rowWidth={computedUnpinnedColumnsWidth}
162
- outerChildren={fakeScrollbar}
163
- ></VirtualRowList>
164
- ) : null;
165
- }
@@ -1,55 +0,0 @@
1
- // CONFESSION: this should have been named `useVirtualAndHorizontalBrains`
2
- // but I couldn't stand naming it `useYourBrain` instead 🤷‍♂️
3
-
4
- import { useMatrixBrain } from '../../HeadlessTable';
5
- import { Size } from '../../types/Size';
6
- import { MatrixBrain, SpanFunction } from '../../VirtualBrain/MatrixBrain';
7
- import { InfiniteTableComputedColumn } from '../types';
8
-
9
- type UseYourBrainParam<T = any> = {
10
- brain: MatrixBrain;
11
-
12
- columnSize: (rowIndex: number) => number;
13
- computedVisibleColumns: InfiniteTableComputedColumn<T>[];
14
- computedPinnedStartColumns: InfiniteTableComputedColumn<T>[];
15
- computedPinnedEndColumns: InfiniteTableComputedColumn<T>[];
16
-
17
- dataArray: any[];
18
- rowHeight: number;
19
- bodySize: Size;
20
- rowspan?: SpanFunction;
21
- colspan?: SpanFunction;
22
- };
23
- export function useYourBrain<T = any>(param: UseYourBrainParam<T>) {
24
- const {
25
- dataArray,
26
- brain,
27
- computedPinnedEndColumns,
28
- computedPinnedStartColumns,
29
- computedVisibleColumns,
30
- columnSize,
31
- rowHeight,
32
- rowspan,
33
- } = param;
34
-
35
- useMatrixBrain(
36
- brain,
37
- {
38
- colWidth: columnSize,
39
- rowHeight,
40
- // don't update width and height here
41
- // since it's updated by HeadlessTable, to account also for scrollbar sizes
42
- // height: bodySize.height,
43
- // width: bodySize.width,
44
- rows: dataArray.length,
45
- cols: computedVisibleColumns.length,
46
- rowspan,
47
- },
48
- {
49
- fixedColsEnd: computedPinnedEndColumns.length,
50
- fixedColsStart: computedPinnedStartColumns.length,
51
- },
52
- );
53
-
54
- return brain;
55
- }
@@ -1,352 +0,0 @@
1
- import * as React from 'react';
2
- import { RefObject } from 'react';
3
-
4
- import { join } from '../../utils/join';
5
- import { CSSVariableWatch } from '../CSSVariableWatch';
6
-
7
- import {
8
- useDataSource,
9
- useDataSourceContextValue,
10
- } from '../DataSource/publicHooks/useDataSource';
11
- import { HeadlessTable } from '../HeadlessTable';
12
-
13
- import {
14
- getComponentStateRoot,
15
- useComponentState,
16
- } from '../hooks/useComponentState';
17
- import { useLatest } from '../hooks/useLatest';
18
- import { useResizeObserver } from '../ResizeObserver';
19
-
20
- import { debounce } from '../utils/debounce';
21
-
22
- import { InfiniteTableBody } from './components/InfiniteTableBody';
23
- import { InfiniteTableFooter } from './components/InfiniteTableFooter';
24
- import { useInfiniteHeaderCell } from './components/InfiniteTableHeader/InfiniteTableHeaderCell';
25
- import { TableHeaderWrapper } from './components/InfiniteTableHeader/InfiniteTableHeaderWrapper';
26
- import { InfiniteTableLicenseFooter } from './components/InfiniteTableLicenseFooter';
27
- import { useInfiniteColumnCell } from './components/InfiniteTableRow/InfiniteTableColumnCell';
28
- import { RowHoverCls } from './components/InfiniteTableRow/row.css';
29
- import { LoadMask } from './components/LoadMask';
30
- import { getImperativeApi } from './api/getImperativeApi';
31
- import { useAutoSizeColumns } from './hooks/useAutoSizeColumns';
32
- import { useCellRendering } from './hooks/useCellRendering';
33
- import { useComputed } from './hooks/useComputed';
34
- import { useDOMProps } from './hooks/useDOMProps';
35
- import { useInfiniteTable } from './hooks/useInfiniteTable';
36
- import { useLicense } from './hooks/useLicense/useLicense';
37
-
38
- import { useScrollToActiveCell } from './hooks/useScrollToActiveCell';
39
- import { useScrollToActiveRow } from './hooks/useScrollToActiveRow';
40
- import {
41
- PinnedEndIndicatorBorder,
42
- PinnedStartIndicatorBorder,
43
- } from './InfiniteCls.css';
44
- import { getInfiniteTableContext } from './InfiniteTableContext';
45
- import { internalProps, rootClassName } from './internalProps';
46
-
47
- import {
48
- forwardProps,
49
- mapPropsToState,
50
- initSetupState,
51
- cleanupState,
52
- } from './state/getInitialState';
53
- import { columnHeaderHeightName } from './theme.css';
54
-
55
- import type {
56
- InfiniteTableContextValue,
57
- InfiniteTableProps,
58
- InfiniteTableState,
59
- } from './types';
60
- import { position, zIndex, top, left } from './utilities.css';
61
- import { toCSSVarName } from './utils/toCSSVarName';
62
- import { useDOMEventHandlers } from './eventHandlers';
63
- import { useColumnMenu } from './hooks/useColumnMenu';
64
-
65
- export const InfiniteTableClassName = internalProps.rootClassName;
66
-
67
- const HOVERED_CLASS_NAMES = [RowHoverCls, 'InfiniteColumnCell--hovered'];
68
-
69
- const InfiniteTableRoot = getComponentStateRoot({
70
- // @ts-ignore
71
- initSetupState,
72
- // @ts-ignore
73
- forwardProps,
74
- // @ts-ignore
75
- mapPropsToState,
76
- // @ts-ignore
77
- cleanup: cleanupState,
78
- // @ts-ignore
79
- allowedControlledPropOverrides: {
80
- rowHeight: true,
81
- columnHeaderHeight: true,
82
- } as Record<keyof InfiniteTableProps<any>, true>,
83
- // @ts-ignore
84
- getParentState: () => useDataSource(),
85
- debugName: 'InfiniteTable',
86
- });
87
-
88
- // const InfiniteTableFactory = <T extends unknown>(
89
- // _cfg: InfiniteTableFactoryConfig = {},
90
- // ) => {
91
- export const InfiniteTableComponent = React.memo(
92
- function InfiniteTableComponent<T>() {
93
- const context = useInfiniteTable<T>();
94
- const { componentState, getComputed, computed, imperativeApi } = context;
95
- const {
96
- componentState: { loading, dataArray },
97
- getState: getDataSourceState,
98
- componentActions: dataSourceActions,
99
- } = useDataSourceContextValue<T>();
100
-
101
- const {
102
- domRef,
103
- scrollerDOMRef,
104
- portalDOMRef,
105
-
106
- licenseKey,
107
- loadingText,
108
-
109
- header,
110
- onRowHeightCSSVarChange,
111
- onColumnHeaderHeightCSSVarChange,
112
- rowHeightCSSVar,
113
- columnHeaderHeightCSSVar,
114
- components,
115
- scrollStopDelay,
116
- brain,
117
- headerBrain,
118
- renderer,
119
- keyboardNavigation,
120
- activeRowIndex,
121
- activeCellIndex,
122
- onRenderUpdater,
123
- } = componentState;
124
-
125
- useScrollToActiveRow(activeRowIndex, dataArray.length, imperativeApi);
126
- useScrollToActiveCell(activeCellIndex, dataArray.length, imperativeApi);
127
- // useRowSelection();
128
-
129
- const { onKeyDown } = useDOMEventHandlers<T>();
130
-
131
- const { bodySize } = componentState;
132
-
133
- const { scrollbars } = computed;
134
-
135
- const { renderCell } = useCellRendering({
136
- imperativeApi,
137
- getComputed,
138
- domRef: componentState.domRef,
139
-
140
- bodySize,
141
- computed,
142
- });
143
-
144
- React.useEffect(() => {
145
- const dataSourceState = getDataSourceState();
146
- const onChange = debounce(
147
- (renderRange: [number, number]) => {
148
- dataSourceState.notifyRenderRangeChange({
149
- renderStartIndex: renderRange[0],
150
- renderEndIndex: renderRange[1],
151
- });
152
- },
153
- { wait: scrollStopDelay },
154
- );
155
-
156
- return brain.onVerticalRenderRangeChange(onChange);
157
- }, [brain, scrollStopDelay]);
158
-
159
- const licenseValid = useLicense(licenseKey);
160
-
161
- const domProps = useDOMProps<T>(componentState.domProps);
162
-
163
- const LoadMaskCmp = components?.LoadMask ?? LoadMask;
164
-
165
- React.useEffect(() => {
166
- brain.setScrollStopDelay(scrollStopDelay);
167
- dataSourceActions.scrollStopDelayUpdatedByTable = scrollStopDelay;
168
- }, [scrollStopDelay]);
169
-
170
- useAutoSizeColumns();
171
-
172
- const { menuPortal } = useColumnMenu();
173
-
174
- React.useEffect(() => {
175
- if (
176
- typeof (globalThis as any)
177
- .__DO_NOT_USE_UNLESS_YOU_KNOW_WHAT_YOURE_DOING_IS_READY === 'function'
178
- ) {
179
- (
180
- globalThis as any
181
- ).__DO_NOT_USE_UNLESS_YOU_KNOW_WHAT_YOURE_DOING_IS_READY(
182
- componentState.id,
183
- componentState.ready,
184
- );
185
- }
186
- }, [componentState.ready]);
187
-
188
- return (
189
- <div onKeyDown={onKeyDown} ref={domRef} {...domProps}>
190
- {header ? (
191
- <TableHeaderWrapper
192
- bodyBrain={brain}
193
- headerBrain={headerBrain}
194
- scrollbars={scrollbars}
195
- />
196
- ) : null}
197
-
198
- <InfiniteTableBody>
199
- <HeadlessTable
200
- tabIndex={0}
201
- activeRowIndex={
202
- componentState.ready && keyboardNavigation === 'row'
203
- ? activeRowIndex
204
- : null
205
- }
206
- activeCellIndex={
207
- componentState.ready &&
208
- keyboardNavigation === 'cell' &&
209
- // we want to hide the active cell indicator while column reodering is happening
210
- !componentState.columnReorderDragColumnId
211
- ? activeCellIndex
212
- : null
213
- }
214
- scrollStopDelay={scrollStopDelay}
215
- renderer={renderer}
216
- onRenderUpdater={onRenderUpdater}
217
- brain={brain}
218
- renderCell={renderCell}
219
- cellHoverClassNames={HOVERED_CLASS_NAMES}
220
- scrollerDOMRef={scrollerDOMRef}
221
- ></HeadlessTable>
222
-
223
- <LoadMaskCmp visible={loading}>{loadingText}</LoadMaskCmp>
224
- </InfiniteTableBody>
225
-
226
- <div
227
- data-name="pinned-start-border"
228
- className={PinnedStartIndicatorBorder}
229
- />
230
- <div
231
- data-name="pinned-end-border"
232
- className={PinnedEndIndicatorBorder}
233
- />
234
- <div
235
- ref={portalDOMRef as RefObject<HTMLDivElement>}
236
- className={join(
237
- `${rootClassName}Portal`,
238
- zIndex[10_000_000],
239
- position.absolute,
240
- top[0],
241
- left[0],
242
- )}
243
- >
244
- {menuPortal}
245
- </div>
246
- {rowHeightCSSVar ? (
247
- <CSSVariableWatch
248
- varName={rowHeightCSSVar}
249
- onChange={onRowHeightCSSVarChange}
250
- />
251
- ) : null}
252
- {columnHeaderHeightCSSVar ? (
253
- <CSSVariableWatch
254
- varName={columnHeaderHeightCSSVar}
255
- onChange={onColumnHeaderHeightCSSVarChange}
256
- />
257
- ) : null}
258
- <InfiniteTableFooter />
259
- {licenseValid ? null : <InfiniteTableLicenseFooter />}
260
- </div>
261
- );
262
- },
263
- );
264
- function InfiniteTableContextProvider<T>() {
265
- const { componentActions, componentState } =
266
- useComponentState<InfiniteTableState<T>>();
267
-
268
- const { scrollerDOMRef, scrollTopKey } = componentState;
269
-
270
- const computed = useComputed<T>();
271
- const getComputed = useLatest(computed);
272
- const getState = useLatest(componentState);
273
-
274
- if (__DEV__) {
275
- (globalThis as any).getState = getState;
276
- (globalThis as any).getComputed = getComputed;
277
- (globalThis as any).componentActions = componentActions;
278
- }
279
-
280
- const { getState: getDataSourceState, componentActions: dataSourceActions } =
281
- useDataSourceContextValue<T>();
282
-
283
- const [imperativeApi] = React.useState(() => {
284
- return getImperativeApi({
285
- getComputed,
286
- getState,
287
- getDataSourceState,
288
- componentActions,
289
- dataSourceActions,
290
- });
291
- });
292
-
293
- const contextValue: InfiniteTableContextValue<T> = {
294
- componentActions,
295
- componentState,
296
- computed,
297
- getComputed,
298
- getState,
299
- imperativeApi,
300
- };
301
-
302
- useResizeObserver(
303
- scrollerDOMRef,
304
- (size) => {
305
- const bodySize = {
306
- width: size.width, //- reservedScrollSpace,
307
- height: size.height,
308
- };
309
-
310
- // TODO this was here before, but cant remember why
311
- // bodySize.width = scrollerDOMRef.current?.scrollWidth ?? bodySize.width;
312
-
313
- componentActions.bodySize = bodySize;
314
- },
315
- { earlyAttach: true, debounce: 50 },
316
- );
317
-
318
- React.useEffect(() => {
319
- if (scrollerDOMRef.current) {
320
- scrollerDOMRef.current.scrollTop = 0;
321
- }
322
- }, [scrollTopKey, scrollerDOMRef]);
323
-
324
- const TableContext = getInfiniteTableContext<T>();
325
-
326
- return (
327
- <TableContext.Provider value={contextValue}>
328
- <InfiniteTableComponent />
329
- </TableContext.Provider>
330
- );
331
- }
332
-
333
- export function InfiniteTable<T>(props: InfiniteTableProps<T>) {
334
- const table = (
335
- //@ts-ignore
336
- <InfiniteTableRoot {...props}>
337
- <InfiniteTableContextProvider />
338
- </InfiniteTableRoot>
339
- );
340
- if (__DEV__) {
341
- return <React.StrictMode>{table}</React.StrictMode>;
342
- }
343
- return table;
344
- }
345
- InfiniteTable.defaultProps = {
346
- rowHeight: 40,
347
- columnHeaderHeight: toCSSVarName(columnHeaderHeightName),
348
- };
349
-
350
- export * from './types';
351
-
352
- export { useInfiniteColumnCell, useInfiniteHeaderCell };
@@ -1,4 +0,0 @@
1
- export const rootClassName = 'Infinite';
2
- export const internalProps = {
3
- rootClassName,
4
- };
@@ -1,29 +0,0 @@
1
- import type { InfiniteTablePropColumnGroupsMap } from '../types/InfiniteTableProps';
2
- import type { InfiniteTableColumnGroupsDepthsMap } from '../types/InfiniteTableState';
3
-
4
- export function computeColumnGroupsDepths(
5
- columnGroups: InfiniteTablePropColumnGroupsMap,
6
- ): InfiniteTableColumnGroupsDepthsMap {
7
- const map = new Map();
8
-
9
- columnGroups.forEach((colGroup, colGroupId) => {
10
- let parentGroupId = colGroup.columnGroup;
11
- let depth = 0;
12
-
13
- while (parentGroupId) {
14
- const parent = columnGroups.get(parentGroupId);
15
-
16
- if (!parent) {
17
- if (__DEV__) {
18
- console.warn(`Cannot find column group ${parentGroupId}`);
19
- }
20
- break;
21
- }
22
- depth++;
23
- parentGroupId = parent.columnGroup;
24
- }
25
- map.set(colGroupId, depth);
26
- });
27
-
28
- return map;
29
- }