@therealtinhtute/baroiplayer 1.0.8 → 1.1.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/LICENSE +2 -2
- package/README.md +15 -15
- package/dist/context/media.js +2 -0
- package/dist/context/media.js.map +1 -0
- package/dist/context/media.mjs +15 -0
- package/dist/context/media.mjs.map +1 -0
- package/dist/context/store.js +2 -0
- package/dist/context/store.js.map +1 -0
- package/dist/context/store.mjs +5 -0
- package/dist/context/store.mjs.map +1 -0
- package/dist/context-BYwDoSRX.js +1172 -0
- package/dist/context-BYwDoSRX.js.map +1 -0
- package/dist/context-eNS62_ac.cjs +23 -0
- package/dist/context-eNS62_ac.cjs.map +1 -0
- package/dist/core-events-B1iM2F46.cjs +2 -0
- package/dist/core-events-B1iM2F46.cjs.map +1 -0
- package/dist/core-events-DunPHKRE.js +484 -0
- package/dist/core-events-DunPHKRE.js.map +1 -0
- package/dist/core-plugins-CROGvQUy.js +686 -0
- package/dist/core-plugins-CROGvQUy.js.map +1 -0
- package/dist/core-plugins-DtsHBOtF.cjs +2 -0
- package/dist/core-plugins-DtsHBOtF.cjs.map +1 -0
- package/dist/core.js +37 -0
- package/dist/core.js.map +1 -0
- package/dist/core.mjs +1233 -0
- package/dist/core.mjs.map +1 -0
- package/dist/enhanced-components-DUw2KrmQ.js +1142 -0
- package/dist/enhanced-components-DUw2KrmQ.js.map +1 -0
- package/dist/enhanced-components-DXBCHU0v.cjs +2 -0
- package/dist/enhanced-components-DXBCHU0v.cjs.map +1 -0
- package/dist/hooks-BW-JjVgP.cjs +4 -0
- package/dist/hooks-BW-JjVgP.cjs.map +1 -0
- package/dist/hooks-CyX6De5M.js +1693 -0
- package/dist/hooks-CyX6De5M.js.map +1 -0
- package/dist/index.css +1 -102
- package/dist/index.js +112 -21
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +6275 -16
- package/dist/index.mjs.map +1 -0
- package/dist/minimal-components-Bdcpxav5.cjs +2 -0
- package/dist/minimal-components-Bdcpxav5.cjs.map +1 -0
- package/dist/minimal-components-DlRK7Qu_.js +1927 -0
- package/dist/minimal-components-DlRK7Qu_.js.map +1 -0
- package/dist/minimal-components.css +1 -589
- package/dist/mona-loading.gif +0 -0
- package/dist/performance-monitor-C5k6FDXw.js +301 -0
- package/dist/performance-monitor-C5k6FDXw.js.map +1 -0
- package/dist/performance-monitor-lJmuUjQQ.cjs +2 -0
- package/dist/performance-monitor-lJmuUjQQ.cjs.map +1 -0
- package/dist/utils-CFOue_9K.cjs +9 -0
- package/dist/utils-CFOue_9K.cjs.map +1 -0
- package/dist/utils-Dzpl2ArK.js +2844 -0
- package/dist/utils-Dzpl2ArK.js.map +1 -0
- package/dist/utils.js +2 -0
- package/dist/utils.js.map +1 -0
- package/dist/utils.mjs +11 -0
- package/dist/utils.mjs.map +1 -0
- package/package.json +11 -40
- package/src/adapters/videojs-adapter.tsx +441 -441
- package/src/components/AnimateLoading.tsx +85 -93
- package/src/components/LoadingState.tsx +199 -208
- package/src/components/__tests__/media-player-accessibility.test.tsx +510 -0
- package/src/components/__tests__/media-player-react19.test.tsx +457 -0
- package/src/components/accessibility/keyboard-help-overlay.tsx +199 -207
- package/src/components/basic/index.ts +28 -28
- package/src/components/enhanced/advanced-features.tsx +49 -54
- package/src/components/enhanced/debug-panel.tsx +148 -122
- package/src/components/enhanced/enhanced-controls.tsx +117 -120
- package/src/components/enhanced/enhanced-media-player.tsx +228 -214
- package/src/components/enhanced/error-handling.tsx +50 -57
- package/src/components/enhanced/index.ts +27 -27
- package/src/components/enhanced/media-player-enhanced.tsx +117 -83
- package/src/components/examples/basic-video-player.tsx +35 -40
- package/src/components/examples/enhanced-controls-example.tsx +16 -30
- package/src/components/examples/enhanced-media-player-example.tsx +196 -187
- package/src/components/examples/loading-states-demo.tsx +113 -113
- package/src/components/examples/react-19-demo.tsx +88 -116
- package/src/components/examples/volume-orientation-demo.tsx +77 -85
- package/src/components/icon-demo.tsx +189 -202
- package/src/components/icons/svg-icons/ArrowLeftIcon.tsx +13 -13
- package/src/components/icons/svg-icons/ArrowRightIcon.tsx +13 -13
- package/src/components/icons/svg-icons/AudioIcon.tsx +16 -16
- package/src/components/icons/svg-icons/BackwardIcon.tsx +7 -7
- package/src/components/icons/svg-icons/CameraIcon.tsx +13 -13
- package/src/components/icons/svg-icons/CheckIcon.tsx +13 -13
- package/src/components/icons/svg-icons/EnablePiPIcon.tsx +13 -13
- package/src/components/icons/svg-icons/ForwardIcon.tsx +7 -7
- package/src/components/icons/svg-icons/FullscreenEnterIcon.tsx +18 -18
- package/src/components/icons/svg-icons/FullscreenExitIcon.tsx +18 -18
- package/src/components/icons/svg-icons/LoadingIcon.tsx +27 -27
- package/src/components/icons/svg-icons/PauseIcon.tsx +18 -18
- package/src/components/icons/svg-icons/PlayIcon.tsx +16 -16
- package/src/components/icons/svg-icons/PlaybackSpeedIcon.tsx +18 -18
- package/src/components/icons/svg-icons/QualityIcon.tsx +16 -16
- package/src/components/icons/svg-icons/SettingsIcon.tsx +7 -7
- package/src/components/icons/svg-icons/SliderIcon.tsx +16 -16
- package/src/components/icons/svg-icons/SubtitleIcon.tsx +16 -16
- package/src/components/icons/svg-icons/SubtitleOffIcon.tsx +20 -20
- package/src/components/icons/svg-icons/UnPiPIcon.tsx +13 -13
- package/src/components/icons/svg-icons/VolumeMutedIcon.tsx +11 -11
- package/src/components/icons/svg-icons/VolumeOneIcon.tsx +17 -17
- package/src/components/icons/svg-icons/VolumeThreeIcon.tsx +11 -11
- package/src/components/icons/svg-icons/VolumeTwoIcon.tsx +11 -11
- package/src/components/legacy.tsx +8 -14
- package/src/components/media-metadata-display.tsx +78 -79
- package/src/components/media-player-controls.tsx +37 -40
- package/src/components/media-player-error.tsx +2 -2
- package/src/components/media-player-fullscreen.tsx +2 -2
- package/src/components/media-player-hls.tsx +89 -89
- package/src/components/media-player-play.tsx +2 -2
- package/src/components/media-player-root.tsx +20 -22
- package/src/components/media-player-seek.tsx +1 -1
- package/src/components/media-player-tooltip.tsx +1 -1
- package/src/components/media-player-video.tsx +28 -6
- package/src/components/media-player-volume.tsx +3 -3
- package/src/components/media-player.tsx +209 -174
- package/src/components/media-suspense.tsx +71 -89
- package/src/components/player-settings-form.tsx +143 -148
- package/src/components/react-player-wrapper.tsx +23 -23
- package/src/components/simple-video-player.tsx +53 -51
- package/src/components/ui/blur-poster.tsx +93 -0
- package/src/components/ui/empty-state.tsx +91 -0
- package/src/components/ui/enhanced-seek-bar.tsx +75 -56
- package/src/components/ui/error-state.tsx +124 -0
- package/src/components/ui/fullscreen-button.tsx +71 -50
- package/src/components/ui/loading-skeleton.tsx +107 -0
- package/src/components/ui/media-resource-preloader.tsx +265 -198
- package/src/components/ui/offline-message.tsx +98 -0
- package/src/components/ui/play-button.tsx +79 -87
- package/src/components/ui/seek-bar.tsx +170 -140
- package/src/components/ui/time-display.tsx +33 -12
- package/src/components/ui/volume-control.tsx +91 -44
- package/src/components/unified/base-media-player.tsx +45 -51
- package/src/components/unified/media-player.tsx +3 -3
- package/src/components/variants/minimal/AccessibleMinimalPlayer.tsx +508 -502
- package/src/components/variants/minimal/EnhancedMinimalMediaPlayer.tsx +108 -87
- package/src/components/variants/minimal/MinimalControls.tsx +100 -118
- package/src/components/variants/minimal/MinimalLoading.tsx +19 -23
- package/src/components/variants/minimal/MinimalMediaPlayer.tsx +283 -280
- package/src/components/variants/minimal/MinimalOverlay.tsx +43 -49
- package/src/components/variants/minimal/MinimalPlayButton.tsx +44 -53
- package/src/components/variants/minimal/MinimalSeekBar.tsx +130 -140
- package/src/components/variants/minimal/MinimalVolumeControl.tsx +59 -64
- package/src/components/variants/minimal/SimpleMinimalPlayer.tsx +29 -32
- package/src/components/variants/minimal/components/CenterPlayButton.tsx +1 -1
- package/src/components/variants/minimal/components/ControlBar.tsx +7 -11
- package/src/components/variants/minimal/components/EnhancedSettingsMenu.tsx +381 -330
- package/src/components/variants/minimal/components/PlaybackControls.tsx +6 -11
- package/src/components/variants/minimal/components/RightControls.tsx +8 -17
- package/src/components/variants/minimal/components/SeekBar.tsx +16 -20
- package/src/components/variants/minimal/components/SettingsDropdown.tsx +12 -14
- package/src/components/variants/minimal/components/SubtitleDisplay.tsx +1 -1
- package/src/components/variants/minimal/components/TimeDisplay.tsx +2 -5
- package/src/components/variants/minimal/components/VideoElement.tsx +3 -10
- package/src/components/variants/minimal/components/VolumeControl.tsx +42 -39
- package/src/components/video-player.tsx +10 -10
- package/src/context/__tests__/media-store.test.ts +509 -0
- package/src/context/error-handling.ts +106 -102
- package/src/context/media-context.tsx +56 -10
- package/src/context/media-provider.tsx +16 -17
- package/src/context/media-store.ts +68 -60
- package/src/context/persistence.ts +74 -65
- package/src/core/events/event-system.ts +422 -416
- package/src/core/events/hooks.ts +275 -252
- package/src/core/events/index.ts +14 -14
- package/src/core/events/middleware.ts +269 -252
- package/src/core/index.ts +8 -8
- package/src/core/optimization/bundle-optimizer.tsx +65 -60
- package/src/core/performance/cicd.ts +91 -89
- package/src/core/performance/index.ts +22 -22
- package/src/core/performance/media-loading-optimizer.ts +518 -512
- package/src/core/performance/performance-budgets.ts +414 -409
- package/src/core/performance/performance-monitor.tsx +451 -439
- package/src/core/performance/performance-testing.ts +439 -437
- package/src/core/plugins/__tests__/registry.test.ts +595 -0
- package/src/core/plugins/base-plugin.ts +197 -196
- package/src/core/plugins/enhanced-plugin-system.ts +136 -136
- package/src/core/plugins/examples/analytics-plugin.ts +229 -230
- package/src/core/plugins/index.ts +26 -26
- package/src/core/plugins/registry.ts +315 -323
- package/src/core/plugins/types.ts +97 -105
- package/src/core/plugins/utils.ts +292 -291
- package/src/core/progressive-loading.tsx +297 -288
- package/src/core/providers/enhanced-hls-provider.ts +118 -90
- package/src/core/providers/lazy-provider.tsx +51 -0
- package/src/core/providers/service-provider.tsx +104 -108
- package/src/core/utils.tsx +22 -26
- package/src/features/media-session/media-session-manager.ts +406 -402
- package/src/features/picture-in-picture/pip-manager.ts +364 -365
- package/src/features/playlist/playlist-manager.ts +597 -585
- package/src/features/subtitles/subtitle-manager.ts +424 -430
- package/src/features/subtitles/subtitle-parser.ts +274 -273
- package/src/features/thumbnails/thumbnail-generator.ts +504 -502
- package/src/hooks/__tests__/use-media-player.test.ts +712 -0
- package/src/hooks/__tests__/use-media-state.test.tsx +316 -0
- package/src/hooks/accessibility/index.ts +20 -20
- package/src/hooks/accessibility/use-accessibility-preferences.ts +177 -175
- package/src/hooks/accessibility/use-focus-management.ts +170 -163
- package/src/hooks/accessibility/use-keyboard-shortcuts.ts +132 -124
- package/src/hooks/accessibility/use-screen-reader.ts +191 -161
- package/src/hooks/core/index.ts +30 -30
- package/src/hooks/legacy.ts +3 -9
- package/src/hooks/use-buffer-health.ts +218 -0
- package/src/hooks/use-enhanced-media-player.ts +74 -82
- package/src/hooks/use-focus-trap.tsx +162 -0
- package/src/hooks/use-intelligent-preloading.ts +236 -232
- package/src/hooks/use-keyboard-controls.ts +80 -80
- package/src/hooks/use-keyboard-shortcuts.ts +255 -0
- package/src/hooks/use-media-actions.ts +81 -72
- package/src/hooks/use-media-metadata.ts +75 -73
- package/src/hooks/use-media-optimistic.ts +145 -151
- package/src/hooks/use-media-player.ts +109 -107
- package/src/hooks/use-media-state.ts +63 -59
- package/src/hooks/use-memory-optimization.ts +119 -117
- package/src/hooks/use-network-status.ts +124 -0
- package/src/hooks/use-optimistic-controls.ts +91 -88
- package/src/hooks/use-optimized-media.ts +76 -56
- package/src/hooks/use-smart-preload.ts +230 -0
- package/src/hooks/use-touch-gestures.ts +427 -383
- package/src/hooks/useEnhancedSubtitles.ts +245 -245
- package/src/hooks/useKeyboardShortcuts.ts +52 -52
- package/src/hooks/useMediaControls.ts +22 -22
- package/src/hooks/useScreenshot.ts +51 -47
- package/src/hooks/useSubtitles.ts +53 -53
- package/src/hooks/useVideoPlayer.ts +61 -61
- package/src/icons/components/FullscreenIcon.tsx +34 -35
- package/src/icons/components/SettingsIcon.tsx +35 -36
- package/src/icons/components/animated/LoadingIcon.tsx +25 -41
- package/src/icons/components/animated/PlayPauseIcon.tsx +38 -46
- package/src/icons/components/media/PauseIcon.tsx +36 -37
- package/src/icons/components/media/PlayIcon.tsx +35 -36
- package/src/icons/components/volume/VolumeIcon.tsx +36 -37
- package/src/icons/components/volume/VolumeOffIcon.tsx +36 -37
- package/src/icons/index.ts +38 -38
- package/src/icons/provider.tsx +40 -46
- package/src/icons/types.ts +51 -31
- package/src/index-enhanced.ts +10 -10
- package/src/index-legacy.ts +3 -4
- package/src/index.css +80 -80
- package/src/index.ts +8 -23
- package/src/lib/__tests__/async-utils.test.ts +291 -0
- package/src/lib/async-utils.ts +194 -0
- package/src/lib/deprecation.ts +4 -4
- package/src/lib/index.ts +3 -2
- package/src/lib/utils.ts +3 -3
- package/src/styles/globals.css +3 -3
- package/src/styles/minimal-player.css +606 -574
- package/src/styles/pixel-art.css +23 -28
- package/src/styles/videojs.css +43 -43
- package/src/test/accessibility-utils.ts +208 -0
- package/src/test/browser-simulation.ts +235 -0
- package/src/test/media-mocks.ts +156 -0
- package/src/test/performance-utils.ts +192 -0
- package/src/test/setup.ts +241 -44
- package/src/types/events.ts +30 -30
- package/src/types/formats.ts +56 -72
- package/src/types/index.ts +5 -40
- package/src/types/videojs-plugins.d.ts +6 -6
- package/dist/index.d.ts +0 -1425
- package/dist/package.json +0 -62
- package/dist/src/adapters/videojs-adapter.d.ts +0 -38
- package/dist/src/adapters/videojs-adapter.tsx +0 -470
- package/dist/src/components/AnimateLoading.d.ts +0 -9
- package/dist/src/components/AnimateLoading.tsx +0 -115
- package/dist/src/components/LoadingState.d.ts +0 -33
- package/dist/src/components/LoadingState.tsx +0 -248
- package/dist/src/components/accessibility/keyboard-help-overlay.d.ts +0 -17
- package/dist/src/components/accessibility/keyboard-help-overlay.tsx +0 -213
- package/dist/src/components/audio-player.d.ts +0 -3
- package/dist/src/components/audio-player.tsx +0 -85
- package/dist/src/components/basic/index.d.ts +0 -26
- package/dist/src/components/basic/index.ts +0 -37
- package/dist/src/components/enhanced/advanced-features.d.ts +0 -45
- package/dist/src/components/enhanced/advanced-features.tsx +0 -316
- package/dist/src/components/enhanced/debug-panel.d.ts +0 -70
- package/dist/src/components/enhanced/debug-panel.tsx +0 -422
- package/dist/src/components/enhanced/enhanced-controls.d.ts +0 -50
- package/dist/src/components/enhanced/enhanced-controls.tsx +0 -600
- package/dist/src/components/enhanced/enhanced-media-player.d.ts +0 -26
- package/dist/src/components/enhanced/enhanced-media-player.tsx +0 -509
- package/dist/src/components/enhanced/error-handling.d.ts +0 -36
- package/dist/src/components/enhanced/error-handling.tsx +0 -345
- package/dist/src/components/enhanced/index.d.ts +0 -7
- package/dist/src/components/enhanced/index.ts +0 -39
- package/dist/src/components/enhanced/media-player-enhanced.d.ts +0 -21
- package/dist/src/components/enhanced/media-player-enhanced.tsx +0 -349
- package/dist/src/components/examples/basic-video-player.d.ts +0 -10
- package/dist/src/components/examples/basic-video-player.tsx +0 -55
- package/dist/src/components/examples/custom-controls-example.d.ts +0 -10
- package/dist/src/components/examples/custom-controls-example.tsx +0 -63
- package/dist/src/components/examples/enhanced-controls-example.d.ts +0 -9
- package/dist/src/components/examples/enhanced-controls-example.tsx +0 -114
- package/dist/src/components/examples/enhanced-media-player-example.d.ts +0 -9
- package/dist/src/components/examples/enhanced-media-player-example.tsx +0 -293
- package/dist/src/components/examples/loading-states-demo.d.ts +0 -2
- package/dist/src/components/examples/loading-states-demo.tsx +0 -142
- package/dist/src/components/examples/react-19-demo.d.ts +0 -10
- package/dist/src/components/examples/react-19-demo.tsx +0 -381
- package/dist/src/components/examples/volume-orientation-demo.d.ts +0 -2
- package/dist/src/components/examples/volume-orientation-demo.tsx +0 -114
- package/dist/src/components/icon-demo.d.ts +0 -2
- package/dist/src/components/icon-demo.tsx +0 -209
- package/dist/src/components/icons/index.d.ts +0 -36
- package/dist/src/components/icons/index.tsx +0 -166
- package/dist/src/components/icons/svg-icons/ArrowLeftIcon.d.ts +0 -4
- package/dist/src/components/icons/svg-icons/ArrowLeftIcon.tsx +0 -18
- package/dist/src/components/icons/svg-icons/ArrowRightIcon.d.ts +0 -4
- package/dist/src/components/icons/svg-icons/ArrowRightIcon.tsx +0 -18
- package/dist/src/components/icons/svg-icons/AudioIcon.d.ts +0 -4
- package/dist/src/components/icons/svg-icons/AudioIcon.tsx +0 -22
- package/dist/src/components/icons/svg-icons/BackwardIcon.d.ts +0 -4
- package/dist/src/components/icons/svg-icons/BackwardIcon.tsx +0 -12
- package/dist/src/components/icons/svg-icons/CameraIcon.d.ts +0 -4
- package/dist/src/components/icons/svg-icons/CameraIcon.tsx +0 -19
- package/dist/src/components/icons/svg-icons/CheckIcon.d.ts +0 -4
- package/dist/src/components/icons/svg-icons/CheckIcon.tsx +0 -19
- package/dist/src/components/icons/svg-icons/EnablePiPIcon.d.ts +0 -4
- package/dist/src/components/icons/svg-icons/EnablePiPIcon.tsx +0 -17
- package/dist/src/components/icons/svg-icons/ForwardIcon.d.ts +0 -4
- package/dist/src/components/icons/svg-icons/ForwardIcon.tsx +0 -12
- package/dist/src/components/icons/svg-icons/FullscreenEnterIcon.d.ts +0 -4
- package/dist/src/components/icons/svg-icons/FullscreenEnterIcon.tsx +0 -23
- package/dist/src/components/icons/svg-icons/FullscreenExitIcon.d.ts +0 -4
- package/dist/src/components/icons/svg-icons/FullscreenExitIcon.tsx +0 -23
- package/dist/src/components/icons/svg-icons/LoadingIcon.d.ts +0 -4
- package/dist/src/components/icons/svg-icons/LoadingIcon.tsx +0 -32
- package/dist/src/components/icons/svg-icons/PauseIcon.d.ts +0 -4
- package/dist/src/components/icons/svg-icons/PauseIcon.tsx +0 -23
- package/dist/src/components/icons/svg-icons/PlayIcon.d.ts +0 -4
- package/dist/src/components/icons/svg-icons/PlayIcon.tsx +0 -21
- package/dist/src/components/icons/svg-icons/PlaybackSpeedIcon.d.ts +0 -4
- package/dist/src/components/icons/svg-icons/PlaybackSpeedIcon.tsx +0 -23
- package/dist/src/components/icons/svg-icons/QualityIcon.d.ts +0 -4
- package/dist/src/components/icons/svg-icons/QualityIcon.tsx +0 -21
- package/dist/src/components/icons/svg-icons/SettingsIcon.d.ts +0 -4
- package/dist/src/components/icons/svg-icons/SettingsIcon.tsx +0 -12
- package/dist/src/components/icons/svg-icons/SliderIcon.d.ts +0 -4
- package/dist/src/components/icons/svg-icons/SliderIcon.tsx +0 -21
- package/dist/src/components/icons/svg-icons/SubtitleIcon.d.ts +0 -4
- package/dist/src/components/icons/svg-icons/SubtitleIcon.tsx +0 -21
- package/dist/src/components/icons/svg-icons/SubtitleOffIcon.d.ts +0 -4
- package/dist/src/components/icons/svg-icons/SubtitleOffIcon.tsx +0 -25
- package/dist/src/components/icons/svg-icons/UnPiPIcon.d.ts +0 -4
- package/dist/src/components/icons/svg-icons/UnPiPIcon.tsx +0 -17
- package/dist/src/components/icons/svg-icons/VolumeMutedIcon.d.ts +0 -4
- package/dist/src/components/icons/svg-icons/VolumeMutedIcon.tsx +0 -16
- package/dist/src/components/icons/svg-icons/VolumeOneIcon.d.ts +0 -4
- package/dist/src/components/icons/svg-icons/VolumeOneIcon.tsx +0 -22
- package/dist/src/components/icons/svg-icons/VolumeThreeIcon.d.ts +0 -4
- package/dist/src/components/icons/svg-icons/VolumeThreeIcon.tsx +0 -16
- package/dist/src/components/icons/svg-icons/VolumeTwoIcon.d.ts +0 -4
- package/dist/src/components/icons/svg-icons/VolumeTwoIcon.tsx +0 -16
- package/dist/src/components/legacy.d.ts +0 -13
- package/dist/src/components/legacy.tsx +0 -93
- package/dist/src/components/media-metadata-display.d.ts +0 -11
- package/dist/src/components/media-metadata-display.tsx +0 -100
- package/dist/src/components/media-player-audio.d.ts +0 -9
- package/dist/src/components/media-player-audio.tsx +0 -39
- package/dist/src/components/media-player-controls.d.ts +0 -23
- package/dist/src/components/media-player-controls.tsx +0 -226
- package/dist/src/components/media-player-error.d.ts +0 -16
- package/dist/src/components/media-player-error.tsx +0 -163
- package/dist/src/components/media-player-fullscreen.d.ts +0 -12
- package/dist/src/components/media-player-fullscreen.tsx +0 -109
- package/dist/src/components/media-player-hls.d.ts +0 -23
- package/dist/src/components/media-player-hls.tsx +0 -111
- package/dist/src/components/media-player-loading.d.ts +0 -12
- package/dist/src/components/media-player-loading.tsx +0 -76
- package/dist/src/components/media-player-play.d.ts +0 -11
- package/dist/src/components/media-player-play.tsx +0 -75
- package/dist/src/components/media-player-root.d.ts +0 -28
- package/dist/src/components/media-player-root.tsx +0 -340
- package/dist/src/components/media-player-seek.d.ts +0 -15
- package/dist/src/components/media-player-seek.tsx +0 -168
- package/dist/src/components/media-player-time.d.ts +0 -12
- package/dist/src/components/media-player-time.tsx +0 -99
- package/dist/src/components/media-player-tooltip.d.ts +0 -13
- package/dist/src/components/media-player-tooltip.tsx +0 -58
- package/dist/src/components/media-player-video.d.ts +0 -9
- package/dist/src/components/media-player-video.tsx +0 -39
- package/dist/src/components/media-player-volume.d.ts +0 -13
- package/dist/src/components/media-player-volume.tsx +0 -155
- package/dist/src/components/media-player.d.ts +0 -3
- package/dist/src/components/media-player.tsx +0 -257
- package/dist/src/components/media-suspense.d.ts +0 -78
- package/dist/src/components/media-suspense.tsx +0 -362
- package/dist/src/components/player-settings-form.d.ts +0 -8
- package/dist/src/components/player-settings-form.tsx +0 -163
- package/dist/src/components/react-player-wrapper.d.ts +0 -64
- package/dist/src/components/react-player-wrapper.tsx +0 -651
- package/dist/src/components/simple-video-player.d.ts +0 -9
- package/dist/src/components/simple-video-player.tsx +0 -60
- package/dist/src/components/ui/button.tsx +0 -49
- package/dist/src/components/ui/dropdown-menu.tsx +0 -137
- package/dist/src/components/ui/enhanced-seek-bar.d.ts +0 -3
- package/dist/src/components/ui/enhanced-seek-bar.tsx +0 -235
- package/dist/src/components/ui/fullscreen-button.d.ts +0 -3
- package/dist/src/components/ui/fullscreen-button.tsx +0 -60
- package/dist/src/components/ui/icons.tsx +0 -174
- package/dist/src/components/ui/media-resource-preloader.d.ts +0 -21
- package/dist/src/components/ui/media-resource-preloader.tsx +0 -393
- package/dist/src/components/ui/play-button.d.ts +0 -3
- package/dist/src/components/ui/play-button.tsx +0 -107
- package/dist/src/components/ui/seek-bar.d.ts +0 -3
- package/dist/src/components/ui/seek-bar.tsx +0 -161
- package/dist/src/components/ui/slider.tsx +0 -55
- package/dist/src/components/ui/time-display.d.ts +0 -3
- package/dist/src/components/ui/time-display.tsx +0 -40
- package/dist/src/components/ui/tooltip.tsx +0 -131
- package/dist/src/components/ui/volume-control.d.ts +0 -3
- package/dist/src/components/ui/volume-control.tsx +0 -143
- package/dist/src/components/unified/base-media-player.d.ts +0 -18
- package/dist/src/components/unified/base-media-player.tsx +0 -246
- package/dist/src/components/unified/media-player.d.ts +0 -37
- package/dist/src/components/unified/media-player.tsx +0 -75
- package/dist/src/components/variants/minimal/AccessibleMinimalPlayer.d.ts +0 -42
- package/dist/src/components/variants/minimal/AccessibleMinimalPlayer.tsx +0 -561
- package/dist/src/components/variants/minimal/EnhancedMinimalMediaPlayer.d.ts +0 -44
- package/dist/src/components/variants/minimal/EnhancedMinimalMediaPlayer.tsx +0 -552
- package/dist/src/components/variants/minimal/MinimalControls.d.ts +0 -19
- package/dist/src/components/variants/minimal/MinimalControls.tsx +0 -142
- package/dist/src/components/variants/minimal/MinimalLoading.d.ts +0 -10
- package/dist/src/components/variants/minimal/MinimalLoading.tsx +0 -32
- package/dist/src/components/variants/minimal/MinimalMediaPlayer.d.ts +0 -38
- package/dist/src/components/variants/minimal/MinimalMediaPlayer.tsx +0 -315
- package/dist/src/components/variants/minimal/MinimalOverlay.d.ts +0 -11
- package/dist/src/components/variants/minimal/MinimalOverlay.tsx +0 -64
- package/dist/src/components/variants/minimal/MinimalPlayButton.d.ts +0 -9
- package/dist/src/components/variants/minimal/MinimalPlayButton.tsx +0 -65
- package/dist/src/components/variants/minimal/MinimalSeekBar.d.ts +0 -7
- package/dist/src/components/variants/minimal/MinimalSeekBar.tsx +0 -150
- package/dist/src/components/variants/minimal/MinimalVolumeControl.d.ts +0 -7
- package/dist/src/components/variants/minimal/MinimalVolumeControl.tsx +0 -80
- package/dist/src/components/variants/minimal/SimpleMinimalPlayer.d.ts +0 -22
- package/dist/src/components/variants/minimal/SimpleMinimalPlayer.tsx +0 -209
- package/dist/src/components/variants/minimal/components/CenterPlayButton.d.ts +0 -7
- package/dist/src/components/variants/minimal/components/CenterPlayButton.tsx +0 -22
- package/dist/src/components/variants/minimal/components/ControlBar.d.ts +0 -43
- package/dist/src/components/variants/minimal/components/ControlBar.tsx +0 -146
- package/dist/src/components/variants/minimal/components/EnhancedSettingsMenu.d.ts +0 -24
- package/dist/src/components/variants/minimal/components/EnhancedSettingsMenu.tsx +0 -361
- package/dist/src/components/variants/minimal/components/PlaybackControls.d.ts +0 -9
- package/dist/src/components/variants/minimal/components/PlaybackControls.tsx +0 -51
- package/dist/src/components/variants/minimal/components/RightControls.d.ts +0 -25
- package/dist/src/components/variants/minimal/components/RightControls.tsx +0 -173
- package/dist/src/components/variants/minimal/components/SeekBar.d.ts +0 -11
- package/dist/src/components/variants/minimal/components/SeekBar.tsx +0 -131
- package/dist/src/components/variants/minimal/components/SettingsDropdown.d.ts +0 -9
- package/dist/src/components/variants/minimal/components/SettingsDropdown.tsx +0 -70
- package/dist/src/components/variants/minimal/components/SubtitleDisplay.d.ts +0 -7
- package/dist/src/components/variants/minimal/components/SubtitleDisplay.tsx +0 -21
- package/dist/src/components/variants/minimal/components/TimeDisplay.d.ts +0 -7
- package/dist/src/components/variants/minimal/components/TimeDisplay.tsx +0 -18
- package/dist/src/components/variants/minimal/components/VideoElement.d.ts +0 -13
- package/dist/src/components/variants/minimal/components/VideoElement.tsx +0 -40
- package/dist/src/components/variants/minimal/components/VolumeControl.d.ts +0 -13
- package/dist/src/components/variants/minimal/components/VolumeControl.tsx +0 -217
- package/dist/src/components/variants/minimal/index.d.ts +0 -17
- package/dist/src/components/variants/minimal/index.ts +0 -23
- package/dist/src/components/video-player.d.ts +0 -3
- package/dist/src/components/video-player.tsx +0 -100
- package/dist/src/context/error-handling.d.ts +0 -72
- package/dist/src/context/error-handling.ts +0 -394
- package/dist/src/context/media-context.d.ts +0 -104
- package/dist/src/context/media-context.tsx +0 -208
- package/dist/src/context/media-provider.d.ts +0 -26
- package/dist/src/context/media-provider.tsx +0 -265
- package/dist/src/context/media-store.d.ts +0 -33
- package/dist/src/context/media-store.ts +0 -379
- package/dist/src/context/persistence.d.ts +0 -83
- package/dist/src/context/persistence.ts +0 -453
- package/dist/src/core/events/event-system.d.ts +0 -170
- package/dist/src/core/events/event-system.ts +0 -442
- package/dist/src/core/events/hooks.d.ts +0 -33
- package/dist/src/core/events/hooks.ts +0 -302
- package/dist/src/core/events/index.d.ts +0 -6
- package/dist/src/core/events/index.ts +0 -22
- package/dist/src/core/events/middleware.d.ts +0 -39
- package/dist/src/core/events/middleware.ts +0 -269
- package/dist/src/core/index.d.ts +0 -8
- package/dist/src/core/index.ts +0 -22
- package/dist/src/core/optimization/bundle-optimizer.d.ts +0 -44
- package/dist/src/core/optimization/bundle-optimizer.tsx +0 -308
- package/dist/src/core/performance/cicd.d.ts +0 -8
- package/dist/src/core/performance/cicd.ts +0 -96
- package/dist/src/core/performance/index.d.ts +0 -10
- package/dist/src/core/performance/index.ts +0 -38
- package/dist/src/core/performance/media-loading-optimizer.d.ts +0 -105
- package/dist/src/core/performance/media-loading-optimizer.ts +0 -538
- package/dist/src/core/performance/performance-budgets.d.ts +0 -68
- package/dist/src/core/performance/performance-budgets.ts +0 -432
- package/dist/src/core/performance/performance-monitor.d.ts +0 -95
- package/dist/src/core/performance/performance-monitor.tsx +0 -476
- package/dist/src/core/performance/performance-testing.d.ts +0 -69
- package/dist/src/core/performance/performance-testing.ts +0 -459
- package/dist/src/core/plugins/base-plugin.d.ts +0 -52
- package/dist/src/core/plugins/base-plugin.ts +0 -224
- package/dist/src/core/plugins/enhanced-plugin-system.d.ts +0 -160
- package/dist/src/core/plugins/enhanced-plugin-system.ts +0 -417
- package/dist/src/core/plugins/examples/analytics-plugin.d.ts +0 -30
- package/dist/src/core/plugins/examples/analytics-plugin.ts +0 -242
- package/dist/src/core/plugins/index.d.ts +0 -8
- package/dist/src/core/plugins/index.ts +0 -39
- package/dist/src/core/plugins/registry.d.ts +0 -31
- package/dist/src/core/plugins/registry.ts +0 -327
- package/dist/src/core/plugins/types.d.ts +0 -101
- package/dist/src/core/plugins/types.ts +0 -159
- package/dist/src/core/plugins/utils.d.ts +0 -38
- package/dist/src/core/plugins/utils.ts +0 -316
- package/dist/src/core/progressive-loading.d.ts +0 -88
- package/dist/src/core/progressive-loading.tsx +0 -322
- package/dist/src/core/providers/enhanced-hls-provider.d.ts +0 -50
- package/dist/src/core/providers/enhanced-hls-provider.ts +0 -308
- package/dist/src/core/providers/service-provider.d.ts +0 -49
- package/dist/src/core/providers/service-provider.tsx +0 -168
- package/dist/src/core/utils.d.ts +0 -25
- package/dist/src/core/utils.tsx +0 -38
- package/dist/src/features/media-session/media-session-manager.d.ts +0 -132
- package/dist/src/features/media-session/media-session-manager.ts +0 -429
- package/dist/src/features/picture-in-picture/pip-manager.d.ts +0 -94
- package/dist/src/features/picture-in-picture/pip-manager.ts +0 -429
- package/dist/src/features/playlist/playlist-manager.d.ts +0 -208
- package/dist/src/features/playlist/playlist-manager.ts +0 -606
- package/dist/src/features/subtitles/subtitle-manager.d.ts +0 -136
- package/dist/src/features/subtitles/subtitle-manager.ts +0 -441
- package/dist/src/features/subtitles/subtitle-parser.d.ts +0 -60
- package/dist/src/features/subtitles/subtitle-parser.ts +0 -280
- package/dist/src/features/thumbnails/thumbnail-generator.d.ts +0 -136
- package/dist/src/features/thumbnails/thumbnail-generator.ts +0 -519
- package/dist/src/hooks/accessibility/index.d.ts +0 -5
- package/dist/src/hooks/accessibility/index.ts +0 -27
- package/dist/src/hooks/accessibility/use-accessibility-preferences.d.ts +0 -14
- package/dist/src/hooks/accessibility/use-accessibility-preferences.ts +0 -188
- package/dist/src/hooks/accessibility/use-focus-management.d.ts +0 -31
- package/dist/src/hooks/accessibility/use-focus-management.ts +0 -176
- package/dist/src/hooks/accessibility/use-keyboard-shortcuts.d.ts +0 -38
- package/dist/src/hooks/accessibility/use-keyboard-shortcuts.ts +0 -144
- package/dist/src/hooks/accessibility/use-screen-reader.d.ts +0 -22
- package/dist/src/hooks/accessibility/use-screen-reader.ts +0 -182
- package/dist/src/hooks/core/index.d.ts +0 -18
- package/dist/src/hooks/core/index.ts +0 -47
- package/dist/src/hooks/legacy.d.ts +0 -18
- package/dist/src/hooks/legacy.ts +0 -27
- package/dist/src/hooks/use-enhanced-media-player.d.ts +0 -88
- package/dist/src/hooks/use-enhanced-media-player.ts +0 -485
- package/dist/src/hooks/use-intelligent-preloading.d.ts +0 -66
- package/dist/src/hooks/use-intelligent-preloading.ts +0 -363
- package/dist/src/hooks/use-keyboard-controls.d.ts +0 -13
- package/dist/src/hooks/use-keyboard-controls.ts +0 -115
- package/dist/src/hooks/use-media-actions.d.ts +0 -62
- package/dist/src/hooks/use-media-actions.ts +0 -175
- package/dist/src/hooks/use-media-metadata.d.ts +0 -11
- package/dist/src/hooks/use-media-metadata.ts +0 -89
- package/dist/src/hooks/use-media-optimistic.d.ts +0 -36
- package/dist/src/hooks/use-media-optimistic.ts +0 -270
- package/dist/src/hooks/use-media-player.d.ts +0 -31
- package/dist/src/hooks/use-media-player.ts +0 -310
- package/dist/src/hooks/use-media-state.d.ts +0 -17
- package/dist/src/hooks/use-media-state.ts +0 -190
- package/dist/src/hooks/use-memory-optimization.d.ts +0 -40
- package/dist/src/hooks/use-memory-optimization.ts +0 -358
- package/dist/src/hooks/use-mobile.ts +0 -125
- package/dist/src/hooks/use-optimistic-controls.d.ts +0 -22
- package/dist/src/hooks/use-optimistic-controls.ts +0 -92
- package/dist/src/hooks/use-optimized-media.d.ts +0 -46
- package/dist/src/hooks/use-optimized-media.ts +0 -263
- package/dist/src/hooks/use-touch-gestures.d.ts +0 -47
- package/dist/src/hooks/use-touch-gestures.ts +0 -417
- package/dist/src/hooks/useEnhancedSubtitles.d.ts +0 -39
- package/dist/src/hooks/useEnhancedSubtitles.ts +0 -258
- package/dist/src/hooks/useKeyboardShortcuts.d.ts +0 -10
- package/dist/src/hooks/useKeyboardShortcuts.ts +0 -74
- package/dist/src/hooks/useMediaControls.d.ts +0 -9
- package/dist/src/hooks/useMediaControls.ts +0 -52
- package/dist/src/hooks/useScreenshot.d.ts +0 -4
- package/dist/src/hooks/useScreenshot.ts +0 -57
- package/dist/src/hooks/useSubtitles.d.ts +0 -8
- package/dist/src/hooks/useSubtitles.ts +0 -91
- package/dist/src/hooks/useVideoPlayer.d.ts +0 -32
- package/dist/src/hooks/useVideoPlayer.ts +0 -232
- package/dist/src/icons/components/FullscreenIcon.d.ts +0 -3
- package/dist/src/icons/components/FullscreenIcon.tsx +0 -37
- package/dist/src/icons/components/SettingsIcon.d.ts +0 -3
- package/dist/src/icons/components/SettingsIcon.tsx +0 -38
- package/dist/src/icons/components/animated/LoadingIcon.d.ts +0 -3
- package/dist/src/icons/components/animated/LoadingIcon.tsx +0 -43
- package/dist/src/icons/components/animated/PlayPauseIcon.d.ts +0 -7
- package/dist/src/icons/components/animated/PlayPauseIcon.tsx +0 -50
- package/dist/src/icons/components/media/PauseIcon.d.ts +0 -3
- package/dist/src/icons/components/media/PauseIcon.tsx +0 -39
- package/dist/src/icons/components/media/PlayIcon.d.ts +0 -3
- package/dist/src/icons/components/media/PlayIcon.tsx +0 -38
- package/dist/src/icons/components/volume/VolumeIcon.d.ts +0 -3
- package/dist/src/icons/components/volume/VolumeIcon.tsx +0 -39
- package/dist/src/icons/components/volume/VolumeOffIcon.d.ts +0 -3
- package/dist/src/icons/components/volume/VolumeOffIcon.tsx +0 -39
- package/dist/src/icons/index.d.ts +0 -28
- package/dist/src/icons/index.ts +0 -56
- package/dist/src/icons/provider.d.ts +0 -13
- package/dist/src/icons/provider.tsx +0 -64
- package/dist/src/icons/types.d.ts +0 -18
- package/dist/src/icons/types.ts +0 -40
- package/dist/src/index-enhanced.d.ts +0 -13
- package/dist/src/index-enhanced.ts +0 -35
- package/dist/src/index-legacy.d.ts +0 -81
- package/dist/src/index-legacy.ts +0 -327
- package/dist/src/index.css +0 -102
- package/dist/src/index.d.ts +0 -38
- package/dist/src/index.minimal.d.ts +0 -2
- package/dist/src/index.minimal.ts +0 -4
- package/dist/src/index.ts +0 -216
- package/dist/src/lib/deprecation.d.ts +0 -7
- package/dist/src/lib/deprecation.ts +0 -51
- package/dist/src/lib/format-time.d.ts +0 -9
- package/dist/src/lib/format-time.ts +0 -37
- package/dist/src/lib/index.d.ts +0 -3
- package/dist/src/lib/index.ts +0 -3
- package/dist/src/lib/utils.d.ts +0 -3
- package/dist/src/lib/utils.ts +0 -6
- package/dist/src/styles/globals.css +0 -462
- package/dist/src/styles/minimal-player.css +0 -589
- package/dist/src/styles/pixel-art.css +0 -46
- package/dist/src/styles/videojs.css +0 -100
- package/dist/src/test/setup.d.ts +0 -2
- package/dist/src/test/setup.ts +0 -79
- package/dist/src/types/events.d.ts +0 -41
- package/dist/src/types/events.ts +0 -47
- package/dist/src/types/formats.d.ts +0 -45
- package/dist/src/types/formats.ts +0 -95
- package/dist/src/types/index.d.ts +0 -128
- package/dist/src/types/index.ts +0 -225
- package/dist/src/types/videojs-plugins.d.ts +0 -14
- package/dist/styles/globals.css +0 -462
- package/dist/styles/minimal-player.css +0 -589
- package/dist/styles/pixel-art.css +0 -46
- package/dist/styles/videojs.css +0 -100
- package/src/adapters/videojs-adapter.d.ts +0 -38
- package/src/adapters/videojs-adapter.d.ts.map +0 -1
- package/src/components/AnimateLoading.d.ts +0 -9
- package/src/components/AnimateLoading.d.ts.map +0 -1
- package/src/components/LoadingState.d.ts +0 -33
- package/src/components/LoadingState.d.ts.map +0 -1
- package/src/components/accessibility/keyboard-help-overlay.d.ts +0 -17
- package/src/components/accessibility/keyboard-help-overlay.d.ts.map +0 -1
- package/src/components/audio-player.d.ts +0 -3
- package/src/components/audio-player.d.ts.map +0 -1
- package/src/components/basic/index.d.ts +0 -26
- package/src/components/basic/index.d.ts.map +0 -1
- package/src/components/enhanced/advanced-features.d.ts +0 -45
- package/src/components/enhanced/advanced-features.d.ts.map +0 -1
- package/src/components/enhanced/debug-panel.d.ts +0 -70
- package/src/components/enhanced/debug-panel.d.ts.map +0 -1
- package/src/components/enhanced/enhanced-controls.d.ts +0 -50
- package/src/components/enhanced/enhanced-controls.d.ts.map +0 -1
- package/src/components/enhanced/enhanced-media-player.d.ts +0 -26
- package/src/components/enhanced/enhanced-media-player.d.ts.map +0 -1
- package/src/components/enhanced/error-handling.d.ts +0 -36
- package/src/components/enhanced/error-handling.d.ts.map +0 -1
- package/src/components/enhanced/index.d.ts +0 -7
- package/src/components/enhanced/index.d.ts.map +0 -1
- package/src/components/enhanced/media-player-enhanced.d.ts +0 -21
- package/src/components/enhanced/media-player-enhanced.d.ts.map +0 -1
- package/src/components/examples/basic-video-player.d.ts +0 -10
- package/src/components/examples/basic-video-player.d.ts.map +0 -1
- package/src/components/examples/custom-controls-example.d.ts +0 -10
- package/src/components/examples/custom-controls-example.d.ts.map +0 -1
- package/src/components/examples/enhanced-controls-example.d.ts +0 -9
- package/src/components/examples/enhanced-controls-example.d.ts.map +0 -1
- package/src/components/examples/enhanced-media-player-example.d.ts +0 -9
- package/src/components/examples/enhanced-media-player-example.d.ts.map +0 -1
- package/src/components/examples/loading-states-demo.d.ts +0 -2
- package/src/components/examples/loading-states-demo.d.ts.map +0 -1
- package/src/components/examples/react-19-demo.d.ts +0 -10
- package/src/components/examples/react-19-demo.d.ts.map +0 -1
- package/src/components/examples/volume-orientation-demo.d.ts +0 -2
- package/src/components/examples/volume-orientation-demo.d.ts.map +0 -1
- package/src/components/icon-demo.d.ts +0 -2
- package/src/components/icon-demo.d.ts.map +0 -1
- package/src/components/icons/index.d.ts +0 -36
- package/src/components/icons/index.d.ts.map +0 -1
- package/src/components/icons/svg-icons/ArrowLeftIcon.d.ts +0 -4
- package/src/components/icons/svg-icons/ArrowLeftIcon.d.ts.map +0 -1
- package/src/components/icons/svg-icons/ArrowRightIcon.d.ts +0 -4
- package/src/components/icons/svg-icons/ArrowRightIcon.d.ts.map +0 -1
- package/src/components/icons/svg-icons/AudioIcon.d.ts +0 -4
- package/src/components/icons/svg-icons/AudioIcon.d.ts.map +0 -1
- package/src/components/icons/svg-icons/BackwardIcon.d.ts +0 -4
- package/src/components/icons/svg-icons/BackwardIcon.d.ts.map +0 -1
- package/src/components/icons/svg-icons/CameraIcon.d.ts +0 -4
- package/src/components/icons/svg-icons/CameraIcon.d.ts.map +0 -1
- package/src/components/icons/svg-icons/CheckIcon.d.ts +0 -4
- package/src/components/icons/svg-icons/CheckIcon.d.ts.map +0 -1
- package/src/components/icons/svg-icons/EnablePiPIcon.d.ts +0 -4
- package/src/components/icons/svg-icons/EnablePiPIcon.d.ts.map +0 -1
- package/src/components/icons/svg-icons/ForwardIcon.d.ts +0 -4
- package/src/components/icons/svg-icons/ForwardIcon.d.ts.map +0 -1
- package/src/components/icons/svg-icons/FullscreenEnterIcon.d.ts +0 -4
- package/src/components/icons/svg-icons/FullscreenEnterIcon.d.ts.map +0 -1
- package/src/components/icons/svg-icons/FullscreenExitIcon.d.ts +0 -4
- package/src/components/icons/svg-icons/FullscreenExitIcon.d.ts.map +0 -1
- package/src/components/icons/svg-icons/LoadingIcon.d.ts +0 -4
- package/src/components/icons/svg-icons/LoadingIcon.d.ts.map +0 -1
- package/src/components/icons/svg-icons/PauseIcon.d.ts +0 -4
- package/src/components/icons/svg-icons/PauseIcon.d.ts.map +0 -1
- package/src/components/icons/svg-icons/PlayIcon.d.ts +0 -4
- package/src/components/icons/svg-icons/PlayIcon.d.ts.map +0 -1
- package/src/components/icons/svg-icons/PlaybackSpeedIcon.d.ts +0 -4
- package/src/components/icons/svg-icons/PlaybackSpeedIcon.d.ts.map +0 -1
- package/src/components/icons/svg-icons/QualityIcon.d.ts +0 -4
- package/src/components/icons/svg-icons/QualityIcon.d.ts.map +0 -1
- package/src/components/icons/svg-icons/SettingsIcon.d.ts +0 -4
- package/src/components/icons/svg-icons/SettingsIcon.d.ts.map +0 -1
- package/src/components/icons/svg-icons/SliderIcon.d.ts +0 -4
- package/src/components/icons/svg-icons/SliderIcon.d.ts.map +0 -1
- package/src/components/icons/svg-icons/SubtitleIcon.d.ts +0 -4
- package/src/components/icons/svg-icons/SubtitleIcon.d.ts.map +0 -1
- package/src/components/icons/svg-icons/SubtitleOffIcon.d.ts +0 -4
- package/src/components/icons/svg-icons/SubtitleOffIcon.d.ts.map +0 -1
- package/src/components/icons/svg-icons/UnPiPIcon.d.ts +0 -4
- package/src/components/icons/svg-icons/UnPiPIcon.d.ts.map +0 -1
- package/src/components/icons/svg-icons/VolumeMutedIcon.d.ts +0 -4
- package/src/components/icons/svg-icons/VolumeMutedIcon.d.ts.map +0 -1
- package/src/components/icons/svg-icons/VolumeOneIcon.d.ts +0 -4
- package/src/components/icons/svg-icons/VolumeOneIcon.d.ts.map +0 -1
- package/src/components/icons/svg-icons/VolumeThreeIcon.d.ts +0 -4
- package/src/components/icons/svg-icons/VolumeThreeIcon.d.ts.map +0 -1
- package/src/components/icons/svg-icons/VolumeTwoIcon.d.ts +0 -4
- package/src/components/icons/svg-icons/VolumeTwoIcon.d.ts.map +0 -1
- package/src/components/legacy.d.ts +0 -13
- package/src/components/legacy.d.ts.map +0 -1
- package/src/components/media-metadata-display.d.ts +0 -11
- package/src/components/media-metadata-display.d.ts.map +0 -1
- package/src/components/media-player-audio.d.ts +0 -9
- package/src/components/media-player-audio.d.ts.map +0 -1
- package/src/components/media-player-controls.d.ts +0 -23
- package/src/components/media-player-controls.d.ts.map +0 -1
- package/src/components/media-player-error.d.ts +0 -16
- package/src/components/media-player-error.d.ts.map +0 -1
- package/src/components/media-player-fullscreen.d.ts +0 -12
- package/src/components/media-player-fullscreen.d.ts.map +0 -1
- package/src/components/media-player-hls.d.ts +0 -23
- package/src/components/media-player-hls.d.ts.map +0 -1
- package/src/components/media-player-loading.d.ts +0 -12
- package/src/components/media-player-loading.d.ts.map +0 -1
- package/src/components/media-player-play.d.ts +0 -11
- package/src/components/media-player-play.d.ts.map +0 -1
- package/src/components/media-player-root.d.ts +0 -28
- package/src/components/media-player-root.d.ts.map +0 -1
- package/src/components/media-player-seek.d.ts +0 -15
- package/src/components/media-player-seek.d.ts.map +0 -1
- package/src/components/media-player-time.d.ts +0 -12
- package/src/components/media-player-time.d.ts.map +0 -1
- package/src/components/media-player-tooltip.d.ts +0 -13
- package/src/components/media-player-tooltip.d.ts.map +0 -1
- package/src/components/media-player-video.d.ts +0 -9
- package/src/components/media-player-video.d.ts.map +0 -1
- package/src/components/media-player-volume.d.ts +0 -13
- package/src/components/media-player-volume.d.ts.map +0 -1
- package/src/components/media-player.d.ts +0 -3
- package/src/components/media-player.d.ts.map +0 -1
- package/src/components/media-suspense.d.ts +0 -78
- package/src/components/media-suspense.d.ts.map +0 -1
- package/src/components/player-settings-form.d.ts +0 -8
- package/src/components/player-settings-form.d.ts.map +0 -1
- package/src/components/react-player-wrapper.d.ts +0 -64
- package/src/components/react-player-wrapper.d.ts.map +0 -1
- package/src/components/simple-video-player.d.ts +0 -9
- package/src/components/simple-video-player.d.ts.map +0 -1
- package/src/components/ui/button.tsx +0 -49
- package/src/components/ui/dropdown-menu.tsx +0 -137
- package/src/components/ui/enhanced-seek-bar.d.ts +0 -3
- package/src/components/ui/enhanced-seek-bar.d.ts.map +0 -1
- package/src/components/ui/fullscreen-button.d.ts +0 -3
- package/src/components/ui/fullscreen-button.d.ts.map +0 -1
- package/src/components/ui/icons.tsx +0 -174
- package/src/components/ui/media-resource-preloader.d.ts +0 -21
- package/src/components/ui/media-resource-preloader.d.ts.map +0 -1
- package/src/components/ui/play-button.d.ts +0 -3
- package/src/components/ui/play-button.d.ts.map +0 -1
- package/src/components/ui/seek-bar.d.ts +0 -3
- package/src/components/ui/seek-bar.d.ts.map +0 -1
- package/src/components/ui/slider.tsx +0 -55
- package/src/components/ui/time-display.d.ts +0 -3
- package/src/components/ui/time-display.d.ts.map +0 -1
- package/src/components/ui/tooltip.tsx +0 -131
- package/src/components/ui/volume-control.d.ts +0 -3
- package/src/components/ui/volume-control.d.ts.map +0 -1
- package/src/components/unified/base-media-player.d.ts +0 -18
- package/src/components/unified/base-media-player.d.ts.map +0 -1
- package/src/components/unified/media-player.d.ts +0 -37
- package/src/components/unified/media-player.d.ts.map +0 -1
- package/src/components/variants/minimal/AccessibleMinimalPlayer.d.ts +0 -42
- package/src/components/variants/minimal/AccessibleMinimalPlayer.d.ts.map +0 -1
- package/src/components/variants/minimal/EnhancedMinimalMediaPlayer.d.ts +0 -44
- package/src/components/variants/minimal/EnhancedMinimalMediaPlayer.d.ts.map +0 -1
- package/src/components/variants/minimal/MinimalControls.d.ts +0 -19
- package/src/components/variants/minimal/MinimalControls.d.ts.map +0 -1
- package/src/components/variants/minimal/MinimalLoading.d.ts +0 -10
- package/src/components/variants/minimal/MinimalLoading.d.ts.map +0 -1
- package/src/components/variants/minimal/MinimalMediaPlayer.d.ts +0 -38
- package/src/components/variants/minimal/MinimalMediaPlayer.d.ts.map +0 -1
- package/src/components/variants/minimal/MinimalOverlay.d.ts +0 -11
- package/src/components/variants/minimal/MinimalOverlay.d.ts.map +0 -1
- package/src/components/variants/minimal/MinimalPlayButton.d.ts +0 -9
- package/src/components/variants/minimal/MinimalPlayButton.d.ts.map +0 -1
- package/src/components/variants/minimal/MinimalSeekBar.d.ts +0 -7
- package/src/components/variants/minimal/MinimalSeekBar.d.ts.map +0 -1
- package/src/components/variants/minimal/MinimalVolumeControl.d.ts +0 -7
- package/src/components/variants/minimal/MinimalVolumeControl.d.ts.map +0 -1
- package/src/components/variants/minimal/SimpleMinimalPlayer.d.ts +0 -22
- package/src/components/variants/minimal/SimpleMinimalPlayer.d.ts.map +0 -1
- package/src/components/variants/minimal/components/CenterPlayButton.d.ts +0 -7
- package/src/components/variants/minimal/components/CenterPlayButton.d.ts.map +0 -1
- package/src/components/variants/minimal/components/ControlBar.d.ts +0 -43
- package/src/components/variants/minimal/components/ControlBar.d.ts.map +0 -1
- package/src/components/variants/minimal/components/EnhancedSettingsMenu.d.ts +0 -24
- package/src/components/variants/minimal/components/EnhancedSettingsMenu.d.ts.map +0 -1
- package/src/components/variants/minimal/components/PlaybackControls.d.ts +0 -9
- package/src/components/variants/minimal/components/PlaybackControls.d.ts.map +0 -1
- package/src/components/variants/minimal/components/RightControls.d.ts +0 -25
- package/src/components/variants/minimal/components/RightControls.d.ts.map +0 -1
- package/src/components/variants/minimal/components/SeekBar.d.ts +0 -11
- package/src/components/variants/minimal/components/SeekBar.d.ts.map +0 -1
- package/src/components/variants/minimal/components/SettingsDropdown.d.ts +0 -9
- package/src/components/variants/minimal/components/SettingsDropdown.d.ts.map +0 -1
- package/src/components/variants/minimal/components/SubtitleDisplay.d.ts +0 -7
- package/src/components/variants/minimal/components/SubtitleDisplay.d.ts.map +0 -1
- package/src/components/variants/minimal/components/TimeDisplay.d.ts +0 -7
- package/src/components/variants/minimal/components/TimeDisplay.d.ts.map +0 -1
- package/src/components/variants/minimal/components/VideoElement.d.ts +0 -13
- package/src/components/variants/minimal/components/VideoElement.d.ts.map +0 -1
- package/src/components/variants/minimal/components/VolumeControl.d.ts +0 -13
- package/src/components/variants/minimal/components/VolumeControl.d.ts.map +0 -1
- package/src/components/variants/minimal/index.d.ts +0 -17
- package/src/components/variants/minimal/index.d.ts.map +0 -1
- package/src/components/video-player.d.ts +0 -3
- package/src/components/video-player.d.ts.map +0 -1
- package/src/context/error-handling.d.ts +0 -72
- package/src/context/error-handling.d.ts.map +0 -1
- package/src/context/media-context.d.ts +0 -104
- package/src/context/media-context.d.ts.map +0 -1
- package/src/context/media-provider.d.ts +0 -26
- package/src/context/media-provider.d.ts.map +0 -1
- package/src/context/media-store.d.ts +0 -33
- package/src/context/media-store.d.ts.map +0 -1
- package/src/context/persistence.d.ts +0 -83
- package/src/context/persistence.d.ts.map +0 -1
- package/src/core/events/event-system.d.ts +0 -170
- package/src/core/events/event-system.d.ts.map +0 -1
- package/src/core/events/hooks.d.ts +0 -33
- package/src/core/events/hooks.d.ts.map +0 -1
- package/src/core/events/index.d.ts +0 -6
- package/src/core/events/index.d.ts.map +0 -1
- package/src/core/events/middleware.d.ts +0 -39
- package/src/core/events/middleware.d.ts.map +0 -1
- package/src/core/index.d.ts +0 -8
- package/src/core/index.d.ts.map +0 -1
- package/src/core/optimization/bundle-optimizer.d.ts +0 -44
- package/src/core/optimization/bundle-optimizer.d.ts.map +0 -1
- package/src/core/performance/cicd.d.ts +0 -8
- package/src/core/performance/cicd.d.ts.map +0 -1
- package/src/core/performance/index.d.ts +0 -10
- package/src/core/performance/index.d.ts.map +0 -1
- package/src/core/performance/media-loading-optimizer.d.ts +0 -105
- package/src/core/performance/media-loading-optimizer.d.ts.map +0 -1
- package/src/core/performance/performance-budgets.d.ts +0 -68
- package/src/core/performance/performance-budgets.d.ts.map +0 -1
- package/src/core/performance/performance-monitor.d.ts +0 -95
- package/src/core/performance/performance-monitor.d.ts.map +0 -1
- package/src/core/performance/performance-testing.d.ts +0 -69
- package/src/core/performance/performance-testing.d.ts.map +0 -1
- package/src/core/plugins/base-plugin.d.ts +0 -52
- package/src/core/plugins/base-plugin.d.ts.map +0 -1
- package/src/core/plugins/enhanced-plugin-system.d.ts +0 -160
- package/src/core/plugins/enhanced-plugin-system.d.ts.map +0 -1
- package/src/core/plugins/examples/analytics-plugin.d.ts +0 -30
- package/src/core/plugins/examples/analytics-plugin.d.ts.map +0 -1
- package/src/core/plugins/index.d.ts +0 -8
- package/src/core/plugins/index.d.ts.map +0 -1
- package/src/core/plugins/registry.d.ts +0 -31
- package/src/core/plugins/registry.d.ts.map +0 -1
- package/src/core/plugins/types.d.ts +0 -101
- package/src/core/plugins/types.d.ts.map +0 -1
- package/src/core/plugins/utils.d.ts +0 -38
- package/src/core/plugins/utils.d.ts.map +0 -1
- package/src/core/progressive-loading.d.ts +0 -88
- package/src/core/progressive-loading.d.ts.map +0 -1
- package/src/core/providers/enhanced-hls-provider.d.ts +0 -50
- package/src/core/providers/enhanced-hls-provider.d.ts.map +0 -1
- package/src/core/providers/service-provider.d.ts +0 -49
- package/src/core/providers/service-provider.d.ts.map +0 -1
- package/src/core/utils.d.ts +0 -25
- package/src/core/utils.d.ts.map +0 -1
- package/src/features/media-session/media-session-manager.d.ts +0 -132
- package/src/features/media-session/media-session-manager.d.ts.map +0 -1
- package/src/features/picture-in-picture/pip-manager.d.ts +0 -94
- package/src/features/picture-in-picture/pip-manager.d.ts.map +0 -1
- package/src/features/playlist/playlist-manager.d.ts +0 -208
- package/src/features/playlist/playlist-manager.d.ts.map +0 -1
- package/src/features/subtitles/subtitle-manager.d.ts +0 -136
- package/src/features/subtitles/subtitle-manager.d.ts.map +0 -1
- package/src/features/subtitles/subtitle-parser.d.ts +0 -60
- package/src/features/subtitles/subtitle-parser.d.ts.map +0 -1
- package/src/features/thumbnails/thumbnail-generator.d.ts +0 -136
- package/src/features/thumbnails/thumbnail-generator.d.ts.map +0 -1
- package/src/hooks/accessibility/index.d.ts +0 -5
- package/src/hooks/accessibility/index.d.ts.map +0 -1
- package/src/hooks/accessibility/use-accessibility-preferences.d.ts +0 -14
- package/src/hooks/accessibility/use-accessibility-preferences.d.ts.map +0 -1
- package/src/hooks/accessibility/use-focus-management.d.ts +0 -31
- package/src/hooks/accessibility/use-focus-management.d.ts.map +0 -1
- package/src/hooks/accessibility/use-keyboard-shortcuts.d.ts +0 -38
- package/src/hooks/accessibility/use-keyboard-shortcuts.d.ts.map +0 -1
- package/src/hooks/accessibility/use-screen-reader.d.ts +0 -22
- package/src/hooks/accessibility/use-screen-reader.d.ts.map +0 -1
- package/src/hooks/core/index.d.ts +0 -18
- package/src/hooks/core/index.d.ts.map +0 -1
- package/src/hooks/legacy.d.ts +0 -18
- package/src/hooks/legacy.d.ts.map +0 -1
- package/src/hooks/use-enhanced-media-player.d.ts +0 -88
- package/src/hooks/use-enhanced-media-player.d.ts.map +0 -1
- package/src/hooks/use-intelligent-preloading.d.ts +0 -66
- package/src/hooks/use-intelligent-preloading.d.ts.map +0 -1
- package/src/hooks/use-keyboard-controls.d.ts +0 -13
- package/src/hooks/use-keyboard-controls.d.ts.map +0 -1
- package/src/hooks/use-media-actions.d.ts +0 -62
- package/src/hooks/use-media-actions.d.ts.map +0 -1
- package/src/hooks/use-media-metadata.d.ts +0 -11
- package/src/hooks/use-media-metadata.d.ts.map +0 -1
- package/src/hooks/use-media-optimistic.d.ts +0 -36
- package/src/hooks/use-media-optimistic.d.ts.map +0 -1
- package/src/hooks/use-media-player.d.ts +0 -31
- package/src/hooks/use-media-player.d.ts.map +0 -1
- package/src/hooks/use-media-state.d.ts +0 -17
- package/src/hooks/use-media-state.d.ts.map +0 -1
- package/src/hooks/use-memory-optimization.d.ts +0 -40
- package/src/hooks/use-memory-optimization.d.ts.map +0 -1
- package/src/hooks/use-mobile.ts +0 -125
- package/src/hooks/use-optimistic-controls.d.ts +0 -22
- package/src/hooks/use-optimistic-controls.d.ts.map +0 -1
- package/src/hooks/use-optimized-media.d.ts +0 -46
- package/src/hooks/use-optimized-media.d.ts.map +0 -1
- package/src/hooks/use-touch-gestures.d.ts +0 -47
- package/src/hooks/use-touch-gestures.d.ts.map +0 -1
- package/src/hooks/useEnhancedSubtitles.d.ts +0 -39
- package/src/hooks/useEnhancedSubtitles.d.ts.map +0 -1
- package/src/hooks/useKeyboardShortcuts.d.ts +0 -10
- package/src/hooks/useKeyboardShortcuts.d.ts.map +0 -1
- package/src/hooks/useMediaControls.d.ts +0 -9
- package/src/hooks/useMediaControls.d.ts.map +0 -1
- package/src/hooks/useScreenshot.d.ts +0 -4
- package/src/hooks/useScreenshot.d.ts.map +0 -1
- package/src/hooks/useSubtitles.d.ts +0 -8
- package/src/hooks/useSubtitles.d.ts.map +0 -1
- package/src/hooks/useVideoPlayer.d.ts +0 -32
- package/src/hooks/useVideoPlayer.d.ts.map +0 -1
- package/src/icons/components/FullscreenIcon.d.ts +0 -3
- package/src/icons/components/FullscreenIcon.d.ts.map +0 -1
- package/src/icons/components/SettingsIcon.d.ts +0 -3
- package/src/icons/components/SettingsIcon.d.ts.map +0 -1
- package/src/icons/components/animated/LoadingIcon.d.ts +0 -3
- package/src/icons/components/animated/LoadingIcon.d.ts.map +0 -1
- package/src/icons/components/animated/PlayPauseIcon.d.ts +0 -7
- package/src/icons/components/animated/PlayPauseIcon.d.ts.map +0 -1
- package/src/icons/components/media/PauseIcon.d.ts +0 -3
- package/src/icons/components/media/PauseIcon.d.ts.map +0 -1
- package/src/icons/components/media/PlayIcon.d.ts +0 -3
- package/src/icons/components/media/PlayIcon.d.ts.map +0 -1
- package/src/icons/components/volume/VolumeIcon.d.ts +0 -3
- package/src/icons/components/volume/VolumeIcon.d.ts.map +0 -1
- package/src/icons/components/volume/VolumeOffIcon.d.ts +0 -3
- package/src/icons/components/volume/VolumeOffIcon.d.ts.map +0 -1
- package/src/icons/index.d.ts +0 -28
- package/src/icons/index.d.ts.map +0 -1
- package/src/icons/provider.d.ts +0 -13
- package/src/icons/provider.d.ts.map +0 -1
- package/src/icons/types.d.ts +0 -18
- package/src/icons/types.d.ts.map +0 -1
- package/src/index-enhanced.d.ts +0 -13
- package/src/index-enhanced.d.ts.map +0 -1
- package/src/index-legacy.d.ts +0 -81
- package/src/index-legacy.d.ts.map +0 -1
- package/src/index.d.ts +0 -38
- package/src/index.d.ts.map +0 -1
- package/src/index.minimal.d.ts +0 -2
- package/src/index.minimal.d.ts.map +0 -1
- package/src/index.minimal.ts +0 -4
- package/src/lib/deprecation.d.ts +0 -7
- package/src/lib/deprecation.d.ts.map +0 -1
- package/src/lib/format-time.d.ts +0 -9
- package/src/lib/format-time.d.ts.map +0 -1
- package/src/lib/index.d.ts +0 -3
- package/src/lib/index.d.ts.map +0 -1
- package/src/lib/utils.d.ts +0 -3
- package/src/lib/utils.d.ts.map +0 -1
- package/src/test/setup.d.ts +0 -2
- package/src/test/setup.d.ts.map +0 -1
- package/src/types/events.d.ts +0 -41
- package/src/types/events.d.ts.map +0 -1
- package/src/types/formats.d.ts +0 -45
- package/src/types/formats.d.ts.map +0 -1
- package/src/types/index.d.ts +0 -128
- package/src/types/index.d.ts.map +0 -1
|
@@ -0,0 +1,301 @@
|
|
|
1
|
+
var p = Object.defineProperty;
|
|
2
|
+
var g = (a, e, r) => e in a ? p(a, e, { enumerable: !0, configurable: !0, writable: !0, value: r }) : a[e] = r;
|
|
3
|
+
var d = (a, e, r) => g(a, typeof e != "symbol" ? e + "" : e, r);
|
|
4
|
+
import { j as t } from "./context-BYwDoSRX.js";
|
|
5
|
+
import { useState as m, useEffect as h, useCallback as b, useRef as M } from "react";
|
|
6
|
+
const x = {
|
|
7
|
+
lcp: { good: 2500, poor: 4e3 },
|
|
8
|
+
fid: { good: 100, poor: 300 },
|
|
9
|
+
cls: { good: 0.1, poor: 0.25 },
|
|
10
|
+
renderTime: { good: 16, poor: 100 },
|
|
11
|
+
// Target 60fps = 16.67ms per frame
|
|
12
|
+
memoryUsage: { good: 50 * 1024 * 1024, poor: 100 * 1024 * 1024 }
|
|
13
|
+
// 50MB good, 100MB poor
|
|
14
|
+
};
|
|
15
|
+
class v {
|
|
16
|
+
constructor(e = x) {
|
|
17
|
+
d(this, "metrics", []);
|
|
18
|
+
d(this, "listeners", /* @__PURE__ */ new Set());
|
|
19
|
+
d(this, "thresholds");
|
|
20
|
+
d(this, "observer");
|
|
21
|
+
d(this, "isMonitoring", !1);
|
|
22
|
+
this.thresholds = e, this.initializeWebVitals(), this.initializePerformanceObserver();
|
|
23
|
+
}
|
|
24
|
+
async initializeWebVitals() {
|
|
25
|
+
if (!(typeof window > "u"))
|
|
26
|
+
try {
|
|
27
|
+
const e = await import("web-vitals").catch(() => null);
|
|
28
|
+
if (!e) {
|
|
29
|
+
console.warn("web-vitals package not available, Core Web Vitals tracking disabled");
|
|
30
|
+
return;
|
|
31
|
+
}
|
|
32
|
+
const r = (o) => {
|
|
33
|
+
this.updateMetric(o.name.toLowerCase(), o.value);
|
|
34
|
+
}, s = e;
|
|
35
|
+
s.getCLS && s.getCLS(r), s.getFID && s.getFID(r), s.getFCP && s.getFCP(r), s.getLCP && s.getLCP(r), s.getTTFB && s.getTTFB(r), s.onINP && s.onINP(r);
|
|
36
|
+
} catch (e) {
|
|
37
|
+
console.warn("Web Vitals initialization failed:", e);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
initializePerformanceObserver() {
|
|
41
|
+
if (!(typeof window > "u" || !("PerformanceObserver" in window)))
|
|
42
|
+
try {
|
|
43
|
+
this.observer = new PerformanceObserver((e) => {
|
|
44
|
+
for (const r of e.getEntries())
|
|
45
|
+
this.handlePerformanceEntry(r);
|
|
46
|
+
}), this.observer.observe({ entryTypes: ["measure", "navigation", "resource", "paint"] });
|
|
47
|
+
} catch (e) {
|
|
48
|
+
console.warn("PerformanceObserver not supported:", e);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
handlePerformanceEntry(e) {
|
|
52
|
+
switch (e.entryType) {
|
|
53
|
+
case "measure":
|
|
54
|
+
e.name.startsWith("baroiplayer-render") && this.updateMetric("componentRenderTime", e.duration);
|
|
55
|
+
break;
|
|
56
|
+
case "resource":
|
|
57
|
+
(e.name.includes(".js") || e.name.includes(".css")) && this.updateMetric("bundleLoadTime", e.duration);
|
|
58
|
+
break;
|
|
59
|
+
case "paint":
|
|
60
|
+
e.name === "first-contentful-paint" && this.updateMetric("fcp", e.startTime);
|
|
61
|
+
break;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
updateMetric(e, r) {
|
|
65
|
+
const s = this.getCurrentMetrics(), o = {
|
|
66
|
+
...s,
|
|
67
|
+
[e]: r,
|
|
68
|
+
timestamp: Date.now(),
|
|
69
|
+
performanceScore: this.calculatePerformanceScore({ ...s, [e]: r })
|
|
70
|
+
};
|
|
71
|
+
this.metrics.push(o), this.metrics.length > 100 && (this.metrics = this.metrics.slice(-100)), this.listeners.forEach((i) => i(o));
|
|
72
|
+
}
|
|
73
|
+
getCurrentMetrics() {
|
|
74
|
+
return this.metrics[this.metrics.length - 1] || {
|
|
75
|
+
componentRenderTime: 0,
|
|
76
|
+
bundleLoadTime: 0,
|
|
77
|
+
mediaLoadTime: 0,
|
|
78
|
+
memoryUsage: this.getMemoryUsage(),
|
|
79
|
+
performanceScore: 0,
|
|
80
|
+
timestamp: Date.now()
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
getMemoryUsage() {
|
|
84
|
+
return "memory" in performance && performance.memory.usedJSHeapSize || 0;
|
|
85
|
+
}
|
|
86
|
+
calculatePerformanceScore(e) {
|
|
87
|
+
let r = 100;
|
|
88
|
+
return e.lcp && e.lcp > this.thresholds.lcp.good && (r -= e.lcp > this.thresholds.lcp.poor ? 30 : 15), e.fid && e.fid > this.thresholds.fid.good && (r -= e.fid > this.thresholds.fid.poor ? 25 : 10), e.cls && e.cls > this.thresholds.cls.good && (r -= e.cls > this.thresholds.cls.poor ? 20 : 10), e.componentRenderTime > this.thresholds.renderTime.good && (r -= e.componentRenderTime > this.thresholds.renderTime.poor ? 20 : 10), e.memoryUsage > this.thresholds.memoryUsage.good && (r -= e.memoryUsage > this.thresholds.memoryUsage.poor ? 15 : 5), Math.max(0, r);
|
|
89
|
+
}
|
|
90
|
+
// Public API
|
|
91
|
+
startMonitoring() {
|
|
92
|
+
this.isMonitoring = !0, this.startMemoryMonitoring();
|
|
93
|
+
}
|
|
94
|
+
stopMonitoring() {
|
|
95
|
+
this.isMonitoring = !1, this.observer && this.observer.disconnect();
|
|
96
|
+
}
|
|
97
|
+
startMemoryMonitoring() {
|
|
98
|
+
this.isMonitoring && (this.updateMetric("memoryUsage", this.getMemoryUsage()), setTimeout(() => this.startMemoryMonitoring(), 5e3));
|
|
99
|
+
}
|
|
100
|
+
measureComponentRender(e, r) {
|
|
101
|
+
const s = `baroiplayer-render-${e}-start`, o = `baroiplayer-render-${e}-end`, i = `baroiplayer-render-${e}`;
|
|
102
|
+
performance.mark(s);
|
|
103
|
+
const c = r();
|
|
104
|
+
performance.mark(o);
|
|
105
|
+
try {
|
|
106
|
+
performance.measure(i, s, o);
|
|
107
|
+
} catch (n) {
|
|
108
|
+
console.warn("Performance measurement failed:", n);
|
|
109
|
+
}
|
|
110
|
+
return c;
|
|
111
|
+
}
|
|
112
|
+
subscribe(e) {
|
|
113
|
+
return this.listeners.add(e), () => this.listeners.delete(e);
|
|
114
|
+
}
|
|
115
|
+
getLatestMetrics() {
|
|
116
|
+
return this.metrics[this.metrics.length - 1] || null;
|
|
117
|
+
}
|
|
118
|
+
getAllMetrics() {
|
|
119
|
+
return [...this.metrics];
|
|
120
|
+
}
|
|
121
|
+
getAverageMetrics(e = 10) {
|
|
122
|
+
const r = this.metrics.slice(-e);
|
|
123
|
+
if (r.length === 0) return {};
|
|
124
|
+
const s = {};
|
|
125
|
+
return [
|
|
126
|
+
"lcp",
|
|
127
|
+
"fid",
|
|
128
|
+
"cls",
|
|
129
|
+
"fcp",
|
|
130
|
+
"ttfb",
|
|
131
|
+
"inp",
|
|
132
|
+
"componentRenderTime",
|
|
133
|
+
"bundleLoadTime",
|
|
134
|
+
"mediaLoadTime",
|
|
135
|
+
"memoryUsage",
|
|
136
|
+
"performanceScore"
|
|
137
|
+
].forEach((i) => {
|
|
138
|
+
const c = r.map((n) => n[i]).filter((n) => typeof n == "number" && !isNaN(n));
|
|
139
|
+
c.length > 0 && (s[i] = c.reduce((n, u) => n + u, 0) / c.length);
|
|
140
|
+
}), s;
|
|
141
|
+
}
|
|
142
|
+
getThresholds() {
|
|
143
|
+
return this.thresholds;
|
|
144
|
+
}
|
|
145
|
+
updateThresholds(e) {
|
|
146
|
+
this.thresholds = { ...this.thresholds, ...e };
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
const l = new v();
|
|
150
|
+
function f() {
|
|
151
|
+
const [a, e] = m(null), [r, s] = m(!0);
|
|
152
|
+
h(() => {
|
|
153
|
+
if (s(typeof window < "u" && "performance" in window), !r) return;
|
|
154
|
+
l.startMonitoring();
|
|
155
|
+
const i = l.subscribe(e);
|
|
156
|
+
return () => {
|
|
157
|
+
i(), l.stopMonitoring();
|
|
158
|
+
};
|
|
159
|
+
}, [r]);
|
|
160
|
+
const o = b((i, c) => l.measureComponentRender(i, c), []);
|
|
161
|
+
return {
|
|
162
|
+
metrics: a,
|
|
163
|
+
isSupported: r,
|
|
164
|
+
measureRender: o,
|
|
165
|
+
averageMetrics: l.getAverageMetrics(),
|
|
166
|
+
allMetrics: l.getAllMetrics(),
|
|
167
|
+
thresholds: l.getThresholds()
|
|
168
|
+
};
|
|
169
|
+
}
|
|
170
|
+
function w(a, e) {
|
|
171
|
+
const r = e || a.displayName || a.name || "Component";
|
|
172
|
+
function s(o) {
|
|
173
|
+
const i = M(0), { measureRender: c } = f(), n = m(() => Math.random())[0];
|
|
174
|
+
return h(() => {
|
|
175
|
+
i.current += 1;
|
|
176
|
+
}), c(`${r}-${n}`, () => /* @__PURE__ */ t.jsx(a, { ...o }));
|
|
177
|
+
}
|
|
178
|
+
return s.displayName = `withPerformanceMonitoring(${r})`, s;
|
|
179
|
+
}
|
|
180
|
+
class P {
|
|
181
|
+
constructor() {
|
|
182
|
+
d(this, "baselineMetrics", null);
|
|
183
|
+
d(this, "regressionThreshold", 0.2);
|
|
184
|
+
}
|
|
185
|
+
// 20% degradation threshold
|
|
186
|
+
setBaseline(e) {
|
|
187
|
+
this.baselineMetrics = e;
|
|
188
|
+
}
|
|
189
|
+
detectRegression(e) {
|
|
190
|
+
if (!this.baselineMetrics) return [];
|
|
191
|
+
const r = [];
|
|
192
|
+
return [
|
|
193
|
+
"componentRenderTime",
|
|
194
|
+
"bundleLoadTime",
|
|
195
|
+
"mediaLoadTime",
|
|
196
|
+
"memoryUsage"
|
|
197
|
+
].forEach((o) => {
|
|
198
|
+
const i = this.baselineMetrics[o], c = e[o];
|
|
199
|
+
if (i && c && i > 0) {
|
|
200
|
+
const n = (c - i) / i;
|
|
201
|
+
n > this.regressionThreshold && r.push({ metric: o, baseline: i, current: c, degradation: n });
|
|
202
|
+
}
|
|
203
|
+
}), r;
|
|
204
|
+
}
|
|
205
|
+
setRegressionThreshold(e) {
|
|
206
|
+
this.regressionThreshold = Math.max(0, Math.min(1, e));
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
function S({
|
|
210
|
+
className: a = "",
|
|
211
|
+
showAdvanced: e = !1
|
|
212
|
+
}) {
|
|
213
|
+
const { metrics: r, averageMetrics: s, isSupported: o } = f();
|
|
214
|
+
if (!o || !r)
|
|
215
|
+
return /* @__PURE__ */ t.jsx("div", { className: `performance-dashboard ${a}`, children: /* @__PURE__ */ t.jsx("p", { children: "Performance monitoring not supported in this environment" }) });
|
|
216
|
+
const i = (n) => n >= 90 ? "text-green-600" : n >= 70 ? "text-yellow-600" : "text-red-600", c = (n) => `${(n / 1024 / 1024).toFixed(2)} MB`;
|
|
217
|
+
return /* @__PURE__ */ t.jsxs("div", { className: `performance-dashboard rounded-lg bg-white p-4 shadow ${a}`, children: [
|
|
218
|
+
/* @__PURE__ */ t.jsx("h3", { className: "mb-4 font-semibold text-lg", children: "Performance Dashboard" }),
|
|
219
|
+
/* @__PURE__ */ t.jsxs("div", { className: "mb-4", children: [
|
|
220
|
+
/* @__PURE__ */ t.jsxs("div", { className: "flex items-center justify-between", children: [
|
|
221
|
+
/* @__PURE__ */ t.jsx("span", { children: "Performance Score" }),
|
|
222
|
+
/* @__PURE__ */ t.jsx("span", { className: `font-bold ${i(r.performanceScore)}`, children: r.performanceScore.toFixed(0) })
|
|
223
|
+
] }),
|
|
224
|
+
/* @__PURE__ */ t.jsx("div", { className: "mt-1 h-2 w-full rounded-full bg-gray-200", children: /* @__PURE__ */ t.jsx(
|
|
225
|
+
"div",
|
|
226
|
+
{
|
|
227
|
+
className: `h-2 rounded-full transition-all duration-300 ${r.performanceScore >= 90 ? "bg-green-500" : r.performanceScore >= 70 ? "bg-yellow-500" : "bg-red-500"}`,
|
|
228
|
+
style: { width: `${r.performanceScore}%` }
|
|
229
|
+
}
|
|
230
|
+
) })
|
|
231
|
+
] }),
|
|
232
|
+
/* @__PURE__ */ t.jsxs("div", { className: "mb-4 grid grid-cols-2 gap-4", children: [
|
|
233
|
+
/* @__PURE__ */ t.jsxs("div", { children: [
|
|
234
|
+
/* @__PURE__ */ t.jsx("h4", { className: "mb-2 font-medium", children: "Core Web Vitals" }),
|
|
235
|
+
/* @__PURE__ */ t.jsxs("div", { className: "space-y-1 text-sm", children: [
|
|
236
|
+
r.lcp && /* @__PURE__ */ t.jsxs("div", { children: [
|
|
237
|
+
"LCP: ",
|
|
238
|
+
r.lcp.toFixed(0),
|
|
239
|
+
"ms"
|
|
240
|
+
] }),
|
|
241
|
+
r.fid && /* @__PURE__ */ t.jsxs("div", { children: [
|
|
242
|
+
"FID: ",
|
|
243
|
+
r.fid.toFixed(0),
|
|
244
|
+
"ms"
|
|
245
|
+
] }),
|
|
246
|
+
r.cls && /* @__PURE__ */ t.jsxs("div", { children: [
|
|
247
|
+
"CLS: ",
|
|
248
|
+
r.cls.toFixed(3)
|
|
249
|
+
] })
|
|
250
|
+
] })
|
|
251
|
+
] }),
|
|
252
|
+
/* @__PURE__ */ t.jsxs("div", { children: [
|
|
253
|
+
/* @__PURE__ */ t.jsx("h4", { className: "mb-2 font-medium", children: "Custom Metrics" }),
|
|
254
|
+
/* @__PURE__ */ t.jsxs("div", { className: "space-y-1 text-sm", children: [
|
|
255
|
+
/* @__PURE__ */ t.jsxs("div", { children: [
|
|
256
|
+
"Render: ",
|
|
257
|
+
r.componentRenderTime.toFixed(2),
|
|
258
|
+
"ms"
|
|
259
|
+
] }),
|
|
260
|
+
/* @__PURE__ */ t.jsxs("div", { children: [
|
|
261
|
+
"Memory: ",
|
|
262
|
+
c(r.memoryUsage)
|
|
263
|
+
] }),
|
|
264
|
+
r.bundleLoadTime > 0 && /* @__PURE__ */ t.jsxs("div", { children: [
|
|
265
|
+
"Bundle: ",
|
|
266
|
+
r.bundleLoadTime.toFixed(0),
|
|
267
|
+
"ms"
|
|
268
|
+
] })
|
|
269
|
+
] })
|
|
270
|
+
] })
|
|
271
|
+
] }),
|
|
272
|
+
e && /* @__PURE__ */ t.jsxs("div", { children: [
|
|
273
|
+
/* @__PURE__ */ t.jsx("h4", { className: "mb-2 font-medium", children: "Advanced Metrics" }),
|
|
274
|
+
/* @__PURE__ */ t.jsxs("div", { className: "space-y-1 text-sm", children: [
|
|
275
|
+
/* @__PURE__ */ t.jsxs("div", { children: [
|
|
276
|
+
"Average Render Time: ",
|
|
277
|
+
(s.componentRenderTime || 0).toFixed(2),
|
|
278
|
+
"ms"
|
|
279
|
+
] }),
|
|
280
|
+
/* @__PURE__ */ t.jsxs("div", { children: [
|
|
281
|
+
"Average Memory: ",
|
|
282
|
+
c(s.memoryUsage || 0)
|
|
283
|
+
] }),
|
|
284
|
+
/* @__PURE__ */ t.jsxs("div", { children: [
|
|
285
|
+
"Average Score: ",
|
|
286
|
+
(s.performanceScore || 0).toFixed(0)
|
|
287
|
+
] })
|
|
288
|
+
] })
|
|
289
|
+
] })
|
|
290
|
+
] });
|
|
291
|
+
}
|
|
292
|
+
export {
|
|
293
|
+
v as P,
|
|
294
|
+
P as a,
|
|
295
|
+
S as b,
|
|
296
|
+
x as d,
|
|
297
|
+
l as p,
|
|
298
|
+
f as u,
|
|
299
|
+
w
|
|
300
|
+
};
|
|
301
|
+
//# sourceMappingURL=performance-monitor-C5k6FDXw.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"performance-monitor-C5k6FDXw.js","sources":["../src/core/performance/performance-monitor.tsx"],"sourcesContent":["import React, { useState, useEffect, useRef, useCallback, useReducer } from \"react\"\n// Import type safely with fallback\ntype ReportHandler = (metric: { name: string; value: number }) => void\n\n// Performance metrics types\nexport interface PerformanceMetrics {\n\t// Core Web Vitals\n\tlcp?: number // Largest Contentful Paint\n\tfid?: number // First Input Delay\n\tcls?: number // Cumulative Layout Shift\n\tfcp?: number // First Contentful Paint\n\tttfb?: number // Time to First Byte\n\tinp?: number // Interaction to Next Paint\n\n\t// Custom metrics\n\tcomponentRenderTime: number\n\tbundleLoadTime: number\n\tmediaLoadTime: number\n\tmemoryUsage: number\n\n\t// Performance scores\n\tperformanceScore: number\n\ttimestamp: number\n}\n\nexport interface PerformanceThresholds {\n\tlcp: { good: number; poor: number }\n\tfid: { good: number; poor: number }\n\tcls: { good: number; poor: number }\n\trenderTime: { good: number; poor: number }\n\tmemoryUsage: { good: number; poor: number }\n}\n\nexport const defaultThresholds: PerformanceThresholds = {\n\tlcp: { good: 2500, poor: 4000 },\n\tfid: { good: 100, poor: 300 },\n\tcls: { good: 0.1, poor: 0.25 },\n\trenderTime: { good: 16, poor: 100 }, // Target 60fps = 16.67ms per frame\n\tmemoryUsage: { good: 50 * 1024 * 1024, poor: 100 * 1024 * 1024 } // 50MB good, 100MB poor\n}\n\n// Performance monitoring class\nexport class PerformanceMonitor {\n\tprivate metrics: PerformanceMetrics[] = []\n\tprivate listeners: Set<(metrics: PerformanceMetrics) => void> = new Set()\n\tprivate thresholds: PerformanceThresholds\n\tprivate observer?: PerformanceObserver\n\tprivate isMonitoring = false\n\n\tconstructor(thresholds: PerformanceThresholds = defaultThresholds) {\n\t\tthis.thresholds = thresholds\n\t\tthis.initializeWebVitals()\n\t\tthis.initializePerformanceObserver()\n\t}\n\n\tprivate async initializeWebVitals() {\n\t\tif (typeof window === \"undefined\") return\n\n\t\ttry {\n\t\t\t// Try to import web-vitals dynamically and handle different versions\n\t\t\tconst webVitals = await import(\"web-vitals\").catch(() => null)\n\n\t\t\tif (!webVitals) {\n\t\t\t\tconsole.warn(\"web-vitals package not available, Core Web Vitals tracking disabled\")\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tconst reportHandler: ReportHandler = (metric) => {\n\t\t\t\tthis.updateMetric(metric.name.toLowerCase() as keyof PerformanceMetrics, metric.value)\n\t\t\t}\n\n\t\t\t// Handle different web-vitals versions safely\n\t\t\tconst vitalsAny = webVitals as any\n\t\t\tif (vitalsAny.getCLS) vitalsAny.getCLS(reportHandler)\n\t\t\tif (vitalsAny.getFID) vitalsAny.getFID(reportHandler)\n\t\t\tif (vitalsAny.getFCP) vitalsAny.getFCP(reportHandler)\n\t\t\tif (vitalsAny.getLCP) vitalsAny.getLCP(reportHandler)\n\t\t\tif (vitalsAny.getTTFB) vitalsAny.getTTFB(reportHandler)\n\t\t\tif (vitalsAny.onINP) vitalsAny.onINP(reportHandler)\n\t\t} catch (error) {\n\t\t\tconsole.warn(\"Web Vitals initialization failed:\", error)\n\t\t}\n\t}\n\n\tprivate initializePerformanceObserver() {\n\t\tif (typeof window === \"undefined\" || !(\"PerformanceObserver\" in window)) return\n\n\t\ttry {\n\t\t\tthis.observer = new PerformanceObserver((list) => {\n\t\t\t\tfor (const entry of list.getEntries()) {\n\t\t\t\t\tthis.handlePerformanceEntry(entry)\n\t\t\t\t}\n\t\t\t})\n\n\t\t\tthis.observer.observe({ entryTypes: [\"measure\", \"navigation\", \"resource\", \"paint\"] })\n\t\t} catch (error) {\n\t\t\tconsole.warn(\"PerformanceObserver not supported:\", error)\n\t\t}\n\t}\n\n\tprivate handlePerformanceEntry(entry: PerformanceEntry) {\n\t\tswitch (entry.entryType) {\n\t\t\tcase \"measure\":\n\t\t\t\tif (entry.name.startsWith(\"baroiplayer-render\")) {\n\t\t\t\t\tthis.updateMetric(\"componentRenderTime\", entry.duration)\n\t\t\t\t}\n\t\t\t\tbreak\n\n\t\t\tcase \"resource\":\n\t\t\t\tif (entry.name.includes(\".js\") || entry.name.includes(\".css\")) {\n\t\t\t\t\tthis.updateMetric(\"bundleLoadTime\", entry.duration)\n\t\t\t\t}\n\t\t\t\tbreak\n\n\t\t\tcase \"paint\":\n\t\t\t\tif (entry.name === \"first-contentful-paint\") {\n\t\t\t\t\tthis.updateMetric(\"fcp\", entry.startTime)\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t}\n\t}\n\n\tprivate updateMetric(key: keyof PerformanceMetrics, value: number) {\n\t\tconst currentMetrics = this.getCurrentMetrics()\n\t\tconst updatedMetrics = {\n\t\t\t...currentMetrics,\n\t\t\t[key]: value,\n\t\t\ttimestamp: Date.now(),\n\t\t\tperformanceScore: this.calculatePerformanceScore({ ...currentMetrics, [key]: value })\n\t\t}\n\n\t\tthis.metrics.push(updatedMetrics)\n\n\t\t// Keep only last 100 metrics\n\t\tif (this.metrics.length > 100) {\n\t\t\tthis.metrics = this.metrics.slice(-100)\n\t\t}\n\n\t\tthis.listeners.forEach((listener) => listener(updatedMetrics))\n\t}\n\n\tprivate getCurrentMetrics(): PerformanceMetrics {\n\t\tconst latest = this.metrics[this.metrics.length - 1]\n\t\treturn (\n\t\t\tlatest || {\n\t\t\t\tcomponentRenderTime: 0,\n\t\t\t\tbundleLoadTime: 0,\n\t\t\t\tmediaLoadTime: 0,\n\t\t\t\tmemoryUsage: this.getMemoryUsage(),\n\t\t\t\tperformanceScore: 0,\n\t\t\t\ttimestamp: Date.now()\n\t\t\t}\n\t\t)\n\t}\n\n\tprivate getMemoryUsage(): number {\n\t\tif (\"memory\" in performance) {\n\t\t\treturn (performance as any).memory.usedJSHeapSize || 0\n\t\t}\n\t\treturn 0\n\t}\n\n\tprivate calculatePerformanceScore(metrics: PerformanceMetrics): number {\n\t\tlet score = 100\n\n\t\t// Penalize based on thresholds\n\t\tif (metrics.lcp && metrics.lcp > this.thresholds.lcp.good) {\n\t\t\tscore -= metrics.lcp > this.thresholds.lcp.poor ? 30 : 15\n\t\t}\n\n\t\tif (metrics.fid && metrics.fid > this.thresholds.fid.good) {\n\t\t\tscore -= metrics.fid > this.thresholds.fid.poor ? 25 : 10\n\t\t}\n\n\t\tif (metrics.cls && metrics.cls > this.thresholds.cls.good) {\n\t\t\tscore -= metrics.cls > this.thresholds.cls.poor ? 20 : 10\n\t\t}\n\n\t\tif (metrics.componentRenderTime > this.thresholds.renderTime.good) {\n\t\t\tscore -= metrics.componentRenderTime > this.thresholds.renderTime.poor ? 20 : 10\n\t\t}\n\n\t\tif (metrics.memoryUsage > this.thresholds.memoryUsage.good) {\n\t\t\tscore -= metrics.memoryUsage > this.thresholds.memoryUsage.poor ? 15 : 5\n\t\t}\n\n\t\treturn Math.max(0, score)\n\t}\n\n\t// Public API\n\tpublic startMonitoring() {\n\t\tthis.isMonitoring = true\n\t\tthis.startMemoryMonitoring()\n\t}\n\n\tpublic stopMonitoring() {\n\t\tthis.isMonitoring = false\n\t\tif (this.observer) {\n\t\t\tthis.observer.disconnect()\n\t\t}\n\t}\n\n\tprivate startMemoryMonitoring() {\n\t\tif (!this.isMonitoring) return\n\n\t\tthis.updateMetric(\"memoryUsage\", this.getMemoryUsage())\n\t\tsetTimeout(() => this.startMemoryMonitoring(), 5000) // Check every 5 seconds\n\t}\n\n\tpublic measureComponentRender(componentName: string, renderFn: () => any): any {\n\t\tconst startMark = `baroiplayer-render-${componentName}-start`\n\t\tconst endMark = `baroiplayer-render-${componentName}-end`\n\t\tconst measureName = `baroiplayer-render-${componentName}`\n\n\t\tperformance.mark(startMark)\n\t\tconst result = renderFn()\n\t\tperformance.mark(endMark)\n\n\t\ttry {\n\t\t\tperformance.measure(measureName, startMark, endMark)\n\t\t} catch (error) {\n\t\t\tconsole.warn(\"Performance measurement failed:\", error)\n\t\t}\n\n\t\treturn result\n\t}\n\n\tpublic subscribe(listener: (metrics: PerformanceMetrics) => void): () => void {\n\t\tthis.listeners.add(listener)\n\t\treturn () => this.listeners.delete(listener)\n\t}\n\n\tpublic getLatestMetrics(): PerformanceMetrics | null {\n\t\treturn this.metrics[this.metrics.length - 1] || null\n\t}\n\n\tpublic getAllMetrics(): PerformanceMetrics[] {\n\t\treturn [...this.metrics]\n\t}\n\n\tpublic getAverageMetrics(count = 10): Partial<PerformanceMetrics> {\n\t\tconst recentMetrics = this.metrics.slice(-count)\n\t\tif (recentMetrics.length === 0) return {}\n\n\t\tconst averages: Partial<PerformanceMetrics> = {}\n\t\tconst keys: Array<keyof PerformanceMetrics> = [\n\t\t\t\"lcp\",\n\t\t\t\"fid\",\n\t\t\t\"cls\",\n\t\t\t\"fcp\",\n\t\t\t\"ttfb\",\n\t\t\t\"inp\",\n\t\t\t\"componentRenderTime\",\n\t\t\t\"bundleLoadTime\",\n\t\t\t\"mediaLoadTime\",\n\t\t\t\"memoryUsage\",\n\t\t\t\"performanceScore\"\n\t\t]\n\n\t\tkeys.forEach((key) => {\n\t\t\tconst values = recentMetrics\n\t\t\t\t.map((m) => m[key] as number)\n\t\t\t\t.filter((v) => typeof v === \"number\" && !isNaN(v))\n\n\t\t\tif (values.length > 0) {\n\t\t\t\t;(averages as any)[key] = values.reduce((sum, v) => sum + v, 0) / values.length\n\t\t\t}\n\t\t})\n\n\t\treturn averages\n\t}\n\n\tpublic getThresholds(): PerformanceThresholds {\n\t\treturn this.thresholds\n\t}\n\n\tpublic updateThresholds(newThresholds: Partial<PerformanceThresholds>) {\n\t\tthis.thresholds = { ...this.thresholds, ...newThresholds }\n\t}\n}\n\n// Global performance monitor instance\nexport const performanceMonitor = new PerformanceMonitor()\n\n// React hook for performance monitoring\nexport function usePerformanceMonitor() {\n\tconst [metrics, setMetrics] = useState<PerformanceMetrics | null>(null)\n\tconst [isSupported, setIsSupported] = useState(true)\n\n\tuseEffect(() => {\n\t\tsetIsSupported(typeof window !== \"undefined\" && \"performance\" in window)\n\n\t\tif (!isSupported) return\n\n\t\tperformanceMonitor.startMonitoring()\n\t\tconst unsubscribe = performanceMonitor.subscribe(setMetrics)\n\n\t\treturn () => {\n\t\t\tunsubscribe()\n\t\t\tperformanceMonitor.stopMonitoring()\n\t\t}\n\t}, [isSupported])\n\n\tconst measureRender = useCallback((componentName: string, renderFn: () => any): any => {\n\t\treturn performanceMonitor.measureComponentRender(componentName, renderFn)\n\t}, [])\n\n\treturn {\n\t\tmetrics,\n\t\tisSupported,\n\t\tmeasureRender,\n\t\taverageMetrics: performanceMonitor.getAverageMetrics(),\n\t\tallMetrics: performanceMonitor.getAllMetrics(),\n\t\tthresholds: performanceMonitor.getThresholds()\n\t}\n}\n\n// HOC for performance monitoring\nexport function withPerformanceMonitoring(\n\tWrappedComponent: React.ComponentType<any>,\n\tcomponentName?: string\n) {\n\tconst displayName =\n\t\tcomponentName || WrappedComponent.displayName || WrappedComponent.name || \"Component\"\n\n\tfunction PerformanceMonitoredComponent(props: any) {\n\t\tconst renderRef = useRef(0)\n\t\tconst { measureRender } = usePerformanceMonitor()\n\n\t\t// Use a simple counter that increments during render but doesn't access the ref value\n\t\tconst renderKey = useState(() => Math.random())[0]\n\n\t\t// Update ref in effect to track count without accessing during render\n\t\tuseEffect(() => {\n\t\t\trenderRef.current += 1\n\t\t})\n\n\t\treturn measureRender(`${displayName}-${renderKey}`, () => <WrappedComponent {...props} />)\n\t}\n\n\tPerformanceMonitoredComponent.displayName = `withPerformanceMonitoring(${displayName})`\n\treturn PerformanceMonitoredComponent\n}\n\n// Performance regression detector\nexport class PerformanceRegressionDetector {\n\tprivate baselineMetrics: PerformanceMetrics | null = null\n\tprivate regressionThreshold = 0.2 // 20% degradation threshold\n\n\tsetBaseline(metrics: PerformanceMetrics) {\n\t\tthis.baselineMetrics = metrics\n\t}\n\n\tdetectRegression(currentMetrics: PerformanceMetrics): Array<{\n\t\tmetric: keyof PerformanceMetrics\n\t\tbaseline: number\n\t\tcurrent: number\n\t\tdegradation: number\n\t}> {\n\t\tif (!this.baselineMetrics) return []\n\n\t\tconst regressions: Array<{\n\t\t\tmetric: keyof PerformanceMetrics\n\t\t\tbaseline: number\n\t\t\tcurrent: number\n\t\t\tdegradation: number\n\t\t}> = []\n\n\t\tconst metricsToCheck: Array<keyof PerformanceMetrics> = [\n\t\t\t\"componentRenderTime\",\n\t\t\t\"bundleLoadTime\",\n\t\t\t\"mediaLoadTime\",\n\t\t\t\"memoryUsage\"\n\t\t]\n\n\t\tmetricsToCheck.forEach((metric) => {\n\t\t\tconst baseline = this.baselineMetrics![metric] as number\n\t\t\tconst current = currentMetrics[metric] as number\n\n\t\t\tif (baseline && current && baseline > 0) {\n\t\t\t\tconst degradation = (current - baseline) / baseline\n\t\t\t\tif (degradation > this.regressionThreshold) {\n\t\t\t\t\tregressions.push({ metric, baseline, current, degradation })\n\t\t\t\t}\n\t\t\t}\n\t\t})\n\n\t\treturn regressions\n\t}\n\n\tsetRegressionThreshold(threshold: number) {\n\t\tthis.regressionThreshold = Math.max(0, Math.min(1, threshold))\n\t}\n}\n\n// Development dashboard component\nexport interface PerformanceDashboardProps {\n\tclassName?: string\n\tshowAdvanced?: boolean\n}\n\nexport function PerformanceDashboard({\n\tclassName = \"\",\n\tshowAdvanced = false\n}: PerformanceDashboardProps) {\n\tconst { metrics, averageMetrics, thresholds, isSupported } = usePerformanceMonitor()\n\n\tif (!isSupported || !metrics) {\n\t\treturn (\n\t\t\t<div className={`performance-dashboard ${className}`}>\n\t\t\t\t<p>Performance monitoring not supported in this environment</p>\n\t\t\t</div>\n\t\t)\n\t}\n\n\tconst getScoreColor = (score: number) => {\n\t\tif (score >= 90) return \"text-green-600\"\n\t\tif (score >= 70) return \"text-yellow-600\"\n\t\treturn \"text-red-600\"\n\t}\n\n\tconst formatBytes = (bytes: number) => {\n\t\treturn `${(bytes / 1024 / 1024).toFixed(2)} MB`\n\t}\n\n\treturn (\n\t\t<div className={`performance-dashboard rounded-lg bg-white p-4 shadow ${className}`}>\n\t\t\t<h3 className=\"mb-4 font-semibold text-lg\">Performance Dashboard</h3>\n\n\t\t\t{/* Performance Score */}\n\t\t\t<div className=\"mb-4\">\n\t\t\t\t<div className=\"flex items-center justify-between\">\n\t\t\t\t\t<span>Performance Score</span>\n\t\t\t\t\t<span className={`font-bold ${getScoreColor(metrics.performanceScore)}`}>\n\t\t\t\t\t\t{metrics.performanceScore.toFixed(0)}\n\t\t\t\t\t</span>\n\t\t\t\t</div>\n\t\t\t\t<div className=\"mt-1 h-2 w-full rounded-full bg-gray-200\">\n\t\t\t\t\t<div\n\t\t\t\t\t\tclassName={`h-2 rounded-full transition-all duration-300 ${\n\t\t\t\t\t\t\tmetrics.performanceScore >= 90\n\t\t\t\t\t\t\t\t? \"bg-green-500\"\n\t\t\t\t\t\t\t\t: metrics.performanceScore >= 70\n\t\t\t\t\t\t\t\t\t? \"bg-yellow-500\"\n\t\t\t\t\t\t\t\t\t: \"bg-red-500\"\n\t\t\t\t\t\t}`}\n\t\t\t\t\t\tstyle={{ width: `${metrics.performanceScore}%` }}\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t{/* Core Web Vitals */}\n\t\t\t<div className=\"mb-4 grid grid-cols-2 gap-4\">\n\t\t\t\t<div>\n\t\t\t\t\t<h4 className=\"mb-2 font-medium\">Core Web Vitals</h4>\n\t\t\t\t\t<div className=\"space-y-1 text-sm\">\n\t\t\t\t\t\t{metrics.lcp && <div>LCP: {metrics.lcp.toFixed(0)}ms</div>}\n\t\t\t\t\t\t{metrics.fid && <div>FID: {metrics.fid.toFixed(0)}ms</div>}\n\t\t\t\t\t\t{metrics.cls && <div>CLS: {metrics.cls.toFixed(3)}</div>}\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t<div>\n\t\t\t\t\t<h4 className=\"mb-2 font-medium\">Custom Metrics</h4>\n\t\t\t\t\t<div className=\"space-y-1 text-sm\">\n\t\t\t\t\t\t<div>Render: {metrics.componentRenderTime.toFixed(2)}ms</div>\n\t\t\t\t\t\t<div>Memory: {formatBytes(metrics.memoryUsage)}</div>\n\t\t\t\t\t\t{metrics.bundleLoadTime > 0 && <div>Bundle: {metrics.bundleLoadTime.toFixed(0)}ms</div>}\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t{/* Advanced metrics */}\n\t\t\t{showAdvanced && (\n\t\t\t\t<div>\n\t\t\t\t\t<h4 className=\"mb-2 font-medium\">Advanced Metrics</h4>\n\t\t\t\t\t<div className=\"space-y-1 text-sm\">\n\t\t\t\t\t\t<div>Average Render Time: {(averageMetrics.componentRenderTime || 0).toFixed(2)}ms</div>\n\t\t\t\t\t\t<div>Average Memory: {formatBytes(averageMetrics.memoryUsage || 0)}</div>\n\t\t\t\t\t\t<div>Average Score: {(averageMetrics.performanceScore || 0).toFixed(0)}</div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</div>\n\t)\n}\n\nexport default PerformanceMonitor\n"],"names":["defaultThresholds","PerformanceMonitor","thresholds","__publicField","webVitals","reportHandler","metric","vitalsAny","error","list","entry","key","value","currentMetrics","updatedMetrics","listener","metrics","score","componentName","renderFn","startMark","endMark","measureName","result","count","recentMetrics","averages","values","m","v","sum","newThresholds","performanceMonitor","usePerformanceMonitor","setMetrics","useState","isSupported","setIsSupported","useEffect","unsubscribe","measureRender","useCallback","withPerformanceMonitoring","WrappedComponent","displayName","PerformanceMonitoredComponent","props","renderRef","useRef","renderKey","jsx","PerformanceRegressionDetector","regressions","baseline","current","degradation","threshold","PerformanceDashboard","className","showAdvanced","averageMetrics","getScoreColor","formatBytes","bytes","jsxs"],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";var g=Object.create;var h=Object.defineProperty;var b=Object.getOwnPropertyDescriptor;var j=Object.getOwnPropertyNames;var M=Object.getPrototypeOf,R=Object.prototype.hasOwnProperty;var v=(i,e,r)=>e in i?h(i,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):i[e]=r;var y=(i,e,r,s)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of j(e))!R.call(i,o)&&o!==r&&h(i,o,{get:()=>e[o],enumerable:!(s=b(e,o))||s.enumerable});return i};var T=(i,e,r)=>(r=i!=null?g(M(i)):{},y(e||!i||!i.__esModule?h(r,"default",{value:i,enumerable:!0}):r,i));var d=(i,e,r)=>v(i,typeof e!="symbol"?e+"":e,r);const t=require("./context-eNS62_ac.cjs"),l=require("react"),f={lcp:{good:2500,poor:4e3},fid:{good:100,poor:300},cls:{good:.1,poor:.25},renderTime:{good:16,poor:100},memoryUsage:{good:50*1024*1024,poor:100*1024*1024}};class p{constructor(e=f){d(this,"metrics",[]);d(this,"listeners",new Set);d(this,"thresholds");d(this,"observer");d(this,"isMonitoring",!1);this.thresholds=e,this.initializeWebVitals(),this.initializePerformanceObserver()}async initializeWebVitals(){if(!(typeof window>"u"))try{const e=await import("web-vitals").catch(()=>null);if(!e){console.warn("web-vitals package not available, Core Web Vitals tracking disabled");return}const r=o=>{this.updateMetric(o.name.toLowerCase(),o.value)},s=e;s.getCLS&&s.getCLS(r),s.getFID&&s.getFID(r),s.getFCP&&s.getFCP(r),s.getLCP&&s.getLCP(r),s.getTTFB&&s.getTTFB(r),s.onINP&&s.onINP(r)}catch(e){console.warn("Web Vitals initialization failed:",e)}}initializePerformanceObserver(){if(!(typeof window>"u"||!("PerformanceObserver"in window)))try{this.observer=new PerformanceObserver(e=>{for(const r of e.getEntries())this.handlePerformanceEntry(r)}),this.observer.observe({entryTypes:["measure","navigation","resource","paint"]})}catch(e){console.warn("PerformanceObserver not supported:",e)}}handlePerformanceEntry(e){switch(e.entryType){case"measure":e.name.startsWith("baroiplayer-render")&&this.updateMetric("componentRenderTime",e.duration);break;case"resource":(e.name.includes(".js")||e.name.includes(".css"))&&this.updateMetric("bundleLoadTime",e.duration);break;case"paint":e.name==="first-contentful-paint"&&this.updateMetric("fcp",e.startTime);break}}updateMetric(e,r){const s=this.getCurrentMetrics(),o={...s,[e]:r,timestamp:Date.now(),performanceScore:this.calculatePerformanceScore({...s,[e]:r})};this.metrics.push(o),this.metrics.length>100&&(this.metrics=this.metrics.slice(-100)),this.listeners.forEach(n=>n(o))}getCurrentMetrics(){return this.metrics[this.metrics.length-1]||{componentRenderTime:0,bundleLoadTime:0,mediaLoadTime:0,memoryUsage:this.getMemoryUsage(),performanceScore:0,timestamp:Date.now()}}getMemoryUsage(){return"memory"in performance&&performance.memory.usedJSHeapSize||0}calculatePerformanceScore(e){let r=100;return e.lcp&&e.lcp>this.thresholds.lcp.good&&(r-=e.lcp>this.thresholds.lcp.poor?30:15),e.fid&&e.fid>this.thresholds.fid.good&&(r-=e.fid>this.thresholds.fid.poor?25:10),e.cls&&e.cls>this.thresholds.cls.good&&(r-=e.cls>this.thresholds.cls.poor?20:10),e.componentRenderTime>this.thresholds.renderTime.good&&(r-=e.componentRenderTime>this.thresholds.renderTime.poor?20:10),e.memoryUsage>this.thresholds.memoryUsage.good&&(r-=e.memoryUsage>this.thresholds.memoryUsage.poor?15:5),Math.max(0,r)}startMonitoring(){this.isMonitoring=!0,this.startMemoryMonitoring()}stopMonitoring(){this.isMonitoring=!1,this.observer&&this.observer.disconnect()}startMemoryMonitoring(){this.isMonitoring&&(this.updateMetric("memoryUsage",this.getMemoryUsage()),setTimeout(()=>this.startMemoryMonitoring(),5e3))}measureComponentRender(e,r){const s=`baroiplayer-render-${e}-start`,o=`baroiplayer-render-${e}-end`,n=`baroiplayer-render-${e}`;performance.mark(s);const c=r();performance.mark(o);try{performance.measure(n,s,o)}catch(a){console.warn("Performance measurement failed:",a)}return c}subscribe(e){return this.listeners.add(e),()=>this.listeners.delete(e)}getLatestMetrics(){return this.metrics[this.metrics.length-1]||null}getAllMetrics(){return[...this.metrics]}getAverageMetrics(e=10){const r=this.metrics.slice(-e);if(r.length===0)return{};const s={};return["lcp","fid","cls","fcp","ttfb","inp","componentRenderTime","bundleLoadTime","mediaLoadTime","memoryUsage","performanceScore"].forEach(n=>{const c=r.map(a=>a[n]).filter(a=>typeof a=="number"&&!isNaN(a));c.length>0&&(s[n]=c.reduce((a,x)=>a+x,0)/c.length)}),s}getThresholds(){return this.thresholds}updateThresholds(e){this.thresholds={...this.thresholds,...e}}}const m=new p;function u(){const[i,e]=l.useState(null),[r,s]=l.useState(!0);l.useEffect(()=>{if(s(typeof window<"u"&&"performance"in window),!r)return;m.startMonitoring();const n=m.subscribe(e);return()=>{n(),m.stopMonitoring()}},[r]);const o=l.useCallback((n,c)=>m.measureComponentRender(n,c),[]);return{metrics:i,isSupported:r,measureRender:o,averageMetrics:m.getAverageMetrics(),allMetrics:m.getAllMetrics(),thresholds:m.getThresholds()}}function E(i,e){const r=e||i.displayName||i.name||"Component";function s(o){const n=l.useRef(0),{measureRender:c}=u(),a=l.useState(()=>Math.random())[0];return l.useEffect(()=>{n.current+=1}),c(`${r}-${a}`,()=>t.jsxRuntimeExports.jsx(i,{...o}))}return s.displayName=`withPerformanceMonitoring(${r})`,s}class w{constructor(){d(this,"baselineMetrics",null);d(this,"regressionThreshold",.2)}setBaseline(e){this.baselineMetrics=e}detectRegression(e){if(!this.baselineMetrics)return[];const r=[];return["componentRenderTime","bundleLoadTime","mediaLoadTime","memoryUsage"].forEach(o=>{const n=this.baselineMetrics[o],c=e[o];if(n&&c&&n>0){const a=(c-n)/n;a>this.regressionThreshold&&r.push({metric:o,baseline:n,current:c,degradation:a})}}),r}setRegressionThreshold(e){this.regressionThreshold=Math.max(0,Math.min(1,e))}}function P({className:i="",showAdvanced:e=!1}){const{metrics:r,averageMetrics:s,isSupported:o}=u();if(!o||!r)return t.jsxRuntimeExports.jsx("div",{className:`performance-dashboard ${i}`,children:t.jsxRuntimeExports.jsx("p",{children:"Performance monitoring not supported in this environment"})});const n=a=>a>=90?"text-green-600":a>=70?"text-yellow-600":"text-red-600",c=a=>`${(a/1024/1024).toFixed(2)} MB`;return t.jsxRuntimeExports.jsxs("div",{className:`performance-dashboard rounded-lg bg-white p-4 shadow ${i}`,children:[t.jsxRuntimeExports.jsx("h3",{className:"mb-4 font-semibold text-lg",children:"Performance Dashboard"}),t.jsxRuntimeExports.jsxs("div",{className:"mb-4",children:[t.jsxRuntimeExports.jsxs("div",{className:"flex items-center justify-between",children:[t.jsxRuntimeExports.jsx("span",{children:"Performance Score"}),t.jsxRuntimeExports.jsx("span",{className:`font-bold ${n(r.performanceScore)}`,children:r.performanceScore.toFixed(0)})]}),t.jsxRuntimeExports.jsx("div",{className:"mt-1 h-2 w-full rounded-full bg-gray-200",children:t.jsxRuntimeExports.jsx("div",{className:`h-2 rounded-full transition-all duration-300 ${r.performanceScore>=90?"bg-green-500":r.performanceScore>=70?"bg-yellow-500":"bg-red-500"}`,style:{width:`${r.performanceScore}%`}})})]}),t.jsxRuntimeExports.jsxs("div",{className:"mb-4 grid grid-cols-2 gap-4",children:[t.jsxRuntimeExports.jsxs("div",{children:[t.jsxRuntimeExports.jsx("h4",{className:"mb-2 font-medium",children:"Core Web Vitals"}),t.jsxRuntimeExports.jsxs("div",{className:"space-y-1 text-sm",children:[r.lcp&&t.jsxRuntimeExports.jsxs("div",{children:["LCP: ",r.lcp.toFixed(0),"ms"]}),r.fid&&t.jsxRuntimeExports.jsxs("div",{children:["FID: ",r.fid.toFixed(0),"ms"]}),r.cls&&t.jsxRuntimeExports.jsxs("div",{children:["CLS: ",r.cls.toFixed(3)]})]})]}),t.jsxRuntimeExports.jsxs("div",{children:[t.jsxRuntimeExports.jsx("h4",{className:"mb-2 font-medium",children:"Custom Metrics"}),t.jsxRuntimeExports.jsxs("div",{className:"space-y-1 text-sm",children:[t.jsxRuntimeExports.jsxs("div",{children:["Render: ",r.componentRenderTime.toFixed(2),"ms"]}),t.jsxRuntimeExports.jsxs("div",{children:["Memory: ",c(r.memoryUsage)]}),r.bundleLoadTime>0&&t.jsxRuntimeExports.jsxs("div",{children:["Bundle: ",r.bundleLoadTime.toFixed(0),"ms"]})]})]})]}),e&&t.jsxRuntimeExports.jsxs("div",{children:[t.jsxRuntimeExports.jsx("h4",{className:"mb-2 font-medium",children:"Advanced Metrics"}),t.jsxRuntimeExports.jsxs("div",{className:"space-y-1 text-sm",children:[t.jsxRuntimeExports.jsxs("div",{children:["Average Render Time: ",(s.componentRenderTime||0).toFixed(2),"ms"]}),t.jsxRuntimeExports.jsxs("div",{children:["Average Memory: ",c(s.memoryUsage||0)]}),t.jsxRuntimeExports.jsxs("div",{children:["Average Score: ",(s.performanceScore||0).toFixed(0)]})]})]})]})}exports.PerformanceDashboard=P;exports.PerformanceMonitor=p;exports.PerformanceRegressionDetector=w;exports.defaultThresholds=f;exports.performanceMonitor=m;exports.usePerformanceMonitor=u;exports.withPerformanceMonitoring=E;
|
|
2
|
+
//# sourceMappingURL=performance-monitor-lJmuUjQQ.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"performance-monitor-lJmuUjQQ.cjs","sources":["../src/core/performance/performance-monitor.tsx"],"sourcesContent":["import React, { useState, useEffect, useRef, useCallback, useReducer } from \"react\"\n// Import type safely with fallback\ntype ReportHandler = (metric: { name: string; value: number }) => void\n\n// Performance metrics types\nexport interface PerformanceMetrics {\n\t// Core Web Vitals\n\tlcp?: number // Largest Contentful Paint\n\tfid?: number // First Input Delay\n\tcls?: number // Cumulative Layout Shift\n\tfcp?: number // First Contentful Paint\n\tttfb?: number // Time to First Byte\n\tinp?: number // Interaction to Next Paint\n\n\t// Custom metrics\n\tcomponentRenderTime: number\n\tbundleLoadTime: number\n\tmediaLoadTime: number\n\tmemoryUsage: number\n\n\t// Performance scores\n\tperformanceScore: number\n\ttimestamp: number\n}\n\nexport interface PerformanceThresholds {\n\tlcp: { good: number; poor: number }\n\tfid: { good: number; poor: number }\n\tcls: { good: number; poor: number }\n\trenderTime: { good: number; poor: number }\n\tmemoryUsage: { good: number; poor: number }\n}\n\nexport const defaultThresholds: PerformanceThresholds = {\n\tlcp: { good: 2500, poor: 4000 },\n\tfid: { good: 100, poor: 300 },\n\tcls: { good: 0.1, poor: 0.25 },\n\trenderTime: { good: 16, poor: 100 }, // Target 60fps = 16.67ms per frame\n\tmemoryUsage: { good: 50 * 1024 * 1024, poor: 100 * 1024 * 1024 } // 50MB good, 100MB poor\n}\n\n// Performance monitoring class\nexport class PerformanceMonitor {\n\tprivate metrics: PerformanceMetrics[] = []\n\tprivate listeners: Set<(metrics: PerformanceMetrics) => void> = new Set()\n\tprivate thresholds: PerformanceThresholds\n\tprivate observer?: PerformanceObserver\n\tprivate isMonitoring = false\n\n\tconstructor(thresholds: PerformanceThresholds = defaultThresholds) {\n\t\tthis.thresholds = thresholds\n\t\tthis.initializeWebVitals()\n\t\tthis.initializePerformanceObserver()\n\t}\n\n\tprivate async initializeWebVitals() {\n\t\tif (typeof window === \"undefined\") return\n\n\t\ttry {\n\t\t\t// Try to import web-vitals dynamically and handle different versions\n\t\t\tconst webVitals = await import(\"web-vitals\").catch(() => null)\n\n\t\t\tif (!webVitals) {\n\t\t\t\tconsole.warn(\"web-vitals package not available, Core Web Vitals tracking disabled\")\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tconst reportHandler: ReportHandler = (metric) => {\n\t\t\t\tthis.updateMetric(metric.name.toLowerCase() as keyof PerformanceMetrics, metric.value)\n\t\t\t}\n\n\t\t\t// Handle different web-vitals versions safely\n\t\t\tconst vitalsAny = webVitals as any\n\t\t\tif (vitalsAny.getCLS) vitalsAny.getCLS(reportHandler)\n\t\t\tif (vitalsAny.getFID) vitalsAny.getFID(reportHandler)\n\t\t\tif (vitalsAny.getFCP) vitalsAny.getFCP(reportHandler)\n\t\t\tif (vitalsAny.getLCP) vitalsAny.getLCP(reportHandler)\n\t\t\tif (vitalsAny.getTTFB) vitalsAny.getTTFB(reportHandler)\n\t\t\tif (vitalsAny.onINP) vitalsAny.onINP(reportHandler)\n\t\t} catch (error) {\n\t\t\tconsole.warn(\"Web Vitals initialization failed:\", error)\n\t\t}\n\t}\n\n\tprivate initializePerformanceObserver() {\n\t\tif (typeof window === \"undefined\" || !(\"PerformanceObserver\" in window)) return\n\n\t\ttry {\n\t\t\tthis.observer = new PerformanceObserver((list) => {\n\t\t\t\tfor (const entry of list.getEntries()) {\n\t\t\t\t\tthis.handlePerformanceEntry(entry)\n\t\t\t\t}\n\t\t\t})\n\n\t\t\tthis.observer.observe({ entryTypes: [\"measure\", \"navigation\", \"resource\", \"paint\"] })\n\t\t} catch (error) {\n\t\t\tconsole.warn(\"PerformanceObserver not supported:\", error)\n\t\t}\n\t}\n\n\tprivate handlePerformanceEntry(entry: PerformanceEntry) {\n\t\tswitch (entry.entryType) {\n\t\t\tcase \"measure\":\n\t\t\t\tif (entry.name.startsWith(\"baroiplayer-render\")) {\n\t\t\t\t\tthis.updateMetric(\"componentRenderTime\", entry.duration)\n\t\t\t\t}\n\t\t\t\tbreak\n\n\t\t\tcase \"resource\":\n\t\t\t\tif (entry.name.includes(\".js\") || entry.name.includes(\".css\")) {\n\t\t\t\t\tthis.updateMetric(\"bundleLoadTime\", entry.duration)\n\t\t\t\t}\n\t\t\t\tbreak\n\n\t\t\tcase \"paint\":\n\t\t\t\tif (entry.name === \"first-contentful-paint\") {\n\t\t\t\t\tthis.updateMetric(\"fcp\", entry.startTime)\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t}\n\t}\n\n\tprivate updateMetric(key: keyof PerformanceMetrics, value: number) {\n\t\tconst currentMetrics = this.getCurrentMetrics()\n\t\tconst updatedMetrics = {\n\t\t\t...currentMetrics,\n\t\t\t[key]: value,\n\t\t\ttimestamp: Date.now(),\n\t\t\tperformanceScore: this.calculatePerformanceScore({ ...currentMetrics, [key]: value })\n\t\t}\n\n\t\tthis.metrics.push(updatedMetrics)\n\n\t\t// Keep only last 100 metrics\n\t\tif (this.metrics.length > 100) {\n\t\t\tthis.metrics = this.metrics.slice(-100)\n\t\t}\n\n\t\tthis.listeners.forEach((listener) => listener(updatedMetrics))\n\t}\n\n\tprivate getCurrentMetrics(): PerformanceMetrics {\n\t\tconst latest = this.metrics[this.metrics.length - 1]\n\t\treturn (\n\t\t\tlatest || {\n\t\t\t\tcomponentRenderTime: 0,\n\t\t\t\tbundleLoadTime: 0,\n\t\t\t\tmediaLoadTime: 0,\n\t\t\t\tmemoryUsage: this.getMemoryUsage(),\n\t\t\t\tperformanceScore: 0,\n\t\t\t\ttimestamp: Date.now()\n\t\t\t}\n\t\t)\n\t}\n\n\tprivate getMemoryUsage(): number {\n\t\tif (\"memory\" in performance) {\n\t\t\treturn (performance as any).memory.usedJSHeapSize || 0\n\t\t}\n\t\treturn 0\n\t}\n\n\tprivate calculatePerformanceScore(metrics: PerformanceMetrics): number {\n\t\tlet score = 100\n\n\t\t// Penalize based on thresholds\n\t\tif (metrics.lcp && metrics.lcp > this.thresholds.lcp.good) {\n\t\t\tscore -= metrics.lcp > this.thresholds.lcp.poor ? 30 : 15\n\t\t}\n\n\t\tif (metrics.fid && metrics.fid > this.thresholds.fid.good) {\n\t\t\tscore -= metrics.fid > this.thresholds.fid.poor ? 25 : 10\n\t\t}\n\n\t\tif (metrics.cls && metrics.cls > this.thresholds.cls.good) {\n\t\t\tscore -= metrics.cls > this.thresholds.cls.poor ? 20 : 10\n\t\t}\n\n\t\tif (metrics.componentRenderTime > this.thresholds.renderTime.good) {\n\t\t\tscore -= metrics.componentRenderTime > this.thresholds.renderTime.poor ? 20 : 10\n\t\t}\n\n\t\tif (metrics.memoryUsage > this.thresholds.memoryUsage.good) {\n\t\t\tscore -= metrics.memoryUsage > this.thresholds.memoryUsage.poor ? 15 : 5\n\t\t}\n\n\t\treturn Math.max(0, score)\n\t}\n\n\t// Public API\n\tpublic startMonitoring() {\n\t\tthis.isMonitoring = true\n\t\tthis.startMemoryMonitoring()\n\t}\n\n\tpublic stopMonitoring() {\n\t\tthis.isMonitoring = false\n\t\tif (this.observer) {\n\t\t\tthis.observer.disconnect()\n\t\t}\n\t}\n\n\tprivate startMemoryMonitoring() {\n\t\tif (!this.isMonitoring) return\n\n\t\tthis.updateMetric(\"memoryUsage\", this.getMemoryUsage())\n\t\tsetTimeout(() => this.startMemoryMonitoring(), 5000) // Check every 5 seconds\n\t}\n\n\tpublic measureComponentRender(componentName: string, renderFn: () => any): any {\n\t\tconst startMark = `baroiplayer-render-${componentName}-start`\n\t\tconst endMark = `baroiplayer-render-${componentName}-end`\n\t\tconst measureName = `baroiplayer-render-${componentName}`\n\n\t\tperformance.mark(startMark)\n\t\tconst result = renderFn()\n\t\tperformance.mark(endMark)\n\n\t\ttry {\n\t\t\tperformance.measure(measureName, startMark, endMark)\n\t\t} catch (error) {\n\t\t\tconsole.warn(\"Performance measurement failed:\", error)\n\t\t}\n\n\t\treturn result\n\t}\n\n\tpublic subscribe(listener: (metrics: PerformanceMetrics) => void): () => void {\n\t\tthis.listeners.add(listener)\n\t\treturn () => this.listeners.delete(listener)\n\t}\n\n\tpublic getLatestMetrics(): PerformanceMetrics | null {\n\t\treturn this.metrics[this.metrics.length - 1] || null\n\t}\n\n\tpublic getAllMetrics(): PerformanceMetrics[] {\n\t\treturn [...this.metrics]\n\t}\n\n\tpublic getAverageMetrics(count = 10): Partial<PerformanceMetrics> {\n\t\tconst recentMetrics = this.metrics.slice(-count)\n\t\tif (recentMetrics.length === 0) return {}\n\n\t\tconst averages: Partial<PerformanceMetrics> = {}\n\t\tconst keys: Array<keyof PerformanceMetrics> = [\n\t\t\t\"lcp\",\n\t\t\t\"fid\",\n\t\t\t\"cls\",\n\t\t\t\"fcp\",\n\t\t\t\"ttfb\",\n\t\t\t\"inp\",\n\t\t\t\"componentRenderTime\",\n\t\t\t\"bundleLoadTime\",\n\t\t\t\"mediaLoadTime\",\n\t\t\t\"memoryUsage\",\n\t\t\t\"performanceScore\"\n\t\t]\n\n\t\tkeys.forEach((key) => {\n\t\t\tconst values = recentMetrics\n\t\t\t\t.map((m) => m[key] as number)\n\t\t\t\t.filter((v) => typeof v === \"number\" && !isNaN(v))\n\n\t\t\tif (values.length > 0) {\n\t\t\t\t;(averages as any)[key] = values.reduce((sum, v) => sum + v, 0) / values.length\n\t\t\t}\n\t\t})\n\n\t\treturn averages\n\t}\n\n\tpublic getThresholds(): PerformanceThresholds {\n\t\treturn this.thresholds\n\t}\n\n\tpublic updateThresholds(newThresholds: Partial<PerformanceThresholds>) {\n\t\tthis.thresholds = { ...this.thresholds, ...newThresholds }\n\t}\n}\n\n// Global performance monitor instance\nexport const performanceMonitor = new PerformanceMonitor()\n\n// React hook for performance monitoring\nexport function usePerformanceMonitor() {\n\tconst [metrics, setMetrics] = useState<PerformanceMetrics | null>(null)\n\tconst [isSupported, setIsSupported] = useState(true)\n\n\tuseEffect(() => {\n\t\tsetIsSupported(typeof window !== \"undefined\" && \"performance\" in window)\n\n\t\tif (!isSupported) return\n\n\t\tperformanceMonitor.startMonitoring()\n\t\tconst unsubscribe = performanceMonitor.subscribe(setMetrics)\n\n\t\treturn () => {\n\t\t\tunsubscribe()\n\t\t\tperformanceMonitor.stopMonitoring()\n\t\t}\n\t}, [isSupported])\n\n\tconst measureRender = useCallback((componentName: string, renderFn: () => any): any => {\n\t\treturn performanceMonitor.measureComponentRender(componentName, renderFn)\n\t}, [])\n\n\treturn {\n\t\tmetrics,\n\t\tisSupported,\n\t\tmeasureRender,\n\t\taverageMetrics: performanceMonitor.getAverageMetrics(),\n\t\tallMetrics: performanceMonitor.getAllMetrics(),\n\t\tthresholds: performanceMonitor.getThresholds()\n\t}\n}\n\n// HOC for performance monitoring\nexport function withPerformanceMonitoring(\n\tWrappedComponent: React.ComponentType<any>,\n\tcomponentName?: string\n) {\n\tconst displayName =\n\t\tcomponentName || WrappedComponent.displayName || WrappedComponent.name || \"Component\"\n\n\tfunction PerformanceMonitoredComponent(props: any) {\n\t\tconst renderRef = useRef(0)\n\t\tconst { measureRender } = usePerformanceMonitor()\n\n\t\t// Use a simple counter that increments during render but doesn't access the ref value\n\t\tconst renderKey = useState(() => Math.random())[0]\n\n\t\t// Update ref in effect to track count without accessing during render\n\t\tuseEffect(() => {\n\t\t\trenderRef.current += 1\n\t\t})\n\n\t\treturn measureRender(`${displayName}-${renderKey}`, () => <WrappedComponent {...props} />)\n\t}\n\n\tPerformanceMonitoredComponent.displayName = `withPerformanceMonitoring(${displayName})`\n\treturn PerformanceMonitoredComponent\n}\n\n// Performance regression detector\nexport class PerformanceRegressionDetector {\n\tprivate baselineMetrics: PerformanceMetrics | null = null\n\tprivate regressionThreshold = 0.2 // 20% degradation threshold\n\n\tsetBaseline(metrics: PerformanceMetrics) {\n\t\tthis.baselineMetrics = metrics\n\t}\n\n\tdetectRegression(currentMetrics: PerformanceMetrics): Array<{\n\t\tmetric: keyof PerformanceMetrics\n\t\tbaseline: number\n\t\tcurrent: number\n\t\tdegradation: number\n\t}> {\n\t\tif (!this.baselineMetrics) return []\n\n\t\tconst regressions: Array<{\n\t\t\tmetric: keyof PerformanceMetrics\n\t\t\tbaseline: number\n\t\t\tcurrent: number\n\t\t\tdegradation: number\n\t\t}> = []\n\n\t\tconst metricsToCheck: Array<keyof PerformanceMetrics> = [\n\t\t\t\"componentRenderTime\",\n\t\t\t\"bundleLoadTime\",\n\t\t\t\"mediaLoadTime\",\n\t\t\t\"memoryUsage\"\n\t\t]\n\n\t\tmetricsToCheck.forEach((metric) => {\n\t\t\tconst baseline = this.baselineMetrics![metric] as number\n\t\t\tconst current = currentMetrics[metric] as number\n\n\t\t\tif (baseline && current && baseline > 0) {\n\t\t\t\tconst degradation = (current - baseline) / baseline\n\t\t\t\tif (degradation > this.regressionThreshold) {\n\t\t\t\t\tregressions.push({ metric, baseline, current, degradation })\n\t\t\t\t}\n\t\t\t}\n\t\t})\n\n\t\treturn regressions\n\t}\n\n\tsetRegressionThreshold(threshold: number) {\n\t\tthis.regressionThreshold = Math.max(0, Math.min(1, threshold))\n\t}\n}\n\n// Development dashboard component\nexport interface PerformanceDashboardProps {\n\tclassName?: string\n\tshowAdvanced?: boolean\n}\n\nexport function PerformanceDashboard({\n\tclassName = \"\",\n\tshowAdvanced = false\n}: PerformanceDashboardProps) {\n\tconst { metrics, averageMetrics, thresholds, isSupported } = usePerformanceMonitor()\n\n\tif (!isSupported || !metrics) {\n\t\treturn (\n\t\t\t<div className={`performance-dashboard ${className}`}>\n\t\t\t\t<p>Performance monitoring not supported in this environment</p>\n\t\t\t</div>\n\t\t)\n\t}\n\n\tconst getScoreColor = (score: number) => {\n\t\tif (score >= 90) return \"text-green-600\"\n\t\tif (score >= 70) return \"text-yellow-600\"\n\t\treturn \"text-red-600\"\n\t}\n\n\tconst formatBytes = (bytes: number) => {\n\t\treturn `${(bytes / 1024 / 1024).toFixed(2)} MB`\n\t}\n\n\treturn (\n\t\t<div className={`performance-dashboard rounded-lg bg-white p-4 shadow ${className}`}>\n\t\t\t<h3 className=\"mb-4 font-semibold text-lg\">Performance Dashboard</h3>\n\n\t\t\t{/* Performance Score */}\n\t\t\t<div className=\"mb-4\">\n\t\t\t\t<div className=\"flex items-center justify-between\">\n\t\t\t\t\t<span>Performance Score</span>\n\t\t\t\t\t<span className={`font-bold ${getScoreColor(metrics.performanceScore)}`}>\n\t\t\t\t\t\t{metrics.performanceScore.toFixed(0)}\n\t\t\t\t\t</span>\n\t\t\t\t</div>\n\t\t\t\t<div className=\"mt-1 h-2 w-full rounded-full bg-gray-200\">\n\t\t\t\t\t<div\n\t\t\t\t\t\tclassName={`h-2 rounded-full transition-all duration-300 ${\n\t\t\t\t\t\t\tmetrics.performanceScore >= 90\n\t\t\t\t\t\t\t\t? \"bg-green-500\"\n\t\t\t\t\t\t\t\t: metrics.performanceScore >= 70\n\t\t\t\t\t\t\t\t\t? \"bg-yellow-500\"\n\t\t\t\t\t\t\t\t\t: \"bg-red-500\"\n\t\t\t\t\t\t}`}\n\t\t\t\t\t\tstyle={{ width: `${metrics.performanceScore}%` }}\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t{/* Core Web Vitals */}\n\t\t\t<div className=\"mb-4 grid grid-cols-2 gap-4\">\n\t\t\t\t<div>\n\t\t\t\t\t<h4 className=\"mb-2 font-medium\">Core Web Vitals</h4>\n\t\t\t\t\t<div className=\"space-y-1 text-sm\">\n\t\t\t\t\t\t{metrics.lcp && <div>LCP: {metrics.lcp.toFixed(0)}ms</div>}\n\t\t\t\t\t\t{metrics.fid && <div>FID: {metrics.fid.toFixed(0)}ms</div>}\n\t\t\t\t\t\t{metrics.cls && <div>CLS: {metrics.cls.toFixed(3)}</div>}\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t<div>\n\t\t\t\t\t<h4 className=\"mb-2 font-medium\">Custom Metrics</h4>\n\t\t\t\t\t<div className=\"space-y-1 text-sm\">\n\t\t\t\t\t\t<div>Render: {metrics.componentRenderTime.toFixed(2)}ms</div>\n\t\t\t\t\t\t<div>Memory: {formatBytes(metrics.memoryUsage)}</div>\n\t\t\t\t\t\t{metrics.bundleLoadTime > 0 && <div>Bundle: {metrics.bundleLoadTime.toFixed(0)}ms</div>}\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t{/* Advanced metrics */}\n\t\t\t{showAdvanced && (\n\t\t\t\t<div>\n\t\t\t\t\t<h4 className=\"mb-2 font-medium\">Advanced Metrics</h4>\n\t\t\t\t\t<div className=\"space-y-1 text-sm\">\n\t\t\t\t\t\t<div>Average Render Time: {(averageMetrics.componentRenderTime || 0).toFixed(2)}ms</div>\n\t\t\t\t\t\t<div>Average Memory: {formatBytes(averageMetrics.memoryUsage || 0)}</div>\n\t\t\t\t\t\t<div>Average Score: {(averageMetrics.performanceScore || 0).toFixed(0)}</div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</div>\n\t)\n}\n\nexport default PerformanceMonitor\n"],"names":["defaultThresholds","PerformanceMonitor","thresholds","__publicField","webVitals","reportHandler","metric","vitalsAny","error","list","entry","key","value","currentMetrics","updatedMetrics","listener","metrics","score","componentName","renderFn","startMark","endMark","measureName","result","count","recentMetrics","averages","values","m","v","sum","newThresholds","performanceMonitor","usePerformanceMonitor","setMetrics","useState","isSupported","setIsSupported","useEffect","unsubscribe","measureRender","useCallback","withPerformanceMonitoring","WrappedComponent","displayName","PerformanceMonitoredComponent","props","renderRef","useRef","renderKey","jsx","PerformanceRegressionDetector","regressions","baseline","current","degradation","threshold","PerformanceDashboard","className","showAdvanced","averageMetrics","getScoreColor","formatBytes","bytes","jsxs"],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";function ye(e){var t,r,o="";if(typeof e=="string"||typeof e=="number")o+=e;else if(typeof e=="object")if(Array.isArray(e)){var a=e.length;for(t=0;t<a;t++)e[t]&&(r=ye(e[t]))&&(o&&(o+=" "),o+=r)}else for(r in e)e[r]&&(o&&(o+=" "),o+=r);return o}function ne(){for(var e,t,r=0,o="",a=arguments.length;r<a;r++)(e=arguments[r])&&(t=ye(e))&&(o&&(o+=" "),o+=t);return o}const ae="-",Ge=e=>{const t=Ee(e),{conflictingClassGroups:r,conflictingClassGroupModifiers:o}=e;return{getClassGroupId:l=>{const p=l.split(ae);return p[0]===""&&p.length!==1&&p.shift(),ke(p,t)||Ne(l)},getConflictingClassGroupIds:(l,p)=>{const m=r[l]||[];return p&&o[l]?[...m,...o[l]]:m}}},ke=(e,t)=>{if(e.length===0)return t.classGroupId;const r=e[0],o=t.nextPart.get(r),a=o?ke(e.slice(1),o):void 0;if(a)return a;if(t.validators.length===0)return;const i=e.join(ae);return t.validators.find(({validator:l})=>l(i))?.classGroupId},ge=/^\[(.+)\]$/,Ne=e=>{if(ge.test(e)){const t=ge.exec(e)[1],r=t?.substring(0,t.indexOf(":"));if(r)return"arbitrary.."+r}},Ee=e=>{const{theme:t,classGroups:r}=e,o={nextPart:new Map,validators:[]};for(const a in r)te(r[a],o,a,t);return o},te=(e,t,r,o)=>{e.forEach(a=>{if(typeof a=="string"){const i=a===""?t:be(t,a);i.classGroupId=r;return}if(typeof a=="function"){if($e(a)){te(a(o),t,r,o);return}t.validators.push({validator:a,classGroupId:r});return}Object.entries(a).forEach(([i,l])=>{te(l,be(t,i),r,o)})})},be=(e,t)=>{let r=e;return t.split(ae).forEach(o=>{r.nextPart.has(o)||r.nextPart.set(o,{nextPart:new Map,validators:[]}),r=r.nextPart.get(o)}),r},$e=e=>e.isThemeGetter,Ve=e=>{if(e<1)return{get:()=>{},set:()=>{}};let t=0,r=new Map,o=new Map;const a=(i,l)=>{r.set(i,l),t++,t>e&&(t=0,o=r,r=new Map)};return{get(i){let l=r.get(i);if(l!==void 0)return l;if((l=o.get(i))!==void 0)return a(i,l),l},set(i,l){r.has(i)?r.set(i,l):a(i,l)}}},re="!",se=":",Le=se.length,je=e=>{const{prefix:t,experimentalParseClassName:r}=e;let o=a=>{const i=[];let l=0,p=0,m=0,f;for(let y=0;y<a.length;y++){let k=a[y];if(l===0&&p===0){if(k===se){i.push(a.slice(m,y)),m=y+Le;continue}if(k==="/"){f=y;continue}}k==="["?l++:k==="]"?l--:k==="("?p++:k===")"&&p--}const g=i.length===0?a:a.substring(m),v=Oe(g),j=v!==g,O=f&&f>m?f-m:void 0;return{modifiers:i,hasImportantModifier:j,baseClassName:v,maybePostfixModifierPosition:O}};if(t){const a=t+se,i=o;o=l=>l.startsWith(a)?i(l.substring(a.length)):{isExternal:!0,modifiers:[],hasImportantModifier:!1,baseClassName:l,maybePostfixModifierPosition:void 0}}if(r){const a=o;o=i=>r({className:i,parseClassName:a})}return o},Oe=e=>e.endsWith(re)?e.substring(0,e.length-1):e.startsWith(re)?e.substring(1):e,We=e=>{const t=Object.fromEntries(e.orderSensitiveModifiers.map(o=>[o,!0]));return o=>{if(o.length<=1)return o;const a=[];let i=[];return o.forEach(l=>{l[0]==="["||t[l]?(a.push(...i.sort(),l),i=[]):i.push(l)}),a.push(...i.sort()),a}},Fe=e=>({cache:Ve(e.cacheSize),parseClassName:je(e),sortModifiers:We(e),...Ge(e)}),Be=/\s+/,Ue=(e,t)=>{const{parseClassName:r,getClassGroupId:o,getConflictingClassGroupIds:a,sortModifiers:i}=t,l=[],p=e.trim().split(Be);let m="";for(let f=p.length-1;f>=0;f-=1){const g=p[f],{isExternal:v,modifiers:j,hasImportantModifier:O,baseClassName:y,maybePostfixModifierPosition:k}=r(g);if(v){m=g+(m.length>0?" "+m:m);continue}let R=!!k,M=o(R?y.substring(0,k):y);if(!M){if(!R){m=g+(m.length>0?" "+m:m);continue}if(M=o(y),!M){m=g+(m.length>0?" "+m:m);continue}R=!1}const U=i(j).join(":"),W=O?U+re:U,G=W+M;if(l.includes(G))continue;l.push(G);const N=a(M,R);for(let P=0;P<N.length;++P){const F=N[P];l.push(W+F)}m=g+(m.length>0?" "+m:m)}return m};function _e(){let e=0,t,r,o="";for(;e<arguments.length;)(t=arguments[e++])&&(r=ve(t))&&(o&&(o+=" "),o+=r);return o}const ve=e=>{if(typeof e=="string")return e;let t,r="";for(let o=0;o<e.length;o++)e[o]&&(t=ve(e[o]))&&(r&&(r+=" "),r+=t);return r};function De(e,...t){let r,o,a,i=l;function l(m){const f=t.reduce((g,v)=>v(g),e());return r=Fe(f),o=r.cache.get,a=r.cache.set,i=p,p(m)}function p(m){const f=o(m);if(f)return f;const g=Ue(m,r);return a(m,g),g}return function(){return i(_e.apply(null,arguments))}}const b=e=>{const t=r=>r[e]||[];return t.isThemeGetter=!0,t},ze=/^\[(?:(\w[\w-]*):)?(.+)\]$/i,Ce=/^\((?:(\w[\w-]*):)?(.+)\)$/i,qe=/^\d+\/\d+$/,Ke=/^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/,Ze=/\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\b(calc|min|max|clamp)\(.+\)|^0$/,He=/^(rgba?|hsla?|hwb|(ok)?(lab|lch))\(.+\)$/,Je=/^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/,Xe=/^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/,$=e=>qe.test(e),u=e=>!!e&&!Number.isNaN(Number(e)),S=e=>!!e&&Number.isInteger(Number(e)),ee=e=>e.endsWith("%")&&u(e.slice(0,-1)),A=e=>Ke.test(e),Qe=()=>!0,Ye=e=>Ze.test(e)&&!He.test(e),Ae=()=>!1,eo=e=>Je.test(e),oo=e=>Xe.test(e),to=e=>!s(e)&&!n(e),ro=e=>V(e,Pe,Ae),s=e=>ze.test(e),T=e=>V(e,Ie,Ye),oe=e=>V(e,lo,u),he=e=>V(e,Se,Ae),so=e=>V(e,Me,oo),H=e=>V(e,Te,eo),n=e=>Ce.test(e),B=e=>L(e,Ie),no=e=>L(e,co),we=e=>L(e,Se),ao=e=>L(e,Pe),io=e=>L(e,Me),J=e=>L(e,Te,!0),V=(e,t,r)=>{const o=ze.exec(e);return o?o[1]?t(o[1]):r(o[2]):!1},L=(e,t,r=!1)=>{const o=Ce.exec(e);return o?o[1]?t(o[1]):r:!1},Se=e=>e==="position"||e==="percentage",Me=e=>e==="image"||e==="url",Pe=e=>e==="length"||e==="size"||e==="bg-size",Ie=e=>e==="length",lo=e=>e==="number",co=e=>e==="family-name",Te=e=>e==="shadow",mo=()=>{const e=b("color"),t=b("font"),r=b("text"),o=b("font-weight"),a=b("tracking"),i=b("leading"),l=b("breakpoint"),p=b("container"),m=b("spacing"),f=b("radius"),g=b("shadow"),v=b("inset-shadow"),j=b("text-shadow"),O=b("drop-shadow"),y=b("blur"),k=b("perspective"),R=b("aspect"),M=b("ease"),U=b("animate"),W=()=>["auto","avoid","all","avoid-page","page","left","right","column"],G=()=>["center","top","bottom","left","right","top-left","left-top","top-right","right-top","bottom-right","right-bottom","bottom-left","left-bottom"],N=()=>[...G(),n,s],P=()=>["auto","hidden","clip","visible","scroll"],F=()=>["auto","contain","none"],d=()=>[n,s,m],z=()=>[$,"full","auto",...d()],ie=()=>[S,"none","subgrid",n,s],le=()=>["auto",{span:["full",S,n,s]},S,n,s],_=()=>[S,"auto",n,s],ce=()=>["auto","min","max","fr",n,s],X=()=>["start","end","center","between","around","evenly","stretch","baseline","center-safe","end-safe"],E=()=>["start","end","center","stretch","center-safe","end-safe"],C=()=>["auto",...d()],I=()=>[$,"auto","full","dvw","dvh","lvw","lvh","svw","svh","min","max","fit",...d()],c=()=>[e,n,s],de=()=>[...G(),we,he,{position:[n,s]}],me=()=>["no-repeat",{repeat:["","x","y","space","round"]}],ue=()=>["auto","cover","contain",ao,ro,{size:[n,s]}],Q=()=>[ee,B,T],w=()=>["","none","full",f,n,s],x=()=>["",u,B,T],D=()=>["solid","dashed","dotted","double"],pe=()=>["normal","multiply","screen","overlay","darken","lighten","color-dodge","color-burn","hard-light","soft-light","difference","exclusion","hue","saturation","color","luminosity"],h=()=>[u,ee,we,he],fe=()=>["","none",y,n,s],q=()=>["none",u,n,s],K=()=>["none",u,n,s],Y=()=>[u,n,s],Z=()=>[$,"full",...d()];return{cacheSize:500,theme:{animate:["spin","ping","pulse","bounce"],aspect:["video"],blur:[A],breakpoint:[A],color:[Qe],container:[A],"drop-shadow":[A],ease:["in","out","in-out"],font:[to],"font-weight":["thin","extralight","light","normal","medium","semibold","bold","extrabold","black"],"inset-shadow":[A],leading:["none","tight","snug","normal","relaxed","loose"],perspective:["dramatic","near","normal","midrange","distant","none"],radius:[A],shadow:[A],spacing:["px",u],text:[A],"text-shadow":[A],tracking:["tighter","tight","normal","wide","wider","widest"]},classGroups:{aspect:[{aspect:["auto","square",$,s,n,R]}],container:["container"],columns:[{columns:[u,s,n,p]}],"break-after":[{"break-after":W()}],"break-before":[{"break-before":W()}],"break-inside":[{"break-inside":["auto","avoid","avoid-page","avoid-column"]}],"box-decoration":[{"box-decoration":["slice","clone"]}],box:[{box:["border","content"]}],display:["block","inline-block","inline","flex","inline-flex","table","inline-table","table-caption","table-cell","table-column","table-column-group","table-footer-group","table-header-group","table-row-group","table-row","flow-root","grid","inline-grid","contents","list-item","hidden"],sr:["sr-only","not-sr-only"],float:[{float:["right","left","none","start","end"]}],clear:[{clear:["left","right","both","none","start","end"]}],isolation:["isolate","isolation-auto"],"object-fit":[{object:["contain","cover","fill","none","scale-down"]}],"object-position":[{object:N()}],overflow:[{overflow:P()}],"overflow-x":[{"overflow-x":P()}],"overflow-y":[{"overflow-y":P()}],overscroll:[{overscroll:F()}],"overscroll-x":[{"overscroll-x":F()}],"overscroll-y":[{"overscroll-y":F()}],position:["static","fixed","absolute","relative","sticky"],inset:[{inset:z()}],"inset-x":[{"inset-x":z()}],"inset-y":[{"inset-y":z()}],start:[{start:z()}],end:[{end:z()}],top:[{top:z()}],right:[{right:z()}],bottom:[{bottom:z()}],left:[{left:z()}],visibility:["visible","invisible","collapse"],z:[{z:[S,"auto",n,s]}],basis:[{basis:[$,"full","auto",p,...d()]}],"flex-direction":[{flex:["row","row-reverse","col","col-reverse"]}],"flex-wrap":[{flex:["nowrap","wrap","wrap-reverse"]}],flex:[{flex:[u,$,"auto","initial","none",s]}],grow:[{grow:["",u,n,s]}],shrink:[{shrink:["",u,n,s]}],order:[{order:[S,"first","last","none",n,s]}],"grid-cols":[{"grid-cols":ie()}],"col-start-end":[{col:le()}],"col-start":[{"col-start":_()}],"col-end":[{"col-end":_()}],"grid-rows":[{"grid-rows":ie()}],"row-start-end":[{row:le()}],"row-start":[{"row-start":_()}],"row-end":[{"row-end":_()}],"grid-flow":[{"grid-flow":["row","col","dense","row-dense","col-dense"]}],"auto-cols":[{"auto-cols":ce()}],"auto-rows":[{"auto-rows":ce()}],gap:[{gap:d()}],"gap-x":[{"gap-x":d()}],"gap-y":[{"gap-y":d()}],"justify-content":[{justify:[...X(),"normal"]}],"justify-items":[{"justify-items":[...E(),"normal"]}],"justify-self":[{"justify-self":["auto",...E()]}],"align-content":[{content:["normal",...X()]}],"align-items":[{items:[...E(),{baseline:["","last"]}]}],"align-self":[{self:["auto",...E(),{baseline:["","last"]}]}],"place-content":[{"place-content":X()}],"place-items":[{"place-items":[...E(),"baseline"]}],"place-self":[{"place-self":["auto",...E()]}],p:[{p:d()}],px:[{px:d()}],py:[{py:d()}],ps:[{ps:d()}],pe:[{pe:d()}],pt:[{pt:d()}],pr:[{pr:d()}],pb:[{pb:d()}],pl:[{pl:d()}],m:[{m:C()}],mx:[{mx:C()}],my:[{my:C()}],ms:[{ms:C()}],me:[{me:C()}],mt:[{mt:C()}],mr:[{mr:C()}],mb:[{mb:C()}],ml:[{ml:C()}],"space-x":[{"space-x":d()}],"space-x-reverse":["space-x-reverse"],"space-y":[{"space-y":d()}],"space-y-reverse":["space-y-reverse"],size:[{size:I()}],w:[{w:[p,"screen",...I()]}],"min-w":[{"min-w":[p,"screen","none",...I()]}],"max-w":[{"max-w":[p,"screen","none","prose",{screen:[l]},...I()]}],h:[{h:["screen","lh",...I()]}],"min-h":[{"min-h":["screen","lh","none",...I()]}],"max-h":[{"max-h":["screen","lh",...I()]}],"font-size":[{text:["base",r,B,T]}],"font-smoothing":["antialiased","subpixel-antialiased"],"font-style":["italic","not-italic"],"font-weight":[{font:[o,n,oe]}],"font-stretch":[{"font-stretch":["ultra-condensed","extra-condensed","condensed","semi-condensed","normal","semi-expanded","expanded","extra-expanded","ultra-expanded",ee,s]}],"font-family":[{font:[no,s,t]}],"fvn-normal":["normal-nums"],"fvn-ordinal":["ordinal"],"fvn-slashed-zero":["slashed-zero"],"fvn-figure":["lining-nums","oldstyle-nums"],"fvn-spacing":["proportional-nums","tabular-nums"],"fvn-fraction":["diagonal-fractions","stacked-fractions"],tracking:[{tracking:[a,n,s]}],"line-clamp":[{"line-clamp":[u,"none",n,oe]}],leading:[{leading:[i,...d()]}],"list-image":[{"list-image":["none",n,s]}],"list-style-position":[{list:["inside","outside"]}],"list-style-type":[{list:["disc","decimal","none",n,s]}],"text-alignment":[{text:["left","center","right","justify","start","end"]}],"placeholder-color":[{placeholder:c()}],"text-color":[{text:c()}],"text-decoration":["underline","overline","line-through","no-underline"],"text-decoration-style":[{decoration:[...D(),"wavy"]}],"text-decoration-thickness":[{decoration:[u,"from-font","auto",n,T]}],"text-decoration-color":[{decoration:c()}],"underline-offset":[{"underline-offset":[u,"auto",n,s]}],"text-transform":["uppercase","lowercase","capitalize","normal-case"],"text-overflow":["truncate","text-ellipsis","text-clip"],"text-wrap":[{text:["wrap","nowrap","balance","pretty"]}],indent:[{indent:d()}],"vertical-align":[{align:["baseline","top","middle","bottom","text-top","text-bottom","sub","super",n,s]}],whitespace:[{whitespace:["normal","nowrap","pre","pre-line","pre-wrap","break-spaces"]}],break:[{break:["normal","words","all","keep"]}],wrap:[{wrap:["break-word","anywhere","normal"]}],hyphens:[{hyphens:["none","manual","auto"]}],content:[{content:["none",n,s]}],"bg-attachment":[{bg:["fixed","local","scroll"]}],"bg-clip":[{"bg-clip":["border","padding","content","text"]}],"bg-origin":[{"bg-origin":["border","padding","content"]}],"bg-position":[{bg:de()}],"bg-repeat":[{bg:me()}],"bg-size":[{bg:ue()}],"bg-image":[{bg:["none",{linear:[{to:["t","tr","r","br","b","bl","l","tl"]},S,n,s],radial:["",n,s],conic:[S,n,s]},io,so]}],"bg-color":[{bg:c()}],"gradient-from-pos":[{from:Q()}],"gradient-via-pos":[{via:Q()}],"gradient-to-pos":[{to:Q()}],"gradient-from":[{from:c()}],"gradient-via":[{via:c()}],"gradient-to":[{to:c()}],rounded:[{rounded:w()}],"rounded-s":[{"rounded-s":w()}],"rounded-e":[{"rounded-e":w()}],"rounded-t":[{"rounded-t":w()}],"rounded-r":[{"rounded-r":w()}],"rounded-b":[{"rounded-b":w()}],"rounded-l":[{"rounded-l":w()}],"rounded-ss":[{"rounded-ss":w()}],"rounded-se":[{"rounded-se":w()}],"rounded-ee":[{"rounded-ee":w()}],"rounded-es":[{"rounded-es":w()}],"rounded-tl":[{"rounded-tl":w()}],"rounded-tr":[{"rounded-tr":w()}],"rounded-br":[{"rounded-br":w()}],"rounded-bl":[{"rounded-bl":w()}],"border-w":[{border:x()}],"border-w-x":[{"border-x":x()}],"border-w-y":[{"border-y":x()}],"border-w-s":[{"border-s":x()}],"border-w-e":[{"border-e":x()}],"border-w-t":[{"border-t":x()}],"border-w-r":[{"border-r":x()}],"border-w-b":[{"border-b":x()}],"border-w-l":[{"border-l":x()}],"divide-x":[{"divide-x":x()}],"divide-x-reverse":["divide-x-reverse"],"divide-y":[{"divide-y":x()}],"divide-y-reverse":["divide-y-reverse"],"border-style":[{border:[...D(),"hidden","none"]}],"divide-style":[{divide:[...D(),"hidden","none"]}],"border-color":[{border:c()}],"border-color-x":[{"border-x":c()}],"border-color-y":[{"border-y":c()}],"border-color-s":[{"border-s":c()}],"border-color-e":[{"border-e":c()}],"border-color-t":[{"border-t":c()}],"border-color-r":[{"border-r":c()}],"border-color-b":[{"border-b":c()}],"border-color-l":[{"border-l":c()}],"divide-color":[{divide:c()}],"outline-style":[{outline:[...D(),"none","hidden"]}],"outline-offset":[{"outline-offset":[u,n,s]}],"outline-w":[{outline:["",u,B,T]}],"outline-color":[{outline:c()}],shadow:[{shadow:["","none",g,J,H]}],"shadow-color":[{shadow:c()}],"inset-shadow":[{"inset-shadow":["none",v,J,H]}],"inset-shadow-color":[{"inset-shadow":c()}],"ring-w":[{ring:x()}],"ring-w-inset":["ring-inset"],"ring-color":[{ring:c()}],"ring-offset-w":[{"ring-offset":[u,T]}],"ring-offset-color":[{"ring-offset":c()}],"inset-ring-w":[{"inset-ring":x()}],"inset-ring-color":[{"inset-ring":c()}],"text-shadow":[{"text-shadow":["none",j,J,H]}],"text-shadow-color":[{"text-shadow":c()}],opacity:[{opacity:[u,n,s]}],"mix-blend":[{"mix-blend":[...pe(),"plus-darker","plus-lighter"]}],"bg-blend":[{"bg-blend":pe()}],"mask-clip":[{"mask-clip":["border","padding","content","fill","stroke","view"]},"mask-no-clip"],"mask-composite":[{mask:["add","subtract","intersect","exclude"]}],"mask-image-linear-pos":[{"mask-linear":[u]}],"mask-image-linear-from-pos":[{"mask-linear-from":h()}],"mask-image-linear-to-pos":[{"mask-linear-to":h()}],"mask-image-linear-from-color":[{"mask-linear-from":c()}],"mask-image-linear-to-color":[{"mask-linear-to":c()}],"mask-image-t-from-pos":[{"mask-t-from":h()}],"mask-image-t-to-pos":[{"mask-t-to":h()}],"mask-image-t-from-color":[{"mask-t-from":c()}],"mask-image-t-to-color":[{"mask-t-to":c()}],"mask-image-r-from-pos":[{"mask-r-from":h()}],"mask-image-r-to-pos":[{"mask-r-to":h()}],"mask-image-r-from-color":[{"mask-r-from":c()}],"mask-image-r-to-color":[{"mask-r-to":c()}],"mask-image-b-from-pos":[{"mask-b-from":h()}],"mask-image-b-to-pos":[{"mask-b-to":h()}],"mask-image-b-from-color":[{"mask-b-from":c()}],"mask-image-b-to-color":[{"mask-b-to":c()}],"mask-image-l-from-pos":[{"mask-l-from":h()}],"mask-image-l-to-pos":[{"mask-l-to":h()}],"mask-image-l-from-color":[{"mask-l-from":c()}],"mask-image-l-to-color":[{"mask-l-to":c()}],"mask-image-x-from-pos":[{"mask-x-from":h()}],"mask-image-x-to-pos":[{"mask-x-to":h()}],"mask-image-x-from-color":[{"mask-x-from":c()}],"mask-image-x-to-color":[{"mask-x-to":c()}],"mask-image-y-from-pos":[{"mask-y-from":h()}],"mask-image-y-to-pos":[{"mask-y-to":h()}],"mask-image-y-from-color":[{"mask-y-from":c()}],"mask-image-y-to-color":[{"mask-y-to":c()}],"mask-image-radial":[{"mask-radial":[n,s]}],"mask-image-radial-from-pos":[{"mask-radial-from":h()}],"mask-image-radial-to-pos":[{"mask-radial-to":h()}],"mask-image-radial-from-color":[{"mask-radial-from":c()}],"mask-image-radial-to-color":[{"mask-radial-to":c()}],"mask-image-radial-shape":[{"mask-radial":["circle","ellipse"]}],"mask-image-radial-size":[{"mask-radial":[{closest:["side","corner"],farthest:["side","corner"]}]}],"mask-image-radial-pos":[{"mask-radial-at":G()}],"mask-image-conic-pos":[{"mask-conic":[u]}],"mask-image-conic-from-pos":[{"mask-conic-from":h()}],"mask-image-conic-to-pos":[{"mask-conic-to":h()}],"mask-image-conic-from-color":[{"mask-conic-from":c()}],"mask-image-conic-to-color":[{"mask-conic-to":c()}],"mask-mode":[{mask:["alpha","luminance","match"]}],"mask-origin":[{"mask-origin":["border","padding","content","fill","stroke","view"]}],"mask-position":[{mask:de()}],"mask-repeat":[{mask:me()}],"mask-size":[{mask:ue()}],"mask-type":[{"mask-type":["alpha","luminance"]}],"mask-image":[{mask:["none",n,s]}],filter:[{filter:["","none",n,s]}],blur:[{blur:fe()}],brightness:[{brightness:[u,n,s]}],contrast:[{contrast:[u,n,s]}],"drop-shadow":[{"drop-shadow":["","none",O,J,H]}],"drop-shadow-color":[{"drop-shadow":c()}],grayscale:[{grayscale:["",u,n,s]}],"hue-rotate":[{"hue-rotate":[u,n,s]}],invert:[{invert:["",u,n,s]}],saturate:[{saturate:[u,n,s]}],sepia:[{sepia:["",u,n,s]}],"backdrop-filter":[{"backdrop-filter":["","none",n,s]}],"backdrop-blur":[{"backdrop-blur":fe()}],"backdrop-brightness":[{"backdrop-brightness":[u,n,s]}],"backdrop-contrast":[{"backdrop-contrast":[u,n,s]}],"backdrop-grayscale":[{"backdrop-grayscale":["",u,n,s]}],"backdrop-hue-rotate":[{"backdrop-hue-rotate":[u,n,s]}],"backdrop-invert":[{"backdrop-invert":["",u,n,s]}],"backdrop-opacity":[{"backdrop-opacity":[u,n,s]}],"backdrop-saturate":[{"backdrop-saturate":[u,n,s]}],"backdrop-sepia":[{"backdrop-sepia":["",u,n,s]}],"border-collapse":[{border:["collapse","separate"]}],"border-spacing":[{"border-spacing":d()}],"border-spacing-x":[{"border-spacing-x":d()}],"border-spacing-y":[{"border-spacing-y":d()}],"table-layout":[{table:["auto","fixed"]}],caption:[{caption:["top","bottom"]}],transition:[{transition:["","all","colors","opacity","shadow","transform","none",n,s]}],"transition-behavior":[{transition:["normal","discrete"]}],duration:[{duration:[u,"initial",n,s]}],ease:[{ease:["linear","initial",M,n,s]}],delay:[{delay:[u,n,s]}],animate:[{animate:["none",U,n,s]}],backface:[{backface:["hidden","visible"]}],perspective:[{perspective:[k,n,s]}],"perspective-origin":[{"perspective-origin":N()}],rotate:[{rotate:q()}],"rotate-x":[{"rotate-x":q()}],"rotate-y":[{"rotate-y":q()}],"rotate-z":[{"rotate-z":q()}],scale:[{scale:K()}],"scale-x":[{"scale-x":K()}],"scale-y":[{"scale-y":K()}],"scale-z":[{"scale-z":K()}],"scale-3d":["scale-3d"],skew:[{skew:Y()}],"skew-x":[{"skew-x":Y()}],"skew-y":[{"skew-y":Y()}],transform:[{transform:[n,s,"","none","gpu","cpu"]}],"transform-origin":[{origin:N()}],"transform-style":[{transform:["3d","flat"]}],translate:[{translate:Z()}],"translate-x":[{"translate-x":Z()}],"translate-y":[{"translate-y":Z()}],"translate-z":[{"translate-z":Z()}],"translate-none":["translate-none"],accent:[{accent:c()}],appearance:[{appearance:["none","auto"]}],"caret-color":[{caret:c()}],"color-scheme":[{scheme:["normal","dark","light","light-dark","only-dark","only-light"]}],cursor:[{cursor:["auto","default","pointer","wait","text","move","help","not-allowed","none","context-menu","progress","cell","crosshair","vertical-text","alias","copy","no-drop","grab","grabbing","all-scroll","col-resize","row-resize","n-resize","e-resize","s-resize","w-resize","ne-resize","nw-resize","se-resize","sw-resize","ew-resize","ns-resize","nesw-resize","nwse-resize","zoom-in","zoom-out",n,s]}],"field-sizing":[{"field-sizing":["fixed","content"]}],"pointer-events":[{"pointer-events":["auto","none"]}],resize:[{resize:["none","","y","x"]}],"scroll-behavior":[{scroll:["auto","smooth"]}],"scroll-m":[{"scroll-m":d()}],"scroll-mx":[{"scroll-mx":d()}],"scroll-my":[{"scroll-my":d()}],"scroll-ms":[{"scroll-ms":d()}],"scroll-me":[{"scroll-me":d()}],"scroll-mt":[{"scroll-mt":d()}],"scroll-mr":[{"scroll-mr":d()}],"scroll-mb":[{"scroll-mb":d()}],"scroll-ml":[{"scroll-ml":d()}],"scroll-p":[{"scroll-p":d()}],"scroll-px":[{"scroll-px":d()}],"scroll-py":[{"scroll-py":d()}],"scroll-ps":[{"scroll-ps":d()}],"scroll-pe":[{"scroll-pe":d()}],"scroll-pt":[{"scroll-pt":d()}],"scroll-pr":[{"scroll-pr":d()}],"scroll-pb":[{"scroll-pb":d()}],"scroll-pl":[{"scroll-pl":d()}],"snap-align":[{snap:["start","end","center","align-none"]}],"snap-stop":[{snap:["normal","always"]}],"snap-type":[{snap:["none","x","y","both"]}],"snap-strictness":[{snap:["mandatory","proximity"]}],touch:[{touch:["auto","none","manipulation"]}],"touch-x":[{"touch-pan":["x","left","right"]}],"touch-y":[{"touch-pan":["y","up","down"]}],"touch-pz":["touch-pinch-zoom"],select:[{select:["none","text","all","auto"]}],"will-change":[{"will-change":["auto","scroll","contents","transform",n,s]}],fill:[{fill:["none",...c()]}],"stroke-w":[{stroke:[u,B,T,oe]}],stroke:[{stroke:["none",...c()]}],"forced-color-adjust":[{"forced-color-adjust":["auto","none"]}]},conflictingClassGroups:{overflow:["overflow-x","overflow-y"],overscroll:["overscroll-x","overscroll-y"],inset:["inset-x","inset-y","start","end","top","right","bottom","left"],"inset-x":["right","left"],"inset-y":["top","bottom"],flex:["basis","grow","shrink"],gap:["gap-x","gap-y"],p:["px","py","ps","pe","pt","pr","pb","pl"],px:["pr","pl"],py:["pt","pb"],m:["mx","my","ms","me","mt","mr","mb","ml"],mx:["mr","ml"],my:["mt","mb"],size:["w","h"],"font-size":["leading"],"fvn-normal":["fvn-ordinal","fvn-slashed-zero","fvn-figure","fvn-spacing","fvn-fraction"],"fvn-ordinal":["fvn-normal"],"fvn-slashed-zero":["fvn-normal"],"fvn-figure":["fvn-normal"],"fvn-spacing":["fvn-normal"],"fvn-fraction":["fvn-normal"],"line-clamp":["display","overflow"],rounded:["rounded-s","rounded-e","rounded-t","rounded-r","rounded-b","rounded-l","rounded-ss","rounded-se","rounded-ee","rounded-es","rounded-tl","rounded-tr","rounded-br","rounded-bl"],"rounded-s":["rounded-ss","rounded-es"],"rounded-e":["rounded-se","rounded-ee"],"rounded-t":["rounded-tl","rounded-tr"],"rounded-r":["rounded-tr","rounded-br"],"rounded-b":["rounded-br","rounded-bl"],"rounded-l":["rounded-tl","rounded-bl"],"border-spacing":["border-spacing-x","border-spacing-y"],"border-w":["border-w-x","border-w-y","border-w-s","border-w-e","border-w-t","border-w-r","border-w-b","border-w-l"],"border-w-x":["border-w-r","border-w-l"],"border-w-y":["border-w-t","border-w-b"],"border-color":["border-color-x","border-color-y","border-color-s","border-color-e","border-color-t","border-color-r","border-color-b","border-color-l"],"border-color-x":["border-color-r","border-color-l"],"border-color-y":["border-color-t","border-color-b"],translate:["translate-x","translate-y","translate-none"],"translate-none":["translate","translate-x","translate-y","translate-z"],"scroll-m":["scroll-mx","scroll-my","scroll-ms","scroll-me","scroll-mt","scroll-mr","scroll-mb","scroll-ml"],"scroll-mx":["scroll-mr","scroll-ml"],"scroll-my":["scroll-mt","scroll-mb"],"scroll-p":["scroll-px","scroll-py","scroll-ps","scroll-pe","scroll-pt","scroll-pr","scroll-pb","scroll-pl"],"scroll-px":["scroll-pr","scroll-pl"],"scroll-py":["scroll-pt","scroll-pb"],touch:["touch-x","touch-y","touch-pz"],"touch-x":["touch"],"touch-y":["touch"],"touch-pz":["touch"]},conflictingClassGroupModifiers:{"font-size":["leading"]},orderSensitiveModifiers:["*","**","after","backdrop","before","details-content","file","first-letter","first-line","marker","placeholder","selection"]}},Re=De(mo);function uo(...e){return Re(ne(e))}function po(e){if(isNaN(e)||!isFinite(e))return"0:00";const t=Math.floor(e/3600),r=Math.floor(e%3600/60),o=Math.floor(e%60);return t>0?`${t}:${r.toString().padStart(2,"0")}:${o.toString().padStart(2,"0")}`:`${r}:${o.toString().padStart(2,"0")}`}function fo(e){const t=e.split(":").map(Number);if(t.length===2){const[r=0,o=0]=t;return r*60+o}else if(t.length===3){const[r=0,o=0,a=0]=t;return r*3600+o*60+a}return 0}function go(...e){return Re(ne(...e))}/**
|
|
2
|
+
* @license lucide-react v0.511.0 - ISC
|
|
3
|
+
*
|
|
4
|
+
* This source code is licensed under the ISC license.
|
|
5
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
6
|
+
*/const bo=e=>e.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase(),ho=e=>e.replace(/^([A-Z])|[\s-_]+(\w)/g,(t,r,o)=>o?o.toUpperCase():r.toLowerCase()),wo=e=>{const t=ho(e);return t.charAt(0).toUpperCase()+t.slice(1)},xo=(...e)=>e.filter((t,r,o)=>!!t&&t.trim()!==""&&o.indexOf(t)===r).join(" ").trim(),yo=e=>{for(const t in e)if(t.startsWith("aria-")||t==="role"||t==="title")return!0},xe=new Set;function ko(e,t,r="2.0"){const o=`${e}-${t}-${r}`;xe.has(o)||(xe.add(o),console.warn(`⚠️ [BaroiPlayer] DEPRECATION WARNING: ${e} is deprecated and will be removed in v${r}.
|
|
7
|
+
Please replace it with: ${t}
|
|
8
|
+
See https://github.com/baroi/baroiplayer/blob/main/MIGRATION.md for migration guide.`))}function vo(e,t,r={leading:!0,trailing:!0}){let o,a=0,i=null;const{leading:l=!0,trailing:p=!0}=r;return((...m)=>{const f=Date.now(),g=t-(f-a),v=()=>{a=Date.now(),i=null,o=e(...m)};return a?g<=0?(i&&(clearTimeout(i),i=null),o=e(...m),a=f):p&&!i&&(i=setTimeout(()=>v(),g)):(l&&(o=e(...m)),a=f),o})}function zo(e,t,r={}){let o=null;const{immediate:a=!1}=r;return((...i)=>{const l=()=>(o=null,e(...i)),p=()=>{if(o=null,!a)return e(...i)},f=a&&!o?e(...i):void 0;return o&&clearTimeout(o),o=setTimeout(a?p:l,t),f})}function Co(e,t){let r=e,o=0,a=e;return{update:f=>{r=f;const g=Date.now();g-o>=t&&(a=f,o=g)},getThrottledValue:()=>a,getLatestValue:()=>r,forceUpdate:()=>{a=r,o=Date.now()}}}function Ao(e){let t=[],r=!1;const o=()=>{t.length>0&&(e(t),t=[]),r=!1};return(...a)=>{t.push(a),r||(r=!0,setTimeout(()=>o(),0))}}exports.batch=Ao;exports.clsx=ne;exports.cn=uo;exports.cn$1=go;exports.createThrottledValue=Co;exports.debounce=zo;exports.formatTime=po;exports.hasA11yProp=yo;exports.mergeClasses=xo;exports.parseTime=fo;exports.showDeprecationWarning=ko;exports.throttle=vo;exports.toKebabCase=bo;exports.toPascalCase=wo;
|
|
9
|
+
//# sourceMappingURL=utils-CFOue_9K.cjs.map
|