lazy-render-virtual-scroll 1.12.0 → 1.13.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/adapters/react/index.d.ts +91 -2
- package/dist/cjs/adapters/react/adapters/react/components/PerformanceMonitor.d.ts +10 -0
- package/dist/cjs/adapters/react/adapters/react/components/PerformanceMonitor.d.ts.map +1 -0
- package/dist/cjs/adapters/react/adapters/react/components/index.d.ts +2 -0
- package/dist/cjs/adapters/react/adapters/react/components/index.d.ts.map +1 -1
- package/dist/cjs/adapters/react/components/PerformanceMonitor.d.ts +10 -0
- package/dist/cjs/adapters/react/components/PerformanceMonitor.d.ts.map +1 -0
- package/dist/cjs/adapters/react/components/index.d.ts +2 -0
- package/dist/cjs/adapters/react/components/index.d.ts.map +1 -1
- package/dist/cjs/adapters/react/core/AccessibilityManager.d.ts +86 -0
- package/dist/cjs/adapters/react/core/AccessibilityManager.d.ts.map +1 -0
- package/dist/cjs/adapters/react/core/AnimationManager.d.ts +63 -0
- package/dist/cjs/adapters/react/core/AnimationManager.d.ts.map +1 -0
- package/dist/cjs/adapters/react/core/PerformanceAnalytics.d.ts +83 -0
- package/dist/cjs/adapters/react/core/PerformanceAnalytics.d.ts.map +1 -0
- package/dist/cjs/adapters/react/core/PerformanceDashboard.d.ts +60 -0
- package/dist/cjs/adapters/react/core/PerformanceDashboard.d.ts.map +1 -0
- package/dist/cjs/adapters/react/index.d.ts +4 -0
- package/dist/cjs/adapters/react/index.d.ts.map +1 -1
- package/dist/cjs/adapters/react/index.js +282 -0
- package/dist/cjs/adapters/react/index.js.map +1 -1
- package/dist/cjs/angular/adapters/react/components/PerformanceMonitor.d.ts +10 -0
- package/dist/cjs/angular/adapters/react/components/PerformanceMonitor.d.ts.map +1 -0
- package/dist/cjs/angular/adapters/react/components/index.d.ts +2 -0
- package/dist/cjs/angular/adapters/react/components/index.d.ts.map +1 -1
- package/dist/cjs/angular/core/AccessibilityManager.d.ts +86 -0
- package/dist/cjs/angular/core/AccessibilityManager.d.ts.map +1 -0
- package/dist/cjs/angular/core/AnimationManager.d.ts +63 -0
- package/dist/cjs/angular/core/AnimationManager.d.ts.map +1 -0
- package/dist/cjs/angular/core/PerformanceAnalytics.d.ts +83 -0
- package/dist/cjs/angular/core/PerformanceAnalytics.d.ts.map +1 -0
- package/dist/cjs/angular/core/PerformanceDashboard.d.ts +60 -0
- package/dist/cjs/angular/core/PerformanceDashboard.d.ts.map +1 -0
- package/dist/cjs/angular/index.d.ts +4 -0
- package/dist/cjs/angular/index.d.ts.map +1 -1
- package/dist/cjs/core/AccessibilityManager.d.ts +86 -0
- package/dist/cjs/core/AccessibilityManager.d.ts.map +1 -0
- package/dist/cjs/core/AnimationManager.d.ts +63 -0
- package/dist/cjs/core/AnimationManager.d.ts.map +1 -0
- package/dist/cjs/core/PerformanceAnalytics.d.ts +83 -0
- package/dist/cjs/core/PerformanceAnalytics.d.ts.map +1 -0
- package/dist/cjs/core/PerformanceDashboard.d.ts +60 -0
- package/dist/cjs/core/PerformanceDashboard.d.ts.map +1 -0
- package/dist/cjs/index.d.ts +4 -0
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js +756 -0
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/svelte/adapters/react/components/PerformanceMonitor.d.ts +10 -0
- package/dist/cjs/svelte/adapters/react/components/PerformanceMonitor.d.ts.map +1 -0
- package/dist/cjs/svelte/adapters/react/components/index.d.ts +2 -0
- package/dist/cjs/svelte/adapters/react/components/index.d.ts.map +1 -1
- package/dist/cjs/svelte/core/AccessibilityManager.d.ts +86 -0
- package/dist/cjs/svelte/core/AccessibilityManager.d.ts.map +1 -0
- package/dist/cjs/svelte/core/AnimationManager.d.ts +63 -0
- package/dist/cjs/svelte/core/AnimationManager.d.ts.map +1 -0
- package/dist/cjs/svelte/core/PerformanceAnalytics.d.ts +83 -0
- package/dist/cjs/svelte/core/PerformanceAnalytics.d.ts.map +1 -0
- package/dist/cjs/svelte/core/PerformanceDashboard.d.ts +60 -0
- package/dist/cjs/svelte/core/PerformanceDashboard.d.ts.map +1 -0
- package/dist/cjs/svelte/index.d.ts +4 -0
- package/dist/cjs/svelte/index.d.ts.map +1 -1
- package/dist/cjs/vue/adapters/react/components/PerformanceMonitor.d.ts +10 -0
- package/dist/cjs/vue/adapters/react/components/PerformanceMonitor.d.ts.map +1 -0
- package/dist/cjs/vue/adapters/react/components/index.d.ts +2 -0
- package/dist/cjs/vue/adapters/react/components/index.d.ts.map +1 -1
- package/dist/cjs/vue/core/AccessibilityManager.d.ts +86 -0
- package/dist/cjs/vue/core/AccessibilityManager.d.ts.map +1 -0
- package/dist/cjs/vue/core/AnimationManager.d.ts +63 -0
- package/dist/cjs/vue/core/AnimationManager.d.ts.map +1 -0
- package/dist/cjs/vue/core/PerformanceAnalytics.d.ts +83 -0
- package/dist/cjs/vue/core/PerformanceAnalytics.d.ts.map +1 -0
- package/dist/cjs/vue/core/PerformanceDashboard.d.ts +60 -0
- package/dist/cjs/vue/core/PerformanceDashboard.d.ts.map +1 -0
- package/dist/cjs/vue/index.d.ts +4 -0
- package/dist/cjs/vue/index.d.ts.map +1 -1
- package/dist/esm/adapters/react/adapters/react/components/PerformanceMonitor.d.ts +10 -0
- package/dist/esm/adapters/react/adapters/react/components/PerformanceMonitor.d.ts.map +1 -0
- package/dist/esm/adapters/react/adapters/react/components/index.d.ts +2 -0
- package/dist/esm/adapters/react/adapters/react/components/index.d.ts.map +1 -1
- package/dist/esm/adapters/react/components/PerformanceMonitor.d.ts +10 -0
- package/dist/esm/adapters/react/components/PerformanceMonitor.d.ts.map +1 -0
- package/dist/esm/adapters/react/components/index.d.ts +2 -0
- package/dist/esm/adapters/react/components/index.d.ts.map +1 -1
- package/dist/esm/adapters/react/core/AccessibilityManager.d.ts +86 -0
- package/dist/esm/adapters/react/core/AccessibilityManager.d.ts.map +1 -0
- package/dist/esm/adapters/react/core/AnimationManager.d.ts +63 -0
- package/dist/esm/adapters/react/core/AnimationManager.d.ts.map +1 -0
- package/dist/esm/adapters/react/core/PerformanceAnalytics.d.ts +83 -0
- package/dist/esm/adapters/react/core/PerformanceAnalytics.d.ts.map +1 -0
- package/dist/esm/adapters/react/core/PerformanceDashboard.d.ts +60 -0
- package/dist/esm/adapters/react/core/PerformanceDashboard.d.ts.map +1 -0
- package/dist/esm/adapters/react/index.d.ts +4 -0
- package/dist/esm/adapters/react/index.d.ts.map +1 -1
- package/dist/esm/adapters/react/index.js +282 -1
- package/dist/esm/adapters/react/index.js.map +1 -1
- package/dist/esm/angular/adapters/react/components/PerformanceMonitor.d.ts +10 -0
- package/dist/esm/angular/adapters/react/components/PerformanceMonitor.d.ts.map +1 -0
- package/dist/esm/angular/adapters/react/components/index.d.ts +2 -0
- package/dist/esm/angular/adapters/react/components/index.d.ts.map +1 -1
- package/dist/esm/angular/core/AccessibilityManager.d.ts +86 -0
- package/dist/esm/angular/core/AccessibilityManager.d.ts.map +1 -0
- package/dist/esm/angular/core/AnimationManager.d.ts +63 -0
- package/dist/esm/angular/core/AnimationManager.d.ts.map +1 -0
- package/dist/esm/angular/core/PerformanceAnalytics.d.ts +83 -0
- package/dist/esm/angular/core/PerformanceAnalytics.d.ts.map +1 -0
- package/dist/esm/angular/core/PerformanceDashboard.d.ts +60 -0
- package/dist/esm/angular/core/PerformanceDashboard.d.ts.map +1 -0
- package/dist/esm/angular/index.d.ts +4 -0
- package/dist/esm/angular/index.d.ts.map +1 -1
- package/dist/esm/core/AccessibilityManager.d.ts +86 -0
- package/dist/esm/core/AccessibilityManager.d.ts.map +1 -0
- package/dist/esm/core/AnimationManager.d.ts +63 -0
- package/dist/esm/core/AnimationManager.d.ts.map +1 -0
- package/dist/esm/core/PerformanceAnalytics.d.ts +83 -0
- package/dist/esm/core/PerformanceAnalytics.d.ts.map +1 -0
- package/dist/esm/core/PerformanceDashboard.d.ts +60 -0
- package/dist/esm/core/PerformanceDashboard.d.ts.map +1 -0
- package/dist/esm/index.d.ts +4 -0
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +753 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/svelte/adapters/react/components/PerformanceMonitor.d.ts +10 -0
- package/dist/esm/svelte/adapters/react/components/PerformanceMonitor.d.ts.map +1 -0
- package/dist/esm/svelte/adapters/react/components/index.d.ts +2 -0
- package/dist/esm/svelte/adapters/react/components/index.d.ts.map +1 -1
- package/dist/esm/svelte/core/AccessibilityManager.d.ts +86 -0
- package/dist/esm/svelte/core/AccessibilityManager.d.ts.map +1 -0
- package/dist/esm/svelte/core/AnimationManager.d.ts +63 -0
- package/dist/esm/svelte/core/AnimationManager.d.ts.map +1 -0
- package/dist/esm/svelte/core/PerformanceAnalytics.d.ts +83 -0
- package/dist/esm/svelte/core/PerformanceAnalytics.d.ts.map +1 -0
- package/dist/esm/svelte/core/PerformanceDashboard.d.ts +60 -0
- package/dist/esm/svelte/core/PerformanceDashboard.d.ts.map +1 -0
- package/dist/esm/svelte/index.d.ts +4 -0
- package/dist/esm/svelte/index.d.ts.map +1 -1
- package/dist/esm/vue/adapters/react/components/PerformanceMonitor.d.ts +10 -0
- package/dist/esm/vue/adapters/react/components/PerformanceMonitor.d.ts.map +1 -0
- package/dist/esm/vue/adapters/react/components/index.d.ts +2 -0
- package/dist/esm/vue/adapters/react/components/index.d.ts.map +1 -1
- package/dist/esm/vue/core/AccessibilityManager.d.ts +86 -0
- package/dist/esm/vue/core/AccessibilityManager.d.ts.map +1 -0
- package/dist/esm/vue/core/AnimationManager.d.ts +63 -0
- package/dist/esm/vue/core/AnimationManager.d.ts.map +1 -0
- package/dist/esm/vue/core/PerformanceAnalytics.d.ts +83 -0
- package/dist/esm/vue/core/PerformanceAnalytics.d.ts.map +1 -0
- package/dist/esm/vue/core/PerformanceDashboard.d.ts +60 -0
- package/dist/esm/vue/core/PerformanceDashboard.d.ts.map +1 -0
- package/dist/esm/vue/index.d.ts +4 -0
- package/dist/esm/vue/index.d.ts.map +1 -1
- package/dist/index.d.ts +289 -1
- package/package.json +1 -1
|
@@ -3248,9 +3248,291 @@ const SmartInfiniteScroll = ({ fetchMore, renderItem, initialPageSize = 50, minP
|
|
|
3248
3248
|
`)));
|
|
3249
3249
|
};
|
|
3250
3250
|
|
|
3251
|
+
/**
|
|
3252
|
+
* Performance Dashboard
|
|
3253
|
+
* Real-time performance monitoring and bottleneck identification
|
|
3254
|
+
*/
|
|
3255
|
+
class PerformanceDashboard {
|
|
3256
|
+
constructor(analytics) {
|
|
3257
|
+
this.updateInterval = 1000; // 1 second
|
|
3258
|
+
this.listeners = [];
|
|
3259
|
+
this.intervalId = null;
|
|
3260
|
+
this.isMonitoring = false;
|
|
3261
|
+
this.analytics = analytics;
|
|
3262
|
+
}
|
|
3263
|
+
/**
|
|
3264
|
+
* Start real-time monitoring
|
|
3265
|
+
*/
|
|
3266
|
+
startMonitoring() {
|
|
3267
|
+
if (this.isMonitoring)
|
|
3268
|
+
return;
|
|
3269
|
+
this.isMonitoring = true;
|
|
3270
|
+
this.intervalId = window.setInterval(() => {
|
|
3271
|
+
const data = this.getDashboardData();
|
|
3272
|
+
this.notifyListeners(data);
|
|
3273
|
+
}, this.updateInterval);
|
|
3274
|
+
}
|
|
3275
|
+
/**
|
|
3276
|
+
* Stop monitoring
|
|
3277
|
+
*/
|
|
3278
|
+
stopMonitoring() {
|
|
3279
|
+
if (!this.isMonitoring)
|
|
3280
|
+
return;
|
|
3281
|
+
this.isMonitoring = false;
|
|
3282
|
+
if (this.intervalId !== null) {
|
|
3283
|
+
clearInterval(this.intervalId);
|
|
3284
|
+
this.intervalId = null;
|
|
3285
|
+
}
|
|
3286
|
+
}
|
|
3287
|
+
/**
|
|
3288
|
+
* Get current dashboard data
|
|
3289
|
+
*/
|
|
3290
|
+
getDashboardData() {
|
|
3291
|
+
const metrics = this.analytics.getMetrics();
|
|
3292
|
+
const score = this.analytics.getPerformanceScore();
|
|
3293
|
+
const recommendations = this.analytics.getRecommendations();
|
|
3294
|
+
// Identify bottlenecks
|
|
3295
|
+
const bottlenecks = this.identifyBottlenecks(metrics);
|
|
3296
|
+
return {
|
|
3297
|
+
overallScore: score,
|
|
3298
|
+
fps: metrics.scrollPerformance.averageFPS,
|
|
3299
|
+
renderTime: metrics.renderTime.average,
|
|
3300
|
+
memoryUsage: metrics.memoryUsage.current,
|
|
3301
|
+
networkLatency: metrics.networkPerformance.averageLatency,
|
|
3302
|
+
recommendations,
|
|
3303
|
+
bottlenecks
|
|
3304
|
+
};
|
|
3305
|
+
}
|
|
3306
|
+
/**
|
|
3307
|
+
* Identify performance bottlenecks
|
|
3308
|
+
*/
|
|
3309
|
+
identifyBottlenecks(metrics) {
|
|
3310
|
+
const bottlenecks = [];
|
|
3311
|
+
// FPS bottleneck
|
|
3312
|
+
if (metrics.scrollPerformance.averageFPS < 30) {
|
|
3313
|
+
bottlenecks.push('CRITICAL: Low FPS - Rendering is the bottleneck');
|
|
3314
|
+
}
|
|
3315
|
+
else if (metrics.scrollPerformance.averageFPS < 60) {
|
|
3316
|
+
bottlenecks.push('WARNING: Below 60 FPS - Consider optimizing renders');
|
|
3317
|
+
}
|
|
3318
|
+
// Render time bottleneck
|
|
3319
|
+
if (metrics.renderTime.average > 50) {
|
|
3320
|
+
bottlenecks.push('HIGH: Slow render times - Simplify item components');
|
|
3321
|
+
}
|
|
3322
|
+
else if (metrics.renderTime.average > 16) {
|
|
3323
|
+
bottlenecks.push('MEDIUM: Render time above frame budget');
|
|
3324
|
+
}
|
|
3325
|
+
// Memory bottleneck
|
|
3326
|
+
if (metrics.memoryUsage.trend === 'increasing') {
|
|
3327
|
+
bottlenecks.push('WARNING: Memory leak detected - Check cleanup logic');
|
|
3328
|
+
}
|
|
3329
|
+
// Network bottleneck
|
|
3330
|
+
if (metrics.networkPerformance.averageLatency > 500) {
|
|
3331
|
+
bottlenecks.push('HIGH: Network latency - Implement better caching');
|
|
3332
|
+
}
|
|
3333
|
+
// Jank bottleneck
|
|
3334
|
+
if (metrics.scrollPerformance.jankCount > 20) {
|
|
3335
|
+
bottlenecks.push('CRITICAL: Frequent jank - Smooth scroll performance');
|
|
3336
|
+
}
|
|
3337
|
+
if (bottlenecks.length === 0) {
|
|
3338
|
+
bottlenecks.push('No bottlenecks detected - Performance is optimal');
|
|
3339
|
+
}
|
|
3340
|
+
return bottlenecks;
|
|
3341
|
+
}
|
|
3342
|
+
/**
|
|
3343
|
+
* Add listener for dashboard updates
|
|
3344
|
+
*/
|
|
3345
|
+
addListener(callback) {
|
|
3346
|
+
this.listeners.push(callback);
|
|
3347
|
+
}
|
|
3348
|
+
/**
|
|
3349
|
+
* Remove listener
|
|
3350
|
+
*/
|
|
3351
|
+
removeListener(callback) {
|
|
3352
|
+
const index = this.listeners.indexOf(callback);
|
|
3353
|
+
if (index > -1) {
|
|
3354
|
+
this.listeners.splice(index, 1);
|
|
3355
|
+
}
|
|
3356
|
+
}
|
|
3357
|
+
/**
|
|
3358
|
+
* Notify all listeners
|
|
3359
|
+
*/
|
|
3360
|
+
notifyListeners(data) {
|
|
3361
|
+
this.listeners.forEach(listener => {
|
|
3362
|
+
try {
|
|
3363
|
+
listener(data);
|
|
3364
|
+
}
|
|
3365
|
+
catch (error) {
|
|
3366
|
+
console.error('Dashboard listener error:', error);
|
|
3367
|
+
}
|
|
3368
|
+
});
|
|
3369
|
+
}
|
|
3370
|
+
/**
|
|
3371
|
+
* Export metrics as JSON
|
|
3372
|
+
*/
|
|
3373
|
+
exportMetrics() {
|
|
3374
|
+
const metrics = this.analytics.getMetrics();
|
|
3375
|
+
return JSON.stringify(metrics, null, 2);
|
|
3376
|
+
}
|
|
3377
|
+
/**
|
|
3378
|
+
* Get performance report
|
|
3379
|
+
*/
|
|
3380
|
+
getPerformanceReport() {
|
|
3381
|
+
const data = this.getDashboardData();
|
|
3382
|
+
let report = '=== PERFORMANCE REPORT ===\n\n';
|
|
3383
|
+
report += `Overall Score: ${data.overallScore}/100\n`;
|
|
3384
|
+
report += `FPS: ${data.fps}\n`;
|
|
3385
|
+
report += `Average Render Time: ${data.renderTime.toFixed(2)}ms\n`;
|
|
3386
|
+
report += `Memory Usage: ${data.memoryUsage.toFixed(2)}MB\n`;
|
|
3387
|
+
report += `Network Latency: ${data.networkLatency.toFixed(2)}ms\n\n`;
|
|
3388
|
+
report += 'BOTTLENECKS:\n';
|
|
3389
|
+
data.bottlenecks.forEach(b => {
|
|
3390
|
+
report += ` - ${b}\n`;
|
|
3391
|
+
});
|
|
3392
|
+
report += '\nRECOMMENDATIONS:\n';
|
|
3393
|
+
data.recommendations.forEach(r => {
|
|
3394
|
+
report += ` - ${r}\n`;
|
|
3395
|
+
});
|
|
3396
|
+
return report;
|
|
3397
|
+
}
|
|
3398
|
+
}
|
|
3399
|
+
|
|
3400
|
+
const PerformanceMonitor = ({ analytics, showOverlay = false, position = 'bottom-right' }) => {
|
|
3401
|
+
const dashboardRef = React.useRef(null);
|
|
3402
|
+
const [dashboardData, setDashboardData] = React.useState(null);
|
|
3403
|
+
React.useEffect(() => {
|
|
3404
|
+
// Initialize dashboard
|
|
3405
|
+
dashboardRef.current = new PerformanceDashboard(analytics);
|
|
3406
|
+
// Add listener for updates
|
|
3407
|
+
dashboardRef.current.addListener((data) => {
|
|
3408
|
+
setDashboardData(data);
|
|
3409
|
+
});
|
|
3410
|
+
// Start monitoring
|
|
3411
|
+
dashboardRef.current.startMonitoring();
|
|
3412
|
+
// Cleanup
|
|
3413
|
+
return () => {
|
|
3414
|
+
if (dashboardRef.current) {
|
|
3415
|
+
dashboardRef.current.stopMonitoring();
|
|
3416
|
+
}
|
|
3417
|
+
};
|
|
3418
|
+
}, [analytics]);
|
|
3419
|
+
// Get position styles
|
|
3420
|
+
const getPositionStyles = () => {
|
|
3421
|
+
const baseStyle = {
|
|
3422
|
+
position: 'fixed',
|
|
3423
|
+
zIndex: 9999,
|
|
3424
|
+
background: 'rgba(0, 0, 0, 0.9)',
|
|
3425
|
+
color: 'white',
|
|
3426
|
+
padding: '12px',
|
|
3427
|
+
borderRadius: '8px',
|
|
3428
|
+
fontSize: '12px',
|
|
3429
|
+
fontFamily: 'monospace',
|
|
3430
|
+
minWidth: '250px',
|
|
3431
|
+
maxWidth: '350px'
|
|
3432
|
+
};
|
|
3433
|
+
switch (position) {
|
|
3434
|
+
case 'top-left':
|
|
3435
|
+
return { ...baseStyle, top: '10px', left: '10px' };
|
|
3436
|
+
case 'top-right':
|
|
3437
|
+
return { ...baseStyle, top: '10px', right: '10px' };
|
|
3438
|
+
case 'bottom-left':
|
|
3439
|
+
return { ...baseStyle, bottom: '10px', left: '10px' };
|
|
3440
|
+
case 'bottom-right':
|
|
3441
|
+
return { ...baseStyle, bottom: '10px', right: '10px' };
|
|
3442
|
+
}
|
|
3443
|
+
};
|
|
3444
|
+
// Get score color
|
|
3445
|
+
const getScoreColor = (score) => {
|
|
3446
|
+
if (score >= 90)
|
|
3447
|
+
return '#4CAF50';
|
|
3448
|
+
if (score >= 70)
|
|
3449
|
+
return '#FFC107';
|
|
3450
|
+
return '#F44336';
|
|
3451
|
+
};
|
|
3452
|
+
// Get FPS color
|
|
3453
|
+
const getFPSColor = (fps) => {
|
|
3454
|
+
if (fps >= 60)
|
|
3455
|
+
return '#4CAF50';
|
|
3456
|
+
if (fps >= 30)
|
|
3457
|
+
return '#FFC107';
|
|
3458
|
+
return '#F44336';
|
|
3459
|
+
};
|
|
3460
|
+
if (!dashboardData) {
|
|
3461
|
+
return null;
|
|
3462
|
+
}
|
|
3463
|
+
if (!showOverlay) {
|
|
3464
|
+
// Return data only, no UI
|
|
3465
|
+
return (React.createElement("div", { style: { padding: '10px', background: '#f0f0f0', borderRadius: '4px' } },
|
|
3466
|
+
React.createElement("h3", null, "Performance Metrics"),
|
|
3467
|
+
React.createElement("div", null,
|
|
3468
|
+
"Score: ",
|
|
3469
|
+
React.createElement("strong", { style: { color: getScoreColor(dashboardData.overallScore) } },
|
|
3470
|
+
dashboardData.overallScore,
|
|
3471
|
+
"/100")),
|
|
3472
|
+
React.createElement("div", null,
|
|
3473
|
+
"FPS: ",
|
|
3474
|
+
React.createElement("strong", { style: { color: getFPSColor(dashboardData.fps) } }, dashboardData.fps)),
|
|
3475
|
+
React.createElement("div", null,
|
|
3476
|
+
"Render Time: ",
|
|
3477
|
+
React.createElement("strong", null,
|
|
3478
|
+
dashboardData.renderTime.toFixed(2),
|
|
3479
|
+
"ms")),
|
|
3480
|
+
React.createElement("div", null,
|
|
3481
|
+
"Memory: ",
|
|
3482
|
+
React.createElement("strong", null,
|
|
3483
|
+
dashboardData.memoryUsage.toFixed(2),
|
|
3484
|
+
"MB")),
|
|
3485
|
+
React.createElement("div", null,
|
|
3486
|
+
"Network Latency: ",
|
|
3487
|
+
React.createElement("strong", null,
|
|
3488
|
+
dashboardData.networkLatency.toFixed(2),
|
|
3489
|
+
"ms")),
|
|
3490
|
+
React.createElement("h4", null, "Bottlenecks:"),
|
|
3491
|
+
React.createElement("ul", null, dashboardData.bottlenecks.map((b, i) => (React.createElement("li", { key: i, style: { color: b.includes('CRITICAL') ? '#F44336' : '#FFC107' } }, b)))),
|
|
3492
|
+
React.createElement("h4", null, "Recommendations:"),
|
|
3493
|
+
React.createElement("ul", null, dashboardData.recommendations.map((r, i) => (React.createElement("li", { key: i }, r))))));
|
|
3494
|
+
}
|
|
3495
|
+
return (React.createElement("div", { style: getPositionStyles() },
|
|
3496
|
+
React.createElement("div", { style: { marginBottom: '8px', fontWeight: 'bold', borderBottom: '1px solid #444', paddingBottom: '4px' } }, "\uD83D\uDCCA Performance Monitor"),
|
|
3497
|
+
React.createElement("div", { style: { marginBottom: '4px' } },
|
|
3498
|
+
"Score: ",
|
|
3499
|
+
React.createElement("span", { style: { color: getScoreColor(dashboardData.overallScore), fontWeight: 'bold' } },
|
|
3500
|
+
dashboardData.overallScore,
|
|
3501
|
+
"/100")),
|
|
3502
|
+
React.createElement("div", { style: { marginBottom: '4px' } },
|
|
3503
|
+
"FPS: ",
|
|
3504
|
+
React.createElement("span", { style: { color: getFPSColor(dashboardData.fps), fontWeight: 'bold' } }, dashboardData.fps)),
|
|
3505
|
+
React.createElement("div", { style: { marginBottom: '4px' } },
|
|
3506
|
+
"Render: ",
|
|
3507
|
+
React.createElement("span", { style: { fontWeight: 'bold' } },
|
|
3508
|
+
dashboardData.renderTime.toFixed(2),
|
|
3509
|
+
"ms")),
|
|
3510
|
+
React.createElement("div", { style: { marginBottom: '4px' } },
|
|
3511
|
+
"Memory: ",
|
|
3512
|
+
React.createElement("span", { style: { fontWeight: 'bold' } },
|
|
3513
|
+
dashboardData.memoryUsage.toFixed(2),
|
|
3514
|
+
"MB")),
|
|
3515
|
+
React.createElement("div", { style: { marginBottom: '8px' } },
|
|
3516
|
+
"Network: ",
|
|
3517
|
+
React.createElement("span", { style: { fontWeight: 'bold' } },
|
|
3518
|
+
dashboardData.networkLatency.toFixed(2),
|
|
3519
|
+
"ms")),
|
|
3520
|
+
dashboardData.bottlenecks.length > 0 && (React.createElement("div", { style: {
|
|
3521
|
+
marginBottom: '8px',
|
|
3522
|
+
padding: '4px',
|
|
3523
|
+
background: 'rgba(255, 0, 0, 0.2)',
|
|
3524
|
+
borderRadius: '4px',
|
|
3525
|
+
fontSize: '10px'
|
|
3526
|
+
} },
|
|
3527
|
+
React.createElement("div", { style: { fontWeight: 'bold', marginBottom: '2px' } }, "\u26A0\uFE0F Bottlenecks:"),
|
|
3528
|
+
dashboardData.bottlenecks.slice(0, 2).map((b, i) => (React.createElement("div", { key: i, style: { color: b.includes('CRITICAL') ? '#FF6B6B' : '#FFD93D' } }, b.length > 50 ? b.substring(0, 50) + '...' : b))))),
|
|
3529
|
+
React.createElement("div", { style: { fontSize: '10px', color: '#888' } }, dashboardData.recommendations[0])));
|
|
3530
|
+
};
|
|
3531
|
+
|
|
3251
3532
|
exports.AdaptiveScrollView = AdaptiveScrollView;
|
|
3252
3533
|
exports.IntelligentLazyList = IntelligentLazyList;
|
|
3253
3534
|
exports.LazyList = LazyList;
|
|
3535
|
+
exports.PerformanceMonitor = PerformanceMonitor;
|
|
3254
3536
|
exports.SmartInfiniteScroll = SmartInfiniteScroll;
|
|
3255
3537
|
exports.useAdaptiveLoading = useAdaptiveLoading;
|
|
3256
3538
|
exports.useIntelligentScroll = useIntelligentScroll;
|