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.
Files changed (151) hide show
  1. package/dist/adapters/react/index.d.ts +91 -2
  2. package/dist/cjs/adapters/react/adapters/react/components/PerformanceMonitor.d.ts +10 -0
  3. package/dist/cjs/adapters/react/adapters/react/components/PerformanceMonitor.d.ts.map +1 -0
  4. package/dist/cjs/adapters/react/adapters/react/components/index.d.ts +2 -0
  5. package/dist/cjs/adapters/react/adapters/react/components/index.d.ts.map +1 -1
  6. package/dist/cjs/adapters/react/components/PerformanceMonitor.d.ts +10 -0
  7. package/dist/cjs/adapters/react/components/PerformanceMonitor.d.ts.map +1 -0
  8. package/dist/cjs/adapters/react/components/index.d.ts +2 -0
  9. package/dist/cjs/adapters/react/components/index.d.ts.map +1 -1
  10. package/dist/cjs/adapters/react/core/AccessibilityManager.d.ts +86 -0
  11. package/dist/cjs/adapters/react/core/AccessibilityManager.d.ts.map +1 -0
  12. package/dist/cjs/adapters/react/core/AnimationManager.d.ts +63 -0
  13. package/dist/cjs/adapters/react/core/AnimationManager.d.ts.map +1 -0
  14. package/dist/cjs/adapters/react/core/PerformanceAnalytics.d.ts +83 -0
  15. package/dist/cjs/adapters/react/core/PerformanceAnalytics.d.ts.map +1 -0
  16. package/dist/cjs/adapters/react/core/PerformanceDashboard.d.ts +60 -0
  17. package/dist/cjs/adapters/react/core/PerformanceDashboard.d.ts.map +1 -0
  18. package/dist/cjs/adapters/react/index.d.ts +4 -0
  19. package/dist/cjs/adapters/react/index.d.ts.map +1 -1
  20. package/dist/cjs/adapters/react/index.js +282 -0
  21. package/dist/cjs/adapters/react/index.js.map +1 -1
  22. package/dist/cjs/angular/adapters/react/components/PerformanceMonitor.d.ts +10 -0
  23. package/dist/cjs/angular/adapters/react/components/PerformanceMonitor.d.ts.map +1 -0
  24. package/dist/cjs/angular/adapters/react/components/index.d.ts +2 -0
  25. package/dist/cjs/angular/adapters/react/components/index.d.ts.map +1 -1
  26. package/dist/cjs/angular/core/AccessibilityManager.d.ts +86 -0
  27. package/dist/cjs/angular/core/AccessibilityManager.d.ts.map +1 -0
  28. package/dist/cjs/angular/core/AnimationManager.d.ts +63 -0
  29. package/dist/cjs/angular/core/AnimationManager.d.ts.map +1 -0
  30. package/dist/cjs/angular/core/PerformanceAnalytics.d.ts +83 -0
  31. package/dist/cjs/angular/core/PerformanceAnalytics.d.ts.map +1 -0
  32. package/dist/cjs/angular/core/PerformanceDashboard.d.ts +60 -0
  33. package/dist/cjs/angular/core/PerformanceDashboard.d.ts.map +1 -0
  34. package/dist/cjs/angular/index.d.ts +4 -0
  35. package/dist/cjs/angular/index.d.ts.map +1 -1
  36. package/dist/cjs/core/AccessibilityManager.d.ts +86 -0
  37. package/dist/cjs/core/AccessibilityManager.d.ts.map +1 -0
  38. package/dist/cjs/core/AnimationManager.d.ts +63 -0
  39. package/dist/cjs/core/AnimationManager.d.ts.map +1 -0
  40. package/dist/cjs/core/PerformanceAnalytics.d.ts +83 -0
  41. package/dist/cjs/core/PerformanceAnalytics.d.ts.map +1 -0
  42. package/dist/cjs/core/PerformanceDashboard.d.ts +60 -0
  43. package/dist/cjs/core/PerformanceDashboard.d.ts.map +1 -0
  44. package/dist/cjs/index.d.ts +4 -0
  45. package/dist/cjs/index.d.ts.map +1 -1
  46. package/dist/cjs/index.js +756 -0
  47. package/dist/cjs/index.js.map +1 -1
  48. package/dist/cjs/svelte/adapters/react/components/PerformanceMonitor.d.ts +10 -0
  49. package/dist/cjs/svelte/adapters/react/components/PerformanceMonitor.d.ts.map +1 -0
  50. package/dist/cjs/svelte/adapters/react/components/index.d.ts +2 -0
  51. package/dist/cjs/svelte/adapters/react/components/index.d.ts.map +1 -1
  52. package/dist/cjs/svelte/core/AccessibilityManager.d.ts +86 -0
  53. package/dist/cjs/svelte/core/AccessibilityManager.d.ts.map +1 -0
  54. package/dist/cjs/svelte/core/AnimationManager.d.ts +63 -0
  55. package/dist/cjs/svelte/core/AnimationManager.d.ts.map +1 -0
  56. package/dist/cjs/svelte/core/PerformanceAnalytics.d.ts +83 -0
  57. package/dist/cjs/svelte/core/PerformanceAnalytics.d.ts.map +1 -0
  58. package/dist/cjs/svelte/core/PerformanceDashboard.d.ts +60 -0
  59. package/dist/cjs/svelte/core/PerformanceDashboard.d.ts.map +1 -0
  60. package/dist/cjs/svelte/index.d.ts +4 -0
  61. package/dist/cjs/svelte/index.d.ts.map +1 -1
  62. package/dist/cjs/vue/adapters/react/components/PerformanceMonitor.d.ts +10 -0
  63. package/dist/cjs/vue/adapters/react/components/PerformanceMonitor.d.ts.map +1 -0
  64. package/dist/cjs/vue/adapters/react/components/index.d.ts +2 -0
  65. package/dist/cjs/vue/adapters/react/components/index.d.ts.map +1 -1
  66. package/dist/cjs/vue/core/AccessibilityManager.d.ts +86 -0
  67. package/dist/cjs/vue/core/AccessibilityManager.d.ts.map +1 -0
  68. package/dist/cjs/vue/core/AnimationManager.d.ts +63 -0
  69. package/dist/cjs/vue/core/AnimationManager.d.ts.map +1 -0
  70. package/dist/cjs/vue/core/PerformanceAnalytics.d.ts +83 -0
  71. package/dist/cjs/vue/core/PerformanceAnalytics.d.ts.map +1 -0
  72. package/dist/cjs/vue/core/PerformanceDashboard.d.ts +60 -0
  73. package/dist/cjs/vue/core/PerformanceDashboard.d.ts.map +1 -0
  74. package/dist/cjs/vue/index.d.ts +4 -0
  75. package/dist/cjs/vue/index.d.ts.map +1 -1
  76. package/dist/esm/adapters/react/adapters/react/components/PerformanceMonitor.d.ts +10 -0
  77. package/dist/esm/adapters/react/adapters/react/components/PerformanceMonitor.d.ts.map +1 -0
  78. package/dist/esm/adapters/react/adapters/react/components/index.d.ts +2 -0
  79. package/dist/esm/adapters/react/adapters/react/components/index.d.ts.map +1 -1
  80. package/dist/esm/adapters/react/components/PerformanceMonitor.d.ts +10 -0
  81. package/dist/esm/adapters/react/components/PerformanceMonitor.d.ts.map +1 -0
  82. package/dist/esm/adapters/react/components/index.d.ts +2 -0
  83. package/dist/esm/adapters/react/components/index.d.ts.map +1 -1
  84. package/dist/esm/adapters/react/core/AccessibilityManager.d.ts +86 -0
  85. package/dist/esm/adapters/react/core/AccessibilityManager.d.ts.map +1 -0
  86. package/dist/esm/adapters/react/core/AnimationManager.d.ts +63 -0
  87. package/dist/esm/adapters/react/core/AnimationManager.d.ts.map +1 -0
  88. package/dist/esm/adapters/react/core/PerformanceAnalytics.d.ts +83 -0
  89. package/dist/esm/adapters/react/core/PerformanceAnalytics.d.ts.map +1 -0
  90. package/dist/esm/adapters/react/core/PerformanceDashboard.d.ts +60 -0
  91. package/dist/esm/adapters/react/core/PerformanceDashboard.d.ts.map +1 -0
  92. package/dist/esm/adapters/react/index.d.ts +4 -0
  93. package/dist/esm/adapters/react/index.d.ts.map +1 -1
  94. package/dist/esm/adapters/react/index.js +282 -1
  95. package/dist/esm/adapters/react/index.js.map +1 -1
  96. package/dist/esm/angular/adapters/react/components/PerformanceMonitor.d.ts +10 -0
  97. package/dist/esm/angular/adapters/react/components/PerformanceMonitor.d.ts.map +1 -0
  98. package/dist/esm/angular/adapters/react/components/index.d.ts +2 -0
  99. package/dist/esm/angular/adapters/react/components/index.d.ts.map +1 -1
  100. package/dist/esm/angular/core/AccessibilityManager.d.ts +86 -0
  101. package/dist/esm/angular/core/AccessibilityManager.d.ts.map +1 -0
  102. package/dist/esm/angular/core/AnimationManager.d.ts +63 -0
  103. package/dist/esm/angular/core/AnimationManager.d.ts.map +1 -0
  104. package/dist/esm/angular/core/PerformanceAnalytics.d.ts +83 -0
  105. package/dist/esm/angular/core/PerformanceAnalytics.d.ts.map +1 -0
  106. package/dist/esm/angular/core/PerformanceDashboard.d.ts +60 -0
  107. package/dist/esm/angular/core/PerformanceDashboard.d.ts.map +1 -0
  108. package/dist/esm/angular/index.d.ts +4 -0
  109. package/dist/esm/angular/index.d.ts.map +1 -1
  110. package/dist/esm/core/AccessibilityManager.d.ts +86 -0
  111. package/dist/esm/core/AccessibilityManager.d.ts.map +1 -0
  112. package/dist/esm/core/AnimationManager.d.ts +63 -0
  113. package/dist/esm/core/AnimationManager.d.ts.map +1 -0
  114. package/dist/esm/core/PerformanceAnalytics.d.ts +83 -0
  115. package/dist/esm/core/PerformanceAnalytics.d.ts.map +1 -0
  116. package/dist/esm/core/PerformanceDashboard.d.ts +60 -0
  117. package/dist/esm/core/PerformanceDashboard.d.ts.map +1 -0
  118. package/dist/esm/index.d.ts +4 -0
  119. package/dist/esm/index.d.ts.map +1 -1
  120. package/dist/esm/index.js +753 -1
  121. package/dist/esm/index.js.map +1 -1
  122. package/dist/esm/svelte/adapters/react/components/PerformanceMonitor.d.ts +10 -0
  123. package/dist/esm/svelte/adapters/react/components/PerformanceMonitor.d.ts.map +1 -0
  124. package/dist/esm/svelte/adapters/react/components/index.d.ts +2 -0
  125. package/dist/esm/svelte/adapters/react/components/index.d.ts.map +1 -1
  126. package/dist/esm/svelte/core/AccessibilityManager.d.ts +86 -0
  127. package/dist/esm/svelte/core/AccessibilityManager.d.ts.map +1 -0
  128. package/dist/esm/svelte/core/AnimationManager.d.ts +63 -0
  129. package/dist/esm/svelte/core/AnimationManager.d.ts.map +1 -0
  130. package/dist/esm/svelte/core/PerformanceAnalytics.d.ts +83 -0
  131. package/dist/esm/svelte/core/PerformanceAnalytics.d.ts.map +1 -0
  132. package/dist/esm/svelte/core/PerformanceDashboard.d.ts +60 -0
  133. package/dist/esm/svelte/core/PerformanceDashboard.d.ts.map +1 -0
  134. package/dist/esm/svelte/index.d.ts +4 -0
  135. package/dist/esm/svelte/index.d.ts.map +1 -1
  136. package/dist/esm/vue/adapters/react/components/PerformanceMonitor.d.ts +10 -0
  137. package/dist/esm/vue/adapters/react/components/PerformanceMonitor.d.ts.map +1 -0
  138. package/dist/esm/vue/adapters/react/components/index.d.ts +2 -0
  139. package/dist/esm/vue/adapters/react/components/index.d.ts.map +1 -1
  140. package/dist/esm/vue/core/AccessibilityManager.d.ts +86 -0
  141. package/dist/esm/vue/core/AccessibilityManager.d.ts.map +1 -0
  142. package/dist/esm/vue/core/AnimationManager.d.ts +63 -0
  143. package/dist/esm/vue/core/AnimationManager.d.ts.map +1 -0
  144. package/dist/esm/vue/core/PerformanceAnalytics.d.ts +83 -0
  145. package/dist/esm/vue/core/PerformanceAnalytics.d.ts.map +1 -0
  146. package/dist/esm/vue/core/PerformanceDashboard.d.ts +60 -0
  147. package/dist/esm/vue/core/PerformanceDashboard.d.ts.map +1 -0
  148. package/dist/esm/vue/index.d.ts +4 -0
  149. package/dist/esm/vue/index.d.ts.map +1 -1
  150. package/dist/index.d.ts +289 -1
  151. 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;