@infinite-table/infinite-react 0.5.1 → 0.5.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +104 -0
- package/index.css +896 -0
- package/index.d.ts +2264 -0
- package/index.esm.css +896 -0
- package/index.esm.js +15404 -0
- package/index.js +15240 -0
- package/package.json +2 -94
- package/.vscode/settings.json +0 -3
- package/API.md +0 -0
- package/build/buildPackageJson.js +0 -43
- package/build/scripts/test.js +0 -37
- package/bundler.config.js +0 -25
- package/globals.d.ts +0 -7
- package/rollup.config.js +0 -15
- package/run-build-deepmap.js +0 -47
- package/run-build.js +0 -45
- package/run-dts-concat.js +0 -21
- package/src/components/CSSVariableWatch.tsx +0 -82
- package/src/components/DataSource/BooleanCollectionState.ts +0 -214
- package/src/components/DataSource/BooleanDeepCollectionState.ts +0 -208
- package/src/components/DataSource/DataSourceContext.ts +0 -20
- package/src/components/DataSource/GroupRowsState.ts +0 -74
- package/src/components/DataSource/Indexer.ts +0 -27
- package/src/components/DataSource/RowSelectionState.ts +0 -763
- package/src/components/DataSource/defaultFilterTypes.ts +0 -64
- package/src/components/DataSource/index.tsx +0 -108
- package/src/components/DataSource/privateHooks/getChangeDetect.ts +0 -7
- package/src/components/DataSource/privateHooks/useLoadData.ts +0 -783
- package/src/components/DataSource/publicHooks/useDataSource.ts +0 -19
- package/src/components/DataSource/publicHooks/useDataSourceActions.ts +0 -14
- package/src/components/DataSource/state/getInitialState.ts +0 -494
- package/src/components/DataSource/state/normalizeSortInfo.ts +0 -35
- package/src/components/DataSource/state/reducer.ts +0 -466
- package/src/components/DataSource/state/rowInfoStatus.ts +0 -27
- package/src/components/DataSource/types.ts +0 -548
- package/src/components/HeadlessTable/HeadlessTableWithPinnedContainers.tsx +0 -142
- package/src/components/HeadlessTable/MappedCells.ts +0 -251
- package/src/components/HeadlessTable/RawTable.tsx +0 -98
- package/src/components/HeadlessTable/ReactHeadlessTableRenderer.tsx +0 -1516
- package/src/components/HeadlessTable/index.tsx +0 -234
- package/src/components/InfiniteTable/InfiniteCls.css.ts +0 -164
- package/src/components/InfiniteTable/InfiniteTableContext.ts +0 -16
- package/src/components/InfiniteTable/api/getImperativeApi.ts +0 -391
- package/src/components/InfiniteTable/api/getSelectionApi.ts +0 -364
- package/src/components/InfiniteTable/api/type.ts +0 -11
- package/src/components/InfiniteTable/components/ActiveCellIndicator.css.ts +0 -51
- package/src/components/InfiniteTable/components/ActiveCellIndicator.tsx +0 -116
- package/src/components/InfiniteTable/components/ActiveRowIndicator.css.ts +0 -56
- package/src/components/InfiniteTable/components/ActiveRowIndicator.tsx +0 -94
- package/src/components/InfiniteTable/components/CheckBox.css.ts +0 -13
- package/src/components/InfiniteTable/components/CheckBox.tsx +0 -96
- package/src/components/InfiniteTable/components/FilterEditors.tsx +0 -52
- package/src/components/InfiniteTable/components/InfiniteTableBody/InfiniteTableBody.tsx +0 -27
- package/src/components/InfiniteTable/components/InfiniteTableBody/index.tsx +0 -1
- package/src/components/InfiniteTable/components/InfiniteTableFooter/InfiniteTableFooter.tsx +0 -31
- package/src/components/InfiniteTable/components/InfiniteTableFooter/index.tsx +0 -1
- package/src/components/InfiniteTable/components/InfiniteTableHeader/InfiniteTableColumnHeaderFilter.tsx +0 -102
- package/src/components/InfiniteTable/components/InfiniteTableHeader/InfiniteTableHeader.tsx +0 -163
- package/src/components/InfiniteTable/components/InfiniteTableHeader/InfiniteTableHeaderCell.tsx +0 -574
- package/src/components/InfiniteTable/components/InfiniteTableHeader/InfiniteTableHeaderGroup.tsx +0 -79
- package/src/components/InfiniteTable/components/InfiniteTableHeader/InfiniteTableHeaderTypes.tsx +0 -25
- package/src/components/InfiniteTable/components/InfiniteTableHeader/InfiniteTableHeaderWrapper.tsx +0 -185
- package/src/components/InfiniteTable/components/InfiniteTableHeader/ResizeHandle/GroupResizeHandle.tsx +0 -159
- package/src/components/InfiniteTable/components/InfiniteTableHeader/ResizeHandle/ResizeHandle.css.ts +0 -124
- package/src/components/InfiniteTable/components/InfiniteTableHeader/ResizeHandle/columnResizer.ts +0 -166
- package/src/components/InfiniteTable/components/InfiniteTableHeader/ResizeHandle/index.tsx +0 -146
- package/src/components/InfiniteTable/components/InfiniteTableHeader/buildColumnAndGroupTree.ts +0 -240
- package/src/components/InfiniteTable/components/InfiniteTableHeader/header.css.ts +0 -358
- package/src/components/InfiniteTable/components/InfiniteTableHeader/index.tsx +0 -1
- package/src/components/InfiniteTable/components/InfiniteTableHeader/useColumnGroupResizeHandle.tsx +0 -114
- package/src/components/InfiniteTable/components/InfiniteTableHeader/useColumnResizeHandle.tsx +0 -146
- package/src/components/InfiniteTable/components/InfiniteTableLicenseFooter/footer.css.ts +0 -7
- package/src/components/InfiniteTable/components/InfiniteTableLicenseFooter/index.tsx +0 -110
- package/src/components/InfiniteTable/components/InfiniteTableRow/InfiniteTableCell.tsx +0 -120
- package/src/components/InfiniteTable/components/InfiniteTableRow/InfiniteTableCellTypes.ts +0 -74
- package/src/components/InfiniteTable/components/InfiniteTableRow/InfiniteTableColumnCell.tsx +0 -457
- package/src/components/InfiniteTable/components/InfiniteTableRow/InfiniteTableRow.tsx +0 -107
- package/src/components/InfiniteTable/components/InfiniteTableRow/InfiniteTableRowClassName.ts +0 -6
- package/src/components/InfiniteTable/components/InfiniteTableRow/InfiniteTableRowTypes.ts +0 -32
- package/src/components/InfiniteTable/components/InfiniteTableRow/InfiniteTableRowUnvirtualized.tsx +0 -75
- package/src/components/InfiniteTable/components/InfiniteTableRow/columnRendering.tsx +0 -263
- package/src/components/InfiniteTable/components/InfiniteTableRow/index.tsx +0 -1
- package/src/components/InfiniteTable/components/InfiniteTableRow/row.css.ts +0 -74
- package/src/components/InfiniteTable/components/InfiniteTableRow/useRowDOMProps.ts +0 -199
- package/src/components/InfiniteTable/components/LoadMask.css.ts +0 -34
- package/src/components/InfiniteTable/components/LoadMask.tsx +0 -27
- package/src/components/InfiniteTable/components/ScrollbarPlaceholder.tsx +0 -56
- package/src/components/InfiniteTable/components/cell.css.ts +0 -192
- package/src/components/InfiniteTable/components/icons/ArrowDown.tsx +0 -14
- package/src/components/InfiniteTable/components/icons/ArrowUp.tsx +0 -14
- package/src/components/InfiniteTable/components/icons/ExpanderIcon.css.ts +0 -31
- package/src/components/InfiniteTable/components/icons/ExpanderIcon.tsx +0 -63
- package/src/components/InfiniteTable/components/icons/Icon.tsx +0 -18
- package/src/components/InfiniteTable/components/icons/InfiniteTableIconClassName.ts +0 -1
- package/src/components/InfiniteTable/components/icons/LoadingIcon.css.ts +0 -8
- package/src/components/InfiniteTable/components/icons/LoadingIcon.tsx +0 -45
- package/src/components/InfiniteTable/components/icons/MenuIcon.tsx +0 -50
- package/src/components/InfiniteTable/components/icons/SortIcon.tsx +0 -113
- package/src/components/InfiniteTable/eventHandlers/eventHandlerTypes.ts +0 -57
- package/src/components/InfiniteTable/eventHandlers/index.ts +0 -95
- package/src/components/InfiniteTable/eventHandlers/keyboardNavigation.ts +0 -232
- package/src/components/InfiniteTable/eventHandlers/keyboardSelection.ts +0 -110
- package/src/components/InfiniteTable/eventHandlers/onCellClick.ts +0 -94
- package/src/components/InfiniteTable/eventHandlers/onKeyDown.ts +0 -25
- package/src/components/InfiniteTable/hooks/adjustColumnOrderForAllColumns.ts +0 -70
- package/src/components/InfiniteTable/hooks/reorderColumnsOnDrag.ts +0 -476
- package/src/components/InfiniteTable/hooks/useAutoSizeColumns.ts +0 -206
- package/src/components/InfiniteTable/hooks/useCellClassName.ts +0 -80
- package/src/components/InfiniteTable/hooks/useCellRendering.tsx +0 -217
- package/src/components/InfiniteTable/hooks/useColumnGroups.ts +0 -71
- package/src/components/InfiniteTable/hooks/useColumnMenu.ts +0 -72
- package/src/components/InfiniteTable/hooks/useColumnPointerEvents.ts +0 -258
- package/src/components/InfiniteTable/hooks/useColumnRowspan.ts +0 -43
- package/src/components/InfiniteTable/hooks/useColumnSizeFn.ts +0 -24
- package/src/components/InfiniteTable/hooks/useColumnsWhen.ts +0 -582
- package/src/components/InfiniteTable/hooks/useComputed.ts +0 -186
- package/src/components/InfiniteTable/hooks/useComputedVisibleColumns.ts +0 -219
- package/src/components/InfiniteTable/hooks/useDOMProps.ts +0 -306
- package/src/components/InfiniteTable/hooks/useEffectWithRaf.ts +0 -47
- package/src/components/InfiniteTable/hooks/useInfiniteTable.ts +0 -10
- package/src/components/InfiniteTable/hooks/useInfiniteTableState.ts +0 -11
- package/src/components/InfiniteTable/hooks/useInternalProps.ts +0 -8
- package/src/components/InfiniteTable/hooks/useLicense/LicenseDetails.ts +0 -13
- package/src/components/InfiniteTable/hooks/useLicense/crc32.ts +0 -56
- package/src/components/InfiniteTable/hooks/useLicense/decode.ts +0 -147
- package/src/components/InfiniteTable/hooks/useLicense/useLicense.ts +0 -39
- package/src/components/InfiniteTable/hooks/useRerenderOnKeyChange.ts +0 -21
- package/src/components/InfiniteTable/hooks/useRowHover.ts +0 -18
- package/src/components/InfiniteTable/hooks/useScrollToActiveCell.ts +0 -48
- package/src/components/InfiniteTable/hooks/useScrollToActiveRow.ts +0 -44
- package/src/components/InfiniteTable/hooks/useScrollbars.ts +0 -51
- package/src/components/InfiniteTable/hooks/useToggleGroupRow.ts +0 -56
- package/src/components/InfiniteTable/hooks/useUnpinnedRendering.tsx +0 -165
- package/src/components/InfiniteTable/hooks/useYourBrain.ts +0 -55
- package/src/components/InfiniteTable/index.tsx +0 -352
- package/src/components/InfiniteTable/internalProps.ts +0 -4
- package/src/components/InfiniteTable/state/computeColumnGroupsDepths.ts +0 -29
- package/src/components/InfiniteTable/state/getColumnVisibilityForHideEmptyGroupColumns.ts +0 -127
- package/src/components/InfiniteTable/state/getInitialState.ts +0 -375
- package/src/components/InfiniteTable/theme.css.ts +0 -556
- package/src/components/InfiniteTable/types/InfiniteTableAction.ts +0 -6
- package/src/components/InfiniteTable/types/InfiniteTableActionType.ts +0 -12
- package/src/components/InfiniteTable/types/InfiniteTableColumn.ts +0 -478
- package/src/components/InfiniteTable/types/InfiniteTableComputedValues.ts +0 -43
- package/src/components/InfiniteTable/types/InfiniteTableContextValue.ts +0 -12
- package/src/components/InfiniteTable/types/InfiniteTableInternalProps.ts +0 -3
- package/src/components/InfiniteTable/types/InfiniteTableProps.ts +0 -511
- package/src/components/InfiniteTable/types/InfiniteTableState.ts +0 -195
- package/src/components/InfiniteTable/types/Utility.ts +0 -35
- package/src/components/InfiniteTable/types/index.ts +0 -96
- package/src/components/InfiniteTable/utilities.css.ts +0 -179
- package/src/components/InfiniteTable/utils/MultiRowSelector.ts +0 -111
- package/src/components/InfiniteTable/utils/RenderHookComponentForInfinite.tsx +0 -52
- package/src/components/InfiniteTable/utils/adjustColumnOrderForPinning.ts +0 -33
- package/src/components/InfiniteTable/utils/assignFiltered.ts +0 -29
- package/src/components/InfiniteTable/utils/defaultGetColumContextMenuItems.tsx +0 -108
- package/src/components/InfiniteTable/utils/getColumnComputedType.ts +0 -33
- package/src/components/InfiniteTable/utils/getColumnForGroupBy.tsx +0 -313
- package/src/components/InfiniteTable/utils/getComputedVisibleColumns.ts +0 -773
- package/src/components/InfiniteTable/utils/getContextMenuForColumn.tsx +0 -72
- package/src/components/InfiniteTable/utils/infiniteDOMUtils.ts +0 -189
- package/src/components/InfiniteTable/utils/mapToObject.ts +0 -20
- package/src/components/InfiniteTable/utils/moveXatY.ts +0 -25
- package/src/components/InfiniteTable/utils/objectValuesExcept.ts +0 -9
- package/src/components/InfiniteTable/utils/progressiveSpeedScroller.ts +0 -158
- package/src/components/InfiniteTable/utils/rafFn.ts +0 -13
- package/src/components/InfiniteTable/utils/toCSSVarName.ts +0 -1
- package/src/components/InfiniteTable/utils/toMap.ts +0 -24
- package/src/components/Menu/Menu.tsx +0 -750
- package/src/components/Menu/MenuCls.css.ts +0 -139
- package/src/components/Menu/MenuContext.ts +0 -10
- package/src/components/Menu/MenuContextValue.ts +0 -15
- package/src/components/Menu/MenuProps.ts +0 -98
- package/src/components/Menu/MenuState.ts +0 -56
- package/src/components/Menu/MenuTriangleContext.ts +0 -352
- package/src/components/Menu/childrenToRuntimeItems.tsx +0 -103
- package/src/components/Menu/getMenuState.tsx +0 -119
- package/src/components/Menu/index.tsx +0 -88
- package/src/components/Menu/propToIdentifyMenu.ts +0 -1
- package/src/components/RawList/AvoidReactDiff.tsx +0 -48
- package/src/components/RawList/MappedItems.ts +0 -143
- package/src/components/RawList/ReactVirtualRenderer.tsx +0 -307
- package/src/components/RawList/index.tsx +0 -42
- package/src/components/RawList/types.ts +0 -23
- package/src/components/RawList/useVirtualRenderer.ts +0 -36
- package/src/components/RenderHookComponent.tsx +0 -10
- package/src/components/ResizeObserver/index.tsx +0 -170
- package/src/components/VirtualBrain/MatrixBrain.ts +0 -1621
- package/src/components/VirtualBrain/ScrollListener.ts +0 -39
- package/src/components/VirtualBrain/index.ts +0 -664
- package/src/components/VirtualList/ColumnListWithExternalScrolling.tsx +0 -78
- package/src/components/VirtualList/InfiniteListRootClassName.ts +0 -1
- package/src/components/VirtualList/RowListWithExternalScrolling.tsx +0 -120
- package/src/components/VirtualList/SpacePlaceholder.tsx +0 -32
- package/src/components/VirtualList/VirtualList.css.ts +0 -29
- package/src/components/VirtualList/VirtualList.tsx +0 -141
- package/src/components/VirtualList/VirtualRowList.tsx +0 -34
- package/src/components/VirtualList/types.ts +0 -56
- package/src/components/VirtualList/useCorrectHeightForRowElements.ts +0 -14
- package/src/components/VirtualScrollContainer/VirtualScrollContainer.css.ts +0 -51
- package/src/components/VirtualScrollContainer/getScrollableClassName.ts +0 -30
- package/src/components/VirtualScrollContainer/index.tsx +0 -63
- package/src/components/flexbox/index.ts +0 -562
- package/src/components/hooks/useComponentState/index.tsx +0 -562
- package/src/components/hooks/useComponentState/types.ts +0 -32
- package/src/components/hooks/useEffectOnceWithProperUnmount.ts +0 -33
- package/src/components/hooks/useEffectWithChanges.ts +0 -56
- package/src/components/hooks/useImmutableRef.ts +0 -7
- package/src/components/hooks/useInterceptedMap.ts +0 -71
- package/src/components/hooks/useLatest.tsx +0 -8
- package/src/components/hooks/useLazyLatest.ts +0 -23
- package/src/components/hooks/useMemoShallowObjectMerge.ts +0 -16
- package/src/components/hooks/useMounted.ts +0 -18
- package/src/components/hooks/useOnMount.ts +0 -21
- package/src/components/hooks/useOnScroll.ts +0 -34
- package/src/components/hooks/useOnce.ts +0 -10
- package/src/components/hooks/useOverlay/index.tsx +0 -418
- package/src/components/hooks/usePrevious.ts +0 -8
- package/src/components/hooks/usePropertyOld.ts +0 -168
- package/src/components/hooks/useRerender.ts +0 -12
- package/src/components/hooks/xuseProperty.ts +0 -165
- package/src/components/types/CellPosition.ts +0 -4
- package/src/components/types/NonUndefined.ts +0 -1
- package/src/components/types/RemoveObject.ts +0 -22
- package/src/components/types/Renderable.ts +0 -3
- package/src/components/types/ScrollPosition.ts +0 -7
- package/src/components/types/Setter.ts +0 -2
- package/src/components/types/Size.ts +0 -6
- package/src/components/types/SubscriptionCallback.ts +0 -10
- package/src/components/types/VoidFn.ts +0 -1
- package/src/components/utils/buildSubscriptionCallback.tsx +0 -60
- package/src/components/utils/clamp.ts +0 -3
- package/src/components/utils/debounce.ts +0 -16
- package/src/components/utils/decamelize.ts +0 -11
- package/src/components/utils/discardCallsWithEqualArg.ts +0 -42
- package/src/components/utils/getRenderIndexes.ts +0 -33
- package/src/components/utils/getScrollbarWidth.ts +0 -31
- package/src/components/utils/getVirtualRenderCount.ts +0 -21
- package/src/components/utils/isControlled.ts +0 -12
- package/src/components/utils/isControlledValue.ts +0 -5
- package/src/index.tsx +0 -34
- package/src/test.tsx +0 -18
- package/src/utils/DeepMap/index.ts +0 -588
- package/src/utils/DeepMap/once.ts +0 -16
- package/src/utils/DeepMap/sortAscending.ts +0 -1
- package/src/utils/DeepMap/tsconfig.deepmap.json +0 -17
- package/src/utils/DeepMap/xpackage.json +0 -26
- package/src/utils/debug.ts +0 -40
- package/src/utils/deepClone.ts +0 -38
- package/src/utils/getGlobal.ts +0 -3
- package/src/utils/groupAndPivot/defaultToKey.ts +0 -3
- package/src/utils/groupAndPivot/getGroupKeysForDataItem.ts +0 -19
- package/src/utils/groupAndPivot/getPivotColumnsAndColumnGroups.ts +0 -361
- package/src/utils/groupAndPivot/index.ts +0 -1229
- package/src/utils/groupAndPivot/types.ts +0 -10
- package/src/utils/join.ts +0 -4
- package/src/utils/mathIntersection.ts +0 -21
- package/src/utils/minified.d.ts +0 -2
- package/src/utils/minified.js +0 -6
- package/src/utils/multisort/index.ts +0 -151
- package/src/utils/multisort/sortTypes.ts +0 -25
- package/src/utils/notes-status.md +0 -92
- package/src/utils/pageGeometry/ConvexPoly.ts +0 -34
- package/src/utils/pageGeometry/Point.ts +0 -51
- package/src/utils/pageGeometry/PolyWithPoints.ts +0 -52
- package/src/utils/pageGeometry/Rectangle.ts +0 -98
- package/src/utils/pageGeometry/Triangle.ts +0 -16
- package/src/utils/pageGeometry/alignment/index.ts +0 -221
- package/src/utils/pageGeometry/polyContainsPoint.ts +0 -182
- package/src/utils/pageGeometry/types.ts +0 -3
- package/src/utils/proxyFnCall.ts +0 -46
- package/src/utils/raf.ts +0 -13
- package/src/utils/selectParent.ts +0 -18
- package/src/utils/shallowEqualObjects.ts +0 -49
- package/src/utils/stripVar.ts +0 -3
- package/src/utils/toUpperFirst.ts +0 -5
- package/todo.md +0 -2
- package/tsconfig.build.json +0 -8
- package/tsconfig.dev.json +0 -7
- package/tsconfig.json +0 -30
- package/tsconfig.typebundler.json +0 -13
- package/typedoc.json +0 -4
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
import { EffectCallback, DependencyList, useLayoutEffect } from 'react';
|
|
2
|
-
import { useEffect, useRef } from 'react';
|
|
3
|
-
|
|
4
|
-
export function useEffectWithRaf(fn: EffectCallback, deps: DependencyList) {
|
|
5
|
-
const rafId = useRef<number>(0);
|
|
6
|
-
const removeFnRaf = useRef<Function | void>();
|
|
7
|
-
|
|
8
|
-
useEffect(() => {
|
|
9
|
-
rafId.current = requestAnimationFrame(() => {
|
|
10
|
-
removeFnRaf.current = fn();
|
|
11
|
-
});
|
|
12
|
-
|
|
13
|
-
return () => {
|
|
14
|
-
if (rafId.current) {
|
|
15
|
-
cancelAnimationFrame(rafId.current);
|
|
16
|
-
}
|
|
17
|
-
if (typeof removeFnRaf.current === 'function') {
|
|
18
|
-
removeFnRaf.current();
|
|
19
|
-
removeFnRaf.current = undefined;
|
|
20
|
-
}
|
|
21
|
-
};
|
|
22
|
-
}, deps);
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
export function useLayoutEffectWithRaf(
|
|
26
|
-
fn: EffectCallback,
|
|
27
|
-
deps: DependencyList,
|
|
28
|
-
) {
|
|
29
|
-
const rafId = useRef<number>(0);
|
|
30
|
-
const removeFnRaf = useRef<Function | void>();
|
|
31
|
-
|
|
32
|
-
useLayoutEffect(() => {
|
|
33
|
-
rafId.current = requestAnimationFrame(() => {
|
|
34
|
-
removeFnRaf.current = fn();
|
|
35
|
-
});
|
|
36
|
-
|
|
37
|
-
return () => {
|
|
38
|
-
if (rafId.current) {
|
|
39
|
-
cancelAnimationFrame(rafId.current);
|
|
40
|
-
}
|
|
41
|
-
if (typeof removeFnRaf.current === 'function') {
|
|
42
|
-
removeFnRaf.current();
|
|
43
|
-
removeFnRaf.current = undefined;
|
|
44
|
-
}
|
|
45
|
-
};
|
|
46
|
-
}, deps);
|
|
47
|
-
}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import { useContext } from 'react';
|
|
2
|
-
import type { InfiniteTableContextValue } from '../types';
|
|
3
|
-
|
|
4
|
-
import { getInfiniteTableContext } from '../InfiniteTableContext';
|
|
5
|
-
|
|
6
|
-
export const useInfiniteTable = <T>(): InfiniteTableContextValue<T> => {
|
|
7
|
-
const TableContext = getInfiniteTableContext<T>();
|
|
8
|
-
|
|
9
|
-
return useContext(TableContext);
|
|
10
|
-
};
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import { useContext } from 'react';
|
|
2
|
-
import { InfiniteTableState } from '../types';
|
|
3
|
-
|
|
4
|
-
import { getInfiniteTableContext } from '../InfiniteTableContext';
|
|
5
|
-
|
|
6
|
-
export const useInfiniteTableState = <T>(): InfiniteTableState<T> => {
|
|
7
|
-
const TableContext = getInfiniteTableContext<T>();
|
|
8
|
-
const { componentState } = useContext(TableContext);
|
|
9
|
-
|
|
10
|
-
return componentState;
|
|
11
|
-
};
|
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
const DEFAULT_ReversedPolynomial = 0xedb88320;
|
|
2
|
-
|
|
3
|
-
/*
|
|
4
|
-
* CRC-32 implementation
|
|
5
|
-
*/
|
|
6
|
-
|
|
7
|
-
function crc32_generate(reversedPolynomial = DEFAULT_ReversedPolynomial) {
|
|
8
|
-
var table = new Array();
|
|
9
|
-
var i, j, n;
|
|
10
|
-
|
|
11
|
-
for (i = 0; i < 256; i++) {
|
|
12
|
-
n = i;
|
|
13
|
-
for (j = 8; j > 0; j--) {
|
|
14
|
-
if ((n & 1) == 1) {
|
|
15
|
-
n = (n >>> 1) ^ reversedPolynomial;
|
|
16
|
-
} else {
|
|
17
|
-
n = n >>> 1;
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
|
-
table[i] = n;
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
return table;
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
function crc32_initial() {
|
|
27
|
-
return 0xffffffff;
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
function crc32_add_byte(table: number[], crc: number, byte: number) {
|
|
31
|
-
crc = (crc >>> 8) ^ table[byte ^ (crc & 0x000000ff)];
|
|
32
|
-
return crc;
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
function crc32_final(crc: number) {
|
|
36
|
-
crc = ~crc;
|
|
37
|
-
crc = crc < 0 ? 0xffffffff + crc + 1 : crc;
|
|
38
|
-
return crc;
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
export function crc32_compute_string(
|
|
42
|
-
str: string,
|
|
43
|
-
reversedPolynomial = DEFAULT_ReversedPolynomial,
|
|
44
|
-
): string {
|
|
45
|
-
var table = crc32_generate(reversedPolynomial);
|
|
46
|
-
var crc = 0;
|
|
47
|
-
var i;
|
|
48
|
-
|
|
49
|
-
crc = crc32_initial();
|
|
50
|
-
|
|
51
|
-
for (i = 0; i < str.length; i++)
|
|
52
|
-
crc = crc32_add_byte(table, crc, str.charCodeAt(i));
|
|
53
|
-
|
|
54
|
-
crc = crc32_final(crc);
|
|
55
|
-
return `${crc}`;
|
|
56
|
-
}
|
|
@@ -1,147 +0,0 @@
|
|
|
1
|
-
import { crc32_compute_string } from './crc32';
|
|
2
|
-
import { LicenseDetails } from './LicenseDetails';
|
|
3
|
-
|
|
4
|
-
export const fieldsToLicenseDetails = (
|
|
5
|
-
fields: { name: string; value: string }[],
|
|
6
|
-
): LicenseDetails => {
|
|
7
|
-
const fieldsMap = fields.reduce((acc, field) => {
|
|
8
|
-
acc.set(field.name, field.value);
|
|
9
|
-
return acc;
|
|
10
|
-
}, new Map<string, string>());
|
|
11
|
-
|
|
12
|
-
const details: LicenseDetails = {
|
|
13
|
-
distribution: fieldsMap.get('Type') === 'distribution',
|
|
14
|
-
count: fieldsMap.get('DevCount') ? Number(fieldsMap.get('DevCount')) : 0,
|
|
15
|
-
start: new Date(fieldsMap.get('StartDate')!),
|
|
16
|
-
end: new Date(fieldsMap.get('EndDate')!),
|
|
17
|
-
owner: fieldsMap.get('Owner')!,
|
|
18
|
-
type: fieldsMap.get('Type')!,
|
|
19
|
-
timestamp: fieldsMap.get('TS') ? Number(fieldsMap.get('TS')) : 0,
|
|
20
|
-
trial: fieldsMap.get('Trial') === 'true' ? true : false,
|
|
21
|
-
ref: fieldsMap.get('Ref') ?? '',
|
|
22
|
-
};
|
|
23
|
-
|
|
24
|
-
return details;
|
|
25
|
-
};
|
|
26
|
-
|
|
27
|
-
export const logLicenseError = (
|
|
28
|
-
lines: string[],
|
|
29
|
-
fn: (...line: string[]) => void = console.error.bind(console),
|
|
30
|
-
) => {
|
|
31
|
-
lines = ['* * * infinite-table.com * * *', ...lines];
|
|
32
|
-
const max = Math.max(Math.max(...lines.map((l) => l.length)) + 4 * 2, 60); // 4 extra characters on each line, 3 stars and 1 space
|
|
33
|
-
|
|
34
|
-
lines.forEach((line) => {
|
|
35
|
-
let sideCount = (max - line.length) / 2 - 1; // there's 1 extra space on each side
|
|
36
|
-
let offset = 0;
|
|
37
|
-
|
|
38
|
-
if (sideCount !== Math.round(sideCount)) {
|
|
39
|
-
offset = -1;
|
|
40
|
-
sideCount = Math.round(sideCount);
|
|
41
|
-
}
|
|
42
|
-
const start = sideCount + offset;
|
|
43
|
-
const end = sideCount;
|
|
44
|
-
|
|
45
|
-
fn('*'.repeat(start) + ' ' + line + ' ' + '*'.repeat(end));
|
|
46
|
-
});
|
|
47
|
-
|
|
48
|
-
fn('*'.repeat(max));
|
|
49
|
-
};
|
|
50
|
-
|
|
51
|
-
export const isValidLicense = (
|
|
52
|
-
licenseKey: string = '',
|
|
53
|
-
packageInfo: { publishedAt: number; version: string },
|
|
54
|
-
fn?: (...args: string[]) => void,
|
|
55
|
-
) => {
|
|
56
|
-
let details: LicenseDetails;
|
|
57
|
-
|
|
58
|
-
try {
|
|
59
|
-
details = decode(licenseKey);
|
|
60
|
-
} catch (ex) {
|
|
61
|
-
logLicenseError(
|
|
62
|
-
[
|
|
63
|
-
`You don't have a valid Infinite Table license`,
|
|
64
|
-
'Please visit infinite-table.com to purchase a license.',
|
|
65
|
-
'Thank you for playing fair!',
|
|
66
|
-
],
|
|
67
|
-
fn,
|
|
68
|
-
);
|
|
69
|
-
return false;
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
const currentVersionReleaseDate = new Date(packageInfo.publishedAt);
|
|
73
|
-
const licenseEndDate = new Date(details.end);
|
|
74
|
-
|
|
75
|
-
if (licenseEndDate < currentVersionReleaseDate) {
|
|
76
|
-
logLicenseError(
|
|
77
|
-
[
|
|
78
|
-
`
|
|
79
|
-
Your Infinite Table license has expired on ${licenseEndDate.toDateString()}.
|
|
80
|
-
`,
|
|
81
|
-
`You are using version "${
|
|
82
|
-
packageInfo.version
|
|
83
|
-
}" of Infinite Table, which was published on ${currentVersionReleaseDate.toDateString()}.`,
|
|
84
|
-
`Please visit infinite-table.com to renew your license.`,
|
|
85
|
-
`Thank you for playing fair!`,
|
|
86
|
-
],
|
|
87
|
-
fn,
|
|
88
|
-
);
|
|
89
|
-
|
|
90
|
-
return false;
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
return true;
|
|
94
|
-
};
|
|
95
|
-
|
|
96
|
-
export const decode = (licenseKey: string): LicenseDetails => {
|
|
97
|
-
let crc: string = '';
|
|
98
|
-
let fields = licenseKey.split('|').map((part) => {
|
|
99
|
-
let [name, value] = part.split('=');
|
|
100
|
-
|
|
101
|
-
if (name === 'C') {
|
|
102
|
-
crc = value;
|
|
103
|
-
}
|
|
104
|
-
|
|
105
|
-
return {
|
|
106
|
-
name,
|
|
107
|
-
value,
|
|
108
|
-
};
|
|
109
|
-
});
|
|
110
|
-
|
|
111
|
-
if (!crc) {
|
|
112
|
-
throw 'Invalid license';
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
const crcParts = crc.split(',').reverse();
|
|
116
|
-
|
|
117
|
-
const overallCrc = crcParts.pop();
|
|
118
|
-
crcParts.forEach((fieldCrc, index) => {
|
|
119
|
-
const field = fields[index];
|
|
120
|
-
if (crc32_compute_string(field.value) !== fieldCrc) {
|
|
121
|
-
throw 'Invalid license';
|
|
122
|
-
}
|
|
123
|
-
});
|
|
124
|
-
|
|
125
|
-
const fieldsWithoutC = [...fields];
|
|
126
|
-
|
|
127
|
-
fieldsWithoutC.pop();
|
|
128
|
-
|
|
129
|
-
const fieldsWithoutCString = fieldsWithoutC
|
|
130
|
-
.map((field) => {
|
|
131
|
-
return `${field.name}=${field.value}`;
|
|
132
|
-
})
|
|
133
|
-
.join('|');
|
|
134
|
-
|
|
135
|
-
if (crc32_compute_string(fieldsWithoutCString) !== overallCrc) {
|
|
136
|
-
throw 'Invalid license';
|
|
137
|
-
}
|
|
138
|
-
|
|
139
|
-
fields = fields.map((f) => {
|
|
140
|
-
return {
|
|
141
|
-
...f,
|
|
142
|
-
value: decodeURI(f.value),
|
|
143
|
-
};
|
|
144
|
-
});
|
|
145
|
-
|
|
146
|
-
return fieldsToLicenseDetails(fields);
|
|
147
|
-
};
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
import { useMemo } from 'react';
|
|
2
|
-
import { isValidLicense } from './decode';
|
|
3
|
-
|
|
4
|
-
const SANDPACK_REGEX =
|
|
5
|
-
/(https):\/\/\d+\-\d+\-\d+\-(sandpack\.codesandbox\.io)/g;
|
|
6
|
-
const SANDBOX_REGEX = /(https):\/\/\S+(\.csb\.app)/g;
|
|
7
|
-
|
|
8
|
-
const origin = typeof window !== 'undefined' ? window.location.origin : '';
|
|
9
|
-
|
|
10
|
-
const isInsideSandpack = () => {
|
|
11
|
-
const [_fullUrl, protocol, sandpackUrl] = Array.from(
|
|
12
|
-
SANDPACK_REGEX.exec(origin) || [],
|
|
13
|
-
);
|
|
14
|
-
return protocol === 'https' && sandpackUrl === 'sandpack.codesandbox.io';
|
|
15
|
-
};
|
|
16
|
-
const isInsideSandbox = () => {
|
|
17
|
-
const [_fullUrl, protocol, sandboxUrl] = Array.from(
|
|
18
|
-
SANDBOX_REGEX.exec(origin) || [],
|
|
19
|
-
);
|
|
20
|
-
return protocol === 'https' && sandboxUrl === '.csb.app';
|
|
21
|
-
};
|
|
22
|
-
|
|
23
|
-
const isInsidePlayground = isInsideSandbox() || isInsideSandpack();
|
|
24
|
-
|
|
25
|
-
export const useLicense = (licenseKey: string = '') => {
|
|
26
|
-
const valid = useMemo(() => {
|
|
27
|
-
let valid = isValidLicense(licenseKey, {
|
|
28
|
-
publishedAt: __VERSION_TIMESTAMP__,
|
|
29
|
-
version: __VERSION__,
|
|
30
|
-
});
|
|
31
|
-
|
|
32
|
-
if (!licenseKey && !valid && isInsidePlayground) {
|
|
33
|
-
return true;
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
return valid;
|
|
37
|
-
}, [licenseKey]);
|
|
38
|
-
return valid;
|
|
39
|
-
};
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import { useEffect } from 'react';
|
|
2
|
-
import { useRerender } from '../../hooks/useRerender';
|
|
3
|
-
import { interceptMap } from '../../hooks/useInterceptedMap';
|
|
4
|
-
import { rafFn } from '../utils/rafFn';
|
|
5
|
-
|
|
6
|
-
export const useRerenderOnKeyChange = <K extends unknown, V extends unknown>(
|
|
7
|
-
map: Map<K, V>,
|
|
8
|
-
) => {
|
|
9
|
-
const [renderId, rerender] = useRerender();
|
|
10
|
-
|
|
11
|
-
useEffect(() => {
|
|
12
|
-
const update = rafFn(rerender);
|
|
13
|
-
return interceptMap(map, {
|
|
14
|
-
set: update,
|
|
15
|
-
clear: update,
|
|
16
|
-
delete: update,
|
|
17
|
-
});
|
|
18
|
-
}, [map]);
|
|
19
|
-
|
|
20
|
-
return renderId;
|
|
21
|
-
};
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import { useEffect } from 'react';
|
|
2
|
-
|
|
3
|
-
export const useRowHover = (
|
|
4
|
-
ref: React.MutableRefObject<HTMLElement | null>,
|
|
5
|
-
) => {
|
|
6
|
-
useEffect(() => {
|
|
7
|
-
const node = ref.current;
|
|
8
|
-
if (!node) {
|
|
9
|
-
return;
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
// const onMouseEnter = (event) => {
|
|
13
|
-
// console.log(event);
|
|
14
|
-
// };
|
|
15
|
-
// node.addEventListener('mouseover', onMouseEnter);
|
|
16
|
-
return () => {};
|
|
17
|
-
}, [ref.current]);
|
|
18
|
-
};
|
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
import { useRef, useEffect } from 'react';
|
|
2
|
-
import { cancelRaf, raf } from '../../../utils/raf';
|
|
3
|
-
|
|
4
|
-
import { InfiniteTableApi } from '../types';
|
|
5
|
-
|
|
6
|
-
const RETRIES = 10;
|
|
7
|
-
|
|
8
|
-
export function useScrollToActiveCell<T>(
|
|
9
|
-
activeCellIndex: [number, number] | null | undefined,
|
|
10
|
-
dataCount: number,
|
|
11
|
-
imperativeApi: InfiniteTableApi<T>,
|
|
12
|
-
) {
|
|
13
|
-
const didScrollRef = useRef<boolean>(false);
|
|
14
|
-
const rafId = useRef<number | null>(null);
|
|
15
|
-
|
|
16
|
-
useEffect(() => {
|
|
17
|
-
if (activeCellIndex != null) {
|
|
18
|
-
didScrollRef.current = false;
|
|
19
|
-
cancelRaf(rafId.current!);
|
|
20
|
-
}
|
|
21
|
-
}, [activeCellIndex]);
|
|
22
|
-
useEffect(() => {
|
|
23
|
-
if (activeCellIndex != null && !didScrollRef.current) {
|
|
24
|
-
function tryScroll(times = 0) {
|
|
25
|
-
times++;
|
|
26
|
-
cancelRaf(rafId.current!);
|
|
27
|
-
rafId.current = raf(() => {
|
|
28
|
-
didScrollRef.current = imperativeApi.scrollCellIntoView(
|
|
29
|
-
activeCellIndex![0],
|
|
30
|
-
activeCellIndex![1],
|
|
31
|
-
{
|
|
32
|
-
offset: 30,
|
|
33
|
-
},
|
|
34
|
-
);
|
|
35
|
-
if (!didScrollRef.current && times < RETRIES) {
|
|
36
|
-
tryScroll(times);
|
|
37
|
-
}
|
|
38
|
-
});
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
tryScroll();
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
return () => {
|
|
45
|
-
cancelRaf(rafId.current!);
|
|
46
|
-
};
|
|
47
|
-
}, [activeCellIndex, dataCount]);
|
|
48
|
-
}
|
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
import { useRef, useEffect } from 'react';
|
|
2
|
-
import { InfiniteTableApi } from '../types';
|
|
3
|
-
|
|
4
|
-
const RETRIES = 10;
|
|
5
|
-
|
|
6
|
-
export function useScrollToActiveRow<T>(
|
|
7
|
-
activeRowIndex: number | null | undefined,
|
|
8
|
-
dataCount: number,
|
|
9
|
-
imperativeApi: InfiniteTableApi<T>,
|
|
10
|
-
) {
|
|
11
|
-
const didScrollRef = useRef<boolean>(false);
|
|
12
|
-
const rafId = useRef<number | null>(null);
|
|
13
|
-
|
|
14
|
-
useEffect(() => {
|
|
15
|
-
if (activeRowIndex != null) {
|
|
16
|
-
didScrollRef.current = false;
|
|
17
|
-
cancelAnimationFrame(rafId.current!);
|
|
18
|
-
}
|
|
19
|
-
}, [activeRowIndex]);
|
|
20
|
-
|
|
21
|
-
useEffect(() => {
|
|
22
|
-
if (activeRowIndex != null && !didScrollRef.current) {
|
|
23
|
-
function tryScroll(times = 0) {
|
|
24
|
-
times++;
|
|
25
|
-
rafId.current = requestAnimationFrame(() => {
|
|
26
|
-
didScrollRef.current = imperativeApi.scrollRowIntoView(
|
|
27
|
-
activeRowIndex!,
|
|
28
|
-
{
|
|
29
|
-
offset: 0,
|
|
30
|
-
},
|
|
31
|
-
);
|
|
32
|
-
if (!didScrollRef.current && times < RETRIES) {
|
|
33
|
-
tryScroll(times);
|
|
34
|
-
}
|
|
35
|
-
});
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
tryScroll();
|
|
39
|
-
}
|
|
40
|
-
return () => {
|
|
41
|
-
cancelAnimationFrame(rafId.current!);
|
|
42
|
-
};
|
|
43
|
-
}, [activeRowIndex, dataCount]);
|
|
44
|
-
}
|
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
import { useState, useEffect, useLayoutEffect } from 'react';
|
|
2
|
-
|
|
3
|
-
import { useDataSourceContextValue } from '../../DataSource/publicHooks/useDataSource';
|
|
4
|
-
import { useComponentState } from '../../hooks/useComponentState';
|
|
5
|
-
import { MatrixBrain } from '../../VirtualBrain/MatrixBrain';
|
|
6
|
-
import { InfiniteTableState, Scrollbars } from '../types';
|
|
7
|
-
|
|
8
|
-
const INITIAL_SCROLLBARS: Scrollbars = {
|
|
9
|
-
vertical: false,
|
|
10
|
-
horizontal: false,
|
|
11
|
-
};
|
|
12
|
-
|
|
13
|
-
export function useScrollbars<T>(brain: MatrixBrain) {
|
|
14
|
-
const { getComponentState: getInfiniteTableState } =
|
|
15
|
-
useComponentState<InfiniteTableState<T>>();
|
|
16
|
-
const { getState: getDataSourceState } = useDataSourceContextValue<T>();
|
|
17
|
-
|
|
18
|
-
const [scrollbars, setScrollbars] = useState(INITIAL_SCROLLBARS);
|
|
19
|
-
|
|
20
|
-
useEffect(() => {
|
|
21
|
-
return brain.onRenderCountChange(() => {
|
|
22
|
-
const { scrollTopMax, scrollLeftMax } = brain;
|
|
23
|
-
|
|
24
|
-
setScrollbars({
|
|
25
|
-
vertical: scrollTopMax > 0,
|
|
26
|
-
horizontal: scrollLeftMax > 0,
|
|
27
|
-
});
|
|
28
|
-
});
|
|
29
|
-
}, [brain]);
|
|
30
|
-
|
|
31
|
-
useLayoutEffect(() => {
|
|
32
|
-
// this needs to be useLayoutEffect
|
|
33
|
-
// on live Pagination cursor change we need this - ref #lvpgn
|
|
34
|
-
const dataSourceState = getDataSourceState();
|
|
35
|
-
const { onScrollbarsChange } = getInfiniteTableState();
|
|
36
|
-
const { notifyScrollbarsChange } = dataSourceState;
|
|
37
|
-
|
|
38
|
-
if (
|
|
39
|
-
onScrollbarsChange &&
|
|
40
|
-
// we add extra conditions so as to fire this only after initial data load
|
|
41
|
-
dataSourceState.updatedAt &&
|
|
42
|
-
dataSourceState.dataArray.length
|
|
43
|
-
) {
|
|
44
|
-
onScrollbarsChange(scrollbars);
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
notifyScrollbarsChange(scrollbars);
|
|
48
|
-
}, [scrollbars]);
|
|
49
|
-
|
|
50
|
-
return scrollbars;
|
|
51
|
-
}
|
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
import { useCallback } from 'react';
|
|
2
|
-
|
|
3
|
-
import { DeepMap } from '../../../utils/DeepMap';
|
|
4
|
-
import { LAZY_ROOT_KEY_FOR_GROUPS } from '../../../utils/groupAndPivot';
|
|
5
|
-
import { GroupRowsState } from '../../DataSource';
|
|
6
|
-
import { getChangeDetect } from '../../DataSource/privateHooks/getChangeDetect';
|
|
7
|
-
import { loadData } from '../../DataSource/privateHooks/useLoadData';
|
|
8
|
-
import { useDataSourceContextValue } from '../../DataSource/publicHooks/useDataSource';
|
|
9
|
-
|
|
10
|
-
export type ToggleGroupRowFn = (groupKeys: any[]) => void;
|
|
11
|
-
|
|
12
|
-
export function useToggleGroupRow<T>() {
|
|
13
|
-
const { getState: getDataSourceState, componentActions: dataSourceActions } =
|
|
14
|
-
useDataSourceContextValue<T>();
|
|
15
|
-
|
|
16
|
-
const toggleGroupRow = useCallback<ToggleGroupRowFn>((groupKeys: any[]) => {
|
|
17
|
-
// todo this is duplicated in imperative api
|
|
18
|
-
|
|
19
|
-
const state = getDataSourceState();
|
|
20
|
-
const newState = new GroupRowsState(state.groupRowsState);
|
|
21
|
-
newState.toggleGroupRow(groupKeys);
|
|
22
|
-
|
|
23
|
-
dataSourceActions.groupRowsState = newState;
|
|
24
|
-
if (state.lazyLoad) {
|
|
25
|
-
const dataKeys = [LAZY_ROOT_KEY_FOR_GROUPS, ...groupKeys];
|
|
26
|
-
const currentData = state.originalLazyGroupData.get(dataKeys);
|
|
27
|
-
|
|
28
|
-
if (newState.isGroupRowExpanded(groupKeys)) {
|
|
29
|
-
if (!currentData?.cache) {
|
|
30
|
-
loadData(state.data, state, dataSourceActions, {
|
|
31
|
-
groupKeys,
|
|
32
|
-
});
|
|
33
|
-
}
|
|
34
|
-
} else {
|
|
35
|
-
if (!currentData?.cache) {
|
|
36
|
-
const keysToDelete =
|
|
37
|
-
state.lazyLoadCacheOfLoadedBatches.getKeysStartingWith(groupKeys);
|
|
38
|
-
keysToDelete.forEach((keys) => {
|
|
39
|
-
state.lazyLoadCacheOfLoadedBatches.delete(keys);
|
|
40
|
-
});
|
|
41
|
-
|
|
42
|
-
dataSourceActions.lazyLoadCacheOfLoadedBatches = DeepMap.clone(
|
|
43
|
-
state.lazyLoadCacheOfLoadedBatches,
|
|
44
|
-
);
|
|
45
|
-
|
|
46
|
-
state.originalLazyGroupData.delete(dataKeys);
|
|
47
|
-
|
|
48
|
-
dataSourceActions.originalLazyGroupDataChangeDetect =
|
|
49
|
-
getChangeDetect();
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
}, []);
|
|
54
|
-
|
|
55
|
-
return toggleGroupRow;
|
|
56
|
-
}
|