react-virtual-renderer 1.1.3 → 1.1.4
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/dist/App.d.ts.map +1 -1
- package/dist/App.js +65 -3
- package/dist/App.js.map +1 -1
- package/dist/components/VirtualGrid.d.ts +30 -0
- package/dist/components/VirtualGrid.d.ts.map +1 -1
- package/dist/components/VirtualGrid.js +147 -117
- package/dist/components/VirtualGrid.js.map +1 -1
- package/dist/components/VirtualList.d.ts +0 -4
- package/dist/components/VirtualList.d.ts.map +1 -1
- package/dist/components/VirtualList.js +66 -47
- package/dist/components/VirtualList.js.map +1 -1
- package/dist/components/VirtualLiveRegion.d.ts +12 -0
- package/dist/components/VirtualLiveRegion.d.ts.map +1 -0
- package/dist/components/VirtualLiveRegion.js +27 -0
- package/dist/components/VirtualLiveRegion.js.map +1 -0
- package/dist/core/FenwickTree.d.ts +47 -0
- package/dist/core/FenwickTree.d.ts.map +1 -0
- package/dist/core/FenwickTree.js +206 -0
- package/dist/core/FenwickTree.js.map +1 -0
- package/dist/core/GridLayoutEngine.d.ts +64 -0
- package/dist/core/GridLayoutEngine.d.ts.map +1 -0
- package/dist/core/GridLayoutEngine.js +153 -0
- package/dist/core/GridLayoutEngine.js.map +1 -0
- package/dist/core/GroupedListEngine.d.ts +21 -0
- package/dist/core/GroupedListEngine.d.ts.map +1 -0
- package/dist/core/GroupedListEngine.js +22 -0
- package/dist/core/GroupedListEngine.js.map +1 -0
- package/dist/core/ListController.d.ts +31 -0
- package/dist/core/ListController.d.ts.map +1 -0
- package/dist/core/ListController.js +71 -0
- package/dist/core/ListController.js.map +1 -0
- package/dist/core/VirtualizationEngine.d.ts +24 -13
- package/dist/core/VirtualizationEngine.d.ts.map +1 -1
- package/dist/core/VirtualizationEngine.js +50 -87
- package/dist/core/VirtualizationEngine.js.map +1 -1
- package/dist/examples/DynamicHeightLists.d.ts +2 -0
- package/dist/examples/DynamicHeightLists.d.ts.map +1 -0
- package/dist/examples/DynamicHeightLists.js +42 -0
- package/dist/examples/DynamicHeightLists.js.map +1 -0
- package/dist/examples/FixedGrid.d.ts +2 -0
- package/dist/examples/FixedGrid.d.ts.map +1 -0
- package/dist/examples/FixedGrid.js +40 -0
- package/dist/examples/FixedGrid.js.map +1 -0
- package/dist/examples/GroupedContactList.d.ts +2 -0
- package/dist/examples/GroupedContactList.d.ts.map +1 -0
- package/dist/examples/GroupedContactList.js +20 -0
- package/dist/examples/GroupedContactList.js.map +1 -0
- package/dist/examples/InfiniteScrollLists.d.ts +2 -0
- package/dist/examples/InfiniteScrollLists.d.ts.map +1 -0
- package/dist/examples/InfiniteScrollLists.js +93 -0
- package/dist/examples/InfiniteScrollLists.js.map +1 -0
- package/dist/examples/MasonaryGrid.d.ts +2 -0
- package/dist/examples/MasonaryGrid.d.ts.map +1 -0
- package/dist/examples/MasonaryGrid.js +36 -0
- package/dist/examples/MasonaryGrid.js.map +1 -0
- package/dist/examples/PerfHarness.d.ts +2 -0
- package/dist/examples/PerfHarness.d.ts.map +1 -0
- package/dist/examples/PerfHarness.js +131 -0
- package/dist/examples/PerfHarness.js.map +1 -0
- package/dist/hooks/useBidirectionalInfiniteScroll.d.ts +32 -0
- package/dist/hooks/useBidirectionalInfiniteScroll.d.ts.map +1 -0
- package/dist/hooks/useBidirectionalInfiniteScroll.js +89 -0
- package/dist/hooks/useBidirectionalInfiniteScroll.js.map +1 -0
- package/dist/hooks/useInfiniteScroll.d.ts +36 -12
- package/dist/hooks/useInfiniteScroll.d.ts.map +1 -1
- package/dist/hooks/useInfiniteScroll.js +46 -45
- package/dist/hooks/useInfiniteScroll.js.map +1 -1
- package/dist/hooks/useRevoingTabIndex.d.ts +11 -0
- package/dist/hooks/useRevoingTabIndex.d.ts.map +1 -0
- package/dist/hooks/useRevoingTabIndex.js +28 -0
- package/dist/hooks/useRevoingTabIndex.js.map +1 -0
- package/dist/hooks/useVirtualAllyProps.d.ts +23 -0
- package/dist/hooks/useVirtualAllyProps.d.ts.map +1 -0
- package/dist/hooks/useVirtualAllyProps.js +25 -0
- package/dist/hooks/useVirtualAllyProps.js.map +1 -0
- package/dist/index.cjs.js +1 -1
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.esm.js +1 -1
- package/dist/index.esm.js.map +1 -1
- package/dist/main.js +4 -4
- package/dist/main.js.map +1 -1
- package/dist/types.d.ts +10 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -1,33 +1,57 @@
|
|
|
1
|
+
import { RefObject } from "react";
|
|
1
2
|
export interface UseInfiniteScrollParams {
|
|
2
3
|
/**
|
|
3
|
-
*
|
|
4
|
+
* Called when the sentinel enters the observed root's margin.
|
|
4
5
|
*/
|
|
5
6
|
onLoadMore: () => void | Promise<void>;
|
|
6
7
|
/**
|
|
7
|
-
*
|
|
8
|
-
*
|
|
8
|
+
* IntersectionObserver rootMargin - the IO equivalent of the old
|
|
9
|
+
* pixel "threshold" (how far from the edge to fire early).
|
|
10
|
+
* Default: "500px", matching the previous default distance.
|
|
9
11
|
*/
|
|
10
|
-
|
|
12
|
+
rootMargin?: string;
|
|
11
13
|
/**
|
|
12
|
-
* External loading state
|
|
14
|
+
* External loading state - if the caller is already loading (e.g.
|
|
15
|
+
* from a data-fetching hook), a new intersection won't re-trigger.
|
|
13
16
|
*/
|
|
14
17
|
isLoading?: boolean;
|
|
18
|
+
/** Enable / disable the observer entirely. */
|
|
19
|
+
enabled?: boolean;
|
|
15
20
|
/**
|
|
16
|
-
*
|
|
21
|
+
* The scrollable element to use as the IntersectionObserver root.
|
|
22
|
+
* Pass the same ref you gave VirtualList/VirtualGrid so the
|
|
23
|
+
* threshold is evaluated against that container, not the browser
|
|
24
|
+
* viewport. Omit to observe against the viewport.
|
|
17
25
|
*/
|
|
18
|
-
|
|
26
|
+
root?: RefObject<Element | null>;
|
|
19
27
|
}
|
|
20
28
|
export interface UseInfiniteScrollReturn<T extends HTMLElement = HTMLDivElement> {
|
|
21
|
-
|
|
29
|
+
/**
|
|
30
|
+
* Attach this to a small sentinel element rendered after your last
|
|
31
|
+
* item (e.g. `<div ref={sentinelRef} style={{ height: 1 }} />`).
|
|
32
|
+
* It never needs content or visible size.
|
|
33
|
+
*/
|
|
34
|
+
sentinelRef: RefObject<T | null>;
|
|
22
35
|
isAtBottom: boolean;
|
|
23
36
|
isLoading: boolean;
|
|
24
|
-
checkIfAtBottom: () => void;
|
|
25
37
|
}
|
|
26
38
|
/**
|
|
27
39
|
* useInfiniteScroll
|
|
28
40
|
*
|
|
29
|
-
*
|
|
30
|
-
*
|
|
41
|
+
* PERFORMANCE: the previous version attached a `scroll` listener and
|
|
42
|
+
* read `scrollTop` / `scrollHeight` / `clientHeight` on every single
|
|
43
|
+
* scroll event. Each of those reads can force a synchronous layout
|
|
44
|
+
* ("layout thrashing") if a style/DOM write happened earlier in the
|
|
45
|
+
* same frame, and the handler ran on the main thread for every pixel
|
|
46
|
+
* scrolled, whether or not the user was anywhere near the bottom.
|
|
47
|
+
*
|
|
48
|
+
* This version observes a 1px sentinel with IntersectionObserver
|
|
49
|
+
* instead. The browser computes intersection off the main thread on
|
|
50
|
+
* its own compositor schedule - there is no per-scroll-event JS cost,
|
|
51
|
+
* no layout reads, and no manual threshold math at all. This is also
|
|
52
|
+
* what react-window/react-virtuoso-adjacent "load more" patterns and
|
|
53
|
+
* most production infinite-scroll implementations converged on for
|
|
54
|
+
* the same reason.
|
|
31
55
|
*/
|
|
32
|
-
export declare function useInfiniteScroll<T extends HTMLElement = HTMLDivElement>({ onLoadMore,
|
|
56
|
+
export declare function useInfiniteScroll<T extends HTMLElement = HTMLDivElement>({ onLoadMore, rootMargin, isLoading, enabled, root, }: UseInfiniteScrollParams): UseInfiniteScrollReturn<T>;
|
|
33
57
|
//# sourceMappingURL=useInfiniteScroll.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useInfiniteScroll.d.ts","sourceRoot":"","sources":["../../src/hooks/useInfiniteScroll.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"useInfiniteScroll.d.ts","sourceRoot":"","sources":["../../src/hooks/useInfiniteScroll.ts"],"names":[],"mappings":"AAAA,OAAO,EAIH,SAAS,EACZ,MAAM,OAAO,CAAC;AAEf,MAAM,WAAW,uBAAuB;IACpC;;OAEG;IACH,UAAU,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEvC;;;;OAIG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;;OAGG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB,8CAA8C;IAC9C,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB;;;;;OAKG;IACH,IAAI,CAAC,EAAE,SAAS,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC;CACpC;AAED,MAAM,WAAW,uBAAuB,CAAC,CAAC,SAAS,WAAW,GAAG,cAAc;IAC3E;;;;OAIG;IACH,WAAW,EAAE,SAAS,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;IACjC,UAAU,EAAE,OAAO,CAAC;IACpB,SAAS,EAAE,OAAO,CAAC;CACtB;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,SAAS,WAAW,GAAG,cAAc,EAAE,EACtE,UAAU,EACV,UAAoB,EACpB,SAAiB,EACjB,OAAc,EACd,IAAI,GACP,EAAE,uBAAuB,GAAG,uBAAuB,CAAC,CAAC,CAAC,CA4DtD"}
|
|
@@ -1,67 +1,68 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { useEffect, useRef, useState, } from "react";
|
|
2
2
|
/**
|
|
3
3
|
* useInfiniteScroll
|
|
4
4
|
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
5
|
+
* PERFORMANCE: the previous version attached a `scroll` listener and
|
|
6
|
+
* read `scrollTop` / `scrollHeight` / `clientHeight` on every single
|
|
7
|
+
* scroll event. Each of those reads can force a synchronous layout
|
|
8
|
+
* ("layout thrashing") if a style/DOM write happened earlier in the
|
|
9
|
+
* same frame, and the handler ran on the main thread for every pixel
|
|
10
|
+
* scrolled, whether or not the user was anywhere near the bottom.
|
|
11
|
+
*
|
|
12
|
+
* This version observes a 1px sentinel with IntersectionObserver
|
|
13
|
+
* instead. The browser computes intersection off the main thread on
|
|
14
|
+
* its own compositor schedule - there is no per-scroll-event JS cost,
|
|
15
|
+
* no layout reads, and no manual threshold math at all. This is also
|
|
16
|
+
* what react-window/react-virtuoso-adjacent "load more" patterns and
|
|
17
|
+
* most production infinite-scroll implementations converged on for
|
|
18
|
+
* the same reason.
|
|
7
19
|
*/
|
|
8
|
-
export function useInfiniteScroll({ onLoadMore,
|
|
9
|
-
const
|
|
20
|
+
export function useInfiniteScroll({ onLoadMore, rootMargin = "500px", isLoading = false, enabled = true, root, }) {
|
|
21
|
+
const sentinelRef = useRef(null);
|
|
10
22
|
const [isAtBottom, setIsAtBottom] = useState(false);
|
|
11
23
|
const loadingRef = useRef(false);
|
|
12
24
|
const onLoadMoreRef = useRef(onLoadMore);
|
|
13
25
|
useEffect(() => {
|
|
14
26
|
onLoadMoreRef.current = onLoadMore;
|
|
15
27
|
}, [onLoadMore]);
|
|
16
|
-
const checkIfAtBottom = useCallback(() => {
|
|
17
|
-
if (!enabled)
|
|
18
|
-
return;
|
|
19
|
-
const container = containerRef.current;
|
|
20
|
-
if (!container)
|
|
21
|
-
return;
|
|
22
|
-
const { scrollTop, scrollHeight, clientHeight, } = container;
|
|
23
|
-
const distanceFromBottom = scrollHeight -
|
|
24
|
-
scrollTop -
|
|
25
|
-
clientHeight;
|
|
26
|
-
const reachedBottom = distanceFromBottom <= threshold;
|
|
27
|
-
setIsAtBottom(reachedBottom);
|
|
28
|
-
if (reachedBottom &&
|
|
29
|
-
!loadingRef.current &&
|
|
30
|
-
!isLoading) {
|
|
31
|
-
loadingRef.current = true;
|
|
32
|
-
Promise.resolve(onLoadMoreRef.current()).finally(() => {
|
|
33
|
-
loadingRef.current = false;
|
|
34
|
-
});
|
|
35
|
-
}
|
|
36
|
-
}, [
|
|
37
|
-
threshold,
|
|
38
|
-
enabled,
|
|
39
|
-
isLoading,
|
|
40
|
-
]);
|
|
41
28
|
useEffect(() => {
|
|
42
29
|
if (!enabled)
|
|
43
30
|
return;
|
|
44
|
-
const
|
|
45
|
-
if (!
|
|
31
|
+
const sentinel = sentinelRef.current;
|
|
32
|
+
if (!sentinel)
|
|
46
33
|
return;
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
34
|
+
if (typeof window === "undefined" || !("IntersectionObserver" in window)) {
|
|
35
|
+
// SSR / very old browser fallback: no polling loop is added -
|
|
36
|
+
// the consumer can still call onLoadMore manually (e.g. a
|
|
37
|
+
// "Load more" button) if this environment is a real target.
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
const observer = new IntersectionObserver((entries) => {
|
|
41
|
+
const entry = entries[0];
|
|
42
|
+
if (!entry)
|
|
43
|
+
return;
|
|
44
|
+
setIsAtBottom(entry.isIntersecting);
|
|
45
|
+
if (entry.isIntersecting && !loadingRef.current && !isLoading) {
|
|
46
|
+
loadingRef.current = true;
|
|
47
|
+
Promise.resolve(onLoadMoreRef.current()).finally(() => {
|
|
48
|
+
loadingRef.current = false;
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
}, {
|
|
52
|
+
root: root?.current ?? null,
|
|
53
|
+
rootMargin,
|
|
54
|
+
threshold: 0,
|
|
55
|
+
});
|
|
56
|
+
observer.observe(sentinel);
|
|
53
57
|
return () => {
|
|
54
|
-
|
|
58
|
+
observer.disconnect();
|
|
55
59
|
};
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
checkIfAtBottom,
|
|
59
|
-
]);
|
|
60
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
61
|
+
}, [enabled, rootMargin, isLoading, root?.current]);
|
|
60
62
|
return {
|
|
61
|
-
|
|
63
|
+
sentinelRef,
|
|
62
64
|
isAtBottom,
|
|
63
65
|
isLoading,
|
|
64
|
-
checkIfAtBottom,
|
|
65
66
|
};
|
|
66
67
|
}
|
|
67
68
|
//# sourceMappingURL=useInfiniteScroll.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useInfiniteScroll.js","sourceRoot":"","sources":["../../src/hooks/useInfiniteScroll.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,
|
|
1
|
+
{"version":3,"file":"useInfiniteScroll.js","sourceRoot":"","sources":["../../src/hooks/useInfiniteScroll.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,SAAS,EACT,MAAM,EACN,QAAQ,GAEX,MAAM,OAAO,CAAC;AA4Cf;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,UAAU,iBAAiB,CAAyC,EACtE,UAAU,EACV,UAAU,GAAG,OAAO,EACpB,SAAS,GAAG,KAAK,EACjB,OAAO,GAAG,IAAI,EACd,IAAI,GACkB;IACtB,MAAM,WAAW,GAAG,MAAM,CAAW,IAAI,CAAC,CAAC;IAE3C,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAEpD,MAAM,UAAU,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IACjC,MAAM,aAAa,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;IAEzC,SAAS,CAAC,GAAG,EAAE;QACX,aAAa,CAAC,OAAO,GAAG,UAAU,CAAC;IACvC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;IAEjB,SAAS,CAAC,GAAG,EAAE;QACX,IAAI,CAAC,OAAO;YAAE,OAAO;QAErB,MAAM,QAAQ,GAAG,WAAW,CAAC,OAAO,CAAC;QACrC,IAAI,CAAC,QAAQ;YAAE,OAAO;QAEtB,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,CAAC,CAAC,sBAAsB,IAAI,MAAM,CAAC,EAAE,CAAC;YACvE,8DAA8D;YAC9D,0DAA0D;YAC1D,4DAA4D;YAC5D,OAAO;QACX,CAAC;QAED,MAAM,QAAQ,GAAG,IAAI,oBAAoB,CACrC,CAAC,OAAO,EAAE,EAAE;YACR,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;YACzB,IAAI,CAAC,KAAK;gBAAE,OAAO;YAEnB,aAAa,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;YAEpC,IAAI,KAAK,CAAC,cAAc,IAAI,CAAC,UAAU,CAAC,OAAO,IAAI,CAAC,SAAS,EAAE,CAAC;gBAC5D,UAAU,CAAC,OAAO,GAAG,IAAI,CAAC;gBAE1B,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE;oBAClD,UAAU,CAAC,OAAO,GAAG,KAAK,CAAC;gBAC/B,CAAC,CAAC,CAAC;YACP,CAAC;QACL,CAAC,EACD;YACI,IAAI,EAAE,IAAI,EAAE,OAAO,IAAI,IAAI;YAC3B,UAAU;YACV,SAAS,EAAE,CAAC;SACf,CACJ,CAAC;QAEF,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAE3B,OAAO,GAAG,EAAE;YACR,QAAQ,CAAC,UAAU,EAAE,CAAC;QAC1B,CAAC,CAAC;QACF,uDAAuD;IAC3D,CAAC,EAAE,CAAC,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;IAEpD,OAAO;QACH,WAAW;QACX,UAAU;QACV,SAAS;KACZ,CAAC;AACN,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Roving tabindex: only the "active" item is in the tab order
|
|
3
|
+
* (tabIndex 0), everything else is -1. Arrow/Home/End keys move the
|
|
4
|
+
* active index and scroll it into view.
|
|
5
|
+
*/
|
|
6
|
+
export declare function useRovingTabIndex(itemCount: number, scrollToItem: (index: number) => void): {
|
|
7
|
+
activeIndex: number;
|
|
8
|
+
onKeyDown: (e: React.KeyboardEvent) => void;
|
|
9
|
+
setActiveIndex: import("react").Dispatch<import("react").SetStateAction<number>>;
|
|
10
|
+
};
|
|
11
|
+
//# sourceMappingURL=useRevoingTabIndex.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useRevoingTabIndex.d.ts","sourceRoot":"","sources":["../../src/hooks/useRevoingTabIndex.ts"],"names":[],"mappings":"AAGA;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI;;mBAI9E,KAAK,CAAC,aAAa;;EAgB9B"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
// hooks/useRovingTabIndex.ts
|
|
2
|
+
import { useCallback, useState } from 'react';
|
|
3
|
+
/**
|
|
4
|
+
* Roving tabindex: only the "active" item is in the tab order
|
|
5
|
+
* (tabIndex 0), everything else is -1. Arrow/Home/End keys move the
|
|
6
|
+
* active index and scroll it into view.
|
|
7
|
+
*/
|
|
8
|
+
export function useRovingTabIndex(itemCount, scrollToItem) {
|
|
9
|
+
const [activeIndex, setActiveIndex] = useState(0);
|
|
10
|
+
const onKeyDown = useCallback((e) => {
|
|
11
|
+
let next = activeIndex;
|
|
12
|
+
if (e.key === 'ArrowDown')
|
|
13
|
+
next = Math.min(itemCount - 1, activeIndex + 1);
|
|
14
|
+
else if (e.key === 'ArrowUp')
|
|
15
|
+
next = Math.max(0, activeIndex - 1);
|
|
16
|
+
else if (e.key === 'Home')
|
|
17
|
+
next = 0;
|
|
18
|
+
else if (e.key === 'End')
|
|
19
|
+
next = itemCount - 1;
|
|
20
|
+
else
|
|
21
|
+
return;
|
|
22
|
+
e.preventDefault();
|
|
23
|
+
setActiveIndex(next);
|
|
24
|
+
scrollToItem(next);
|
|
25
|
+
}, [activeIndex, itemCount, scrollToItem]);
|
|
26
|
+
return { activeIndex, onKeyDown, setActiveIndex };
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=useRevoingTabIndex.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useRevoingTabIndex.js","sourceRoot":"","sources":["../../src/hooks/useRevoingTabIndex.ts"],"names":[],"mappings":"AAAA,6BAA6B;AAC7B,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAE9C;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAAC,SAAiB,EAAE,YAAqC;IACtF,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IAElD,MAAM,SAAS,GAAG,WAAW,CACzB,CAAC,CAAsB,EAAE,EAAE;QACvB,IAAI,IAAI,GAAG,WAAW,CAAC;QACvB,IAAI,CAAC,CAAC,GAAG,KAAK,WAAW;YAAE,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,GAAG,CAAC,EAAE,WAAW,GAAG,CAAC,CAAC,CAAC;aACtE,IAAI,CAAC,CAAC,GAAG,KAAK,SAAS;YAAE,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,WAAW,GAAG,CAAC,CAAC,CAAC;aAC7D,IAAI,CAAC,CAAC,GAAG,KAAK,MAAM;YAAE,IAAI,GAAG,CAAC,CAAC;aAC/B,IAAI,CAAC,CAAC,GAAG,KAAK,KAAK;YAAE,IAAI,GAAG,SAAS,GAAG,CAAC,CAAC;;YAC1C,OAAO;QAEZ,CAAC,CAAC,cAAc,EAAE,CAAC;QACnB,cAAc,CAAC,IAAI,CAAC,CAAC;QACrB,YAAY,CAAC,IAAI,CAAC,CAAC;IACvB,CAAC,EACD,CAAC,WAAW,EAAE,SAAS,EAAE,YAAY,CAAC,CACzC,CAAC;IAEF,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,cAAc,EAAE,CAAC;AACtD,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
export interface VirtualA11yConfig {
|
|
2
|
+
itemCount: number;
|
|
3
|
+
role?: 'list' | 'grid';
|
|
4
|
+
}
|
|
5
|
+
/**
|
|
6
|
+
* ARIA attributes for a virtualized container and its items, so
|
|
7
|
+
* screen readers understand the FULL collection size even though
|
|
8
|
+
* only a window of items exists in the DOM at any time. Without
|
|
9
|
+
* this, a screen reader announces "list, 20 items" (whatever happens
|
|
10
|
+
* to be mounted) instead of the true count.
|
|
11
|
+
*/
|
|
12
|
+
export declare function useVirtualContainerA11y({ itemCount, role }: VirtualA11yConfig): {
|
|
13
|
+
role: "grid" | "list";
|
|
14
|
+
'aria-rowcount': number | undefined;
|
|
15
|
+
'aria-setsize': number | undefined;
|
|
16
|
+
};
|
|
17
|
+
export declare function useVirtualItemA11y(index: number, itemCount: number, role?: 'list' | 'grid'): {
|
|
18
|
+
role: string;
|
|
19
|
+
'aria-posinset': number;
|
|
20
|
+
'aria-setsize': number;
|
|
21
|
+
tabIndex: number;
|
|
22
|
+
};
|
|
23
|
+
//# sourceMappingURL=useVirtualAllyProps.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useVirtualAllyProps.d.ts","sourceRoot":"","sources":["../../src/hooks/useVirtualAllyProps.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,iBAAiB;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CAC1B;AAED;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CAAC,EAAE,SAAS,EAAE,IAAa,EAAE,EAAE,iBAAiB;;;;EAStF;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,GAAE,MAAM,GAAG,MAAe;;;;;EAUlG"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
// hooks/useVirtualA11yProps.ts
|
|
2
|
+
import { useMemo } from 'react';
|
|
3
|
+
/**
|
|
4
|
+
* ARIA attributes for a virtualized container and its items, so
|
|
5
|
+
* screen readers understand the FULL collection size even though
|
|
6
|
+
* only a window of items exists in the DOM at any time. Without
|
|
7
|
+
* this, a screen reader announces "list, 20 items" (whatever happens
|
|
8
|
+
* to be mounted) instead of the true count.
|
|
9
|
+
*/
|
|
10
|
+
export function useVirtualContainerA11y({ itemCount, role = 'list' }) {
|
|
11
|
+
return useMemo(() => ({
|
|
12
|
+
role,
|
|
13
|
+
'aria-rowcount': role === 'grid' ? itemCount : undefined,
|
|
14
|
+
'aria-setsize': role === 'list' ? itemCount : undefined,
|
|
15
|
+
}), [itemCount, role]);
|
|
16
|
+
}
|
|
17
|
+
export function useVirtualItemA11y(index, itemCount, role = 'list') {
|
|
18
|
+
return useMemo(() => ({
|
|
19
|
+
role: role === 'grid' ? 'row' : 'listitem',
|
|
20
|
+
'aria-posinset': index + 1,
|
|
21
|
+
'aria-setsize': itemCount,
|
|
22
|
+
tabIndex: -1, // managed by roving tabindex, see below
|
|
23
|
+
}), [index, itemCount, role]);
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=useVirtualAllyProps.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useVirtualAllyProps.js","sourceRoot":"","sources":["../../src/hooks/useVirtualAllyProps.ts"],"names":[],"mappings":"AAAA,+BAA+B;AAC/B,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAOhC;;;;;;GAMG;AACH,MAAM,UAAU,uBAAuB,CAAC,EAAE,SAAS,EAAE,IAAI,GAAG,MAAM,EAAqB;IACnF,OAAO,OAAO,CACV,GAAG,EAAE,CAAC,CAAC;QACH,IAAI;QACJ,eAAe,EAAE,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS;QACxD,cAAc,EAAE,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS;KAC1D,CAAC,EACF,CAAC,SAAS,EAAE,IAAI,CAAC,CACpB,CAAC;AACN,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,KAAa,EAAE,SAAiB,EAAE,OAAwB,MAAM;IAC/F,OAAO,OAAO,CACV,GAAG,EAAE,CAAC,CAAC;QACH,IAAI,EAAE,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU;QAC1C,eAAe,EAAE,KAAK,GAAG,CAAC;QAC1B,cAAc,EAAE,SAAS;QACzB,QAAQ,EAAE,CAAC,CAAC,EAAE,wCAAwC;KACzD,CAAC,EACF,CAAC,KAAK,EAAE,SAAS,EAAE,IAAI,CAAC,CAC3B,CAAC;AACN,CAAC"}
|
package/dist/index.cjs.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var e=require("react/jsx-runtime"),t=require("react");class r{constructor(e=35){Object.defineProperty(this,"itemSizeMap",{enumerable:!0,configurable:!0,writable:!0,value:{}}),Object.defineProperty(this,"estimatedItemSize",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"itemCount",{enumerable:!0,configurable:!0,writable:!0,value:0}),Object.defineProperty(this,"prefix",{enumerable:!0,configurable:!0,writable:!0,value:[0]}),Object.defineProperty(this,"dirty",{enumerable:!0,configurable:!0,writable:!0,value:!0}),this.estimatedItemSize=e}setItemCount(e){this.itemCount!==e&&(this.itemCount=e,this.dirty=!0)}recordItemSize(e,t){this.itemSizeMap[e]!==t&&(this.itemSizeMap[e]=t,this.dirty=!0)}invalidateFrom(e){if(void 0===e)return this.itemSizeMap={},void(this.dirty=!0);e<0&&(e=0);for(const t of Object.keys(this.itemSizeMap)){const r=Number(t);r>=e&&delete this.itemSizeMap[r]}this.dirty=!0}rebuildPrefix(){let e=0;this.prefix=[0];for(let t=0;t<this.itemCount;t++)e+=this.itemSizeMap[t]??this.estimatedItemSize,this.prefix[t+1]=e;this.dirty=!1}getItemSize(e){return this.itemSizeMap[e]??this.estimatedItemSize}getItemOffset(e){return this.dirty&&this.rebuildPrefix(),this.prefix[e]??0}getTotalSize(){return this.dirty&&this.rebuildPrefix(),this.prefix[this.itemCount]||0}binarySearch(e){this.dirty&&this.rebuildPrefix();let t=0,r=this.itemCount-1;for(;t<=r;){const n=t+r>>1,i=this.prefix[n];if(i===e)return n;i<e?t=n+1:r=n-1}return Math.max(0,t-1)}getVisibleRange(e,t,r,n=5){this.setItemCount(r);const i=this.binarySearch(e),s=this.binarySearch(e+t);return{startIndex:Math.max(0,i-n),endIndex:Math.min(r-1,s+n),overscanStartIndex:i,overscanEndIndex:s}}getVisibleItems(e,t,r,n){const i=this.getVisibleRange(e,t,r,n),s=[];for(let e=i.startIndex;e<=i.endIndex;e++)s.push({index:e,size:this.getItemSize(e),offset:this.getItemOffset(e)});return s}getScrollOffsetForIndex(e,t,r="start"){const n=this.getItemOffset(e),i=this.getItemSize(e);return"center"===r?Math.max(0,n-(t-i)/2):"end"===r?Math.max(0,n-t+i):Math.max(0,n)}}class n{constructor(){Object.defineProperty(this,"resizeObserver",{enumerable:!0,configurable:!0,writable:!0,value:null}),Object.defineProperty(this,"measurements",{enumerable:!0,configurable:!0,writable:!0,value:new Map}),Object.defineProperty(this,"widthMeasurements",{enumerable:!0,configurable:!0,writable:!0,value:new Map}),Object.defineProperty(this,"observedElements",{enumerable:!0,configurable:!0,writable:!0,value:new WeakMap}),Object.defineProperty(this,"observedAxis",{enumerable:!0,configurable:!0,writable:!0,value:new WeakMap}),Object.defineProperty(this,"pendingUpdates",{enumerable:!0,configurable:!0,writable:!0,value:new Map}),Object.defineProperty(this,"pendingWidthUpdates",{enumerable:!0,configurable:!0,writable:!0,value:new Map}),Object.defineProperty(this,"rafId",{enumerable:!0,configurable:!0,writable:!0,value:null}),Object.defineProperty(this,"onMeasure",{enumerable:!0,configurable:!0,writable:!0,value:null}),Object.defineProperty(this,"onMeasureWidth",{enumerable:!0,configurable:!0,writable:!0,value:null}),Object.defineProperty(this,"handleResize",{enumerable:!0,configurable:!0,writable:!0,value:e=>{for(const t of e){const e=t.target,r=this.observedElements.get(e);if(void 0===r)continue;if("width"===(this.observedAxis.get(e)??"height")){const e=Math.round(t.contentRect.width);this.widthMeasurements.get(r)!==e&&(this.widthMeasurements.set(r,e),this.pendingWidthUpdates.set(r,e));continue}const n=Math.round(t.contentRect.height);this.measurements.get(r)!==n&&(this.measurements.set(r,n),this.pendingUpdates.set(r,n))}this.flushPendingUpdates()}}),"undefined"!=typeof window&&"ResizeObserver"in window&&(this.resizeObserver=new ResizeObserver(this.handleResize))}startMeasuring(e,t,r){this.onMeasure=t,this.onMeasureWidth=r??null;e.querySelectorAll("[data-virtualize-index]").forEach(e=>{const t=e.dataset.virtualizeIndex;if(void 0===t)return;const r=Number(t);this.observeItem(r,e)})}observeItem(e,t,r="height"){t.dataset.virtualizeIndex=String(e),this.observedElements.set(t,e),this.observedAxis.set(t,r),this.resizeObserver?.observe(t),this.syncMeasure(e,t,r)}unobserveItem(e){this.resizeObserver?.unobserve(e),this.observedElements.delete(e),this.observedAxis.delete(e)}flushPendingUpdates(){null===this.rafId&&(this.rafId=requestAnimationFrame(()=>{this.pendingUpdates.forEach((e,t)=>{this.onMeasure?.(t,e)}),this.pendingUpdates.clear(),this.pendingWidthUpdates.forEach((e,t)=>{this.onMeasureWidth?.(t,e)}),this.pendingWidthUpdates.clear(),this.rafId=null}))}syncMeasure(e,t,r="height"){const n=t.getBoundingClientRect(),i="width"===r?n.width:n.height;if(i<=0)return;const s=Math.round(i);if("width"===r){if(this.widthMeasurements.get(e)===s)return;return this.widthMeasurements.set(e,s),void this.onMeasureWidth?.(e,s)}this.measurements.get(e)!==s&&(this.measurements.set(e,s),this.onMeasure?.(e,s))}stopMeasuring(){this.resizeObserver?.disconnect(),this.pendingUpdates.clear(),this.pendingWidthUpdates.clear(),null!==this.rafId&&cancelAnimationFrame(this.rafId)}getMeasurement(e){return this.measurements.get(e)}getWidthMeasurement(e){return this.widthMeasurements.get(e)}getAllMeasurements(){return new Map(this.measurements)}getAllWidthMeasurements(){return new Map(this.widthMeasurements)}clearPending(){this.pendingUpdates.clear(),this.pendingWidthUpdates.clear()}clearMeasurements(){this.measurements.clear(),this.widthMeasurements.clear()}destroy(){this.stopMeasuring(),this.measurements.clear(),this.pendingUpdates.clear(),this.widthMeasurements.clear(),this.pendingWidthUpdates.clear(),this.observedElements=new WeakMap,this.observedAxis=new WeakMap,this.onMeasure=null,this.onMeasureWidth=null}}const i=()=>{};function s(e){const{items:s,getItemKey:o,containerHeight:a,containerWidth:l,overscan:u=5,estimatedItemSize:c=35,axis:h="vertical",onScroll:d=i,onScrollEnd:f=i,stickyIndices:m,scrollEndDelay:g=150,autoMeasureContainer:p=!0}=e,b="horizontal"===h,v=t.useRef(m??[]),y=m?m.join(","):"";t.useEffect(()=>{v.current=m??[]},[y]);const x=t.useRef(null);null===x.current&&(x.current=new r(c));const w=t.useRef(null);null===w.current&&(w.current=new n);const M=t.useRef(null),S=t.useRef(null),[I,z]=t.useState({height:0,width:0});t.useEffect(()=>{if(!p)return;const e=M.current;if(!e||"undefined"==typeof ResizeObserver)return;const t=new ResizeObserver(e=>{const t=e[0];if(!t)return;const{height:r,width:n}=t.contentRect;z(e=>e.height===r&&e.width===n?e:{height:r,width:n})});return t.observe(e),()=>{t.disconnect()}},[p]);const R=a>0?a:I.height,O=l&&l>0?l:I.width,[E,k]=t.useState(0),[C,j]=t.useState(!1),[P,W]=t.useState("forward"),L=t.useRef(null),N=t.useRef(0),[T,A]=t.useState(0),[U,V]=t.useState([]);t.useEffect(()=>{const e=x.current;if(!R||0===s.length)return void V(e=>0===e.length?e:[]);const t=e.getVisibleItems(E,R,s.length,u),r=v.current,n=t.map(e=>({index:e.index,offset:e.offset,size:e.size,isSticky:r.includes(e.index)}));V(e=>{if(e.length===n.length){let t=!1;for(let r=0;r<e.length;r++){const i=e[r],s=n[r];if(i.index!==s.index||i.offset!==s.offset||i.size!==s.size||i.isSticky!==s.isSticky){t=!0;break}}if(!t)return e}return n})},[E,R,s.length,u,y,T]);const F=t.useCallback(e=>{const t=e.currentTarget,r=b?t.scrollLeft:t.scrollTop;if(r===N.current)return;const n=r>N.current?"forward":"reverse";N.current=r,W(n),k(r),j(!0),d(r,n),L.current&&clearTimeout(L.current),L.current=setTimeout(()=>{j(!1),f()},g)},[b,d,f,g]);t.useEffect(()=>{const e=M.current;if(e)return e.addEventListener("scroll",F,{passive:!0}),()=>{e.removeEventListener("scroll",F)}},[F]);const $=t.useCallback((e,t)=>{x.current.recordItemSize(e,t),A(e=>e+1)},[]);t.useEffect(()=>{const e=M.current,t=w.current;return e&&t.startMeasuring(e,$),()=>{t.stopMeasuring()}},[$]);const H=t.useCallback((e,t="start")=>{if(!R)return;const r=x.current.getScrollOffsetForIndex(e,R,t),n=M.current;n&&(b?n.scrollLeft=r:n.scrollTop=r)},[R,b]),q=t.useCallback(e=>{const t=M.current;t&&(b?t.scrollLeft=e:t.scrollTop=e),N.current=e,k(e)},[b]),K=t.useCallback(e=>{N.current=e,k(e)},[]),D=t.useCallback((e,t)=>{const r=x.current.getItemOffset(e),n=v.current.includes(e),i={position:n?"sticky":"absolute",zIndex:n?10:0};return b?{...i,top:0,left:n?0:r,height:O||"100%",width:t}:{...i,top:n?0:r,left:0,width:"100%",height:t}},[b,O]),B=t.useCallback(e=>{if(o){const t=s[e];if(void 0!==t)return o(e,t)}return e},[o,s]),G=t.useCallback(e=>{x.current.invalidateFrom(e),A(e=>e+1)},[]);t.useEffect(()=>()=>{L.current&&clearTimeout(L.current),w.current?.destroy()},[]);const J=t.useMemo(()=>x.current.getTotalSize(),[s.length,T,R]);return{virtualItems:U,isScrolling:C,scrollOffset:E,scrollDirection:P,totalSize:J,scrollToItem:H,scrollToOffset:q,setScrollOffset:K,containerRef:M,innerRef:S,getItemStyle:D,recalculate:G,getItemKeyForIndex:B}}const o=t.forwardRef(({items:r,renderItem:n,itemWrapper:i,itemKey:o,height:a=400,width:l=500,itemSize:u,overscan:c=5,scrollDirection:h="forward",onScroll:d,className:f="",itemClassName:m="",style:g={},estimatedItemSize:p=35,getItemSize:b,stickyIndices:v=[],onScrollEnd:y,innerRef:x,scrollOffsetRef:w},M)=>{const{virtualItems:S,isScrolling:I,scrollOffset:z,totalSize:R,containerRef:O,innerRef:E,getItemStyle:k}=s({items:r,getItemKey:o,containerHeight:"number"==typeof a?a:400,containerWidth:"number"==typeof l?l:500,overscan:c,estimatedItemSize:p,onScroll:d,onScrollEnd:y,stickyIndices:v}),C=t.useRef(null),j=t.useRef(null);t.useImperativeHandle(M,()=>C.current),t.useImperativeHandle(x,()=>j.current),t.useEffect(()=>{w&&(w.current=z)},[z,w]);const P={height:a,width:l,overflow:"auto",position:"relative",...g},W={position:"relative",height:R,width:"100%"};return e.jsx("div",{ref:e=>{C.current=e,O.current=e},className:`virtualize-container ${f}`,style:P,onScroll:e=>{const t=e.target,r=n?.__scrollHandler;r&&r(e),d&&d(t.scrollTop,"auto")},children:e.jsx("div",{ref:e=>{j.current=e,E.current=e},style:W,className:"virtualize-inner",children:S.map(s=>{const a=r[s.index],l=o?o(s.index,a):s.index,u=k(s.index,s.size),c={item:a,index:s.index,style:u,isScrolling:I},h=n(c);return i?e.jsx(t.Fragment,{children:i({item:a,index:s.index,style:u,children:h})},l):e.jsx("div",{"data-virtualize-index":s.index,className:m,style:{...u,boxSizing:"border-box"},children:h},l)})})})});o.displayName="VirtualList";const a=t.forwardRef(({items:r,renderItem:n,itemKey:i,height:s=600,width:o="100%",columnCount:a=3,rowHeight:l=200,columnWidth:u,layout:c="grid",overscan:h=5,gap:d=16,onScroll:f,onVisibleRangeChange:m,innerClassName:g,innerStyle:p,containerClassName:b,containerStyle:v},y)=>{const x=t.useRef(null);t.useImperativeHandle(y,()=>x.current);const[w,M]=t.useState(0),[S,I]=t.useState(!1),[z,R]=t.useState(0),O=t.useRef(null);t.useEffect(()=>{if(!x.current)return;const e=x.current,t=new ResizeObserver(e=>{for(const t of e){const e=t.contentRect.width;e>0&&R(e)}});return t.observe(e),()=>t.disconnect()},[]),t.useEffect(()=>()=>{O.current&&clearTimeout(O.current)},[]);const E=z>0&&r.length>0,k=t.useMemo(()=>{if("auto"===a){const e=200;return Math.max(1,Math.floor(z/(e+d)))}return Math.max(1,Number(a))},[a,z,d]),C=t.useMemo(()=>{if("number"==typeof u)return u;const e=d*Math.max(0,k-1);return Math.max(0,(z-e)/k)},[z,k,d,u]),j=t.useMemo(()=>{if(!E)return[];const e=[];if("masonry"===c){const t=Array(k).fill(0);for(let n=0;n<r.length;n++){const r="function"==typeof l?l(n):Number(l),i=t.indexOf(Math.min(...t)),s=i*(C+d),o=t[i];e.push({x:s,y:o,width:C,height:r}),t[i]+=r+d}}else for(let t=0;t<r.length;t++){const r=Math.floor(t/k),n=t%k,i="function"==typeof l?l(t):Number(l);e.push({x:n*(C+d),y:r*(i+d),width:C,height:i})}return e},[r,k,C,d,c,l,E]),P=t.useMemo(()=>{if(!j.length||!E)return{start:0,end:0};const e="string"==typeof s?parseInt(s):Number(s);let t=0;for(let e=0;e<j.length;e++)if(j[e].y+j[e].height>=w){t=e;break}let n=j.length-1;for(let t=j.length-1;t>=0;t--)if(j[t].y<=w+e){n=t;break}return{start:Math.max(0,t-h),end:Math.min(r.length-1,n+h)}},[j,w,s,h,r.length,E]),W=t.useMemo(()=>{if(!j.length)return 0;return Math.max(...j.map(e=>e.y+e.height))||0},[j]),L=t.useCallback(e=>{const t=e.currentTarget,r=t.scrollTop,n=t.scrollLeft;M(r),I(!0),f?.(r,n),O.current&&clearTimeout(O.current),O.current=setTimeout(()=>{I(!1)},120)},[f]);t.useEffect(()=>{m?.(P.start,P.end)},[P,m]);const N={height:"string"==typeof s?s:`${s}px`,width:"string"==typeof o?o:`${o}px`,overflowY:"auto",overflowX:"hidden",position:"relative",...v},T={position:"relative",height:W||1,width:"100%",...p};if(!E)return e.jsx("div",{ref:x,className:b,style:N,onScroll:L,children:e.jsx("div",{className:g,style:T})});const A=[];for(let e=P.start;e<=P.end;e++)e>=0&&e<r.length&&A.push({index:e,key:i?.(e,r[e])??e});return e.jsx("div",{ref:x,className:b,style:N,onScroll:L,children:e.jsx("div",{className:g,style:T,children:A.map(t=>{const i=r[t.index],s=j[t.index];if(!i||!s)return null;const o={position:"absolute",top:`${s.y}px`,left:`${s.x}px`,width:`${s.width}px`,height:`${s.height}px`,boxSizing:"border-box"};return e.jsx("div",{style:o,children:n({item:i,index:t.index,isScrolling:S})},t.key)})})})});function l(e,t){return t?e:e.toLowerCase()}a.displayName="VirtualGrid";const u=new Map;exports.MeasurementSystem=n,exports.VirtualGrid=a,exports.VirtualList=o,exports.VirtualizationEngine=r,exports.useInfiniteScroll=function({onLoadMore:e,threshold:r=500,isLoading:n=!1,enabled:i=!0}){const s=t.useRef(null),[o,a]=t.useState(!1),l=t.useRef(!1),u=t.useRef(e);t.useEffect(()=>{u.current=e},[e]);const c=t.useCallback(()=>{if(!i)return;const e=s.current;if(!e)return;const{scrollTop:t,scrollHeight:o,clientHeight:c}=e,h=o-t-c<=r;a(h),!h||l.current||n||(l.current=!0,Promise.resolve(u.current()).finally(()=>{l.current=!1}))},[r,i,n]);return t.useEffect(()=>{if(!i)return;const e=s.current;if(!e)return;const t=()=>{c()};return e.addEventListener("scroll",t,{passive:!0}),c(),()=>{e.removeEventListener("scroll",t)}},[i,c]),{containerRef:s,isAtBottom:o,isLoading:n,checkIfAtBottom:c}},exports.useLazyLoad=function({threshold:e=.1,onVisible:r,root:n=null,rootMargin:i="0px",enabled:s=!0,once:o=!0}={}){const[a,l]=t.useState(!1),[u,c]=t.useState(null),h=t.useRef(null),d=t.useRef(r);return t.useEffect(()=>{d.current=r},[r]),t.useEffect(()=>{if(!s)return;const t=h.current;if(!t)return;if("undefined"==typeof window||!("IntersectionObserver"in window))return l(!0),void d.current?.();const r=new IntersectionObserver(([e])=>{c(e),e.isIntersecting?(l(!0),d.current?.(),o&&r.unobserve(e.target)):o||l(!1)},{threshold:e,root:n,rootMargin:i});return r.observe(t),()=>{r.disconnect()}},[e,n,i,s,o]),{ref:h,isVisible:a,entry:u}},exports.useScrollRestoration=function(e,r,{persist:n=!0,storageKey:i="virtualize-scroll-positions",storage:s,autoSave:o=!1,maxEntries:a=100,useRAF:l=!0,enabled:c=!0,onError:h}={}){const d=t.useRef(s??("undefined"!=typeof window&&"undefined"!=typeof document?window.localStorage:null));t.useEffect(()=>{if(c&&n&&d.current&&!(u.size>0))try{const e=d.current.getItem(i);if(!e)return;JSON.parse(e).forEach(e=>{u.set(e.key,e)})}catch(e){h?.(e)}},[c,n,i,h]);const f=t.useCallback(()=>{if(n&&d.current)try{const e=Array.from(u.values()).sort((e,t)=>t.timestamp-e.timestamp).slice(0,a);d.current.setItem(i,JSON.stringify(e))}catch(e){h?.(e)}},[n,i,a,h]),m=t.useCallback(()=>{if(!c)return;const t=r.current;if(!t)return;const n={key:e,top:t.scrollTop,left:t.scrollLeft,timestamp:Date.now()};u.set(e,n),f()},[e,r,c,f]),g=t.useCallback(()=>{if(!c)return;if(!r.current)return;const t=u.get(e);if(!t)return;const n=()=>{r.current&&(r.current.scrollTop=t.top,r.current.scrollLeft=t.left)};l?requestAnimationFrame(n):n()},[e,r,c,l]);return t.useEffect(()=>{c&&g()},[c,g]),t.useEffect(()=>{if(c)return()=>{m()}},[c,m]),t.useEffect(()=>{if(!c||!o||!r.current)return;const e=r.current,t=()=>{m()};return e.addEventListener("scroll",t,{passive:!0}),()=>{e.removeEventListener("scroll",t)}},[c,o,m,r]),{savePosition:m,restorePosition:g}},exports.useVirtualList=s,exports.useVirtualizedSearch=function({items:r,searchValue:n,searchFields:i,caseSensitive:s=!1,deferSearch:o=!0,matcher:a}){const u=t.useMemo(()=>l(n.trim(),s),[n,s]),c=t.useDeferredValue(u),h=o?c:u,d=o&&c!==u,f=t.useCallback(e=>!h||(a?a(e,h):function(e,t,r,n){return r.some(r=>{const i=e[r];return null!=i&&l(String(i).trim(),n).includes(t)})}(e,h,i,s)),[h,a,i,s]),m=t.useMemo(()=>h?r.filter(f):[...r],[r,h,f]),g=t.useCallback(e=>f(e),[f]),p=t.useMemo(()=>{if(!u)return null;const e=u.replace(/[.*+?^${}()|[\]\\]/g,"\\$&");return new RegExp(`(${e})`,s?"g":"gi")},[u,s]),b=t.useCallback(r=>{if(!r||!p)return r;return r.split(p).map((r,n)=>n%2==1?e.jsx("mark",{children:r},n):e.jsx(t.Fragment,{children:r},n))},[p]);return{filteredItems:m,resultCount:m.length,query:h,hasMatch:g,isSearching:d,highlightMatch:b}};
|
|
1
|
+
"use strict";var e=require("react/jsx-runtime"),t=require("react");function r(e){return e&-e}function i(e){let t=1;for(;t<e;)t<<=1;return t}class s{constructor(e=0){Object.defineProperty(this,"capacity",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"tree",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"raw",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"n",{enumerable:!0,configurable:!0,writable:!0,value:0}),this.capacity=i(Math.max(1,e)),this.tree=new Array(this.capacity+1).fill(0),this.raw=new Array(this.capacity).fill(0),e>0&&this.resize(e,0)}size(){return this.n}rebuild(){this.tree=new Array(this.capacity+1).fill(0);for(let e=1;e<=this.capacity;e++){this.tree[e]+=this.raw[e-1]??0;const t=e+r(e);t<=this.capacity&&(this.tree[t]+=this.tree[e])}}resize(e,t){if(e>this.capacity){const r=i(e),s=this.raw;this.raw=new Array(r).fill(0);for(let e=0;e<s.length;e++)this.raw[e]=s[e];for(let r=this.n;r<e;r++)this.raw[r]=t;return this.capacity=r,this.rebuild(),void(this.n=e)}if(e>this.n){for(let r=this.n;r<e;r++)this.update(r,t);this.n=e}else if(e<this.n){for(let t=e;t<this.n;t++)this.update(t,0);this.n=e}}update(e,t){if(e<0||e>=this.capacity)return;const i=t-(this.raw[e]??0);if(0!==i){this.raw[e]=t;for(let t=e+1;t<=this.capacity;t+=r(t))this.tree[t]+=i}}getValue(e){return this.raw[e]??0}prefixSum(e){let t=0;for(let i=Math.min(e,this.n);i>0;i-=r(i))t+=this.tree[i];return t}total(){return this.prefixSum(this.n)}findIndexAtOffset(e){if(0===this.n)return 0;let t=0,r=e;for(let e=this.capacity;e>0;e>>=1){const i=t+e;i<=this.capacity&&this.tree[i]<=r&&(t=i,r-=this.tree[i])}return Math.min(t,this.n-1)}resetAll(e){for(let e=0;e<this.n;e++)this.raw[e]=0;this.rebuild();for(let t=0;t<this.n;t++)this.update(t,e)}}class n{constructor(e=35){Object.defineProperty(this,"tree",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"estimatedItemSize",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"itemCount",{enumerable:!0,configurable:!0,writable:!0,value:0}),this.estimatedItemSize=e,this.tree=new s(0)}setItemCount(e){this.itemCount!==e&&(this.tree.resize(e,this.estimatedItemSize),this.itemCount=e)}recordItemSize(e,t){e<0||e>=this.itemCount||this.tree.update(e,t)}invalidateFrom(e){if(void 0===e)return void this.tree.resetAll(this.estimatedItemSize);for(let t=Math.max(0,e);t<this.itemCount;t++)this.tree.update(t,this.estimatedItemSize)}getItemSize(e){return e<0||e>=this.itemCount?this.estimatedItemSize:this.tree.getValue(e)}getItemOffset(e){return this.tree.prefixSum(Math.max(0,e))}getTotalSize(){return this.tree.total()}getVisibleRange(e,t,r,i=5){if(this.setItemCount(r),0===r)return{startIndex:0,endIndex:-1,overscanStartIndex:0,overscanEndIndex:-1};const s=this.tree.findIndexAtOffset(e),n=this.tree.findIndexAtOffset(e+t);return{startIndex:Math.max(0,s-i),endIndex:Math.min(r-1,n+i),overscanStartIndex:s,overscanEndIndex:n}}getVisibleItems(e,t,r,i){const s=this.getVisibleRange(e,t,r,i),n=[];for(let e=s.startIndex;e<=s.endIndex;e++)n.push({index:e,size:this.getItemSize(e),offset:this.getItemOffset(e)});return n}getScrollOffsetForIndex(e,t,r="start"){const i=this.getItemOffset(e),s=this.getItemSize(e);return"center"===r?Math.max(0,i-(t-s)/2):"end"===r?Math.max(0,i-t+s):Math.max(0,i)}}class a{constructor(){Object.defineProperty(this,"resizeObserver",{enumerable:!0,configurable:!0,writable:!0,value:null}),Object.defineProperty(this,"measurements",{enumerable:!0,configurable:!0,writable:!0,value:new Map}),Object.defineProperty(this,"widthMeasurements",{enumerable:!0,configurable:!0,writable:!0,value:new Map}),Object.defineProperty(this,"observedElements",{enumerable:!0,configurable:!0,writable:!0,value:new WeakMap}),Object.defineProperty(this,"observedAxis",{enumerable:!0,configurable:!0,writable:!0,value:new WeakMap}),Object.defineProperty(this,"pendingUpdates",{enumerable:!0,configurable:!0,writable:!0,value:new Map}),Object.defineProperty(this,"pendingWidthUpdates",{enumerable:!0,configurable:!0,writable:!0,value:new Map}),Object.defineProperty(this,"rafId",{enumerable:!0,configurable:!0,writable:!0,value:null}),Object.defineProperty(this,"onMeasure",{enumerable:!0,configurable:!0,writable:!0,value:null}),Object.defineProperty(this,"onMeasureWidth",{enumerable:!0,configurable:!0,writable:!0,value:null}),Object.defineProperty(this,"handleResize",{enumerable:!0,configurable:!0,writable:!0,value:e=>{for(const t of e){const e=t.target,r=this.observedElements.get(e);if(void 0===r)continue;if("width"===(this.observedAxis.get(e)??"height")){const e=Math.round(t.contentRect.width);this.widthMeasurements.get(r)!==e&&(this.widthMeasurements.set(r,e),this.pendingWidthUpdates.set(r,e));continue}const i=Math.round(t.contentRect.height);this.measurements.get(r)!==i&&(this.measurements.set(r,i),this.pendingUpdates.set(r,i))}this.flushPendingUpdates()}}),"undefined"!=typeof window&&"ResizeObserver"in window&&(this.resizeObserver=new ResizeObserver(this.handleResize))}startMeasuring(e,t,r){this.onMeasure=t,this.onMeasureWidth=r??null;e.querySelectorAll("[data-virtualize-index]").forEach(e=>{const t=e.dataset.virtualizeIndex;if(void 0===t)return;const r=Number(t);this.observeItem(r,e)})}observeItem(e,t,r="height"){t.dataset.virtualizeIndex=String(e),this.observedElements.set(t,e),this.observedAxis.set(t,r),this.resizeObserver?.observe(t),this.syncMeasure(e,t,r)}unobserveItem(e){this.resizeObserver?.unobserve(e),this.observedElements.delete(e),this.observedAxis.delete(e)}flushPendingUpdates(){null===this.rafId&&(this.rafId=requestAnimationFrame(()=>{this.pendingUpdates.forEach((e,t)=>{this.onMeasure?.(t,e)}),this.pendingUpdates.clear(),this.pendingWidthUpdates.forEach((e,t)=>{this.onMeasureWidth?.(t,e)}),this.pendingWidthUpdates.clear(),this.rafId=null}))}syncMeasure(e,t,r="height"){const i=t.getBoundingClientRect(),s="width"===r?i.width:i.height;if(s<=0)return;const n=Math.round(s);if("width"===r){if(this.widthMeasurements.get(e)===n)return;return this.widthMeasurements.set(e,n),void this.onMeasureWidth?.(e,n)}this.measurements.get(e)!==n&&(this.measurements.set(e,n),this.onMeasure?.(e,n))}stopMeasuring(){this.resizeObserver?.disconnect(),this.pendingUpdates.clear(),this.pendingWidthUpdates.clear(),null!==this.rafId&&cancelAnimationFrame(this.rafId)}getMeasurement(e){return this.measurements.get(e)}getWidthMeasurement(e){return this.widthMeasurements.get(e)}getAllMeasurements(){return new Map(this.measurements)}getAllWidthMeasurements(){return new Map(this.widthMeasurements)}clearPending(){this.pendingUpdates.clear(),this.pendingWidthUpdates.clear()}clearMeasurements(){this.measurements.clear(),this.widthMeasurements.clear()}destroy(){this.stopMeasuring(),this.measurements.clear(),this.pendingUpdates.clear(),this.widthMeasurements.clear(),this.pendingWidthUpdates.clear(),this.observedElements=new WeakMap,this.observedAxis=new WeakMap,this.onMeasure=null,this.onMeasureWidth=null}}const o=()=>{};function l(e){const{items:r,getItemKey:i,containerHeight:s,containerWidth:l,overscan:u=5,estimatedItemSize:c=35,axis:h="vertical",onScroll:d=o,onScrollEnd:f=o,stickyIndices:m,scrollEndDelay:g=150,autoMeasureContainer:p=!0}=e,b="horizontal"===h,w=t.useRef(m??[]),v=m?m.join(","):"";t.useEffect(()=>{w.current=m??[]},[v]);const y=t.useRef(null);null===y.current&&(y.current=new n(c));const x=t.useRef(null);null===x.current&&(x.current=new a);const M=t.useRef(null),S=t.useRef(null),[I,z]=t.useState({height:0,width:0});t.useEffect(()=>{if(!p)return;const e=M.current;if(!e||"undefined"==typeof ResizeObserver)return;const t=new ResizeObserver(e=>{const t=e[0];if(!t)return;const{height:r,width:i}=t.contentRect;z(e=>e.height===r&&e.width===i?e:{height:r,width:i})});return t.observe(e),()=>{t.disconnect()}},[p]);const O=s>0?s:I.height,R=l&&l>0?l:I.width,[E,j]=t.useState(0),[C,k]=t.useState(!1),[P,W]=t.useState("forward"),A=t.useRef(null),T=t.useRef(0),[N,H]=t.useState(0),[L,V]=t.useState([]);t.useEffect(()=>{const e=y.current;if(!O||0===r.length)return void V(e=>0===e.length?e:[]);const t=e.getVisibleItems(E,O,r.length,u),i=w.current,s=t.map(e=>({index:e.index,offset:e.offset,size:e.size,isSticky:i.includes(e.index)}));V(e=>{if(e.length===s.length){let t=!1;for(let r=0;r<e.length;r++){const i=e[r],n=s[r];if(i.index!==n.index||i.offset!==n.offset||i.size!==n.size||i.isSticky!==n.isSticky){t=!0;break}}if(!t)return e}return s})},[E,O,r.length,u,v,N]);const U=t.useCallback(e=>{const t=e.currentTarget,r=b?t.scrollLeft:t.scrollTop;if(r===T.current)return;const i=r>T.current?"forward":"reverse";T.current=r,W(i),j(r),k(!0),d(r,i),A.current&&clearTimeout(A.current),A.current=setTimeout(()=>{k(!1),f()},g)},[b,d,f,g]);t.useEffect(()=>{const e=M.current;if(e)return e.addEventListener("scroll",U,{passive:!0}),()=>{e.removeEventListener("scroll",U)}},[U]);const F=t.useCallback((e,t)=>{y.current.recordItemSize(e,t),H(e=>e+1)},[]);t.useEffect(()=>{const e=M.current,t=x.current;return e&&t.startMeasuring(e,F),()=>{t.stopMeasuring()}},[F]);const B=t.useCallback((e,t="start")=>{if(!O)return;const r=y.current.getScrollOffsetForIndex(e,O,t),i=M.current;i&&(b?i.scrollLeft=r:i.scrollTop=r)},[O,b]),$=t.useCallback(e=>{const t=M.current;t&&(b?t.scrollLeft=e:t.scrollTop=e),T.current=e,j(e)},[b]),q=t.useCallback(e=>{T.current=e,j(e)},[]),K=t.useCallback((e,t)=>{const r=y.current.getItemOffset(e),i=w.current.includes(e),s={position:i?"sticky":"absolute",zIndex:i?10:0};return b?{...s,top:0,left:i?0:r,height:R||"100%",width:t}:{...s,top:i?0:r,left:0,width:"100%",height:t}},[b,R]),D=t.useCallback(e=>{if(i){const t=r[e];if(void 0!==t)return i(e,t)}return e},[i,r]),G=t.useCallback(e=>{y.current.invalidateFrom(e),H(e=>e+1)},[]);t.useEffect(()=>()=>{A.current&&clearTimeout(A.current),x.current?.destroy()},[]);const J=t.useMemo(()=>y.current.getTotalSize(),[r.length,N,O]);return{virtualItems:L,isScrolling:C,scrollOffset:E,scrollDirection:P,totalSize:J,scrollToItem:B,scrollToOffset:$,setScrollOffset:q,containerRef:M,innerRef:S,getItemStyle:K,recalculate:G,getItemKeyForIndex:D}}const u=t.forwardRef(({items:r,renderItem:i,itemWrapper:s,itemKey:n,height:a=400,width:o=500,itemSize:u,overscan:c=5,scrollDirection:h="forward",onScroll:d,className:f="",itemClassName:m="",style:g={},innerClassName:p="",innerStyle:b={},itemStyle:w={},estimatedItemSize:v=35,getItemSize:y,stickyIndices:x=[],onScrollEnd:M,innerRef:S,scrollOffsetRef:I,footer:z},O)=>{const{virtualItems:R,isScrolling:E,scrollOffset:j,totalSize:C,containerRef:k,innerRef:P,getItemStyle:W}=l({items:r,getItemKey:n,containerHeight:"number"==typeof a?a:400,containerWidth:"number"==typeof o?o:500,overscan:c,estimatedItemSize:v,onScroll:d,onScrollEnd:M,stickyIndices:x}),A=t.useRef(null),T=t.useRef(null);t.useImperativeHandle(O,()=>A.current),t.useImperativeHandle(S,()=>T.current),t.useEffect(()=>{I&&(I.current=j)},[j,I]);const N={height:a,width:o,overflow:"auto",position:"relative",...g},H={width:"100%",...b,position:"relative",height:C},L=(...e)=>e.filter(Boolean).join(" ").trim();return e.jsx("div",{ref:e=>{A.current=e,k.current=e},className:L("virtualize-container",f),style:N,onScroll:e=>{const t=e.target,r=i?.__scrollHandler;r&&r(e),d&&d(t.scrollTop,"auto")},children:e.jsxs("div",{ref:e=>{T.current=e,P.current=e},style:H,className:L("virtualize-inner",p),children:[R.map(a=>{const o=r[a.index],l=n?n(a.index,o):a.index,u=W(a.index,a.size),c={item:o,index:a.index,style:u,isScrolling:E},h=i(c);return s?e.jsx(t.Fragment,{children:s({item:o,index:a.index,style:u,children:h})},l):e.jsx("div",{"data-virtualize-index":a.index,className:L("virtualize-item",m),style:{...w,...u,boxSizing:"border-box"},children:h},l)}),z&&e.jsx("div",{style:{position:"absolute",top:C,left:0,width:"100%"},children:z})]})})});u.displayName="VirtualList";class c{constructor(){Object.defineProperty(this,"positions",{enumerable:!0,configurable:!0,writable:!0,value:[]}),Object.defineProperty(this,"colHeights",{enumerable:!0,configurable:!0,writable:!0,value:[]}),Object.defineProperty(this,"rowOffsets",{enumerable:!0,configurable:!0,writable:!0,value:[0]}),Object.defineProperty(this,"currentRowMax",{enumerable:!0,configurable:!0,writable:!0,value:0}),Object.defineProperty(this,"maxBottom",{enumerable:!0,configurable:!0,writable:!0,value:0}),Object.defineProperty(this,"params",{enumerable:!0,configurable:!0,writable:!0,value:null})}sameParams(e){return!!this.params&&(this.params.cols===e.cols&&this.params.colWidth===e.colWidth&&this.params.gap===e.gap&&this.params.layout===e.layout&&this.params.rowHeight===e.rowHeight)}reset(e){this.positions=[],this.colHeights=new Array(e.cols).fill(0),this.rowOffsets=[0],this.currentRowMax=0,this.maxBottom=0,this.params=e}sizeOf(e,t){return"function"==typeof e?e(t):e}appendMasonry(e,t,r){for(let i=e;i<t;i++){const e=this.sizeOf(r.rowHeight,i);let t=0;for(let e=1;e<r.cols;e++)this.colHeights[e]<this.colHeights[t]&&(t=e);const s=t*(r.colWidth+r.gap),n=this.colHeights[t];this.positions.push({x:s,y:n,width:r.colWidth,height:e}),this.colHeights[t]+=e+r.gap,n+e>this.maxBottom&&(this.maxBottom=n+e)}}appendGrid(e,t,r){for(let i=e;i<t;i++){const e=Math.floor(i/r.cols),t=i%r.cols,s=this.sizeOf(r.rowHeight,i);for(;this.rowOffsets.length<=e;){const e=this.rowOffsets.length-1,t=e>=0?r.gap:0;this.rowOffsets.push(this.rowOffsets[e]+this.currentRowMax+t),this.currentRowMax=0}const n=this.rowOffsets[e],a=t*(r.colWidth+r.gap);this.positions.push({x:a,y:n,width:r.colWidth,height:s}),this.currentRowMax=Math.max(this.currentRowMax,s),n+s>this.maxBottom&&(this.maxBottom=n+s)}}sync(e,t){(!this.sameParams(t)||e<this.positions.length)&&this.reset(t);const r=this.positions.length;return r<e&&("masonry"===t.layout?this.appendMasonry(r,e,t):this.appendGrid(r,e,t)),this.positions}getTotalHeight(){return this.maxBottom}}const h=t.forwardRef(({items:r,renderItem:i,itemKey:s,height:n=600,width:a="100%",columnCount:o=3,rowHeight:l=200,columnWidth:u,layout:h="grid",overscan:d=5,gap:f=16,onScroll:m,onVisibleRangeChange:g,innerClassName:p,innerStyle:b,containerClassName:w,containerStyle:v,itemClassName:y,itemStyle:x},M)=>{const S=t.useRef(null);t.useImperativeHandle(M,()=>S.current);const[I,z]=t.useState(0),[O,R]=t.useState(!1),[E,j]=t.useState(0),C=t.useRef(null);t.useEffect(()=>{if(!S.current)return;const e=S.current,t=new ResizeObserver(e=>{for(const t of e){const e=t.contentRect.width;e>0&&j(e)}});return t.observe(e),()=>t.disconnect()},[]),t.useEffect(()=>()=>{C.current&&clearTimeout(C.current)},[]);const k=E>0&&r.length>0,P=t.useMemo(()=>{if("auto"===o){const e=200;return Math.max(1,Math.floor(E/(e+f)))}return Math.max(1,Number(o))},[o,E,f]),W=t.useMemo(()=>{if("number"==typeof u)return u;const e=f*Math.max(0,P-1);return Math.max(0,(E-e)/P)},[E,P,f,u]),A="grid"===h&&"number"==typeof l,T="string"==typeof n?parseInt(n):Number(n),N=l+f,H=t.useMemo(()=>{if(!A||!k)return 0;const e=Math.ceil(r.length/P);return e>0?e*N-f:0},[A,k,r.length,P,N,f]),L=t.useMemo(()=>{if(!A||!k)return{start:0,end:-1};const e=Math.max(0,Math.floor(I/N)),t=Math.max(0,Math.floor((I+T)/N)),i=Math.ceil(d/P);return{start:Math.max(0,(e-i)*P),end:Math.min(r.length-1,(t+i+1)*P-1)}},[A,k,I,T,N,d,P,r.length]),V=t.useCallback(e=>{const t=Math.floor(e/P);return{x:e%P*(W+f),y:t*N,width:W,height:l}},[P,W,f,N,l]),U=t.useRef(null);null===U.current&&(U.current=new c);const F=t.useMemo(()=>A||!k?[]:U.current.sync(r.length,{cols:P,colWidth:W,gap:f,layout:h,rowHeight:l}),[A,k,r.length,P,W,f,h,l]),B=t.useMemo(()=>A||!k?0:U.current.getTotalHeight(),[A,k,F]),$=t.useMemo(()=>{if(A||!F.length)return{start:0,end:-1};const e=I+T,t=F.length,r="masonry"===h?d+P:d;let i=0,s=t-1,n=0;for(;i<=s;){const e=i+s>>1;F[e].y+F[e].height>=I?(n=e,s=e-1):i=e+1}i=0,s=t-1;let a=t-1;for(;i<=s;){const t=i+s>>1;F[t].y<=e?(a=t,i=t+1):s=t-1}return{start:Math.max(0,n-r),end:Math.min(t-1,a+r)}},[A,F,I,T,d,h,P]),q=A?H:B,K=A?L:$,D=t.useCallback(e=>{const t=e.currentTarget;z(t.scrollTop),R(!0),m?.(t.scrollTop,t.scrollLeft),C.current&&clearTimeout(C.current),C.current=setTimeout(()=>R(!1),120)},[m]);t.useEffect(()=>{g?.(K.start,K.end)},[K,g]);const G=(...e)=>e.filter(Boolean).join(" ").trim(),J={height:"string"==typeof n?n:`${n}px`,width:"string"==typeof a?a:`${a}px`,overflowY:"auto",overflowX:"hidden",position:"relative",...v},_={position:"relative",height:q||1,width:"100%",...b};if(!k)return e.jsx("div",{ref:S,className:G("virtualize-grid-container",w),style:J,onScroll:D,children:e.jsx("div",{className:G("virtualize-grid-inner",p),style:_})});const X=[];for(let e=K.start;e<=K.end;e++)e>=0&&e<r.length&&X.push({index:e,key:s?.(e,r[e])??e});return e.jsx("div",{ref:S,className:G("virtualize-grid-container",w),style:J,onScroll:D,children:e.jsx("div",{className:G("virtualize-grid-inner",p),style:_,children:X.map(t=>{const s=r[t.index],n=A?V(t.index):F[t.index];if(!s||!n)return null;const a={...x,position:"absolute",top:`${n.y}px`,left:`${n.x}px`,width:`${n.width}px`,height:`${n.height}px`,boxSizing:"border-box"};return e.jsx("div",{"data-virtualize-index":t.index,className:G("virtualize-grid-item",y),style:a,children:i({item:s,index:t.index,isScrolling:O})},t.key)})})})});function d(e,t){return t?e:e.toLowerCase()}h.displayName="VirtualGrid";const f=new Map;exports.MeasurementSystem=a,exports.VirtualGrid=h,exports.VirtualList=u,exports.VirtualizationEngine=n,exports.useInfiniteScroll=function({onLoadMore:e,rootMargin:r="500px",isLoading:i=!1,enabled:s=!0,root:n}){const a=t.useRef(null),[o,l]=t.useState(!1),u=t.useRef(!1),c=t.useRef(e);return t.useEffect(()=>{c.current=e},[e]),t.useEffect(()=>{if(!s)return;const e=a.current;if(!e)return;if("undefined"==typeof window||!("IntersectionObserver"in window))return;const t=new IntersectionObserver(e=>{const t=e[0];t&&(l(t.isIntersecting),!t.isIntersecting||u.current||i||(u.current=!0,Promise.resolve(c.current()).finally(()=>{u.current=!1})))},{root:n?.current??null,rootMargin:r,threshold:0});return t.observe(e),()=>{t.disconnect()}},[s,r,i,n?.current]),{sentinelRef:a,isAtBottom:o,isLoading:i}},exports.useLazyLoad=function({threshold:e=.1,onVisible:r,root:i=null,rootMargin:s="0px",enabled:n=!0,once:a=!0}={}){const[o,l]=t.useState(!1),[u,c]=t.useState(null),h=t.useRef(null),d=t.useRef(r);return t.useEffect(()=>{d.current=r},[r]),t.useEffect(()=>{if(!n)return;const t=h.current;if(!t)return;if("undefined"==typeof window||!("IntersectionObserver"in window))return l(!0),void d.current?.();const r=new IntersectionObserver(([e])=>{c(e),e.isIntersecting?(l(!0),d.current?.(),a&&r.unobserve(e.target)):a||l(!1)},{threshold:e,root:i,rootMargin:s});return r.observe(t),()=>{r.disconnect()}},[e,i,s,n,a]),{ref:h,isVisible:o,entry:u}},exports.useScrollRestoration=function(e,r,{persist:i=!0,storageKey:s="virtualize-scroll-positions",storage:n,autoSave:a=!1,maxEntries:o=100,useRAF:l=!0,enabled:u=!0,onError:c}={}){const h=t.useRef(n??("undefined"!=typeof window&&"undefined"!=typeof document?window.localStorage:null));t.useEffect(()=>{if(u&&i&&h.current&&!(f.size>0))try{const e=h.current.getItem(s);if(!e)return;JSON.parse(e).forEach(e=>{f.set(e.key,e)})}catch(e){c?.(e)}},[u,i,s,c]);const d=t.useCallback(()=>{if(i&&h.current)try{const e=Array.from(f.values()).sort((e,t)=>t.timestamp-e.timestamp).slice(0,o);h.current.setItem(s,JSON.stringify(e))}catch(e){c?.(e)}},[i,s,o,c]),m=t.useCallback(()=>{if(!u)return;const t=r.current;if(!t)return;const i={key:e,top:t.scrollTop,left:t.scrollLeft,timestamp:Date.now()};f.set(e,i),d()},[e,r,u,d]),g=t.useCallback(()=>{if(!u)return;if(!r.current)return;const t=f.get(e);if(!t)return;const i=()=>{r.current&&(r.current.scrollTop=t.top,r.current.scrollLeft=t.left)};l?requestAnimationFrame(i):i()},[e,r,u,l]);return t.useEffect(()=>{u&&g()},[u,g]),t.useEffect(()=>{if(u)return()=>{m()}},[u,m]),t.useEffect(()=>{if(!u||!a||!r.current)return;const e=r.current,t=()=>{m()};return e.addEventListener("scroll",t,{passive:!0}),()=>{e.removeEventListener("scroll",t)}},[u,a,m,r]),{savePosition:m,restorePosition:g}},exports.useVirtualList=l,exports.useVirtualizedSearch=function({items:r,searchValue:i,searchFields:s,caseSensitive:n=!1,deferSearch:a=!0,matcher:o}){const l=t.useMemo(()=>d(i.trim(),n),[i,n]),u=t.useDeferredValue(l),c=a?u:l,h=a&&u!==l,f=t.useCallback(e=>!c||(o?o(e,c):function(e,t,r,i){return r.some(r=>{const s=e[r];return null!=s&&d(String(s).trim(),i).includes(t)})}(e,c,s,n)),[c,o,s,n]),m=t.useMemo(()=>c?r.filter(f):[...r],[r,c,f]),g=t.useCallback(e=>f(e),[f]),p=t.useMemo(()=>{if(!l)return null;const e=l.replace(/[.*+?^${}()|[\]\\]/g,"\\$&");return new RegExp(`(${e})`,n?"g":"gi")},[l,n]),b=t.useCallback(r=>{if(!r||!p)return r;return r.split(p).map((r,i)=>i%2==1?e.jsx("mark",{children:r},i):e.jsx(t.Fragment,{children:r},i))},[p]);return{filteredItems:m,resultCount:m.length,query:c,hasMatch:g,isSearching:h,highlightMatch:b}};
|
|
2
2
|
//# sourceMappingURL=index.cjs.js.map
|
package/dist/index.cjs.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs.js","sources":["../src/core/VirtualizationEngine.ts","../src/core/MeasurementSystem.ts","../src/hooks/useVirtualList.ts","../src/components/VirtualList.tsx","../src/components/VirtualGrid.tsx","../src/hooks/useVirtualizedSearch.tsx","../src/hooks/useScrollRestoration.ts","../src/hooks/useInfiniteScroll.ts","../src/hooks/useLazyLoad.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null],"names":["VirtualizationEngine","constructor","estimatedItemSize","Object","defineProperty","this","value","setItemCount","count","itemCount","dirty","recordItemSize","index","size","itemSizeMap","invalidateFrom","fromIndex","undefined","key","keys","Number","rebuildPrefix","sum","prefix","i","getItemSize","getItemOffset","getTotalSize","binarySearch","offset","low","high","mid","Math","max","getVisibleRange","scrollOffset","containerSize","overscan","start","end","startIndex","endIndex","min","overscanStartIndex","overscanEndIndex","getVisibleItems","range","items","push","getScrollOffsetForIndex","alignment","MeasurementSystem","Map","WeakMap","entries","entry","element","target","observedElements","get","observedAxis","widthSize","round","contentRect","width","widthMeasurements","set","pendingWidthUpdates","height","measurements","pendingUpdates","flushPendingUpdates","window","resizeObserver","ResizeObserver","handleResize","startMeasuring","container","onMeasure","onMeasureWidth","querySelectorAll","forEach","item","indexAttr","dataset","virtualizeIndex","observeItem","axis","String","observe","syncMeasure","unobserveItem","unobserve","delete","rafId","requestAnimationFrame","clear","rect","getBoundingClientRect","rounded","stopMeasuring","disconnect","cancelAnimationFrame","getMeasurement","getWidthMeasurement","getAllMeasurements","getAllWidthMeasurements","clearPending","clearMeasurements","destroy","noop","useVirtualList","params","getItemKey","containerHeight","containerWidth","onScroll","onScrollEnd","stickyIndices","scrollEndDelay","autoMeasureContainer","isHorizontal","stickyIndicesRef","useRef","stickyKey","join","useEffect","current","engineRef","measurementRef","containerRef","innerRef","measuredViewport","setMeasuredViewport","useState","node","observer","prev","resolvedViewportSize","resolvedCrossAxisSize","setScrollOffsetState","isScrolling","setIsScrolling","scrollDirection","setScrollDirection","scrollTimeoutRef","lastScrollOffsetRef","measurementVersion","setMeasurementVersion","virtualItems","setVirtualItems","engine","length","visibleItems","sticky","nextVirtualItems","map","isSticky","includes","changed","prevItem","nextItem","handleScrollEvent","useCallback","e","currentTarget","newScrollOffset","scrollLeft","scrollTop","direction","clearTimeout","setTimeout","addEventListener","passive","removeEventListener","handleItemMeasure","v","measurement","scrollToItem","scrollToOffset","setScrollOffset","getItemStyle","isStickyItem","base","position","zIndex","top","left","getItemKeyForIndex","recalculate","totalSize","useMemo","VirtualList","forwardRef","renderItem","itemWrapper","itemKey","itemSize","className","itemClassName","style","scrollOffsetRef","internalContainerRef","internalInnerRef","mergedContainerRef","mergedInnerRef","useImperativeHandle","containerStyle","overflow","innerStyle","_jsx","ref","el","handler","__scrollHandler","children","virtualItem","virtualStyle","renderProps","content","React","Fragment","boxSizing","displayName","VirtualGrid","columnCount","rowHeight","columnWidth","layout","gap","onVisibleRangeChange","innerClassName","containerClassName","setScrollTop","setContainerWidth","scrollTimeout","isReady","cols","minColWidth","floor","colWidth","totalGapWidth","positions","pos","colHeights","Array","fill","itemHeight","minColIndex","indexOf","xPos","yPos","x","y","row","col","visibleRange","heightNum","parseInt","totalHeight","p","handleScroll","containerStyleComputed","overflowY","overflowX","innerStyleComputed","vItem","itemStyle","normalize","caseSensitive","toLowerCase","positionCache","onLoadMore","threshold","isLoading","enabled","isAtBottom","setIsAtBottom","loadingRef","onLoadMoreRef","checkIfAtBottom","scrollHeight","clientHeight","reachedBottom","Promise","resolve","finally","onVisible","root","rootMargin","once","isVisible","setIsVisible","setEntry","elementRef","callbackRef","IntersectionObserver","observerEntry","isIntersecting","persist","storageKey","storage","autoSave","maxEntries","useRAF","onError","storageRef","document","localStorage","raw","getItem","JSON","parse","error","persistCache","from","values","sort","a","b","timestamp","slice","setItem","stringify","savePosition","Date","now","restorePosition","restore","searchValue","searchFields","deferSearch","matcher","normalizedQuery","trim","deferredQuery","useDeferredValue","activeQuery","isSearching","itemMatcher","query","some","field","defaultMatcher","filteredItems","filter","hasMatch","highlightRegex","escaped","replace","RegExp","highlightMatch","text","split","part","resultCount"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.cjs.js","sources":["../src/core/FenwickTree.ts","../src/core/VirtualizationEngine.ts","../src/core/MeasurementSystem.ts","../src/hooks/useVirtualList.ts","../src/components/VirtualList.tsx","../src/core/GridLayoutEngine.ts","../src/components/VirtualGrid.tsx","../src/hooks/useVirtualizedSearch.tsx","../src/hooks/useScrollRestoration.ts","../src/hooks/useInfiniteScroll.ts","../src/hooks/useLazyLoad.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null,null],"names":["lowbit","i","nextPow2","x","p","FenwickTree","constructor","initialCount","Object","defineProperty","this","capacity","Math","max","tree","Array","fill","raw","resize","size","n","rebuild","parent","count","defaultValue","newCapacity","oldRaw","length","update","index","value","delta","getValue","prefixSum","sum","min","total","findIndexAtOffset","target","pos","remaining","pw","next","resetAll","VirtualizationEngine","estimatedItemSize","setItemCount","itemCount","recordItemSize","invalidateFrom","fromIndex","undefined","getItemSize","getItemOffset","getTotalSize","getVisibleRange","scrollOffset","containerSize","overscan","startIndex","endIndex","overscanStartIndex","overscanEndIndex","start","end","getVisibleItems","range","items","push","offset","getScrollOffsetForIndex","alignment","MeasurementSystem","Map","WeakMap","entries","entry","element","observedElements","get","observedAxis","widthSize","round","contentRect","width","widthMeasurements","set","pendingWidthUpdates","height","measurements","pendingUpdates","flushPendingUpdates","window","resizeObserver","ResizeObserver","handleResize","startMeasuring","container","onMeasure","onMeasureWidth","querySelectorAll","forEach","item","indexAttr","dataset","virtualizeIndex","Number","observeItem","axis","String","observe","syncMeasure","unobserveItem","unobserve","delete","rafId","requestAnimationFrame","clear","rect","getBoundingClientRect","rounded","stopMeasuring","disconnect","cancelAnimationFrame","getMeasurement","getWidthMeasurement","getAllMeasurements","getAllWidthMeasurements","clearPending","clearMeasurements","destroy","noop","useVirtualList","params","getItemKey","containerHeight","containerWidth","onScroll","onScrollEnd","stickyIndices","scrollEndDelay","autoMeasureContainer","isHorizontal","stickyIndicesRef","useRef","stickyKey","join","useEffect","current","engineRef","measurementRef","containerRef","innerRef","measuredViewport","setMeasuredViewport","useState","node","observer","prev","resolvedViewportSize","resolvedCrossAxisSize","setScrollOffsetState","isScrolling","setIsScrolling","scrollDirection","setScrollDirection","scrollTimeoutRef","lastScrollOffsetRef","measurementVersion","setMeasurementVersion","virtualItems","setVirtualItems","engine","visibleItems","sticky","nextVirtualItems","map","isSticky","includes","changed","prevItem","nextItem","handleScrollEvent","useCallback","e","currentTarget","newScrollOffset","scrollLeft","scrollTop","direction","clearTimeout","setTimeout","addEventListener","passive","removeEventListener","handleItemMeasure","v","measurement","scrollToItem","scrollToOffset","setScrollOffset","getItemStyle","isStickyItem","base","position","zIndex","top","left","getItemKeyForIndex","recalculate","totalSize","useMemo","VirtualList","forwardRef","renderItem","itemWrapper","itemKey","itemSize","className","itemClassName","style","innerClassName","innerStyle","itemStyle","scrollOffsetRef","footer","internalContainerRef","internalInnerRef","mergedContainerRef","mergedInnerRef","useImperativeHandle","containerStyle","overflow","innerStyleComputed","cx","parts","filter","Boolean","trim","_jsx","ref","el","handler","__scrollHandler","_jsxs","virtualItem","key","virtualStyle","renderProps","content","React","Fragment","children","boxSizing","displayName","GridLayoutEngine","sameParams","cols","colWidth","gap","layout","rowHeight","reset","positions","colHeights","rowOffsets","currentRowMax","maxBottom","sizeOf","appendMasonry","h","minCol","c","y","appendGrid","row","floor","col","prevRow","gapBefore","sync","from","getTotalHeight","VirtualGrid","columnCount","columnWidth","onVisibleRangeChange","containerClassName","setScrollTop","setContainerWidth","scrollTimeout","w","isReady","minColWidth","totalGapWidth","isFastPath","heightNumForRange","parseInt","fastRowStep","fastTotalHeight","numRows","ceil","fastVisibleRange","startRow","endRow","overscanRows","fastPositionOf","gridEngineRef","generalPositions","generalTotalHeight","generalVisibleRange","scrollBottom","effectiveOverscan","lo","hi","startIdx","mid","endIdx","totalHeight","visibleRange","handleScroll","containerStyleComputed","overflowY","overflowX","vItem","computedItemStyle","normalize","caseSensitive","toLowerCase","positionCache","onLoadMore","rootMargin","isLoading","enabled","root","sentinelRef","isAtBottom","setIsAtBottom","loadingRef","onLoadMoreRef","sentinel","IntersectionObserver","isIntersecting","Promise","resolve","finally","threshold","onVisible","once","isVisible","setIsVisible","setEntry","elementRef","callbackRef","observerEntry","persist","storageKey","storage","autoSave","maxEntries","useRAF","onError","storageRef","document","localStorage","getItem","JSON","parse","error","persistCache","values","sort","a","b","timestamp","slice","setItem","stringify","savePosition","Date","now","restorePosition","restore","searchValue","searchFields","deferSearch","matcher","normalizedQuery","deferredQuery","useDeferredValue","activeQuery","isSearching","itemMatcher","query","some","field","defaultMatcher","filteredItems","hasMatch","highlightRegex","escaped","replace","RegExp","highlightMatch","text","split","part","resultCount"],"mappings":"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"}
|