@infinite-table/infinite-react 0.5.1 → 0.5.3

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 +3 -95
  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,80 +0,0 @@
1
- import { ColumnCellVariantsType } from '../components/cell.css';
2
- import { HeaderCellVariantsType } from '../components/InfiniteTableHeader/header.css';
3
- import { InfiniteTableComputedColumn } from '../types';
4
-
5
- export function useCellClassName<T>(
6
- column: InfiniteTableComputedColumn<T>,
7
- baseClasses: string[],
8
- variants: (x: ColumnCellVariantsType | HeaderCellVariantsType) => string,
9
- extraFlags: {
10
- groupRow: boolean;
11
- rowExpanded: boolean;
12
- rowActive: boolean;
13
- rowSelected: boolean | null;
14
- dragging: boolean;
15
- zebra: 'odd' | 'even' | false;
16
- },
17
- ) {
18
- const result = [...baseClasses];
19
- const variantObject: ColumnCellVariantsType | HeaderCellVariantsType = {
20
- filtered: column.computedFiltered,
21
- first: column.computedFirst,
22
- last: column.computedLast,
23
- groupByField: !!column.groupByField,
24
- firstInCategory: column.computedFirstInCategory,
25
- lastInCategory: column.computedLastInCategory,
26
- pinned: column.computedPinned || false,
27
- rowSelected: extraFlags.rowSelected ?? 'null',
28
- rowActive: extraFlags.rowActive,
29
- dragging: extraFlags.dragging,
30
- zebra: extraFlags.zebra,
31
- };
32
-
33
- const theVariant = variants(variantObject);
34
-
35
- result.push(theVariant);
36
-
37
- if (column.computedFirst) {
38
- result.push(...baseClasses.map((c) => `${c}--first`));
39
- }
40
-
41
- if (column.groupByField) {
42
- result.push(...baseClasses.map((c) => `${c}--group-column`));
43
- }
44
- if (column.computedLast) {
45
- result.push(...baseClasses.map((c) => `${c}--last`));
46
- }
47
- if (column.computedFirstInCategory) {
48
- result.push(...baseClasses.map((c) => `${c}--first-in-category`));
49
- }
50
- if (column.computedLastInCategory) {
51
- result.push(...baseClasses.map((c) => `${c}--last-in-category`));
52
- }
53
- if (extraFlags.rowSelected) {
54
- result.push(...baseClasses.map((c) => `${c}--row-selected`));
55
- }
56
-
57
- if (extraFlags.groupRow) {
58
- result.push(...baseClasses.map((c) => `${c}--group-row`));
59
-
60
- result.push(
61
- ...baseClasses.map(
62
- (c) =>
63
- `${c}--${
64
- extraFlags.rowExpanded
65
- ? 'group-row-expanded'
66
- : 'group-row-collapsed'
67
- }`,
68
- ),
69
- );
70
- }
71
- if (column.computedPinned) {
72
- result.push(
73
- ...baseClasses.map((c) => `${c}--pinned-${column.computedPinned}`),
74
- );
75
- } else {
76
- result.push(...baseClasses.map((c) => `${c}--unpinned`));
77
- }
78
-
79
- return result.filter(Boolean).join(' ');
80
- }
@@ -1,217 +0,0 @@
1
- import type { Ref } from 'react';
2
- import { useCallback, useEffect, useRef } from 'react';
3
- import * as React from 'react';
4
-
5
- import { useDataSourceContextValue } from '../../DataSource/publicHooks/useDataSource';
6
- import {
7
- TableRenderCellFn,
8
- TableRenderCellFnParam,
9
- } from '../../HeadlessTable/ReactHeadlessTableRenderer';
10
- import { useLatest } from '../../hooks/useLatest';
11
- import { useRerender } from '../../hooks/useRerender';
12
- import type { Size } from '../../types/Size';
13
- import { InfiniteTableColumnCellProps } from '../components/InfiniteTableRow/InfiniteTableCellTypes';
14
- import { InfiniteTableColumnCell } from '../components/InfiniteTableRow/InfiniteTableColumnCell';
15
- import type { InfiniteTableComputedValues, InfiniteTableApi } from '../types';
16
-
17
- import { useInfiniteTable } from './useInfiniteTable';
18
- import { useYourBrain } from './useYourBrain';
19
-
20
- type CellRenderingParam<T> = {
21
- computed: InfiniteTableComputedValues<T>;
22
- domRef: Ref<HTMLElement>;
23
-
24
- imperativeApi: InfiniteTableApi<T>;
25
-
26
- bodySize: Size;
27
-
28
- getComputed: () => InfiniteTableComputedValues<T> | undefined;
29
- };
30
-
31
- type CellRenderingResult = {
32
- renderCell: TableRenderCellFn;
33
- };
34
-
35
- const SCROLL_BOTTOM_OFFSET = 1;
36
-
37
- export function useCellRendering<T>(
38
- param: CellRenderingParam<T>,
39
- ): CellRenderingResult {
40
- const { computed, bodySize, imperativeApi } = param;
41
-
42
- const { componentActions, componentState, getState } = useInfiniteTable<T>();
43
-
44
- const {
45
- computedPinnedStartColumns,
46
- computedPinnedEndColumns,
47
- computedVisibleColumns,
48
- computedColumnsMap,
49
- fieldsToColumn,
50
- rowspan,
51
- toggleGroupRow,
52
- columnSize,
53
- } = computed;
54
-
55
- const {
56
- componentState: dataSourceState,
57
- getState: getDataSourceState,
58
- componentActions: dataSourceActions,
59
- } = useDataSourceContextValue<T>();
60
-
61
- const { dataArray } = dataSourceState;
62
-
63
- const getData = useLatest(dataArray);
64
- const {
65
- rowHeight,
66
- groupRenderStrategy,
67
- brain,
68
- showZebraRows,
69
- rowStyle,
70
- rowClassName,
71
- onScrollToTop,
72
- onScrollToBottom,
73
- scrollToBottomOffset,
74
- ready,
75
- } = componentState;
76
-
77
- const repaintId = dataSourceState.updatedAt;
78
-
79
- useYourBrain({
80
- columnSize,
81
- brain,
82
- computedPinnedStartColumns,
83
- computedPinnedEndColumns,
84
- computedVisibleColumns,
85
- rowHeight,
86
- dataArray,
87
- bodySize,
88
- rowspan,
89
- });
90
-
91
- const scrollTopMaxRef = useRef<number>(0);
92
-
93
- useEffect(() => {
94
- return brain.onRenderCountChange(() => {
95
- scrollTopMaxRef.current = brain.scrollTopMax;
96
- });
97
- }, [brain]);
98
-
99
- useEffect(() => {
100
- return brain.onScrollStop((scrollPosition) => {
101
- const { scrollTop } = scrollPosition;
102
- if (scrollTop === 0) {
103
- onScrollToTop?.();
104
- }
105
-
106
- const offset = scrollToBottomOffset ?? SCROLL_BOTTOM_OFFSET;
107
- const isScrollBottom = scrollTop + offset >= scrollTopMaxRef.current;
108
-
109
- if (isScrollBottom) {
110
- onScrollToBottom?.();
111
-
112
- const { livePagination, livePaginationCursor, dataArray } =
113
- getDataSourceState();
114
- if (livePagination) {
115
- dataSourceActions.cursorId =
116
- livePaginationCursor !== undefined
117
- ? // when there is a `livePaginationCursor` defined we set the cursorId to Date.now
118
- // as that will trigger the dataSource to fetch more data
119
- Date.now()
120
- : // but when there is no `livePaginationCursor` defined we use the `dataArray.length`
121
- // as the cursorId, we we can't randomise it, otherwise when we get to the end
122
- // of the dataset, we will still request more data
123
- // see #useDataArrayLengthAsCursor ref
124
- dataArray.length;
125
- }
126
- }
127
- });
128
- }, [brain, onScrollToTop, onScrollToBottom]);
129
-
130
- useEffect(() => {
131
- if (!bodySize.height) {
132
- return;
133
- }
134
-
135
- componentActions.ready = true;
136
- }, [!!bodySize.height]);
137
-
138
- useEffect(() => {
139
- if (!ready) {
140
- }
141
- const { onReady } = getState();
142
-
143
- if (onReady) {
144
- onReady(imperativeApi);
145
- }
146
- }, [ready]);
147
-
148
- const [, rerender] = useRerender();
149
-
150
- useEffect(() => {
151
- rerender(); // TODO check this is still needed
152
- }, [dataSourceState]);
153
-
154
- const renderCell: TableRenderCellFn = useCallback(
155
- (params: TableRenderCellFnParam) => {
156
- const {
157
- rowIndex,
158
- colIndex,
159
- heightWithRowspan,
160
- domRef,
161
- hidden,
162
- width,
163
- onMouseLeave,
164
- onMouseEnter,
165
- } = params;
166
-
167
- const dataArray = getData();
168
- const rowInfo = dataArray[rowIndex];
169
- const column = computedVisibleColumns[colIndex];
170
-
171
- if (!rowInfo) {
172
- return null;
173
- }
174
-
175
- const cellProps: InfiniteTableColumnCellProps<T> = {
176
- getData,
177
- virtualized: true,
178
- showZebraRows,
179
- groupRenderStrategy,
180
- rowIndex,
181
- rowInfo,
182
- hidden,
183
- toggleGroupRow,
184
- rowHeight: heightWithRowspan,
185
- onMouseEnter,
186
- onMouseLeave,
187
- domRef,
188
- width,
189
- column,
190
- columnsMap: computedColumnsMap,
191
- fieldsToColumn,
192
- rowStyle,
193
- rowClassName,
194
- };
195
-
196
- return <InfiniteTableColumnCell<T> {...cellProps} />;
197
- },
198
- [
199
- rowHeight,
200
- getData,
201
- computedVisibleColumns,
202
- computedColumnsMap,
203
- fieldsToColumn,
204
- groupRenderStrategy,
205
- toggleGroupRow,
206
- showZebraRows,
207
- repaintId,
208
- rowStyle,
209
- rowClassName,
210
- ],
211
- );
212
-
213
- return {
214
- renderCell,
215
- // repaintId,
216
- };
217
- }
@@ -1,71 +0,0 @@
1
- import { useEffect } from 'react';
2
-
3
- import { useComponentState } from '../../hooks/useComponentState';
4
- import { interceptMap } from '../../hooks/useInterceptedMap';
5
-
6
- import { computeColumnGroupsDepths } from '../state/computeColumnGroupsDepths';
7
- import { InfiniteTableState } from '../types/InfiniteTableState';
8
- import { rafFn } from '../utils/rafFn';
9
-
10
- export function useColumnGroups<T>() {
11
- const {
12
- componentState: {
13
- computedColumnGroups: computedColumnGroups,
14
- collapsedColumnGroups,
15
- },
16
- componentActions,
17
- getComponentState,
18
- } = useComponentState<InfiniteTableState<T>>();
19
-
20
- useEffect(() => {
21
- const recompute = () => {
22
- componentActions.columnGroupsDepthsMap =
23
- computeColumnGroupsDepths(computedColumnGroups);
24
- };
25
-
26
- const update = rafFn(recompute);
27
-
28
- return interceptMap(computedColumnGroups, {
29
- clear: update,
30
- delete: update,
31
- set: update,
32
- });
33
- }, [computedColumnGroups]);
34
-
35
- // TODO we need to enhance this when we implement the UI for collapsing column groups
36
- useEffect(() => {
37
- // when collapsedColumnGroups change
38
- //we basically update the columnVisibility map
39
- return interceptMap(collapsedColumnGroups, {
40
- set: (key: string[], visibleCol: string) => {
41
- const colIds = key.slice(1);
42
- const columnVisibility = { ...getComponentState().columnVisibility };
43
-
44
- colIds.forEach((colId) => {
45
- columnVisibility[colId] = false;
46
- });
47
- delete columnVisibility[visibleCol];
48
- componentActions.columnVisibility = columnVisibility;
49
- },
50
- beforeClear: (currentCollapsedGroups) => {
51
- const columnVisibility = { ...getComponentState().columnVisibility };
52
- const keys = [...currentCollapsedGroups.keys()];
53
- keys.forEach((key) => {
54
- const colIds = key.slice(1);
55
- colIds.forEach((colId) => {
56
- delete columnVisibility[colId];
57
- });
58
- });
59
- componentActions.columnVisibility = columnVisibility;
60
- },
61
- delete: (key: string[]) => {
62
- const columnVisibility = { ...getComponentState().columnVisibility };
63
- const colIds = key.slice(1);
64
- colIds.forEach((colId) => {
65
- delete columnVisibility[colId];
66
- });
67
- componentActions.columnVisibility = columnVisibility;
68
- },
69
- });
70
- }, [collapsedColumnGroups]);
71
- }
@@ -1,72 +0,0 @@
1
- import { useEffect, useState } from 'react';
2
- import { useOverlay } from '../../hooks/useOverlay';
3
- import { getContextMenuForColumn } from '../utils/getContextMenuForColumn';
4
- import { useInfiniteTable } from './useInfiniteTable';
5
-
6
- export function useColumnMenu<T>() {
7
- const context = useInfiniteTable<T>();
8
- const { getState, componentActions } = context;
9
- const {
10
- showOverlay,
11
- portal: menuPortal,
12
- clearAll,
13
- } = useOverlay({
14
- portalContainer: false,
15
- });
16
-
17
- useState(() => {
18
- const { componentActions: actions, componentState } = context;
19
- const { domRef } = componentState;
20
- componentState.onColumnMenuClick.onChange((info) => {
21
- if (!info) {
22
- return;
23
- }
24
- const { target, column } = info;
25
-
26
- function onHideIntent() {
27
- clearAll();
28
- componentActions.columnContextMenuVisibleForColumnId = null;
29
- }
30
-
31
- showOverlay(
32
- () => getContextMenuForColumn(column.id, context, onHideIntent),
33
- {
34
- constrainTo: domRef.current!,
35
- id: 'column-menu',
36
- alignTo: target,
37
- alignPosition: [
38
- ['TopLeft', 'BottomLeft'],
39
- ['TopRight', 'BottomRight'],
40
- ],
41
- },
42
- );
43
-
44
- actions.columnContextMenuVisibleForColumnId = column.id;
45
- });
46
- });
47
-
48
- useEffect(() => {
49
- const { columnContextMenuVisibleForColumnId } = getState();
50
-
51
- if (columnContextMenuVisibleForColumnId) {
52
- function handleMouseDown(event: MouseEvent) {
53
- // @ts-ignore
54
- if (event.__insideMenu !== true) {
55
- clearAll();
56
- componentActions.columnContextMenuVisibleForColumnId = null;
57
- }
58
- }
59
- document.documentElement.addEventListener('mousedown', handleMouseDown);
60
- return () => {
61
- document.documentElement.removeEventListener(
62
- 'mousedown',
63
- handleMouseDown,
64
- );
65
- };
66
- }
67
-
68
- return () => {};
69
- }, [getState().columnContextMenuVisibleForColumnId]);
70
-
71
- return { menuPortal };
72
- }
@@ -1,258 +0,0 @@
1
- import * as React from 'react';
2
-
3
- import { useCallback, useState } from 'react';
4
-
5
- import { useInfiniteTable } from './useInfiniteTable';
6
-
7
- import {
8
- clearInfiniteColumnReorderDuration,
9
- setInfiniteColumnOffsetWhileReordering,
10
- setInfiniteColumnZIndex,
11
- } from '../utils/infiniteDOMUtils';
12
-
13
- import { InfiniteClsShiftingColumns } from '../InfiniteCls.css';
14
- import { InternalVars } from '../theme.css';
15
- import { stripVar } from '../../../utils/stripVar';
16
- import { getColumnZIndex } from './useDOMProps';
17
- import {
18
- reorderColumnsOnDrag,
19
- ReorderDragResult,
20
- } from './reorderColumnsOnDrag';
21
- import { shallowEqualObjects } from '../../../utils/shallowEqualObjects';
22
- import { InfiniteTablePropColumnPinning } from '../types';
23
- import adjustColumnOrderForAllColumns from './adjustColumnOrderForAllColumns';
24
-
25
- const columnOffsetAtIndex = stripVar(InternalVars.columnOffsetAtIndex);
26
- const columnWidthAtIndex = stripVar(InternalVars.columnWidthAtIndex);
27
- const baseZIndexForCells = stripVar(InternalVars.baseZIndexForCells);
28
-
29
- type TopLeft = {
30
- left: number;
31
- top: number;
32
- };
33
- type TopLeftOrNull = TopLeft | null;
34
-
35
- const equalPinning = (
36
- pinning1: null | InfiniteTablePropColumnPinning,
37
- pinning2: null | InfiniteTablePropColumnPinning,
38
- ) => {
39
- const empty1 = !pinning1 || Object.keys(pinning1).length === 0;
40
- const empty2 = !pinning2 || Object.keys(pinning2).length === 0;
41
-
42
- if (empty1 && empty2) {
43
- return true;
44
- }
45
- if (!!pinning1 != !!pinning2) {
46
- return false;
47
- }
48
-
49
- return shallowEqualObjects(pinning1, pinning2);
50
- };
51
-
52
- export const useColumnPointerEvents = ({
53
- columnId,
54
- domRef,
55
- }: {
56
- columnId: string;
57
- domRef: React.MutableRefObject<HTMLElement | null>;
58
- }) => {
59
- const [proxyPosition, setProxyPosition] = useState<TopLeftOrNull>(null);
60
-
61
- const {
62
- componentActions,
63
- computed,
64
- getComputed,
65
- getState,
66
- imperativeApi,
67
- componentState: { domRef: rootRef, brain, headerBrain },
68
- } = useInfiniteTable();
69
-
70
- const onPointerDown = useCallback(
71
- (e: React.PointerEvent) => {
72
- //@ts-ignore
73
- if (e.target?.tagName === 'INPUT') {
74
- // early exit, so that (for example) checkbox selection works in the column header when clicking the checkbox
75
- return;
76
- }
77
- const {
78
- computedVisibleColumns,
79
- computedVisibleColumnsMap,
80
- computedPinnedStartColumns,
81
- computedUnpinnedColumns,
82
- computedPinnedEndColumns,
83
- } = getComputed();
84
-
85
- const dragColumn = computedVisibleColumnsMap.get(columnId)!;
86
-
87
- if (!dragColumn.computedDraggable) {
88
- return;
89
- }
90
-
91
- const target = domRef.current!;
92
-
93
- const targetRect = target.getBoundingClientRect();
94
- const tableRect = rootRef.current!.getBoundingClientRect();
95
-
96
- const initialAvailableSize = brain.getAvailableSize();
97
-
98
- const dragColumnIndex = dragColumn.computedVisibleIndex;
99
-
100
- let initialCursor: React.CSSProperties['cursor'] =
101
- target.style.cursor ?? 'auto';
102
-
103
- let didDragAtLeastOnce = false;
104
-
105
- const dragger = reorderColumnsOnDrag({
106
- brain,
107
- columnOffsetAtIndexCSSVar: columnOffsetAtIndex,
108
- columnWidthAtIndexCSSVar: columnWidthAtIndex,
109
- computedPinnedEndColumns,
110
- computedPinnedStartColumns,
111
- computedUnpinnedColumns,
112
- computedVisibleColumns,
113
- computedVisibleColumnsMap,
114
- dragColumnHeaderTargetRect: targetRect,
115
- dragColumnId: columnId,
116
- imperativeApi,
117
- infiniteDOMNode: rootRef.current!,
118
- setProxyPosition,
119
- tableRect,
120
- initialMousePosition: {
121
- clientX: e.clientX,
122
- clientY: e.clientY,
123
- },
124
- });
125
-
126
- let reorderDragResult: ReorderDragResult | null = null;
127
-
128
- function persistColumnOrder(reorderDragResult: ReorderDragResult) {
129
- const { columnPinning, columnOrder } = reorderDragResult;
130
-
131
- if (!equalPinning(getState().columnPinning, columnPinning)) {
132
- componentActions.columnPinning = columnPinning;
133
- }
134
- const currentComputedColumnOrder = getComputed().computedColumnOrder;
135
-
136
- if (JSON.stringify(columnOrder, currentComputedColumnOrder)) {
137
- computedVisibleColumns.forEach((col) => {
138
- setInfiniteColumnOffsetWhileReordering(
139
- col.computedVisibleIndex,
140
- '',
141
- rootRef.current,
142
- );
143
- });
144
-
145
- // componentActions.columnOrder = columnOrder;
146
- // we can't simply do the above line
147
- // as it would discard non visible columns from the column order
148
- // as the `columnOrder` variable only takes into account visible columns
149
- // so we have to adjust it to account for all columns
150
- componentActions.columnOrder = adjustColumnOrderForAllColumns({
151
- newColumnOrder: columnOrder,
152
- visibleColumnOrder: getComputed().computedVisibleColumns.map(
153
- (c) => c.id,
154
- ),
155
- existingColumnOrder: currentComputedColumnOrder,
156
- dragColumnId: columnId,
157
- });
158
- }
159
- }
160
-
161
- const onPointerMove = (e: PointerEvent) => {
162
- if (!didDragAtLeastOnce) {
163
- didDragAtLeastOnce = true;
164
- // TODO we can improve this - instead of making all cols visible
165
- // by increasing the render count
166
- // we could have a method that says: keep this column rendered (the current column)
167
- // even if the scrolling changes horizontally
168
- brain.setRenderCount({
169
- horizontal: computedVisibleColumns.length,
170
- vertical: undefined,
171
- });
172
- headerBrain.setRenderCount({
173
- horizontal: computedVisibleColumns.length,
174
- vertical: undefined,
175
- });
176
-
177
- componentActions.columnReorderDragColumnId = dragColumn.id;
178
-
179
- setInfiniteColumnZIndex(
180
- dragColumnIndex,
181
- `calc( var(${baseZIndexForCells}) + 10000 )`,
182
- rootRef.current,
183
- );
184
-
185
- rootRef.current?.classList.add(InfiniteClsShiftingColumns);
186
- target.style.cursor = 'grabbing';
187
- }
188
-
189
- reorderDragResult = dragger.onMove(e);
190
- };
191
-
192
- const onPointerUp = (e: PointerEvent) => {
193
- const target = domRef.current!;
194
- rootRef.current?.classList.remove(InfiniteClsShiftingColumns);
195
-
196
- dragger.stop();
197
-
198
- brain.setAvailableSize({
199
- ...initialAvailableSize,
200
- });
201
-
202
- computedVisibleColumns.forEach((col) => {
203
- clearInfiniteColumnReorderDuration(
204
- col.computedVisibleIndex,
205
- rootRef.current,
206
- );
207
- setInfiniteColumnOffsetWhileReordering(
208
- col.computedVisibleIndex,
209
- '',
210
- rootRef.current,
211
- );
212
- });
213
-
214
- setInfiniteColumnZIndex(
215
- dragColumnIndex,
216
- getColumnZIndex(dragColumn, {
217
- pinnedStartColsCount: computedPinnedStartColumns.length,
218
- visibleColsCount: computedVisibleColumns.length,
219
- }),
220
- rootRef.current,
221
- );
222
-
223
- target.style.cursor = initialCursor as string;
224
- target.releasePointerCapture(e.pointerId);
225
-
226
- target.removeEventListener('pointermove', onPointerMove);
227
- target.removeEventListener('pointerup', onPointerUp);
228
-
229
- setProxyPosition(null);
230
-
231
- if (!didDragAtLeastOnce && dragColumn.computedSortable) {
232
- dragColumn.toggleSort();
233
- }
234
-
235
- if (reorderDragResult) {
236
- persistColumnOrder(reorderDragResult);
237
- }
238
-
239
- componentActions.columnReorderDragColumnId = false;
240
- };
241
-
242
- target.addEventListener('pointermove', onPointerMove);
243
- target.addEventListener('pointerup', onPointerUp);
244
-
245
- target.setPointerCapture(e.pointerId);
246
- },
247
- [columnId],
248
- );
249
-
250
- return {
251
- onPointerDown: computed.computedVisibleColumnsMap.get(columnId)
252
- ?.computedDraggable
253
- ? onPointerDown
254
- : () => {},
255
-
256
- proxyPosition,
257
- };
258
- };