@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,466 +0,0 @@
1
- import { DataSourceSetupState } from '..';
2
- import { DeepMap } from '../../../utils/DeepMap';
3
- import {
4
- InfiniteTableRowInfo,
5
- InfiniteTable_NoGrouping_RowInfoNormal,
6
- lazyGroup,
7
- } from '../../../utils/groupAndPivot';
8
- import { enhancedFlatten, group } from '../../../utils/groupAndPivot';
9
- import { getPivotColumnsAndColumnGroups } from '../../../utils/groupAndPivot/getPivotColumnsAndColumnGroups';
10
- import { multisort } from '../../../utils/multisort';
11
- import { rowSelectionStateConfigGetter } from '../../InfiniteTable/api/getSelectionApi';
12
- import { RowSelectionState } from '../RowSelectionState';
13
- import type {
14
- DataSourceState,
15
- DataSourceDerivedState,
16
- LazyRowInfoGroup,
17
- DataSourcePropFilterFunction,
18
- DataSourcePropFilterValue,
19
- DataSourceFilterOperatorFunctionParam,
20
- DataSourcePropFilterTypes,
21
- } from '../types';
22
-
23
- const haveDepsChanged = <StateType>(
24
- state1: StateType,
25
- state2: StateType,
26
- deps: (keyof StateType)[],
27
- ) => {
28
- for (let i = 0, len = deps.length; i < len; i++) {
29
- const k = deps[i];
30
- const oldValue = (state1 as any)[k];
31
- const newValue = (state2 as any)[k];
32
-
33
- if (oldValue !== newValue) {
34
- return true;
35
- }
36
- }
37
- return false;
38
- };
39
-
40
- function toRowInfo<T>(
41
- data: T,
42
- id: any,
43
- index: number,
44
- isRowSelected?: (rowInfo: InfiniteTableRowInfo<T>) => boolean | null,
45
- ): InfiniteTable_NoGrouping_RowInfoNormal<T> {
46
- const rowInfo: InfiniteTable_NoGrouping_RowInfoNormal<T> = {
47
- dataSourceHasGrouping: false,
48
- data,
49
- id,
50
- indexInAll: index,
51
- isGroupRow: false,
52
- selfLoaded: true,
53
- rowSelected: false,
54
- };
55
- if (isRowSelected) {
56
- rowInfo.rowSelected = isRowSelected(rowInfo);
57
- }
58
-
59
- return rowInfo;
60
- }
61
-
62
- function filterDataSource<T>(params: {
63
- dataArray: T[];
64
- operatorsByFilterType: DataSourceDerivedState<T>['operatorsByFilterType'];
65
- filterTypes: DataSourcePropFilterTypes<T>;
66
- filterFunction?: DataSourcePropFilterFunction<T>;
67
- filterValue?: DataSourcePropFilterValue<T>;
68
- toPrimaryKey: (data: T, index: number) => any;
69
- }) {
70
- const {
71
- filterTypes,
72
- filterValue: filterValueArray,
73
- operatorsByFilterType,
74
- filterFunction,
75
- toPrimaryKey,
76
- } = params;
77
- let { dataArray } = params;
78
- if (filterFunction) {
79
- dataArray = dataArray.filter((data, index, arr) =>
80
- filterFunction({
81
- data,
82
- index,
83
- dataArray: arr,
84
- primaryKey: toPrimaryKey(data, index),
85
- }),
86
- );
87
- }
88
-
89
- if (filterValueArray && filterValueArray.length) {
90
- return dataArray.filter((data, index, arr) => {
91
- const param = {
92
- data,
93
- index,
94
- dataArray: arr,
95
- primaryKey: toPrimaryKey(data, index),
96
- };
97
-
98
- for (let i = 0, len = filterValueArray.length; i < len; i++) {
99
- const currentFilterValue = filterValueArray[i];
100
-
101
- const {
102
- disabled,
103
- filterValue,
104
- field,
105
- filterType: filterTypeKey,
106
- valueGetter,
107
- operator,
108
- } = currentFilterValue;
109
- const filterType = filterTypes[filterTypeKey];
110
- if (disabled || !filterType) {
111
- continue;
112
- }
113
- const currentOperator =
114
- operatorsByFilterType[filterTypeKey]?.[operator];
115
- if (!currentOperator) {
116
- continue;
117
- }
118
-
119
- const getter =
120
- valueGetter || (({ data }) => (field ? data[field] : data));
121
-
122
- const operatorFnParam = {
123
- ...param,
124
- } as DataSourceFilterOperatorFunctionParam<T>;
125
- operatorFnParam.filterValue = filterValue;
126
- operatorFnParam.currentValue = getter(param);
127
- operatorFnParam.emptyValues = filterType.emptyValues;
128
-
129
- if (!currentOperator.fn(operatorFnParam)) {
130
- return false;
131
- }
132
- }
133
- return true;
134
- });
135
- }
136
-
137
- return dataArray;
138
- }
139
-
140
- export function concludeReducer<T>(params: {
141
- previousState: DataSourceState<T> & DataSourceDerivedState<T>;
142
- state: DataSourceState<T> &
143
- DataSourceDerivedState<T> &
144
- DataSourceSetupState<T>;
145
- }) {
146
- const { state, previousState } = params;
147
-
148
- const sortInfo = state.sortInfo;
149
- let shouldSort = !!sortInfo?.length && !state.controlledSort;
150
-
151
- if (state.lazyLoad || state.livePagination) {
152
- shouldSort = false;
153
- }
154
-
155
- let originalDataArrayChanged = haveDepsChanged(previousState, state, [
156
- 'originalDataArray',
157
- 'originalLazyGroupDataChangeDetect',
158
- ]);
159
-
160
- const dataSourceChange = previousState && state.data !== previousState.data;
161
- let lazyLoadGroupDataChange =
162
- state.lazyLoad &&
163
- previousState &&
164
- (previousState.groupBy !== state.groupBy ||
165
- previousState.sortInfo !== state.sortInfo);
166
-
167
- if (dataSourceChange) {
168
- lazyLoadGroupDataChange = true;
169
- }
170
-
171
- if (lazyLoadGroupDataChange) {
172
- state.originalLazyGroupData = new DeepMap<string, LazyRowInfoGroup<T>>();
173
- originalDataArrayChanged = true;
174
-
175
- // TODO if we have defaultGroupRowsState in props (so this is uncontrolled)
176
- // reset state.groupRowsState to the value in props.defaultGroupRowsState
177
- // also make sure onGroupRowsState is triggered to notify the action to consumers
178
- }
179
-
180
- const shouldIndex = originalDataArrayChanged;
181
- if (shouldIndex) {
182
- state.indexer.clear();
183
- if (!state.lazyLoad) {
184
- state.indexer.indexArray(state.originalDataArray, state.toPrimaryKey);
185
- }
186
- }
187
-
188
- const { filterFunction, filterValue, filterTypes, operatorsByFilterType } =
189
- state;
190
- const shouldFilter =
191
- !!filterFunction || (Array.isArray(filterValue) && filterValue.length);
192
-
193
- const shouldFilterClientSide = shouldFilter && state.filterMode === 'local';
194
-
195
- const filterDepsChanged = haveDepsChanged(previousState, state, [
196
- 'filterFunction',
197
- 'filterValue',
198
- 'filterTypes',
199
- ]);
200
- const filterChanged = originalDataArrayChanged || filterDepsChanged;
201
-
202
- const sortInfoChanged = haveDepsChanged(previousState, state, ['sortInfo']);
203
-
204
- const sortDepsChanged =
205
- originalDataArrayChanged || filterDepsChanged || sortInfoChanged;
206
-
207
- const shouldFilterAgain =
208
- state.filterMode === 'local' &&
209
- (filterChanged || !state.lastFilterDataArray);
210
-
211
- const shouldSortAgain =
212
- shouldSort && (sortDepsChanged || !state.lastSortDataArray);
213
-
214
- const groupBy = state.groupBy;
215
- const pivotBy = state.pivotBy;
216
-
217
- const shouldGroup = groupBy.length > 0 || !!pivotBy;
218
- const selectionDepsChanged = haveDepsChanged(previousState, state, [
219
- 'rowSelection',
220
- 'isRowSelected',
221
- 'originalLazyGroupDataChangeDetect',
222
- ]);
223
- const groupsDepsChanged =
224
- originalDataArrayChanged ||
225
- sortDepsChanged ||
226
- haveDepsChanged(previousState, state, [
227
- 'generateGroupRows',
228
- 'originalLazyGroupData',
229
- 'originalLazyGroupDataChangeDetect',
230
- 'groupBy',
231
- 'groupRowsState',
232
- 'pivotBy',
233
- 'aggregationReducers',
234
- 'pivotTotalColumnPosition',
235
- 'pivotGrandTotalColumnPosition',
236
- 'showSeparatePivotColumnForSingleAggregation',
237
- ]);
238
-
239
- const shouldGroupAgain =
240
- (shouldGroup && (groupsDepsChanged || !state.lastGroupDataArray)) ||
241
- selectionDepsChanged;
242
-
243
- const now = Date.now();
244
-
245
- let dataArray = state.originalDataArray;
246
-
247
- const toPrimaryKey = state.toPrimaryKey;
248
-
249
- if (!shouldFilter) {
250
- state.unfilteredCount = dataArray.length;
251
- }
252
- if (shouldFilterClientSide) {
253
- state.unfilteredCount = dataArray.length;
254
-
255
- dataArray = shouldFilterAgain
256
- ? filterDataSource({
257
- dataArray,
258
- toPrimaryKey,
259
- filterTypes,
260
- operatorsByFilterType,
261
- filterFunction,
262
- filterValue,
263
- })
264
- : state.lastFilterDataArray!;
265
-
266
- state.lastFilterDataArray = dataArray;
267
- state.filteredAt = now;
268
- }
269
-
270
- state.filteredCount = dataArray.length;
271
-
272
- state.postFilterDataArray = dataArray;
273
-
274
- const shouldSortClientSide = shouldSort && state.sortMode === 'local';
275
- if (shouldSortClientSide) {
276
- const prevKnownTypes = multisort.knownTypes;
277
- multisort.knownTypes = state.sortTypes;
278
- dataArray = shouldSortAgain
279
- ? multisort(sortInfo!, [...dataArray])
280
- : state.lastSortDataArray!;
281
-
282
- multisort.knownTypes = prevKnownTypes;
283
-
284
- state.lastSortDataArray = dataArray;
285
- state.sortedAt = now;
286
- }
287
- state.postSortDataArray = dataArray;
288
-
289
- let rowInfoDataArray: InfiniteTableRowInfo<T>[] = state.dataArray;
290
-
291
- const rowSelectionState =
292
- state.rowSelection instanceof RowSelectionState
293
- ? state.rowSelection
294
- : undefined;
295
-
296
- //@ts-ignore
297
- rowSelectionState?.xcache();
298
-
299
- let isRowSelected:
300
- | ((rowInfo: InfiniteTableRowInfo<T>) => boolean | null)
301
- | undefined =
302
- state.selectionMode === 'single-row'
303
- ? (rowInfo) => {
304
- return rowInfo.id === state.rowSelection;
305
- }
306
- : state.selectionMode === 'multi-row'
307
- ? (rowInfo) => {
308
- const rowSelection = rowSelectionState as RowSelectionState;
309
-
310
- return rowInfo.isGroupRow
311
- ? rowSelection.getGroupRowSelectionState(rowInfo.groupKeys)
312
- : rowSelection.isRowSelected(
313
- rowInfo.id,
314
- rowInfo.dataSourceHasGrouping ? rowInfo.groupKeys : undefined,
315
- );
316
- }
317
- : undefined;
318
-
319
- if (state.isRowSelected && state.selectionMode === 'multi-row') {
320
- isRowSelected = (rowInfo) =>
321
- state.isRowSelected!(
322
- rowInfo,
323
- rowSelectionState as RowSelectionState,
324
- state.selectionMode as 'multi-row',
325
- );
326
- }
327
-
328
- if (shouldGroup) {
329
- if (shouldGroupAgain) {
330
- let aggregationReducers = state.aggregationReducers;
331
-
332
- const groupResult = state.lazyLoad
333
- ? lazyGroup(
334
- {
335
- groupBy,
336
- // groupByIndex: 0,
337
- // parentGroupKeys: [],
338
- pivot: pivotBy,
339
- mappings: state.pivotMappings,
340
- reducers: aggregationReducers,
341
- indexer: state.indexer,
342
- toPrimaryKey,
343
- },
344
- state.originalLazyGroupData,
345
- )
346
- : group(
347
- {
348
- groupBy,
349
- pivot: pivotBy,
350
- reducers: aggregationReducers,
351
- },
352
- dataArray,
353
- );
354
-
355
- state.groupDeepMap = groupResult.deepMap;
356
- if (rowSelectionState) {
357
- rowSelectionState.getConfig = rowSelectionStateConfigGetter(state);
358
- }
359
-
360
- const flattenResult = enhancedFlatten({
361
- groupResult,
362
- lazyLoad: !!state.lazyLoad,
363
- reducers: aggregationReducers,
364
- toPrimaryKey,
365
- isRowSelected,
366
- rowSelectionState,
367
-
368
- groupRowsState: state.groupRowsState,
369
- generateGroupRows: state.generateGroupRows,
370
- });
371
-
372
- rowInfoDataArray = flattenResult.data;
373
-
374
- state.groupRowsIndexesInDataArray = flattenResult.groupRowsIndexes;
375
- state.reducerResults = groupResult.reducerResults;
376
-
377
- const pivotGroupsAndCols = pivotBy
378
- ? getPivotColumnsAndColumnGroups<T>({
379
- deepMap: groupResult.topLevelPivotColumns!,
380
- pivotBy,
381
-
382
- pivotTotalColumnPosition: state.pivotTotalColumnPosition ?? 'end',
383
- pivotGrandTotalColumnPosition:
384
- state.pivotGrandTotalColumnPosition ?? false,
385
- reducers: state.aggregationReducers,
386
- showSeparatePivotColumnForSingleAggregation:
387
- state.showSeparatePivotColumnForSingleAggregation,
388
- })
389
- : undefined;
390
-
391
- state.pivotColumns = pivotGroupsAndCols?.columns;
392
- state.pivotColumnGroups = pivotGroupsAndCols?.columnGroups;
393
- } else {
394
- rowInfoDataArray = state.lastGroupDataArray!;
395
- }
396
-
397
- state.lastGroupDataArray = rowInfoDataArray;
398
- state.groupedAt = now;
399
- } else {
400
- state.groupDeepMap = undefined;
401
- state.pivotColumns = undefined;
402
- state.groupRowsIndexesInDataArray = undefined;
403
- const arrayDifferentAfterSortStep =
404
- previousState.postSortDataArray != state.postSortDataArray;
405
-
406
- if (
407
- arrayDifferentAfterSortStep ||
408
- groupsDepsChanged ||
409
- selectionDepsChanged
410
- ) {
411
- rowInfoDataArray = dataArray.map((data, index) => {
412
- const rowInfo = toRowInfo(
413
- data,
414
- data ? toPrimaryKey(data) : index,
415
- index,
416
- isRowSelected,
417
- );
418
-
419
- return rowInfo;
420
- });
421
- }
422
- }
423
-
424
- state.postGroupDataArray = rowInfoDataArray;
425
-
426
- if (rowInfoDataArray !== state.dataArray) {
427
- state.updatedAt = now;
428
- }
429
-
430
- state.dataArray = rowInfoDataArray;
431
- state.reducedAt = now;
432
-
433
- if (state.selectionMode === 'multi-row') {
434
- if (shouldGroup && state.lazyLoad) {
435
- let allRowsSelected = true;
436
- let someRowsSelected = false;
437
-
438
- state.dataArray.forEach((rowInfo) => {
439
- if (rowInfo.isGroupRow && rowInfo.groupKeys.length === 1) {
440
- const { rowSelected } = rowInfo;
441
- if (rowSelected !== true) {
442
- allRowsSelected = false;
443
- }
444
- if (rowSelected === true || rowSelected === null) {
445
- someRowsSelected = true;
446
- }
447
- }
448
- });
449
- state.allRowsSelected = allRowsSelected;
450
- state.someRowsSelected = someRowsSelected;
451
- } else {
452
- const dataArrayCount = state.filteredCount;
453
- const selectedRowCount =
454
- (state.rowSelection as RowSelectionState)!.getSelectedCount();
455
-
456
- state.allRowsSelected = dataArrayCount === selectedRowCount;
457
- state.someRowsSelected = selectedRowCount > 0;
458
- }
459
- }
460
-
461
- if (__DEV__) {
462
- (globalThis as any).state = state;
463
- }
464
-
465
- return state;
466
- }
@@ -1,27 +0,0 @@
1
- import { InfiniteTableRowInfo } from '../../../utils/groupAndPivot';
2
-
3
- export const showLoadingIcon = (
4
- rowInfo: InfiniteTableRowInfo<any>,
5
- ): boolean => {
6
- // display loading indicator when row data is not yet available
7
- // if (rowInfo?.data == undefined) {
8
- // return true;
9
- // }
10
-
11
- // if (rowInfo.dataSourceHasGrouping) {
12
- // return rowInfo.isGroupRow
13
- // ? rowInfo.childrenLoading ||
14
- // !rowInfo.selfLoaded ||
15
- // !rowInfo.childrenAvailable
16
- // : !rowInfo.selfLoaded;
17
- // }
18
-
19
- if (rowInfo.dataSourceHasGrouping) {
20
- return rowInfo.isGroupRow
21
- ? rowInfo.childrenLoading || !rowInfo.selfLoaded
22
- : !rowInfo.selfLoaded;
23
- }
24
-
25
- // // display loading indicator when row is loading group(children rows) data
26
- return !rowInfo.selfLoaded;
27
- };