react-virtual-renderer 1.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +170 -0
- package/dist/App.d.ts +3 -0
- package/dist/App.d.ts.map +1 -0
- package/dist/App.js +7 -0
- package/dist/App.js.map +1 -0
- package/dist/accessibility/a11y.d.ts +111 -0
- package/dist/accessibility/a11y.d.ts.map +1 -0
- package/dist/accessibility/a11y.js +254 -0
- package/dist/accessibility/a11y.js.map +1 -0
- package/dist/components/VirtualGrid.d.ts +8 -0
- package/dist/components/VirtualGrid.d.ts.map +1 -0
- package/dist/components/VirtualGrid.js +187 -0
- package/dist/components/VirtualGrid.js.map +1 -0
- package/dist/components/VirtualList.d.ts +8 -0
- package/dist/components/VirtualList.d.ts.map +1 -0
- package/dist/components/VirtualList.js +102 -0
- package/dist/components/VirtualList.js.map +1 -0
- package/dist/core/MeasurementSystem.d.ts +52 -0
- package/dist/core/MeasurementSystem.d.ts.map +1 -0
- package/dist/core/MeasurementSystem.js +138 -0
- package/dist/core/MeasurementSystem.js.map +1 -0
- package/dist/core/VirtualizationEngine.d.ts +65 -0
- package/dist/core/VirtualizationEngine.d.ts.map +1 -0
- package/dist/core/VirtualizationEngine.js +203 -0
- package/dist/core/VirtualizationEngine.js.map +1 -0
- package/dist/examples/AdvancedExamples.d.ts +24 -0
- package/dist/examples/AdvancedExamples.d.ts.map +1 -0
- package/dist/examples/AdvancedExamples.js +216 -0
- package/dist/examples/AdvancedExamples.js.map +1 -0
- package/dist/examples/Example.d.ts +26 -0
- package/dist/examples/Example.d.ts.map +1 -0
- package/dist/examples/Example.js +186 -0
- package/dist/examples/Example.js.map +1 -0
- package/dist/hooks/useInfiniteScroll.d.ts +17 -0
- package/dist/hooks/useInfiniteScroll.d.ts.map +1 -0
- package/dist/hooks/useInfiniteScroll.js +41 -0
- package/dist/hooks/useInfiniteScroll.js.map +1 -0
- package/dist/hooks/useLazyLoad.d.ts +16 -0
- package/dist/hooks/useLazyLoad.d.ts.map +1 -0
- package/dist/hooks/useLazyLoad.js +34 -0
- package/dist/hooks/useLazyLoad.js.map +1 -0
- package/dist/hooks/useScrollRestoration.d.ts +10 -0
- package/dist/hooks/useScrollRestoration.d.ts.map +1 -0
- package/dist/hooks/useScrollRestoration.js +63 -0
- package/dist/hooks/useScrollRestoration.js.map +1 -0
- package/dist/hooks/useVirtualList.d.ts +33 -0
- package/dist/hooks/useVirtualList.d.ts.map +1 -0
- package/dist/hooks/useVirtualList.js +226 -0
- package/dist/hooks/useVirtualList.js.map +1 -0
- package/dist/hooks/useVirtualizedSearch.d.ts +40 -0
- package/dist/hooks/useVirtualizedSearch.d.ts.map +1 -0
- package/dist/hooks/useVirtualizedSearch.js +168 -0
- package/dist/hooks/useVirtualizedSearch.js.map +1 -0
- package/dist/index.d.ts +11 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.esm.js +11 -0
- package/dist/index.esm.js.map +1 -0
- package/dist/index.js +11 -0
- package/dist/index.js.map +1 -0
- package/dist/main.d.ts +2 -0
- package/dist/main.d.ts.map +1 -0
- package/dist/main.js +6 -0
- package/dist/main.js.map +1 -0
- package/dist/performance/metrics.d.ts +110 -0
- package/dist/performance/metrics.d.ts.map +1 -0
- package/dist/performance/metrics.js +310 -0
- package/dist/performance/metrics.js.map +1 -0
- package/dist/plugin.d.ts +182 -0
- package/dist/plugin.d.ts.map +1 -0
- package/dist/plugin.js +409 -0
- package/dist/plugin.js.map +1 -0
- package/dist/types.d.ts +84 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/dist/utils/helpers.d.ts +66 -0
- package/dist/utils/helpers.d.ts.map +1 -0
- package/dist/utils/helpers.js +166 -0
- package/dist/utils/helpers.js.map +1 -0
- package/package.json +111 -0
|
@@ -0,0 +1,203 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Core virtualization engine
|
|
3
|
+
* Handles:
|
|
4
|
+
* - visible range calculation
|
|
5
|
+
* - dynamic item sizing
|
|
6
|
+
* - item measurements
|
|
7
|
+
* - scroll positioning
|
|
8
|
+
*/
|
|
9
|
+
export class VirtualizationEngine {
|
|
10
|
+
constructor(estimatedItemSize = 35) {
|
|
11
|
+
Object.defineProperty(this, "itemSizeMap", {
|
|
12
|
+
enumerable: true,
|
|
13
|
+
configurable: true,
|
|
14
|
+
writable: true,
|
|
15
|
+
value: {}
|
|
16
|
+
});
|
|
17
|
+
Object.defineProperty(this, "itemOffsets", {
|
|
18
|
+
enumerable: true,
|
|
19
|
+
configurable: true,
|
|
20
|
+
writable: true,
|
|
21
|
+
value: [0]
|
|
22
|
+
});
|
|
23
|
+
Object.defineProperty(this, "totalSize", {
|
|
24
|
+
enumerable: true,
|
|
25
|
+
configurable: true,
|
|
26
|
+
writable: true,
|
|
27
|
+
value: 0
|
|
28
|
+
});
|
|
29
|
+
Object.defineProperty(this, "estimatedItemSize", {
|
|
30
|
+
enumerable: true,
|
|
31
|
+
configurable: true,
|
|
32
|
+
writable: true,
|
|
33
|
+
value: void 0
|
|
34
|
+
});
|
|
35
|
+
this.estimatedItemSize = estimatedItemSize;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Record measured item size
|
|
39
|
+
*/
|
|
40
|
+
recordItemSize(index, size) {
|
|
41
|
+
if (this.itemSizeMap[index] === size) {
|
|
42
|
+
return;
|
|
43
|
+
}
|
|
44
|
+
this.itemSizeMap[index] = size;
|
|
45
|
+
this.recalculateOffsets();
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Recalculate item offsets
|
|
49
|
+
*/
|
|
50
|
+
recalculateOffsets() {
|
|
51
|
+
let offset = 0;
|
|
52
|
+
this.itemOffsets = [0];
|
|
53
|
+
const indexes = Object.keys(this.itemSizeMap)
|
|
54
|
+
.map(Number)
|
|
55
|
+
.sort((a, b) => a - b);
|
|
56
|
+
for (const index of indexes) {
|
|
57
|
+
const size = this.itemSizeMap[index] ??
|
|
58
|
+
this.estimatedItemSize;
|
|
59
|
+
offset += size;
|
|
60
|
+
this.itemOffsets[index + 1] = offset;
|
|
61
|
+
}
|
|
62
|
+
this.totalSize = offset;
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Get item size
|
|
66
|
+
*/
|
|
67
|
+
getItemSize(index) {
|
|
68
|
+
return (this.itemSizeMap[index] ??
|
|
69
|
+
this.estimatedItemSize);
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Get item offset
|
|
73
|
+
*/
|
|
74
|
+
getItemOffset(index) {
|
|
75
|
+
if (this.itemOffsets[index] !== undefined) {
|
|
76
|
+
return this.itemOffsets[index];
|
|
77
|
+
}
|
|
78
|
+
let offset = 0;
|
|
79
|
+
for (let i = 0; i < index; i++) {
|
|
80
|
+
offset += this.getItemSize(i);
|
|
81
|
+
}
|
|
82
|
+
return offset;
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Get total size
|
|
86
|
+
*/
|
|
87
|
+
getTotalSize() {
|
|
88
|
+
return this.totalSize;
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Calculate visible range
|
|
92
|
+
*/
|
|
93
|
+
getVisibleRange(scrollOffset, containerSize, itemCount, overscan = 5, scrollDirection = 'forward') {
|
|
94
|
+
/**
|
|
95
|
+
* Reverse scrolling support
|
|
96
|
+
*/
|
|
97
|
+
if (scrollDirection === 'reverse') {
|
|
98
|
+
return this.getVisibleRangeReverse(scrollOffset, containerSize, itemCount, overscan);
|
|
99
|
+
}
|
|
100
|
+
let startIndex = 0;
|
|
101
|
+
let endIndex = itemCount - 1;
|
|
102
|
+
/**
|
|
103
|
+
* Find start index
|
|
104
|
+
*/
|
|
105
|
+
for (let i = 0; i < itemCount; i++) {
|
|
106
|
+
const itemOffset = this.getItemOffset(i);
|
|
107
|
+
const itemSize = this.getItemSize(i);
|
|
108
|
+
if (itemOffset + itemSize >=
|
|
109
|
+
scrollOffset) {
|
|
110
|
+
startIndex = i;
|
|
111
|
+
break;
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Find end index
|
|
116
|
+
*/
|
|
117
|
+
for (let i = startIndex; i < itemCount; i++) {
|
|
118
|
+
const itemOffset = this.getItemOffset(i);
|
|
119
|
+
if (itemOffset >=
|
|
120
|
+
scrollOffset + containerSize) {
|
|
121
|
+
endIndex = i;
|
|
122
|
+
break;
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
return {
|
|
126
|
+
startIndex: Math.max(0, startIndex - overscan),
|
|
127
|
+
endIndex: Math.min(itemCount - 1, endIndex + overscan),
|
|
128
|
+
overscanStartIndex: startIndex,
|
|
129
|
+
overscanEndIndex: endIndex,
|
|
130
|
+
};
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Reverse scrolling support
|
|
134
|
+
*/
|
|
135
|
+
getVisibleRangeReverse(scrollOffset, containerSize, itemCount, overscan) {
|
|
136
|
+
const totalSize = this.getTotalSize();
|
|
137
|
+
const reversedScrollOffset = Math.max(0, totalSize -
|
|
138
|
+
scrollOffset -
|
|
139
|
+
containerSize);
|
|
140
|
+
return this.getVisibleRange(reversedScrollOffset, containerSize, itemCount, overscan, 'forward');
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* Get visible items
|
|
144
|
+
*/
|
|
145
|
+
getVisibleItems(scrollOffset, containerSize, itemCount, overscan, scrollDirection = 'forward') {
|
|
146
|
+
const range = this.getVisibleRange(scrollOffset, containerSize, itemCount, overscan, scrollDirection);
|
|
147
|
+
const visibleItems = [];
|
|
148
|
+
for (let i = range.startIndex; i <= range.endIndex &&
|
|
149
|
+
i < itemCount; i++) {
|
|
150
|
+
visibleItems.push({
|
|
151
|
+
index: i,
|
|
152
|
+
size: this.getItemSize(i),
|
|
153
|
+
offset: this.getItemOffset(i),
|
|
154
|
+
});
|
|
155
|
+
}
|
|
156
|
+
return visibleItems;
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* Scroll offset for item index
|
|
160
|
+
*/
|
|
161
|
+
getScrollOffsetForIndex(index, containerSize, alignment = 'start') {
|
|
162
|
+
const itemOffset = this.getItemOffset(index);
|
|
163
|
+
const itemSize = this.getItemSize(index);
|
|
164
|
+
switch (alignment) {
|
|
165
|
+
case 'center':
|
|
166
|
+
return Math.max(0, itemOffset -
|
|
167
|
+
(containerSize -
|
|
168
|
+
itemSize) /
|
|
169
|
+
2);
|
|
170
|
+
case 'end':
|
|
171
|
+
return Math.max(0, itemOffset -
|
|
172
|
+
containerSize +
|
|
173
|
+
itemSize);
|
|
174
|
+
case 'start':
|
|
175
|
+
default:
|
|
176
|
+
return Math.max(0, itemOffset);
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
/**
|
|
180
|
+
* Clear cache
|
|
181
|
+
*/
|
|
182
|
+
clearCache() {
|
|
183
|
+
this.itemSizeMap = {};
|
|
184
|
+
this.itemOffsets = [0];
|
|
185
|
+
this.totalSize = 0;
|
|
186
|
+
}
|
|
187
|
+
/**
|
|
188
|
+
* Get cache
|
|
189
|
+
*/
|
|
190
|
+
getCache() {
|
|
191
|
+
return {
|
|
192
|
+
...this.itemSizeMap,
|
|
193
|
+
};
|
|
194
|
+
}
|
|
195
|
+
/**
|
|
196
|
+
* Adaptive overscan
|
|
197
|
+
*/
|
|
198
|
+
getAdaptiveOverscan(scrollVelocity, baseOverscan = 5) {
|
|
199
|
+
const velocityFactor = Math.min(3, Math.max(1, scrollVelocity / 10));
|
|
200
|
+
return Math.ceil(baseOverscan * velocityFactor);
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
//# sourceMappingURL=VirtualizationEngine.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"VirtualizationEngine.js","sourceRoot":"","sources":["../../src/core/VirtualizationEngine.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ADVANCED EXAMPLE 1: E-Commerce Product Catalog with Infinite Scroll
|
|
3
|
+
*/
|
|
4
|
+
export declare function EcommerceCatalogExample(): import("react/jsx-runtime").JSX.Element;
|
|
5
|
+
/**
|
|
6
|
+
* ADVANCED EXAMPLE 2: Search with Highlights and Filtering
|
|
7
|
+
*/
|
|
8
|
+
export declare function SearchableListExample(): import("react/jsx-runtime").JSX.Element;
|
|
9
|
+
/**
|
|
10
|
+
* ADVANCED EXAMPLE 3: Real-Time Stock Market Ticker (Dynamic Updates)
|
|
11
|
+
*/
|
|
12
|
+
export declare function StockTickerExample(): import("react/jsx-runtime").JSX.Element;
|
|
13
|
+
/**
|
|
14
|
+
* ADVANCED EXAMPLE 4: Collapsible Rows (Expandable Details)
|
|
15
|
+
*/
|
|
16
|
+
export declare function CollapsibleRowsExample(): import("react/jsx-runtime").JSX.Element;
|
|
17
|
+
/**
|
|
18
|
+
* ADVANCED EXAMPLE 5: Comments Thread (Nested Structure)
|
|
19
|
+
*/
|
|
20
|
+
export declare function CommentThreadExample(): import("react/jsx-runtime").JSX.Element;
|
|
21
|
+
/**
|
|
22
|
+
* Main Demo Component
|
|
23
|
+
*/
|
|
24
|
+
//# sourceMappingURL=AdvancedExamples.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AdvancedExamples.d.ts","sourceRoot":"","sources":["../../src/examples/AdvancedExamples.tsx"],"names":[],"mappings":"AAIA;;GAEG;AACH,wBAAgB,uBAAuB,4CA4FtC;AAED;;GAEG;AACH,wBAAgB,qBAAqB,4CA2EpC;AAED;;GAEG;AACH,wBAAgB,kBAAkB,4CAoEjC;AAED;;GAEG;AACH,wBAAgB,sBAAsB,4CAiHrC;AAED;;GAEG;AACH,wBAAgB,oBAAoB,4CA4EnC;AAED;;GAEG"}
|
|
@@ -0,0 +1,216 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useState, useEffect } from 'react';
|
|
3
|
+
import { useInfiniteScroll, useVirtualizedSearch } from '../index';
|
|
4
|
+
import { VirtualGrid, VirtualList } from '..';
|
|
5
|
+
/**
|
|
6
|
+
* ADVANCED EXAMPLE 1: E-Commerce Product Catalog with Infinite Scroll
|
|
7
|
+
*/
|
|
8
|
+
export function EcommerceCatalogExample() {
|
|
9
|
+
const [products, setProducts] = useState(Array.from({ length: 100 }, (_, i) => ({
|
|
10
|
+
id: i,
|
|
11
|
+
name: `Product ${i}`,
|
|
12
|
+
price: Math.random() * 1000,
|
|
13
|
+
image: `https://picsum.photos/300/300?random=${i}`,
|
|
14
|
+
rating: (Math.random() * 5).toFixed(1),
|
|
15
|
+
})));
|
|
16
|
+
const [isLoadingMore, setIsLoadingMore] = useState(false);
|
|
17
|
+
const [hasMore, setHasMore] = useState(true);
|
|
18
|
+
const { containerRef } = useInfiniteScroll({
|
|
19
|
+
onLoadMore: async () => {
|
|
20
|
+
setIsLoadingMore(true);
|
|
21
|
+
// Simulate API call
|
|
22
|
+
await new Promise(resolve => setTimeout(resolve, 500));
|
|
23
|
+
const newProducts = Array.from({ length: 50 }, (_, i) => ({
|
|
24
|
+
id: products.length + i,
|
|
25
|
+
name: `Product ${products.length + i}`,
|
|
26
|
+
price: Math.random() * 1000,
|
|
27
|
+
image: `https://picsum.photos/300/300?random=${products.length + i}`,
|
|
28
|
+
rating: (Math.random() * 5).toFixed(1),
|
|
29
|
+
}));
|
|
30
|
+
setProducts([...products, ...newProducts]);
|
|
31
|
+
setIsLoadingMore(false);
|
|
32
|
+
// Stop at 1000 products
|
|
33
|
+
if (products.length > 1000) {
|
|
34
|
+
setHasMore(false);
|
|
35
|
+
}
|
|
36
|
+
},
|
|
37
|
+
threshold: 1000,
|
|
38
|
+
});
|
|
39
|
+
return (_jsxs("div", { style: { padding: 20 }, children: [_jsx("h2", { children: "E-Commerce Catalog (Infinite Scroll)" }), _jsxs("p", { children: ["Showing ", products.length, " products \u2022 ", hasMore ? 'Loading more...' : 'No more products'] }), _jsx(VirtualGrid, { ref: containerRef, items: products, height: 600, width: 800, columnCount: 4, gap: 16, renderItem: ({ item, isScrolling }) => (_jsxs("div", { style: {
|
|
40
|
+
border: '1px solid #ddd',
|
|
41
|
+
borderRadius: 8,
|
|
42
|
+
overflow: 'hidden',
|
|
43
|
+
opacity: isScrolling ? 0.7 : 1,
|
|
44
|
+
cursor: 'pointer',
|
|
45
|
+
transition: 'transform 0.2s',
|
|
46
|
+
}, onMouseEnter: (e) => {
|
|
47
|
+
e.currentTarget.style.transform = 'scale(1.05)';
|
|
48
|
+
}, onMouseLeave: (e) => {
|
|
49
|
+
e.currentTarget.style.transform = 'scale(1)';
|
|
50
|
+
}, children: [_jsx("img", { src: item.image, alt: item.name, style: { width: '100%', height: 250, objectFit: 'cover' } }), _jsxs("div", { style: { padding: 12 }, children: [_jsx("h4", { style: { margin: '0 0 8px' }, children: item.name }), _jsxs("div", { style: { display: 'flex', justifyContent: 'space-between', alignItems: 'center' }, children: [_jsxs("span", { style: { fontSize: 18, fontWeight: 'bold', color: '#e74c3c' }, children: ["$", item.price.toFixed(2)] }), _jsxs("span", { style: { color: '#f39c12' }, children: ["\u2605 ", item.rating] })] })] })] })) }), isLoadingMore && (_jsx("div", { style: { textAlign: 'center', padding: 20 }, children: _jsx("div", { style: { display: 'inline-block' }, children: "\u23F3 Loading more products..." }) }))] }));
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* ADVANCED EXAMPLE 2: Search with Highlights and Filtering
|
|
54
|
+
*/
|
|
55
|
+
export function SearchableListExample() {
|
|
56
|
+
const [searchValue, setSearchValue] = useState('');
|
|
57
|
+
const items = Array.from({ length: 1000 }, (_, i) => ({
|
|
58
|
+
id: i,
|
|
59
|
+
title: `Item ${i}`,
|
|
60
|
+
description: `Description for item ${i}. Contains various keywords and content.`,
|
|
61
|
+
tags: ['react', 'virtualization', 'performance', 'typescript'].filter(() => Math.random() > 0.5),
|
|
62
|
+
}));
|
|
63
|
+
const { filteredItems, highlightMatch, resultCount } = useVirtualizedSearch({
|
|
64
|
+
items,
|
|
65
|
+
searchValue,
|
|
66
|
+
searchFields: ['title', 'description'],
|
|
67
|
+
});
|
|
68
|
+
return (_jsxs("div", { style: { padding: 20 }, children: [_jsx("h2", { children: "Searchable List with Highlighting" }), _jsx("input", { type: "text", placeholder: "Search items...", value: searchValue, onChange: (e) => setSearchValue(e.target.value), style: {
|
|
69
|
+
width: '100%',
|
|
70
|
+
padding: '12px',
|
|
71
|
+
fontSize: 16,
|
|
72
|
+
marginBottom: 12,
|
|
73
|
+
border: '1px solid #ddd',
|
|
74
|
+
borderRadius: 4,
|
|
75
|
+
} }), _jsxs("p", { children: ["Found ", resultCount, " results"] }), _jsx(VirtualList, { items: filteredItems, height: 400, width: 600, estimatedItemSize: 80, renderItem: ({ item, index }) => (_jsxs("div", { style: {
|
|
76
|
+
padding: 12,
|
|
77
|
+
borderBottom: '1px solid #eee',
|
|
78
|
+
backgroundColor: index % 2 === 0 ? 'white' : '#f9f9f9',
|
|
79
|
+
}, children: [_jsx("h4", { style: { margin: '0 0 4px' }, children: highlightMatch(item.title) }), _jsxs("p", { style: { margin: '4px 0', fontSize: 14, color: '#666' }, children: [highlightMatch(item.description.substring(0, 80)), "..."] }), _jsx("div", { style: { display: 'flex', gap: 4, flexWrap: 'wrap', marginTop: 4 }, children: item.tags.map((tag) => (_jsx("span", { style: {
|
|
80
|
+
padding: '2px 6px',
|
|
81
|
+
backgroundColor: '#e3f2fd',
|
|
82
|
+
borderRadius: 3,
|
|
83
|
+
fontSize: 12,
|
|
84
|
+
}, children: tag }, tag))) })] })) })] }));
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* ADVANCED EXAMPLE 3: Real-Time Stock Market Ticker (Dynamic Updates)
|
|
88
|
+
*/
|
|
89
|
+
export function StockTickerExample() {
|
|
90
|
+
const [stocks, setStocks] = useState(Array.from({ length: 50 }, (_, i) => ({
|
|
91
|
+
id: i,
|
|
92
|
+
symbol: `STOCK${i}`,
|
|
93
|
+
price: Math.random() * 500,
|
|
94
|
+
change: (Math.random() - 0.5) * 10,
|
|
95
|
+
volume: Math.floor(Math.random() * 1000000),
|
|
96
|
+
})));
|
|
97
|
+
useEffect(() => {
|
|
98
|
+
// Simulate real-time price updates
|
|
99
|
+
const interval = setInterval(() => {
|
|
100
|
+
setStocks((prevStocks) => prevStocks.map((stock) => ({
|
|
101
|
+
...stock,
|
|
102
|
+
price: stock.price + (Math.random() - 0.5) * 5,
|
|
103
|
+
change: stock.change + (Math.random() - 0.5) * 2,
|
|
104
|
+
volume: Math.floor(Math.random() * 1000000),
|
|
105
|
+
})));
|
|
106
|
+
}, 1000);
|
|
107
|
+
return () => clearInterval(interval);
|
|
108
|
+
}, []);
|
|
109
|
+
return (_jsxs("div", { style: { padding: 20 }, children: [_jsx("h2", { children: "Real-Time Stock Ticker (Dynamic Updates)" }), _jsx(VirtualList, { items: stocks, height: 500, width: 600, estimatedItemSize: 50, renderItem: ({ item }) => {
|
|
110
|
+
const isPositive = item.change >= 0;
|
|
111
|
+
return (_jsxs("div", { style: {
|
|
112
|
+
display: 'flex',
|
|
113
|
+
padding: 12,
|
|
114
|
+
borderBottom: '1px solid #eee',
|
|
115
|
+
backgroundColor: isPositive ? 'rgba(76, 175, 80, 0.1)' : 'rgba(244, 67, 54, 0.1)',
|
|
116
|
+
}, children: [_jsx("div", { style: { flex: 0.2, fontWeight: 'bold' }, children: item.symbol }), _jsxs("div", { style: { flex: 0.3 }, children: ["$", item.price.toFixed(2)] }), _jsxs("div", { style: {
|
|
117
|
+
flex: 0.2,
|
|
118
|
+
color: isPositive ? '#4caf50' : '#f44336',
|
|
119
|
+
fontWeight: 'bold',
|
|
120
|
+
}, children: [isPositive ? '+' : '', item.change.toFixed(2), "%"] }), _jsxs("div", { style: { flex: 0.3, textAlign: 'right' }, children: ["Vol: ", (item.volume / 1000000).toFixed(2), "M"] })] }));
|
|
121
|
+
} })] }));
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* ADVANCED EXAMPLE 4: Collapsible Rows (Expandable Details)
|
|
125
|
+
*/
|
|
126
|
+
export function CollapsibleRowsExample() {
|
|
127
|
+
const [expandedIds, setExpandedIds] = useState(new Set());
|
|
128
|
+
const rows = Array.from({ length: 200 }, (_, i) => ({
|
|
129
|
+
id: i,
|
|
130
|
+
name: `Order #${1000 + i}`,
|
|
131
|
+
customer: `Customer ${i}`,
|
|
132
|
+
total: Math.random() * 10000,
|
|
133
|
+
date: new Date(Date.now() - Math.random() * 365 * 24 * 60 * 60 * 1000).toLocaleDateString(),
|
|
134
|
+
status: ['pending', 'shipped', 'delivered'][Math.floor(Math.random() * 3)],
|
|
135
|
+
items: [
|
|
136
|
+
{ product: 'Item 1', qty: 2, price: 50 },
|
|
137
|
+
{ product: 'Item 2', qty: 1, price: 150 },
|
|
138
|
+
],
|
|
139
|
+
}));
|
|
140
|
+
const getRowHeight = (index) => {
|
|
141
|
+
const isExpanded = expandedIds.has(rows[index].id);
|
|
142
|
+
return isExpanded ? 180 : 50;
|
|
143
|
+
};
|
|
144
|
+
const toggleExpand = (id) => {
|
|
145
|
+
const newExpanded = new Set(expandedIds);
|
|
146
|
+
if (newExpanded.has(id)) {
|
|
147
|
+
newExpanded.delete(id);
|
|
148
|
+
}
|
|
149
|
+
else {
|
|
150
|
+
newExpanded.add(id);
|
|
151
|
+
}
|
|
152
|
+
setExpandedIds(newExpanded);
|
|
153
|
+
};
|
|
154
|
+
return (_jsxs("div", { style: { padding: 20 }, children: [_jsx("h2", { children: "Collapsible Rows (Expandable Details)" }), _jsx(VirtualList, { items: rows, height: 500, width: 600, getItemSize: getRowHeight, estimatedItemSize: 50, renderItem: ({ item, index }) => {
|
|
155
|
+
const isExpanded = expandedIds.has(item.id);
|
|
156
|
+
return (_jsxs("div", { style: {
|
|
157
|
+
borderBottom: '1px solid #ddd',
|
|
158
|
+
backgroundColor: index % 2 === 0 ? 'white' : '#f9f9f9',
|
|
159
|
+
}, children: [_jsxs("div", { style: {
|
|
160
|
+
display: 'flex',
|
|
161
|
+
padding: 12,
|
|
162
|
+
cursor: 'pointer',
|
|
163
|
+
alignItems: 'center',
|
|
164
|
+
}, onClick: () => toggleExpand(item.id), children: [_jsx("span", { style: { marginRight: 8 }, children: isExpanded ? '▼' : '▶' }), _jsxs("div", { style: { flex: 0.3 }, children: [_jsx("strong", { children: item.name }), _jsx("br", {}), _jsx("small", { children: item.customer })] }), _jsxs("div", { style: { flex: 0.2 }, children: ["$", item.total.toFixed(2)] }), _jsx("div", { style: { flex: 0.2 }, children: item.date }), _jsx("div", { style: { flex: 0.2 }, children: _jsx("span", { style: {
|
|
165
|
+
padding: '4px 8px',
|
|
166
|
+
backgroundColor: item.status === 'delivered'
|
|
167
|
+
? '#4caf50'
|
|
168
|
+
: item.status === 'shipped'
|
|
169
|
+
? '#2196f3'
|
|
170
|
+
: '#ff9800',
|
|
171
|
+
color: 'white',
|
|
172
|
+
borderRadius: 3,
|
|
173
|
+
fontSize: 12,
|
|
174
|
+
}, children: item.status }) })] }), isExpanded && (_jsxs("div", { style: { padding: '0 12px 12px', backgroundColor: '#f5f5f5' }, children: [_jsx("h4", { style: { marginTop: 0 }, children: "Order Items:" }), item.items.map((lineItem, idx) => (_jsxs("div", { style: {
|
|
175
|
+
display: 'flex',
|
|
176
|
+
padding: 8,
|
|
177
|
+
borderBottom: '1px solid #ddd',
|
|
178
|
+
}, children: [_jsx("div", { style: { flex: 1 }, children: lineItem.product }), _jsxs("div", { style: { flex: 0.2 }, children: ["Qty: ", lineItem.qty] }), _jsxs("div", { style: { flex: 0.2 }, children: ["$", lineItem.price] })] }, idx)))] }))] }));
|
|
179
|
+
} })] }));
|
|
180
|
+
}
|
|
181
|
+
/**
|
|
182
|
+
* ADVANCED EXAMPLE 5: Comments Thread (Nested Structure)
|
|
183
|
+
*/
|
|
184
|
+
export function CommentThreadExample() {
|
|
185
|
+
const [comments] = useState(Array.from({ length: 100 }, (_, i) => ({
|
|
186
|
+
id: i,
|
|
187
|
+
author: `User ${i}`,
|
|
188
|
+
text: `This is a comment about the post. Comment #${i}`,
|
|
189
|
+
timestamp: new Date(Date.now() - Math.random() * 30 * 24 * 60 * 60 * 1000),
|
|
190
|
+
likes: Math.floor(Math.random() * 500),
|
|
191
|
+
replies: i % 3 === 0 ? Array.from({ length: 2 }, (_, j) => ({
|
|
192
|
+
id: i * 100 + j,
|
|
193
|
+
author: `Reply User ${j}`,
|
|
194
|
+
text: `Reply to comment ${i}`,
|
|
195
|
+
timestamp: new Date(),
|
|
196
|
+
likes: Math.floor(Math.random() * 50),
|
|
197
|
+
})) : undefined,
|
|
198
|
+
})));
|
|
199
|
+
// Flatten for virtualization
|
|
200
|
+
const flattenedComments = [];
|
|
201
|
+
comments.forEach((comment) => {
|
|
202
|
+
flattenedComments.push({ ...comment, level: 0 });
|
|
203
|
+
comment.replies?.forEach((reply) => {
|
|
204
|
+
flattenedComments.push({ ...reply, level: 1 });
|
|
205
|
+
});
|
|
206
|
+
});
|
|
207
|
+
return (_jsxs("div", { style: { padding: 20 }, children: [_jsx("h2", { children: "Comment Thread (Nested Structure)" }), _jsx(VirtualList, { items: flattenedComments, height: 500, width: 600, estimatedItemSize: 100, renderItem: ({ item }) => (_jsxs("div", { style: {
|
|
208
|
+
paddingLeft: item.level * 40,
|
|
209
|
+
paddingRight: 12,
|
|
210
|
+
paddingTop: 12,
|
|
211
|
+
paddingBottom: 12,
|
|
212
|
+
borderBottom: '1px solid #eee',
|
|
213
|
+
backgroundColor: item.level === 1 ? '#f9f9f9' : 'white',
|
|
214
|
+
}, children: [_jsxs("div", { style: { display: 'flex', justifyContent: 'space-between' }, children: [_jsx("strong", { children: item.author }), _jsx("small", { style: { color: '#666' }, children: item.timestamp.toLocaleDateString() })] }), _jsx("p", { style: { margin: '8px 0' }, children: item.text }), _jsxs("div", { style: { display: 'flex', gap: 16, fontSize: 12, color: '#666' }, children: [_jsxs("button", { style: { background: 'none', border: 'none', cursor: 'pointer' }, children: ["\uD83D\uDC4D Like (", item.likes, ")"] }), _jsx("button", { style: { background: 'none', border: 'none', cursor: 'pointer' }, children: "\uD83D\uDCAC Reply" })] })] })) })] }));
|
|
215
|
+
}
|
|
216
|
+
//# sourceMappingURL=AdvancedExamples.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AdvancedExamples.js","sourceRoot":"","sources":["../../src/examples/AdvancedExamples.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* EXAMPLE 1: Chat Interface with Reverse Scrolling
|
|
3
|
+
*/
|
|
4
|
+
export declare function ChatExample(): import("react/jsx-runtime").JSX.Element;
|
|
5
|
+
/**
|
|
6
|
+
* EXAMPLE 2: Data Table with Variable Row Heights
|
|
7
|
+
*/
|
|
8
|
+
export declare function DataTableExample(): import("react/jsx-runtime").JSX.Element;
|
|
9
|
+
/**
|
|
10
|
+
* EXAMPLE 3: Image Grid with Masonry Layout
|
|
11
|
+
*/
|
|
12
|
+
export declare function MasonryGridExample(): import("react/jsx-runtime").JSX.Element;
|
|
13
|
+
/**
|
|
14
|
+
* EXAMPLE 4: Traditional Grid Layout
|
|
15
|
+
*/
|
|
16
|
+
export declare function GridLayoutExample(): import("react/jsx-runtime").JSX.Element;
|
|
17
|
+
/**
|
|
18
|
+
* EXAMPLE 5: Using Hook Directly for Custom Layouts
|
|
19
|
+
*/
|
|
20
|
+
export declare function HookExample(): import("react/jsx-runtime").JSX.Element;
|
|
21
|
+
/**
|
|
22
|
+
* Main Demo Component
|
|
23
|
+
*/
|
|
24
|
+
export declare function VirtualizeDemo(): import("react/jsx-runtime").JSX.Element;
|
|
25
|
+
export default VirtualizeDemo;
|
|
26
|
+
//# sourceMappingURL=Example.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Example.d.ts","sourceRoot":"","sources":["../../src/examples/Example.tsx"],"names":[],"mappings":"AAMA;;GAEG;AACH,wBAAgB,WAAW,4CAsC1B;AAED;;GAEG;AACH,wBAAgB,gBAAgB,4CA+J/B;AAED;;GAEG;AACH,wBAAgB,kBAAkB,4CAyCjC;AAED;;GAEG;AACH,wBAAgB,iBAAiB,4CA2ChC;AAED;;GAEG;AACH,wBAAgB,WAAW,4CAkD1B;AAED;;GAEG;AACH,wBAAgB,cAAc,4CAmD7B;AAED,eAAe,cAAc,CAAC"}
|