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.
Files changed (80) hide show
  1. package/README.md +170 -0
  2. package/dist/App.d.ts +3 -0
  3. package/dist/App.d.ts.map +1 -0
  4. package/dist/App.js +7 -0
  5. package/dist/App.js.map +1 -0
  6. package/dist/accessibility/a11y.d.ts +111 -0
  7. package/dist/accessibility/a11y.d.ts.map +1 -0
  8. package/dist/accessibility/a11y.js +254 -0
  9. package/dist/accessibility/a11y.js.map +1 -0
  10. package/dist/components/VirtualGrid.d.ts +8 -0
  11. package/dist/components/VirtualGrid.d.ts.map +1 -0
  12. package/dist/components/VirtualGrid.js +187 -0
  13. package/dist/components/VirtualGrid.js.map +1 -0
  14. package/dist/components/VirtualList.d.ts +8 -0
  15. package/dist/components/VirtualList.d.ts.map +1 -0
  16. package/dist/components/VirtualList.js +102 -0
  17. package/dist/components/VirtualList.js.map +1 -0
  18. package/dist/core/MeasurementSystem.d.ts +52 -0
  19. package/dist/core/MeasurementSystem.d.ts.map +1 -0
  20. package/dist/core/MeasurementSystem.js +138 -0
  21. package/dist/core/MeasurementSystem.js.map +1 -0
  22. package/dist/core/VirtualizationEngine.d.ts +65 -0
  23. package/dist/core/VirtualizationEngine.d.ts.map +1 -0
  24. package/dist/core/VirtualizationEngine.js +203 -0
  25. package/dist/core/VirtualizationEngine.js.map +1 -0
  26. package/dist/examples/AdvancedExamples.d.ts +24 -0
  27. package/dist/examples/AdvancedExamples.d.ts.map +1 -0
  28. package/dist/examples/AdvancedExamples.js +216 -0
  29. package/dist/examples/AdvancedExamples.js.map +1 -0
  30. package/dist/examples/Example.d.ts +26 -0
  31. package/dist/examples/Example.d.ts.map +1 -0
  32. package/dist/examples/Example.js +186 -0
  33. package/dist/examples/Example.js.map +1 -0
  34. package/dist/hooks/useInfiniteScroll.d.ts +17 -0
  35. package/dist/hooks/useInfiniteScroll.d.ts.map +1 -0
  36. package/dist/hooks/useInfiniteScroll.js +41 -0
  37. package/dist/hooks/useInfiniteScroll.js.map +1 -0
  38. package/dist/hooks/useLazyLoad.d.ts +16 -0
  39. package/dist/hooks/useLazyLoad.d.ts.map +1 -0
  40. package/dist/hooks/useLazyLoad.js +34 -0
  41. package/dist/hooks/useLazyLoad.js.map +1 -0
  42. package/dist/hooks/useScrollRestoration.d.ts +10 -0
  43. package/dist/hooks/useScrollRestoration.d.ts.map +1 -0
  44. package/dist/hooks/useScrollRestoration.js +63 -0
  45. package/dist/hooks/useScrollRestoration.js.map +1 -0
  46. package/dist/hooks/useVirtualList.d.ts +33 -0
  47. package/dist/hooks/useVirtualList.d.ts.map +1 -0
  48. package/dist/hooks/useVirtualList.js +226 -0
  49. package/dist/hooks/useVirtualList.js.map +1 -0
  50. package/dist/hooks/useVirtualizedSearch.d.ts +40 -0
  51. package/dist/hooks/useVirtualizedSearch.d.ts.map +1 -0
  52. package/dist/hooks/useVirtualizedSearch.js +168 -0
  53. package/dist/hooks/useVirtualizedSearch.js.map +1 -0
  54. package/dist/index.d.ts +11 -0
  55. package/dist/index.d.ts.map +1 -0
  56. package/dist/index.esm.js +11 -0
  57. package/dist/index.esm.js.map +1 -0
  58. package/dist/index.js +11 -0
  59. package/dist/index.js.map +1 -0
  60. package/dist/main.d.ts +2 -0
  61. package/dist/main.d.ts.map +1 -0
  62. package/dist/main.js +6 -0
  63. package/dist/main.js.map +1 -0
  64. package/dist/performance/metrics.d.ts +110 -0
  65. package/dist/performance/metrics.d.ts.map +1 -0
  66. package/dist/performance/metrics.js +310 -0
  67. package/dist/performance/metrics.js.map +1 -0
  68. package/dist/plugin.d.ts +182 -0
  69. package/dist/plugin.d.ts.map +1 -0
  70. package/dist/plugin.js +409 -0
  71. package/dist/plugin.js.map +1 -0
  72. package/dist/types.d.ts +84 -0
  73. package/dist/types.d.ts.map +1 -0
  74. package/dist/types.js +2 -0
  75. package/dist/types.js.map +1 -0
  76. package/dist/utils/helpers.d.ts +66 -0
  77. package/dist/utils/helpers.d.ts.map +1 -0
  78. package/dist/utils/helpers.js +166 -0
  79. package/dist/utils/helpers.js.map +1 -0
  80. 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"}