@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,95 +0,0 @@
1
- import type { KeyboardEvent, MouseEvent } from 'react';
2
- import { useCallback, useMemo, useEffect } from 'react';
3
- import { useDataSourceContextValue } from '../../DataSource/publicHooks/useDataSource';
4
- import { CellPosition } from '../../types/CellPosition';
5
- import { cloneRowSelection } from '../api/getSelectionApi';
6
- import { useInfiniteTable } from '../hooks/useInfiniteTable';
7
- import { InfiniteTableEventHandlerContext } from './eventHandlerTypes';
8
- import { onCellClick } from './onCellClick';
9
- import { onKeyDown } from './onKeyDown';
10
-
11
- function useEventHandlersContext<T>() {
12
- const {
13
- getState,
14
- componentActions: actions,
15
- imperativeApi,
16
- getComputed,
17
- } = useInfiniteTable<T>();
18
- const { getState: getDataSourceState, componentActions: dataSourceActions } =
19
- useDataSourceContextValue<T>();
20
-
21
- const context = useMemo(() => {
22
- const context: InfiniteTableEventHandlerContext<T> = {
23
- getComputed,
24
- api: imperativeApi,
25
- getState,
26
- actions,
27
- getDataSourceState,
28
- dataSourceActions,
29
- cloneRowSelection: (rowSelection) => {
30
- return cloneRowSelection<T>(rowSelection, getDataSourceState);
31
- },
32
- };
33
- return context;
34
- }, [getState, actions, getDataSourceState, dataSourceActions]);
35
-
36
- return context;
37
- }
38
-
39
- function handleDOMEvents<T>() {
40
- const context = useEventHandlersContext<T>();
41
-
42
- useEffect(() => {
43
- const removeOnKeyDown = context.getState().keyDown.onChange((event) => {
44
- onKeyDown(context, event!);
45
- });
46
-
47
- function cellClickHandler(
48
- cellClickParam: (CellPosition & { event: MouseEvent<Element> }) | null,
49
- ) {
50
- if (!cellClickParam) {
51
- return;
52
- }
53
- const event = cellClickParam.event;
54
- const virtualEvent = {
55
- metaKey: event.metaKey,
56
- ctrlKey: event.ctrlKey,
57
- shiftKey: event.shiftKey,
58
- key: '',
59
- preventDefault: () => event.preventDefault(),
60
- };
61
-
62
- onCellClick(
63
- {
64
- ...context,
65
- rowIndex: cellClickParam.rowIndex,
66
- colIndex: cellClickParam.colIndex,
67
- },
68
- virtualEvent,
69
- );
70
- }
71
- const removeOnCellClick = context
72
- .getState()
73
- .cellClick.onChange(cellClickHandler);
74
-
75
- return () => {
76
- removeOnKeyDown();
77
- removeOnCellClick();
78
- };
79
- }, []);
80
- }
81
-
82
- function subscribeToDOMEvents<T>() {
83
- const { getState } = useInfiniteTable<T>();
84
-
85
- const onKeyDown = useCallback((event: KeyboardEvent<Element>) => {
86
- getState().keyDown(event);
87
- }, []);
88
-
89
- return { onKeyDown };
90
- }
91
-
92
- export function useDOMEventHandlers<T>() {
93
- handleDOMEvents<T>();
94
- return subscribeToDOMEvents<T>();
95
- }
@@ -1,232 +0,0 @@
1
- import { clamp } from '../../utils/clamp';
2
- import { InfiniteTableKeyboardEventHandlerContext } from './eventHandlerTypes';
3
-
4
- export function handleRowNavigation<T>(
5
- options: InfiniteTableKeyboardEventHandlerContext<T>,
6
- event: {
7
- key: string;
8
- },
9
- ) {
10
- const { getState, getDataSourceState, actions, api } = options;
11
- const { key } = event;
12
- const dataArray = getDataSourceState().dataArray;
13
- const arrLength = dataArray.length;
14
- const state = getState();
15
-
16
- const { brain } = state;
17
- let { activeRowIndex } = state;
18
-
19
- if (activeRowIndex == null) {
20
- return false;
21
- }
22
-
23
- const {
24
- start: [startRow],
25
- end: [endRow],
26
- } = brain.getRenderRange();
27
-
28
- const renderRowCount = endRow - startRow - 1;
29
-
30
- const min = 0;
31
- const max = arrLength - 1;
32
- const KeyToFunction = {
33
- ArrowDown: () => {
34
- activeRowIndex = clamp(activeRowIndex! + 1, min, max);
35
- },
36
- ArrowUp: () => {
37
- activeRowIndex = clamp(activeRowIndex! - 1, min, max);
38
- },
39
- ArrowLeft: () => {
40
- const rowInfo = dataArray[activeRowIndex!];
41
- if (rowInfo && rowInfo.isGroupRow) {
42
- return api.collapseGroupRow(rowInfo.groupKeys);
43
- }
44
- return false;
45
- },
46
- ArrowRight: () => {
47
- const rowInfo = dataArray[activeRowIndex!];
48
- if (rowInfo && rowInfo.isGroupRow) {
49
- return api.expandGroupRow(rowInfo.groupKeys);
50
- }
51
- return false;
52
- },
53
- Enter: () => {
54
- const rowInfo = dataArray[activeRowIndex!];
55
- if (rowInfo && rowInfo.isGroupRow) {
56
- return api.toggleGroupRow(rowInfo.groupKeys);
57
- }
58
- return false;
59
- },
60
- PageDown: () => {
61
- activeRowIndex = Math.min(
62
- activeRowIndex! + renderRowCount,
63
- arrLength - 1,
64
- );
65
- },
66
- PageUp: () => {
67
- activeRowIndex = Math.max(activeRowIndex! - renderRowCount, min);
68
- },
69
- End: () => {
70
- activeRowIndex = max;
71
- },
72
- Home: () => {
73
- activeRowIndex = min;
74
- },
75
- };
76
-
77
- const Fn = KeyToFunction[key as keyof typeof KeyToFunction];
78
-
79
- if (!Fn) {
80
- return false;
81
- }
82
-
83
- Fn();
84
-
85
- actions.activeRowIndex = activeRowIndex;
86
-
87
- return true;
88
- }
89
-
90
- export function handleCellNavigation<T>(
91
- options: InfiniteTableKeyboardEventHandlerContext<T>,
92
- event: { key: string; shiftKey: boolean },
93
- ) {
94
- const {
95
- api,
96
-
97
- getState,
98
- getComputed,
99
- getDataSourceState,
100
- actions,
101
- } = options;
102
- const { key, shiftKey } = event;
103
-
104
- const dataArray = getDataSourceState().dataArray;
105
- const state = getState();
106
- const { activeCellIndex, brain } = state;
107
- if (!activeCellIndex) {
108
- return false;
109
- }
110
-
111
- let [rowIndex, colIndex] = activeCellIndex;
112
-
113
- const {
114
- start: [startRow, startCol],
115
- end: [endRow, endCol],
116
- } = brain.getRenderRange();
117
-
118
- const renderRowCount = endRow - startRow - 1;
119
- const renderColCount = endCol - startCol - 1;
120
-
121
- const maxRow = getDataSourceState().dataArray.length - 1;
122
- const maxCol = getComputed().computedVisibleColumns.length - 1;
123
-
124
- const minRow = 0;
125
- const minCol = 0;
126
-
127
- rowIndex = clamp(rowIndex, 0, maxRow);
128
- colIndex = clamp(colIndex, 0, maxCol);
129
-
130
- actions.activeCellIndex = [rowIndex, colIndex];
131
-
132
- const KeyToFunction = {
133
- ArrowDown: () => {
134
- rowIndex = clamp(rowIndex + 1, minRow, maxRow);
135
- },
136
- ArrowUp: () => {
137
- rowIndex = clamp(rowIndex - 1, minRow, maxRow);
138
- },
139
- ArrowLeft: () => {
140
- colIndex = clamp(colIndex - 1, minCol, maxCol);
141
- },
142
- ArrowRight: () => {
143
- colIndex = clamp(colIndex + 1, minCol, maxCol);
144
- },
145
- Enter: () => {
146
- const rowInfo = dataArray[rowIndex];
147
- if (rowInfo && rowInfo.isGroupRow) {
148
- return api.toggleGroupRow(rowInfo.groupKeys);
149
- }
150
- return false;
151
- },
152
- PageDown: () => {
153
- if (!shiftKey) {
154
- rowIndex = Math.min(rowIndex + renderRowCount, maxRow);
155
- } else {
156
- colIndex = Math.min(colIndex + renderColCount, maxCol);
157
- }
158
- },
159
- PageUp: () => {
160
- if (!shiftKey) {
161
- rowIndex = Math.max(rowIndex - renderRowCount, minRow);
162
- } else {
163
- colIndex = Math.max(colIndex - renderColCount, minCol);
164
- }
165
- },
166
- End: () => {
167
- if (!shiftKey) {
168
- rowIndex = maxRow;
169
- } else {
170
- colIndex = maxCol;
171
- }
172
- },
173
- Home: () => {
174
- if (!shiftKey) {
175
- rowIndex = minRow;
176
- } else {
177
- colIndex = minCol;
178
- }
179
- },
180
- };
181
- const Fn = KeyToFunction[key as keyof typeof KeyToFunction];
182
-
183
- if (!Fn) {
184
- return false;
185
- }
186
-
187
- Fn();
188
-
189
- actions.activeCellIndex = [rowIndex, colIndex];
190
-
191
- return true;
192
- }
193
-
194
- const validKeys: Record<string, boolean> = {
195
- ArrowUp: true,
196
- ArrowDown: true,
197
- ArrowLeft: true,
198
- ArrowRight: true,
199
- PageUp: true,
200
- PageDown: true,
201
- Home: true,
202
- End: true,
203
- Enter: true,
204
- ' ': true,
205
- };
206
-
207
- export function handleKeyboardNavigation<T>(
208
- options: InfiniteTableKeyboardEventHandlerContext<T>,
209
- event: {
210
- key: string;
211
- shiftKey: boolean;
212
- },
213
- ) {
214
- const { key } = event;
215
- const { getState } = options;
216
- const state = getState();
217
-
218
- const { activeRowIndex, activeCellIndex, keyboardNavigation } = state;
219
-
220
- if (!validKeys[key]) {
221
- return false;
222
- }
223
- if (activeRowIndex != null && keyboardNavigation === 'row') {
224
- return handleRowNavigation(options, event);
225
- }
226
-
227
- if (activeCellIndex != null && keyboardNavigation === 'cell') {
228
- return handleCellNavigation(options, event);
229
- }
230
-
231
- return false;
232
- }
@@ -1,110 +0,0 @@
1
- import { RowSelectionState } from '../../DataSource';
2
- import { InfiniteTableEventHandlerAbstractContext } from './eventHandlerTypes';
3
- import { updateRowSelectionOnCellClick } from './onCellClick';
4
-
5
- const validKeys: Record<string, boolean> = {
6
- Enter: true,
7
- ' ': true,
8
- a: true,
9
- };
10
-
11
- export function handleKeyboardSelection<T>(
12
- context: InfiniteTableEventHandlerAbstractContext<T>,
13
- keyboardEvent: {
14
- key: string;
15
- metaKey: boolean;
16
- ctrlKey: boolean;
17
- shiftKey: boolean;
18
- preventDefault: VoidFunction;
19
- },
20
- ) {
21
- const {
22
- getState,
23
- getDataSourceState,
24
- dataSourceActions,
25
- api: imperativeApi,
26
- cloneRowSelection,
27
- } = context;
28
- const { key, ctrlKey, metaKey } = keyboardEvent;
29
-
30
- if (!validKeys[key]) {
31
- return false;
32
- }
33
-
34
- const state = getState();
35
- const dataSourceState = getDataSourceState();
36
-
37
- const {
38
- activeRowIndex,
39
- activeCellIndex,
40
- keyboardNavigation,
41
- keyboardSelection,
42
- } = state;
43
-
44
- const { selectionMode, groupBy, rowSelection } = dataSourceState;
45
-
46
- if (keyboardSelection === false) {
47
- return false;
48
- }
49
-
50
- const rowIndex =
51
- keyboardNavigation === 'row' && activeRowIndex != null
52
- ? activeRowIndex
53
- : keyboardNavigation === 'cell' && activeCellIndex != null
54
- ? activeCellIndex[0]
55
- : null;
56
-
57
- const rowInfo = rowIndex != null ? dataSourceState.dataArray[rowIndex] : null;
58
-
59
- if (!rowInfo || rowIndex == null) {
60
- return false;
61
- }
62
-
63
- if (selectionMode === 'single-row' && key === ' ') {
64
- imperativeApi.selectionApi.toggleRowSelection(rowInfo.id);
65
- return true;
66
- }
67
-
68
- if (selectionMode !== 'multi-row') {
69
- return false;
70
- }
71
-
72
- if (key === 'a' && (ctrlKey || metaKey)) {
73
- const rowSelectionState = cloneRowSelection(
74
- rowSelection as RowSelectionState<T>,
75
- );
76
-
77
- rowSelectionState.selectAll();
78
-
79
- dataSourceActions.rowSelection = rowSelectionState;
80
- return true;
81
- }
82
-
83
- if (key === ' ') {
84
- if (groupBy.length) {
85
- if (rowInfo.isGroupRow && rowInfo.groupKeys) {
86
- imperativeApi.selectionApi.toggleGroupRowSelection(rowInfo.groupKeys);
87
- } else {
88
- imperativeApi.selectionApi.toggleRowSelection(rowInfo.id);
89
- }
90
- return true;
91
- } else {
92
- // no grouping, but space should be treated like a mouse click
93
-
94
- const event = { ...keyboardEvent };
95
- const { renderSelectionCheckBox } = context.getComputed();
96
-
97
- // if we have a selection checkbox column, then we wont allow shift be used with the space key
98
- if (renderSelectionCheckBox) {
99
- // event.shiftKey = false;
100
- event.metaKey = false;
101
- // but rather make the selection only additive
102
- event.ctrlKey = true;
103
- }
104
-
105
- return updateRowSelectionOnCellClick({ ...context, rowIndex }, event);
106
- }
107
- }
108
-
109
- return false;
110
- }
@@ -1,94 +0,0 @@
1
- import { RowSelectionState } from '../../DataSource/RowSelectionState';
2
-
3
- import {
4
- InfiniteTableCellClickEventHandlerContext,
5
- InfiniteTableEventHandlerAbstractContext,
6
- InfiniteTableKeyboardEventHandlerContext,
7
- } from './eventHandlerTypes';
8
-
9
- export function onCellClick<T>(
10
- context: InfiniteTableCellClickEventHandlerContext<T> &
11
- InfiniteTableKeyboardEventHandlerContext<T>,
12
- event: {
13
- key: string;
14
- metaKey: boolean;
15
- ctrlKey: boolean;
16
- shiftKey: boolean;
17
- preventDefault: VoidFunction;
18
- },
19
- ) {
20
- updateRowSelectionOnCellClick(context, event);
21
- }
22
-
23
- export function updateRowSelectionOnCellClick<T>(
24
- context: InfiniteTableEventHandlerAbstractContext<T> & {
25
- rowIndex: number;
26
- },
27
-
28
- event: {
29
- key: string;
30
- metaKey: boolean;
31
- ctrlKey: boolean;
32
- shiftKey: boolean;
33
- preventDefault: VoidFunction;
34
- },
35
- ) {
36
- const {
37
- rowIndex,
38
- getDataSourceState,
39
- getComputed,
40
- dataSourceActions,
41
- api,
42
- cloneRowSelection,
43
- } = context;
44
-
45
- const { multiRowSelector, renderSelectionCheckBox } = getComputed();
46
- const dataSourceState = getDataSourceState();
47
-
48
- const { selectionMode, groupBy, dataArray } = dataSourceState;
49
-
50
- if (groupBy.length) {
51
- return false;
52
- }
53
-
54
- if (selectionMode === 'multi-row') {
55
- if (renderSelectionCheckBox && !event.key) {
56
- // we should not click-select when we have a checkbox column
57
- // but we only do this if there is no key
58
- // as key could == ' ', and in this case we want
59
- // to let the selection logic happen, as it's the same function
60
- // but used by the keyboard selection
61
- return false;
62
- }
63
- let { rowSelection: rowSelectionState } = dataSourceState;
64
- // clone the row selection
65
- rowSelectionState = cloneRowSelection(
66
- rowSelectionState as RowSelectionState<T>,
67
- );
68
-
69
- multiRowSelector.rowSelectionState = rowSelectionState;
70
-
71
- if (rowSelectionState && typeof rowSelectionState === 'object') {
72
- if (event.shiftKey) {
73
- multiRowSelector.multiSelectClick(rowIndex);
74
- } else if (event.metaKey || event.ctrlKey) {
75
- multiRowSelector.singleAddClick(rowIndex);
76
- } else {
77
- multiRowSelector.resetClick(rowIndex);
78
- }
79
-
80
- // so we can give actions a new instance of rowSelection
81
- dataSourceActions.rowSelection = rowSelectionState;
82
-
83
- return true;
84
- }
85
- } else if (selectionMode === 'single-row') {
86
- const id = dataArray[rowIndex].id;
87
- if (event.metaKey || event.ctrlKey) {
88
- api.selectionApi.toggleRowSelection(id);
89
- } else {
90
- api.selectionApi.selectRow(id);
91
- }
92
- }
93
- return false;
94
- }
@@ -1,25 +0,0 @@
1
- import type { KeyboardEvent } from 'react';
2
- import { handleKeyboardNavigation } from './keyboardNavigation';
3
- import { InfiniteTableKeyboardEventHandlerContext } from './eventHandlerTypes';
4
- import { handleKeyboardSelection } from './keyboardSelection';
5
- import { cloneRowSelection } from '../api/getSelectionApi';
6
-
7
- export function onKeyDown<T>(
8
- context: InfiniteTableKeyboardEventHandlerContext<T>,
9
- event: KeyboardEvent<Element>,
10
- ) {
11
- const keyboardHandlerContext: InfiniteTableKeyboardEventHandlerContext<T> = {
12
- ...context,
13
- cloneRowSelection: (rowSelection) => {
14
- return cloneRowSelection<T>(rowSelection, context.getDataSourceState);
15
- },
16
- };
17
-
18
- if (handleKeyboardSelection(keyboardHandlerContext, event)) {
19
- event.preventDefault();
20
- }
21
-
22
- if (handleKeyboardNavigation(keyboardHandlerContext, event)) {
23
- event.preventDefault();
24
- }
25
- }
@@ -1,70 +0,0 @@
1
- import { moveXatY } from '../utils/moveXatY';
2
-
3
- export default function adjustColumnOrderForAllColumns(options: {
4
- newColumnOrder: string[];
5
- visibleColumnOrder: string[];
6
- existingColumnOrder: string[];
7
- dragColumnId: string;
8
- }) {
9
- const {
10
- newColumnOrder,
11
- visibleColumnOrder,
12
- existingColumnOrder,
13
- dragColumnId: dragColumnId,
14
- } = options;
15
-
16
- if (visibleColumnOrder.length !== newColumnOrder.length) {
17
- console.warn(
18
- 'new column order cannot contain less columns than the visible column order',
19
- );
20
- return newColumnOrder;
21
- }
22
- // const newIndexes = newColumnOrder.reduce(getIndexes, {});
23
- // const allIndexes = allColumnIds.reduce(getIndexes, {});
24
-
25
- const dragIndex = visibleColumnOrder.indexOf(dragColumnId);
26
- const dropIndex = newColumnOrder.indexOf(dragColumnId);
27
-
28
- if (dragIndex === dropIndex) {
29
- return existingColumnOrder;
30
- }
31
- if (dropIndex > dragIndex) {
32
- // it's moved to the right
33
-
34
- // in the new column order, get the item that is before the dropped column id
35
- // and then find the index of that column in the existing column order
36
- // and move the movedColumnId after that index
37
- const indexInNewOrder = newColumnOrder.indexOf(dragColumnId);
38
- const prevColIdInNewOrder = newColumnOrder[indexInNewOrder - 1];
39
-
40
- const prevColIndexInExiting =
41
- existingColumnOrder.indexOf(prevColIdInNewOrder);
42
- const indexInExisting = existingColumnOrder.indexOf(dragColumnId);
43
-
44
- return moveXatY(
45
- existingColumnOrder,
46
- indexInExisting,
47
- prevColIndexInExiting,
48
- );
49
- } else {
50
- // it's moved to the left
51
-
52
- // in the new column order, get the item that is after the dropped column id
53
- // and then find the index of that column in the existing column order
54
- // and move the movedColumnId before that index
55
-
56
- const indexInNewOrder = newColumnOrder.indexOf(dragColumnId);
57
- const nextColIdInNewOrder = newColumnOrder[indexInNewOrder + 1];
58
-
59
- const nextColIndexInExiting =
60
- existingColumnOrder.indexOf(nextColIdInNewOrder);
61
- const indexInExisting = existingColumnOrder.indexOf(dragColumnId);
62
-
63
- return moveXatY(
64
- existingColumnOrder,
65
- indexInExisting,
66
- nextColIndexInExiting,
67
- );
68
- }
69
- return newColumnOrder;
70
- }