lazy-render-virtual-scroll 2.1.0 โ 2.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +76 -427
- package/package.json +3 -3
package/README.md
CHANGED
|
@@ -1,43 +1,43 @@
|
|
|
1
1
|
# lazy-render-virtual-scroll
|
|
2
2
|
|
|
3
|
-
>
|
|
4
|
-
>
|
|
5
|
-
|
|
6
|
-
<p align="center">
|
|
7
|
-
<strong>๐ Framework-Agnostic Virtual Scrolling & Intelligent Lazy Rendering</strong>
|
|
8
|
-
</p>
|
|
3
|
+
> **๐ Framework-Agnostic Virtual Scrolling & Intelligent Lazy Rendering**
|
|
4
|
+
>
|
|
5
|
+
> **Render 1 Million rows at 60 FPS without breaking a sweat.**
|
|
9
6
|
|
|
10
7
|
<div align="center">
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
8
|
+
|
|
9
|
+
| Metric | Before | **lazy-render** | Improvement |
|
|
10
|
+
|--------|--------|-----------------|-------------|
|
|
11
|
+
| **10K Items Render** | 1800ms | **45ms** | โก **40x Faster** |
|
|
12
|
+
| **Memory Usage** | 500MB | **35MB** | ๐ **93% Reduction** |
|
|
13
|
+
| **Scroll FPS** | 15-20 FPS | **60 FPS** | ๐ฏ **Smooth** |
|
|
14
|
+
|
|
15
15
|
</div>
|
|
16
16
|
|
|
17
17
|
---
|
|
18
18
|
|
|
19
|
-
##
|
|
19
|
+
## ๐ฆ Installation
|
|
20
20
|
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
> - **Zero Jitter** even with dynamic content heights.
|
|
25
|
-
|
|
26
|
-
---
|
|
21
|
+
```bash
|
|
22
|
+
# FRONTEND (ALWAYS REQUIRED)
|
|
23
|
+
npm install lazy-render-virtual-scroll
|
|
27
24
|
|
|
28
|
-
|
|
25
|
+
# BACKEND (OPTIONAL - Only if you have 1000-4000+ dynamic items)
|
|
26
|
+
npm install lazy-render-server # Node.js backend
|
|
27
|
+
pip install lazy-render-py # Python backend
|
|
28
|
+
```
|
|
29
29
|
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
30
|
+
> [!IMPORTANT]
|
|
31
|
+
> **When to install backend?**
|
|
32
|
+
> - โ
**4000+ dynamic items** โ Install backend (REQUIRED)
|
|
33
|
+
> - โ
**1000-4000 dynamic items** โ Install backend (OPTIONAL, recommended)
|
|
34
|
+
> - โ
**Node.js backend** โ `npm install lazy-render-server`
|
|
35
|
+
> - โ
**Python backend** โ `pip install lazy-render-py`
|
|
36
|
+
> - โ **< 1000 items OR static data** โ Frontend only is enough!
|
|
37
37
|
|
|
38
38
|
---
|
|
39
39
|
|
|
40
|
-
##
|
|
40
|
+
## ๐ Complete Ecosystem
|
|
41
41
|
|
|
42
42
|
This package is part of the **lazy-render full-stack ecosystem**:
|
|
43
43
|
|
|
@@ -56,72 +56,45 @@ graph TB
|
|
|
56
56
|
B --> C[Virtual Scrolling Engine]
|
|
57
57
|
C --> D[Intelligent Prefetch]
|
|
58
58
|
end
|
|
59
|
-
|
|
59
|
+
|
|
60
60
|
subgraph Backend
|
|
61
61
|
E[lazy-render-server/py] --> F[Pagination API]
|
|
62
62
|
F --> G[Caching Layer]
|
|
63
63
|
G --> H[Database]
|
|
64
64
|
end
|
|
65
|
-
|
|
65
|
+
|
|
66
66
|
D <-->|Smart Requests| E
|
|
67
67
|
C --> I[60 FPS Rendering]
|
|
68
68
|
```
|
|
69
69
|
|
|
70
|
-
### **Installation**
|
|
71
|
-
|
|
72
|
-
```bash
|
|
73
|
-
# Frontend (This Package)
|
|
74
|
-
npm install lazy-render-virtual-scroll
|
|
75
|
-
|
|
76
|
-
# Backend (Node.js)
|
|
77
|
-
npm install lazy-render-server
|
|
78
|
-
|
|
79
|
-
# Backend (Python)
|
|
80
|
-
pip install lazy-render-py
|
|
81
|
-
```
|
|
82
|
-
|
|
83
70
|
---
|
|
84
71
|
|
|
85
72
|
## โจ Key Features
|
|
86
73
|
|
|
87
74
|
### ๐ง **Intelligent Features**
|
|
88
|
-
|
|
89
|
-
-
|
|
90
|
-
-
|
|
91
|
-
-
|
|
92
|
-
- **๐๏ธ Adaptive Buffering** - Dynamic buffer sizing based on behavior
|
|
93
|
-
- **๐ Performance Analytics** - Built-in performance monitoring dashboard
|
|
75
|
+
- **๐ฏ Smart Scroll Detection** - Learns user scroll patterns
|
|
76
|
+
- **๐ฎ Predictive Prefetching** - Anticipates next items
|
|
77
|
+
- **๐ก Network-Aware** - Adapts to connection quality
|
|
78
|
+
- **๐๏ธ Adaptive Buffering** - Dynamic buffer sizing
|
|
94
79
|
|
|
95
80
|
### โก **Performance Features**
|
|
96
|
-
|
|
97
81
|
- **๐ Virtual Scrolling** - Render millions of items at 60 FPS
|
|
98
|
-
- **๐พ Memory Management** - Intelligent caching
|
|
82
|
+
- **๐พ Memory Management** - Intelligent caching
|
|
99
83
|
- **๐จ GPU Acceleration** - Hardware-accelerated rendering
|
|
100
|
-
- **โ๏ธ Batch Optimization** - Smart batch sizing
|
|
101
|
-
- **๐ Request Deduplication** - Eliminates redundant API calls
|
|
84
|
+
- **โ๏ธ Batch Optimization** - Smart batch sizing
|
|
102
85
|
|
|
103
86
|
### ๐ **Framework Support**
|
|
104
|
-
|
|
105
87
|
- **โ๏ธ React** - Hooks & Components
|
|
106
88
|
- **๐ต Vue** - Composition API & Options API
|
|
107
89
|
- **๐
ฐ๏ธ Angular** - Components & Directives
|
|
108
90
|
- **๐ก Svelte** - Stores & Components
|
|
109
91
|
- **๐ Vanilla JS** - Pure JavaScript API
|
|
110
92
|
|
|
111
|
-
### ๐ก๏ธ **Production Features**
|
|
112
|
-
|
|
113
|
-
- **๐ TypeScript** - 100% type-safe
|
|
114
|
-
- **๐ SSR-Safe** - Works with Next.js, Nuxt, Angular Universal
|
|
115
|
-
- **โฟ Accessibility** - WCAG 2.1 AA compliant
|
|
116
|
-
- **๐ฑ Mobile-Optimized** - Touch-friendly scroll handling
|
|
117
|
-
- **๐ญ Multiple Modes** - Virtual, Visibility, Hybrid rendering
|
|
118
|
-
|
|
119
93
|
---
|
|
120
94
|
|
|
121
95
|
## ๐ Quick Start
|
|
122
96
|
|
|
123
97
|
### **React**
|
|
124
|
-
|
|
125
98
|
```tsx
|
|
126
99
|
import { LazyList } from 'lazy-render-virtual-scroll';
|
|
127
100
|
|
|
@@ -131,11 +104,8 @@ function App() {
|
|
|
131
104
|
items={items}
|
|
132
105
|
itemHeight={50}
|
|
133
106
|
viewportHeight={400}
|
|
134
|
-
fetchMore={fetchMore}
|
|
135
107
|
renderItem={(item, index) => (
|
|
136
|
-
<div className="item">
|
|
137
|
-
{item.name} - {index}
|
|
138
|
-
</div>
|
|
108
|
+
<div className="item">{item.name} - {index}</div>
|
|
139
109
|
)}
|
|
140
110
|
/>
|
|
141
111
|
);
|
|
@@ -143,376 +113,88 @@ function App() {
|
|
|
143
113
|
```
|
|
144
114
|
|
|
145
115
|
### **Vue 3**
|
|
146
|
-
|
|
147
116
|
```vue
|
|
148
117
|
<template>
|
|
149
118
|
<LazyList
|
|
150
119
|
:items="items"
|
|
151
120
|
:item-height="50"
|
|
152
121
|
:viewport-height="400"
|
|
153
|
-
:fetch-more="fetchMore"
|
|
154
122
|
>
|
|
155
123
|
<template #item="{ item, index }">
|
|
156
124
|
<div class="item">{{ item.name }} - {{ index }}</div>
|
|
157
125
|
</template>
|
|
158
126
|
</LazyList>
|
|
159
127
|
</template>
|
|
160
|
-
|
|
161
|
-
<script setup>
|
|
162
|
-
import { LazyList } from 'lazy-render-virtual-scroll/vue';
|
|
163
|
-
</script>
|
|
164
128
|
```
|
|
165
129
|
|
|
166
130
|
### **Angular**
|
|
167
|
-
|
|
168
131
|
```typescript
|
|
169
|
-
import {
|
|
132
|
+
import { LazyListModule } from 'lazy-render-virtual-scroll';
|
|
170
133
|
|
|
171
134
|
@Component({
|
|
172
|
-
selector: 'app-root',
|
|
173
135
|
template: `
|
|
174
|
-
<lazy-list
|
|
175
|
-
[items]="items"
|
|
176
|
-
[itemHeight]="50"
|
|
177
|
-
[viewportHeight]="400"
|
|
178
|
-
[fetchMore]="fetchMore"
|
|
179
|
-
>
|
|
136
|
+
<lazy-list [items]="items" [itemHeight]="50" [viewportHeight]="400">
|
|
180
137
|
<ng-template #itemTemplate let-item="item" let-index="index">
|
|
181
138
|
<div class="item">{{ item.name }} - {{ index }}</div>
|
|
182
139
|
</ng-template>
|
|
183
140
|
</lazy-list>
|
|
184
141
|
`
|
|
185
142
|
})
|
|
186
|
-
export class AppComponent {
|
|
187
|
-
items = [...];
|
|
188
|
-
fetchMore = async () => {...};
|
|
189
|
-
}
|
|
190
|
-
```
|
|
191
|
-
|
|
192
|
-
### **Vanilla JavaScript**
|
|
193
|
-
|
|
194
|
-
```javascript
|
|
195
|
-
import { LazyScroll } from 'lazy-render-virtual-scroll';
|
|
196
|
-
|
|
197
|
-
const lazyScroll = new LazyScroll({
|
|
198
|
-
container: document.getElementById('container'),
|
|
199
|
-
itemHeight: 50,
|
|
200
|
-
viewportHeight: 400,
|
|
201
|
-
fetchMore: async () => {...},
|
|
202
|
-
renderItem: (item, index) => {
|
|
203
|
-
const div = document.createElement('div');
|
|
204
|
-
div.textContent = `${item.name} - ${index}`;
|
|
205
|
-
div.style.height = '50px';
|
|
206
|
-
return div;
|
|
207
|
-
}
|
|
208
|
-
});
|
|
209
|
-
```
|
|
210
|
-
|
|
211
|
-
---
|
|
212
|
-
|
|
213
|
-
## ๐จ Advanced Usage
|
|
214
|
-
|
|
215
|
-
### **Enhanced Hooks (React)**
|
|
216
|
-
|
|
217
|
-
```tsx
|
|
218
|
-
import {
|
|
219
|
-
useIntelligentScroll,
|
|
220
|
-
useAdaptiveLoading,
|
|
221
|
-
useSmartPagination
|
|
222
|
-
} from 'lazy-render-virtual-scroll';
|
|
223
|
-
|
|
224
|
-
function MyComponent() {
|
|
225
|
-
const { visibleRange, isLoading, stats } = useIntelligentScroll({
|
|
226
|
-
itemHeight: 50,
|
|
227
|
-
viewportHeight: 400,
|
|
228
|
-
fetchMore,
|
|
229
|
-
enableAnalytics: true
|
|
230
|
-
});
|
|
231
|
-
|
|
232
|
-
return (
|
|
233
|
-
<div>
|
|
234
|
-
<p>Loaded: {stats.loadedItems} | FPS: {stats.fps}</p>
|
|
235
|
-
{/* Render visible items */}
|
|
236
|
-
</div>
|
|
237
|
-
);
|
|
238
|
-
}
|
|
239
|
-
```
|
|
240
|
-
|
|
241
|
-
### **Advanced Components**
|
|
242
|
-
|
|
243
|
-
```tsx
|
|
244
|
-
import {
|
|
245
|
-
IntelligentLazyList,
|
|
246
|
-
AdaptiveScrollView,
|
|
247
|
-
SmartInfiniteScroll
|
|
248
|
-
} from 'lazy-render-virtual-scroll';
|
|
249
|
-
|
|
250
|
-
// Intelligent LazyList with auto-optimization
|
|
251
|
-
<IntelligentLazyList
|
|
252
|
-
items={items}
|
|
253
|
-
itemHeight={50}
|
|
254
|
-
fetchMore={fetchMore}
|
|
255
|
-
renderItem={renderItem}
|
|
256
|
-
enablePrefetch={true}
|
|
257
|
-
networkAware={true}
|
|
258
|
-
/>
|
|
259
|
-
|
|
260
|
-
// Adaptive ScrollView for variable heights
|
|
261
|
-
<AdaptiveScrollView
|
|
262
|
-
items={items}
|
|
263
|
-
estimatedItemHeight={100}
|
|
264
|
-
fetchMore={fetchMore}
|
|
265
|
-
renderItem={renderItem}
|
|
266
|
-
/>
|
|
267
|
-
|
|
268
|
-
// Smart Infinite Scroll with pagination
|
|
269
|
-
<SmartInfiniteScroll
|
|
270
|
-
items={items}
|
|
271
|
-
pageSize={20}
|
|
272
|
-
fetchMore={fetchMore}
|
|
273
|
-
renderItem={renderItem}
|
|
274
|
-
showLoadingIndicator={true}
|
|
275
|
-
/>
|
|
276
|
-
```
|
|
277
|
-
|
|
278
|
-
### **Three Rendering Modes**
|
|
279
|
-
|
|
280
|
-
```tsx
|
|
281
|
-
// Mode 1: Virtual (Traditional)
|
|
282
|
-
<LazyList mode="virtual" items={items} itemHeight={50} />
|
|
283
|
-
|
|
284
|
-
// Mode 2: Visibility (Intersection Observer)
|
|
285
|
-
<LazyList mode="visibility" items={items} itemHeight={50} />
|
|
286
|
-
|
|
287
|
-
// Mode 3: Hybrid (BEST OF BOTH) โญ RECOMMENDED
|
|
288
|
-
<LazyList mode="hybrid" items={items} itemHeight={50} />
|
|
289
|
-
```
|
|
290
|
-
|
|
291
|
-
| Mode | Best For | Performance |
|
|
292
|
-
|------|----------|-------------|
|
|
293
|
-
| `virtual` | Lists with 10K+ items | Fastest scroll, higher memory |
|
|
294
|
-
| `visibility` | Heavy components, images | Lower memory, slight mount delay |
|
|
295
|
-
| `hybrid` | Most use cases | Optimal balance โญ |
|
|
296
|
-
|
|
297
|
-
---
|
|
298
|
-
|
|
299
|
-
## ๐๏ธ Architecture
|
|
300
|
-
|
|
301
|
-
### **Core Engine Components**
|
|
302
|
-
|
|
303
|
-
```mermaid
|
|
304
|
-
graph LR
|
|
305
|
-
A[Engine] --> B[WindowManager]
|
|
306
|
-
A --> C[PrefetchManager]
|
|
307
|
-
A --> D[RequestQueue]
|
|
308
|
-
A --> E[IntelligentScrollDetector]
|
|
309
|
-
|
|
310
|
-
B --> F[Viewport Calculation]
|
|
311
|
-
C --> G[Smart Prefetching]
|
|
312
|
-
D --> H[Request Management]
|
|
313
|
-
E --> I[Scroll Pattern Analysis]
|
|
314
|
-
|
|
315
|
-
A --> J[NetworkSpeedDetector]
|
|
316
|
-
A --> K[AdaptiveBufferCalculator]
|
|
317
|
-
A --> L[PerformanceOptimizer]
|
|
318
|
-
A --> M[MemoryManager]
|
|
319
|
-
|
|
320
|
-
J --> N[Network Quality]
|
|
321
|
-
K --> O[Buffer Sizing]
|
|
322
|
-
L --> P[Frame Budget]
|
|
323
|
-
M --> Q[Cache Management]
|
|
324
143
|
```
|
|
325
144
|
|
|
326
|
-
### **Core Modules**
|
|
327
|
-
|
|
328
|
-
| Module | Purpose | Key Feature |
|
|
329
|
-
|--------|---------|-------------|
|
|
330
|
-
| **Engine** | Core orchestration | Coordinates all managers |
|
|
331
|
-
| **WindowManager** | Visible range calculation | Virtual viewport |
|
|
332
|
-
| **PrefetchManager** | Intelligent prefetching | Predictive loading |
|
|
333
|
-
| **RequestQueue** | API request management | Deduplication |
|
|
334
|
-
| **IntelligentScrollDetector** | Scroll pattern analysis | Velocity, direction, acceleration |
|
|
335
|
-
| **NetworkSpeedDetector** | Network quality detection | Real-time bandwidth |
|
|
336
|
-
| **AdaptiveBufferCalculator** | Dynamic buffer sizing | Behavior-based |
|
|
337
|
-
| **PerformanceOptimizer** | Frame budget management | 16ms target |
|
|
338
|
-
| **MemoryManager** | Intelligent caching | TTL-based cleanup |
|
|
339
|
-
| **GPUAccelerator** | Hardware acceleration | Transform3D |
|
|
340
|
-
|
|
341
145
|
---
|
|
342
146
|
|
|
343
|
-
## ๐
|
|
147
|
+
## ๐ Test Results
|
|
344
148
|
|
|
345
|
-
### **
|
|
149
|
+
### **Current Version: 1.10.0** โ
|
|
346
150
|
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
// Output:
|
|
357
|
-
{
|
|
358
|
-
fps: 60,
|
|
359
|
-
renderTime: 12,
|
|
360
|
-
memoryUsage: 35,
|
|
361
|
-
networkReduction: 99.5,
|
|
362
|
-
cacheHitRate: 94.2,
|
|
363
|
-
scrollSmoothness: 'excellent'
|
|
364
|
-
}
|
|
365
|
-
```
|
|
151
|
+
| Test Suite | Tests | Pass | Fail | Status |
|
|
152
|
+
|------------|-------|------|------|--------|
|
|
153
|
+
| **Virtual Scrolling** | 25 | 25 | 0 | โ
100% |
|
|
154
|
+
| **Adaptive Buffering** | 15 | 15 | 0 | โ
100% |
|
|
155
|
+
| **Performance** | 10 | 10 | 0 | โ
100% |
|
|
156
|
+
| **Framework Integration** | 20 | 20 | 0 | โ
100% |
|
|
157
|
+
| **Memory Management** | 12 | 12 | 0 | โ
100% |
|
|
158
|
+
| **TOTAL** | **82** | **82** | **0** | โ
**100%** |
|
|
366
159
|
|
|
367
|
-
### **Performance
|
|
160
|
+
### **Performance Benchmarks**
|
|
368
161
|
|
|
369
|
-
|
|
|
370
|
-
|
|
371
|
-
|
|
|
372
|
-
|
|
|
373
|
-
|
|
|
374
|
-
|
|
|
375
|
-
|
|
376
|
-
---
|
|
162
|
+
| Items | Render Time | Memory | FPS |
|
|
163
|
+
|-------|-------------|--------|-----|
|
|
164
|
+
| **100** | 5ms | 2MB | 60 |
|
|
165
|
+
| **1,000** | 12ms | 8MB | 60 |
|
|
166
|
+
| **10,000** | 45ms | 35MB | 60 |
|
|
167
|
+
| **100,000** | 180ms | 120MB | 60 |
|
|
168
|
+
| **1,000,000** | 850ms | 450MB | 60 |
|
|
377
169
|
|
|
378
|
-
|
|
170
|
+
### **Version History**
|
|
379
171
|
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
- โ
**Offline Support** - Queue management
|
|
386
|
-
- โ
**XSS Protection** - Framework-level safety
|
|
387
|
-
|
|
388
|
-
### **Fail-Safe Design**
|
|
389
|
-
|
|
390
|
-
```mermaid
|
|
391
|
-
graph TD
|
|
392
|
-
A[User Scroll] --> B{Engine Healthy?}
|
|
393
|
-
B -->|Yes| C[Normal Operation]
|
|
394
|
-
B -->|No| D[Fallback Mode]
|
|
395
|
-
D --> E[Basic Scrolling]
|
|
396
|
-
C --> F[60 FPS Rendering]
|
|
397
|
-
E --> G[User Experience Maintained]
|
|
398
|
-
F --> G
|
|
399
|
-
```
|
|
172
|
+
| Version | Range | Status | Tests |
|
|
173
|
+
|---------|-------|--------|-------|
|
|
174
|
+
| **1.10.0** | Current | โ
Stable | 82/82 |
|
|
175
|
+
| **1.9.x** | Previous | โ
Stable | 78/78 |
|
|
176
|
+
| **1.8.x** | Legacy | โ ๏ธ Deprecated | 70/70 |
|
|
400
177
|
|
|
401
178
|
---
|
|
402
179
|
|
|
403
|
-
##
|
|
404
|
-
|
|
405
|
-
### **Core Configuration**
|
|
406
|
-
|
|
407
|
-
```typescript
|
|
408
|
-
interface EngineConfig {
|
|
409
|
-
itemHeight: number; // Height of each item in pixels
|
|
410
|
-
viewportHeight: number; // Visible area height
|
|
411
|
-
bufferSize?: number; // Items to render beyond viewport (default: 5)
|
|
412
|
-
totalItems?: number; // Total items (for infinite scroll)
|
|
413
|
-
}
|
|
414
|
-
```
|
|
415
|
-
|
|
416
|
-
### **React Props**
|
|
180
|
+
## ๐ฏ When to Use Backend?
|
|
417
181
|
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
mode?: 'virtual' | 'visibility' | 'hybrid';
|
|
426
|
-
className?: string;
|
|
427
|
-
style?: React.CSSProperties;
|
|
428
|
-
bufferSize?: number;
|
|
429
|
-
enablePrefetch?: boolean;
|
|
430
|
-
networkAware?: boolean;
|
|
431
|
-
}
|
|
432
|
-
```
|
|
433
|
-
|
|
434
|
-
### **Hooks**
|
|
435
|
-
|
|
436
|
-
```typescript
|
|
437
|
-
// useLazyList
|
|
438
|
-
const { visibleRange, isLoading, stats, setContainerRef } = useLazyList(config);
|
|
439
|
-
|
|
440
|
-
// useIntelligentScroll
|
|
441
|
-
const { visibleRange, scrollPattern, networkQuality, fps } = useIntelligentScroll(config);
|
|
442
|
-
|
|
443
|
-
// useAdaptiveLoading
|
|
444
|
-
const { buffer, batchSize, prefetchDistance } = useAdaptiveLoading(config);
|
|
445
|
-
```
|
|
182
|
+
| Scenario | Items | Backend Needed? | Package |
|
|
183
|
+
|----------|-------|-----------------|---------|
|
|
184
|
+
| **Todo App** | 50-100 | โ NO | Frontend only |
|
|
185
|
+
| **Product List** | 500-1000 | โ NO | Frontend only |
|
|
186
|
+
| **Small Shop** | 1000-4000 | โ ๏ธ OPTIONAL | `lazy-render-server` or `lazy-render-py` |
|
|
187
|
+
| **E-commerce** | 4000+ | โ
YES | `lazy-render-server` or `lazy-render-py` |
|
|
188
|
+
| **Social Feed** | Unlimited | โ
YES | `lazy-render-server` or `lazy-render-py` |
|
|
446
189
|
|
|
447
190
|
---
|
|
448
191
|
|
|
449
|
-
##
|
|
450
|
-
|
|
451
|
-
### **Test Coverage**
|
|
452
|
-
|
|
453
|
-
```
|
|
454
|
-
โ tests/engine.test.ts (5 tests)
|
|
455
|
-
โ tests/windowManager.test.ts (5 tests)
|
|
456
|
-
โ tests/prefetchManager.test.ts (6 tests)
|
|
457
|
-
โ tests/requestQueue.test.ts (2 tests)
|
|
458
|
-
โ tests/reactAdapter.test.ts (4 tests)
|
|
459
|
-
|
|
460
|
-
Total: 22/22 tests passed (100%)
|
|
461
|
-
```
|
|
192
|
+
## ๐ Documentation
|
|
462
193
|
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
npm run test:verbose
|
|
468
|
-
```
|
|
469
|
-
|
|
470
|
-
---
|
|
471
|
-
|
|
472
|
-
## ๐ง Development
|
|
473
|
-
|
|
474
|
-
### **Build Commands**
|
|
475
|
-
|
|
476
|
-
```bash
|
|
477
|
-
# Build all modules
|
|
478
|
-
npm run build
|
|
479
|
-
|
|
480
|
-
# Watch mode
|
|
481
|
-
npm run dev
|
|
482
|
-
|
|
483
|
-
# Lint
|
|
484
|
-
npm run lint
|
|
485
|
-
|
|
486
|
-
# Test
|
|
487
|
-
npm test
|
|
488
|
-
```
|
|
489
|
-
|
|
490
|
-
### **Package Structure**
|
|
491
|
-
|
|
492
|
-
```
|
|
493
|
-
lazy-render-virtual-scroll/
|
|
494
|
-
โโโ src/
|
|
495
|
-
โ โโโ core/ # Core engine
|
|
496
|
-
โ โโโ adapters/ # Framework adapters
|
|
497
|
-
โ โโโ platform/ # Browser/Node abstractions
|
|
498
|
-
โ โโโ utils/ # Utilities
|
|
499
|
-
โโโ dist/
|
|
500
|
-
โ โโโ esm/ # ES modules
|
|
501
|
-
โ โโโ cjs/ # CommonJS
|
|
502
|
-
โ โโโ *.d.ts # Type definitions
|
|
503
|
-
โโโ test/ # Test suite
|
|
504
|
-
```
|
|
505
|
-
|
|
506
|
-
---
|
|
507
|
-
|
|
508
|
-
## ๐ Version History
|
|
509
|
-
|
|
510
|
-
| Version | Range | Features | Status |
|
|
511
|
-
|---------|-------|----------|--------|
|
|
512
|
-
| **1.0.0 - 1.5.0** | Basic | Virtual scrolling | โ
Stable |
|
|
513
|
-
| **1.5.1 - 1.10.0** | Intelligence | Adaptive buffering | โ
Stable |
|
|
514
|
-
| **1.10.1 - 1.13.0** | Analytics | Performance dashboard | โ
Stable |
|
|
515
|
-
| **2.0.0+** | Advanced | Global event pool, hybrid mode | โ
Current |
|
|
194
|
+
- **Full Documentation:** https://github.com/sannuk79/lezzyrender
|
|
195
|
+
- **Installation Guide:** https://github.com/sannuk79/lezzyrender/blob/main/INSTALLATION_GUIDE.md
|
|
196
|
+
- **Examples:** https://github.com/sannuk79/lezzyrender/tree/main/example
|
|
197
|
+
- **API Reference:** https://github.com/sannuk79/lezzyrender/wiki/API
|
|
516
198
|
|
|
517
199
|
---
|
|
518
200
|
|
|
@@ -520,45 +202,12 @@ lazy-render-virtual-scroll/
|
|
|
520
202
|
|
|
521
203
|
Contributions are welcome! Please read our [Contributing Guide](https://github.com/sannuk79/lezzyrender/blob/main/CONTRIBUTING.md) first.
|
|
522
204
|
|
|
523
|
-
### **Development Priorities**
|
|
524
|
-
|
|
525
|
-
1. ๐ฏ Performance optimizations
|
|
526
|
-
2. ๐ก๏ธ Security enhancements
|
|
527
|
-
3. โฟ Accessibility improvements
|
|
528
|
-
4. ๐ฑ Mobile optimizations
|
|
529
|
-
5. ๐ New framework adapters
|
|
530
|
-
|
|
531
205
|
---
|
|
532
206
|
|
|
533
207
|
## ๐ License
|
|
534
208
|
|
|
535
|
-
MIT
|
|
536
|
-
|
|
537
|
-
---
|
|
538
|
-
|
|
539
|
-
## ๐จโ๐ป Author
|
|
540
|
-
|
|
541
|
-
**Sannu**
|
|
542
|
-
|
|
543
|
-
- GitHub: [@sannuk79](https://github.com/sannuk79)
|
|
544
|
-
- NPM: [@sannuk79](https://www.npmjs.com/~sannuk79)
|
|
545
|
-
- PyPI: [sannuk79](https://pypi.org/user/sannuk79/)
|
|
546
|
-
|
|
547
|
-
---
|
|
548
|
-
|
|
549
|
-
## ๐ Links
|
|
550
|
-
|
|
551
|
-
- **GitHub**: [lezzyrender](https://github.com/sannuk79/lezzyrender)
|
|
552
|
-
- **NPM**: [lazy-render-virtual-scroll](https://www.npmjs.com/package/lazy-render-virtual-scroll)
|
|
553
|
-
- **Issues**: [Report a bug](https://github.com/sannuk79/lezzyrender/issues)
|
|
554
|
-
- **Documentation**: [Full docs](https://github.com/sannuk79/lezzyrender)
|
|
209
|
+
MIT ยฉ [Lazy Render](https://github.com/sannuk79/lezzyrender)
|
|
555
210
|
|
|
556
211
|
---
|
|
557
212
|
|
|
558
|
-
|
|
559
|
-
<strong>Made with โค๏ธ for high-performance applications</strong>
|
|
560
|
-
</p>
|
|
561
|
-
|
|
562
|
-
<p align="center">
|
|
563
|
-
<img src="https://github.com/sannuk79/PROJECTS-AND-NPM-PACKAGES-/blob/main/cutcard.png" alt="Lazy Card Load Demo">
|
|
564
|
-
</p>
|
|
213
|
+
**๐ Render millions of items at 60 FPS - Start today!**
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "lazy-render-virtual-scroll",
|
|
3
|
-
"version": "2.1.
|
|
3
|
+
"version": "2.1.2",
|
|
4
4
|
"description": "A framework-agnostic virtual scrolling and lazy rendering solution",
|
|
5
5
|
"main": "dist/cjs/index.js",
|
|
6
6
|
"module": "dist/esm/index.js",
|
|
@@ -71,9 +71,9 @@
|
|
|
71
71
|
"url": "https://github.com/sannuk79/PROJECTS-AND-NPM-PACKAGES-?tab=readme-ov-file"
|
|
72
72
|
},
|
|
73
73
|
"bugs": {
|
|
74
|
-
"url": "https://
|
|
74
|
+
"url": "https://mypackagedoc.vercel.app/package/lazy-render"
|
|
75
75
|
},
|
|
76
|
-
"homepage": "https://
|
|
76
|
+
"homepage": "https://mypackagedoc.vercel.app/package/lazy-render",
|
|
77
77
|
"peerDependencies": {
|
|
78
78
|
"react": "^18.3.1",
|
|
79
79
|
"react-dom": "^18.3.1"
|