@rakeyshgidwani/roger-ui-bank-theme-stan-design 0.2.9 → 0.2.10
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/CHANGELOG.md +1 -1
- package/dist/components/ui/accessibility-demo.esm.js +30 -24
- package/dist/components/ui/accessibility-demo.js +30 -24
- package/dist/components/ui/advanced-component-architecture-demo.esm.js +235 -179
- package/dist/components/ui/advanced-component-architecture-demo.js +235 -179
- package/dist/components/ui/advanced-transition-system-demo.esm.js +110 -64
- package/dist/components/ui/advanced-transition-system-demo.js +110 -64
- package/dist/components/ui/advanced-transition-system.esm.js +166 -122
- package/dist/components/ui/advanced-transition-system.js +166 -122
- package/dist/components/ui/animation/animated-container.esm.js +52 -29
- package/dist/components/ui/animation/animated-container.js +52 -29
- package/dist/components/ui/animation/staggered-container.esm.js +18 -9
- package/dist/components/ui/animation/staggered-container.js +18 -9
- package/dist/components/ui/animation-demo.esm.js +67 -35
- package/dist/components/ui/animation-demo.js +67 -35
- package/dist/components/ui/badge.esm.js +9 -6
- package/dist/components/ui/badge.js +9 -6
- package/dist/components/ui/battery-conscious-animation-demo.esm.js +122 -87
- package/dist/components/ui/battery-conscious-animation-demo.js +122 -87
- package/dist/components/ui/border-radius-shadow-demo.esm.js +23 -12
- package/dist/components/ui/border-radius-shadow-demo.js +23 -12
- package/dist/components/ui/button.esm.js +8 -2
- package/dist/components/ui/button.js +8 -2
- package/dist/components/ui/card.esm.js +33 -8
- package/dist/components/ui/card.js +33 -8
- package/dist/components/ui/checkbox.esm.js +3 -3
- package/dist/components/ui/checkbox.js +3 -3
- package/dist/components/ui/color-preview.esm.js +68 -45
- package/dist/components/ui/color-preview.js +68 -45
- package/dist/components/ui/data-display/chart.esm.js +112 -84
- package/dist/components/ui/data-display/chart.js +112 -84
- package/dist/components/ui/data-display/data-grid-simple.esm.js +1 -1
- package/dist/components/ui/data-display/data-grid-simple.js +1 -1
- package/dist/components/ui/data-display/data-grid.esm.js +80 -67
- package/dist/components/ui/data-display/data-grid.js +80 -67
- package/dist/components/ui/data-display/list.esm.js +53 -45
- package/dist/components/ui/data-display/list.js +53 -45
- package/dist/components/ui/data-display/table.esm.js +62 -54
- package/dist/components/ui/data-display/table.js +62 -54
- package/dist/components/ui/data-display/timeline.esm.js +39 -34
- package/dist/components/ui/data-display/timeline.js +39 -34
- package/dist/components/ui/data-display/tree.esm.js +116 -84
- package/dist/components/ui/data-display/tree.js +116 -84
- package/dist/components/ui/data-display/types.esm.js +389 -364
- package/dist/components/ui/data-display/types.js +389 -364
- package/dist/components/ui/enterprise-mobile-experience-demo.esm.js +120 -70
- package/dist/components/ui/enterprise-mobile-experience-demo.js +120 -70
- package/dist/components/ui/enterprise-mobile-experience.esm.js +124 -73
- package/dist/components/ui/enterprise-mobile-experience.js +124 -73
- package/dist/components/ui/feedback/alert.esm.js +22 -15
- package/dist/components/ui/feedback/alert.js +22 -15
- package/dist/components/ui/feedback/progress.esm.js +47 -24
- package/dist/components/ui/feedback/progress.js +47 -24
- package/dist/components/ui/feedback/skeleton.esm.js +39 -29
- package/dist/components/ui/feedback/skeleton.js +39 -29
- package/dist/components/ui/feedback/toast.esm.js +62 -38
- package/dist/components/ui/feedback/toast.js +62 -38
- package/dist/components/ui/feedback/types.esm.js +83 -83
- package/dist/components/ui/feedback/types.js +83 -83
- package/dist/components/ui/font-preview.esm.js +41 -39
- package/dist/components/ui/font-preview.js +41 -39
- package/dist/components/ui/form-demo.esm.js +150 -113
- package/dist/components/ui/form-demo.js +150 -113
- package/dist/components/ui/hardware-acceleration-demo.esm.js +137 -87
- package/dist/components/ui/hardware-acceleration-demo.js +137 -87
- package/dist/components/ui/input.esm.js +4 -1
- package/dist/components/ui/input.js +4 -1
- package/dist/components/ui/layout-demo.esm.js +81 -56
- package/dist/components/ui/layout-demo.js +81 -56
- package/dist/components/ui/layouts/adaptive-layout.esm.js +27 -8
- package/dist/components/ui/layouts/adaptive-layout.js +27 -8
- package/dist/components/ui/layouts/desktop-layout.esm.js +39 -19
- package/dist/components/ui/layouts/desktop-layout.js +39 -19
- package/dist/components/ui/layouts/mobile-layout.esm.js +19 -9
- package/dist/components/ui/layouts/mobile-layout.js +19 -9
- package/dist/components/ui/layouts/tablet-layout.esm.js +28 -14
- package/dist/components/ui/layouts/tablet-layout.js +28 -14
- package/dist/components/ui/mobile-form-validation.esm.js +120 -87
- package/dist/components/ui/mobile-form-validation.js +120 -87
- package/dist/components/ui/mobile-input-demo.esm.js +19 -13
- package/dist/components/ui/mobile-input-demo.js +19 -13
- package/dist/components/ui/mobile-input.esm.js +185 -120
- package/dist/components/ui/mobile-input.js +185 -120
- package/dist/components/ui/mobile-skeleton-loading-demo.esm.js +128 -111
- package/dist/components/ui/mobile-skeleton-loading-demo.js +128 -111
- package/dist/components/ui/navigation/breadcrumb.esm.js +17 -14
- package/dist/components/ui/navigation/breadcrumb.js +17 -14
- package/dist/components/ui/navigation/index.esm.js +23 -1
- package/dist/components/ui/navigation/index.js +23 -1
- package/dist/components/ui/navigation/menu.esm.js +49 -35
- package/dist/components/ui/navigation/menu.js +49 -35
- package/dist/components/ui/navigation/navigation-demo.esm.js +81 -74
- package/dist/components/ui/navigation/navigation-demo.js +81 -74
- package/dist/components/ui/navigation/pagination.esm.js +62 -50
- package/dist/components/ui/navigation/pagination.js +62 -50
- package/dist/components/ui/navigation/sidebar.esm.js +56 -42
- package/dist/components/ui/navigation/sidebar.js +56 -42
- package/dist/components/ui/navigation/stepper.esm.js +34 -23
- package/dist/components/ui/navigation/stepper.js +34 -23
- package/dist/components/ui/navigation/tabs.esm.js +32 -21
- package/dist/components/ui/navigation/tabs.js +32 -21
- package/dist/components/ui/navigation/types.esm.js +196 -195
- package/dist/components/ui/navigation/types.js +196 -195
- package/dist/components/ui/overlay/backdrop.esm.js +17 -16
- package/dist/components/ui/overlay/backdrop.js +17 -16
- package/dist/components/ui/overlay/focus-manager.esm.js +21 -19
- package/dist/components/ui/overlay/focus-manager.js +21 -19
- package/dist/components/ui/overlay/index.esm.js +22 -2
- package/dist/components/ui/overlay/index.js +22 -2
- package/dist/components/ui/overlay/modal.esm.js +38 -34
- package/dist/components/ui/overlay/modal.js +38 -34
- package/dist/components/ui/overlay/overlay-manager.esm.js +25 -20
- package/dist/components/ui/overlay/overlay-manager.js +25 -20
- package/dist/components/ui/overlay/popover.esm.js +74 -58
- package/dist/components/ui/overlay/popover.js +74 -58
- package/dist/components/ui/overlay/portal.esm.js +7 -7
- package/dist/components/ui/overlay/portal.js +7 -7
- package/dist/components/ui/overlay/tooltip.esm.js +54 -39
- package/dist/components/ui/overlay/tooltip.js +54 -39
- package/dist/components/ui/overlay/types.esm.js +132 -131
- package/dist/components/ui/overlay/types.js +132 -131
- package/dist/components/ui/performance-demo.esm.js +135 -88
- package/dist/components/ui/performance-demo.js +135 -88
- package/dist/components/ui/semantic-input-system-demo.esm.js +117 -80
- package/dist/components/ui/semantic-input-system-demo.js +117 -80
- package/dist/components/ui/theme-customizer.esm.js +84 -52
- package/dist/components/ui/theme-customizer.js +84 -52
- package/dist/components/ui/theme-preview.esm.js +95 -43
- package/dist/components/ui/theme-preview.js +95 -43
- package/dist/components/ui/theme-switcher.esm.js +70 -44
- package/dist/components/ui/theme-switcher.js +70 -44
- package/dist/components/ui/theme-toggle.esm.js +3 -3
- package/dist/components/ui/theme-toggle.js +3 -3
- package/dist/components/ui/token-demo.esm.js +33 -21
- package/dist/components/ui/token-demo.js +33 -21
- package/dist/components/ui/touch-demo.esm.js +102 -73
- package/dist/components/ui/touch-demo.js +102 -73
- package/dist/components/ui/touch-friendly-interface-demo.esm.js +102 -64
- package/dist/components/ui/touch-friendly-interface-demo.js +102 -64
- package/dist/components/ui/touch-friendly-interface.esm.js +85 -61
- package/dist/components/ui/touch-friendly-interface.js +85 -61
- package/dist/hooks/use-accessibility-support.esm.js +115 -85
- package/dist/hooks/use-accessibility-support.js +115 -85
- package/dist/hooks/use-adaptive-layout.esm.js +56 -33
- package/dist/hooks/use-adaptive-layout.js +56 -33
- package/dist/hooks/use-advanced-patterns.esm.js +57 -42
- package/dist/hooks/use-advanced-patterns.js +57 -42
- package/dist/hooks/use-advanced-transition-system.esm.js +112 -71
- package/dist/hooks/use-advanced-transition-system.js +112 -71
- package/dist/hooks/use-animation-profile.esm.js +63 -34
- package/dist/hooks/use-animation-profile.js +63 -34
- package/dist/hooks/use-battery-animations.esm.js +80 -55
- package/dist/hooks/use-battery-animations.js +80 -55
- package/dist/hooks/use-battery-conscious-loading.esm.js +166 -123
- package/dist/hooks/use-battery-conscious-loading.js +166 -123
- package/dist/hooks/use-battery-optimization.esm.js +78 -55
- package/dist/hooks/use-battery-optimization.js +78 -55
- package/dist/hooks/use-battery-status.esm.js +73 -51
- package/dist/hooks/use-battery-status.js +73 -51
- package/dist/hooks/use-component-performance.esm.js +62 -47
- package/dist/hooks/use-component-performance.js +62 -47
- package/dist/hooks/use-device-loading-states.esm.js +152 -109
- package/dist/hooks/use-device-loading-states.js +152 -109
- package/dist/hooks/use-device.esm.js +25 -14
- package/dist/hooks/use-device.js +25 -14
- package/dist/hooks/use-enterprise-mobile-experience.esm.js +137 -88
- package/dist/hooks/use-enterprise-mobile-experience.js +137 -88
- package/dist/hooks/use-form-feedback.esm.js +124 -81
- package/dist/hooks/use-form-feedback.js +124 -81
- package/dist/hooks/use-form-performance.esm.js +127 -92
- package/dist/hooks/use-form-performance.js +127 -92
- package/dist/hooks/use-frame-rate.esm.js +56 -37
- package/dist/hooks/use-frame-rate.js +56 -37
- package/dist/hooks/use-gestures.esm.js +96 -72
- package/dist/hooks/use-gestures.js +96 -72
- package/dist/hooks/use-hardware-acceleration.esm.js +65 -37
- package/dist/hooks/use-hardware-acceleration.js +65 -37
- package/dist/hooks/use-input-accessibility.esm.js +157 -119
- package/dist/hooks/use-input-accessibility.js +157 -119
- package/dist/hooks/use-input-performance.esm.js +139 -104
- package/dist/hooks/use-input-performance.js +139 -104
- package/dist/hooks/use-layout-performance.esm.js +50 -29
- package/dist/hooks/use-layout-performance.js +50 -29
- package/dist/hooks/use-loading-accessibility.esm.js +209 -169
- package/dist/hooks/use-loading-accessibility.js +209 -169
- package/dist/hooks/use-loading-performance.esm.js +117 -93
- package/dist/hooks/use-loading-performance.js +117 -93
- package/dist/hooks/use-memory-usage.esm.js +57 -38
- package/dist/hooks/use-memory-usage.js +57 -38
- package/dist/hooks/use-mobile-form-layout.esm.js +111 -74
- package/dist/hooks/use-mobile-form-layout.js +111 -74
- package/dist/hooks/use-mobile-form-validation.esm.js +211 -144
- package/dist/hooks/use-mobile-form-validation.js +211 -144
- package/dist/hooks/use-mobile-keyboard-optimization.esm.js +154 -113
- package/dist/hooks/use-mobile-keyboard-optimization.js +154 -113
- package/dist/hooks/use-mobile-layout.esm.js +73 -51
- package/dist/hooks/use-mobile-layout.js +73 -51
- package/dist/hooks/use-mobile-optimization.esm.js +72 -44
- package/dist/hooks/use-mobile-optimization.js +72 -44
- package/dist/hooks/use-mobile-skeleton.esm.js +97 -64
- package/dist/hooks/use-mobile-skeleton.js +97 -64
- package/dist/hooks/use-mobile-touch.esm.js +128 -93
- package/dist/hooks/use-mobile-touch.js +128 -93
- package/dist/hooks/use-performance-throttling.esm.js +72 -48
- package/dist/hooks/use-performance-throttling.js +72 -48
- package/dist/hooks/use-performance.esm.js +90 -52
- package/dist/hooks/use-performance.js +90 -52
- package/dist/hooks/use-reusable-architecture.esm.js +94 -65
- package/dist/hooks/use-reusable-architecture.js +94 -65
- package/dist/hooks/use-semantic-input-types.esm.js +166 -124
- package/dist/hooks/use-semantic-input-types.js +166 -124
- package/dist/hooks/use-semantic-input.esm.js +178 -126
- package/dist/hooks/use-semantic-input.js +178 -126
- package/dist/hooks/use-tablet-layout.esm.js +67 -38
- package/dist/hooks/use-tablet-layout.js +67 -38
- package/dist/hooks/use-touch-friendly-input.esm.js +193 -149
- package/dist/hooks/use-touch-friendly-input.js +193 -149
- package/dist/hooks/use-touch-friendly-interface.esm.js +99 -67
- package/dist/hooks/use-touch-friendly-interface.js +99 -67
- package/dist/hooks/use-touch-optimization.esm.js +99 -72
- package/dist/hooks/use-touch-optimization.js +99 -72
- package/dist/index.esm.js +289 -280
- package/dist/index.js +289 -280
- package/dist/lib/utils.esm.js +1 -1
- package/dist/lib/utils.js +1 -1
- package/dist/plugins/theme-css-generator.esm.js +104 -55
- package/dist/plugins/theme-css-generator.js +104 -55
- package/dist/provider.esm.js +4 -4
- package/dist/provider.js +4 -4
- package/dist/styles.css +1 -1
- package/dist/theme.esm.js +633 -468
- package/dist/theme.js +633 -468
- package/dist/themes/ThemeContext.esm.js +15 -15
- package/dist/themes/ThemeContext.js +15 -15
- package/dist/themes/ThemeProvider.esm.js +25 -22
- package/dist/themes/ThemeProvider.js +25 -22
- package/dist/themes/accessibility.esm.js +147 -108
- package/dist/themes/accessibility.js +147 -108
- package/dist/themes/aria-patterns.esm.js +198 -162
- package/dist/themes/aria-patterns.js +198 -162
- package/dist/themes/base-themes.esm.js +14 -11
- package/dist/themes/base-themes.js +14 -11
- package/dist/themes/colorManager.esm.js +101 -83
- package/dist/themes/colorManager.js +101 -83
- package/dist/themes/examples/dark-theme.esm.js +133 -103
- package/dist/themes/examples/dark-theme.js +133 -103
- package/dist/themes/examples/minimal-theme.esm.js +83 -61
- package/dist/themes/examples/minimal-theme.js +83 -61
- package/dist/themes/focus-management.esm.js +202 -143
- package/dist/themes/focus-management.js +202 -143
- package/dist/themes/fontLoader.esm.js +28 -19
- package/dist/themes/fontLoader.js +28 -19
- package/dist/themes/high-contrast.esm.js +152 -104
- package/dist/themes/high-contrast.js +152 -104
- package/dist/themes/inheritance.esm.js +35 -27
- package/dist/themes/inheritance.js +35 -27
- package/dist/themes/keyboard-navigation.esm.js +152 -123
- package/dist/themes/keyboard-navigation.js +152 -123
- package/dist/themes/motion-reduction.esm.js +193 -133
- package/dist/themes/motion-reduction.js +193 -133
- package/dist/themes/navigation.esm.js +146 -146
- package/dist/themes/navigation.js +146 -146
- package/dist/themes/screen-reader.esm.js +159 -94
- package/dist/themes/screen-reader.js +159 -94
- package/dist/themes/systemThemeDetector.esm.js +42 -34
- package/dist/themes/systemThemeDetector.js +42 -34
- package/dist/themes/themeCSSUpdater.esm.js +21 -9
- package/dist/themes/themeCSSUpdater.js +21 -9
- package/dist/themes/themePersistence.esm.js +68 -47
- package/dist/themes/themePersistence.js +68 -47
- package/dist/themes/themes/stan-design.esm.js +633 -468
- package/dist/themes/themes/stan-design.js +633 -468
- package/dist/themes/types.esm.js +301 -287
- package/dist/themes/types.js +301 -287
- package/dist/themes/useSystemTheme.esm.js +4 -4
- package/dist/themes/useSystemTheme.js +4 -4
- package/dist/themes/useTheme.esm.js +4 -4
- package/dist/themes/useTheme.js +4 -4
- package/dist/themes/validation.esm.js +128 -77
- package/dist/themes/validation.js +128 -77
- package/dist/tokens/index.esm.js +15 -4
- package/dist/tokens/index.js +15 -4
- package/dist/tokens/tokenExporter.esm.js +87 -61
- package/dist/tokens/tokenExporter.js +87 -61
- package/dist/tokens/tokenGenerator.esm.js +86 -77
- package/dist/tokens/tokenGenerator.js +86 -77
- package/dist/tokens/tokenManager.esm.js +64 -51
- package/dist/tokens/tokenManager.js +64 -51
- package/dist/tokens/tokenValidator.esm.js +193 -147
- package/dist/tokens/tokenValidator.js +193 -147
- package/dist/tokens/types.esm.js +49 -35
- package/dist/tokens/types.js +49 -35
- package/dist/utils/bundle-analyzer.esm.js +83 -65
- package/dist/utils/bundle-analyzer.js +83 -65
- package/dist/utils/bundle-splitting.esm.js +142 -117
- package/dist/utils/bundle-splitting.js +142 -117
- package/dist/utils/lazy-loading.esm.js +132 -106
- package/dist/utils/lazy-loading.js +132 -106
- package/dist/utils/performance-monitor.esm.js +170 -129
- package/dist/utils/performance-monitor.js +170 -129
- package/dist/utils/tree-shaking.esm.js +69 -61
- package/dist/utils/tree-shaking.js +69 -61
- package/package.json +1 -1
- package/src/index.ts +146 -146
|
@@ -1,24 +1,45 @@
|
|
|
1
1
|
import { useState, useCallback, useRef, useEffect } from 'react'
|
|
2
2
|
|
|
3
3
|
export interface LoadingPerformanceConfig {
|
|
4
|
-
enableAnimationOptimization
|
|
4
|
+
enableAnimationOptimization?: boolean
|
|
5
|
+
enableMemoryManagement?: boolean
|
|
6
|
+
enableBatteryOptimization?: boolean
|
|
7
|
+
enablePerformanceMonitoring?: boolean
|
|
8
|
+
enableAutoOptimization?: boolean
|
|
9
|
+
animationFrameRate?: number
|
|
10
|
+
memoryThreshold?: number
|
|
11
|
+
batteryThreshold?: number
|
|
12
|
+
}
|
|
5
13
|
|
|
6
14
|
export interface PerformanceMetrics {
|
|
7
|
-
frameRate
|
|
15
|
+
frameRate: number
|
|
16
|
+
renderTime: number
|
|
17
|
+
memoryUsage: number
|
|
18
|
+
batteryLevel: number
|
|
19
|
+
animationSmoothness: number
|
|
20
|
+
loadingEfficiency: number
|
|
21
|
+
}
|
|
8
22
|
|
|
9
23
|
export interface OptimizationStrategy {
|
|
10
|
-
id
|
|
24
|
+
id: string
|
|
25
|
+
name: string
|
|
26
|
+
type: 'animation' | 'memory' | 'battery' | 'performance'
|
|
27
|
+
impact: 'low' | 'medium' | 'high'
|
|
28
|
+
applied: boolean
|
|
29
|
+
description: string
|
|
30
|
+
metrics: Partial<PerformanceMetrics>
|
|
31
|
+
}
|
|
11
32
|
|
|
12
33
|
export interface LoadingPerformanceCallbacks {
|
|
13
|
-
onPerformanceOptimized
|
|
14
|
-
onMemoryOptimized
|
|
15
|
-
onBatteryOptimized
|
|
16
|
-
onAnimationOptimized
|
|
34
|
+
onPerformanceOptimized?: (strategy: OptimizationStrategy) => void
|
|
35
|
+
onMemoryOptimized?: (optimization: string) => void
|
|
36
|
+
onBatteryOptimized?: (strategy: string) => void
|
|
37
|
+
onAnimationOptimized?: (optimization: string) => void
|
|
17
38
|
}
|
|
18
39
|
|
|
19
40
|
export const useLoadingPerformance = (
|
|
20
|
-
config= {},
|
|
21
|
-
callbacks= {}
|
|
41
|
+
config: LoadingPerformanceConfig = {},
|
|
42
|
+
callbacks: LoadingPerformanceCallbacks = {}
|
|
22
43
|
) => {
|
|
23
44
|
const {
|
|
24
45
|
enableAnimationOptimization = true,
|
|
@@ -29,12 +50,13 @@ export const useLoadingPerformance = (
|
|
|
29
50
|
} = config
|
|
30
51
|
|
|
31
52
|
const [performanceMetrics, setPerformanceMetrics] = useState<PerformanceMetrics>({
|
|
32
|
-
frameRate,
|
|
33
|
-
renderTime,
|
|
34
|
-
memoryUsage,
|
|
35
|
-
batteryLevel,
|
|
36
|
-
animationSmoothness,
|
|
37
|
-
loadingEfficiency
|
|
53
|
+
frameRate: 60,
|
|
54
|
+
renderTime: 0,
|
|
55
|
+
memoryUsage: 0,
|
|
56
|
+
batteryLevel: 1,
|
|
57
|
+
animationSmoothness: 100,
|
|
58
|
+
loadingEfficiency: 100
|
|
59
|
+
})
|
|
38
60
|
|
|
39
61
|
const [optimizationStrategies, setOptimizationStrategies] = useState<OptimizationStrategy[]>([])
|
|
40
62
|
const [isOptimizing, setIsOptimizing] = useState(false)
|
|
@@ -61,7 +83,7 @@ export const useLoadingPerformance = (
|
|
|
61
83
|
|
|
62
84
|
setPerformanceMetrics(prev => ({
|
|
63
85
|
...prev,
|
|
64
|
-
frameRate,
|
|
86
|
+
frameRate: fps,
|
|
65
87
|
renderTime
|
|
66
88
|
}))
|
|
67
89
|
|
|
@@ -93,11 +115,11 @@ export const useLoadingPerformance = (
|
|
|
93
115
|
|
|
94
116
|
setPerformanceMetrics(prev => ({
|
|
95
117
|
...prev,
|
|
96
|
-
memoryUsage) / 100
|
|
118
|
+
memoryUsage: Math.round(usedMemory * 100) / 100
|
|
97
119
|
}))
|
|
98
120
|
}
|
|
99
121
|
} catch (error) {
|
|
100
|
-
console.warn('Memory monitoring failed, error)
|
|
122
|
+
console.warn('Memory monitoring failed:', error)
|
|
101
123
|
}
|
|
102
124
|
}
|
|
103
125
|
|
|
@@ -122,10 +144,11 @@ export const useLoadingPerformance = (
|
|
|
122
144
|
|
|
123
145
|
setPerformanceMetrics(prev => ({
|
|
124
146
|
...prev,
|
|
125
|
-
batteryLevel
|
|
147
|
+
batteryLevel: level
|
|
148
|
+
}))
|
|
126
149
|
}
|
|
127
150
|
} catch (error) {
|
|
128
|
-
console.warn('Battery monitoring failed, error)
|
|
151
|
+
console.warn('Battery monitoring failed:', error)
|
|
129
152
|
}
|
|
130
153
|
}
|
|
131
154
|
|
|
@@ -145,33 +168,33 @@ export const useLoadingPerformance = (
|
|
|
145
168
|
setIsOptimizing(true)
|
|
146
169
|
|
|
147
170
|
setTimeout(() => {
|
|
148
|
-
const animationOptimizations] = [
|
|
171
|
+
const animationOptimizations: OptimizationStrategy[] = [
|
|
149
172
|
{
|
|
150
|
-
id,
|
|
151
|
-
name,
|
|
152
|
-
type,
|
|
153
|
-
impact,
|
|
154
|
-
applied,
|
|
155
|
-
description,
|
|
156
|
-
metrics, animationSmoothness}
|
|
173
|
+
id: 'anim-frame-rate',
|
|
174
|
+
name: 'Frame Rate Optimization',
|
|
175
|
+
type: 'animation',
|
|
176
|
+
impact: 'high',
|
|
177
|
+
applied: true,
|
|
178
|
+
description: 'Optimized animation frame rate for smooth performance',
|
|
179
|
+
metrics: { frameRate: 60, animationSmoothness: 95 }
|
|
157
180
|
},
|
|
158
181
|
{
|
|
159
|
-
id,
|
|
160
|
-
name,
|
|
161
|
-
type,
|
|
162
|
-
impact,
|
|
163
|
-
applied,
|
|
164
|
-
description,
|
|
165
|
-
metrics}
|
|
182
|
+
id: 'anim-smoothness',
|
|
183
|
+
name: 'Animation Smoothness',
|
|
184
|
+
type: 'animation',
|
|
185
|
+
impact: 'medium',
|
|
186
|
+
applied: true,
|
|
187
|
+
description: 'Enhanced animation smoothness and timing',
|
|
188
|
+
metrics: { animationSmoothness: 90 }
|
|
166
189
|
},
|
|
167
190
|
{
|
|
168
|
-
id,
|
|
169
|
-
name,
|
|
170
|
-
type,
|
|
171
|
-
impact,
|
|
172
|
-
applied,
|
|
173
|
-
description,
|
|
174
|
-
metrics}
|
|
191
|
+
id: 'anim-efficiency',
|
|
192
|
+
name: 'Animation Efficiency',
|
|
193
|
+
type: 'animation',
|
|
194
|
+
impact: 'medium',
|
|
195
|
+
applied: true,
|
|
196
|
+
description: 'Improved animation efficiency and performance',
|
|
197
|
+
metrics: { loadingEfficiency: 85 }
|
|
175
198
|
}
|
|
176
199
|
]
|
|
177
200
|
|
|
@@ -193,24 +216,24 @@ export const useLoadingPerformance = (
|
|
|
193
216
|
setIsOptimizing(true)
|
|
194
217
|
|
|
195
218
|
setTimeout(() => {
|
|
196
|
-
const memoryOptimizations] = [
|
|
219
|
+
const memoryOptimizations: OptimizationStrategy[] = [
|
|
197
220
|
{
|
|
198
|
-
id,
|
|
199
|
-
name,
|
|
200
|
-
type,
|
|
201
|
-
impact,
|
|
202
|
-
applied,
|
|
203
|
-
description,
|
|
204
|
-
metrics}
|
|
221
|
+
id: 'mem-usage',
|
|
222
|
+
name: 'Memory Usage Optimization',
|
|
223
|
+
type: 'memory',
|
|
224
|
+
impact: 'high',
|
|
225
|
+
applied: true,
|
|
226
|
+
description: 'Optimized memory usage for loading states',
|
|
227
|
+
metrics: { memoryUsage: 25 }
|
|
205
228
|
},
|
|
206
229
|
{
|
|
207
|
-
id,
|
|
208
|
-
name,
|
|
209
|
-
type,
|
|
210
|
-
impact,
|
|
211
|
-
applied,
|
|
212
|
-
description,
|
|
213
|
-
metrics}
|
|
230
|
+
id: 'mem-cleanup',
|
|
231
|
+
name: 'Memory Cleanup',
|
|
232
|
+
type: 'memory',
|
|
233
|
+
impact: 'medium',
|
|
234
|
+
applied: true,
|
|
235
|
+
description: 'Automatic memory cleanup and garbage collection',
|
|
236
|
+
metrics: { memoryUsage: 20 }
|
|
214
237
|
}
|
|
215
238
|
]
|
|
216
239
|
|
|
@@ -232,24 +255,24 @@ export const useLoadingPerformance = (
|
|
|
232
255
|
setIsOptimizing(true)
|
|
233
256
|
|
|
234
257
|
setTimeout(() => {
|
|
235
|
-
const batteryOptimizations] = [
|
|
258
|
+
const batteryOptimizations: OptimizationStrategy[] = [
|
|
236
259
|
{
|
|
237
|
-
id,
|
|
238
|
-
name,
|
|
239
|
-
type,
|
|
240
|
-
impact,
|
|
241
|
-
applied,
|
|
242
|
-
description,
|
|
243
|
-
metrics}
|
|
260
|
+
id: 'battery-efficiency',
|
|
261
|
+
name: 'Battery Efficiency',
|
|
262
|
+
type: 'battery',
|
|
263
|
+
impact: 'high',
|
|
264
|
+
applied: true,
|
|
265
|
+
description: 'Battery-conscious loading state optimization',
|
|
266
|
+
metrics: { batteryLevel: 0.8 }
|
|
244
267
|
},
|
|
245
268
|
{
|
|
246
|
-
id,
|
|
247
|
-
name,
|
|
248
|
-
type,
|
|
249
|
-
impact,
|
|
250
|
-
applied,
|
|
251
|
-
description,
|
|
252
|
-
metrics}
|
|
269
|
+
id: 'battery-adaptive',
|
|
270
|
+
name: 'Battery Adaptive Loading',
|
|
271
|
+
type: 'battery',
|
|
272
|
+
impact: 'medium',
|
|
273
|
+
applied: true,
|
|
274
|
+
description: 'Adaptive loading based on battery level',
|
|
275
|
+
metrics: { loadingEfficiency: 80 }
|
|
253
276
|
}
|
|
254
277
|
]
|
|
255
278
|
|
|
@@ -271,24 +294,24 @@ export const useLoadingPerformance = (
|
|
|
271
294
|
setIsOptimizing(true)
|
|
272
295
|
|
|
273
296
|
setTimeout(() => {
|
|
274
|
-
const performanceOptimizations] = [
|
|
297
|
+
const performanceOptimizations: OptimizationStrategy[] = [
|
|
275
298
|
{
|
|
276
|
-
id,
|
|
277
|
-
name,
|
|
278
|
-
type,
|
|
279
|
-
impact,
|
|
280
|
-
applied,
|
|
281
|
-
description,
|
|
282
|
-
metrics, loadingEfficiency}
|
|
299
|
+
id: 'perf-overall',
|
|
300
|
+
name: 'Overall Performance',
|
|
301
|
+
type: 'performance',
|
|
302
|
+
impact: 'high',
|
|
303
|
+
applied: true,
|
|
304
|
+
description: 'Comprehensive performance optimization applied',
|
|
305
|
+
metrics: { renderTime: 16, loadingEfficiency: 90 }
|
|
283
306
|
},
|
|
284
307
|
{
|
|
285
|
-
id,
|
|
286
|
-
name,
|
|
287
|
-
type,
|
|
288
|
-
impact,
|
|
289
|
-
applied,
|
|
290
|
-
description,
|
|
291
|
-
metrics}
|
|
308
|
+
id: 'perf-loading',
|
|
309
|
+
name: 'Loading Performance',
|
|
310
|
+
type: 'performance',
|
|
311
|
+
impact: 'medium',
|
|
312
|
+
applied: true,
|
|
313
|
+
description: 'Enhanced loading state performance',
|
|
314
|
+
metrics: { loadingEfficiency: 85 }
|
|
292
315
|
}
|
|
293
316
|
]
|
|
294
317
|
|
|
@@ -348,7 +371,8 @@ export const useLoadingPerformance = (
|
|
|
348
371
|
else if (animationSmoothness >= 70) score += 5
|
|
349
372
|
else score += 0
|
|
350
373
|
|
|
351
|
-
let health
|
|
374
|
+
let health: 'excellent' | 'good' | 'fair' | 'poor'
|
|
375
|
+
if (score >= 90) health = 'excellent'
|
|
352
376
|
else if (score >= 75) health = 'good'
|
|
353
377
|
else if (score >= 60) health = 'fair'
|
|
354
378
|
else health = 'poor'
|
|
@@ -413,7 +437,7 @@ export const useLoadingPerformance = (
|
|
|
413
437
|
autoOptimize,
|
|
414
438
|
|
|
415
439
|
// Utility functions
|
|
416
|
-
getPerformanceScore) => {
|
|
440
|
+
getPerformanceScore: () => {
|
|
417
441
|
const { frameRate, renderTime, memoryUsage, batteryLevel, animationSmoothness } = performanceMetrics
|
|
418
442
|
let score = 0
|
|
419
443
|
if (frameRate >= 58) score += 25
|
|
@@ -423,9 +447,9 @@ export const useLoadingPerformance = (
|
|
|
423
447
|
if (animationSmoothness >= 90) score += 15
|
|
424
448
|
return score
|
|
425
449
|
},
|
|
426
|
-
isPerformanceOptimal) => performanceHealth === 'excellent' || performanceHealth === 'good',
|
|
427
|
-
getOptimizationRecommendations) => {
|
|
428
|
-
const recommendations] = []
|
|
450
|
+
isPerformanceOptimal: () => performanceHealth === 'excellent' || performanceHealth === 'good',
|
|
451
|
+
getOptimizationRecommendations: () => {
|
|
452
|
+
const recommendations: string[] = []
|
|
429
453
|
|
|
430
454
|
if (performanceMetrics.frameRate < 50) {
|
|
431
455
|
recommendations.push('Consider reducing animation complexity to improve frame rate')
|
|
@@ -439,7 +463,7 @@ export const useLoadingPerformance = (
|
|
|
439
463
|
|
|
440
464
|
return recommendations
|
|
441
465
|
},
|
|
442
|
-
clearOptimizations) => {
|
|
466
|
+
clearOptimizations: () => {
|
|
443
467
|
setOptimizationStrategies([])
|
|
444
468
|
setActiveOptimizations([])
|
|
445
469
|
}
|
|
@@ -1,24 +1,45 @@
|
|
|
1
1
|
import { useState, useCallback, useRef, useEffect } from 'react'
|
|
2
2
|
|
|
3
3
|
export interface LoadingPerformanceConfig {
|
|
4
|
-
enableAnimationOptimization
|
|
4
|
+
enableAnimationOptimization?: boolean
|
|
5
|
+
enableMemoryManagement?: boolean
|
|
6
|
+
enableBatteryOptimization?: boolean
|
|
7
|
+
enablePerformanceMonitoring?: boolean
|
|
8
|
+
enableAutoOptimization?: boolean
|
|
9
|
+
animationFrameRate?: number
|
|
10
|
+
memoryThreshold?: number
|
|
11
|
+
batteryThreshold?: number
|
|
12
|
+
}
|
|
5
13
|
|
|
6
14
|
export interface PerformanceMetrics {
|
|
7
|
-
frameRate
|
|
15
|
+
frameRate: number
|
|
16
|
+
renderTime: number
|
|
17
|
+
memoryUsage: number
|
|
18
|
+
batteryLevel: number
|
|
19
|
+
animationSmoothness: number
|
|
20
|
+
loadingEfficiency: number
|
|
21
|
+
}
|
|
8
22
|
|
|
9
23
|
export interface OptimizationStrategy {
|
|
10
|
-
id
|
|
24
|
+
id: string
|
|
25
|
+
name: string
|
|
26
|
+
type: 'animation' | 'memory' | 'battery' | 'performance'
|
|
27
|
+
impact: 'low' | 'medium' | 'high'
|
|
28
|
+
applied: boolean
|
|
29
|
+
description: string
|
|
30
|
+
metrics: Partial<PerformanceMetrics>
|
|
31
|
+
}
|
|
11
32
|
|
|
12
33
|
export interface LoadingPerformanceCallbacks {
|
|
13
|
-
onPerformanceOptimized
|
|
14
|
-
onMemoryOptimized
|
|
15
|
-
onBatteryOptimized
|
|
16
|
-
onAnimationOptimized
|
|
34
|
+
onPerformanceOptimized?: (strategy: OptimizationStrategy) => void
|
|
35
|
+
onMemoryOptimized?: (optimization: string) => void
|
|
36
|
+
onBatteryOptimized?: (strategy: string) => void
|
|
37
|
+
onAnimationOptimized?: (optimization: string) => void
|
|
17
38
|
}
|
|
18
39
|
|
|
19
40
|
export const useLoadingPerformance = (
|
|
20
|
-
config= {},
|
|
21
|
-
callbacks= {}
|
|
41
|
+
config: LoadingPerformanceConfig = {},
|
|
42
|
+
callbacks: LoadingPerformanceCallbacks = {}
|
|
22
43
|
) => {
|
|
23
44
|
const {
|
|
24
45
|
enableAnimationOptimization = true,
|
|
@@ -29,12 +50,13 @@ export const useLoadingPerformance = (
|
|
|
29
50
|
} = config
|
|
30
51
|
|
|
31
52
|
const [performanceMetrics, setPerformanceMetrics] = useState<PerformanceMetrics>({
|
|
32
|
-
frameRate,
|
|
33
|
-
renderTime,
|
|
34
|
-
memoryUsage,
|
|
35
|
-
batteryLevel,
|
|
36
|
-
animationSmoothness,
|
|
37
|
-
loadingEfficiency
|
|
53
|
+
frameRate: 60,
|
|
54
|
+
renderTime: 0,
|
|
55
|
+
memoryUsage: 0,
|
|
56
|
+
batteryLevel: 1,
|
|
57
|
+
animationSmoothness: 100,
|
|
58
|
+
loadingEfficiency: 100
|
|
59
|
+
})
|
|
38
60
|
|
|
39
61
|
const [optimizationStrategies, setOptimizationStrategies] = useState<OptimizationStrategy[]>([])
|
|
40
62
|
const [isOptimizing, setIsOptimizing] = useState(false)
|
|
@@ -61,7 +83,7 @@ export const useLoadingPerformance = (
|
|
|
61
83
|
|
|
62
84
|
setPerformanceMetrics(prev => ({
|
|
63
85
|
...prev,
|
|
64
|
-
frameRate,
|
|
86
|
+
frameRate: fps,
|
|
65
87
|
renderTime
|
|
66
88
|
}))
|
|
67
89
|
|
|
@@ -93,11 +115,11 @@ export const useLoadingPerformance = (
|
|
|
93
115
|
|
|
94
116
|
setPerformanceMetrics(prev => ({
|
|
95
117
|
...prev,
|
|
96
|
-
memoryUsage) / 100
|
|
118
|
+
memoryUsage: Math.round(usedMemory * 100) / 100
|
|
97
119
|
}))
|
|
98
120
|
}
|
|
99
121
|
} catch (error) {
|
|
100
|
-
console.warn('Memory monitoring failed, error)
|
|
122
|
+
console.warn('Memory monitoring failed:', error)
|
|
101
123
|
}
|
|
102
124
|
}
|
|
103
125
|
|
|
@@ -122,10 +144,11 @@ export const useLoadingPerformance = (
|
|
|
122
144
|
|
|
123
145
|
setPerformanceMetrics(prev => ({
|
|
124
146
|
...prev,
|
|
125
|
-
batteryLevel
|
|
147
|
+
batteryLevel: level
|
|
148
|
+
}))
|
|
126
149
|
}
|
|
127
150
|
} catch (error) {
|
|
128
|
-
console.warn('Battery monitoring failed, error)
|
|
151
|
+
console.warn('Battery monitoring failed:', error)
|
|
129
152
|
}
|
|
130
153
|
}
|
|
131
154
|
|
|
@@ -145,33 +168,33 @@ export const useLoadingPerformance = (
|
|
|
145
168
|
setIsOptimizing(true)
|
|
146
169
|
|
|
147
170
|
setTimeout(() => {
|
|
148
|
-
const animationOptimizations] = [
|
|
171
|
+
const animationOptimizations: OptimizationStrategy[] = [
|
|
149
172
|
{
|
|
150
|
-
id,
|
|
151
|
-
name,
|
|
152
|
-
type,
|
|
153
|
-
impact,
|
|
154
|
-
applied,
|
|
155
|
-
description,
|
|
156
|
-
metrics, animationSmoothness}
|
|
173
|
+
id: 'anim-frame-rate',
|
|
174
|
+
name: 'Frame Rate Optimization',
|
|
175
|
+
type: 'animation',
|
|
176
|
+
impact: 'high',
|
|
177
|
+
applied: true,
|
|
178
|
+
description: 'Optimized animation frame rate for smooth performance',
|
|
179
|
+
metrics: { frameRate: 60, animationSmoothness: 95 }
|
|
157
180
|
},
|
|
158
181
|
{
|
|
159
|
-
id,
|
|
160
|
-
name,
|
|
161
|
-
type,
|
|
162
|
-
impact,
|
|
163
|
-
applied,
|
|
164
|
-
description,
|
|
165
|
-
metrics}
|
|
182
|
+
id: 'anim-smoothness',
|
|
183
|
+
name: 'Animation Smoothness',
|
|
184
|
+
type: 'animation',
|
|
185
|
+
impact: 'medium',
|
|
186
|
+
applied: true,
|
|
187
|
+
description: 'Enhanced animation smoothness and timing',
|
|
188
|
+
metrics: { animationSmoothness: 90 }
|
|
166
189
|
},
|
|
167
190
|
{
|
|
168
|
-
id,
|
|
169
|
-
name,
|
|
170
|
-
type,
|
|
171
|
-
impact,
|
|
172
|
-
applied,
|
|
173
|
-
description,
|
|
174
|
-
metrics}
|
|
191
|
+
id: 'anim-efficiency',
|
|
192
|
+
name: 'Animation Efficiency',
|
|
193
|
+
type: 'animation',
|
|
194
|
+
impact: 'medium',
|
|
195
|
+
applied: true,
|
|
196
|
+
description: 'Improved animation efficiency and performance',
|
|
197
|
+
metrics: { loadingEfficiency: 85 }
|
|
175
198
|
}
|
|
176
199
|
]
|
|
177
200
|
|
|
@@ -193,24 +216,24 @@ export const useLoadingPerformance = (
|
|
|
193
216
|
setIsOptimizing(true)
|
|
194
217
|
|
|
195
218
|
setTimeout(() => {
|
|
196
|
-
const memoryOptimizations] = [
|
|
219
|
+
const memoryOptimizations: OptimizationStrategy[] = [
|
|
197
220
|
{
|
|
198
|
-
id,
|
|
199
|
-
name,
|
|
200
|
-
type,
|
|
201
|
-
impact,
|
|
202
|
-
applied,
|
|
203
|
-
description,
|
|
204
|
-
metrics}
|
|
221
|
+
id: 'mem-usage',
|
|
222
|
+
name: 'Memory Usage Optimization',
|
|
223
|
+
type: 'memory',
|
|
224
|
+
impact: 'high',
|
|
225
|
+
applied: true,
|
|
226
|
+
description: 'Optimized memory usage for loading states',
|
|
227
|
+
metrics: { memoryUsage: 25 }
|
|
205
228
|
},
|
|
206
229
|
{
|
|
207
|
-
id,
|
|
208
|
-
name,
|
|
209
|
-
type,
|
|
210
|
-
impact,
|
|
211
|
-
applied,
|
|
212
|
-
description,
|
|
213
|
-
metrics}
|
|
230
|
+
id: 'mem-cleanup',
|
|
231
|
+
name: 'Memory Cleanup',
|
|
232
|
+
type: 'memory',
|
|
233
|
+
impact: 'medium',
|
|
234
|
+
applied: true,
|
|
235
|
+
description: 'Automatic memory cleanup and garbage collection',
|
|
236
|
+
metrics: { memoryUsage: 20 }
|
|
214
237
|
}
|
|
215
238
|
]
|
|
216
239
|
|
|
@@ -232,24 +255,24 @@ export const useLoadingPerformance = (
|
|
|
232
255
|
setIsOptimizing(true)
|
|
233
256
|
|
|
234
257
|
setTimeout(() => {
|
|
235
|
-
const batteryOptimizations] = [
|
|
258
|
+
const batteryOptimizations: OptimizationStrategy[] = [
|
|
236
259
|
{
|
|
237
|
-
id,
|
|
238
|
-
name,
|
|
239
|
-
type,
|
|
240
|
-
impact,
|
|
241
|
-
applied,
|
|
242
|
-
description,
|
|
243
|
-
metrics}
|
|
260
|
+
id: 'battery-efficiency',
|
|
261
|
+
name: 'Battery Efficiency',
|
|
262
|
+
type: 'battery',
|
|
263
|
+
impact: 'high',
|
|
264
|
+
applied: true,
|
|
265
|
+
description: 'Battery-conscious loading state optimization',
|
|
266
|
+
metrics: { batteryLevel: 0.8 }
|
|
244
267
|
},
|
|
245
268
|
{
|
|
246
|
-
id,
|
|
247
|
-
name,
|
|
248
|
-
type,
|
|
249
|
-
impact,
|
|
250
|
-
applied,
|
|
251
|
-
description,
|
|
252
|
-
metrics}
|
|
269
|
+
id: 'battery-adaptive',
|
|
270
|
+
name: 'Battery Adaptive Loading',
|
|
271
|
+
type: 'battery',
|
|
272
|
+
impact: 'medium',
|
|
273
|
+
applied: true,
|
|
274
|
+
description: 'Adaptive loading based on battery level',
|
|
275
|
+
metrics: { loadingEfficiency: 80 }
|
|
253
276
|
}
|
|
254
277
|
]
|
|
255
278
|
|
|
@@ -271,24 +294,24 @@ export const useLoadingPerformance = (
|
|
|
271
294
|
setIsOptimizing(true)
|
|
272
295
|
|
|
273
296
|
setTimeout(() => {
|
|
274
|
-
const performanceOptimizations] = [
|
|
297
|
+
const performanceOptimizations: OptimizationStrategy[] = [
|
|
275
298
|
{
|
|
276
|
-
id,
|
|
277
|
-
name,
|
|
278
|
-
type,
|
|
279
|
-
impact,
|
|
280
|
-
applied,
|
|
281
|
-
description,
|
|
282
|
-
metrics, loadingEfficiency}
|
|
299
|
+
id: 'perf-overall',
|
|
300
|
+
name: 'Overall Performance',
|
|
301
|
+
type: 'performance',
|
|
302
|
+
impact: 'high',
|
|
303
|
+
applied: true,
|
|
304
|
+
description: 'Comprehensive performance optimization applied',
|
|
305
|
+
metrics: { renderTime: 16, loadingEfficiency: 90 }
|
|
283
306
|
},
|
|
284
307
|
{
|
|
285
|
-
id,
|
|
286
|
-
name,
|
|
287
|
-
type,
|
|
288
|
-
impact,
|
|
289
|
-
applied,
|
|
290
|
-
description,
|
|
291
|
-
metrics}
|
|
308
|
+
id: 'perf-loading',
|
|
309
|
+
name: 'Loading Performance',
|
|
310
|
+
type: 'performance',
|
|
311
|
+
impact: 'medium',
|
|
312
|
+
applied: true,
|
|
313
|
+
description: 'Enhanced loading state performance',
|
|
314
|
+
metrics: { loadingEfficiency: 85 }
|
|
292
315
|
}
|
|
293
316
|
]
|
|
294
317
|
|
|
@@ -348,7 +371,8 @@ export const useLoadingPerformance = (
|
|
|
348
371
|
else if (animationSmoothness >= 70) score += 5
|
|
349
372
|
else score += 0
|
|
350
373
|
|
|
351
|
-
let health
|
|
374
|
+
let health: 'excellent' | 'good' | 'fair' | 'poor'
|
|
375
|
+
if (score >= 90) health = 'excellent'
|
|
352
376
|
else if (score >= 75) health = 'good'
|
|
353
377
|
else if (score >= 60) health = 'fair'
|
|
354
378
|
else health = 'poor'
|
|
@@ -413,7 +437,7 @@ export const useLoadingPerformance = (
|
|
|
413
437
|
autoOptimize,
|
|
414
438
|
|
|
415
439
|
// Utility functions
|
|
416
|
-
getPerformanceScore) => {
|
|
440
|
+
getPerformanceScore: () => {
|
|
417
441
|
const { frameRate, renderTime, memoryUsage, batteryLevel, animationSmoothness } = performanceMetrics
|
|
418
442
|
let score = 0
|
|
419
443
|
if (frameRate >= 58) score += 25
|
|
@@ -423,9 +447,9 @@ export const useLoadingPerformance = (
|
|
|
423
447
|
if (animationSmoothness >= 90) score += 15
|
|
424
448
|
return score
|
|
425
449
|
},
|
|
426
|
-
isPerformanceOptimal) => performanceHealth === 'excellent' || performanceHealth === 'good',
|
|
427
|
-
getOptimizationRecommendations) => {
|
|
428
|
-
const recommendations] = []
|
|
450
|
+
isPerformanceOptimal: () => performanceHealth === 'excellent' || performanceHealth === 'good',
|
|
451
|
+
getOptimizationRecommendations: () => {
|
|
452
|
+
const recommendations: string[] = []
|
|
429
453
|
|
|
430
454
|
if (performanceMetrics.frameRate < 50) {
|
|
431
455
|
recommendations.push('Consider reducing animation complexity to improve frame rate')
|
|
@@ -439,7 +463,7 @@ export const useLoadingPerformance = (
|
|
|
439
463
|
|
|
440
464
|
return recommendations
|
|
441
465
|
},
|
|
442
|
-
clearOptimizations) => {
|
|
466
|
+
clearOptimizations: () => {
|
|
443
467
|
setOptimizationStrategies([])
|
|
444
468
|
setActiveOptimizations([])
|
|
445
469
|
}
|