react-virtual-renderer 1.1.2 → 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.
Files changed (92) hide show
  1. package/dist/App.d.ts.map +1 -1
  2. package/dist/App.js +65 -3
  3. package/dist/App.js.map +1 -1
  4. package/dist/components/VirtualGrid.d.ts +30 -0
  5. package/dist/components/VirtualGrid.d.ts.map +1 -1
  6. package/dist/components/VirtualGrid.js +147 -117
  7. package/dist/components/VirtualGrid.js.map +1 -1
  8. package/dist/components/VirtualList.d.ts +0 -4
  9. package/dist/components/VirtualList.d.ts.map +1 -1
  10. package/dist/components/VirtualList.js +66 -47
  11. package/dist/components/VirtualList.js.map +1 -1
  12. package/dist/components/VirtualLiveRegion.d.ts +12 -0
  13. package/dist/components/VirtualLiveRegion.d.ts.map +1 -0
  14. package/dist/components/VirtualLiveRegion.js +27 -0
  15. package/dist/components/VirtualLiveRegion.js.map +1 -0
  16. package/dist/core/FenwickTree.d.ts +47 -0
  17. package/dist/core/FenwickTree.d.ts.map +1 -0
  18. package/dist/core/FenwickTree.js +206 -0
  19. package/dist/core/FenwickTree.js.map +1 -0
  20. package/dist/core/GridLayoutEngine.d.ts +64 -0
  21. package/dist/core/GridLayoutEngine.d.ts.map +1 -0
  22. package/dist/core/GridLayoutEngine.js +153 -0
  23. package/dist/core/GridLayoutEngine.js.map +1 -0
  24. package/dist/core/GroupedListEngine.d.ts +21 -0
  25. package/dist/core/GroupedListEngine.d.ts.map +1 -0
  26. package/dist/core/GroupedListEngine.js +22 -0
  27. package/dist/core/GroupedListEngine.js.map +1 -0
  28. package/dist/core/ListController.d.ts +31 -0
  29. package/dist/core/ListController.d.ts.map +1 -0
  30. package/dist/core/ListController.js +71 -0
  31. package/dist/core/ListController.js.map +1 -0
  32. package/dist/core/MeasurementSystem.d.ts +54 -6
  33. package/dist/core/MeasurementSystem.d.ts.map +1 -1
  34. package/dist/core/MeasurementSystem.js +113 -9
  35. package/dist/core/MeasurementSystem.js.map +1 -1
  36. package/dist/core/VirtualizationEngine.d.ts +28 -5
  37. package/dist/core/VirtualizationEngine.d.ts.map +1 -1
  38. package/dist/core/VirtualizationEngine.js +58 -52
  39. package/dist/core/VirtualizationEngine.js.map +1 -1
  40. package/dist/examples/DynamicHeightLists.d.ts +2 -0
  41. package/dist/examples/DynamicHeightLists.d.ts.map +1 -0
  42. package/dist/examples/DynamicHeightLists.js +42 -0
  43. package/dist/examples/DynamicHeightLists.js.map +1 -0
  44. package/dist/examples/FixedGrid.d.ts +2 -0
  45. package/dist/examples/FixedGrid.d.ts.map +1 -0
  46. package/dist/examples/FixedGrid.js +40 -0
  47. package/dist/examples/FixedGrid.js.map +1 -0
  48. package/dist/examples/GroupedContactList.d.ts +2 -0
  49. package/dist/examples/GroupedContactList.d.ts.map +1 -0
  50. package/dist/examples/GroupedContactList.js +20 -0
  51. package/dist/examples/GroupedContactList.js.map +1 -0
  52. package/dist/examples/InfiniteScrollLists.d.ts +2 -0
  53. package/dist/examples/InfiniteScrollLists.d.ts.map +1 -0
  54. package/dist/examples/InfiniteScrollLists.js +93 -0
  55. package/dist/examples/InfiniteScrollLists.js.map +1 -0
  56. package/dist/examples/MasonaryGrid.d.ts +2 -0
  57. package/dist/examples/MasonaryGrid.d.ts.map +1 -0
  58. package/dist/examples/MasonaryGrid.js +36 -0
  59. package/dist/examples/MasonaryGrid.js.map +1 -0
  60. package/dist/examples/PerfHarness.d.ts +2 -0
  61. package/dist/examples/PerfHarness.d.ts.map +1 -0
  62. package/dist/examples/PerfHarness.js +131 -0
  63. package/dist/examples/PerfHarness.js.map +1 -0
  64. package/dist/hooks/useBidirectionalInfiniteScroll.d.ts +32 -0
  65. package/dist/hooks/useBidirectionalInfiniteScroll.d.ts.map +1 -0
  66. package/dist/hooks/useBidirectionalInfiniteScroll.js +89 -0
  67. package/dist/hooks/useBidirectionalInfiniteScroll.js.map +1 -0
  68. package/dist/hooks/useInfiniteScroll.d.ts +37 -14
  69. package/dist/hooks/useInfiniteScroll.d.ts.map +1 -1
  70. package/dist/hooks/useInfiniteScroll.js +48 -38
  71. package/dist/hooks/useInfiniteScroll.js.map +1 -1
  72. package/dist/hooks/useRevoingTabIndex.d.ts +11 -0
  73. package/dist/hooks/useRevoingTabIndex.d.ts.map +1 -0
  74. package/dist/hooks/useRevoingTabIndex.js +28 -0
  75. package/dist/hooks/useRevoingTabIndex.js.map +1 -0
  76. package/dist/hooks/useVirtualAllyProps.d.ts +23 -0
  77. package/dist/hooks/useVirtualAllyProps.d.ts.map +1 -0
  78. package/dist/hooks/useVirtualAllyProps.js +25 -0
  79. package/dist/hooks/useVirtualAllyProps.js.map +1 -0
  80. package/dist/hooks/useVirtualList.d.ts +82 -4
  81. package/dist/hooks/useVirtualList.d.ts.map +1 -1
  82. package/dist/hooks/useVirtualList.js +220 -92
  83. package/dist/hooks/useVirtualList.js.map +1 -1
  84. package/dist/index.cjs.js +1 -1
  85. package/dist/index.cjs.js.map +1 -1
  86. package/dist/index.esm.js +1 -1
  87. package/dist/index.esm.js.map +1 -1
  88. package/dist/main.js +4 -4
  89. package/dist/main.js.map +1 -1
  90. package/dist/types.d.ts +10 -0
  91. package/dist/types.d.ts.map +1 -1
  92. package/package.json +1 -1
package/dist/App.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"App.d.ts","sourceRoot":"","sources":["../src/App.tsx"],"names":[],"mappings":"AAEA,iBAAS,GAAG,4CAOX;AAED,eAAe,GAAG,CAAA"}
1
+ {"version":3,"file":"App.d.ts","sourceRoot":"","sources":["../src/App.tsx"],"names":[],"mappings":"AA2CA,iBAAS,GAAG,4CAoDX;AAED,eAAe,GAAG,CAAC"}
package/dist/App.js CHANGED
@@ -1,7 +1,69 @@
1
- import { jsx as _jsx } from "react/jsx-runtime";
2
- import VirtualizeDemo from "./examples/Example";
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useState } from "react";
3
+ // Components
4
+ import DynamicHeightLists from "./examples/DynamicHeightLists";
5
+ import MasonryGrid from "./examples/MasonaryGrid";
6
+ import InfiniteScroll from "./examples/InfiniteScrollLists";
7
+ import FixedGrid from "./examples/FixedGrid";
8
+ import PerformanceHarness from "./examples/PerfHarness";
9
+ import GroupedContactListExample from "./examples/GroupedContactList";
10
+ const tabs = [
11
+ {
12
+ id: "dynamic-height",
13
+ label: "Dynamic Height",
14
+ component: _jsx(DynamicHeightLists, {}),
15
+ },
16
+ {
17
+ id: "masonry-grid",
18
+ label: "Masonry Grid",
19
+ component: _jsx(MasonryGrid, {}),
20
+ },
21
+ {
22
+ id: "infinite-scroll",
23
+ label: "Infinite Scroll",
24
+ component: _jsx(InfiniteScroll, {}),
25
+ },
26
+ {
27
+ id: "fixed-grid",
28
+ label: "Fixed Grid",
29
+ component: _jsx(FixedGrid, {}),
30
+ },
31
+ {
32
+ id: "performance-harness",
33
+ label: "Performance Harness",
34
+ component: _jsx(PerformanceHarness, {}),
35
+ },
36
+ {
37
+ id: "grouped",
38
+ label: "Grouped Contact List",
39
+ component: _jsx(GroupedContactListExample, {}),
40
+ }
41
+ ];
3
42
  function App() {
4
- return (_jsx("div", { style: { display: 'flex', flexDirection: 'column', gap: 20, padding: 20 }, children: _jsx(VirtualizeDemo, {}) }));
43
+ const [activeTab, setActiveTab] = useState(tabs[0].id);
44
+ const activeComponent = tabs.find(tab => tab.id === activeTab)?.component;
45
+ return (_jsxs("div", { style: {
46
+ maxWidth: "1400px",
47
+ margin: "0 auto",
48
+ padding: "24px",
49
+ fontFamily: "sans-serif",
50
+ }, children: [_jsx("h1", { children: "React Virtual Renderer Demos" }), _jsx("div", { style: {
51
+ display: "flex",
52
+ gap: "8px",
53
+ borderBottom: "1px solid #ddd",
54
+ marginBottom: "24px",
55
+ flexWrap: "wrap",
56
+ }, children: tabs.map(tab => (_jsx("button", { onClick: () => setActiveTab(tab.id), style: {
57
+ padding: "12px 18px",
58
+ cursor: "pointer",
59
+ border: "none",
60
+ borderBottom: activeTab === tab.id
61
+ ? "3px solid #2563eb"
62
+ : "3px solid transparent",
63
+ background: "transparent",
64
+ fontWeight: activeTab === tab.id ? 600 : 400,
65
+ fontSize: "15px",
66
+ }, children: tab.label }, tab.id))) }), _jsx("div", { children: activeComponent })] }));
5
67
  }
6
68
  export default App;
7
69
  //# sourceMappingURL=App.js.map
package/dist/App.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"App.js","sourceRoot":"","sources":["../src/App.tsx"],"names":[],"mappings":";AAAA,OAAO,cAAc,MAAM,oBAAoB,CAAA;AAE/C,SAAS,GAAG;IAEV,OAAO,CACL,cAAK,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,GAAG,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,YAC5E,KAAC,cAAc,KAAG,GACd,CACP,CAAA;AACH,CAAC;AAED,eAAe,GAAG,CAAA"}
1
+ {"version":3,"file":"App.js","sourceRoot":"","sources":["../src/App.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAEjC,aAAa;AACb,OAAO,kBAAkB,MAAM,+BAA+B,CAAC;AAC/D,OAAO,WAAW,MAAM,yBAAyB,CAAC;AAClD,OAAO,cAAc,MAAM,gCAAgC,CAAC;AAC5D,OAAO,SAAS,MAAM,sBAAsB,CAAC;AAC7C,OAAO,kBAAkB,MAAM,wBAAwB,CAAC;AACxD,OAAO,yBAAyB,MAAM,+BAA+B,CAAC;AAEtE,MAAM,IAAI,GAAG;IACT;QACI,EAAE,EAAE,gBAAgB;QACpB,KAAK,EAAE,gBAAgB;QACvB,SAAS,EAAE,KAAC,kBAAkB,KAAG;KACpC;IACD;QACI,EAAE,EAAE,cAAc;QAClB,KAAK,EAAE,cAAc;QACrB,SAAS,EAAE,KAAC,WAAW,KAAG;KAC7B;IACD;QACI,EAAE,EAAE,iBAAiB;QACrB,KAAK,EAAE,iBAAiB;QACxB,SAAS,EAAE,KAAC,cAAc,KAAG;KAChC;IACD;QACI,EAAE,EAAE,YAAY;QAChB,KAAK,EAAE,YAAY;QACnB,SAAS,EAAE,KAAC,SAAS,KAAG;KAC3B;IACD;QACI,EAAE,EAAE,qBAAqB;QACzB,KAAK,EAAE,qBAAqB;QAC5B,SAAS,EAAE,KAAC,kBAAkB,KAAG;KACpC;IACD;QACI,EAAE,EAAE,SAAS;QACb,KAAK,EAAE,sBAAsB;QAC7B,SAAS,EAAE,KAAC,yBAAyB,KAAG;KAC3C;CACJ,CAAC;AAEF,SAAS,GAAG;IACR,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAEvD,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,SAAS,CAAC,EAAE,SAAS,CAAC;IAE1E,OAAO,CACH,eACI,KAAK,EAAE;YACH,QAAQ,EAAE,QAAQ;YAClB,MAAM,EAAE,QAAQ;YAChB,OAAO,EAAE,MAAM;YACf,UAAU,EAAE,YAAY;SAC3B,aAED,wDAAqC,EAGrC,cACI,KAAK,EAAE;oBACH,OAAO,EAAE,MAAM;oBACf,GAAG,EAAE,KAAK;oBACV,YAAY,EAAE,gBAAgB;oBAC9B,YAAY,EAAE,MAAM;oBACpB,QAAQ,EAAE,MAAM;iBACnB,YAEA,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CACb,iBAEI,OAAO,EAAE,GAAG,EAAE,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC,EACnC,KAAK,EAAE;wBACH,OAAO,EAAE,WAAW;wBACpB,MAAM,EAAE,SAAS;wBACjB,MAAM,EAAE,MAAM;wBACd,YAAY,EACR,SAAS,KAAK,GAAG,CAAC,EAAE;4BAChB,CAAC,CAAC,mBAAmB;4BACrB,CAAC,CAAC,uBAAuB;wBACjC,UAAU,EAAE,aAAa;wBACzB,UAAU,EAAE,SAAS,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG;wBAC5C,QAAQ,EAAE,MAAM;qBACnB,YAEA,GAAG,CAAC,KAAK,IAfL,GAAG,CAAC,EAAE,CAgBN,CACZ,CAAC,GACA,EAGN,wBAAM,eAAe,GAAO,IAC1B,CACT,CAAC;AACN,CAAC;AAED,eAAe,GAAG,CAAC"}
@@ -1,4 +1,34 @@
1
1
  import React from "react";
2
2
  import { VirtualGridProps } from "../types";
3
+ /**
4
+ * PERFORMANCE (read this before touching the position math below):
5
+ *
6
+ * There are two genuinely different cost profiles here, and this file
7
+ * intentionally keeps them on separate code paths instead of forcing
8
+ * everything through one "general" algorithm:
9
+ *
10
+ * 1. FAST PATH - layout="grid" with a numeric rowHeight (by far the
11
+ * most common real-world case: photo grids, product grids, etc).
12
+ * Every item's position is pure arithmetic from its index - no
13
+ * array is ever allocated, and the visible range is computed with
14
+ * O(1) division, not a scan. This is the single biggest win here:
15
+ * the previous version paid O(n) to build a positions array for
16
+ * this case even though it never needed one.
17
+ *
18
+ * 2. GENERAL PATH - masonry, or layout="grid" with a per-index
19
+ * rowHeight function. These genuinely need to remember prior
20
+ * layout state (column heights / row offsets), so they go through
21
+ * GridLayoutEngine, which appends incrementally (O(k) for k new
22
+ * items, not O(n)) rather than recomputing from scratch. Finding
23
+ * the visible range over that array is done with binary search
24
+ * (O(log n)) instead of the previous linear scan (O(n)).
25
+ *
26
+ * Caveat worth stating plainly: masonry's y-position isn't
27
+ * perfectly monotonic in index order (an item can land in a
28
+ * shorter column than the item before it), so binary search over
29
+ * it is an approximation, same trade-off every masonry-virtualizer
30
+ * makes. Overscan is widened by a column's worth of rows in
31
+ * masonry mode specifically to absorb that.
32
+ */
3
33
  export declare const VirtualGrid: React.ForwardRefExoticComponent<VirtualGridProps<any> & React.RefAttributes<HTMLDivElement>>;
4
34
  //# sourceMappingURL=VirtualGrid.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"VirtualGrid.d.ts","sourceRoot":"","sources":["../../src/components/VirtualGrid.tsx"],"names":[],"mappings":"AAAA,OAAO,KAQN,MAAM,OAAO,CAAC;AAEf,OAAO,EAAE,gBAAgB,EAAiC,MAAM,UAAU,CAAC;AAE3E,eAAO,MAAM,WAAW,8FAqTvB,CAAC"}
1
+ {"version":3,"file":"VirtualGrid.d.ts","sourceRoot":"","sources":["../../src/components/VirtualGrid.tsx"],"names":[],"mappings":"AAAA,OAAO,KAQN,MAAM,OAAO,CAAC;AAEf,OAAO,EAAE,gBAAgB,EAAiC,MAAM,UAAU,CAAC;AAG3E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,eAAO,MAAM,WAAW,8FAmTvB,CAAC"}
@@ -1,162 +1,194 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import { forwardRef, useMemo, useState, useRef, useEffect, useImperativeHandle, useCallback, } from "react";
3
- export const VirtualGrid = forwardRef(({ items, renderItem, itemKey, height = 600, width = "100%", columnCount = 3, rowHeight = 200, columnWidth, layout = "grid", overscan = 5, gap = 16, onScroll, onVisibleRangeChange, innerClassName, innerStyle, containerClassName, containerStyle, }, ref) => {
3
+ import { GridLayoutEngine } from "../core/GridLayoutEngine";
4
+ /**
5
+ * PERFORMANCE (read this before touching the position math below):
6
+ *
7
+ * There are two genuinely different cost profiles here, and this file
8
+ * intentionally keeps them on separate code paths instead of forcing
9
+ * everything through one "general" algorithm:
10
+ *
11
+ * 1. FAST PATH - layout="grid" with a numeric rowHeight (by far the
12
+ * most common real-world case: photo grids, product grids, etc).
13
+ * Every item's position is pure arithmetic from its index - no
14
+ * array is ever allocated, and the visible range is computed with
15
+ * O(1) division, not a scan. This is the single biggest win here:
16
+ * the previous version paid O(n) to build a positions array for
17
+ * this case even though it never needed one.
18
+ *
19
+ * 2. GENERAL PATH - masonry, or layout="grid" with a per-index
20
+ * rowHeight function. These genuinely need to remember prior
21
+ * layout state (column heights / row offsets), so they go through
22
+ * GridLayoutEngine, which appends incrementally (O(k) for k new
23
+ * items, not O(n)) rather than recomputing from scratch. Finding
24
+ * the visible range over that array is done with binary search
25
+ * (O(log n)) instead of the previous linear scan (O(n)).
26
+ *
27
+ * Caveat worth stating plainly: masonry's y-position isn't
28
+ * perfectly monotonic in index order (an item can land in a
29
+ * shorter column than the item before it), so binary search over
30
+ * it is an approximation, same trade-off every masonry-virtualizer
31
+ * makes. Overscan is widened by a column's worth of rows in
32
+ * masonry mode specifically to absorb that.
33
+ */
34
+ export const VirtualGrid = forwardRef(({ items, renderItem, itemKey, height = 600, width = "100%", columnCount = 3, rowHeight = 200, columnWidth, layout = "grid", overscan = 5, gap = 16, onScroll, onVisibleRangeChange, innerClassName, innerStyle, containerClassName, containerStyle, itemClassName, itemStyle, }, ref) => {
4
35
  const containerRef = useRef(null);
5
36
  useImperativeHandle(ref, () => containerRef.current);
6
37
  const [scrollTop, setScrollTop] = useState(0);
7
38
  const [isScrolling, setIsScrolling] = useState(false);
8
39
  const [containerWidth, setContainerWidth] = useState(0);
9
40
  const scrollTimeout = useRef(null);
10
- // ✅ FIX 1: Proper ResizeObserver with validation
11
41
  useEffect(() => {
12
42
  if (!containerRef.current)
13
43
  return;
14
44
  const el = containerRef.current;
15
45
  const observer = new ResizeObserver((entries) => {
16
46
  for (const entry of entries) {
17
- const width = entry.contentRect.width;
18
- if (width > 0) {
19
- setContainerWidth(width);
20
- }
47
+ const w = entry.contentRect.width;
48
+ if (w > 0)
49
+ setContainerWidth(w);
21
50
  }
22
51
  });
23
52
  observer.observe(el);
24
53
  return () => observer.disconnect();
25
54
  }, []);
26
- // ✅ FIX 2: Cleanup timeout on unmount
27
55
  useEffect(() => {
28
56
  return () => {
29
- if (scrollTimeout.current) {
57
+ if (scrollTimeout.current)
30
58
  clearTimeout(scrollTimeout.current);
31
- }
32
59
  };
33
60
  }, []);
34
- // ✅ FIX 3: Better ready check
35
61
  const isReady = containerWidth > 0 && items.length > 0;
36
- // ✅ FIX 4: Proper column calculation with gap
37
62
  const cols = useMemo(() => {
38
63
  if (columnCount === "auto") {
39
64
  const minColWidth = 200;
40
- const calculatedCols = Math.max(1, Math.floor(containerWidth / (minColWidth + gap)));
41
- return calculatedCols;
65
+ return Math.max(1, Math.floor(containerWidth / (minColWidth + gap)));
42
66
  }
43
67
  return Math.max(1, Number(columnCount));
44
68
  }, [columnCount, containerWidth, gap]);
45
69
  const colWidth = useMemo(() => {
46
- if (typeof columnWidth === "number") {
70
+ if (typeof columnWidth === "number")
47
71
  return columnWidth;
48
- }
49
72
  const totalGapWidth = gap * Math.max(0, cols - 1);
50
- return Math.max(0, (containerWidth - totalGapWidth) /
51
- cols);
73
+ return Math.max(0, (containerWidth - totalGapWidth) / cols);
74
+ }, [containerWidth, cols, gap, columnWidth]);
75
+ const isFastPath = layout === "grid" && typeof rowHeight === "number";
76
+ const heightNumForRange = typeof height === "string" ? parseInt(height) : Number(height);
77
+ // ---------- FAST PATH: pure O(1) math, no array ----------
78
+ const fastRowStep = rowHeight + gap;
79
+ const fastTotalHeight = useMemo(() => {
80
+ if (!isFastPath || !isReady)
81
+ return 0;
82
+ const numRows = Math.ceil(items.length / cols);
83
+ return numRows > 0 ? numRows * fastRowStep - gap : 0;
84
+ }, [isFastPath, isReady, items.length, cols, fastRowStep, gap]);
85
+ const fastVisibleRange = useMemo(() => {
86
+ if (!isFastPath || !isReady)
87
+ return { start: 0, end: -1 };
88
+ const startRow = Math.max(0, Math.floor(scrollTop / fastRowStep));
89
+ const endRow = Math.max(0, Math.floor((scrollTop + heightNumForRange) / fastRowStep));
90
+ const overscanRows = Math.ceil(overscan / cols);
91
+ const start = Math.max(0, (startRow - overscanRows) * cols);
92
+ const end = Math.min(items.length - 1, (endRow + overscanRows + 1) * cols - 1);
93
+ return { start, end };
52
94
  }, [
53
- containerWidth,
95
+ isFastPath,
96
+ isReady,
97
+ scrollTop,
98
+ heightNumForRange,
99
+ fastRowStep,
100
+ overscan,
54
101
  cols,
55
- gap,
56
- columnWidth,
102
+ items.length,
57
103
  ]);
58
- // FIX 6: Improved position calculation for masonry AND grid
59
- const positions = useMemo(() => {
60
- if (!isReady)
104
+ const fastPositionOf = useCallback((index) => {
105
+ const row = Math.floor(index / cols);
106
+ const col = index % cols;
107
+ return {
108
+ x: col * (colWidth + gap),
109
+ y: row * fastRowStep,
110
+ width: colWidth,
111
+ height: rowHeight,
112
+ };
113
+ }, [cols, colWidth, gap, fastRowStep, rowHeight]);
114
+ // ---------- GENERAL PATH: incremental engine + binary search ----------
115
+ const gridEngineRef = useRef(null);
116
+ if (gridEngineRef.current === null) {
117
+ gridEngineRef.current = new GridLayoutEngine();
118
+ }
119
+ const generalPositions = useMemo(() => {
120
+ if (isFastPath || !isReady)
61
121
  return [];
62
- const pos = [];
63
- if (layout === "masonry") {
64
- // Masonry: Fill shortest column
65
- const colHeights = Array(cols).fill(0);
66
- for (let i = 0; i < items.length; i++) {
67
- const itemHeight = typeof rowHeight === "function"
68
- ? rowHeight(i)
69
- : Number(rowHeight);
70
- // Find shortest column
71
- const minColIndex = colHeights.indexOf(Math.min(...colHeights));
72
- const xPos = minColIndex * (colWidth + gap);
73
- const yPos = colHeights[minColIndex];
74
- pos.push({
75
- x: xPos,
76
- y: yPos,
77
- width: colWidth,
78
- height: itemHeight,
79
- });
80
- // Update column height
81
- colHeights[minColIndex] += itemHeight + gap;
122
+ return gridEngineRef.current.sync(items.length, {
123
+ cols,
124
+ colWidth,
125
+ gap,
126
+ layout,
127
+ rowHeight,
128
+ });
129
+ }, [isFastPath, isReady, items.length, cols, colWidth, gap, layout, rowHeight]);
130
+ const generalTotalHeight = useMemo(() => {
131
+ if (isFastPath || !isReady)
132
+ return 0;
133
+ return gridEngineRef.current.getTotalHeight();
134
+ }, [isFastPath, isReady, generalPositions]);
135
+ const generalVisibleRange = useMemo(() => {
136
+ if (isFastPath || !generalPositions.length)
137
+ return { start: 0, end: -1 };
138
+ const scrollBottom = scrollTop + heightNumForRange;
139
+ const n = generalPositions.length;
140
+ // widen overscan for masonry to absorb its non-strict y-monotonicity
141
+ const effectiveOverscan = layout === "masonry" ? overscan + cols : overscan;
142
+ let lo = 0, hi = n - 1, startIdx = 0;
143
+ while (lo <= hi) {
144
+ const mid = (lo + hi) >> 1;
145
+ if (generalPositions[mid].y + generalPositions[mid].height >= scrollTop) {
146
+ startIdx = mid;
147
+ hi = mid - 1;
82
148
  }
83
- }
84
- else {
85
- // Grid: Standard rows and columns
86
- for (let i = 0; i < items.length; i++) {
87
- const row = Math.floor(i / cols);
88
- const col = i % cols;
89
- const itemHeight = typeof rowHeight === "function"
90
- ? rowHeight(i)
91
- : Number(rowHeight);
92
- pos.push({
93
- x: col * (colWidth + gap),
94
- y: row * (itemHeight + gap),
95
- width: colWidth,
96
- height: itemHeight,
97
- });
149
+ else {
150
+ lo = mid + 1;
98
151
  }
99
152
  }
100
- return pos;
101
- }, [items, cols, colWidth, gap, layout, rowHeight, isReady]);
102
- // FIX 7: Better visible range calculation
103
- const visibleRange = useMemo(() => {
104
- if (!positions.length || !isReady) {
105
- return { start: 0, end: 0 };
106
- }
107
- const heightNum = typeof height === "string" ? parseInt(height) : Number(height);
108
- let startIndex = 0;
109
- for (let i = 0; i < positions.length; i++) {
110
- if (positions[i].y + positions[i].height >= scrollTop) {
111
- startIndex = i;
112
- break;
153
+ lo = 0;
154
+ hi = n - 1;
155
+ let endIdx = n - 1;
156
+ while (lo <= hi) {
157
+ const mid = (lo + hi) >> 1;
158
+ if (generalPositions[mid].y <= scrollBottom) {
159
+ endIdx = mid;
160
+ lo = mid + 1;
113
161
  }
114
- }
115
- let endIndex = positions.length - 1;
116
- for (let i = positions.length - 1; i >= 0; i--) {
117
- if (positions[i].y <= scrollTop + heightNum) {
118
- endIndex = i;
119
- break;
162
+ else {
163
+ hi = mid - 1;
120
164
  }
121
165
  }
122
- const start = Math.max(0, startIndex - overscan);
123
- const end = Math.min(items.length - 1, endIndex + overscan);
124
- return { start, end };
125
- }, [positions, scrollTop, height, overscan, items.length, isReady]);
126
- // FIX 8: Proper total height calculation
127
- const totalHeight = useMemo(() => {
128
- if (!positions.length)
129
- return 0;
130
- const maxHeight = Math.max(...positions.map((p) => p.y + p.height));
131
- return maxHeight || 0;
132
- }, [positions]);
133
- // ✅ FIX 9: Better scroll handler
166
+ return {
167
+ start: Math.max(0, startIdx - effectiveOverscan),
168
+ end: Math.min(n - 1, endIdx + effectiveOverscan),
169
+ };
170
+ }, [isFastPath, generalPositions, scrollTop, heightNumForRange, overscan, layout, cols]);
171
+ // ---------- unify the two paths ----------
172
+ const totalHeight = isFastPath ? fastTotalHeight : generalTotalHeight;
173
+ const visibleRange = isFastPath ? fastVisibleRange : generalVisibleRange;
134
174
  const handleScroll = useCallback((e) => {
135
175
  const target = e.currentTarget;
136
- const top = target.scrollTop;
137
- const left = target.scrollLeft;
138
- setScrollTop(top);
176
+ setScrollTop(target.scrollTop);
139
177
  setIsScrolling(true);
140
- onScroll?.(top, left);
141
- // Clear previous timeout
142
- if (scrollTimeout.current) {
178
+ onScroll?.(target.scrollTop, target.scrollLeft);
179
+ if (scrollTimeout.current)
143
180
  clearTimeout(scrollTimeout.current);
144
- }
145
- // Set new timeout
146
- scrollTimeout.current = setTimeout(() => {
147
- setIsScrolling(false);
148
- }, 120);
181
+ scrollTimeout.current = setTimeout(() => setIsScrolling(false), 120);
149
182
  }, [onScroll]);
150
- // ✅ FIX 10: Notify visible range change
151
183
  useEffect(() => {
152
184
  onVisibleRangeChange?.(visibleRange.start, visibleRange.end);
153
185
  }, [visibleRange, onVisibleRangeChange]);
154
- // FIX 11: Proper height/width conversion
155
- const heightNum = typeof height === "string" ? height : `${height}px`;
156
- const widthNum = typeof width === "string" ? width : `${width}px`;
186
+ const heightCss = typeof height === "string" ? height : `${height}px`;
187
+ const widthCss = typeof width === "string" ? width : `${width}px`;
188
+ const cx = (...parts) => parts.filter(Boolean).join(" ").trim();
157
189
  const containerStyleComputed = {
158
- height: heightNum,
159
- width: widthNum,
190
+ height: heightCss,
191
+ width: widthCss,
160
192
  overflowY: "auto",
161
193
  overflowX: "hidden",
162
194
  position: "relative",
@@ -168,26 +200,24 @@ export const VirtualGrid = forwardRef(({ items, renderItem, itemKey, height = 60
168
200
  width: "100%",
169
201
  ...innerStyle,
170
202
  };
171
- // ✅ FIX 12: Complete render logic
172
203
  if (!isReady) {
173
- return (_jsx("div", { ref: containerRef, className: containerClassName, style: containerStyleComputed, onScroll: handleScroll, children: _jsx("div", { className: innerClassName, style: innerStyleComputed }) }));
204
+ return (_jsx("div", { ref: containerRef, className: cx("virtualize-grid-container", containerClassName), style: containerStyleComputed, onScroll: handleScroll, children: _jsx("div", { className: cx("virtualize-grid-inner", innerClassName), style: innerStyleComputed }) }));
174
205
  }
175
- // ✅ FIX 13: Render visible items properly
176
206
  const visibleItems = [];
177
207
  for (let i = visibleRange.start; i <= visibleRange.end; i++) {
178
208
  if (i >= 0 && i < items.length) {
179
- visibleItems.push({
180
- index: i,
181
- key: itemKey?.(i, items[i]) ?? i,
182
- });
209
+ visibleItems.push({ index: i, key: itemKey?.(i, items[i]) ?? i });
183
210
  }
184
211
  }
185
- return (_jsx("div", { ref: containerRef, className: containerClassName, style: containerStyleComputed, onScroll: handleScroll, children: _jsx("div", { className: innerClassName, style: innerStyleComputed, children: visibleItems.map((vItem) => {
212
+ return (_jsx("div", { ref: containerRef, className: cx("virtualize-grid-container", containerClassName), style: containerStyleComputed, onScroll: handleScroll, children: _jsx("div", { className: cx("virtualize-grid-inner", innerClassName), style: innerStyleComputed, children: visibleItems.map((vItem) => {
186
213
  const item = items[vItem.index];
187
- const pos = positions[vItem.index];
214
+ const pos = isFastPath
215
+ ? fastPositionOf(vItem.index)
216
+ : generalPositions[vItem.index];
188
217
  if (!item || !pos)
189
218
  return null;
190
- const itemStyle = {
219
+ const computedItemStyle = {
220
+ ...itemStyle,
191
221
  position: "absolute",
192
222
  top: `${pos.y}px`,
193
223
  left: `${pos.x}px`,
@@ -195,7 +225,7 @@ export const VirtualGrid = forwardRef(({ items, renderItem, itemKey, height = 60
195
225
  height: `${pos.height}px`,
196
226
  boxSizing: "border-box",
197
227
  };
198
- return (_jsx("div", { style: itemStyle, children: renderItem({
228
+ return (_jsx("div", { "data-virtualize-index": vItem.index, className: cx("virtualize-grid-item", itemClassName), style: computedItemStyle, children: renderItem({
199
229
  item,
200
230
  index: vItem.index,
201
231
  isScrolling,
@@ -1 +1 @@
1
- {"version":3,"file":"VirtualGrid.js","sourceRoot":"","sources":["../../src/components/VirtualGrid.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"VirtualGrid.js","sourceRoot":"","sources":["../../src/components/VirtualGrid.tsx"],"names":[],"mappings":";AAAA,OAAc,EACV,UAAU,EACV,OAAO,EACP,QAAQ,EACR,MAAM,EACN,SAAS,EACT,mBAAmB,EACnB,WAAW,GACd,MAAM,OAAO,CAAC;AAGf,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAE5D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,UAAU,CACjC,CACI,EACI,KAAK,EACL,UAAU,EACV,OAAO,EACP,MAAM,GAAG,GAAG,EACZ,KAAK,GAAG,MAAM,EACd,WAAW,GAAG,CAAC,EACf,SAAS,GAAG,GAAG,EACf,WAAW,EACX,MAAM,GAAG,MAAM,EACf,QAAQ,GAAG,CAAC,EACZ,GAAG,GAAG,EAAE,EACR,QAAQ,EACR,oBAAoB,EACpB,cAAc,EACd,UAAU,EACV,kBAAkB,EAClB,cAAc,EACd,aAAa,EACb,SAAS,GACZ,EACD,GAAG,EACL,EAAE;IACA,MAAM,YAAY,GAAG,MAAM,CAAiB,IAAI,CAAC,CAAC;IAClD,mBAAmB,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,YAAY,CAAC,OAAyB,CAAC,CAAC;IAEvE,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IAC9C,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IACtD,MAAM,CAAC,cAAc,EAAE,iBAAiB,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IAExD,MAAM,aAAa,GAAG,MAAM,CAAwB,IAAI,CAAC,CAAC;IAE1D,SAAS,CAAC,GAAG,EAAE;QACX,IAAI,CAAC,YAAY,CAAC,OAAO;YAAE,OAAO;QAElC,MAAM,EAAE,GAAG,YAAY,CAAC,OAAO,CAAC;QAChC,MAAM,QAAQ,GAAG,IAAI,cAAc,CAAC,CAAC,OAAO,EAAE,EAAE;YAC5C,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;gBAC1B,MAAM,CAAC,GAAG,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC;gBAClC,IAAI,CAAC,GAAG,CAAC;oBAAE,iBAAiB,CAAC,CAAC,CAAC,CAAC;YACpC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACrB,OAAO,GAAG,EAAE,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC;IACvC,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,SAAS,CAAC,GAAG,EAAE;QACX,OAAO,GAAG,EAAE;YACR,IAAI,aAAa,CAAC,OAAO;gBAAE,YAAY,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;QACnE,CAAC,CAAC;IACN,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,OAAO,GAAG,cAAc,GAAG,CAAC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;IAEvD,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,EAAE;QACtB,IAAI,WAAW,KAAK,MAAM,EAAE,CAAC;YACzB,MAAM,WAAW,GAAG,GAAG,CAAC;YACxB,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,cAAc,GAAG,CAAC,WAAW,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;QACzE,CAAC;QACD,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC;IAC5C,CAAC,EAAE,CAAC,WAAW,EAAE,cAAc,EAAE,GAAG,CAAC,CAAC,CAAC;IAEvC,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,EAAE;QAC1B,IAAI,OAAO,WAAW,KAAK,QAAQ;YAAE,OAAO,WAAW,CAAC;QACxD,MAAM,aAAa,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC;QAClD,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,cAAc,GAAG,aAAa,CAAC,GAAG,IAAI,CAAC,CAAC;IAChE,CAAC,EAAE,CAAC,cAAc,EAAE,IAAI,EAAE,GAAG,EAAE,WAAW,CAAC,CAAC,CAAC;IAE7C,MAAM,UAAU,GAAG,MAAM,KAAK,MAAM,IAAI,OAAO,SAAS,KAAK,QAAQ,CAAC;IAEtE,MAAM,iBAAiB,GACnB,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAEnE,4DAA4D;IAC5D,MAAM,WAAW,GAAI,SAAoB,GAAG,GAAG,CAAC;IAEhD,MAAM,eAAe,GAAG,OAAO,CAAC,GAAG,EAAE;QACjC,IAAI,CAAC,UAAU,IAAI,CAAC,OAAO;YAAE,OAAO,CAAC,CAAC;QACtC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;QAC/C,OAAO,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,GAAG,WAAW,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACzD,CAAC,EAAE,CAAC,UAAU,EAAE,OAAO,EAAE,KAAK,CAAC,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,CAAC,CAAC,CAAC;IAEhE,MAAM,gBAAgB,GAAG,OAAO,CAAC,GAAG,EAAE;QAClC,IAAI,CAAC,UAAU,IAAI,CAAC,OAAO;YAAE,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC;QAE1D,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,WAAW,CAAC,CAAC,CAAC;QAClE,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CACnB,CAAC,EACD,IAAI,CAAC,KAAK,CAAC,CAAC,SAAS,GAAG,iBAAiB,CAAC,GAAG,WAAW,CAAC,CAC5D,CAAC;QAEF,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,CAAC;QAEhD,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,QAAQ,GAAG,YAAY,CAAC,GAAG,IAAI,CAAC,CAAC;QAC5D,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAChB,KAAK,CAAC,MAAM,GAAG,CAAC,EAChB,CAAC,MAAM,GAAG,YAAY,GAAG,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CACzC,CAAC;QAEF,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;IAC1B,CAAC,EAAE;QACC,UAAU;QACV,OAAO;QACP,SAAS;QACT,iBAAiB;QACjB,WAAW;QACX,QAAQ;QACR,IAAI;QACJ,KAAK,CAAC,MAAM;KACf,CAAC,CAAC;IAEH,MAAM,cAAc,GAAG,WAAW,CAC9B,CAAC,KAAa,EAAgB,EAAE;QAC5B,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC;QACrC,MAAM,GAAG,GAAG,KAAK,GAAG,IAAI,CAAC;QACzB,OAAO;YACH,CAAC,EAAE,GAAG,GAAG,CAAC,QAAQ,GAAG,GAAG,CAAC;YACzB,CAAC,EAAE,GAAG,GAAG,WAAW;YACpB,KAAK,EAAE,QAAQ;YACf,MAAM,EAAE,SAAmB;SAC9B,CAAC;IACN,CAAC,EACD,CAAC,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,WAAW,EAAE,SAAS,CAAC,CAChD,CAAC;IAEF,yEAAyE;IACzE,MAAM,aAAa,GAAG,MAAM,CAA0B,IAAI,CAAC,CAAC;IAC5D,IAAI,aAAa,CAAC,OAAO,KAAK,IAAI,EAAE,CAAC;QACjC,aAAa,CAAC,OAAO,GAAG,IAAI,gBAAgB,EAAE,CAAC;IACnD,CAAC;IAED,MAAM,gBAAgB,GAAG,OAAO,CAAiB,GAAG,EAAE;QAClD,IAAI,UAAU,IAAI,CAAC,OAAO;YAAE,OAAO,EAAE,CAAC;QACtC,OAAO,aAAa,CAAC,OAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;YAC7C,IAAI;YACJ,QAAQ;YACR,GAAG;YACH,MAAM;YACN,SAAS;SACZ,CAAC,CAAC;IACP,CAAC,EAAE,CAAC,UAAU,EAAE,OAAO,EAAE,KAAK,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC;IAEhF,MAAM,kBAAkB,GAAG,OAAO,CAAC,GAAG,EAAE;QACpC,IAAI,UAAU,IAAI,CAAC,OAAO;YAAE,OAAO,CAAC,CAAC;QACrC,OAAO,aAAa,CAAC,OAAQ,CAAC,cAAc,EAAE,CAAC;IACnD,CAAC,EAAE,CAAC,UAAU,EAAE,OAAO,EAAE,gBAAgB,CAAC,CAAC,CAAC;IAE5C,MAAM,mBAAmB,GAAG,OAAO,CAAC,GAAG,EAAE;QACrC,IAAI,UAAU,IAAI,CAAC,gBAAgB,CAAC,MAAM;YAAE,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC;QAEzE,MAAM,YAAY,GAAG,SAAS,GAAG,iBAAiB,CAAC;QACnD,MAAM,CAAC,GAAG,gBAAgB,CAAC,MAAM,CAAC;QAElC,qEAAqE;QACrE,MAAM,iBAAiB,GACnB,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC;QAEtD,IAAI,EAAE,GAAG,CAAC,EACN,EAAE,GAAG,CAAC,GAAG,CAAC,EACV,QAAQ,GAAG,CAAC,CAAC;QACjB,OAAO,EAAE,IAAI,EAAE,EAAE,CAAC;YACd,MAAM,GAAG,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;YAC3B,IAAI,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC,MAAM,IAAI,SAAS,EAAE,CAAC;gBACtE,QAAQ,GAAG,GAAG,CAAC;gBACf,EAAE,GAAG,GAAG,GAAG,CAAC,CAAC;YACjB,CAAC;iBAAM,CAAC;gBACJ,EAAE,GAAG,GAAG,GAAG,CAAC,CAAC;YACjB,CAAC;QACL,CAAC;QAED,EAAE,GAAG,CAAC,CAAC;QACP,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;QACX,IAAI,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC;QACnB,OAAO,EAAE,IAAI,EAAE,EAAE,CAAC;YACd,MAAM,GAAG,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;YAC3B,IAAI,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,YAAY,EAAE,CAAC;gBAC1C,MAAM,GAAG,GAAG,CAAC;gBACb,EAAE,GAAG,GAAG,GAAG,CAAC,CAAC;YACjB,CAAC;iBAAM,CAAC;gBACJ,EAAE,GAAG,GAAG,GAAG,CAAC,CAAC;YACjB,CAAC;QACL,CAAC;QAED,OAAO;YACH,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,GAAG,iBAAiB,CAAC;YAChD,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,iBAAiB,CAAC;SACnD,CAAC;IACN,CAAC,EAAE,CAAC,UAAU,EAAE,gBAAgB,EAAE,SAAS,EAAE,iBAAiB,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;IAEzF,4CAA4C;IAC5C,MAAM,WAAW,GAAG,UAAU,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,kBAAkB,CAAC;IACtE,MAAM,YAAY,GAAG,UAAU,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,mBAAmB,CAAC;IAEzE,MAAM,YAAY,GAAG,WAAW,CAC5B,CAAC,CAAgC,EAAE,EAAE;QACjC,MAAM,MAAM,GAAG,CAAC,CAAC,aAAa,CAAC;QAC/B,YAAY,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAC/B,cAAc,CAAC,IAAI,CAAC,CAAC;QAErB,QAAQ,EAAE,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC;QAEhD,IAAI,aAAa,CAAC,OAAO;YAAE,YAAY,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;QAC/D,aAAa,CAAC,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC;IACzE,CAAC,EACD,CAAC,QAAQ,CAAC,CACb,CAAC;IAEF,SAAS,CAAC,GAAG,EAAE;QACX,oBAAoB,EAAE,CAAC,YAAY,CAAC,KAAK,EAAE,YAAY,CAAC,GAAG,CAAC,CAAC;IACjE,CAAC,EAAE,CAAC,YAAY,EAAE,oBAAoB,CAAC,CAAC,CAAC;IAEzC,MAAM,SAAS,GAAG,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI,CAAC;IACtE,MAAM,QAAQ,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC;IAElE,MAAM,EAAE,GAAG,CAAC,GAAG,KAAwC,EAAE,EAAE,CACvD,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;IAE3C,MAAM,sBAAsB,GAAwB;QAChD,MAAM,EAAE,SAAS;QACjB,KAAK,EAAE,QAAQ;QACf,SAAS,EAAE,MAAM;QACjB,SAAS,EAAE,QAAQ;QACnB,QAAQ,EAAE,UAAU;QACpB,GAAG,cAAc;KACpB,CAAC;IAEF,MAAM,kBAAkB,GAAwB;QAC5C,QAAQ,EAAE,UAAU;QACpB,MAAM,EAAE,WAAW,IAAI,CAAC;QACxB,KAAK,EAAE,MAAM;QACb,GAAG,UAAU;KAChB,CAAC;IAEF,IAAI,CAAC,OAAO,EAAE,CAAC;QACX,OAAO,CACH,cACI,GAAG,EAAE,YAAY,EACjB,SAAS,EAAE,EAAE,CAAC,2BAA2B,EAAE,kBAAkB,CAAC,EAC9D,KAAK,EAAE,sBAAsB,EAC7B,QAAQ,EAAE,YAAY,YAEtB,cACI,SAAS,EAAE,EAAE,CAAC,uBAAuB,EAAE,cAAc,CAAC,EACtD,KAAK,EAAE,kBAAkB,GAC3B,GACA,CACT,CAAC;IACN,CAAC;IAED,MAAM,YAAY,GAAsB,EAAE,CAAC;IAC3C,KAAK,IAAI,CAAC,GAAG,YAAY,CAAC,KAAK,EAAE,CAAC,IAAI,YAAY,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;QAC1D,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;YAC7B,YAAY,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACtE,CAAC;IACL,CAAC;IAED,OAAO,CACH,cACI,GAAG,EAAE,YAAY,EACjB,SAAS,EAAE,EAAE,CAAC,2BAA2B,EAAE,kBAAkB,CAAC,EAC9D,KAAK,EAAE,sBAAsB,EAC7B,QAAQ,EAAE,YAAY,YAEtB,cACI,SAAS,EAAE,EAAE,CAAC,uBAAuB,EAAE,cAAc,CAAC,EACtD,KAAK,EAAE,kBAAkB,YAExB,YAAY,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;gBACxB,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;gBAChC,MAAM,GAAG,GAAG,UAAU;oBAClB,CAAC,CAAC,cAAc,CAAC,KAAK,CAAC,KAAK,CAAC;oBAC7B,CAAC,CAAC,gBAAgB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;gBAEpC,IAAI,CAAC,IAAI,IAAI,CAAC,GAAG;oBAAE,OAAO,IAAI,CAAC;gBAE/B,MAAM,iBAAiB,GAAwB;oBAC3C,GAAG,SAAS;oBACZ,QAAQ,EAAE,UAAU;oBACpB,GAAG,EAAE,GAAG,GAAG,CAAC,CAAC,IAAI;oBACjB,IAAI,EAAE,GAAG,GAAG,CAAC,CAAC,IAAI;oBAClB,KAAK,EAAE,GAAG,GAAG,CAAC,KAAK,IAAI;oBACvB,MAAM,EAAE,GAAG,GAAG,CAAC,MAAM,IAAI;oBACzB,SAAS,EAAE,YAAY;iBAC1B,CAAC;gBAEF,OAAO,CACH,uCAE2B,KAAK,CAAC,KAAK,EAClC,SAAS,EAAE,EAAE,CAAC,sBAAsB,EAAE,aAAa,CAAC,EACpD,KAAK,EAAE,iBAAiB,YAEvB,UAAU,CAAC;wBACR,IAAI;wBACJ,KAAK,EAAE,KAAK,CAAC,KAAK;wBAClB,WAAW;qBACd,CAAC,IATG,KAAK,CAAC,GAAG,CAUZ,CACT,CAAC;YACN,CAAC,CAAC,GACA,GACJ,CACT,CAAC;AACN,CAAC,CACJ,CAAC;AAEF,WAAW,CAAC,WAAW,GAAG,aAAa,CAAC"}
@@ -1,8 +1,4 @@
1
1
  import React from 'react';
2
2
  import { VirtualListProps } from '../types';
3
- /**
4
- * VirtualList Component
5
- * Drop-in replacement for long lists with virtualization support
6
- */
7
3
  export declare const VirtualList: React.ForwardRefExoticComponent<VirtualListProps<any> & React.RefAttributes<HTMLDivElement>>;
8
4
  //# sourceMappingURL=VirtualList.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"VirtualList.d.ts","sourceRoot":"","sources":["../../src/components/VirtualList.tsx"],"names":[],"mappings":"AAAA,OAAO,KAKN,MAAM,OAAO,CAAC;AAGf,OAAO,EACH,gBAAgB,EAEnB,MAAM,UAAU,CAAC;AAElB;;;GAGG;AACH,eAAO,MAAM,WAAW,8FAoPvB,CAAC"}
1
+ {"version":3,"file":"VirtualList.d.ts","sourceRoot":"","sources":["../../src/components/VirtualList.tsx"],"names":[],"mappings":"AAAA,OAAO,KAKN,MAAM,OAAO,CAAC;AAGf,OAAO,EACH,gBAAgB,EAEnB,MAAM,UAAU,CAAC;AAElB,eAAO,MAAM,WAAW,8FA4RvB,CAAC"}