@infinite-table/infinite-react 0.5.0 → 0.5.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (282) hide show
  1. package/README.md +104 -0
  2. package/index.css +896 -0
  3. package/index.d.ts +2264 -0
  4. package/index.esm.css +896 -0
  5. package/index.esm.js +15404 -0
  6. package/index.js +15240 -0
  7. package/package.json +9 -94
  8. package/.vscode/settings.json +0 -3
  9. package/API.md +0 -0
  10. package/build/buildPackageJson.js +0 -43
  11. package/build/scripts/test.js +0 -37
  12. package/bundler.config.js +0 -25
  13. package/globals.d.ts +0 -7
  14. package/rollup.config.js +0 -15
  15. package/run-build-deepmap.js +0 -47
  16. package/run-build.js +0 -45
  17. package/run-dts-concat.js +0 -21
  18. package/src/components/CSSVariableWatch.tsx +0 -82
  19. package/src/components/DataSource/BooleanCollectionState.ts +0 -214
  20. package/src/components/DataSource/BooleanDeepCollectionState.ts +0 -208
  21. package/src/components/DataSource/DataSourceContext.ts +0 -20
  22. package/src/components/DataSource/GroupRowsState.ts +0 -74
  23. package/src/components/DataSource/Indexer.ts +0 -27
  24. package/src/components/DataSource/RowSelectionState.ts +0 -763
  25. package/src/components/DataSource/defaultFilterTypes.ts +0 -64
  26. package/src/components/DataSource/index.tsx +0 -108
  27. package/src/components/DataSource/privateHooks/getChangeDetect.ts +0 -7
  28. package/src/components/DataSource/privateHooks/useLoadData.ts +0 -783
  29. package/src/components/DataSource/publicHooks/useDataSource.ts +0 -19
  30. package/src/components/DataSource/publicHooks/useDataSourceActions.ts +0 -14
  31. package/src/components/DataSource/state/getInitialState.ts +0 -494
  32. package/src/components/DataSource/state/normalizeSortInfo.ts +0 -35
  33. package/src/components/DataSource/state/reducer.ts +0 -466
  34. package/src/components/DataSource/state/rowInfoStatus.ts +0 -27
  35. package/src/components/DataSource/types.ts +0 -548
  36. package/src/components/HeadlessTable/HeadlessTableWithPinnedContainers.tsx +0 -142
  37. package/src/components/HeadlessTable/MappedCells.ts +0 -251
  38. package/src/components/HeadlessTable/RawTable.tsx +0 -98
  39. package/src/components/HeadlessTable/ReactHeadlessTableRenderer.tsx +0 -1516
  40. package/src/components/HeadlessTable/index.tsx +0 -234
  41. package/src/components/InfiniteTable/InfiniteCls.css.ts +0 -164
  42. package/src/components/InfiniteTable/InfiniteTableContext.ts +0 -16
  43. package/src/components/InfiniteTable/api/getImperativeApi.ts +0 -391
  44. package/src/components/InfiniteTable/api/getSelectionApi.ts +0 -364
  45. package/src/components/InfiniteTable/api/type.ts +0 -11
  46. package/src/components/InfiniteTable/components/ActiveCellIndicator.css.ts +0 -51
  47. package/src/components/InfiniteTable/components/ActiveCellIndicator.tsx +0 -116
  48. package/src/components/InfiniteTable/components/ActiveRowIndicator.css.ts +0 -56
  49. package/src/components/InfiniteTable/components/ActiveRowIndicator.tsx +0 -94
  50. package/src/components/InfiniteTable/components/CheckBox.css.ts +0 -13
  51. package/src/components/InfiniteTable/components/CheckBox.tsx +0 -96
  52. package/src/components/InfiniteTable/components/FilterEditors.tsx +0 -52
  53. package/src/components/InfiniteTable/components/InfiniteTableBody/InfiniteTableBody.tsx +0 -27
  54. package/src/components/InfiniteTable/components/InfiniteTableBody/index.tsx +0 -1
  55. package/src/components/InfiniteTable/components/InfiniteTableFooter/InfiniteTableFooter.tsx +0 -31
  56. package/src/components/InfiniteTable/components/InfiniteTableFooter/index.tsx +0 -1
  57. package/src/components/InfiniteTable/components/InfiniteTableHeader/InfiniteTableColumnHeaderFilter.tsx +0 -102
  58. package/src/components/InfiniteTable/components/InfiniteTableHeader/InfiniteTableHeader.tsx +0 -163
  59. package/src/components/InfiniteTable/components/InfiniteTableHeader/InfiniteTableHeaderCell.tsx +0 -574
  60. package/src/components/InfiniteTable/components/InfiniteTableHeader/InfiniteTableHeaderGroup.tsx +0 -79
  61. package/src/components/InfiniteTable/components/InfiniteTableHeader/InfiniteTableHeaderTypes.tsx +0 -25
  62. package/src/components/InfiniteTable/components/InfiniteTableHeader/InfiniteTableHeaderWrapper.tsx +0 -185
  63. package/src/components/InfiniteTable/components/InfiniteTableHeader/ResizeHandle/GroupResizeHandle.tsx +0 -159
  64. package/src/components/InfiniteTable/components/InfiniteTableHeader/ResizeHandle/ResizeHandle.css.ts +0 -124
  65. package/src/components/InfiniteTable/components/InfiniteTableHeader/ResizeHandle/columnResizer.ts +0 -166
  66. package/src/components/InfiniteTable/components/InfiniteTableHeader/ResizeHandle/index.tsx +0 -146
  67. package/src/components/InfiniteTable/components/InfiniteTableHeader/buildColumnAndGroupTree.ts +0 -240
  68. package/src/components/InfiniteTable/components/InfiniteTableHeader/header.css.ts +0 -358
  69. package/src/components/InfiniteTable/components/InfiniteTableHeader/index.tsx +0 -1
  70. package/src/components/InfiniteTable/components/InfiniteTableHeader/useColumnGroupResizeHandle.tsx +0 -114
  71. package/src/components/InfiniteTable/components/InfiniteTableHeader/useColumnResizeHandle.tsx +0 -146
  72. package/src/components/InfiniteTable/components/InfiniteTableLicenseFooter/footer.css.ts +0 -7
  73. package/src/components/InfiniteTable/components/InfiniteTableLicenseFooter/index.tsx +0 -110
  74. package/src/components/InfiniteTable/components/InfiniteTableRow/InfiniteTableCell.tsx +0 -120
  75. package/src/components/InfiniteTable/components/InfiniteTableRow/InfiniteTableCellTypes.ts +0 -74
  76. package/src/components/InfiniteTable/components/InfiniteTableRow/InfiniteTableColumnCell.tsx +0 -457
  77. package/src/components/InfiniteTable/components/InfiniteTableRow/InfiniteTableRow.tsx +0 -107
  78. package/src/components/InfiniteTable/components/InfiniteTableRow/InfiniteTableRowClassName.ts +0 -6
  79. package/src/components/InfiniteTable/components/InfiniteTableRow/InfiniteTableRowTypes.ts +0 -32
  80. package/src/components/InfiniteTable/components/InfiniteTableRow/InfiniteTableRowUnvirtualized.tsx +0 -75
  81. package/src/components/InfiniteTable/components/InfiniteTableRow/columnRendering.tsx +0 -263
  82. package/src/components/InfiniteTable/components/InfiniteTableRow/index.tsx +0 -1
  83. package/src/components/InfiniteTable/components/InfiniteTableRow/row.css.ts +0 -74
  84. package/src/components/InfiniteTable/components/InfiniteTableRow/useRowDOMProps.ts +0 -199
  85. package/src/components/InfiniteTable/components/LoadMask.css.ts +0 -34
  86. package/src/components/InfiniteTable/components/LoadMask.tsx +0 -27
  87. package/src/components/InfiniteTable/components/ScrollbarPlaceholder.tsx +0 -56
  88. package/src/components/InfiniteTable/components/cell.css.ts +0 -192
  89. package/src/components/InfiniteTable/components/icons/ArrowDown.tsx +0 -14
  90. package/src/components/InfiniteTable/components/icons/ArrowUp.tsx +0 -14
  91. package/src/components/InfiniteTable/components/icons/ExpanderIcon.css.ts +0 -31
  92. package/src/components/InfiniteTable/components/icons/ExpanderIcon.tsx +0 -63
  93. package/src/components/InfiniteTable/components/icons/Icon.tsx +0 -18
  94. package/src/components/InfiniteTable/components/icons/InfiniteTableIconClassName.ts +0 -1
  95. package/src/components/InfiniteTable/components/icons/LoadingIcon.css.ts +0 -8
  96. package/src/components/InfiniteTable/components/icons/LoadingIcon.tsx +0 -45
  97. package/src/components/InfiniteTable/components/icons/MenuIcon.tsx +0 -50
  98. package/src/components/InfiniteTable/components/icons/SortIcon.tsx +0 -113
  99. package/src/components/InfiniteTable/eventHandlers/eventHandlerTypes.ts +0 -57
  100. package/src/components/InfiniteTable/eventHandlers/index.ts +0 -95
  101. package/src/components/InfiniteTable/eventHandlers/keyboardNavigation.ts +0 -232
  102. package/src/components/InfiniteTable/eventHandlers/keyboardSelection.ts +0 -110
  103. package/src/components/InfiniteTable/eventHandlers/onCellClick.ts +0 -94
  104. package/src/components/InfiniteTable/eventHandlers/onKeyDown.ts +0 -25
  105. package/src/components/InfiniteTable/hooks/adjustColumnOrderForAllColumns.ts +0 -70
  106. package/src/components/InfiniteTable/hooks/reorderColumnsOnDrag.ts +0 -476
  107. package/src/components/InfiniteTable/hooks/useAutoSizeColumns.ts +0 -206
  108. package/src/components/InfiniteTable/hooks/useCellClassName.ts +0 -80
  109. package/src/components/InfiniteTable/hooks/useCellRendering.tsx +0 -217
  110. package/src/components/InfiniteTable/hooks/useColumnGroups.ts +0 -71
  111. package/src/components/InfiniteTable/hooks/useColumnMenu.ts +0 -72
  112. package/src/components/InfiniteTable/hooks/useColumnPointerEvents.ts +0 -258
  113. package/src/components/InfiniteTable/hooks/useColumnRowspan.ts +0 -43
  114. package/src/components/InfiniteTable/hooks/useColumnSizeFn.ts +0 -24
  115. package/src/components/InfiniteTable/hooks/useColumnsWhen.ts +0 -582
  116. package/src/components/InfiniteTable/hooks/useComputed.ts +0 -186
  117. package/src/components/InfiniteTable/hooks/useComputedVisibleColumns.ts +0 -219
  118. package/src/components/InfiniteTable/hooks/useDOMProps.ts +0 -306
  119. package/src/components/InfiniteTable/hooks/useEffectWithRaf.ts +0 -47
  120. package/src/components/InfiniteTable/hooks/useInfiniteTable.ts +0 -10
  121. package/src/components/InfiniteTable/hooks/useInfiniteTableState.ts +0 -11
  122. package/src/components/InfiniteTable/hooks/useInternalProps.ts +0 -8
  123. package/src/components/InfiniteTable/hooks/useLicense/LicenseDetails.ts +0 -13
  124. package/src/components/InfiniteTable/hooks/useLicense/crc32.ts +0 -56
  125. package/src/components/InfiniteTable/hooks/useLicense/decode.ts +0 -147
  126. package/src/components/InfiniteTable/hooks/useLicense/useLicense.ts +0 -39
  127. package/src/components/InfiniteTable/hooks/useRerenderOnKeyChange.ts +0 -21
  128. package/src/components/InfiniteTable/hooks/useRowHover.ts +0 -18
  129. package/src/components/InfiniteTable/hooks/useScrollToActiveCell.ts +0 -48
  130. package/src/components/InfiniteTable/hooks/useScrollToActiveRow.ts +0 -44
  131. package/src/components/InfiniteTable/hooks/useScrollbars.ts +0 -51
  132. package/src/components/InfiniteTable/hooks/useToggleGroupRow.ts +0 -56
  133. package/src/components/InfiniteTable/hooks/useUnpinnedRendering.tsx +0 -165
  134. package/src/components/InfiniteTable/hooks/useYourBrain.ts +0 -55
  135. package/src/components/InfiniteTable/index.tsx +0 -352
  136. package/src/components/InfiniteTable/internalProps.ts +0 -4
  137. package/src/components/InfiniteTable/state/computeColumnGroupsDepths.ts +0 -29
  138. package/src/components/InfiniteTable/state/getColumnVisibilityForHideEmptyGroupColumns.ts +0 -127
  139. package/src/components/InfiniteTable/state/getInitialState.ts +0 -375
  140. package/src/components/InfiniteTable/theme.css.ts +0 -556
  141. package/src/components/InfiniteTable/types/InfiniteTableAction.ts +0 -6
  142. package/src/components/InfiniteTable/types/InfiniteTableActionType.ts +0 -12
  143. package/src/components/InfiniteTable/types/InfiniteTableColumn.ts +0 -478
  144. package/src/components/InfiniteTable/types/InfiniteTableComputedValues.ts +0 -43
  145. package/src/components/InfiniteTable/types/InfiniteTableContextValue.ts +0 -12
  146. package/src/components/InfiniteTable/types/InfiniteTableInternalProps.ts +0 -3
  147. package/src/components/InfiniteTable/types/InfiniteTableProps.ts +0 -511
  148. package/src/components/InfiniteTable/types/InfiniteTableState.ts +0 -195
  149. package/src/components/InfiniteTable/types/Utility.ts +0 -35
  150. package/src/components/InfiniteTable/types/index.ts +0 -96
  151. package/src/components/InfiniteTable/utilities.css.ts +0 -179
  152. package/src/components/InfiniteTable/utils/MultiRowSelector.ts +0 -111
  153. package/src/components/InfiniteTable/utils/RenderHookComponentForInfinite.tsx +0 -52
  154. package/src/components/InfiniteTable/utils/adjustColumnOrderForPinning.ts +0 -33
  155. package/src/components/InfiniteTable/utils/assignFiltered.ts +0 -29
  156. package/src/components/InfiniteTable/utils/defaultGetColumContextMenuItems.tsx +0 -108
  157. package/src/components/InfiniteTable/utils/getColumnComputedType.ts +0 -33
  158. package/src/components/InfiniteTable/utils/getColumnForGroupBy.tsx +0 -313
  159. package/src/components/InfiniteTable/utils/getComputedVisibleColumns.ts +0 -773
  160. package/src/components/InfiniteTable/utils/getContextMenuForColumn.tsx +0 -72
  161. package/src/components/InfiniteTable/utils/infiniteDOMUtils.ts +0 -189
  162. package/src/components/InfiniteTable/utils/mapToObject.ts +0 -20
  163. package/src/components/InfiniteTable/utils/moveXatY.ts +0 -25
  164. package/src/components/InfiniteTable/utils/objectValuesExcept.ts +0 -9
  165. package/src/components/InfiniteTable/utils/progressiveSpeedScroller.ts +0 -158
  166. package/src/components/InfiniteTable/utils/rafFn.ts +0 -13
  167. package/src/components/InfiniteTable/utils/toCSSVarName.ts +0 -1
  168. package/src/components/InfiniteTable/utils/toMap.ts +0 -24
  169. package/src/components/Menu/Menu.tsx +0 -750
  170. package/src/components/Menu/MenuCls.css.ts +0 -139
  171. package/src/components/Menu/MenuContext.ts +0 -10
  172. package/src/components/Menu/MenuContextValue.ts +0 -15
  173. package/src/components/Menu/MenuProps.ts +0 -98
  174. package/src/components/Menu/MenuState.ts +0 -56
  175. package/src/components/Menu/MenuTriangleContext.ts +0 -352
  176. package/src/components/Menu/childrenToRuntimeItems.tsx +0 -103
  177. package/src/components/Menu/getMenuState.tsx +0 -119
  178. package/src/components/Menu/index.tsx +0 -88
  179. package/src/components/Menu/propToIdentifyMenu.ts +0 -1
  180. package/src/components/RawList/AvoidReactDiff.tsx +0 -48
  181. package/src/components/RawList/MappedItems.ts +0 -143
  182. package/src/components/RawList/ReactVirtualRenderer.tsx +0 -307
  183. package/src/components/RawList/index.tsx +0 -42
  184. package/src/components/RawList/types.ts +0 -23
  185. package/src/components/RawList/useVirtualRenderer.ts +0 -36
  186. package/src/components/RenderHookComponent.tsx +0 -10
  187. package/src/components/ResizeObserver/index.tsx +0 -170
  188. package/src/components/VirtualBrain/MatrixBrain.ts +0 -1621
  189. package/src/components/VirtualBrain/ScrollListener.ts +0 -39
  190. package/src/components/VirtualBrain/index.ts +0 -664
  191. package/src/components/VirtualList/ColumnListWithExternalScrolling.tsx +0 -78
  192. package/src/components/VirtualList/InfiniteListRootClassName.ts +0 -1
  193. package/src/components/VirtualList/RowListWithExternalScrolling.tsx +0 -120
  194. package/src/components/VirtualList/SpacePlaceholder.tsx +0 -32
  195. package/src/components/VirtualList/VirtualList.css.ts +0 -29
  196. package/src/components/VirtualList/VirtualList.tsx +0 -141
  197. package/src/components/VirtualList/VirtualRowList.tsx +0 -34
  198. package/src/components/VirtualList/types.ts +0 -56
  199. package/src/components/VirtualList/useCorrectHeightForRowElements.ts +0 -14
  200. package/src/components/VirtualScrollContainer/VirtualScrollContainer.css.ts +0 -51
  201. package/src/components/VirtualScrollContainer/getScrollableClassName.ts +0 -30
  202. package/src/components/VirtualScrollContainer/index.tsx +0 -63
  203. package/src/components/flexbox/index.ts +0 -562
  204. package/src/components/hooks/useComponentState/index.tsx +0 -562
  205. package/src/components/hooks/useComponentState/types.ts +0 -32
  206. package/src/components/hooks/useEffectOnceWithProperUnmount.ts +0 -33
  207. package/src/components/hooks/useEffectWithChanges.ts +0 -56
  208. package/src/components/hooks/useImmutableRef.ts +0 -7
  209. package/src/components/hooks/useInterceptedMap.ts +0 -71
  210. package/src/components/hooks/useLatest.tsx +0 -8
  211. package/src/components/hooks/useLazyLatest.ts +0 -23
  212. package/src/components/hooks/useMemoShallowObjectMerge.ts +0 -16
  213. package/src/components/hooks/useMounted.ts +0 -18
  214. package/src/components/hooks/useOnMount.ts +0 -21
  215. package/src/components/hooks/useOnScroll.ts +0 -34
  216. package/src/components/hooks/useOnce.ts +0 -10
  217. package/src/components/hooks/useOverlay/index.tsx +0 -418
  218. package/src/components/hooks/usePrevious.ts +0 -8
  219. package/src/components/hooks/usePropertyOld.ts +0 -168
  220. package/src/components/hooks/useRerender.ts +0 -12
  221. package/src/components/hooks/xuseProperty.ts +0 -165
  222. package/src/components/types/CellPosition.ts +0 -4
  223. package/src/components/types/NonUndefined.ts +0 -1
  224. package/src/components/types/RemoveObject.ts +0 -22
  225. package/src/components/types/Renderable.ts +0 -3
  226. package/src/components/types/ScrollPosition.ts +0 -7
  227. package/src/components/types/Setter.ts +0 -2
  228. package/src/components/types/Size.ts +0 -6
  229. package/src/components/types/SubscriptionCallback.ts +0 -10
  230. package/src/components/types/VoidFn.ts +0 -1
  231. package/src/components/utils/buildSubscriptionCallback.tsx +0 -60
  232. package/src/components/utils/clamp.ts +0 -3
  233. package/src/components/utils/debounce.ts +0 -16
  234. package/src/components/utils/decamelize.ts +0 -11
  235. package/src/components/utils/discardCallsWithEqualArg.ts +0 -42
  236. package/src/components/utils/getRenderIndexes.ts +0 -33
  237. package/src/components/utils/getScrollbarWidth.ts +0 -31
  238. package/src/components/utils/getVirtualRenderCount.ts +0 -21
  239. package/src/components/utils/isControlled.ts +0 -12
  240. package/src/components/utils/isControlledValue.ts +0 -5
  241. package/src/index.tsx +0 -34
  242. package/src/test.tsx +0 -18
  243. package/src/utils/DeepMap/index.ts +0 -588
  244. package/src/utils/DeepMap/once.ts +0 -16
  245. package/src/utils/DeepMap/sortAscending.ts +0 -1
  246. package/src/utils/DeepMap/tsconfig.deepmap.json +0 -17
  247. package/src/utils/DeepMap/xpackage.json +0 -26
  248. package/src/utils/debug.ts +0 -40
  249. package/src/utils/deepClone.ts +0 -38
  250. package/src/utils/getGlobal.ts +0 -3
  251. package/src/utils/groupAndPivot/defaultToKey.ts +0 -3
  252. package/src/utils/groupAndPivot/getGroupKeysForDataItem.ts +0 -19
  253. package/src/utils/groupAndPivot/getPivotColumnsAndColumnGroups.ts +0 -361
  254. package/src/utils/groupAndPivot/index.ts +0 -1229
  255. package/src/utils/groupAndPivot/types.ts +0 -10
  256. package/src/utils/join.ts +0 -4
  257. package/src/utils/mathIntersection.ts +0 -21
  258. package/src/utils/minified.d.ts +0 -2
  259. package/src/utils/minified.js +0 -6
  260. package/src/utils/multisort/index.ts +0 -151
  261. package/src/utils/multisort/sortTypes.ts +0 -25
  262. package/src/utils/notes-status.md +0 -92
  263. package/src/utils/pageGeometry/ConvexPoly.ts +0 -34
  264. package/src/utils/pageGeometry/Point.ts +0 -51
  265. package/src/utils/pageGeometry/PolyWithPoints.ts +0 -52
  266. package/src/utils/pageGeometry/Rectangle.ts +0 -98
  267. package/src/utils/pageGeometry/Triangle.ts +0 -16
  268. package/src/utils/pageGeometry/alignment/index.ts +0 -221
  269. package/src/utils/pageGeometry/polyContainsPoint.ts +0 -182
  270. package/src/utils/pageGeometry/types.ts +0 -3
  271. package/src/utils/proxyFnCall.ts +0 -46
  272. package/src/utils/raf.ts +0 -13
  273. package/src/utils/selectParent.ts +0 -18
  274. package/src/utils/shallowEqualObjects.ts +0 -49
  275. package/src/utils/stripVar.ts +0 -3
  276. package/src/utils/toUpperFirst.ts +0 -5
  277. package/todo.md +0 -2
  278. package/tsconfig.build.json +0 -8
  279. package/tsconfig.dev.json +0 -7
  280. package/tsconfig.json +0 -30
  281. package/tsconfig.typebundler.json +0 -13
  282. package/typedoc.json +0 -4
@@ -1,168 +0,0 @@
1
- import {
2
- useState,
3
- useRef,
4
- useLayoutEffect,
5
- useEffect,
6
- useCallback,
7
- } from 'react';
8
- import { toUpperFirst } from '../../utils/toUpperFirst';
9
- import { AllPropertiesOrNone } from '../InfiniteTable/types/Utility';
10
- import { Setter } from '../types/Setter';
11
- import { isControlled } from '../utils/isControlled';
12
- import { isControlledValue } from '../utils/isControlledValue';
13
- import { useLatest } from './useLatest';
14
-
15
- import { usePrevious } from './usePrevious';
16
-
17
- const DEFAULT_CONFIG = {
18
- controlledToState: true,
19
- defaultValue: undefined,
20
- };
21
-
22
- function useProperty<V extends keyof T_PROPS, T_PROPS, NORMALIZED>(
23
- propName: V,
24
- props: T_PROPS,
25
- config: AllPropertiesOrNone<{
26
- fromState?: () => NORMALIZED;
27
- setState?: (v: NORMALIZED) => void;
28
- }> & {
29
- defaultValue?: T_PROPS[V];
30
-
31
- normalize?: (v?: NORMALIZED | T_PROPS[V]) => NORMALIZED;
32
- onControlledChange?: (n: NORMALIZED, v: NORMALIZED | T_PROPS[V]) => void;
33
- controlledToState?: boolean;
34
- } = {
35
- normalize: (v?: NORMALIZED | T_PROPS[V]): NORMALIZED => {
36
- return v as any as NORMALIZED;
37
- },
38
- controlledToState: DEFAULT_CONFIG.controlledToState,
39
- },
40
- ): [NORMALIZED, Setter<NORMALIZED | T_PROPS[V]>] {
41
- config = config ?? DEFAULT_CONFIG;
42
- const propsRef = useRef<T_PROPS>(props);
43
-
44
- const getConfig = useLatest(config);
45
-
46
- const getNormalized = (v?: NORMALIZED | T_PROPS[V]): NORMALIZED => {
47
- const fn =
48
- getConfig().normalize ??
49
- ((v?: NORMALIZED | T_PROPS[V]): NORMALIZED => {
50
- return v as any as NORMALIZED;
51
- });
52
-
53
- return fn(v);
54
- };
55
-
56
- const controlledToState =
57
- config.controlledToState ?? DEFAULT_CONFIG.controlledToState;
58
-
59
- const upperPropName = toUpperFirst(propName as string);
60
- const defaultPropName = `default${upperPropName}` as V;
61
-
62
- const defaultValue =
63
- props[defaultPropName] !== undefined
64
- ? props[defaultPropName]
65
- : config.defaultValue;
66
-
67
- let [stateValue, setStateValue] = useState<NORMALIZED>(() => {
68
- let val = getNormalized(defaultValue);
69
- const config = getConfig();
70
-
71
- if (val === undefined && config && config.fromState) {
72
- val = config.fromState();
73
- }
74
- return val;
75
- });
76
-
77
- if (config && config.fromState) {
78
- stateValue = config.fromState();
79
- }
80
-
81
- const propValue = props[propName];
82
-
83
- const controlled: boolean = isControlled(propName, props);
84
- const storeInState = !controlled || controlledToState;
85
-
86
- const value: NORMALIZED = !controlled ? stateValue : getNormalized(propValue);
87
-
88
- const setState = useCallback(
89
- (
90
- value: NORMALIZED | T_PROPS[V],
91
- beforeSetState?: (
92
- normalizedValue: NORMALIZED,
93
- value: NORMALIZED | T_PROPS[V],
94
- ) => void,
95
- ) => {
96
- const config = getConfig();
97
- const normalizedValue: NORMALIZED = getNormalized(value);
98
-
99
- if (beforeSetState) {
100
- beforeSetState(normalizedValue, value);
101
- }
102
- if (config && config.setState) {
103
- config.setState(normalizedValue);
104
- } else {
105
- setStateValue(normalizedValue);
106
- }
107
- },
108
- [setStateValue],
109
- );
110
-
111
- const setValue = useCallback(
112
- (
113
- val:
114
- | (NORMALIZED | T_PROPS[V])
115
- | ((prevVal: NORMALIZED | T_PROPS[V]) => NORMALIZED | T_PROPS[V]),
116
- ): void => {
117
- // const latestProps: T_PROPS = propsRef.current;
118
- const latestValue: NORMALIZED = valueRef.current;
119
- // const currentProps: T_PROPS = latestProps;
120
-
121
- const newValue: T_PROPS[V] | NORMALIZED =
122
- val instanceof Function ? val(latestValue) : val;
123
-
124
- if (storeInState) {
125
- setState(newValue);
126
- }
127
-
128
- // const callbackPropName = `on${upperPropName}Change` as string;
129
- // const callbackProp = (currentProps as any)[callbackPropName] as Function;
130
-
131
- // if (typeof callbackProp === 'function') {
132
- // callbackProp(newValue);
133
- // }
134
- },
135
- [setState, storeInState],
136
- );
137
-
138
- const valueRef = useRef<NORMALIZED>(value);
139
-
140
- useLayoutEffect(() => {
141
- propsRef.current = props;
142
- valueRef.current = value;
143
- });
144
-
145
- useEffect(() => {
146
- const latestProps = propsRef.current;
147
- const propValue = latestProps[propName];
148
- if (isControlledValue(propValue) && config?.controlledToState) {
149
- setState(propValue, config.onControlledChange);
150
- }
151
- }, [propValue, setState]);
152
-
153
- const prevStateValue = usePrevious(stateValue);
154
-
155
- useEffect(() => {
156
- const currentProps = propsRef.current;
157
- const callbackPropName = `on${upperPropName}Change` as string;
158
- const callbackProp = (currentProps as any)[callbackPropName] as Function;
159
-
160
- if (typeof callbackProp === 'function' && stateValue !== prevStateValue) {
161
- callbackProp(stateValue);
162
- }
163
- }, [stateValue, prevStateValue]);
164
-
165
- return [value, setValue];
166
- }
167
-
168
- export default useProperty;
@@ -1,12 +0,0 @@
1
- import { useCallback, useState } from 'react';
2
-
3
- export const useRerender = (): [number, () => void] => {
4
- const [state, setState] = useState(0);
5
-
6
- return [
7
- state,
8
- useCallback(() => {
9
- setState((state) => state + 1);
10
- }, [setState]),
11
- ];
12
- };
@@ -1,165 +0,0 @@
1
- /*eslint-disable */
2
- import { useEffect, useCallback, useRef } from 'react';
3
-
4
- import { toUpperFirst } from '../../utils/toUpperFirst';
5
- // import { AllPropertiesOrNone } from '../InfiniteTable/types/Utility';
6
- import { Setter } from '../types/Setter';
7
- import { isControlled } from '../utils/isControlled';
8
- import { isControlledValue } from '../utils/isControlledValue';
9
- import { useLatest } from './useLatest';
10
- import { usePrevious } from './usePrevious';
11
-
12
- export const notifyChange = (props: any, propName: string, newValue: any) => {
13
- const upperPropName = toUpperFirst(propName);
14
- const callbackPropName = `on${upperPropName}Change` as string;
15
- const callbackProp = props[callbackPropName] as Function;
16
-
17
- if (typeof callbackProp === 'function') {
18
- callbackProp(newValue);
19
- }
20
- };
21
-
22
- function useProperty<V extends keyof T_PROPS, T_PROPS, NORMALIZED>(
23
- propName: V,
24
- props: T_PROPS,
25
- config: {
26
- fromState: (defaultValue?: NORMALIZED) => NORMALIZED;
27
- setState: (v: NORMALIZED) => void;
28
- } & {
29
- defaultValue?: T_PROPS[V];
30
-
31
- normalize?: (v?: NORMALIZED | T_PROPS[V]) => NORMALIZED;
32
- onControlledChange?: (n: NORMALIZED, v: NORMALIZED | T_PROPS[V]) => void;
33
- },
34
- ): [NORMALIZED, Setter<NORMALIZED | T_PROPS[V]>] {
35
- const getConfig = useLatest(config);
36
- const getProps = useLatest(props);
37
-
38
- // eslint-disable-next-line
39
- if (__DEV__) {
40
- const prevName = usePrevious(propName);
41
- if (prevName !== propName) {
42
- throw `useProperty hook: Cannot change managed property! Changed from "${prevName}" to "${propName}".`;
43
- }
44
- }
45
-
46
- const getNormalized = (v?: NORMALIZED | T_PROPS[V]): NORMALIZED => {
47
- const fn =
48
- getConfig().normalize ??
49
- ((v?: NORMALIZED | T_PROPS[V]): NORMALIZED => {
50
- return v as any as NORMALIZED;
51
- });
52
-
53
- return fn(v);
54
- };
55
-
56
- const stateValue = config.fromState();
57
- const propValue = props[propName];
58
- const controlled: boolean = isControlled(propName, props);
59
-
60
- const value: NORMALIZED = !controlled ? stateValue : getNormalized(propValue);
61
-
62
- const getValue = useLatest(value);
63
-
64
- const notify = (newValue: any) => {
65
- notifyChange(getProps(), propName as string, newValue);
66
- };
67
-
68
- const setValue = useCallback(
69
- (
70
- val:
71
- | (NORMALIZED | T_PROPS[V])
72
- | ((prevVal: NORMALIZED | T_PROPS[V]) => NORMALIZED | T_PROPS[V]),
73
- ): void => {
74
- const latestValue: NORMALIZED = getValue();
75
- const config = getConfig();
76
-
77
- let newValue: T_PROPS[V] | NORMALIZED =
78
- val instanceof Function ? val(latestValue) : val;
79
-
80
- newValue = getNormalized(newValue);
81
-
82
- if (isControlled(propName, getProps())) {
83
- // internalCacheRef.current = newValue; // this line is to avoid another notification later when state changes
84
- // config.setState(newValue);
85
- // CASE 2
86
- notify(newValue);
87
- } else {
88
- // CASE 3
89
- skipNotifyRef.current = newValue; // this line is to avoid another notification later when state changes
90
- config.setState(newValue);
91
- notify(newValue);
92
- }
93
- },
94
- [],
95
- );
96
-
97
- /***
98
- CONTROLLED:
99
- 1 - controlled change = config.setState + SKIP notify!!!
100
- 2 - controlled prop + setValue = DO notify + step 1
101
- 3 - controlled prop is same + internal state change (from config.fromState) = DO notify
102
-
103
- UNCONTROLLED:
104
- - uncontrolled is same + config.fromState() value changes = DO notify
105
- - uncontrolled + setValue = config.setState + DO NOTIFY
106
-
107
- SUMMARY:
108
- CASE 1 - controlled change = config.setState + SKIP notify
109
- CASE 2 - controlled prop + setValue = DO notify + step 1
110
- CASE 3 - uncontrolled prop + setValue = config.setState + DO notify = config.setState + step 4
111
- CASE 4 - controlled/uncontrolled prop is same + config.fromState changes = DO NOTIFY
112
-
113
- ALSO, there is another case we need to be aware of, but maybe we don't have to handle it here:
114
-
115
- controlled prop that doesn't update, but we call actions.setColumnOrder([...]), which should theoretically modify the internal state
116
- but actually it shouldn't, as it should be aware that it's a controlled prop, so should just notify
117
- */
118
-
119
- const initialRenderRef = useRef(true);
120
- const skipNotifyRef = useRef<NORMALIZED>();
121
-
122
- useEffect(() => {
123
- // CASE 1
124
- // const initialRender = initialRenderRef.current;
125
- // if (initialRender) {
126
- // return;
127
- // }
128
-
129
- const props = getProps();
130
- const propValue = props[propName];
131
- const isControlled = isControlledValue(propValue);
132
- if (isControlled) {
133
- const normalizedValue = getNormalized(propValue);
134
- skipNotifyRef.current = normalizedValue;
135
- getConfig().setState(normalizedValue);
136
- }
137
- }, [propValue]);
138
-
139
- useEffect(() => {
140
- const initialRender = initialRenderRef.current;
141
- if (initialRender) {
142
- return;
143
- }
144
- if (stateValue === skipNotifyRef.current) {
145
- // we had a change triggered by controlled change so we skip notify
146
- // part of CASE 1
147
- skipNotifyRef.current = undefined;
148
- return;
149
- }
150
- skipNotifyRef.current = undefined;
151
- // CASE 4
152
- notify(stateValue);
153
- }, [stateValue]);
154
-
155
- useEffect(() => {
156
- initialRenderRef.current = false;
157
- }, []);
158
-
159
- /**
160
- * WE NEED TO ALWAYS RETURN the value from STATE!!!
161
- */
162
- return [stateValue, setValue];
163
- }
164
-
165
- export { useProperty };
@@ -1,4 +0,0 @@
1
- export type CellPosition = {
2
- rowIndex: number;
3
- colIndex: number;
4
- };
@@ -1 +0,0 @@
1
- export type NonUndefined<T> = T extends undefined ? never : T;
@@ -1,22 +0,0 @@
1
- /**
2
-
3
- We have this utility - it's used in Menu Renderable declaration
4
- because:
5
-
6
- type Renderable = React.ReactNode;
7
-
8
- const x: Renderable = <div />;
9
- const y: Renderable = {};
10
-
11
- we don't want to allow the above `y` as a valid declaration
12
-
13
- it breaks some types in the Menu component as well
14
-
15
- */
16
- export type RemoveObject<T> = T extends null | undefined
17
- ? T
18
- : T extends unknown
19
- ? keyof T extends never
20
- ? never
21
- : T
22
- : never;
@@ -1,3 +0,0 @@
1
- import * as React from 'react';
2
-
3
- export type Renderable = React.ReactNode | JSX.Element;
@@ -1,7 +0,0 @@
1
- export interface ScrollPosition {
2
- scrollTop: number;
3
- scrollLeft: number;
4
- }
5
-
6
- export type OnScrollFn = (scrollPosition: ScrollPosition) => void;
7
- export type SetScrollPosition = OnScrollFn;
@@ -1,2 +0,0 @@
1
- import * as React from 'react';
2
- export interface Setter<T> extends React.Dispatch<React.SetStateAction<T>> {}
@@ -1,6 +0,0 @@
1
- export interface Size {
2
- width: number;
3
- height: number;
4
- }
5
-
6
- export type OnResizeFn = (size: { width: number; height: number }) => void;
@@ -1,10 +0,0 @@
1
- import { VoidFn } from './VoidFn';
2
-
3
- export type SubscriptionCallbackOnChangeFn<T> = (node: T | null) => void;
4
-
5
- export interface SubscriptionCallback<T> {
6
- (node: T, callback?: () => void): void;
7
- get: () => T | null;
8
- destroy: VoidFn;
9
- onChange: (fn: SubscriptionCallbackOnChangeFn<T>) => VoidFn;
10
- }
@@ -1 +0,0 @@
1
- export type VoidFn = () => void;
@@ -1,60 +0,0 @@
1
- import {
2
- SubscriptionCallbackOnChangeFn,
3
- SubscriptionCallback,
4
- } from '../types/SubscriptionCallback';
5
-
6
- export function buildSubscriptionCallback<T>(
7
- withRaf = false,
8
- ): SubscriptionCallback<T> {
9
- let lastCallValue: T | null = null;
10
- let fns: SubscriptionCallbackOnChangeFn<T>[] = [];
11
-
12
- let rafId: number | null = null;
13
-
14
- const updater = (items: T, callback?: (results: any[]) => void) => {
15
- const results: any[] = [];
16
- if (withRaf) {
17
- if (rafId != null) {
18
- cancelAnimationFrame(rafId);
19
- rafId = null;
20
- }
21
- requestAnimationFrame(() => {
22
- lastCallValue = items;
23
- rafId = null;
24
-
25
- // change happens here
26
- for (let i = 0, len = fns.length; i < len; i++) {
27
- results.push(fns[i](items));
28
- }
29
- callback?.(results);
30
- });
31
- } else {
32
- lastCallValue = items;
33
-
34
- // change happens here
35
- for (let i = 0, len = fns.length; i < len; i++) {
36
- results.push(fns[i](items));
37
- }
38
- callback?.(results);
39
- }
40
- };
41
-
42
- updater.get = () => lastCallValue;
43
-
44
- // this attaches a new listener to changes
45
- updater.onChange = (fn: SubscriptionCallbackOnChangeFn<T>) => {
46
- fns.push(fn);
47
- return () => {
48
- fns = fns.filter((f) => f !== fn);
49
- };
50
- };
51
-
52
- updater.destroy = () => {
53
- updater(null as any as T);
54
- fns.length = 0;
55
- };
56
-
57
- updater.getListenersCount = () => fns.length;
58
-
59
- return updater;
60
- }
@@ -1,3 +0,0 @@
1
- export function clamp(value: number, min: number, max: number): number {
2
- return Math.min(Math.max(value, min), max);
3
- }
@@ -1,16 +0,0 @@
1
- export function debounce(fn: Function, { wait }: { wait: number }) {
2
- let timeout: number | null = null;
3
-
4
- return function (...args: any[]) {
5
- //@ts-ignore
6
- const context = this;
7
-
8
- if (timeout !== null) {
9
- clearTimeout(timeout);
10
- }
11
-
12
- timeout = setTimeout(() => {
13
- fn.apply(context, args);
14
- }, wait) as any as number;
15
- };
16
- }
@@ -1,11 +0,0 @@
1
- export function decamelize(str: string, options?: { separator: string }) {
2
- const { separator } = options ?? { separator: '-' };
3
-
4
- return str
5
- .replace(/([a-z\d])([A-Z])/g, '$1' + separator + '$2')
6
- .replace(
7
- new RegExp('(' + separator + '[A-Z])([A-Z])', 'g'),
8
- '$1' + separator + '$2',
9
- )
10
- .toLowerCase();
11
- }
@@ -1,42 +0,0 @@
1
- import { shallowEqualObjects } from '../../utils/shallowEqualObjects';
2
-
3
- const map = new WeakMap<Function, { lastCallTime: number; lastCallArg: any }>();
4
-
5
- const getCompareDefault = (a: any) => a;
6
-
7
- export function discardCallsWithEqualArg<T = any>(
8
- fn: (arg: T) => void,
9
- timeframe = 50,
10
- getCompareObject?: (arg: T) => any,
11
- ): (arg: T) => void {
12
- map.set(fn, {
13
- lastCallTime: 0,
14
- lastCallArg: null,
15
- });
16
-
17
- const getCompare = getCompareObject ?? getCompareDefault;
18
-
19
- return (arg: T) => {
20
- const { lastCallTime, lastCallArg } = map.get(fn) || {
21
- lastCallTime: 0,
22
- lastCallArg: null,
23
- };
24
- const now = Date.now();
25
- const diff = now - lastCallTime;
26
- const objectsEqual = shallowEqualObjects(
27
- getCompare(lastCallArg),
28
- getCompare(arg),
29
- );
30
-
31
- if (diff < timeframe && objectsEqual) {
32
- return;
33
- }
34
-
35
- map.set(fn, {
36
- lastCallTime: now,
37
- lastCallArg: arg,
38
- });
39
-
40
- fn(arg);
41
- };
42
- }
@@ -1,33 +0,0 @@
1
- export const getRenderIndexes = (info: {
2
- count: number;
3
- renderStartIndex: number;
4
- renderCount: number;
5
- }) => {
6
- let { count, renderStartIndex, renderCount } = info;
7
-
8
- renderCount = Math.min(renderCount, count);
9
-
10
- const renderEndIndex = Math.max(
11
- -1,
12
- Math.min(renderStartIndex + renderCount - 1, count - 1),
13
- );
14
-
15
- if (renderStartIndex >= renderEndIndex) {
16
- if (renderEndIndex + 1 - renderCount >= 0) {
17
- renderStartIndex = renderEndIndex + 1 - renderCount;
18
- }
19
- }
20
-
21
- if (renderEndIndex < 0 || renderStartIndex < 0) {
22
- return null;
23
- }
24
-
25
- const result = {
26
- renderStartIndex,
27
- renderEndIndex,
28
- renderCount,
29
- count,
30
- };
31
-
32
- return result;
33
- };
@@ -1,31 +0,0 @@
1
- import { getGlobal } from '../../utils/getGlobal';
2
-
3
- let scrollbarWidth: number;
4
-
5
- export function getScrollbarWidth(): number {
6
- if (scrollbarWidth != null) {
7
- return scrollbarWidth;
8
- }
9
-
10
- const doc = getGlobal().document ?? null;
11
-
12
- if (!doc) {
13
- return 0;
14
- }
15
-
16
- const outer = doc.createElement('div');
17
- outer.style.visibility = 'hidden';
18
- outer.style.overflow = 'scroll';
19
- doc.body.appendChild(outer);
20
-
21
- // Creating inner element and placing it in the container
22
- const inner = doc.createElement('div');
23
- outer.appendChild(inner);
24
-
25
- // Calculating difference between container's full width and the child width
26
- scrollbarWidth = outer.offsetWidth - inner.offsetWidth;
27
-
28
- outer.parentNode?.removeChild(outer);
29
-
30
- return scrollbarWidth;
31
- }
@@ -1,21 +0,0 @@
1
- type Options = {
2
- size: { width: number; height: number };
3
- mainAxis: 'horizontal' | 'vertical';
4
- itemMainAxisSize: number | ((itemIndex: number) => number);
5
- itemMainAxisMinSize: number;
6
- };
7
- export const getVirtualRenderCount = (options: Options) => {
8
- const { size, mainAxis, itemMainAxisSize, itemMainAxisMinSize } = options;
9
-
10
- const renderSize = Math.round(
11
- mainAxis === 'vertical' ? size.height : size.width,
12
- );
13
- let itemSize =
14
- typeof itemMainAxisSize !== 'function'
15
- ? itemMainAxisSize
16
- : itemMainAxisMinSize;
17
-
18
- const renderCount = Math.ceil(renderSize / itemSize) + 1;
19
-
20
- return renderCount;
21
- };
@@ -1,12 +0,0 @@
1
- import { isControlledValue } from './isControlledValue';
2
-
3
- export function isControlled<V extends keyof T, T>(
4
- propName: V,
5
- props: T,
6
- ): boolean {
7
- const propValue = props[propName];
8
-
9
- const controlled: boolean = isControlledValue(propValue);
10
-
11
- return controlled;
12
- }
@@ -1,5 +0,0 @@
1
- export function isControlledValue(value: any): boolean {
2
- const controlled: boolean = value !== undefined;
3
-
4
- return controlled;
5
- }