@therealtinhtute/baroiplayer 1.0.0 → 1.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.css +102 -1
- package/dist/index.d.ts +1388 -0
- package/dist/index.js +27 -112
- package/dist/index.mjs +17 -6126
- package/dist/package.json +28 -0
- package/dist/src/adapters/videojs-adapter.d.ts +38 -0
- package/dist/src/adapters/videojs-adapter.d.ts.map +1 -0
- package/dist/src/adapters/videojs-adapter.js +350 -0
- package/dist/src/adapters/videojs-adapter.tsx +470 -0
- package/dist/src/components/AnimateLoading.d.ts +9 -0
- package/dist/src/components/AnimateLoading.d.ts.map +1 -0
- package/dist/src/components/AnimateLoading.js +41 -0
- package/dist/src/components/AnimateLoading.tsx +115 -0
- package/dist/src/components/LoadingState.d.ts +33 -0
- package/dist/src/components/LoadingState.d.ts.map +1 -0
- package/dist/src/components/LoadingState.js +111 -0
- package/dist/src/components/LoadingState.tsx +248 -0
- package/dist/src/components/accessibility/keyboard-help-overlay.d.ts +17 -0
- package/dist/src/components/accessibility/keyboard-help-overlay.d.ts.map +1 -0
- package/dist/src/components/accessibility/keyboard-help-overlay.js +90 -0
- package/dist/src/components/accessibility/keyboard-help-overlay.tsx +213 -0
- package/dist/src/components/audio-player.d.ts +3 -0
- package/dist/src/components/audio-player.d.ts.map +1 -0
- package/dist/src/components/audio-player.js +31 -0
- package/dist/src/components/audio-player.tsx +85 -0
- package/dist/src/components/basic/index.d.ts +26 -0
- package/dist/src/components/basic/index.d.ts.map +1 -0
- package/dist/src/components/basic/index.js +29 -0
- package/dist/src/components/basic/index.ts +37 -0
- package/dist/src/components/enhanced/advanced-features.d.ts +45 -0
- package/dist/src/components/enhanced/advanced-features.d.ts.map +1 -0
- package/dist/src/components/enhanced/advanced-features.js +64 -0
- package/dist/src/components/enhanced/advanced-features.tsx +316 -0
- package/dist/src/components/enhanced/debug-panel.d.ts +70 -0
- package/dist/src/components/enhanced/debug-panel.d.ts.map +1 -0
- package/dist/src/components/enhanced/debug-panel.js +94 -0
- package/dist/src/components/enhanced/debug-panel.tsx +422 -0
- package/dist/src/components/enhanced/enhanced-controls.d.ts +50 -0
- package/dist/src/components/enhanced/enhanced-controls.d.ts.map +1 -0
- package/dist/src/components/enhanced/enhanced-controls.js +233 -0
- package/dist/src/components/enhanced/enhanced-controls.tsx +600 -0
- package/dist/src/components/enhanced/enhanced-media-player.d.ts +26 -0
- package/dist/src/components/enhanced/enhanced-media-player.d.ts.map +1 -0
- package/dist/src/components/enhanced/enhanced-media-player.js +316 -0
- package/dist/src/components/enhanced/enhanced-media-player.tsx +509 -0
- package/dist/src/components/enhanced/error-handling.d.ts +36 -0
- package/dist/src/components/enhanced/error-handling.d.ts.map +1 -0
- package/dist/src/components/enhanced/error-handling.js +153 -0
- package/dist/src/components/enhanced/error-handling.tsx +345 -0
- package/dist/src/components/enhanced/index.d.ts +7 -0
- package/dist/src/components/enhanced/index.d.ts.map +1 -0
- package/dist/src/components/enhanced/index.js +10 -0
- package/dist/src/components/enhanced/index.ts +39 -0
- package/dist/src/components/enhanced/media-player-enhanced.d.ts +21 -0
- package/dist/src/components/enhanced/media-player-enhanced.d.ts.map +1 -0
- package/dist/src/components/enhanced/media-player-enhanced.js +250 -0
- package/dist/src/components/enhanced/media-player-enhanced.tsx +349 -0
- package/dist/src/components/examples/basic-video-player.d.ts +10 -0
- package/dist/src/components/examples/basic-video-player.d.ts.map +1 -0
- package/dist/src/components/examples/basic-video-player.js +16 -0
- package/dist/src/components/examples/basic-video-player.tsx +55 -0
- package/dist/src/components/examples/custom-controls-example.d.ts +10 -0
- package/dist/src/components/examples/custom-controls-example.d.ts.map +1 -0
- package/dist/src/components/examples/custom-controls-example.js +12 -0
- package/dist/src/components/examples/custom-controls-example.tsx +63 -0
- package/dist/src/components/examples/enhanced-controls-example.d.ts +9 -0
- package/dist/src/components/examples/enhanced-controls-example.d.ts.map +1 -0
- package/dist/src/components/examples/enhanced-controls-example.js +18 -0
- package/dist/src/components/examples/enhanced-controls-example.tsx +114 -0
- package/dist/src/components/examples/enhanced-media-player-example.d.ts +9 -0
- package/dist/src/components/examples/enhanced-media-player-example.d.ts.map +1 -0
- package/dist/src/components/examples/enhanced-media-player-example.js +13 -0
- package/dist/src/components/examples/enhanced-media-player-example.tsx +293 -0
- package/dist/src/components/examples/loading-states-demo.d.ts +2 -0
- package/dist/src/components/examples/loading-states-demo.d.ts.map +1 -0
- package/dist/src/components/examples/loading-states-demo.js +41 -0
- package/dist/src/components/examples/loading-states-demo.tsx +142 -0
- package/dist/src/components/examples/react-19-demo.d.ts +10 -0
- package/dist/src/components/examples/react-19-demo.d.ts.map +1 -0
- package/dist/src/components/examples/react-19-demo.js +104 -0
- package/dist/src/components/examples/react-19-demo.tsx +381 -0
- package/dist/src/components/examples/volume-orientation-demo.d.ts +2 -0
- package/dist/src/components/examples/volume-orientation-demo.d.ts.map +1 -0
- package/dist/src/components/examples/volume-orientation-demo.js +31 -0
- package/dist/src/components/examples/volume-orientation-demo.tsx +114 -0
- package/dist/src/components/icon-demo.d.ts +2 -0
- package/dist/src/components/icon-demo.d.ts.map +1 -0
- package/dist/src/components/icon-demo.js +16 -0
- package/dist/src/components/icon-demo.tsx +209 -0
- package/dist/src/components/icons/index.d.ts +36 -0
- package/dist/src/components/icons/index.d.ts.map +1 -0
- package/dist/src/components/icons/index.js +59 -0
- package/dist/src/components/icons/index.tsx +166 -0
- package/dist/src/components/icons/svg-icons/ArrowLeftIcon.d.ts +4 -0
- package/dist/src/components/icons/svg-icons/ArrowLeftIcon.d.ts.map +1 -0
- package/dist/src/components/icons/svg-icons/ArrowLeftIcon.js +3 -0
- package/dist/src/components/icons/svg-icons/ArrowLeftIcon.tsx +18 -0
- package/dist/src/components/icons/svg-icons/ArrowRightIcon.d.ts +4 -0
- package/dist/src/components/icons/svg-icons/ArrowRightIcon.d.ts.map +1 -0
- package/dist/src/components/icons/svg-icons/ArrowRightIcon.js +3 -0
- package/dist/src/components/icons/svg-icons/ArrowRightIcon.tsx +18 -0
- package/dist/src/components/icons/svg-icons/AudioIcon.d.ts +4 -0
- package/dist/src/components/icons/svg-icons/AudioIcon.d.ts.map +1 -0
- package/dist/src/components/icons/svg-icons/AudioIcon.js +4 -0
- package/dist/src/components/icons/svg-icons/AudioIcon.tsx +22 -0
- package/dist/src/components/icons/svg-icons/BackwardIcon.d.ts +4 -0
- package/dist/src/components/icons/svg-icons/BackwardIcon.d.ts.map +1 -0
- package/dist/src/components/icons/svg-icons/BackwardIcon.js +3 -0
- package/dist/src/components/icons/svg-icons/BackwardIcon.tsx +12 -0
- package/dist/src/components/icons/svg-icons/CameraIcon.d.ts +4 -0
- package/dist/src/components/icons/svg-icons/CameraIcon.d.ts.map +1 -0
- package/dist/src/components/icons/svg-icons/CameraIcon.js +4 -0
- package/dist/src/components/icons/svg-icons/CameraIcon.tsx +19 -0
- package/dist/src/components/icons/svg-icons/CheckIcon.d.ts +4 -0
- package/dist/src/components/icons/svg-icons/CheckIcon.d.ts.map +1 -0
- package/dist/src/components/icons/svg-icons/CheckIcon.js +4 -0
- package/dist/src/components/icons/svg-icons/CheckIcon.tsx +19 -0
- package/dist/src/components/icons/svg-icons/EnablePiPIcon.d.ts +4 -0
- package/dist/src/components/icons/svg-icons/EnablePiPIcon.d.ts.map +1 -0
- package/dist/src/components/icons/svg-icons/EnablePiPIcon.js +5 -0
- package/dist/src/components/icons/svg-icons/EnablePiPIcon.tsx +17 -0
- package/dist/src/components/icons/svg-icons/ForwardIcon.d.ts +4 -0
- package/dist/src/components/icons/svg-icons/ForwardIcon.d.ts.map +1 -0
- package/dist/src/components/icons/svg-icons/ForwardIcon.js +3 -0
- package/dist/src/components/icons/svg-icons/ForwardIcon.tsx +12 -0
- package/dist/src/components/icons/svg-icons/FullscreenEnterIcon.d.ts +4 -0
- package/dist/src/components/icons/svg-icons/FullscreenEnterIcon.d.ts.map +1 -0
- package/dist/src/components/icons/svg-icons/FullscreenEnterIcon.js +3 -0
- package/dist/src/components/icons/svg-icons/FullscreenEnterIcon.tsx +23 -0
- package/dist/src/components/icons/svg-icons/FullscreenExitIcon.d.ts +4 -0
- package/dist/src/components/icons/svg-icons/FullscreenExitIcon.d.ts.map +1 -0
- package/dist/src/components/icons/svg-icons/FullscreenExitIcon.js +3 -0
- package/dist/src/components/icons/svg-icons/FullscreenExitIcon.tsx +23 -0
- package/dist/src/components/icons/svg-icons/LoadingIcon.d.ts +4 -0
- package/dist/src/components/icons/svg-icons/LoadingIcon.d.ts.map +1 -0
- package/dist/src/components/icons/svg-icons/LoadingIcon.js +3 -0
- package/dist/src/components/icons/svg-icons/LoadingIcon.tsx +32 -0
- package/dist/src/components/icons/svg-icons/PauseIcon.d.ts +4 -0
- package/dist/src/components/icons/svg-icons/PauseIcon.d.ts.map +1 -0
- package/dist/src/components/icons/svg-icons/PauseIcon.js +3 -0
- package/dist/src/components/icons/svg-icons/PauseIcon.tsx +23 -0
- package/dist/src/components/icons/svg-icons/PlayIcon.d.ts +4 -0
- package/dist/src/components/icons/svg-icons/PlayIcon.d.ts.map +1 -0
- package/dist/src/components/icons/svg-icons/PlayIcon.js +3 -0
- package/dist/src/components/icons/svg-icons/PlayIcon.tsx +21 -0
- package/dist/src/components/icons/svg-icons/PlaybackSpeedIcon.d.ts +4 -0
- package/dist/src/components/icons/svg-icons/PlaybackSpeedIcon.d.ts.map +1 -0
- package/dist/src/components/icons/svg-icons/PlaybackSpeedIcon.js +3 -0
- package/dist/src/components/icons/svg-icons/PlaybackSpeedIcon.tsx +23 -0
- package/dist/src/components/icons/svg-icons/QualityIcon.d.ts +4 -0
- package/dist/src/components/icons/svg-icons/QualityIcon.d.ts.map +1 -0
- package/dist/src/components/icons/svg-icons/QualityIcon.js +3 -0
- package/dist/src/components/icons/svg-icons/QualityIcon.tsx +21 -0
- package/dist/src/components/icons/svg-icons/SettingsIcon.d.ts +4 -0
- package/dist/src/components/icons/svg-icons/SettingsIcon.d.ts.map +1 -0
- package/dist/src/components/icons/svg-icons/SettingsIcon.js +3 -0
- package/dist/src/components/icons/svg-icons/SettingsIcon.tsx +12 -0
- package/dist/src/components/icons/svg-icons/SliderIcon.d.ts +4 -0
- package/dist/src/components/icons/svg-icons/SliderIcon.d.ts.map +1 -0
- package/dist/src/components/icons/svg-icons/SliderIcon.js +3 -0
- package/dist/src/components/icons/svg-icons/SliderIcon.tsx +21 -0
- package/dist/src/components/icons/svg-icons/SubtitleIcon.d.ts +4 -0
- package/dist/src/components/icons/svg-icons/SubtitleIcon.d.ts.map +1 -0
- package/dist/src/components/icons/svg-icons/SubtitleIcon.js +3 -0
- package/dist/src/components/icons/svg-icons/SubtitleIcon.tsx +21 -0
- package/dist/src/components/icons/svg-icons/SubtitleOffIcon.d.ts +4 -0
- package/dist/src/components/icons/svg-icons/SubtitleOffIcon.d.ts.map +1 -0
- package/dist/src/components/icons/svg-icons/SubtitleOffIcon.js +3 -0
- package/dist/src/components/icons/svg-icons/SubtitleOffIcon.tsx +25 -0
- package/dist/src/components/icons/svg-icons/UnPiPIcon.d.ts +4 -0
- package/dist/src/components/icons/svg-icons/UnPiPIcon.d.ts.map +1 -0
- package/dist/src/components/icons/svg-icons/UnPiPIcon.js +5 -0
- package/dist/src/components/icons/svg-icons/UnPiPIcon.tsx +17 -0
- package/dist/src/components/icons/svg-icons/VolumeMutedIcon.d.ts +4 -0
- package/dist/src/components/icons/svg-icons/VolumeMutedIcon.d.ts.map +1 -0
- package/dist/src/components/icons/svg-icons/VolumeMutedIcon.js +3 -0
- package/dist/src/components/icons/svg-icons/VolumeMutedIcon.tsx +16 -0
- package/dist/src/components/icons/svg-icons/VolumeOneIcon.d.ts +4 -0
- package/dist/src/components/icons/svg-icons/VolumeOneIcon.d.ts.map +1 -0
- package/dist/src/components/icons/svg-icons/VolumeOneIcon.js +3 -0
- package/dist/src/components/icons/svg-icons/VolumeOneIcon.tsx +22 -0
- package/dist/src/components/icons/svg-icons/VolumeThreeIcon.d.ts +4 -0
- package/dist/src/components/icons/svg-icons/VolumeThreeIcon.d.ts.map +1 -0
- package/dist/src/components/icons/svg-icons/VolumeThreeIcon.js +3 -0
- package/dist/src/components/icons/svg-icons/VolumeThreeIcon.tsx +16 -0
- package/dist/src/components/icons/svg-icons/VolumeTwoIcon.d.ts +4 -0
- package/dist/src/components/icons/svg-icons/VolumeTwoIcon.d.ts.map +1 -0
- package/dist/src/components/icons/svg-icons/VolumeTwoIcon.js +3 -0
- package/dist/src/components/icons/svg-icons/VolumeTwoIcon.tsx +16 -0
- package/dist/src/components/legacy.d.ts +13 -0
- package/dist/src/components/legacy.d.ts.map +1 -0
- package/dist/src/components/legacy.js +52 -0
- package/dist/src/components/legacy.tsx +93 -0
- package/dist/src/components/media-metadata-display.d.ts +11 -0
- package/dist/src/components/media-metadata-display.d.ts.map +1 -0
- package/dist/src/components/media-metadata-display.js +20 -0
- package/dist/src/components/media-metadata-display.tsx +100 -0
- package/dist/src/components/media-player-audio.d.ts +9 -0
- package/dist/src/components/media-player-audio.d.ts.map +1 -0
- package/dist/src/components/media-player-audio.js +18 -0
- package/dist/src/components/media-player-audio.tsx +39 -0
- package/dist/src/components/media-player-controls.d.ts +23 -0
- package/dist/src/components/media-player-controls.d.ts.map +1 -0
- package/dist/src/components/media-player-controls.js +150 -0
- package/dist/src/components/media-player-controls.tsx +226 -0
- package/dist/src/components/media-player-error.d.ts +16 -0
- package/dist/src/components/media-player-error.d.ts.map +1 -0
- package/dist/src/components/media-player-error.js +85 -0
- package/dist/src/components/media-player-error.tsx +163 -0
- package/dist/src/components/media-player-fullscreen.d.ts +12 -0
- package/dist/src/components/media-player-fullscreen.d.ts.map +1 -0
- package/dist/src/components/media-player-fullscreen.js +68 -0
- package/dist/src/components/media-player-fullscreen.tsx +109 -0
- package/dist/src/components/media-player-hls.d.ts +23 -0
- package/dist/src/components/media-player-hls.d.ts.map +1 -0
- package/dist/src/components/media-player-hls.js +20 -0
- package/dist/src/components/media-player-hls.tsx +111 -0
- package/dist/src/components/media-player-loading.d.ts +12 -0
- package/dist/src/components/media-player-loading.d.ts.map +1 -0
- package/dist/src/components/media-player-loading.js +53 -0
- package/dist/src/components/media-player-loading.tsx +76 -0
- package/dist/src/components/media-player-play.d.ts +11 -0
- package/dist/src/components/media-player-play.d.ts.map +1 -0
- package/dist/src/components/media-player-play.js +44 -0
- package/dist/src/components/media-player-play.tsx +75 -0
- package/dist/src/components/media-player-root.d.ts +28 -0
- package/dist/src/components/media-player-root.d.ts.map +1 -0
- package/dist/src/components/media-player-root.js +243 -0
- package/dist/src/components/media-player-root.tsx +340 -0
- package/dist/src/components/media-player-seek.d.ts +15 -0
- package/dist/src/components/media-player-seek.d.ts.map +1 -0
- package/dist/src/components/media-player-seek.js +92 -0
- package/dist/src/components/media-player-seek.tsx +168 -0
- package/dist/src/components/media-player-time.d.ts +12 -0
- package/dist/src/components/media-player-time.d.ts.map +1 -0
- package/dist/src/components/media-player-time.js +57 -0
- package/dist/src/components/media-player-time.tsx +99 -0
- package/dist/src/components/media-player-tooltip.d.ts +13 -0
- package/dist/src/components/media-player-tooltip.d.ts.map +1 -0
- package/dist/src/components/media-player-tooltip.js +14 -0
- package/dist/src/components/media-player-tooltip.tsx +58 -0
- package/dist/src/components/media-player-video.d.ts +9 -0
- package/dist/src/components/media-player-video.d.ts.map +1 -0
- package/dist/src/components/media-player-video.js +18 -0
- package/dist/src/components/media-player-video.tsx +39 -0
- package/dist/src/components/media-player-volume.d.ts +13 -0
- package/dist/src/components/media-player-volume.d.ts.map +1 -0
- package/dist/src/components/media-player-volume.js +88 -0
- package/dist/src/components/media-player-volume.tsx +155 -0
- package/dist/src/components/media-player.d.ts +3 -0
- package/dist/src/components/media-player.d.ts.map +1 -0
- package/dist/src/components/media-player.js +67 -0
- package/dist/src/components/media-player.tsx +257 -0
- package/dist/src/components/media-suspense.d.ts +78 -0
- package/dist/src/components/media-suspense.d.ts.map +1 -0
- package/dist/src/components/media-suspense.js +173 -0
- package/dist/src/components/media-suspense.tsx +362 -0
- package/dist/src/components/player-settings-form.d.ts +8 -0
- package/dist/src/components/player-settings-form.d.ts.map +1 -0
- package/dist/src/components/player-settings-form.js +46 -0
- package/dist/src/components/player-settings-form.tsx +163 -0
- package/dist/src/components/react-player-wrapper.d.ts +64 -0
- package/dist/src/components/react-player-wrapper.d.ts.map +1 -0
- package/dist/src/components/react-player-wrapper.js +163 -0
- package/dist/src/components/react-player-wrapper.tsx +651 -0
- package/dist/src/components/simple-video-player.d.ts +9 -0
- package/dist/src/components/simple-video-player.d.ts.map +1 -0
- package/dist/src/components/simple-video-player.js +41 -0
- package/dist/src/components/simple-video-player.tsx +60 -0
- package/dist/src/components/ui/enhanced-seek-bar.d.ts +3 -0
- package/dist/src/components/ui/enhanced-seek-bar.d.ts.map +1 -0
- package/dist/src/components/ui/enhanced-seek-bar.js +112 -0
- package/dist/src/components/ui/enhanced-seek-bar.tsx +235 -0
- package/dist/src/components/ui/fullscreen-button.d.ts +3 -0
- package/dist/src/components/ui/fullscreen-button.d.ts.map +1 -0
- package/dist/src/components/ui/fullscreen-button.js +21 -0
- package/dist/src/components/ui/fullscreen-button.tsx +60 -0
- package/dist/src/components/ui/media-resource-preloader.d.ts +21 -0
- package/dist/src/components/ui/media-resource-preloader.d.ts.map +1 -0
- package/dist/src/components/ui/media-resource-preloader.js +295 -0
- package/dist/src/components/ui/media-resource-preloader.tsx +395 -0
- package/dist/src/components/ui/play-button.d.ts +3 -0
- package/dist/src/components/ui/play-button.d.ts.map +1 -0
- package/dist/src/components/ui/play-button.js +26 -0
- package/dist/src/components/ui/play-button.tsx +107 -0
- package/dist/src/components/ui/seek-bar.d.ts +3 -0
- package/dist/src/components/ui/seek-bar.d.ts.map +1 -0
- package/dist/src/components/ui/seek-bar.js +54 -0
- package/dist/src/components/ui/seek-bar.tsx +161 -0
- package/dist/src/components/ui/time-display.d.ts +3 -0
- package/dist/src/components/ui/time-display.d.ts.map +1 -0
- package/dist/src/components/ui/time-display.js +18 -0
- package/dist/src/components/ui/time-display.tsx +40 -0
- package/dist/src/components/ui/volume-control.d.ts +3 -0
- package/dist/src/components/ui/volume-control.d.ts.map +1 -0
- package/dist/src/components/ui/volume-control.js +71 -0
- package/dist/src/components/ui/volume-control.tsx +143 -0
- package/dist/src/components/unified/base-media-player.d.ts +18 -0
- package/dist/src/components/unified/base-media-player.d.ts.map +1 -0
- package/dist/src/components/unified/base-media-player.js +104 -0
- package/dist/src/components/unified/base-media-player.tsx +246 -0
- package/dist/src/components/unified/media-player.d.ts +37 -0
- package/dist/src/components/unified/media-player.d.ts.map +1 -0
- package/dist/src/components/unified/media-player.js +41 -0
- package/dist/src/components/unified/media-player.tsx +75 -0
- package/dist/src/components/variants/minimal/AccessibleMinimalPlayer.d.ts +42 -0
- package/dist/src/components/variants/minimal/AccessibleMinimalPlayer.d.ts.map +1 -0
- package/dist/src/components/variants/minimal/AccessibleMinimalPlayer.js +322 -0
- package/dist/src/components/variants/minimal/AccessibleMinimalPlayer.tsx +561 -0
- package/dist/src/components/variants/minimal/EnhancedMinimalMediaPlayer.d.ts +44 -0
- package/dist/src/components/variants/minimal/EnhancedMinimalMediaPlayer.d.ts.map +1 -0
- package/dist/src/components/variants/minimal/EnhancedMinimalMediaPlayer.js +280 -0
- package/dist/src/components/variants/minimal/EnhancedMinimalMediaPlayer.tsx +552 -0
- package/dist/src/components/variants/minimal/MinimalControls.d.ts +19 -0
- package/dist/src/components/variants/minimal/MinimalControls.d.ts.map +1 -0
- package/dist/src/components/variants/minimal/MinimalControls.js +19 -0
- package/dist/src/components/variants/minimal/MinimalControls.tsx +142 -0
- package/dist/src/components/variants/minimal/MinimalLoading.d.ts +10 -0
- package/dist/src/components/variants/minimal/MinimalLoading.d.ts.map +1 -0
- package/dist/src/components/variants/minimal/MinimalLoading.js +6 -0
- package/dist/src/components/variants/minimal/MinimalLoading.tsx +32 -0
- package/dist/src/components/variants/minimal/MinimalMediaPlayer.d.ts +38 -0
- package/dist/src/components/variants/minimal/MinimalMediaPlayer.d.ts.map +1 -0
- package/dist/src/components/variants/minimal/MinimalMediaPlayer.js +135 -0
- package/dist/src/components/variants/minimal/MinimalMediaPlayer.tsx +315 -0
- package/dist/src/components/variants/minimal/MinimalOverlay.d.ts +11 -0
- package/dist/src/components/variants/minimal/MinimalOverlay.d.ts.map +1 -0
- package/dist/src/components/variants/minimal/MinimalOverlay.js +15 -0
- package/dist/src/components/variants/minimal/MinimalOverlay.tsx +64 -0
- package/dist/src/components/variants/minimal/MinimalPlayButton.d.ts +9 -0
- package/dist/src/components/variants/minimal/MinimalPlayButton.d.ts.map +1 -0
- package/dist/src/components/variants/minimal/MinimalPlayButton.js +29 -0
- package/dist/src/components/variants/minimal/MinimalPlayButton.tsx +65 -0
- package/dist/src/components/variants/minimal/MinimalSeekBar.d.ts +7 -0
- package/dist/src/components/variants/minimal/MinimalSeekBar.d.ts.map +1 -0
- package/dist/src/components/variants/minimal/MinimalSeekBar.js +73 -0
- package/dist/src/components/variants/minimal/MinimalSeekBar.tsx +150 -0
- package/dist/src/components/variants/minimal/MinimalVolumeControl.d.ts +7 -0
- package/dist/src/components/variants/minimal/MinimalVolumeControl.d.ts.map +1 -0
- package/dist/src/components/variants/minimal/MinimalVolumeControl.js +29 -0
- package/dist/src/components/variants/minimal/MinimalVolumeControl.tsx +80 -0
- package/dist/src/components/variants/minimal/SimpleMinimalPlayer.d.ts +22 -0
- package/dist/src/components/variants/minimal/SimpleMinimalPlayer.d.ts.map +1 -0
- package/dist/src/components/variants/minimal/SimpleMinimalPlayer.js +51 -0
- package/dist/src/components/variants/minimal/SimpleMinimalPlayer.tsx +209 -0
- package/dist/src/components/variants/minimal/components/CenterPlayButton.d.ts +7 -0
- package/dist/src/components/variants/minimal/components/CenterPlayButton.d.ts.map +1 -0
- package/dist/src/components/variants/minimal/components/CenterPlayButton.js +8 -0
- package/dist/src/components/variants/minimal/components/CenterPlayButton.tsx +22 -0
- package/dist/src/components/variants/minimal/components/ControlBar.d.ts +43 -0
- package/dist/src/components/variants/minimal/components/ControlBar.d.ts.map +1 -0
- package/dist/src/components/variants/minimal/components/ControlBar.js +10 -0
- package/dist/src/components/variants/minimal/components/ControlBar.tsx +146 -0
- package/dist/src/components/variants/minimal/components/EnhancedSettingsMenu.d.ts +24 -0
- package/dist/src/components/variants/minimal/components/EnhancedSettingsMenu.d.ts.map +1 -0
- package/dist/src/components/variants/minimal/components/EnhancedSettingsMenu.js +68 -0
- package/dist/src/components/variants/minimal/components/EnhancedSettingsMenu.tsx +361 -0
- package/dist/src/components/variants/minimal/components/PlaybackControls.d.ts +9 -0
- package/dist/src/components/variants/minimal/components/PlaybackControls.d.ts.map +1 -0
- package/dist/src/components/variants/minimal/components/PlaybackControls.js +9 -0
- package/dist/src/components/variants/minimal/components/PlaybackControls.tsx +51 -0
- package/dist/src/components/variants/minimal/components/RightControls.d.ts +25 -0
- package/dist/src/components/variants/minimal/components/RightControls.d.ts.map +1 -0
- package/dist/src/components/variants/minimal/components/RightControls.js +40 -0
- package/dist/src/components/variants/minimal/components/RightControls.tsx +173 -0
- package/dist/src/components/variants/minimal/components/SeekBar.d.ts +11 -0
- package/dist/src/components/variants/minimal/components/SeekBar.d.ts.map +1 -0
- package/dist/src/components/variants/minimal/components/SeekBar.js +43 -0
- package/dist/src/components/variants/minimal/components/SeekBar.tsx +131 -0
- package/dist/src/components/variants/minimal/components/SettingsDropdown.d.ts +9 -0
- package/dist/src/components/variants/minimal/components/SettingsDropdown.d.ts.map +1 -0
- package/dist/src/components/variants/minimal/components/SettingsDropdown.js +18 -0
- package/dist/src/components/variants/minimal/components/SettingsDropdown.tsx +70 -0
- package/dist/src/components/variants/minimal/components/SubtitleDisplay.d.ts +7 -0
- package/dist/src/components/variants/minimal/components/SubtitleDisplay.d.ts.map +1 -0
- package/dist/src/components/variants/minimal/components/SubtitleDisplay.js +6 -0
- package/dist/src/components/variants/minimal/components/SubtitleDisplay.tsx +21 -0
- package/dist/src/components/variants/minimal/components/TimeDisplay.d.ts +7 -0
- package/dist/src/components/variants/minimal/components/TimeDisplay.d.ts.map +1 -0
- package/dist/src/components/variants/minimal/components/TimeDisplay.js +5 -0
- package/dist/src/components/variants/minimal/components/TimeDisplay.tsx +18 -0
- package/dist/src/components/variants/minimal/components/VideoElement.d.ts +13 -0
- package/dist/src/components/variants/minimal/components/VideoElement.d.ts.map +1 -0
- package/dist/src/components/variants/minimal/components/VideoElement.js +4 -0
- package/dist/src/components/variants/minimal/components/VideoElement.tsx +40 -0
- package/dist/src/components/variants/minimal/components/VolumeControl.d.ts +13 -0
- package/dist/src/components/variants/minimal/components/VolumeControl.d.ts.map +1 -0
- package/dist/src/components/variants/minimal/components/VolumeControl.js +99 -0
- package/dist/src/components/variants/minimal/components/VolumeControl.tsx +217 -0
- package/dist/src/components/variants/minimal/index.d.ts +17 -0
- package/dist/src/components/variants/minimal/index.d.ts.map +1 -0
- package/dist/src/components/variants/minimal/index.js +8 -0
- package/dist/src/components/variants/minimal/index.ts +23 -0
- package/dist/src/components/video-player.d.ts +3 -0
- package/dist/src/components/video-player.d.ts.map +1 -0
- package/dist/src/components/video-player.js +38 -0
- package/dist/src/components/video-player.tsx +100 -0
- package/dist/src/context/error-handling.d.ts +72 -0
- package/dist/src/context/error-handling.d.ts.map +1 -0
- package/dist/src/context/error-handling.js +300 -0
- package/dist/src/context/error-handling.ts +394 -0
- package/dist/src/context/media-context.d.ts +104 -0
- package/dist/src/context/media-context.d.ts.map +1 -0
- package/dist/src/context/media-context.js +121 -0
- package/dist/src/context/media-context.tsx +208 -0
- package/dist/src/context/media-provider.d.ts +26 -0
- package/dist/src/context/media-provider.d.ts.map +1 -0
- package/dist/src/context/media-provider.js +164 -0
- package/dist/src/context/media-provider.tsx +265 -0
- package/dist/src/context/media-store.d.ts +33 -0
- package/dist/src/context/media-store.d.ts.map +1 -0
- package/dist/src/context/media-store.js +273 -0
- package/dist/src/context/media-store.ts +379 -0
- package/dist/src/context/persistence.d.ts +83 -0
- package/dist/src/context/persistence.d.ts.map +1 -0
- package/dist/src/context/persistence.js +356 -0
- package/dist/src/context/persistence.ts +453 -0
- package/dist/src/core/events/event-system.d.ts +170 -0
- package/dist/src/core/events/event-system.d.ts.map +1 -0
- package/dist/src/core/events/event-system.js +288 -0
- package/dist/src/core/events/event-system.ts +442 -0
- package/dist/src/core/events/hooks.d.ts +33 -0
- package/dist/src/core/events/hooks.d.ts.map +1 -0
- package/dist/src/core/events/hooks.js +198 -0
- package/dist/src/core/events/hooks.ts +302 -0
- package/dist/src/core/events/index.d.ts +6 -0
- package/dist/src/core/events/index.d.ts.map +1 -0
- package/dist/src/core/events/index.js +7 -0
- package/dist/src/core/events/index.ts +22 -0
- package/dist/src/core/events/middleware.d.ts +39 -0
- package/dist/src/core/events/middleware.d.ts.map +1 -0
- package/dist/src/core/events/middleware.js +219 -0
- package/dist/src/core/events/middleware.ts +269 -0
- package/dist/src/core/index.d.ts +8 -0
- package/dist/src/core/index.d.ts.map +1 -0
- package/dist/src/core/index.js +15 -0
- package/dist/src/core/index.ts +22 -0
- package/dist/src/core/optimization/bundle-optimizer.d.ts +44 -0
- package/dist/src/core/optimization/bundle-optimizer.d.ts.map +1 -0
- package/dist/src/core/optimization/bundle-optimizer.js +217 -0
- package/dist/src/core/optimization/bundle-optimizer.tsx +308 -0
- package/dist/src/core/performance/cicd.d.ts +8 -0
- package/dist/src/core/performance/cicd.d.ts.map +1 -0
- package/dist/src/core/performance/cicd.js +83 -0
- package/dist/src/core/performance/cicd.ts +96 -0
- package/dist/src/core/performance/index.d.ts +10 -0
- package/dist/src/core/performance/index.d.ts.map +1 -0
- package/dist/src/core/performance/index.js +14 -0
- package/dist/src/core/performance/index.ts +38 -0
- package/dist/src/core/performance/media-loading-optimizer.d.ts +105 -0
- package/dist/src/core/performance/media-loading-optimizer.d.ts.map +1 -0
- package/dist/src/core/performance/media-loading-optimizer.js +404 -0
- package/dist/src/core/performance/media-loading-optimizer.ts +538 -0
- package/dist/src/core/performance/performance-budgets.d.ts +68 -0
- package/dist/src/core/performance/performance-budgets.d.ts.map +1 -0
- package/dist/src/core/performance/performance-budgets.js +326 -0
- package/dist/src/core/performance/performance-budgets.ts +432 -0
- package/dist/src/core/performance/performance-monitor.d.ts +95 -0
- package/dist/src/core/performance/performance-monitor.d.ts.map +1 -0
- package/dist/src/core/performance/performance-monitor.js +297 -0
- package/dist/src/core/performance/performance-monitor.tsx +476 -0
- package/dist/src/core/performance/performance-testing.d.ts +69 -0
- package/dist/src/core/performance/performance-testing.d.ts.map +1 -0
- package/dist/src/core/performance/performance-testing.js +314 -0
- package/dist/src/core/performance/performance-testing.ts +459 -0
- package/dist/src/core/plugins/base-plugin.d.ts +52 -0
- package/dist/src/core/plugins/base-plugin.d.ts.map +1 -0
- package/dist/src/core/plugins/base-plugin.js +151 -0
- package/dist/src/core/plugins/base-plugin.ts +224 -0
- package/dist/src/core/plugins/enhanced-plugin-system.d.ts +160 -0
- package/dist/src/core/plugins/enhanced-plugin-system.d.ts.map +1 -0
- package/dist/src/core/plugins/enhanced-plugin-system.js +305 -0
- package/dist/src/core/plugins/enhanced-plugin-system.ts +411 -0
- package/dist/src/core/plugins/examples/analytics-plugin.d.ts +30 -0
- package/dist/src/core/plugins/examples/analytics-plugin.d.ts.map +1 -0
- package/dist/src/core/plugins/examples/analytics-plugin.js +191 -0
- package/dist/src/core/plugins/examples/analytics-plugin.ts +242 -0
- package/dist/src/core/plugins/index.d.ts +8 -0
- package/dist/src/core/plugins/index.d.ts.map +1 -0
- package/dist/src/core/plugins/index.js +9 -0
- package/dist/src/core/plugins/index.ts +39 -0
- package/dist/src/core/plugins/registry.d.ts +31 -0
- package/dist/src/core/plugins/registry.d.ts.map +1 -0
- package/dist/src/core/plugins/registry.js +261 -0
- package/dist/src/core/plugins/registry.ts +327 -0
- package/dist/src/core/plugins/types.d.ts +101 -0
- package/dist/src/core/plugins/types.d.ts.map +1 -0
- package/dist/src/core/plugins/types.js +31 -0
- package/dist/src/core/plugins/types.ts +159 -0
- package/dist/src/core/plugins/utils.d.ts +38 -0
- package/dist/src/core/plugins/utils.d.ts.map +1 -0
- package/dist/src/core/plugins/utils.js +274 -0
- package/dist/src/core/plugins/utils.ts +316 -0
- package/dist/src/core/progressive-loading.d.ts +88 -0
- package/dist/src/core/progressive-loading.d.ts.map +1 -0
- package/dist/src/core/progressive-loading.js +239 -0
- package/dist/src/core/progressive-loading.tsx +322 -0
- package/dist/src/core/providers/enhanced-hls-provider.d.ts +50 -0
- package/dist/src/core/providers/enhanced-hls-provider.d.ts.map +1 -0
- package/dist/src/core/providers/enhanced-hls-provider.js +273 -0
- package/dist/src/core/providers/enhanced-hls-provider.ts +339 -0
- package/dist/src/core/providers/service-provider.d.ts +49 -0
- package/dist/src/core/providers/service-provider.d.ts.map +1 -0
- package/dist/src/core/providers/service-provider.js +105 -0
- package/dist/src/core/providers/service-provider.tsx +168 -0
- package/dist/src/core/utils.d.ts +25 -0
- package/dist/src/core/utils.d.ts.map +1 -0
- package/dist/src/core/utils.js +21 -0
- package/dist/src/core/utils.tsx +38 -0
- package/dist/src/features/media-session/media-session-manager.d.ts +132 -0
- package/dist/src/features/media-session/media-session-manager.d.ts.map +1 -0
- package/dist/src/features/media-session/media-session-manager.js +331 -0
- package/dist/src/features/media-session/media-session-manager.ts +429 -0
- package/dist/src/features/picture-in-picture/pip-manager.d.ts +94 -0
- package/dist/src/features/picture-in-picture/pip-manager.d.ts.map +1 -0
- package/dist/src/features/picture-in-picture/pip-manager.js +353 -0
- package/dist/src/features/picture-in-picture/pip-manager.ts +429 -0
- package/dist/src/features/playlist/playlist-manager.d.ts +208 -0
- package/dist/src/features/playlist/playlist-manager.d.ts.map +1 -0
- package/dist/src/features/playlist/playlist-manager.js +475 -0
- package/dist/src/features/playlist/playlist-manager.ts +606 -0
- package/dist/src/features/subtitles/subtitle-manager.d.ts +136 -0
- package/dist/src/features/subtitles/subtitle-manager.d.ts.map +1 -0
- package/dist/src/features/subtitles/subtitle-manager.js +335 -0
- package/dist/src/features/subtitles/subtitle-manager.ts +441 -0
- package/dist/src/features/subtitles/subtitle-parser.d.ts +60 -0
- package/dist/src/features/subtitles/subtitle-parser.d.ts.map +1 -0
- package/dist/src/features/subtitles/subtitle-parser.js +217 -0
- package/dist/src/features/subtitles/subtitle-parser.ts +280 -0
- package/dist/src/features/thumbnails/thumbnail-generator.d.ts +136 -0
- package/dist/src/features/thumbnails/thumbnail-generator.d.ts.map +1 -0
- package/dist/src/features/thumbnails/thumbnail-generator.js +388 -0
- package/dist/src/features/thumbnails/thumbnail-generator.ts +519 -0
- package/dist/src/hooks/accessibility/index.d.ts +5 -0
- package/dist/src/hooks/accessibility/index.d.ts.map +1 -0
- package/dist/src/hooks/accessibility/index.js +4 -0
- package/dist/src/hooks/accessibility/index.ts +27 -0
- package/dist/src/hooks/accessibility/use-accessibility-preferences.d.ts +14 -0
- package/dist/src/hooks/accessibility/use-accessibility-preferences.d.ts.map +1 -0
- package/dist/src/hooks/accessibility/use-accessibility-preferences.js +156 -0
- package/dist/src/hooks/accessibility/use-accessibility-preferences.ts +188 -0
- package/dist/src/hooks/accessibility/use-focus-management.d.ts +31 -0
- package/dist/src/hooks/accessibility/use-focus-management.d.ts.map +1 -0
- package/dist/src/hooks/accessibility/use-focus-management.js +142 -0
- package/dist/src/hooks/accessibility/use-focus-management.ts +176 -0
- package/dist/src/hooks/accessibility/use-keyboard-shortcuts.d.ts +38 -0
- package/dist/src/hooks/accessibility/use-keyboard-shortcuts.d.ts.map +1 -0
- package/dist/src/hooks/accessibility/use-keyboard-shortcuts.js +101 -0
- package/dist/src/hooks/accessibility/use-keyboard-shortcuts.ts +144 -0
- package/dist/src/hooks/accessibility/use-screen-reader.d.ts +22 -0
- package/dist/src/hooks/accessibility/use-screen-reader.d.ts.map +1 -0
- package/dist/src/hooks/accessibility/use-screen-reader.js +148 -0
- package/dist/src/hooks/accessibility/use-screen-reader.ts +182 -0
- package/dist/src/hooks/core/index.d.ts +18 -0
- package/dist/src/hooks/core/index.d.ts.map +1 -0
- package/dist/src/hooks/core/index.js +19 -0
- package/dist/src/hooks/core/index.ts +47 -0
- package/dist/src/hooks/legacy.d.ts +18 -0
- package/dist/src/hooks/legacy.d.ts.map +1 -0
- package/dist/src/hooks/legacy.js +17 -0
- package/dist/src/hooks/legacy.ts +27 -0
- package/dist/src/hooks/use-enhanced-media-player.d.ts +88 -0
- package/dist/src/hooks/use-enhanced-media-player.d.ts.map +1 -0
- package/dist/src/hooks/use-enhanced-media-player.js +395 -0
- package/dist/src/hooks/use-enhanced-media-player.ts +468 -0
- package/dist/src/hooks/use-intelligent-preloading.d.ts +66 -0
- package/dist/src/hooks/use-intelligent-preloading.d.ts.map +1 -0
- package/dist/src/hooks/use-intelligent-preloading.js +258 -0
- package/dist/src/hooks/use-intelligent-preloading.ts +358 -0
- package/dist/src/hooks/use-keyboard-controls.d.ts +13 -0
- package/dist/src/hooks/use-keyboard-controls.d.ts.map +1 -0
- package/dist/src/hooks/use-keyboard-controls.js +83 -0
- package/dist/src/hooks/use-keyboard-controls.ts +115 -0
- package/dist/src/hooks/use-media-actions.d.ts +62 -0
- package/dist/src/hooks/use-media-actions.d.ts.map +1 -0
- package/dist/src/hooks/use-media-actions.js +121 -0
- package/dist/src/hooks/use-media-actions.ts +175 -0
- package/dist/src/hooks/use-media-metadata.d.ts +11 -0
- package/dist/src/hooks/use-media-metadata.d.ts.map +1 -0
- package/dist/src/hooks/use-media-metadata.js +74 -0
- package/dist/src/hooks/use-media-metadata.ts +89 -0
- package/dist/src/hooks/use-media-optimistic.d.ts +36 -0
- package/dist/src/hooks/use-media-optimistic.d.ts.map +1 -0
- package/dist/src/hooks/use-media-optimistic.js +205 -0
- package/dist/src/hooks/use-media-optimistic.ts +270 -0
- package/dist/src/hooks/use-media-player.d.ts +31 -0
- package/dist/src/hooks/use-media-player.d.ts.map +1 -0
- package/dist/src/hooks/use-media-player.js +251 -0
- package/dist/src/hooks/use-media-player.ts +312 -0
- package/dist/src/hooks/use-media-state.d.ts +17 -0
- package/dist/src/hooks/use-media-state.d.ts.map +1 -0
- package/dist/src/hooks/use-media-state.js +162 -0
- package/dist/src/hooks/use-media-state.ts +190 -0
- package/dist/src/hooks/use-memory-optimization.d.ts +40 -0
- package/dist/src/hooks/use-memory-optimization.d.ts.map +1 -0
- package/dist/src/hooks/use-memory-optimization.js +288 -0
- package/dist/src/hooks/use-memory-optimization.ts +358 -0
- package/dist/src/hooks/use-optimistic-controls.d.ts +22 -0
- package/dist/src/hooks/use-optimistic-controls.d.ts.map +1 -0
- package/dist/src/hooks/use-optimistic-controls.js +60 -0
- package/dist/src/hooks/use-optimistic-controls.ts +92 -0
- package/dist/src/hooks/use-optimized-media.d.ts +46 -0
- package/dist/src/hooks/use-optimized-media.d.ts.map +1 -0
- package/dist/src/hooks/use-optimized-media.js +211 -0
- package/dist/src/hooks/use-optimized-media.ts +263 -0
- package/dist/src/hooks/use-touch-gestures.d.ts +47 -0
- package/dist/src/hooks/use-touch-gestures.d.ts.map +1 -0
- package/dist/src/hooks/use-touch-gestures.js +289 -0
- package/dist/src/hooks/use-touch-gestures.ts +417 -0
- package/dist/src/hooks/useEnhancedSubtitles.d.ts +39 -0
- package/dist/src/hooks/useEnhancedSubtitles.d.ts.map +1 -0
- package/dist/src/hooks/useEnhancedSubtitles.js +205 -0
- package/dist/src/hooks/useEnhancedSubtitles.ts +258 -0
- package/dist/src/hooks/useKeyboardShortcuts.d.ts +10 -0
- package/dist/src/hooks/useKeyboardShortcuts.d.ts.map +1 -0
- package/dist/src/hooks/useKeyboardShortcuts.js +59 -0
- package/dist/src/hooks/useKeyboardShortcuts.ts +74 -0
- package/dist/src/hooks/useMediaControls.d.ts +9 -0
- package/dist/src/hooks/useMediaControls.d.ts.map +1 -0
- package/dist/src/hooks/useMediaControls.js +44 -0
- package/dist/src/hooks/useMediaControls.ts +52 -0
- package/dist/src/hooks/useScreenshot.d.ts +4 -0
- package/dist/src/hooks/useScreenshot.d.ts.map +1 -0
- package/dist/src/hooks/useScreenshot.js +56 -0
- package/dist/src/hooks/useScreenshot.ts +57 -0
- package/dist/src/hooks/useSubtitles.d.ts +8 -0
- package/dist/src/hooks/useSubtitles.d.ts.map +1 -0
- package/dist/src/hooks/useSubtitles.js +73 -0
- package/dist/src/hooks/useSubtitles.ts +91 -0
- package/dist/src/hooks/useVideoPlayer.d.ts +32 -0
- package/dist/src/hooks/useVideoPlayer.d.ts.map +1 -0
- package/dist/src/hooks/useVideoPlayer.js +184 -0
- package/dist/src/hooks/useVideoPlayer.ts +232 -0
- package/dist/src/icons/components/FullscreenIcon.d.ts +3 -0
- package/dist/src/icons/components/FullscreenIcon.d.ts.map +1 -0
- package/dist/src/icons/components/FullscreenIcon.js +11 -0
- package/dist/src/icons/components/FullscreenIcon.tsx +37 -0
- package/dist/src/icons/components/SettingsIcon.d.ts +3 -0
- package/dist/src/icons/components/SettingsIcon.d.ts.map +1 -0
- package/dist/src/icons/components/SettingsIcon.js +11 -0
- package/dist/src/icons/components/SettingsIcon.tsx +38 -0
- package/dist/src/icons/components/animated/LoadingIcon.d.ts +3 -0
- package/dist/src/icons/components/animated/LoadingIcon.d.ts.map +1 -0
- package/dist/src/icons/components/animated/LoadingIcon.js +11 -0
- package/dist/src/icons/components/animated/LoadingIcon.tsx +43 -0
- package/dist/src/icons/components/animated/PlayPauseIcon.d.ts +7 -0
- package/dist/src/icons/components/animated/PlayPauseIcon.d.ts.map +1 -0
- package/dist/src/icons/components/animated/PlayPauseIcon.js +9 -0
- package/dist/src/icons/components/animated/PlayPauseIcon.tsx +50 -0
- package/dist/src/icons/components/media/PauseIcon.d.ts +3 -0
- package/dist/src/icons/components/media/PauseIcon.d.ts.map +1 -0
- package/dist/src/icons/components/media/PauseIcon.js +12 -0
- package/dist/src/icons/components/media/PauseIcon.tsx +39 -0
- package/dist/src/icons/components/media/PlayIcon.d.ts +3 -0
- package/dist/src/icons/components/media/PlayIcon.d.ts.map +1 -0
- package/dist/src/icons/components/media/PlayIcon.js +12 -0
- package/dist/src/icons/components/media/PlayIcon.tsx +38 -0
- package/dist/src/icons/components/volume/VolumeIcon.d.ts +3 -0
- package/dist/src/icons/components/volume/VolumeIcon.d.ts.map +1 -0
- package/dist/src/icons/components/volume/VolumeIcon.js +11 -0
- package/dist/src/icons/components/volume/VolumeIcon.tsx +39 -0
- package/dist/src/icons/components/volume/VolumeOffIcon.d.ts +3 -0
- package/dist/src/icons/components/volume/VolumeOffIcon.d.ts.map +1 -0
- package/dist/src/icons/components/volume/VolumeOffIcon.js +11 -0
- package/dist/src/icons/components/volume/VolumeOffIcon.tsx +39 -0
- package/dist/src/icons/index.d.ts +28 -0
- package/dist/src/icons/index.d.ts.map +1 -0
- package/dist/src/icons/index.js +45 -0
- package/dist/src/icons/index.ts +56 -0
- package/dist/src/icons/provider.d.ts +13 -0
- package/dist/src/icons/provider.d.ts.map +1 -0
- package/dist/src/icons/provider.js +37 -0
- package/dist/src/icons/provider.tsx +64 -0
- package/dist/src/icons/types.d.ts +18 -0
- package/dist/src/icons/types.d.ts.map +1 -0
- package/dist/src/icons/types.js +1 -0
- package/dist/src/icons/types.ts +40 -0
- package/dist/src/index-enhanced.d.ts +13 -0
- package/dist/src/index-enhanced.d.ts.map +1 -0
- package/dist/src/index-enhanced.js +16 -0
- package/dist/src/index-enhanced.ts +35 -0
- package/dist/src/index-legacy.d.ts +81 -0
- package/dist/src/index-legacy.d.ts.map +1 -0
- package/dist/src/index-legacy.js +97 -0
- package/dist/src/index-legacy.ts +326 -0
- package/dist/src/index.css +102 -0
- package/dist/src/index.d.ts +38 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js +90 -0
- package/dist/src/index.minimal.d.ts +2 -0
- package/dist/src/index.minimal.d.ts.map +1 -0
- package/dist/src/index.minimal.js +3 -0
- package/dist/src/index.minimal.ts +4 -0
- package/dist/src/index.ts +216 -0
- package/dist/src/lib/deprecation.d.ts +7 -0
- package/dist/src/lib/deprecation.d.ts.map +1 -0
- package/dist/src/lib/deprecation.js +31 -0
- package/dist/src/lib/deprecation.ts +51 -0
- package/dist/src/lib/format-time.d.ts +9 -0
- package/dist/src/lib/format-time.d.ts.map +1 -0
- package/dist/src/lib/format-time.js +32 -0
- package/dist/src/lib/format-time.ts +37 -0
- package/dist/src/lib/index.d.ts +3 -0
- package/dist/src/lib/index.d.ts.map +1 -0
- package/dist/src/lib/index.js +3 -0
- package/dist/src/lib/index.ts +3 -0
- package/dist/src/lib/utils.d.ts +3 -0
- package/dist/src/lib/utils.d.ts.map +1 -0
- package/dist/src/lib/utils.js +5 -0
- package/dist/src/lib/utils.ts +6 -0
- package/dist/src/styles/globals.css +462 -0
- package/dist/src/styles/minimal-player.css +589 -0
- package/dist/src/styles/pixel-art.css +46 -0
- package/dist/src/styles/videojs.css +100 -0
- package/dist/src/test/setup.d.ts +2 -0
- package/dist/src/test/setup.d.ts.map +1 -0
- package/dist/src/test/setup.js +65 -0
- package/dist/src/test/setup.ts +79 -0
- package/dist/src/types/events.d.ts +41 -0
- package/dist/src/types/events.d.ts.map +1 -0
- package/dist/src/types/events.js +2 -0
- package/dist/src/types/events.ts +47 -0
- package/dist/src/types/formats.d.ts +45 -0
- package/dist/src/types/formats.d.ts.map +1 -0
- package/dist/src/types/formats.js +63 -0
- package/dist/src/types/formats.ts +95 -0
- package/dist/src/types/index.d.ts +128 -0
- package/dist/src/types/index.d.ts.map +1 -0
- package/dist/src/types/index.js +4 -0
- package/dist/src/types/index.ts +190 -0
- package/dist/src/types/videojs-plugins.d.ts +14 -0
- package/package.json +7 -4
- package/src/adapters/videojs-adapter.d.ts +38 -0
- package/src/adapters/videojs-adapter.d.ts.map +1 -0
- package/src/adapters/videojs-adapter.js +350 -0
- package/src/components/AnimateLoading.d.ts +9 -0
- package/src/components/AnimateLoading.d.ts.map +1 -0
- package/src/components/AnimateLoading.js +41 -0
- package/src/components/LoadingState.d.ts +33 -0
- package/src/components/LoadingState.d.ts.map +1 -0
- package/src/components/LoadingState.js +111 -0
- package/src/components/accessibility/keyboard-help-overlay.d.ts +17 -0
- package/src/components/accessibility/keyboard-help-overlay.d.ts.map +1 -0
- package/src/components/accessibility/keyboard-help-overlay.js +90 -0
- package/src/components/audio-player.d.ts +3 -0
- package/src/components/audio-player.d.ts.map +1 -0
- package/src/components/audio-player.js +31 -0
- package/src/components/basic/index.d.ts +26 -0
- package/src/components/basic/index.d.ts.map +1 -0
- package/src/components/basic/index.js +29 -0
- package/src/components/enhanced/advanced-features.d.ts +45 -0
- package/src/components/enhanced/advanced-features.d.ts.map +1 -0
- package/src/components/enhanced/advanced-features.js +64 -0
- package/src/components/enhanced/debug-panel.d.ts +70 -0
- package/src/components/enhanced/debug-panel.d.ts.map +1 -0
- package/src/components/enhanced/debug-panel.js +94 -0
- package/src/components/enhanced/enhanced-controls.d.ts +50 -0
- package/src/components/enhanced/enhanced-controls.d.ts.map +1 -0
- package/src/components/enhanced/enhanced-controls.js +233 -0
- package/src/components/enhanced/enhanced-media-player.d.ts +26 -0
- package/src/components/enhanced/enhanced-media-player.d.ts.map +1 -0
- package/src/components/enhanced/enhanced-media-player.js +316 -0
- package/src/components/enhanced/error-handling.d.ts +36 -0
- package/src/components/enhanced/error-handling.d.ts.map +1 -0
- package/src/components/enhanced/error-handling.js +153 -0
- package/src/components/enhanced/index.d.ts +7 -0
- package/src/components/enhanced/index.d.ts.map +1 -0
- package/src/components/enhanced/index.js +10 -0
- package/src/components/enhanced/media-player-enhanced.d.ts +21 -0
- package/src/components/enhanced/media-player-enhanced.d.ts.map +1 -0
- package/src/components/enhanced/media-player-enhanced.js +250 -0
- package/src/components/examples/basic-video-player.d.ts +10 -0
- package/src/components/examples/basic-video-player.d.ts.map +1 -0
- package/src/components/examples/basic-video-player.js +16 -0
- package/src/components/examples/custom-controls-example.d.ts +10 -0
- package/src/components/examples/custom-controls-example.d.ts.map +1 -0
- package/src/components/examples/custom-controls-example.js +12 -0
- package/src/components/examples/enhanced-controls-example.d.ts +9 -0
- package/src/components/examples/enhanced-controls-example.d.ts.map +1 -0
- package/src/components/examples/enhanced-controls-example.js +18 -0
- package/src/components/examples/enhanced-media-player-example.d.ts +9 -0
- package/src/components/examples/enhanced-media-player-example.d.ts.map +1 -0
- package/src/components/examples/enhanced-media-player-example.js +13 -0
- package/src/components/examples/loading-states-demo.d.ts +2 -0
- package/src/components/examples/loading-states-demo.d.ts.map +1 -0
- package/src/components/examples/loading-states-demo.js +41 -0
- package/src/components/examples/react-19-demo.d.ts +10 -0
- package/src/components/examples/react-19-demo.d.ts.map +1 -0
- package/src/components/examples/react-19-demo.js +104 -0
- package/src/components/examples/volume-orientation-demo.d.ts +2 -0
- package/src/components/examples/volume-orientation-demo.d.ts.map +1 -0
- package/src/components/examples/volume-orientation-demo.js +31 -0
- package/src/components/icon-demo.d.ts +2 -0
- package/src/components/icon-demo.d.ts.map +1 -0
- package/src/components/icon-demo.js +16 -0
- package/src/components/icons/index.d.ts +36 -0
- package/src/components/icons/index.d.ts.map +1 -0
- package/src/components/icons/index.js +59 -0
- package/src/components/icons/svg-icons/ArrowLeftIcon.d.ts +4 -0
- package/src/components/icons/svg-icons/ArrowLeftIcon.d.ts.map +1 -0
- package/src/components/icons/svg-icons/ArrowLeftIcon.js +3 -0
- package/src/components/icons/svg-icons/ArrowRightIcon.d.ts +4 -0
- package/src/components/icons/svg-icons/ArrowRightIcon.d.ts.map +1 -0
- package/src/components/icons/svg-icons/ArrowRightIcon.js +3 -0
- package/src/components/icons/svg-icons/AudioIcon.d.ts +4 -0
- package/src/components/icons/svg-icons/AudioIcon.d.ts.map +1 -0
- package/src/components/icons/svg-icons/AudioIcon.js +4 -0
- package/src/components/icons/svg-icons/BackwardIcon.d.ts +4 -0
- package/src/components/icons/svg-icons/BackwardIcon.d.ts.map +1 -0
- package/src/components/icons/svg-icons/BackwardIcon.js +3 -0
- package/src/components/icons/svg-icons/CameraIcon.d.ts +4 -0
- package/src/components/icons/svg-icons/CameraIcon.d.ts.map +1 -0
- package/src/components/icons/svg-icons/CameraIcon.js +4 -0
- package/src/components/icons/svg-icons/CheckIcon.d.ts +4 -0
- package/src/components/icons/svg-icons/CheckIcon.d.ts.map +1 -0
- package/src/components/icons/svg-icons/CheckIcon.js +4 -0
- package/src/components/icons/svg-icons/EnablePiPIcon.d.ts +4 -0
- package/src/components/icons/svg-icons/EnablePiPIcon.d.ts.map +1 -0
- package/src/components/icons/svg-icons/EnablePiPIcon.js +5 -0
- package/src/components/icons/svg-icons/ForwardIcon.d.ts +4 -0
- package/src/components/icons/svg-icons/ForwardIcon.d.ts.map +1 -0
- package/src/components/icons/svg-icons/ForwardIcon.js +3 -0
- package/src/components/icons/svg-icons/FullscreenEnterIcon.d.ts +4 -0
- package/src/components/icons/svg-icons/FullscreenEnterIcon.d.ts.map +1 -0
- package/src/components/icons/svg-icons/FullscreenEnterIcon.js +3 -0
- package/src/components/icons/svg-icons/FullscreenExitIcon.d.ts +4 -0
- package/src/components/icons/svg-icons/FullscreenExitIcon.d.ts.map +1 -0
- package/src/components/icons/svg-icons/FullscreenExitIcon.js +3 -0
- package/src/components/icons/svg-icons/LoadingIcon.d.ts +4 -0
- package/src/components/icons/svg-icons/LoadingIcon.d.ts.map +1 -0
- package/src/components/icons/svg-icons/LoadingIcon.js +3 -0
- package/src/components/icons/svg-icons/PauseIcon.d.ts +4 -0
- package/src/components/icons/svg-icons/PauseIcon.d.ts.map +1 -0
- package/src/components/icons/svg-icons/PauseIcon.js +3 -0
- package/src/components/icons/svg-icons/PlayIcon.d.ts +4 -0
- package/src/components/icons/svg-icons/PlayIcon.d.ts.map +1 -0
- package/src/components/icons/svg-icons/PlayIcon.js +3 -0
- package/src/components/icons/svg-icons/PlaybackSpeedIcon.d.ts +4 -0
- package/src/components/icons/svg-icons/PlaybackSpeedIcon.d.ts.map +1 -0
- package/src/components/icons/svg-icons/PlaybackSpeedIcon.js +3 -0
- package/src/components/icons/svg-icons/QualityIcon.d.ts +4 -0
- package/src/components/icons/svg-icons/QualityIcon.d.ts.map +1 -0
- package/src/components/icons/svg-icons/QualityIcon.js +3 -0
- package/src/components/icons/svg-icons/SettingsIcon.d.ts +4 -0
- package/src/components/icons/svg-icons/SettingsIcon.d.ts.map +1 -0
- package/src/components/icons/svg-icons/SettingsIcon.js +3 -0
- package/src/components/icons/svg-icons/SliderIcon.d.ts +4 -0
- package/src/components/icons/svg-icons/SliderIcon.d.ts.map +1 -0
- package/src/components/icons/svg-icons/SliderIcon.js +3 -0
- package/src/components/icons/svg-icons/SubtitleIcon.d.ts +4 -0
- package/src/components/icons/svg-icons/SubtitleIcon.d.ts.map +1 -0
- package/src/components/icons/svg-icons/SubtitleIcon.js +3 -0
- package/src/components/icons/svg-icons/SubtitleOffIcon.d.ts +4 -0
- package/src/components/icons/svg-icons/SubtitleOffIcon.d.ts.map +1 -0
- package/src/components/icons/svg-icons/SubtitleOffIcon.js +3 -0
- package/src/components/icons/svg-icons/UnPiPIcon.d.ts +4 -0
- package/src/components/icons/svg-icons/UnPiPIcon.d.ts.map +1 -0
- package/src/components/icons/svg-icons/UnPiPIcon.js +5 -0
- package/src/components/icons/svg-icons/VolumeMutedIcon.d.ts +4 -0
- package/src/components/icons/svg-icons/VolumeMutedIcon.d.ts.map +1 -0
- package/src/components/icons/svg-icons/VolumeMutedIcon.js +3 -0
- package/src/components/icons/svg-icons/VolumeOneIcon.d.ts +4 -0
- package/src/components/icons/svg-icons/VolumeOneIcon.d.ts.map +1 -0
- package/src/components/icons/svg-icons/VolumeOneIcon.js +3 -0
- package/src/components/icons/svg-icons/VolumeThreeIcon.d.ts +4 -0
- package/src/components/icons/svg-icons/VolumeThreeIcon.d.ts.map +1 -0
- package/src/components/icons/svg-icons/VolumeThreeIcon.js +3 -0
- package/src/components/icons/svg-icons/VolumeTwoIcon.d.ts +4 -0
- package/src/components/icons/svg-icons/VolumeTwoIcon.d.ts.map +1 -0
- package/src/components/icons/svg-icons/VolumeTwoIcon.js +3 -0
- package/src/components/legacy.d.ts +13 -0
- package/src/components/legacy.d.ts.map +1 -0
- package/src/components/legacy.js +52 -0
- package/src/components/media-metadata-display.d.ts +11 -0
- package/src/components/media-metadata-display.d.ts.map +1 -0
- package/src/components/media-metadata-display.js +20 -0
- package/src/components/media-player-audio.d.ts +9 -0
- package/src/components/media-player-audio.d.ts.map +1 -0
- package/src/components/media-player-audio.js +18 -0
- package/src/components/media-player-controls.d.ts +23 -0
- package/src/components/media-player-controls.d.ts.map +1 -0
- package/src/components/media-player-controls.js +150 -0
- package/src/components/media-player-error.d.ts +16 -0
- package/src/components/media-player-error.d.ts.map +1 -0
- package/src/components/media-player-error.js +85 -0
- package/src/components/media-player-fullscreen.d.ts +12 -0
- package/src/components/media-player-fullscreen.d.ts.map +1 -0
- package/src/components/media-player-fullscreen.js +68 -0
- package/src/components/media-player-hls.d.ts +23 -0
- package/src/components/media-player-hls.d.ts.map +1 -0
- package/src/components/media-player-hls.js +20 -0
- package/src/components/media-player-loading.d.ts +12 -0
- package/src/components/media-player-loading.d.ts.map +1 -0
- package/src/components/media-player-loading.js +53 -0
- package/src/components/media-player-play.d.ts +11 -0
- package/src/components/media-player-play.d.ts.map +1 -0
- package/src/components/media-player-play.js +44 -0
- package/src/components/media-player-root.d.ts +28 -0
- package/src/components/media-player-root.d.ts.map +1 -0
- package/src/components/media-player-root.js +243 -0
- package/src/components/media-player-seek.d.ts +15 -0
- package/src/components/media-player-seek.d.ts.map +1 -0
- package/src/components/media-player-seek.js +92 -0
- package/src/components/media-player-time.d.ts +12 -0
- package/src/components/media-player-time.d.ts.map +1 -0
- package/src/components/media-player-time.js +57 -0
- package/src/components/media-player-tooltip.d.ts +13 -0
- package/src/components/media-player-tooltip.d.ts.map +1 -0
- package/src/components/media-player-tooltip.js +14 -0
- package/src/components/media-player-video.d.ts +9 -0
- package/src/components/media-player-video.d.ts.map +1 -0
- package/src/components/media-player-video.js +18 -0
- package/src/components/media-player-volume.d.ts +13 -0
- package/src/components/media-player-volume.d.ts.map +1 -0
- package/src/components/media-player-volume.js +88 -0
- package/src/components/media-player.d.ts +3 -0
- package/src/components/media-player.d.ts.map +1 -0
- package/src/components/media-player.js +67 -0
- package/src/components/media-suspense.d.ts +78 -0
- package/src/components/media-suspense.d.ts.map +1 -0
- package/src/components/media-suspense.js +173 -0
- package/src/components/player-settings-form.d.ts +8 -0
- package/src/components/player-settings-form.d.ts.map +1 -0
- package/src/components/player-settings-form.js +46 -0
- package/src/components/react-player-wrapper.d.ts +64 -0
- package/src/components/react-player-wrapper.d.ts.map +1 -0
- package/src/components/react-player-wrapper.js +163 -0
- package/src/components/simple-video-player.d.ts +9 -0
- package/src/components/simple-video-player.d.ts.map +1 -0
- package/src/components/simple-video-player.js +41 -0
- package/src/components/ui/enhanced-seek-bar.d.ts +3 -0
- package/src/components/ui/enhanced-seek-bar.d.ts.map +1 -0
- package/src/components/ui/enhanced-seek-bar.js +112 -0
- package/src/components/ui/fullscreen-button.d.ts +3 -0
- package/src/components/ui/fullscreen-button.d.ts.map +1 -0
- package/src/components/ui/fullscreen-button.js +21 -0
- package/src/components/ui/media-resource-preloader.d.ts +21 -0
- package/src/components/ui/media-resource-preloader.d.ts.map +1 -0
- package/src/components/ui/media-resource-preloader.js +295 -0
- package/src/components/ui/play-button.d.ts +3 -0
- package/src/components/ui/play-button.d.ts.map +1 -0
- package/src/components/ui/play-button.js +26 -0
- package/src/components/ui/seek-bar.d.ts +3 -0
- package/src/components/ui/seek-bar.d.ts.map +1 -0
- package/src/components/ui/seek-bar.js +54 -0
- package/src/components/ui/time-display.d.ts +3 -0
- package/src/components/ui/time-display.d.ts.map +1 -0
- package/src/components/ui/time-display.js +18 -0
- package/src/components/ui/volume-control.d.ts +3 -0
- package/src/components/ui/volume-control.d.ts.map +1 -0
- package/src/components/ui/volume-control.js +71 -0
- package/src/components/unified/base-media-player.d.ts +18 -0
- package/src/components/unified/base-media-player.d.ts.map +1 -0
- package/src/components/unified/base-media-player.js +104 -0
- package/src/components/unified/media-player.d.ts +37 -0
- package/src/components/unified/media-player.d.ts.map +1 -0
- package/src/components/unified/media-player.js +41 -0
- package/src/components/variants/minimal/AccessibleMinimalPlayer.d.ts +42 -0
- package/src/components/variants/minimal/AccessibleMinimalPlayer.d.ts.map +1 -0
- package/src/components/variants/minimal/AccessibleMinimalPlayer.js +322 -0
- package/src/components/variants/minimal/EnhancedMinimalMediaPlayer.d.ts +44 -0
- package/src/components/variants/minimal/EnhancedMinimalMediaPlayer.d.ts.map +1 -0
- package/src/components/variants/minimal/EnhancedMinimalMediaPlayer.js +280 -0
- package/src/components/variants/minimal/MinimalControls.d.ts +19 -0
- package/src/components/variants/minimal/MinimalControls.d.ts.map +1 -0
- package/src/components/variants/minimal/MinimalControls.js +19 -0
- package/src/components/variants/minimal/MinimalLoading.d.ts +10 -0
- package/src/components/variants/minimal/MinimalLoading.d.ts.map +1 -0
- package/src/components/variants/minimal/MinimalLoading.js +6 -0
- package/src/components/variants/minimal/MinimalMediaPlayer.d.ts +38 -0
- package/src/components/variants/minimal/MinimalMediaPlayer.d.ts.map +1 -0
- package/src/components/variants/minimal/MinimalMediaPlayer.js +135 -0
- package/src/components/variants/minimal/MinimalOverlay.d.ts +11 -0
- package/src/components/variants/minimal/MinimalOverlay.d.ts.map +1 -0
- package/src/components/variants/minimal/MinimalOverlay.js +15 -0
- package/src/components/variants/minimal/MinimalPlayButton.d.ts +9 -0
- package/src/components/variants/minimal/MinimalPlayButton.d.ts.map +1 -0
- package/src/components/variants/minimal/MinimalPlayButton.js +29 -0
- package/src/components/variants/minimal/MinimalSeekBar.d.ts +7 -0
- package/src/components/variants/minimal/MinimalSeekBar.d.ts.map +1 -0
- package/src/components/variants/minimal/MinimalSeekBar.js +73 -0
- package/src/components/variants/minimal/MinimalVolumeControl.d.ts +7 -0
- package/src/components/variants/minimal/MinimalVolumeControl.d.ts.map +1 -0
- package/src/components/variants/minimal/MinimalVolumeControl.js +29 -0
- package/src/components/variants/minimal/SimpleMinimalPlayer.d.ts +22 -0
- package/src/components/variants/minimal/SimpleMinimalPlayer.d.ts.map +1 -0
- package/src/components/variants/minimal/SimpleMinimalPlayer.js +51 -0
- package/src/components/variants/minimal/SimpleMinimalPlayer.tsx +0 -1
- package/src/components/variants/minimal/components/CenterPlayButton.d.ts +7 -0
- package/src/components/variants/minimal/components/CenterPlayButton.d.ts.map +1 -0
- package/src/components/variants/minimal/components/CenterPlayButton.js +8 -0
- package/src/components/variants/minimal/components/ControlBar.d.ts +43 -0
- package/src/components/variants/minimal/components/ControlBar.d.ts.map +1 -0
- package/src/components/variants/minimal/components/ControlBar.js +10 -0
- package/src/components/variants/minimal/components/EnhancedSettingsMenu.d.ts +24 -0
- package/src/components/variants/minimal/components/EnhancedSettingsMenu.d.ts.map +1 -0
- package/src/components/variants/minimal/components/EnhancedSettingsMenu.js +68 -0
- package/src/components/variants/minimal/components/PlaybackControls.d.ts +9 -0
- package/src/components/variants/minimal/components/PlaybackControls.d.ts.map +1 -0
- package/src/components/variants/minimal/components/PlaybackControls.js +9 -0
- package/src/components/variants/minimal/components/RightControls.d.ts +25 -0
- package/src/components/variants/minimal/components/RightControls.d.ts.map +1 -0
- package/src/components/variants/minimal/components/RightControls.js +40 -0
- package/src/components/variants/minimal/components/SeekBar.d.ts +11 -0
- package/src/components/variants/minimal/components/SeekBar.d.ts.map +1 -0
- package/src/components/variants/minimal/components/SeekBar.js +43 -0
- package/src/components/variants/minimal/components/SettingsDropdown.d.ts +9 -0
- package/src/components/variants/minimal/components/SettingsDropdown.d.ts.map +1 -0
- package/src/components/variants/minimal/components/SettingsDropdown.js +18 -0
- package/src/components/variants/minimal/components/SubtitleDisplay.d.ts +7 -0
- package/src/components/variants/minimal/components/SubtitleDisplay.d.ts.map +1 -0
- package/src/components/variants/minimal/components/SubtitleDisplay.js +6 -0
- package/src/components/variants/minimal/components/TimeDisplay.d.ts +7 -0
- package/src/components/variants/minimal/components/TimeDisplay.d.ts.map +1 -0
- package/src/components/variants/minimal/components/TimeDisplay.js +5 -0
- package/src/components/variants/minimal/components/VideoElement.d.ts +13 -0
- package/src/components/variants/minimal/components/VideoElement.d.ts.map +1 -0
- package/src/components/variants/minimal/components/VideoElement.js +4 -0
- package/src/components/variants/minimal/components/VolumeControl.d.ts +13 -0
- package/src/components/variants/minimal/components/VolumeControl.d.ts.map +1 -0
- package/src/components/variants/minimal/components/VolumeControl.js +99 -0
- package/src/components/variants/minimal/index.d.ts +17 -0
- package/src/components/variants/minimal/index.d.ts.map +1 -0
- package/src/components/variants/minimal/index.js +8 -0
- package/src/components/video-player.d.ts +3 -0
- package/src/components/video-player.d.ts.map +1 -0
- package/src/components/video-player.js +38 -0
- package/src/context/error-handling.d.ts +72 -0
- package/src/context/error-handling.d.ts.map +1 -0
- package/src/context/error-handling.js +300 -0
- package/src/context/media-context.d.ts +104 -0
- package/src/context/media-context.d.ts.map +1 -0
- package/src/context/media-context.js +121 -0
- package/src/context/media-provider.d.ts +26 -0
- package/src/context/media-provider.d.ts.map +1 -0
- package/src/context/media-provider.js +164 -0
- package/src/context/media-store.d.ts +33 -0
- package/src/context/media-store.d.ts.map +1 -0
- package/src/context/media-store.js +273 -0
- package/src/context/persistence.d.ts +83 -0
- package/src/context/persistence.d.ts.map +1 -0
- package/src/context/persistence.js +356 -0
- package/src/core/events/event-system.d.ts +170 -0
- package/src/core/events/event-system.d.ts.map +1 -0
- package/src/core/events/event-system.js +288 -0
- package/src/core/events/hooks.d.ts +33 -0
- package/src/core/events/hooks.d.ts.map +1 -0
- package/src/core/events/hooks.js +198 -0
- package/src/core/events/index.d.ts +6 -0
- package/src/core/events/index.d.ts.map +1 -0
- package/src/core/events/index.js +7 -0
- package/src/core/events/middleware.d.ts +39 -0
- package/src/core/events/middleware.d.ts.map +1 -0
- package/src/core/events/middleware.js +219 -0
- package/src/core/index.d.ts +8 -0
- package/src/core/index.d.ts.map +1 -0
- package/src/core/index.js +15 -0
- package/src/core/optimization/bundle-optimizer.d.ts +44 -0
- package/src/core/optimization/bundle-optimizer.d.ts.map +1 -0
- package/src/core/optimization/bundle-optimizer.js +217 -0
- package/src/core/performance/cicd.d.ts +8 -0
- package/src/core/performance/cicd.d.ts.map +1 -0
- package/src/core/performance/cicd.js +83 -0
- package/src/core/performance/index.d.ts +10 -0
- package/src/core/performance/index.d.ts.map +1 -0
- package/src/core/performance/index.js +14 -0
- package/src/core/performance/media-loading-optimizer.d.ts +105 -0
- package/src/core/performance/media-loading-optimizer.d.ts.map +1 -0
- package/src/core/performance/media-loading-optimizer.js +404 -0
- package/src/core/performance/performance-budgets.d.ts +68 -0
- package/src/core/performance/performance-budgets.d.ts.map +1 -0
- package/src/core/performance/performance-budgets.js +326 -0
- package/src/core/performance/performance-monitor.d.ts +95 -0
- package/src/core/performance/performance-monitor.d.ts.map +1 -0
- package/src/core/performance/performance-monitor.js +297 -0
- package/src/core/performance/performance-testing.d.ts +69 -0
- package/src/core/performance/performance-testing.d.ts.map +1 -0
- package/src/core/performance/performance-testing.js +314 -0
- package/src/core/plugins/base-plugin.d.ts +52 -0
- package/src/core/plugins/base-plugin.d.ts.map +1 -0
- package/src/core/plugins/base-plugin.js +151 -0
- package/src/core/plugins/enhanced-plugin-system.d.ts +160 -0
- package/src/core/plugins/enhanced-plugin-system.d.ts.map +1 -0
- package/src/core/plugins/enhanced-plugin-system.js +305 -0
- package/src/core/plugins/examples/analytics-plugin.d.ts +30 -0
- package/src/core/plugins/examples/analytics-plugin.d.ts.map +1 -0
- package/src/core/plugins/examples/analytics-plugin.js +191 -0
- package/src/core/plugins/index.d.ts +8 -0
- package/src/core/plugins/index.d.ts.map +1 -0
- package/src/core/plugins/index.js +9 -0
- package/src/core/plugins/registry.d.ts +31 -0
- package/src/core/plugins/registry.d.ts.map +1 -0
- package/src/core/plugins/registry.js +261 -0
- package/src/core/plugins/types.d.ts +101 -0
- package/src/core/plugins/types.d.ts.map +1 -0
- package/src/core/plugins/types.js +31 -0
- package/src/core/plugins/utils.d.ts +38 -0
- package/src/core/plugins/utils.d.ts.map +1 -0
- package/src/core/plugins/utils.js +274 -0
- package/src/core/progressive-loading.d.ts +88 -0
- package/src/core/progressive-loading.d.ts.map +1 -0
- package/src/core/progressive-loading.js +239 -0
- package/src/core/providers/enhanced-hls-provider.d.ts +50 -0
- package/src/core/providers/enhanced-hls-provider.d.ts.map +1 -0
- package/src/core/providers/enhanced-hls-provider.js +273 -0
- package/src/core/providers/service-provider.d.ts +49 -0
- package/src/core/providers/service-provider.d.ts.map +1 -0
- package/src/core/providers/service-provider.js +105 -0
- package/src/core/utils.d.ts +25 -0
- package/src/core/utils.d.ts.map +1 -0
- package/src/core/utils.js +21 -0
- package/src/features/media-session/media-session-manager.d.ts +132 -0
- package/src/features/media-session/media-session-manager.d.ts.map +1 -0
- package/src/features/media-session/media-session-manager.js +331 -0
- package/src/features/picture-in-picture/pip-manager.d.ts +94 -0
- package/src/features/picture-in-picture/pip-manager.d.ts.map +1 -0
- package/src/features/picture-in-picture/pip-manager.js +353 -0
- package/src/features/playlist/playlist-manager.d.ts +208 -0
- package/src/features/playlist/playlist-manager.d.ts.map +1 -0
- package/src/features/playlist/playlist-manager.js +475 -0
- package/src/features/subtitles/subtitle-manager.d.ts +136 -0
- package/src/features/subtitles/subtitle-manager.d.ts.map +1 -0
- package/src/features/subtitles/subtitle-manager.js +335 -0
- package/src/features/subtitles/subtitle-parser.d.ts +60 -0
- package/src/features/subtitles/subtitle-parser.d.ts.map +1 -0
- package/src/features/subtitles/subtitle-parser.js +217 -0
- package/src/features/thumbnails/thumbnail-generator.d.ts +136 -0
- package/src/features/thumbnails/thumbnail-generator.d.ts.map +1 -0
- package/src/features/thumbnails/thumbnail-generator.js +388 -0
- package/src/hooks/accessibility/index.d.ts +5 -0
- package/src/hooks/accessibility/index.d.ts.map +1 -0
- package/src/hooks/accessibility/index.js +4 -0
- package/src/hooks/accessibility/use-accessibility-preferences.d.ts +14 -0
- package/src/hooks/accessibility/use-accessibility-preferences.d.ts.map +1 -0
- package/src/hooks/accessibility/use-accessibility-preferences.js +156 -0
- package/src/hooks/accessibility/use-focus-management.d.ts +31 -0
- package/src/hooks/accessibility/use-focus-management.d.ts.map +1 -0
- package/src/hooks/accessibility/use-focus-management.js +142 -0
- package/src/hooks/accessibility/use-keyboard-shortcuts.d.ts +38 -0
- package/src/hooks/accessibility/use-keyboard-shortcuts.d.ts.map +1 -0
- package/src/hooks/accessibility/use-keyboard-shortcuts.js +101 -0
- package/src/hooks/accessibility/use-screen-reader.d.ts +22 -0
- package/src/hooks/accessibility/use-screen-reader.d.ts.map +1 -0
- package/src/hooks/accessibility/use-screen-reader.js +148 -0
- package/src/hooks/core/index.d.ts +18 -0
- package/src/hooks/core/index.d.ts.map +1 -0
- package/src/hooks/core/index.js +19 -0
- package/src/hooks/legacy.d.ts +18 -0
- package/src/hooks/legacy.d.ts.map +1 -0
- package/src/hooks/legacy.js +17 -0
- package/src/hooks/use-enhanced-media-player.d.ts +88 -0
- package/src/hooks/use-enhanced-media-player.d.ts.map +1 -0
- package/src/hooks/use-enhanced-media-player.js +395 -0
- package/src/hooks/use-intelligent-preloading.d.ts +66 -0
- package/src/hooks/use-intelligent-preloading.d.ts.map +1 -0
- package/src/hooks/use-intelligent-preloading.js +258 -0
- package/src/hooks/use-keyboard-controls.d.ts +13 -0
- package/src/hooks/use-keyboard-controls.d.ts.map +1 -0
- package/src/hooks/use-keyboard-controls.js +83 -0
- package/src/hooks/use-media-actions.d.ts +62 -0
- package/src/hooks/use-media-actions.d.ts.map +1 -0
- package/src/hooks/use-media-actions.js +121 -0
- package/src/hooks/use-media-metadata.d.ts +11 -0
- package/src/hooks/use-media-metadata.d.ts.map +1 -0
- package/src/hooks/use-media-metadata.js +74 -0
- package/src/hooks/use-media-optimistic.d.ts +36 -0
- package/src/hooks/use-media-optimistic.d.ts.map +1 -0
- package/src/hooks/use-media-optimistic.js +205 -0
- package/src/hooks/use-media-player.d.ts +31 -0
- package/src/hooks/use-media-player.d.ts.map +1 -0
- package/src/hooks/use-media-player.js +251 -0
- package/src/hooks/use-media-state.d.ts +17 -0
- package/src/hooks/use-media-state.d.ts.map +1 -0
- package/src/hooks/use-media-state.js +162 -0
- package/src/hooks/use-memory-optimization.d.ts +40 -0
- package/src/hooks/use-memory-optimization.d.ts.map +1 -0
- package/src/hooks/use-memory-optimization.js +288 -0
- package/src/hooks/use-optimistic-controls.d.ts +22 -0
- package/src/hooks/use-optimistic-controls.d.ts.map +1 -0
- package/src/hooks/use-optimistic-controls.js +60 -0
- package/src/hooks/use-optimized-media.d.ts +46 -0
- package/src/hooks/use-optimized-media.d.ts.map +1 -0
- package/src/hooks/use-optimized-media.js +211 -0
- package/src/hooks/use-touch-gestures.d.ts +47 -0
- package/src/hooks/use-touch-gestures.d.ts.map +1 -0
- package/src/hooks/use-touch-gestures.js +289 -0
- package/src/hooks/useEnhancedSubtitles.d.ts +39 -0
- package/src/hooks/useEnhancedSubtitles.d.ts.map +1 -0
- package/src/hooks/useEnhancedSubtitles.js +205 -0
- package/src/hooks/useKeyboardShortcuts.d.ts +10 -0
- package/src/hooks/useKeyboardShortcuts.d.ts.map +1 -0
- package/src/hooks/useKeyboardShortcuts.js +59 -0
- package/src/hooks/useMediaControls.d.ts +9 -0
- package/src/hooks/useMediaControls.d.ts.map +1 -0
- package/src/hooks/useMediaControls.js +44 -0
- package/src/hooks/useScreenshot.d.ts +4 -0
- package/src/hooks/useScreenshot.d.ts.map +1 -0
- package/src/hooks/useScreenshot.js +56 -0
- package/src/hooks/useSubtitles.d.ts +8 -0
- package/src/hooks/useSubtitles.d.ts.map +1 -0
- package/src/hooks/useSubtitles.js +73 -0
- package/src/hooks/useVideoPlayer.d.ts +32 -0
- package/src/hooks/useVideoPlayer.d.ts.map +1 -0
- package/src/hooks/useVideoPlayer.js +184 -0
- package/src/icons/components/FullscreenIcon.d.ts +3 -0
- package/src/icons/components/FullscreenIcon.d.ts.map +1 -0
- package/src/icons/components/FullscreenIcon.js +11 -0
- package/src/icons/components/SettingsIcon.d.ts +3 -0
- package/src/icons/components/SettingsIcon.d.ts.map +1 -0
- package/src/icons/components/SettingsIcon.js +11 -0
- package/src/icons/components/animated/LoadingIcon.d.ts +3 -0
- package/src/icons/components/animated/LoadingIcon.d.ts.map +1 -0
- package/src/icons/components/animated/LoadingIcon.js +11 -0
- package/src/icons/components/animated/PlayPauseIcon.d.ts +7 -0
- package/src/icons/components/animated/PlayPauseIcon.d.ts.map +1 -0
- package/src/icons/components/animated/PlayPauseIcon.js +9 -0
- package/src/icons/components/media/PauseIcon.d.ts +3 -0
- package/src/icons/components/media/PauseIcon.d.ts.map +1 -0
- package/src/icons/components/media/PauseIcon.js +12 -0
- package/src/icons/components/media/PlayIcon.d.ts +3 -0
- package/src/icons/components/media/PlayIcon.d.ts.map +1 -0
- package/src/icons/components/media/PlayIcon.js +12 -0
- package/src/icons/components/volume/VolumeIcon.d.ts +3 -0
- package/src/icons/components/volume/VolumeIcon.d.ts.map +1 -0
- package/src/icons/components/volume/VolumeIcon.js +11 -0
- package/src/icons/components/volume/VolumeOffIcon.d.ts +3 -0
- package/src/icons/components/volume/VolumeOffIcon.d.ts.map +1 -0
- package/src/icons/components/volume/VolumeOffIcon.js +11 -0
- package/src/icons/index.d.ts +28 -0
- package/src/icons/index.d.ts.map +1 -0
- package/src/icons/index.js +45 -0
- package/src/icons/provider.d.ts +13 -0
- package/src/icons/provider.d.ts.map +1 -0
- package/src/icons/provider.js +37 -0
- package/src/icons/types.d.ts +18 -0
- package/src/icons/types.d.ts.map +1 -0
- package/src/icons/types.js +1 -0
- package/src/index-enhanced.d.ts +13 -0
- package/src/index-enhanced.d.ts.map +1 -0
- package/src/index-enhanced.js +16 -0
- package/src/index-legacy.d.ts +81 -0
- package/src/index-legacy.d.ts.map +1 -0
- package/src/index-legacy.js +97 -0
- package/src/index.d.ts +38 -0
- package/src/index.d.ts.map +1 -0
- package/src/index.js +90 -0
- package/src/index.minimal.d.ts +2 -0
- package/src/index.minimal.d.ts.map +1 -0
- package/src/index.minimal.js +3 -0
- package/src/index.minimal.ts +4 -0
- package/src/lib/deprecation.d.ts +7 -0
- package/src/lib/deprecation.d.ts.map +1 -0
- package/src/lib/deprecation.js +31 -0
- package/src/lib/format-time.d.ts +9 -0
- package/src/lib/format-time.d.ts.map +1 -0
- package/src/lib/format-time.js +32 -0
- package/src/lib/index.d.ts +3 -0
- package/src/lib/index.d.ts.map +1 -0
- package/src/lib/index.js +3 -0
- package/src/lib/utils.d.ts +3 -0
- package/src/lib/utils.d.ts.map +1 -0
- package/src/lib/utils.js +5 -0
- package/src/test/setup.d.ts +2 -0
- package/src/test/setup.d.ts.map +1 -0
- package/src/test/setup.js +65 -0
- package/src/types/events.d.ts +41 -0
- package/src/types/events.d.ts.map +1 -0
- package/src/types/events.js +2 -0
- package/src/types/formats.d.ts +45 -0
- package/src/types/formats.d.ts.map +1 -0
- package/src/types/formats.js +63 -0
- package/src/types/index.d.ts +128 -0
- package/src/types/index.d.ts.map +1 -0
- package/src/types/index.js +4 -0
- package/dist/context/media.js +0 -2
- package/dist/context/media.js.map +0 -1
- package/dist/context/media.mjs +0 -15
- package/dist/context/media.mjs.map +0 -1
- package/dist/context/store.js +0 -2
- package/dist/context/store.js.map +0 -1
- package/dist/context/store.mjs +0 -5
- package/dist/context/store.mjs.map +0 -1
- package/dist/context-BMteAJDN.js +0 -1140
- package/dist/context-BMteAJDN.js.map +0 -1
- package/dist/context-DCJ_scmO.cjs +0 -23
- package/dist/context-DCJ_scmO.cjs.map +0 -1
- package/dist/core-events-B5W_j8yU.js +0 -480
- package/dist/core-events-B5W_j8yU.js.map +0 -1
- package/dist/core-events-CN0-Vhhq.cjs +0 -2
- package/dist/core-events-CN0-Vhhq.cjs.map +0 -1
- package/dist/core-plugins-Bq9KLany.js +0 -696
- package/dist/core-plugins-Bq9KLany.js.map +0 -1
- package/dist/core-plugins-CPDSHMiQ.cjs +0 -2
- package/dist/core-plugins-CPDSHMiQ.cjs.map +0 -1
- package/dist/core.js +0 -37
- package/dist/core.js.map +0 -1
- package/dist/core.mjs +0 -1217
- package/dist/core.mjs.map +0 -1
- package/dist/enhanced-components-DHv0MFvG.js +0 -1073
- package/dist/enhanced-components-DHv0MFvG.js.map +0 -1
- package/dist/enhanced-components-DTIObgB7.cjs +0 -2
- package/dist/enhanced-components-DTIObgB7.cjs.map +0 -1
- package/dist/hooks-C_r8wexn.cjs +0 -4
- package/dist/hooks-C_r8wexn.cjs.map +0 -1
- package/dist/hooks-Da2wVXlF.js +0 -1630
- package/dist/hooks-Da2wVXlF.js.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/index.mjs.map +0 -1
- package/dist/minimal-components-DSq5sQpy.js +0 -2002
- package/dist/minimal-components-DSq5sQpy.js.map +0 -1
- package/dist/minimal-components-DflWiihN.cjs +0 -2
- package/dist/minimal-components-DflWiihN.cjs.map +0 -1
- package/dist/minimal-components.css +0 -1
- package/dist/performance-monitor-CUW6f5ll.cjs +0 -2
- package/dist/performance-monitor-CUW6f5ll.cjs.map +0 -1
- package/dist/performance-monitor-rMW1RgV3.js +0 -302
- package/dist/performance-monitor-rMW1RgV3.js.map +0 -1
- package/dist/utils-BnscpYYd.js +0 -2798
- package/dist/utils-BnscpYYd.js.map +0 -1
- package/dist/utils-D_czS_0K.cjs +0 -9
- package/dist/utils-D_czS_0K.cjs.map +0 -1
- package/dist/utils.js +0 -2
- package/dist/utils.js.map +0 -1
- package/dist/utils.mjs +0 -7
- package/dist/utils.mjs.map +0 -1
- /package/dist/{mona-loading.gif → src/assets/mona-loading.gif} +0 -0
package/dist/core.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"core.js","sources":["../src/core/performance/performance-testing.ts","../src/core/performance/performance-budgets.ts","../src/core/performance/media-loading-optimizer.ts","../src/core/providers/service-provider.tsx","../src/core/utils.tsx","../src/core/progressive-loading.tsx","../src/core/index.ts"],"sourcesContent":["import { performanceMonitor, PerformanceRegressionDetector } from './performance-monitor';\nimport type { PerformanceMetrics } from './performance-monitor';\n\n// Performance test configuration\nexport interface PerformanceTestConfig {\n name: string;\n iterations: number;\n warmupIterations: number;\n timeout: number;\n expectedThreshold: {\n renderTime: number;\n memoryUsage: number;\n };\n}\n\n// Performance test result\nexport interface PerformanceTestResult {\n testName: string;\n passed: boolean;\n metrics: {\n averageRenderTime: number;\n minRenderTime: number;\n maxRenderTime: number;\n memoryUsage: number;\n iterations: number;\n };\n threshold: PerformanceTestConfig['expectedThreshold'];\n error?: string;\n}\n\n// Performance benchmark suite\nexport class PerformanceBenchmark {\n private results: PerformanceTestResult[] = [];\n private regressionDetector = new PerformanceRegressionDetector();\n\n async runTest(\n config: PerformanceTestConfig,\n testFunction: () => any | Promise<any>\n ): Promise<PerformanceTestResult> {\n const renderTimes: number[] = [];\n let memoryBefore = 0;\n let memoryAfter = 0;\n let error: string | undefined;\n\n try {\n // Warmup iterations\n for (let i = 0; i < config.warmupIterations; i++) {\n await testFunction();\n }\n\n // Force garbage collection if available\n if (global.gc) {\n global.gc();\n }\n\n memoryBefore = this.getMemoryUsage();\n\n // Main test iterations\n for (let i = 0; i < config.iterations; i++) {\n const startTime = performance.now();\n await testFunction();\n const endTime = performance.now();\n renderTimes.push(endTime - startTime);\n }\n\n memoryAfter = this.getMemoryUsage();\n\n } catch (err) {\n error = err instanceof Error ? err.message : String(err);\n }\n\n const averageRenderTime = renderTimes.reduce((sum, time) => sum + time, 0) / renderTimes.length;\n const minRenderTime = Math.min(...renderTimes);\n const maxRenderTime = Math.max(...renderTimes);\n const memoryUsage = memoryAfter - memoryBefore;\n\n const passed = !error && \n averageRenderTime <= config.expectedThreshold.renderTime &&\n memoryUsage <= config.expectedThreshold.memoryUsage;\n\n const result: PerformanceTestResult = {\n testName: config.name,\n passed,\n metrics: {\n averageRenderTime,\n minRenderTime: isFinite(minRenderTime) ? minRenderTime : 0,\n maxRenderTime: isFinite(maxRenderTime) ? maxRenderTime : 0,\n memoryUsage,\n iterations: config.iterations\n },\n threshold: config.expectedThreshold,\n error\n };\n\n this.results.push(result);\n return result;\n }\n\n private getMemoryUsage(): number {\n if ('memory' in performance) {\n return (performance as any).memory.usedJSHeapSize || 0;\n }\n return 0;\n }\n\n // Component rendering performance test\n async testComponentRender(\n componentName: string,\n renderFunction: () => any,\n expectedRenderTime = 16 // 60fps target\n ): Promise<PerformanceTestResult> {\n const config: PerformanceTestConfig = {\n name: `${componentName} Render Performance`,\n iterations: 100,\n warmupIterations: 10,\n timeout: 5000,\n expectedThreshold: {\n renderTime: expectedRenderTime,\n memoryUsage: 1024 * 1024 // 1MB\n }\n };\n\n return this.runTest(config, renderFunction);\n }\n\n // Bundle loading performance test\n async testBundleLoading(\n bundlePath: string,\n expectedLoadTime = 1000 // 1 second\n ): Promise<PerformanceTestResult> {\n const config: PerformanceTestConfig = {\n name: `Bundle Loading: ${bundlePath}`,\n iterations: 5,\n warmupIterations: 1,\n timeout: 10000,\n expectedThreshold: {\n renderTime: expectedLoadTime,\n memoryUsage: 5 * 1024 * 1024 // 5MB\n }\n };\n\n return this.runTest(config, async () => {\n // Simulate bundle loading\n const startTime = performance.now();\n try {\n // Use fetch instead of dynamic import to avoid bundler issues\n const response = await fetch(bundlePath);\n if (!response.ok) {\n throw new Error(`Failed to load bundle: ${response.status}`);\n }\n await response.blob(); // Consume the response\n } catch (error) {\n console.warn(`Bundle loading test failed for ${bundlePath}:`, error);\n // Return a mock time for testing purposes\n }\n const endTime = performance.now();\n return endTime - startTime;\n });\n }\n\n // Memory leak detection test\n async testMemoryLeaks(\n testFunction: () => any,\n iterations = 1000\n ): Promise<PerformanceTestResult> {\n const config: PerformanceTestConfig = {\n name: 'Memory Leak Detection',\n iterations,\n warmupIterations: 100,\n timeout: 30000,\n expectedThreshold: {\n renderTime: Infinity, // Not testing render time\n memoryUsage: 10 * 1024 * 1024 // 10MB max increase\n }\n };\n\n const memoryBefore = this.getMemoryUsage();\n \n const result = await this.runTest(config, testFunction);\n \n const memoryAfter = this.getMemoryUsage();\n const memoryIncrease = memoryAfter - memoryBefore;\n \n // Check for memory leaks (memory should not increase significantly)\n const hasMemoryLeak = memoryIncrease > config.expectedThreshold.memoryUsage;\n \n return {\n ...result,\n passed: result.passed && !hasMemoryLeak,\n error: hasMemoryLeak ? `Potential memory leak detected: ${Math.round(memoryIncrease / 1024 / 1024)}MB increase` : result.error\n };\n }\n\n // Interaction delay test\n async testInteractionDelay(\n interactionFunction: () => any,\n expectedDelay = 100 // 100ms\n ): Promise<PerformanceTestResult> {\n const config: PerformanceTestConfig = {\n name: 'Interaction Delay',\n iterations: 50,\n warmupIterations: 5,\n timeout: 5000,\n expectedThreshold: {\n renderTime: expectedDelay,\n memoryUsage: 1024 * 1024 // 1MB\n }\n };\n\n return this.runTest(config, interactionFunction);\n }\n\n // Regression testing\n async runRegressionTests(\n currentMetrics: PerformanceMetrics,\n baselineMetrics?: PerformanceMetrics\n ): Promise<{\n passed: boolean;\n regressions: ReturnType<PerformanceRegressionDetector['detectRegression']>;\n }> {\n if (baselineMetrics) {\n this.regressionDetector.setBaseline(baselineMetrics);\n }\n\n const regressions = this.regressionDetector.detectRegression(currentMetrics);\n const passed = regressions.length === 0;\n\n return { passed, regressions };\n }\n\n // Get all test results\n getResults(): PerformanceTestResult[] {\n return [...this.results];\n }\n\n // Get test summary\n getSummary(): {\n totalTests: number;\n passedTests: number;\n failedTests: number;\n passRate: number;\n } {\n const totalTests = this.results.length;\n const passedTests = this.results.filter(result => result.passed).length;\n const failedTests = totalTests - passedTests;\n const passRate = totalTests > 0 ? (passedTests / totalTests) * 100 : 0;\n\n return { totalTests, passedTests, failedTests, passRate };\n }\n\n // Clear test results\n clearResults(): void {\n this.results = [];\n }\n\n // Generate performance report\n generateReport(): string {\n const summary = this.getSummary();\n let report = `Performance Test Report\\n`;\n report += `========================\\n\\n`;\n report += `Total Tests: ${summary.totalTests}\\n`;\n report += `Passed: ${summary.passedTests}\\n`;\n report += `Failed: ${summary.failedTests}\\n`;\n report += `Pass Rate: ${summary.passRate.toFixed(1)}%\\n\\n`;\n\n if (this.results.length > 0) {\n report += `Detailed Results:\\n`;\n report += `-----------------\\n\\n`;\n\n this.results.forEach((result, index) => {\n report += `${index + 1}. ${result.testName}\\n`;\n report += ` Status: ${result.passed ? 'PASS' : 'FAIL'}\\n`;\n report += ` Average Render Time: ${result.metrics.averageRenderTime.toFixed(2)}ms\\n`;\n report += ` Min/Max Render Time: ${result.metrics.minRenderTime.toFixed(2)}ms / ${result.metrics.maxRenderTime.toFixed(2)}ms\\n`;\n report += ` Memory Usage: ${Math.round(result.metrics.memoryUsage / 1024)} KB\\n`;\n report += ` Iterations: ${result.metrics.iterations}\\n`;\n \n if (result.error) {\n report += ` Error: ${result.error}\\n`;\n }\n \n report += `\\n`;\n });\n }\n\n return report;\n }\n}\n\n// Global performance benchmark instance\nexport const performanceBenchmark = new PerformanceBenchmark();\n\n// Utility functions for common performance tests\nexport const performanceTestUtils = {\n // Test component rendering performance\n async testComponent(\n Component: any,\n props: any = {},\n expectedRenderTime = 16\n ): Promise<PerformanceTestResult> {\n return performanceBenchmark.testComponentRender(\n Component.displayName || Component.name || 'Component',\n () => {\n // This would need React Testing Library in a real test environment\n // For now, we'll simulate component rendering\n return { type: Component, props }; // Mock element\n },\n expectedRenderTime\n );\n },\n\n // Test hook performance\n async testHook(\n hookFunction: () => any,\n hookName: string,\n expectedExecutionTime = 1\n ): Promise<PerformanceTestResult> {\n const config: PerformanceTestConfig = {\n name: `Hook Performance: ${hookName}`,\n iterations: 1000,\n warmupIterations: 100,\n timeout: 5000,\n expectedThreshold: {\n renderTime: expectedExecutionTime,\n memoryUsage: 1024 * 1024 // 1MB\n }\n };\n\n return performanceBenchmark.runTest(config, hookFunction);\n },\n\n // Test async operation performance\n async testAsyncOperation(\n operation: () => Promise<any>,\n operationName: string,\n expectedTime = 1000\n ): Promise<PerformanceTestResult> {\n const config: PerformanceTestConfig = {\n name: `Async Operation: ${operationName}`,\n iterations: 10,\n warmupIterations: 2,\n timeout: 30000,\n expectedThreshold: {\n renderTime: expectedTime,\n memoryUsage: 2 * 1024 * 1024 // 2MB\n }\n };\n\n return performanceBenchmark.runTest(config, operation);\n },\n\n // Test bundle size impact\n async measureBundleImpact(\n beforeFunction: () => void,\n afterFunction: () => void,\n featureName: string\n ): Promise<{\n bundleIncrease: number;\n memoryIncrease: number;\n renderTimeImpact: number;\n }> {\n const beforeMemory = (performance as any).memory?.usedJSHeapSize || 0;\n const beforeTime = performance.now();\n \n beforeFunction();\n \n const midMemory = (performance as any).memory?.usedJSHeapSize || 0;\n const midTime = performance.now();\n \n afterFunction();\n \n const afterMemory = (performance as any).memory?.usedJSHeapSize || 0;\n const afterTime = performance.now();\n\n return {\n bundleIncrease: afterMemory - beforeMemory,\n memoryIncrease: midMemory - beforeMemory,\n renderTimeImpact: (afterTime - midTime) - (midTime - beforeTime)\n };\n }\n};\n\n// Performance testing framework\nexport class PerformanceTestFramework {\n private benchmark = new PerformanceBenchmark();\n private suites: Map<string, PerformanceTestConfig[]> = new Map();\n\n // Register a test suite\n registerSuite(suiteName: string, tests: PerformanceTestConfig[]) {\n this.suites.set(suiteName, tests);\n }\n\n // Run all tests in a suite\n async runSuite(\n suiteName: string,\n testImplementations: Map<string, () => any>\n ): Promise<PerformanceTestResult[]> {\n const tests = this.suites.get(suiteName);\n if (!tests) {\n throw new Error(`Test suite '${suiteName}' not found`);\n }\n\n const results: PerformanceTestResult[] = [];\n\n for (const test of tests) {\n const implementation = testImplementations.get(test.name);\n if (!implementation) {\n console.warn(`No implementation found for test '${test.name}'`);\n continue;\n }\n\n const result = await this.benchmark.runTest(test, implementation);\n results.push(result);\n }\n\n return results;\n }\n\n // Run all registered test suites\n async runAllSuites(\n implementations: Map<string, Map<string, () => any>>\n ): Promise<Map<string, PerformanceTestResult[]>> {\n const allResults = new Map<string, PerformanceTestResult[]>();\n\n for (const [suiteName] of this.suites) {\n const suiteImplementations = implementations.get(suiteName);\n if (!suiteImplementations) {\n console.warn(`No implementations found for suite '${suiteName}'`);\n continue;\n }\n\n const results = await this.runSuite(suiteName, suiteImplementations);\n allResults.set(suiteName, results);\n }\n\n return allResults;\n }\n\n // Generate comprehensive report\n generateComprehensiveReport(): string {\n const summary = this.benchmark.getSummary();\n let report = this.benchmark.generateReport();\n\n // Add suite breakdown if available\n if (this.suites.size > 0) {\n report += `\\nTest Suites:\\n`;\n report += `============\\n\\n`;\n\n for (const [suiteName, tests] of this.suites) {\n report += `Suite: ${suiteName}\\n`;\n report += `Tests: ${tests.length}\\n\\n`;\n }\n }\n\n return report;\n }\n}\n\nexport const performanceTestFramework = new PerformanceTestFramework();","// Performance budget configuration\nexport interface PerformanceBudget {\n name: string;\n category: 'bundle' | 'runtime' | 'network' | 'memory';\n limit: number;\n unit: 'bytes' | 'ms' | 'score' | 'percent';\n severity: 'error' | 'warning' | 'info';\n description: string;\n}\n\n// Performance budget violation\nexport interface BudgetViolation {\n budget: PerformanceBudget;\n actualValue: number;\n overageAmount: number;\n overagePercentage: number;\n timestamp: number;\n}\n\n// Alert configuration\nexport interface AlertConfig {\n enabled: boolean;\n channels: AlertChannel[];\n threshold: number; // Number of violations before alerting\n cooldown: number; // Minimum time between alerts (ms)\n}\n\nexport interface AlertChannel {\n type: 'console' | 'webhook' | 'email' | 'slack';\n config: {\n url?: string;\n email?: string;\n token?: string;\n channel?: string;\n };\n}\n\n// Default performance budgets for media player\nexport const defaultPerformanceBudgets: PerformanceBudget[] = [\n // Bundle size budgets\n {\n name: 'Main Bundle Size (ESM)',\n category: 'bundle',\n limit: 250 * 1024, // 250KB\n unit: 'bytes',\n severity: 'error',\n description: 'Main bundle should stay under 250KB for fast initial loading'\n },\n {\n name: 'Main Bundle Size (CJS)',\n category: 'bundle', \n limit: 200 * 1024, // 200KB\n unit: 'bytes',\n severity: 'error',\n description: 'CJS bundle should be smaller due to better compression'\n },\n {\n name: 'Core Module Size',\n category: 'bundle',\n limit: 15 * 1024, // 15KB\n unit: 'bytes',\n severity: 'warning',\n description: 'Core architecture should remain lightweight'\n },\n {\n name: 'Enhanced Components Size',\n category: 'bundle',\n limit: 40 * 1024, // 40KB\n unit: 'bytes',\n severity: 'warning',\n description: 'Enhanced components bundle size'\n },\n \n // Runtime performance budgets\n {\n name: 'Component Render Time',\n category: 'runtime',\n limit: 16, // 16ms for 60fps\n unit: 'ms',\n severity: 'error',\n description: 'Component rendering should complete within one frame'\n },\n {\n name: 'First Input Delay',\n category: 'runtime',\n limit: 100, // 100ms\n unit: 'ms',\n severity: 'error',\n description: 'First Input Delay should be under 100ms for good UX'\n },\n {\n name: 'Largest Contentful Paint',\n category: 'runtime',\n limit: 2500, // 2.5s\n unit: 'ms',\n severity: 'warning',\n description: 'LCP should be under 2.5s for good Core Web Vitals score'\n },\n {\n name: 'Cumulative Layout Shift',\n category: 'runtime',\n limit: 0.1,\n unit: 'score',\n severity: 'warning',\n description: 'CLS should be under 0.1 for good visual stability'\n },\n \n // Memory budgets\n {\n name: 'Memory Usage',\n category: 'memory',\n limit: 50 * 1024 * 1024, // 50MB\n unit: 'bytes',\n severity: 'warning',\n description: 'Memory usage should stay under 50MB for good performance'\n },\n {\n name: 'Memory Increase Per Operation',\n category: 'memory',\n limit: 1024 * 1024, // 1MB\n unit: 'bytes',\n severity: 'error',\n description: 'Each operation should not increase memory by more than 1MB'\n },\n \n // Network budgets (for media loading)\n {\n name: 'Media Load Time',\n category: 'network',\n limit: 3000, // 3s\n unit: 'ms',\n severity: 'warning',\n description: 'Media should start loading within 3 seconds'\n }\n];\n\n// Performance budget monitor\nexport class PerformanceBudgetMonitor {\n private budgets: Map<string, PerformanceBudget> = new Map();\n private violations: BudgetViolation[] = [];\n private alertConfig: AlertConfig;\n private lastAlertTime = 0;\n\n constructor(\n budgets: PerformanceBudget[] = defaultPerformanceBudgets,\n alertConfig: AlertConfig = {\n enabled: true,\n channels: [{ type: 'console', config: {} }],\n threshold: 1,\n cooldown: 5 * 60 * 1000 // 5 minutes\n }\n ) {\n budgets.forEach(budget => {\n this.budgets.set(budget.name, budget);\n });\n this.alertConfig = alertConfig;\n }\n\n // Check a single metric against budgets\n checkMetric(\n metricName: string,\n value: number,\n category: PerformanceBudget['category'] = 'runtime'\n ): BudgetViolation[] {\n const violations: BudgetViolation[] = [];\n \n for (const [name, budget] of this.budgets) {\n if (budget.category === category && \n (name.includes(metricName) || metricName.includes(name.split(' ')[0]?.toLowerCase() || ''))) {\n \n if (value > budget.limit) {\n const violation: BudgetViolation = {\n budget,\n actualValue: value,\n overageAmount: value - budget.limit,\n overagePercentage: ((value - budget.limit) / budget.limit) * 100,\n timestamp: Date.now()\n };\n \n violations.push(violation);\n this.violations.push(violation);\n }\n }\n }\n\n if (violations.length > 0) {\n this.handleViolations(violations);\n }\n\n return violations;\n }\n\n // Check bundle sizes\n async checkBundleSizes(distPath: string): Promise<BudgetViolation[]> {\n const violations: BudgetViolation[] = [];\n \n // Only check bundle sizes in Node.js environment\n if (typeof window !== 'undefined' || typeof process === 'undefined') {\n console.warn('Bundle size checking is only available in Node.js environment');\n return violations;\n }\n \n // Bundle size checking is disabled in browser environments\n console.warn('Bundle size checking disabled - use Node.js cicdIntegration from @rp/baroiplayer/core/performance/cicd for CI/CD environments');\n\n return violations;\n }\n\n // Check runtime performance\n checkRuntimeMetrics(metrics: {\n renderTime?: number;\n fid?: number;\n lcp?: number;\n cls?: number;\n memoryUsage?: number;\n mediaLoadTime?: number;\n }): BudgetViolation[] {\n const allViolations: BudgetViolation[] = [];\n\n if (metrics.renderTime !== undefined) {\n allViolations.push(...this.checkMetric('Component Render Time', metrics.renderTime, 'runtime'));\n }\n \n if (metrics.fid !== undefined) {\n allViolations.push(...this.checkMetric('First Input Delay', metrics.fid, 'runtime'));\n }\n \n if (metrics.lcp !== undefined) {\n allViolations.push(...this.checkMetric('Largest Contentful Paint', metrics.lcp, 'runtime'));\n }\n \n if (metrics.cls !== undefined) {\n allViolations.push(...this.checkMetric('Cumulative Layout Shift', metrics.cls, 'runtime'));\n }\n \n if (metrics.memoryUsage !== undefined) {\n allViolations.push(...this.checkMetric('Memory Usage', metrics.memoryUsage, 'memory'));\n }\n \n if (metrics.mediaLoadTime !== undefined) {\n allViolations.push(...this.checkMetric('Media Load Time', metrics.mediaLoadTime, 'network'));\n }\n\n return allViolations;\n }\n\n // Handle budget violations\n private async handleViolations(violations: BudgetViolation[]) {\n if (!this.alertConfig.enabled) return;\n \n const now = Date.now();\n const errorViolations = violations.filter(v => v.budget.severity === 'error');\n \n // Check if we should send an alert based on threshold and cooldown\n if (errorViolations.length >= this.alertConfig.threshold &&\n now - this.lastAlertTime >= this.alertConfig.cooldown) {\n \n await this.sendAlerts(violations);\n this.lastAlertTime = now;\n }\n }\n\n // Send alerts through configured channels\n private async sendAlerts(violations: BudgetViolation[]) {\n const message = this.formatAlertMessage(violations);\n \n for (const channel of this.alertConfig.channels) {\n try {\n await this.sendAlert(channel, message);\n } catch (error) {\n console.error(`Failed to send alert via ${channel.type}:`, error);\n }\n }\n }\n\n // Format alert message\n private formatAlertMessage(violations: BudgetViolation[]): string {\n let message = `🚨 Performance Budget Violations Detected!\\n\\n`;\n \n violations.forEach(violation => {\n const { budget, actualValue, overageAmount, overagePercentage } = violation;\n const unit = this.getUnitDisplay(budget.unit);\n \n message += `❌ ${budget.name}\\n`;\n message += ` Limit: ${this.formatValue(budget.limit, budget.unit)}\\n`;\n message += ` Actual: ${this.formatValue(actualValue, budget.unit)}\\n`;\n message += ` Overage: ${this.formatValue(overageAmount, budget.unit)} (+${overagePercentage.toFixed(1)}%)\\n`;\n message += ` Severity: ${budget.severity.toUpperCase()}\\n\\n`;\n });\n \n message += `Time: ${new Date().toISOString()}\\n`;\n message += `Total Violations: ${violations.length}`;\n \n return message;\n }\n\n // Send alert to specific channel\n private async sendAlert(channel: AlertChannel, message: string) {\n switch (channel.type) {\n case 'console':\n console.error(message);\n break;\n \n case 'webhook':\n if (channel.config.url) {\n const response = await fetch(channel.config.url, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({ text: message, timestamp: Date.now() })\n });\n if (!response.ok) {\n throw new Error(`Webhook failed: ${response.status}`);\n }\n }\n break;\n \n case 'slack':\n if (channel.config.url) {\n const response = await fetch(channel.config.url, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({\n text: message,\n channel: channel.config.channel,\n username: 'BaroiPlayer Performance Monitor'\n })\n });\n if (!response.ok) {\n throw new Error(`Slack webhook failed: ${response.status}`);\n }\n }\n break;\n \n default:\n console.warn(`Unsupported alert channel: ${channel.type}`);\n }\n }\n\n // Helper methods\n private formatValue(value: number, unit: PerformanceBudget['unit']): string {\n switch (unit) {\n case 'bytes':\n return this.formatBytes(value);\n case 'ms':\n return `${value.toFixed(2)}ms`;\n case 'score':\n return value.toFixed(3);\n case 'percent':\n return `${value.toFixed(1)}%`;\n default:\n return value.toString();\n }\n }\n\n private formatBytes(bytes: number): string {\n if (bytes >= 1024 * 1024) {\n return `${(bytes / 1024 / 1024).toFixed(2)}MB`;\n }\n if (bytes >= 1024) {\n return `${(bytes / 1024).toFixed(2)}KB`;\n }\n return `${bytes}B`;\n }\n\n private getUnitDisplay(unit: PerformanceBudget['unit']): string {\n const displays = {\n 'bytes': 'bytes',\n 'ms': 'milliseconds', \n 'score': 'score',\n 'percent': 'percent'\n };\n return displays[unit] || unit;\n }\n\n // Management methods\n addBudget(budget: PerformanceBudget) {\n this.budgets.set(budget.name, budget);\n }\n\n removeBudget(name: string) {\n this.budgets.delete(name);\n }\n\n updateBudget(name: string, updates: Partial<PerformanceBudget>) {\n const existing = this.budgets.get(name);\n if (existing) {\n this.budgets.set(name, { ...existing, ...updates });\n }\n }\n\n getBudgets(): PerformanceBudget[] {\n return Array.from(this.budgets.values());\n }\n\n getViolations(since?: number): BudgetViolation[] {\n if (since) {\n return this.violations.filter(v => v.timestamp >= since);\n }\n return [...this.violations];\n }\n\n clearViolations() {\n this.violations = [];\n }\n\n getViolationSummary(): {\n total: number;\n byCategory: Record<string, number>;\n bySeverity: Record<string, number>;\n } {\n const byCategory: Record<string, number> = {};\n const bySeverity: Record<string, number> = {};\n\n this.violations.forEach(violation => {\n const category = violation.budget.category;\n const severity = violation.budget.severity;\n \n byCategory[category] = (byCategory[category] || 0) + 1;\n bySeverity[severity] = (bySeverity[severity] || 0) + 1;\n });\n\n return {\n total: this.violations.length,\n byCategory,\n bySeverity\n };\n }\n}\n\n// Global performance budget monitor\nexport const performanceBudgetMonitor = new PerformanceBudgetMonitor();\n\n","import React from 'react';\n\n// Network monitoring and adaptive loading\nexport interface NetworkInfo {\n effectiveType: '2g' | '3g' | '4g' | '5g' | 'unknown';\n downlink: number; // Mbps\n rtt: number; // Round trip time in ms\n saveData: boolean;\n isOnline: boolean;\n}\n\nexport interface MediaLoadingConfig {\n preloadStrategy: 'none' | 'metadata' | 'auto';\n adaptiveBitrate: boolean;\n maxPreloadSize: number; // bytes\n networkThresholds: {\n '2g': { maxBitrate: number; preload: boolean };\n '3g': { maxBitrate: number; preload: boolean };\n '4g': { maxBitrate: number; preload: boolean };\n '5g': { maxBitrate: number; preload: boolean };\n };\n bufferSize: number; // seconds\n enableServiceWorker: boolean;\n}\n\nexport const defaultMediaLoadingConfig: MediaLoadingConfig = {\n preloadStrategy: 'metadata',\n adaptiveBitrate: true,\n maxPreloadSize: 2 * 1024 * 1024, // 2MB\n networkThresholds: {\n '2g': { maxBitrate: 128, preload: false }, // 128 kbps\n '3g': { maxBitrate: 500, preload: false }, // 500 kbps \n '4g': { maxBitrate: 2000, preload: true }, // 2 Mbps\n '5g': { maxBitrate: 10000, preload: true } // 10 Mbps\n },\n bufferSize: 10, // 10 seconds\n enableServiceWorker: true\n};\n\n// Media loading performance tracker\nexport interface MediaLoadingMetrics {\n loadStartTime: number;\n firstByteTime?: number;\n loadCompleteTime?: number;\n totalLoadTime?: number;\n bytesLoaded: number;\n loadSpeed: number; // bytes per second\n networkType: string;\n quality: string;\n bufferHealth: number; // 0-1 scale\n stallsCount: number;\n stallsDuration: number;\n}\n\n// Network monitoring utility\nexport class NetworkMonitor {\n private connection: any;\n private listeners: Set<(info: NetworkInfo) => void> = new Set();\n private currentInfo: NetworkInfo;\n\n constructor() {\n if (typeof window === 'undefined' || typeof navigator === 'undefined') {\n // Server-side rendering fallback\n this.connection = null;\n this.currentInfo = {\n effectiveType: 'unknown',\n downlink: 0,\n rtt: 0,\n saveData: false,\n isOnline: true\n };\n return;\n }\n\n this.connection = (navigator as any).connection || \n (navigator as any).mozConnection || \n (navigator as any).webkitConnection;\n \n this.currentInfo = this.getNetworkInfo();\n this.initializeListeners();\n }\n\n private getNetworkInfo(): NetworkInfo {\n if (typeof navigator === 'undefined') {\n // Server-side rendering fallback\n return {\n effectiveType: 'unknown',\n downlink: 0,\n rtt: 0,\n saveData: false,\n isOnline: true\n };\n }\n\n const isOnline = navigator.onLine;\n \n if (this.connection) {\n return {\n effectiveType: this.connection.effectiveType || 'unknown',\n downlink: this.connection.downlink || 0,\n rtt: this.connection.rtt || 0,\n saveData: this.connection.saveData || false,\n isOnline\n };\n }\n\n // Fallback for browsers without Network Information API\n return {\n effectiveType: 'unknown',\n downlink: 0,\n rtt: 0,\n saveData: false,\n isOnline\n };\n }\n\n private initializeListeners() {\n if (typeof window === 'undefined') {\n // Server-side rendering - skip event listeners\n return;\n }\n\n if (this.connection) {\n this.connection.addEventListener('change', this.handleNetworkChange.bind(this));\n }\n \n window.addEventListener('online', this.handleNetworkChange.bind(this));\n window.addEventListener('offline', this.handleNetworkChange.bind(this));\n }\n\n private handleNetworkChange() {\n const newInfo = this.getNetworkInfo();\n this.currentInfo = newInfo;\n this.listeners.forEach(listener => listener(newInfo));\n }\n\n getCurrentNetworkInfo(): NetworkInfo {\n return { ...this.currentInfo };\n }\n\n subscribe(listener: (info: NetworkInfo) => void): () => void {\n this.listeners.add(listener);\n return () => this.listeners.delete(listener);\n }\n\n // Estimate available bandwidth with fallback detection\n async estimateBandwidth(): Promise<number> {\n if (this.connection && this.connection.downlink) {\n return this.connection.downlink * 1000; // Convert to kbps\n }\n\n // Fallback: simple bandwidth test\n try {\n const startTime = performance.now();\n const testUrl = '/api/bandwidth-test?size=100kb'; // Would need to be implemented\n const response = await fetch(testUrl);\n const blob = await response.blob();\n const endTime = performance.now();\n \n const timeInSeconds = (endTime - startTime) / 1000;\n const bytesLoaded = blob.size;\n const bitsPerSecond = (bytesLoaded * 8) / timeInSeconds;\n \n return bitsPerSecond / 1000; // Return in kbps\n } catch (error) {\n console.warn('Bandwidth estimation failed:', error);\n return 1000; // Default to 1Mbps\n }\n }\n}\n\n// Media loading optimizer\nexport class MediaLoadingOptimizer {\n private config: MediaLoadingConfig;\n private networkMonitor: NetworkMonitor;\n private loadingMetrics: Map<string, MediaLoadingMetrics> = new Map();\n private preloadCache: Map<string, Promise<Blob>> = new Map();\n\n constructor(config: Partial<MediaLoadingConfig> = {}) {\n this.config = { ...defaultMediaLoadingConfig, ...config };\n this.networkMonitor = new NetworkMonitor();\n this.initializeNetworkMonitoring();\n }\n\n private initializeNetworkMonitoring() {\n this.networkMonitor.subscribe((networkInfo) => {\n this.handleNetworkChange(networkInfo);\n });\n }\n\n private handleNetworkChange(networkInfo: NetworkInfo) {\n console.log('Network changed:', networkInfo);\n \n // Adjust quality based on network conditions\n if (this.config.adaptiveBitrate) {\n this.adjustQualityForNetwork(networkInfo);\n }\n\n // Clear preload cache if on slow network\n if (networkInfo.effectiveType === '2g' || networkInfo.saveData) {\n this.clearPreloadCache();\n }\n }\n\n // Optimize media loading based on network conditions\n async optimizeMediaLoading(\n mediaUrl: string,\n element: HTMLMediaElement,\n options: {\n quality?: string;\n preload?: boolean;\n priority?: 'high' | 'normal' | 'low';\n } = {}\n ): Promise<MediaLoadingMetrics> {\n const startTime = performance.now();\n const networkInfo = this.networkMonitor.getCurrentNetworkInfo();\n \n const metrics: MediaLoadingMetrics = {\n loadStartTime: startTime,\n bytesLoaded: 0,\n loadSpeed: 0,\n networkType: networkInfo.effectiveType,\n quality: options.quality || 'auto',\n bufferHealth: 0,\n stallsCount: 0,\n stallsDuration: 0\n };\n\n this.loadingMetrics.set(mediaUrl, metrics);\n\n try {\n // Choose optimal loading strategy\n const loadingStrategy = this.chooseLoadingStrategy(networkInfo, options);\n \n // Apply preload strategy\n if (loadingStrategy.shouldPreload) {\n await this.preloadMedia(mediaUrl, loadingStrategy.preloadAmount);\n }\n\n // Set appropriate preload attribute\n element.preload = loadingStrategy.preloadAttribute;\n\n // Monitor loading progress\n this.monitorLoadingProgress(element, metrics);\n\n // Apply quality adjustments\n if (this.config.adaptiveBitrate && loadingStrategy.suggestedQuality) {\n this.applyQualitySettings(element, loadingStrategy.suggestedQuality);\n }\n\n return metrics;\n } catch (error) {\n console.error('Media loading optimization failed:', error);\n return metrics;\n }\n }\n\n private chooseLoadingStrategy(\n networkInfo: NetworkInfo,\n options: { preload?: boolean; priority?: string; quality?: string }\n ) {\n const effectiveType = networkInfo.effectiveType === 'unknown' ? '4g' : networkInfo.effectiveType;\n const threshold = this.config.networkThresholds[effectiveType] || \n this.config.networkThresholds['4g'];\n \n return {\n shouldPreload: options.preload !== false && threshold.preload && !networkInfo.saveData,\n preloadAmount: networkInfo.saveData ? 0 : this.config.maxPreloadSize,\n preloadAttribute: this.getPreloadAttribute(networkInfo),\n suggestedQuality: this.getSuggestedQuality(networkInfo, threshold.maxBitrate),\n bufferTarget: this.getBufferTarget(networkInfo)\n };\n }\n\n private getPreloadAttribute(networkInfo: NetworkInfo): 'none' | 'metadata' | 'auto' {\n if (networkInfo.saveData || networkInfo.effectiveType === '2g') {\n return 'none';\n }\n \n if (networkInfo.effectiveType === '3g') {\n return 'metadata';\n }\n \n return this.config.preloadStrategy;\n }\n\n private getSuggestedQuality(networkInfo: NetworkInfo, maxBitrate: number): string {\n const availableBandwidth = networkInfo.downlink * 1000; // Convert to kbps\n \n if (availableBandwidth >= maxBitrate * 2) return 'high';\n if (availableBandwidth >= maxBitrate) return 'medium';\n return 'low';\n }\n\n private getBufferTarget(networkInfo: NetworkInfo): number {\n switch (networkInfo.effectiveType) {\n case '2g': return 2; // 2 seconds\n case '3g': return 5; // 5 seconds\n case '4g': return this.config.bufferSize;\n case '5g': return this.config.bufferSize * 1.5;\n default: return this.config.bufferSize;\n }\n }\n\n // Preload media content\n async preloadMedia(url: string, maxSize: number): Promise<void> {\n if (this.preloadCache.has(url)) {\n return; // Already preloading or preloaded\n }\n\n const preloadPromise = this.fetchWithProgress(url, maxSize);\n this.preloadCache.set(url, preloadPromise);\n\n try {\n await preloadPromise;\n } catch (error) {\n console.warn(`Preload failed for ${url}:`, error);\n this.preloadCache.delete(url);\n }\n }\n\n private async fetchWithProgress(url: string, maxSize: number): Promise<Blob> {\n const response = await fetch(url, {\n headers: {\n 'Range': `bytes=0-${maxSize - 1}` // Limit preload size\n }\n });\n\n if (!response.ok) {\n throw new Error(`Failed to preload: ${response.status}`);\n }\n\n const reader = response.body?.getReader();\n if (!reader) {\n throw new Error('Response body not readable');\n }\n\n const chunks: Uint8Array[] = [];\n let bytesRead = 0;\n\n try {\n while (bytesRead < maxSize) {\n const { done, value } = await reader.read();\n if (done) break;\n \n chunks.push(value);\n bytesRead += value.length;\n }\n } finally {\n reader.releaseLock();\n }\n\n return new Blob(chunks);\n }\n\n // Monitor loading progress and update metrics\n private monitorLoadingProgress(element: HTMLMediaElement, metrics: MediaLoadingMetrics) {\n let stallStartTime: number | null = null;\n\n const updateMetrics = () => {\n if (element.buffered.length > 0) {\n const bufferedEnd = element.buffered.end(element.buffered.length - 1);\n const currentTime = element.currentTime;\n metrics.bufferHealth = Math.min((bufferedEnd - currentTime) / this.config.bufferSize, 1);\n }\n };\n\n // Track first byte\n const onLoadStart = () => {\n metrics.firstByteTime = performance.now();\n };\n\n // Track load completion\n const onCanPlay = () => {\n metrics.loadCompleteTime = performance.now();\n metrics.totalLoadTime = metrics.loadCompleteTime - metrics.loadStartTime;\n \n // Calculate load speed\n if (metrics.totalLoadTime && metrics.bytesLoaded > 0) {\n metrics.loadSpeed = metrics.bytesLoaded / (metrics.totalLoadTime / 1000);\n }\n };\n\n // Track stalls\n const onWaiting = () => {\n if (stallStartTime === null) {\n stallStartTime = performance.now();\n metrics.stallsCount++;\n }\n };\n\n const onPlaying = () => {\n if (stallStartTime !== null) {\n metrics.stallsDuration += performance.now() - stallStartTime;\n stallStartTime = null;\n }\n updateMetrics();\n };\n\n // Track progress\n const onProgress = () => {\n if (element.buffered.length > 0) {\n const bufferedBytes = element.buffered.end(0) * 1000; // Rough estimate\n metrics.bytesLoaded = bufferedBytes;\n }\n updateMetrics();\n };\n\n // Add event listeners\n element.addEventListener('loadstart', onLoadStart);\n element.addEventListener('canplay', onCanPlay);\n element.addEventListener('waiting', onWaiting);\n element.addEventListener('playing', onPlaying);\n element.addEventListener('progress', onProgress);\n\n // Cleanup function\n const cleanup = () => {\n element.removeEventListener('loadstart', onLoadStart);\n element.removeEventListener('canplay', onCanPlay);\n element.removeEventListener('waiting', onWaiting);\n element.removeEventListener('playing', onPlaying);\n element.removeEventListener('progress', onProgress);\n };\n\n // Auto-cleanup after 5 minutes\n setTimeout(cleanup, 5 * 60 * 1000);\n }\n\n // Apply quality settings (would integrate with HLS.js or similar)\n private applyQualitySettings(element: HTMLMediaElement, quality: string) {\n // This would integrate with your video streaming library\n console.log(`Applying quality setting: ${quality} to`, element);\n \n // Example integration with HLS.js:\n // if (element.hls) {\n // element.hls.currentLevel = this.getQualityLevel(quality);\n // }\n }\n\n private adjustQualityForNetwork(networkInfo: NetworkInfo) {\n // Auto-adjust quality for all active media elements\n console.log('Adjusting quality for network conditions:', networkInfo.effectiveType);\n }\n\n // Clear preload cache to save memory\n clearPreloadCache() {\n this.preloadCache.clear();\n }\n\n // Get loading metrics for a specific media URL\n getLoadingMetrics(url: string): MediaLoadingMetrics | undefined {\n return this.loadingMetrics.get(url);\n }\n\n // Get all loading metrics\n getAllMetrics(): MediaLoadingMetrics[] {\n return Array.from(this.loadingMetrics.values());\n }\n\n // Calculate average loading performance\n getAverageLoadingTime(): number {\n const metrics = this.getAllMetrics();\n const completedLoads = metrics.filter(m => m.totalLoadTime !== undefined);\n \n if (completedLoads.length === 0) return 0;\n \n const total = completedLoads.reduce((sum, m) => sum + (m.totalLoadTime || 0), 0);\n return total / completedLoads.length;\n }\n\n // Get network-specific performance stats\n getNetworkPerformanceStats(): {\n networkType: string;\n avgLoadTime: number;\n avgStalls: number;\n avgBufferHealth: number;\n }[] {\n const statsByNetwork = new Map<string, MediaLoadingMetrics[]>();\n \n this.getAllMetrics().forEach(metrics => {\n const network = metrics.networkType;\n if (!statsByNetwork.has(network)) {\n statsByNetwork.set(network, []);\n }\n statsByNetwork.get(network)!.push(metrics);\n });\n\n return Array.from(statsByNetwork.entries()).map(([networkType, metrics]) => ({\n networkType,\n avgLoadTime: metrics.reduce((sum, m) => sum + (m.totalLoadTime || 0), 0) / metrics.length,\n avgStalls: metrics.reduce((sum, m) => sum + m.stallsCount, 0) / metrics.length,\n avgBufferHealth: metrics.reduce((sum, m) => sum + m.bufferHealth, 0) / metrics.length\n }));\n }\n}\n\n// Global media loading optimizer instance\nexport const mediaLoadingOptimizer = new MediaLoadingOptimizer();\n\n// React hook for media loading optimization\nexport function useMediaLoadingOptimizer(config?: Partial<MediaLoadingConfig>) {\n const [optimizer] = React.useState(() => \n config ? new MediaLoadingOptimizer(config) : mediaLoadingOptimizer\n );\n \n const [networkInfo, setNetworkInfo] = React.useState<NetworkInfo | null>(null);\n const [loadingMetrics, setLoadingMetrics] = React.useState<MediaLoadingMetrics[]>([]);\n\n React.useEffect(() => {\n const unsubscribe = optimizer['networkMonitor'].subscribe(setNetworkInfo);\n setNetworkInfo(optimizer['networkMonitor'].getCurrentNetworkInfo());\n\n // Update metrics periodically\n const interval = setInterval(() => {\n setLoadingMetrics(optimizer.getAllMetrics());\n }, 1000);\n\n return () => {\n unsubscribe();\n clearInterval(interval);\n };\n }, [optimizer]);\n\n const optimizeLoading = React.useCallback(\n (mediaUrl: string, element: HTMLMediaElement, options?: any) => {\n return optimizer.optimizeMediaLoading(mediaUrl, element, options);\n },\n [optimizer]\n );\n\n return {\n networkInfo,\n loadingMetrics,\n optimizeLoading,\n averageLoadTime: optimizer.getAverageLoadingTime(),\n networkStats: optimizer.getNetworkPerformanceStats()\n };\n}","import React, { createContext, useContext, useMemo } from 'react'\nimport { EventBus } from '../events'\nimport { PluginRegistry, ConsolePluginLogger } from '../plugins'\n\n// Service interfaces\nexport interface MediaService {\n loadMedia(src: string): Promise<void>\n play(): Promise<void>\n pause(): Promise<void>\n seek(time: number): Promise<void>\n setVolume(volume: number): Promise<void>\n}\n\nexport interface StorageService {\n get<T>(key: string): T | null\n set<T>(key: string, value: T): void\n remove(key: string): void\n clear(): void\n}\n\nexport interface AnalyticsService {\n track(event: string, data?: any): void\n identify(userId: string, traits?: any): void\n page(name: string, properties?: any): void\n}\n\nexport interface LoggerService {\n info(message: string, data?: any): void\n warn(message: string, data?: any): void\n error(message: string, data?: any): void\n debug(message: string, data?: any): void\n}\n\n// Service implementations\nclass LocalStorageService implements StorageService {\n get<T>(key: string): T | null {\n try {\n const item = localStorage.getItem(`baroi-player-${key}`)\n return item ? JSON.parse(item) as T : null\n } catch {\n return null\n }\n }\n\n set<T>(key: string, value: T): void {\n try {\n localStorage.setItem(`baroi-player-${key}`, JSON.stringify(value))\n } catch (error) {\n console.warn('Failed to store data:', error)\n }\n }\n\n remove(key: string): void {\n try {\n localStorage.removeItem(`baroi-player-${key}`)\n } catch (error) {\n console.warn('Failed to remove data:', error)\n }\n }\n\n clear(): void {\n try {\n Object.keys(localStorage).forEach(key => {\n if (key.startsWith('baroi-player-')) {\n localStorage.removeItem(key)\n }\n })\n } catch (error) {\n console.warn('Failed to clear data:', error)\n }\n }\n}\n\nclass NoOpAnalyticsService implements AnalyticsService {\n track(event: string, data?: any): void {\n console.log('Analytics:', event, data)\n }\n\n identify(userId: string, traits?: any): void {\n console.log('Analytics identify:', userId, traits)\n }\n\n page(name: string, properties?: any): void {\n console.log('Analytics page:', name, properties)\n }\n}\n\n// Service container\nexport interface ServiceContainer {\n eventBus: EventBus\n pluginRegistry: PluginRegistry\n storage: StorageService\n analytics: AnalyticsService\n logger: LoggerService\n}\n\n// Service provider context\nconst ServiceContext = createContext<ServiceContainer | null>(null)\n\n// Service provider props\nexport interface ServiceProviderProps {\n children: React.ReactNode\n services?: Partial<ServiceContainer>\n}\n\n// Service provider component\nexport function ServiceProvider({ children, services = {} }: ServiceProviderProps) {\n const container = useMemo<ServiceContainer>(() => {\n const logger = services.logger || new ConsolePluginLogger('[BaroiPlayer]')\n const eventBus = services.eventBus || new EventBus()\n const pluginRegistry = services.pluginRegistry || new PluginRegistry(logger)\n const storage = services.storage || new LocalStorageService()\n const analytics = services.analytics || new NoOpAnalyticsService()\n\n return {\n eventBus,\n pluginRegistry,\n storage,\n analytics,\n logger\n }\n }, [services])\n\n return (\n <ServiceContext.Provider value={container}>\n {children}\n </ServiceContext.Provider>\n )\n}\n\n// Service hooks\nexport function useServices(): ServiceContainer {\n const context = useContext(ServiceContext)\n if (!context) {\n throw new Error('useServices must be used within ServiceProvider')\n }\n return context\n}\n\nexport function useServiceEventBus(): EventBus {\n return useServices().eventBus\n}\n\nexport function usePluginRegistry(): PluginRegistry {\n return useServices().pluginRegistry\n}\n\nexport function useStorage(): StorageService {\n return useServices().storage\n}\n\nexport function useAnalytics(): AnalyticsService {\n return useServices().analytics\n}\n\nexport function useLogger(): LoggerService {\n return useServices().logger\n}\n\n// Service decorators for dependency injection\nexport function withServices<P extends object>(\n Component: React.ComponentType<P & { services: ServiceContainer }>\n): React.ComponentType<P> {\n return function WithServicesComponent(props: P) {\n const services = useServices()\n return <Component {...props} services={services} />\n }\n}","import React from 'react'\nimport { EventBus } from './events'\nimport { PluginRegistry } from './plugins'\nimport { ServiceProvider, type ServiceContainer } from './providers/service-provider'\n\n// Architecture configuration\nexport interface ArchitectureConfig {\n plugins?: string[]\n services?: Partial<ServiceContainer>\n eventMiddleware?: any[]\n debug?: boolean\n}\n\n// Create architecture wrapper component\nexport function createArchitecture(config: ArchitectureConfig = {}) {\n return function ArchitectureProvider({ children }: { children: React.ReactNode }) {\n return (\n <ServiceProvider services={config.services}>\n {children}\n </ServiceProvider>\n )\n }\n}\n\n// Architecture health check\nexport async function healthCheck(services: ServiceContainer) {\n const results = {\n eventBus: {\n healthy: true,\n listenerCount: services.eventBus.getListenerCount(),\n eventTypes: services.eventBus.getEventTypes().length\n },\n plugins: await services.pluginRegistry.healthCheck(),\n timestamp: Date.now()\n }\n\n return results\n}","import React, { lazy, Suspense } from 'react';\n\n// Feature flags for progressive loading\nexport const FEATURES = {\n SUBTITLES: 'subtitles',\n PLAYLISTS: 'playlists', \n ADVANCED_CONTROLS: 'advanced_controls',\n ANALYTICS: 'analytics',\n PICTURE_IN_PICTURE: 'picture_in_picture',\n QUALITY_SELECTOR: 'quality_selector',\n PLAYBACK_SPEED: 'playback_speed',\n CHAPTERS: 'chapters',\n THUMBNAILS: 'thumbnails',\n KEYBOARD_SHORTCUTS: 'keyboard_shortcuts'\n} as const;\n\nexport type FeatureType = typeof FEATURES[keyof typeof FEATURES];\n\n// Progressive loading configuration\nexport interface ProgressiveLoadingConfig {\n enabledFeatures: FeatureType[];\n loadingStrategy: 'lazy' | 'preload' | 'immediate';\n fallbackTimeout: number;\n retryAttempts: number;\n}\n\nexport const defaultProgressiveConfig: ProgressiveLoadingConfig = {\n enabledFeatures: [\n FEATURES.SUBTITLES,\n FEATURES.ADVANCED_CONTROLS,\n FEATURES.KEYBOARD_SHORTCUTS\n ],\n loadingStrategy: 'lazy',\n fallbackTimeout: 5000,\n retryAttempts: 3\n};\n\n// Dynamic imports with error handling and retry logic\nexport const lazyComponents = {\n // Subtitle system\n SubtitleSelector: lazy(() => \n import('../components/enhanced/advanced-features')\n .then(module => ({ default: module.SubtitleSelector }))\n ),\n\n // Playlist functionality \n PlaylistManager: lazy(() =>\n import('../components/enhanced/advanced-features')\n .then(module => ({ default: module.SubtitleSelector })) // Use existing component as placeholder\n ),\n\n // Advanced controls\n QualitySelector: lazy(() =>\n import('../components/enhanced/advanced-features')\n .then(module => ({ default: module.QualitySelector }))\n ),\n\n PlaybackSpeedSelector: lazy(() =>\n import('../components/enhanced/advanced-features')\n .then(module => ({ default: module.PlaybackSpeedSelector }))\n ),\n\n ChaptersPanel: lazy(() =>\n import('../components/enhanced/advanced-features')\n .then(module => ({ default: module.ChaptersPanel }))\n ),\n\n PictureInPictureButton: lazy(() =>\n import('../components/enhanced/advanced-features')\n .then(module => ({ default: module.PictureInPictureButton }))\n ),\n\n // Analytics\n AnalyticsTracker: lazy(() =>\n import('../components/enhanced/advanced-features')\n .then(module => ({ default: module.SubtitleSelector })) // Use existing component as placeholder\n ),\n};\n\n// Feature detection utilities\nexport class FeatureDetector {\n private static cache = new Map<FeatureType, boolean>();\n\n static async isSupported(feature: FeatureType): Promise<boolean> {\n if (this.cache.has(feature)) {\n return this.cache.get(feature)!;\n }\n\n const supported = await this.checkFeatureSupport(feature);\n this.cache.set(feature, supported);\n return supported;\n }\n\n private static async checkFeatureSupport(feature: FeatureType): Promise<boolean> {\n if (typeof window === 'undefined' || typeof document === 'undefined') {\n // Server-side rendering - assume basic support\n return true;\n }\n\n switch (feature) {\n case FEATURES.SUBTITLES:\n return 'TextTrack' in window;\n \n case FEATURES.PICTURE_IN_PICTURE:\n return 'pictureInPictureEnabled' in document;\n \n case FEATURES.ADVANCED_CONTROLS:\n return true; // Always supported\n \n case FEATURES.PLAYLISTS:\n return 'MediaSession' in window;\n \n case FEATURES.ANALYTICS:\n return 'IntersectionObserver' in window;\n \n case FEATURES.QUALITY_SELECTOR:\n return 'MediaSource' in window;\n \n case FEATURES.PLAYBACK_SPEED:\n return true; // HTML5 video supports this\n \n case FEATURES.CHAPTERS:\n return 'TextTrack' in window;\n \n case FEATURES.THUMBNAILS:\n return 'OffscreenCanvas' in window || 'canvas' in document.createElement('canvas');\n \n case FEATURES.KEYBOARD_SHORTCUTS:\n return 'KeyboardEvent' in window;\n \n default:\n return false;\n }\n }\n}\n\n// Progressive loading manager\nexport class ProgressiveLoader {\n private config: ProgressiveLoadingConfig;\n private loadedFeatures = new Set<FeatureType>();\n private loadingPromises = new Map<FeatureType, Promise<any>>();\n\n constructor(config: Partial<ProgressiveLoadingConfig> = {}) {\n this.config = { ...defaultProgressiveConfig, ...config };\n }\n\n async loadFeature<T = any>(feature: FeatureType): Promise<T | null> {\n // Check if feature is enabled\n if (!this.config.enabledFeatures.includes(feature)) {\n return null;\n }\n\n // Check if already loaded\n if (this.loadedFeatures.has(feature)) {\n return this.getLoadedFeature(feature);\n }\n\n // Check if currently loading\n if (this.loadingPromises.has(feature)) {\n return this.loadingPromises.get(feature);\n }\n\n // Check browser support\n const isSupported = await FeatureDetector.isSupported(feature);\n if (!isSupported) {\n console.warn(`Feature ${feature} is not supported in this browser`);\n return null;\n }\n\n // Start loading with retry logic\n const loadingPromise = this.loadWithRetry(feature);\n this.loadingPromises.set(feature, loadingPromise);\n\n try {\n const result = await loadingPromise;\n this.loadedFeatures.add(feature);\n return result as T;\n } catch (error) {\n console.error(`Failed to load feature ${feature}:`, error);\n this.loadingPromises.delete(feature);\n return null;\n }\n }\n\n private async loadWithRetry<T>(feature: FeatureType, attempt = 1): Promise<T> {\n try {\n const result = await this.loadFeatureModule(feature);\n return result as T;\n } catch (error) {\n if (attempt < this.config.retryAttempts) {\n console.warn(`Loading feature ${feature} failed, retrying (${attempt}/${this.config.retryAttempts})`);\n await new Promise(resolve => setTimeout(resolve, 1000 * attempt));\n return this.loadWithRetry(feature, attempt + 1);\n }\n throw error;\n }\n }\n\n private async loadFeatureModule(feature: FeatureType) {\n switch (feature) {\n case FEATURES.SUBTITLES:\n return import('../hooks/useEnhancedSubtitles');\n \n case FEATURES.PLAYLISTS:\n return import('../components/enhanced/advanced-features'); // Use existing features\n \n case FEATURES.ADVANCED_CONTROLS:\n return import('../components/enhanced/advanced-features');\n \n case FEATURES.ANALYTICS:\n return import('../components/enhanced/advanced-features'); // Use existing features\n \n case FEATURES.PICTURE_IN_PICTURE:\n return import('../components/enhanced/advanced-features'); // Use existing features\n \n case FEATURES.QUALITY_SELECTOR:\n return import('../components/enhanced/advanced-features'); // Use existing features\n \n case FEATURES.PLAYBACK_SPEED:\n return import('../components/enhanced/advanced-features'); // Use existing features\n \n case FEATURES.CHAPTERS:\n return import('../components/enhanced/advanced-features'); // Use existing features\n \n case FEATURES.THUMBNAILS:\n return import('../components/enhanced/advanced-features'); // Use existing features\n \n case FEATURES.KEYBOARD_SHORTCUTS:\n return import('../hooks/use-keyboard-controls');\n \n default:\n throw new Error(`Unknown feature: ${feature}`);\n }\n }\n\n private getLoadedFeature(feature: FeatureType) {\n // Return cached feature instance\n return this.loadingPromises.get(feature);\n }\n\n // Preload features for faster access\n async preloadFeatures(features: FeatureType[] = this.config.enabledFeatures) {\n const preloadPromises = features.map(feature => this.loadFeature(feature));\n await Promise.allSettled(preloadPromises);\n }\n\n // Get loading state\n getLoadingState() {\n return {\n loaded: Array.from(this.loadedFeatures),\n loading: Array.from(this.loadingPromises.keys()),\n enabled: this.config.enabledFeatures\n };\n }\n}\n\n// Global progressive loader instance\nexport const progressiveLoader = new ProgressiveLoader();\n\n// React hook for progressive loading\nexport function useProgressiveFeature<T = any>(feature: FeatureType): {\n feature: T | null;\n loading: boolean;\n error: Error | null;\n load: () => Promise<void>;\n} {\n const [featureModule, setFeatureModule] = React.useState<T | null>(null);\n const [loading, setLoading] = React.useState(false);\n const [error, setError] = React.useState<Error | null>(null);\n\n const load = React.useCallback(async () => {\n if (loading || featureModule) return;\n \n setLoading(true);\n setError(null);\n \n try {\n const module = await progressiveLoader.loadFeature<T>(feature);\n setFeatureModule(module);\n } catch (err) {\n setError(err as Error);\n } finally {\n setLoading(false);\n }\n }, [feature, loading, featureModule]);\n\n // Auto-load if strategy is immediate\n React.useEffect(() => {\n if (progressiveLoader['config'].loadingStrategy === 'immediate') {\n load();\n }\n }, [load]);\n\n return {\n feature: featureModule,\n loading,\n error,\n load\n };\n}\n\n// HOC for progressive feature loading\nexport function withProgressiveFeature<P extends object>(\n WrappedComponent: React.ComponentType<P>,\n feature: FeatureType,\n fallback?: React.ComponentType<P>\n) {\n return function ProgressiveFeatureWrapper(props: P) {\n const { feature: featureModule, loading, error } = useProgressiveFeature(feature);\n\n if (loading) {\n return <div className=\"h-8 animate-pulse rounded bg-gray-200\" />;\n }\n\n if (error || !featureModule) {\n const Fallback = fallback;\n return Fallback ? <Fallback {...props} /> : null;\n }\n\n return <WrappedComponent {...props} />;\n };\n}\n","// Core architecture exports\n\n// Plugin system\nexport * from './plugins'\n\n// Event system \nexport * from './events'\n\n// Service providers\nexport * from './providers/service-provider'\n\n// Version\nexport const CORE_ARCHITECTURE_VERSION = '1.0.0'\n\n// Architecture utilities\nexport { createArchitecture } from './utils'\n\n// Progressive loading system\nexport * from './progressive-loading'\n\n// Performance monitoring and testing\nexport * from './performance'\n"],"names":["PerformanceBenchmark","__publicField","PerformanceRegressionDetector","config","testFunction","renderTimes","memoryBefore","memoryAfter","error","i","startTime","endTime","err","averageRenderTime","sum","time","minRenderTime","maxRenderTime","memoryUsage","passed","result","componentName","renderFunction","expectedRenderTime","bundlePath","expectedLoadTime","response","iterations","memoryIncrease","hasMemoryLeak","interactionFunction","expectedDelay","currentMetrics","baselineMetrics","regressions","totalTests","passedTests","failedTests","passRate","summary","report","index","performanceBenchmark","performanceTestUtils","Component","props","hookFunction","hookName","expectedExecutionTime","operation","operationName","expectedTime","beforeFunction","afterFunction","featureName","beforeMemory","beforeTime","midMemory","midTime","afterMemory","afterTime","PerformanceTestFramework","suiteName","tests","testImplementations","results","test","implementation","implementations","allResults","suiteImplementations","performanceTestFramework","defaultPerformanceBudgets","PerformanceBudgetMonitor","budgets","alertConfig","budget","metricName","value","category","violations","name","violation","distPath","metrics","allViolations","now","v","message","channel","actualValue","overageAmount","overagePercentage","unit","bytes","updates","existing","since","byCategory","bySeverity","severity","performanceBudgetMonitor","defaultMediaLoadingConfig","NetworkMonitor","isOnline","newInfo","listener","blob","timeInSeconds","MediaLoadingOptimizer","networkInfo","mediaUrl","element","options","loadingStrategy","effectiveType","threshold","maxBitrate","availableBandwidth","url","maxSize","preloadPromise","reader","chunks","bytesRead","done","stallStartTime","updateMetrics","bufferedEnd","currentTime","onLoadStart","onCanPlay","onWaiting","onPlaying","onProgress","bufferedBytes","quality","completedLoads","m","statsByNetwork","network","networkType","mediaLoadingOptimizer","useMediaLoadingOptimizer","optimizer","React","setNetworkInfo","loadingMetrics","setLoadingMetrics","unsubscribe","interval","optimizeLoading","LocalStorageService","key","item","NoOpAnalyticsService","event","data","userId","traits","properties","ServiceContext","createContext","ServiceProvider","children","services","container","useMemo","logger","ConsolePluginLogger","eventBus","EventBus","pluginRegistry","PluginRegistry","storage","analytics","useServices","context","useContext","useServiceEventBus","usePluginRegistry","useStorage","useAnalytics","useLogger","withServices","jsx","createArchitecture","FEATURES","defaultProgressiveConfig","lazyComponents","lazy","n","module","FeatureDetector","feature","supported","ProgressiveLoader","loadingPromise","attempt","resolve","features","preloadPromises","progressiveLoader","useProgressiveFeature","featureModule","setFeatureModule","loading","setLoading","setError","load","withProgressiveFeature","WrappedComponent","fallback","Fallback","CORE_ARCHITECTURE_VERSION"],"mappings":"kbA+BO,MAAMA,CAAqB,CAA3B,cACGC,EAAA,eAAmC,CAAA,GACnCA,EAAA,0BAAqB,IAAIC,EAAAA,+BAEjC,MAAM,QACJC,EACAC,EACgC,CAChC,MAAMC,EAAwB,CAAA,EAC9B,IAAIC,EAAe,EACfC,EAAc,EACdC,EAEJ,GAAI,CAEF,QAASC,EAAI,EAAGA,EAAIN,EAAO,iBAAkBM,IAC3C,MAAML,EAAA,EAIJ,OAAO,IACT,OAAO,GAAA,EAGTE,EAAe,KAAK,eAAA,EAGpB,QAASG,EAAI,EAAGA,EAAIN,EAAO,WAAYM,IAAK,CAC1C,MAAMC,EAAY,YAAY,IAAA,EAC9B,MAAMN,EAAA,EACN,MAAMO,EAAU,YAAY,IAAA,EAC5BN,EAAY,KAAKM,EAAUD,CAAS,CACtC,CAEAH,EAAc,KAAK,eAAA,CAErB,OAASK,EAAK,CACZJ,EAAQI,aAAe,MAAQA,EAAI,QAAU,OAAOA,CAAG,CACzD,CAEA,MAAMC,EAAoBR,EAAY,OAAO,CAACS,EAAKC,IAASD,EAAMC,EAAM,CAAC,EAAIV,EAAY,OACnFW,EAAgB,KAAK,IAAI,GAAGX,CAAW,EACvCY,EAAgB,KAAK,IAAI,GAAGZ,CAAW,EACvCa,EAAcX,EAAcD,EAE5Ba,EAAS,CAACX,GACdK,GAAqBV,EAAO,kBAAkB,YAC9Ce,GAAef,EAAO,kBAAkB,YAEpCiB,EAAgC,CACpC,SAAUjB,EAAO,KACjB,OAAAgB,EACA,QAAS,CACP,kBAAAN,EACA,cAAe,SAASG,CAAa,EAAIA,EAAgB,EACzD,cAAe,SAASC,CAAa,EAAIA,EAAgB,EACzD,YAAAC,EACA,WAAYf,EAAO,UAAA,EAErB,UAAWA,EAAO,kBAClB,MAAAK,CAAA,EAGF,YAAK,QAAQ,KAAKY,CAAM,EACjBA,CACT,CAEQ,gBAAyB,CAC/B,MAAI,WAAY,aACN,YAAoB,OAAO,gBAAkB,CAGzD,CAGA,MAAM,oBACJC,EACAC,EACAC,EAAqB,GACW,CAChC,MAAMpB,EAAgC,CACpC,KAAM,GAAGkB,CAAa,sBACtB,WAAY,IACZ,iBAAkB,GAClB,QAAS,IACT,kBAAmB,CACjB,WAAYE,EACZ,YAAa,OAAO,CACtB,EAGF,OAAO,KAAK,QAAQpB,EAAQmB,CAAc,CAC5C,CAGA,MAAM,kBACJE,EACAC,EAAmB,IACa,CAChC,MAAMtB,EAAgC,CACpC,KAAM,mBAAmBqB,CAAU,GACnC,WAAY,EACZ,iBAAkB,EAClB,QAAS,IACT,kBAAmB,CACjB,WAAYC,EACZ,YAAa,OAAW,CAC1B,EAGF,OAAO,KAAK,QAAQtB,EAAQ,SAAY,CAEtC,MAAMO,EAAY,YAAY,IAAA,EAC9B,GAAI,CAEF,MAAMgB,EAAW,MAAM,MAAMF,CAAU,EACvC,GAAI,CAACE,EAAS,GACZ,MAAM,IAAI,MAAM,0BAA0BA,EAAS,MAAM,EAAE,EAE7D,MAAMA,EAAS,KAAA,CACjB,OAASlB,EAAO,CACd,QAAQ,KAAK,kCAAkCgB,CAAU,IAAKhB,CAAK,CAErE,CAEA,OADgB,YAAY,IAAA,EACXE,CACnB,CAAC,CACH,CAGA,MAAM,gBACJN,EACAuB,EAAa,IACmB,CAChC,MAAMxB,EAAgC,CACpC,KAAM,wBACN,WAAAwB,EACA,iBAAkB,IAClB,QAAS,IACT,kBAAmB,CACjB,WAAY,IACZ,YAAa,QAAY,CAC3B,EAGIrB,EAAe,KAAK,eAAA,EAEpBc,EAAS,MAAM,KAAK,QAAQjB,EAAQC,CAAY,EAGhDwB,EADc,KAAK,eAAA,EACYtB,EAG/BuB,EAAgBD,EAAiBzB,EAAO,kBAAkB,YAEhE,MAAO,CACL,GAAGiB,EACH,OAAQA,EAAO,QAAU,CAACS,EAC1B,MAAOA,EAAgB,mCAAmC,KAAK,MAAMD,EAAiB,KAAO,IAAI,CAAC,cAAgBR,EAAO,KAAA,CAE7H,CAGA,MAAM,qBACJU,EACAC,EAAgB,IACgB,CAChC,MAAM5B,EAAgC,CACpC,KAAM,oBACN,WAAY,GACZ,iBAAkB,EAClB,QAAS,IACT,kBAAmB,CACjB,WAAY4B,EACZ,YAAa,OAAO,CACtB,EAGF,OAAO,KAAK,QAAQ5B,EAAQ2B,CAAmB,CACjD,CAGA,MAAM,mBACJE,EACAC,EAIC,CACGA,GACF,KAAK,mBAAmB,YAAYA,CAAe,EAGrD,MAAMC,EAAc,KAAK,mBAAmB,iBAAiBF,CAAc,EAG3E,MAAO,CAAE,OAFME,EAAY,SAAW,EAErB,YAAAA,CAAA,CACnB,CAGA,YAAsC,CACpC,MAAO,CAAC,GAAG,KAAK,OAAO,CACzB,CAGA,YAKE,CACA,MAAMC,EAAa,KAAK,QAAQ,OAC1BC,EAAc,KAAK,QAAQ,OAAOhB,GAAUA,EAAO,MAAM,EAAE,OAC3DiB,EAAcF,EAAaC,EAC3BE,EAAWH,EAAa,EAAKC,EAAcD,EAAc,IAAM,EAErE,MAAO,CAAE,WAAAA,EAAY,YAAAC,EAAa,YAAAC,EAAa,SAAAC,CAAA,CACjD,CAGA,cAAqB,CACnB,KAAK,QAAU,CAAA,CACjB,CAGA,gBAAyB,CACvB,MAAMC,EAAU,KAAK,WAAA,EACrB,IAAIC,EAAS;AAAA,EACb,OAAAA,GAAU;AAAA;AAAA,EACVA,GAAU,gBAAgBD,EAAQ,UAAU;AAAA,EAC5CC,GAAU,WAAWD,EAAQ,WAAW;AAAA,EACxCC,GAAU,WAAWD,EAAQ,WAAW;AAAA,EACxCC,GAAU,cAAcD,EAAQ,SAAS,QAAQ,CAAC,CAAC;AAAA;AAAA,EAE/C,KAAK,QAAQ,OAAS,IACxBC,GAAU;AAAA,EACVA,GAAU;AAAA;AAAA,EAEV,KAAK,QAAQ,QAAQ,CAACpB,EAAQqB,IAAU,CACtCD,GAAU,GAAGC,EAAQ,CAAC,KAAKrB,EAAO,QAAQ;AAAA,EAC1CoB,GAAU,cAAcpB,EAAO,OAAS,OAAS,MAAM;AAAA,EACvDoB,GAAU,2BAA2BpB,EAAO,QAAQ,kBAAkB,QAAQ,CAAC,CAAC;AAAA,EAChFoB,GAAU,2BAA2BpB,EAAO,QAAQ,cAAc,QAAQ,CAAC,CAAC,QAAQA,EAAO,QAAQ,cAAc,QAAQ,CAAC,CAAC;AAAA,EAC3HoB,GAAU,oBAAoB,KAAK,MAAMpB,EAAO,QAAQ,YAAc,IAAI,CAAC;AAAA,EAC3EoB,GAAU,kBAAkBpB,EAAO,QAAQ,UAAU;AAAA,EAEjDA,EAAO,QACToB,GAAU,aAAapB,EAAO,KAAK;AAAA,GAGrCoB,GAAU;AAAA,CACZ,CAAC,GAGIA,CACT,CACF,CAGO,MAAME,EAAuB,IAAI1C,EAG3B2C,EAAuB,CAElC,MAAM,cACJC,EACAC,EAAa,CAAA,EACbtB,EAAqB,GACW,CAChC,OAAOmB,EAAqB,oBAC1BE,EAAU,aAAeA,EAAU,MAAQ,YAC3C,KAGS,CAAE,KAAMA,EAAW,MAAAC,CAAA,GAE5BtB,CAAA,CAEJ,EAGA,MAAM,SACJuB,EACAC,EACAC,EAAwB,EACQ,CAChC,MAAM7C,EAAgC,CACpC,KAAM,qBAAqB4C,CAAQ,GACnC,WAAY,IACZ,iBAAkB,IAClB,QAAS,IACT,kBAAmB,CACjB,WAAYC,EACZ,YAAa,OAAO,CACtB,EAGF,OAAON,EAAqB,QAAQvC,EAAQ2C,CAAY,CAC1D,EAGA,MAAM,mBACJG,EACAC,EACAC,EAAe,IACiB,CAChC,MAAMhD,EAAgC,CACpC,KAAM,oBAAoB+C,CAAa,GACvC,WAAY,GACZ,iBAAkB,EAClB,QAAS,IACT,kBAAmB,CACjB,WAAYC,EACZ,YAAa,OAAW,CAC1B,EAGF,OAAOT,EAAqB,QAAQvC,EAAQ8C,CAAS,CACvD,EAGA,MAAM,oBACJG,EACAC,EACAC,EAKC,CACD,MAAMC,EAAgB,YAAoB,QAAQ,gBAAkB,EAC9DC,EAAa,YAAY,IAAA,EAE/BJ,EAAA,EAEA,MAAMK,EAAa,YAAoB,QAAQ,gBAAkB,EAC3DC,EAAU,YAAY,IAAA,EAE5BL,EAAA,EAEA,MAAMM,EAAe,YAAoB,QAAQ,gBAAkB,EAC7DC,EAAY,YAAY,IAAA,EAE9B,MAAO,CACL,eAAgBD,EAAcJ,EAC9B,eAAgBE,EAAYF,EAC5B,iBAAmBK,EAAYF,GAAYA,EAAUF,EAAA,CAEzD,CACF,EAGO,MAAMK,CAAyB,CAA/B,cACG5D,EAAA,iBAAY,IAAID,GAChBC,EAAA,kBAAmD,KAG3D,cAAc6D,EAAmBC,EAAgC,CAC/D,KAAK,OAAO,IAAID,EAAWC,CAAK,CAClC,CAGA,MAAM,SACJD,EACAE,EACkC,CAClC,MAAMD,EAAQ,KAAK,OAAO,IAAID,CAAS,EACvC,GAAI,CAACC,EACH,MAAM,IAAI,MAAM,eAAeD,CAAS,aAAa,EAGvD,MAAMG,EAAmC,CAAA,EAEzC,UAAWC,KAAQH,EAAO,CACxB,MAAMI,EAAiBH,EAAoB,IAAIE,EAAK,IAAI,EACxD,GAAI,CAACC,EAAgB,CACnB,QAAQ,KAAK,qCAAqCD,EAAK,IAAI,GAAG,EAC9D,QACF,CAEA,MAAM9C,EAAS,MAAM,KAAK,UAAU,QAAQ8C,EAAMC,CAAc,EAChEF,EAAQ,KAAK7C,CAAM,CACrB,CAEA,OAAO6C,CACT,CAGA,MAAM,aACJG,EAC+C,CAC/C,MAAMC,MAAiB,IAEvB,SAAW,CAACP,CAAS,IAAK,KAAK,OAAQ,CACrC,MAAMQ,EAAuBF,EAAgB,IAAIN,CAAS,EAC1D,GAAI,CAACQ,EAAsB,CACzB,QAAQ,KAAK,uCAAuCR,CAAS,GAAG,EAChE,QACF,CAEA,MAAMG,EAAU,MAAM,KAAK,SAASH,EAAWQ,CAAoB,EACnED,EAAW,IAAIP,EAAWG,CAAO,CACnC,CAEA,OAAOI,CACT,CAGA,6BAAsC,CACpB,KAAK,UAAU,WAAA,EAC/B,IAAI7B,EAAS,KAAK,UAAU,eAAA,EAG5B,GAAI,KAAK,OAAO,KAAO,EAAG,CACxBA,GAAU;AAAA;AAAA,EACVA,GAAU;AAAA;AAAA,EAEV,SAAW,CAACsB,EAAWC,CAAK,IAAK,KAAK,OACpCvB,GAAU,UAAUsB,CAAS;AAAA,EAC7BtB,GAAU,UAAUuB,EAAM,MAAM;AAAA;AAAA,CAEpC,CAEA,OAAOvB,CACT,CACF,CAEO,MAAM+B,EAA2B,IAAIV,ECpa/BW,EAAiD,CAE5D,CACE,KAAM,yBACN,SAAU,SACV,MAAO,IAAM,KACb,KAAM,QACN,SAAU,QACV,YAAa,8DAAA,EAEf,CACE,KAAM,yBACN,SAAU,SACV,MAAO,IAAM,KACb,KAAM,QACN,SAAU,QACV,YAAa,wDAAA,EAEf,CACE,KAAM,mBACN,SAAU,SACV,MAAO,GAAK,KACZ,KAAM,QACN,SAAU,UACV,YAAa,6CAAA,EAEf,CACE,KAAM,2BACN,SAAU,SACV,MAAO,GAAK,KACZ,KAAM,QACN,SAAU,UACV,YAAa,iCAAA,EAIf,CACE,KAAM,wBACN,SAAU,UACV,MAAO,GACP,KAAM,KACN,SAAU,QACV,YAAa,sDAAA,EAEf,CACE,KAAM,oBACN,SAAU,UACV,MAAO,IACP,KAAM,KACN,SAAU,QACV,YAAa,qDAAA,EAEf,CACE,KAAM,2BACN,SAAU,UACV,MAAO,KACP,KAAM,KACN,SAAU,UACV,YAAa,yDAAA,EAEf,CACE,KAAM,0BACN,SAAU,UACV,MAAO,GACP,KAAM,QACN,SAAU,UACV,YAAa,mDAAA,EAIf,CACE,KAAM,eACN,SAAU,SACV,MAAO,GAAK,KAAO,KACnB,KAAM,QACN,SAAU,UACV,YAAa,0DAAA,EAEf,CACE,KAAM,gCACN,SAAU,SACV,MAAO,KAAO,KACd,KAAM,QACN,SAAU,QACV,YAAa,4DAAA,EAIf,CACE,KAAM,kBACN,SAAU,UACV,MAAO,IACP,KAAM,KACN,SAAU,UACV,YAAa,6CAAA,CAEjB,EAGO,MAAMC,CAAyB,CAMpC,YACEC,EAA+BF,EAC/BG,EAA2B,CACzB,QAAS,GACT,SAAU,CAAC,CAAE,KAAM,UAAW,OAAQ,CAAA,EAAI,EAC1C,UAAW,EACX,SAAU,IAAS,GAAA,EAErB,CAbM1E,EAAA,mBAA8C,KAC9CA,EAAA,kBAAgC,CAAA,GAChCA,EAAA,oBACAA,EAAA,qBAAgB,GAWtByE,EAAQ,QAAQE,GAAU,CACxB,KAAK,QAAQ,IAAIA,EAAO,KAAMA,CAAM,CACtC,CAAC,EACD,KAAK,YAAcD,CACrB,CAGA,YACEE,EACAC,EACAC,EAA0C,UACvB,CACnB,MAAMC,EAAgC,CAAA,EAEtC,SAAW,CAACC,EAAML,CAAM,IAAK,KAAK,QAChC,GAAIA,EAAO,WAAaG,IACnBE,EAAK,SAASJ,CAAU,GAAKA,EAAW,SAASI,EAAK,MAAM,GAAG,EAAE,CAAC,GAAG,YAAA,GAAiB,EAAE,IAEvFH,EAAQF,EAAO,MAAO,CACxB,MAAMM,EAA6B,CACjC,OAAAN,EACA,YAAaE,EACb,cAAeA,EAAQF,EAAO,MAC9B,mBAAqBE,EAAQF,EAAO,OAASA,EAAO,MAAS,IAC7D,UAAW,KAAK,IAAA,CAAI,EAGtBI,EAAW,KAAKE,CAAS,EACzB,KAAK,WAAW,KAAKA,CAAS,CAChC,CAIJ,OAAIF,EAAW,OAAS,GACtB,KAAK,iBAAiBA,CAAU,EAG3BA,CACT,CAGA,MAAM,iBAAiBG,EAA8C,CACnE,MAAMH,EAAgC,CAAA,EAGtC,OAAI,OAAO,OAAW,KAAe,OAAO,QAAY,KACtD,QAAQ,KAAK,+DAA+D,EACrEA,IAIT,QAAQ,KAAK,+HAA+H,EAErIA,EACT,CAGA,oBAAoBI,EAOE,CACpB,MAAMC,EAAmC,CAAA,EAEzC,OAAID,EAAQ,aAAe,QACzBC,EAAc,KAAK,GAAG,KAAK,YAAY,wBAAyBD,EAAQ,WAAY,SAAS,CAAC,EAG5FA,EAAQ,MAAQ,QAClBC,EAAc,KAAK,GAAG,KAAK,YAAY,oBAAqBD,EAAQ,IAAK,SAAS,CAAC,EAGjFA,EAAQ,MAAQ,QAClBC,EAAc,KAAK,GAAG,KAAK,YAAY,2BAA4BD,EAAQ,IAAK,SAAS,CAAC,EAGxFA,EAAQ,MAAQ,QAClBC,EAAc,KAAK,GAAG,KAAK,YAAY,0BAA2BD,EAAQ,IAAK,SAAS,CAAC,EAGvFA,EAAQ,cAAgB,QAC1BC,EAAc,KAAK,GAAG,KAAK,YAAY,eAAgBD,EAAQ,YAAa,QAAQ,CAAC,EAGnFA,EAAQ,gBAAkB,QAC5BC,EAAc,KAAK,GAAG,KAAK,YAAY,kBAAmBD,EAAQ,cAAe,SAAS,CAAC,EAGtFC,CACT,CAGA,MAAc,iBAAiBL,EAA+B,CAC5D,GAAI,CAAC,KAAK,YAAY,QAAS,OAE/B,MAAMM,EAAM,KAAK,IAAA,EACON,EAAW,UAAYO,EAAE,OAAO,WAAa,OAAO,EAGxD,QAAU,KAAK,YAAY,WAC3CD,EAAM,KAAK,eAAiB,KAAK,YAAY,WAE/C,MAAM,KAAK,WAAWN,CAAU,EAChC,KAAK,cAAgBM,EAEzB,CAGA,MAAc,WAAWN,EAA+B,CACtD,MAAMQ,EAAU,KAAK,mBAAmBR,CAAU,EAElD,UAAWS,KAAW,KAAK,YAAY,SACrC,GAAI,CACF,MAAM,KAAK,UAAUA,EAASD,CAAO,CACvC,OAAShF,EAAO,CACd,QAAQ,MAAM,4BAA4BiF,EAAQ,IAAI,IAAKjF,CAAK,CAClE,CAEJ,CAGQ,mBAAmBwE,EAAuC,CAChE,IAAIQ,EAAU;AAAA;AAAA,EAEd,OAAAR,EAAW,QAAQE,GAAa,CAC9B,KAAM,CAAE,OAAAN,EAAQ,YAAAc,EAAa,cAAAC,EAAe,kBAAAC,GAAsBV,EACrD,KAAK,eAAeN,EAAO,IAAI,EAE5CY,GAAW,KAAKZ,EAAO,IAAI;AAAA,EAC3BY,GAAW,aAAa,KAAK,YAAYZ,EAAO,MAAOA,EAAO,IAAI,CAAC;AAAA,EACnEY,GAAW,cAAc,KAAK,YAAYE,EAAad,EAAO,IAAI,CAAC;AAAA,EACnEY,GAAW,eAAe,KAAK,YAAYG,EAAef,EAAO,IAAI,CAAC,MAAMgB,EAAkB,QAAQ,CAAC,CAAC;AAAA,EACxGJ,GAAW,gBAAgBZ,EAAO,SAAS,YAAA,CAAa;AAAA;AAAA,CAC1D,CAAC,EAEDY,GAAW,SAAS,IAAI,KAAA,EAAO,aAAa;AAAA,EAC5CA,GAAW,qBAAqBR,EAAW,MAAM,GAE1CQ,CACT,CAGA,MAAc,UAAUC,EAAuBD,EAAiB,CAC9D,OAAQC,EAAQ,KAAA,CACd,IAAK,UACH,QAAQ,MAAMD,CAAO,EACrB,MAEF,IAAK,UACH,GAAIC,EAAQ,OAAO,IAAK,CACtB,MAAM/D,EAAW,MAAM,MAAM+D,EAAQ,OAAO,IAAK,CAC/C,OAAQ,OACR,QAAS,CAAE,eAAgB,kBAAA,EAC3B,KAAM,KAAK,UAAU,CAAE,KAAMD,EAAS,UAAW,KAAK,KAAI,CAAG,CAAA,CAC9D,EACD,GAAI,CAAC9D,EAAS,GACZ,MAAM,IAAI,MAAM,mBAAmBA,EAAS,MAAM,EAAE,CAExD,CACA,MAEF,IAAK,QACH,GAAI+D,EAAQ,OAAO,IAAK,CACtB,MAAM/D,EAAW,MAAM,MAAM+D,EAAQ,OAAO,IAAK,CAC/C,OAAQ,OACR,QAAS,CAAE,eAAgB,kBAAA,EAC3B,KAAM,KAAK,UAAU,CACnB,KAAMD,EACN,QAASC,EAAQ,OAAO,QACxB,SAAU,iCAAA,CACX,CAAA,CACF,EACD,GAAI,CAAC/D,EAAS,GACZ,MAAM,IAAI,MAAM,yBAAyBA,EAAS,MAAM,EAAE,CAE9D,CACA,MAEF,QACE,QAAQ,KAAK,8BAA8B+D,EAAQ,IAAI,EAAE,CAAA,CAE/D,CAGQ,YAAYX,EAAee,EAAyC,CAC1E,OAAQA,EAAA,CACN,IAAK,QACH,OAAO,KAAK,YAAYf,CAAK,EAC/B,IAAK,KACH,MAAO,GAAGA,EAAM,QAAQ,CAAC,CAAC,KAC5B,IAAK,QACH,OAAOA,EAAM,QAAQ,CAAC,EACxB,IAAK,UACH,MAAO,GAAGA,EAAM,QAAQ,CAAC,CAAC,IAC5B,QACE,OAAOA,EAAM,SAAA,CAAS,CAE5B,CAEQ,YAAYgB,EAAuB,CACzC,OAAIA,GAAS,KAAO,KACX,IAAIA,EAAQ,KAAO,MAAM,QAAQ,CAAC,CAAC,KAExCA,GAAS,KACJ,IAAIA,EAAQ,MAAM,QAAQ,CAAC,CAAC,KAE9B,GAAGA,CAAK,GACjB,CAEQ,eAAeD,EAAyC,CAO9D,MANiB,CACf,MAAS,QACT,GAAM,eACN,MAAS,QACT,QAAW,SAAA,EAEGA,CAAI,GAAKA,CAC3B,CAGA,UAAUjB,EAA2B,CACnC,KAAK,QAAQ,IAAIA,EAAO,KAAMA,CAAM,CACtC,CAEA,aAAaK,EAAc,CACzB,KAAK,QAAQ,OAAOA,CAAI,CAC1B,CAEA,aAAaA,EAAcc,EAAqC,CAC9D,MAAMC,EAAW,KAAK,QAAQ,IAAIf,CAAI,EAClCe,GACF,KAAK,QAAQ,IAAIf,EAAM,CAAE,GAAGe,EAAU,GAAGD,EAAS,CAEtD,CAEA,YAAkC,CAChC,OAAO,MAAM,KAAK,KAAK,QAAQ,QAAQ,CACzC,CAEA,cAAcE,EAAmC,CAC/C,OAAIA,EACK,KAAK,WAAW,OAAOV,GAAKA,EAAE,WAAaU,CAAK,EAElD,CAAC,GAAG,KAAK,UAAU,CAC5B,CAEA,iBAAkB,CAChB,KAAK,WAAa,CAAA,CACpB,CAEA,qBAIE,CACA,MAAMC,EAAqC,CAAA,EACrCC,EAAqC,CAAA,EAE3C,YAAK,WAAW,QAAQjB,GAAa,CACnC,MAAMH,EAAWG,EAAU,OAAO,SAC5BkB,EAAWlB,EAAU,OAAO,SAElCgB,EAAWnB,CAAQ,GAAKmB,EAAWnB,CAAQ,GAAK,GAAK,EACrDoB,EAAWC,CAAQ,GAAKD,EAAWC,CAAQ,GAAK,GAAK,CACvD,CAAC,EAEM,CACL,MAAO,KAAK,WAAW,OACvB,WAAAF,EACA,WAAAC,CAAA,CAEJ,CACF,CAGO,MAAME,EAA2B,IAAI5B,ECrZ/B6B,EAAgD,CAC3D,gBAAiB,WACjB,gBAAiB,GACjB,eAAgB,EAAI,KAAO,KAC3B,kBAAmB,CACjB,KAAM,CAAE,WAAY,IAAK,QAAS,EAAA,EAClC,KAAM,CAAE,WAAY,IAAK,QAAS,EAAA,EAClC,KAAM,CAAE,WAAY,IAAM,QAAS,EAAA,EACnC,KAAM,CAAE,WAAY,IAAO,QAAS,EAAA,CAAK,EAE3C,WAAY,GACZ,oBAAqB,EACvB,EAkBO,MAAMC,CAAe,CAK1B,aAAc,CAJNtG,EAAA,mBACAA,EAAA,qBAAkD,KAClDA,EAAA,oBAGN,GAAI,OAAO,OAAW,KAAe,OAAO,UAAc,IAAa,CAErE,KAAK,WAAa,KAClB,KAAK,YAAc,CACjB,cAAe,UACf,SAAU,EACV,IAAK,EACL,SAAU,GACV,SAAU,EAAA,EAEZ,MACF,CAEA,KAAK,WAAc,UAAkB,YAClB,UAAkB,eAClB,UAAkB,iBAErC,KAAK,YAAc,KAAK,eAAA,EACxB,KAAK,oBAAA,CACP,CAEQ,gBAA8B,CACpC,GAAI,OAAO,UAAc,IAEvB,MAAO,CACL,cAAe,UACf,SAAU,EACV,IAAK,EACL,SAAU,GACV,SAAU,EAAA,EAId,MAAMuG,EAAW,UAAU,OAE3B,OAAI,KAAK,WACA,CACL,cAAe,KAAK,WAAW,eAAiB,UAChD,SAAU,KAAK,WAAW,UAAY,EACtC,IAAK,KAAK,WAAW,KAAO,EAC5B,SAAU,KAAK,WAAW,UAAY,GACtC,SAAAA,CAAA,EAKG,CACL,cAAe,UACf,SAAU,EACV,IAAK,EACL,SAAU,GACV,SAAAA,CAAA,CAEJ,CAEQ,qBAAsB,CACxB,OAAO,OAAW,MAKlB,KAAK,YACP,KAAK,WAAW,iBAAiB,SAAU,KAAK,oBAAoB,KAAK,IAAI,CAAC,EAGhF,OAAO,iBAAiB,SAAU,KAAK,oBAAoB,KAAK,IAAI,CAAC,EACrE,OAAO,iBAAiB,UAAW,KAAK,oBAAoB,KAAK,IAAI,CAAC,EACxE,CAEQ,qBAAsB,CAC5B,MAAMC,EAAU,KAAK,eAAA,EACrB,KAAK,YAAcA,EACnB,KAAK,UAAU,QAAQC,GAAYA,EAASD,CAAO,CAAC,CACtD,CAEA,uBAAqC,CACnC,MAAO,CAAE,GAAG,KAAK,WAAA,CACnB,CAEA,UAAUC,EAAmD,CAC3D,YAAK,UAAU,IAAIA,CAAQ,EACpB,IAAM,KAAK,UAAU,OAAOA,CAAQ,CAC7C,CAGA,MAAM,mBAAqC,CACzC,GAAI,KAAK,YAAc,KAAK,WAAW,SACrC,OAAO,KAAK,WAAW,SAAW,IAIpC,GAAI,CACF,MAAMhG,EAAY,YAAY,IAAA,EAGxBiG,EAAO,MADI,MAAM,MADP,gCACoB,GACR,KAAA,EAGtBC,GAFU,YAAY,IAAA,EAEKlG,GAAa,IAI9C,OAHoBiG,EAAK,KACY,EAAKC,EAEnB,GACzB,OAASpG,EAAO,CACd,eAAQ,KAAK,+BAAgCA,CAAK,EAC3C,GACT,CACF,CACF,CAGO,MAAMqG,CAAsB,CAMjC,YAAY1G,EAAsC,GAAI,CAL9CF,EAAA,eACAA,EAAA,uBACAA,EAAA,0BAAuD,KACvDA,EAAA,wBAA+C,KAGrD,KAAK,OAAS,CAAE,GAAGqG,EAA2B,GAAGnG,CAAA,EACjD,KAAK,eAAiB,IAAIoG,EAC1B,KAAK,4BAAA,CACP,CAEQ,6BAA8B,CACpC,KAAK,eAAe,UAAWO,GAAgB,CAC7C,KAAK,oBAAoBA,CAAW,CACtC,CAAC,CACH,CAEQ,oBAAoBA,EAA0B,CACpD,QAAQ,IAAI,mBAAoBA,CAAW,EAGvC,KAAK,OAAO,iBACd,KAAK,wBAAwBA,CAAW,GAItCA,EAAY,gBAAkB,MAAQA,EAAY,WACpD,KAAK,kBAAA,CAET,CAGA,MAAM,qBACJC,EACAC,EACAC,EAII,CAAA,EAC0B,CAC9B,MAAMvG,EAAY,YAAY,IAAA,EACxBoG,EAAc,KAAK,eAAe,sBAAA,EAElC1B,EAA+B,CACnC,cAAe1E,EACf,YAAa,EACb,UAAW,EACX,YAAaoG,EAAY,cACzB,QAASG,EAAQ,SAAW,OAC5B,aAAc,EACd,YAAa,EACb,eAAgB,CAAA,EAGlB,KAAK,eAAe,IAAIF,EAAU3B,CAAO,EAEzC,GAAI,CAEF,MAAM8B,EAAkB,KAAK,sBAAsBJ,EAAaG,CAAO,EAGvE,OAAIC,EAAgB,eAClB,MAAM,KAAK,aAAaH,EAAUG,EAAgB,aAAa,EAIjEF,EAAQ,QAAUE,EAAgB,iBAGlC,KAAK,uBAAuBF,EAAS5B,CAAO,EAGxC,KAAK,OAAO,iBAAmB8B,EAAgB,kBACjD,KAAK,qBAAqBF,EAASE,EAAgB,gBAAgB,EAG9D9B,CACT,OAAS5E,EAAO,CACd,eAAQ,MAAM,qCAAsCA,CAAK,EAClD4E,CACT,CACF,CAEQ,sBACN0B,EACAG,EACA,CACA,MAAME,EAAgBL,EAAY,gBAAkB,UAAY,KAAOA,EAAY,cAC7EM,EAAY,KAAK,OAAO,kBAAkBD,CAAa,GAC5C,KAAK,OAAO,kBAAkB,IAAI,EAEnD,MAAO,CACL,cAAeF,EAAQ,UAAY,IAASG,EAAU,SAAW,CAACN,EAAY,SAC9E,cAAeA,EAAY,SAAW,EAAI,KAAK,OAAO,eACtD,iBAAkB,KAAK,oBAAoBA,CAAW,EACtD,iBAAkB,KAAK,oBAAoBA,EAAaM,EAAU,UAAU,EAC5E,aAAc,KAAK,gBAAgBN,CAAW,CAAA,CAElD,CAEQ,oBAAoBA,EAAwD,CAClF,OAAIA,EAAY,UAAYA,EAAY,gBAAkB,KACjD,OAGLA,EAAY,gBAAkB,KACzB,WAGF,KAAK,OAAO,eACrB,CAEQ,oBAAoBA,EAA0BO,EAA4B,CAChF,MAAMC,EAAqBR,EAAY,SAAW,IAElD,OAAIQ,GAAsBD,EAAa,EAAU,OAC7CC,GAAsBD,EAAmB,SACtC,KACT,CAEQ,gBAAgBP,EAAkC,CACxD,OAAQA,EAAY,cAAA,CAClB,IAAK,KAAM,MAAO,GAClB,IAAK,KAAM,MAAO,GAClB,IAAK,KAAM,OAAO,KAAK,OAAO,WAC9B,IAAK,KAAM,OAAO,KAAK,OAAO,WAAa,IAC3C,QAAS,OAAO,KAAK,OAAO,UAAA,CAEhC,CAGA,MAAM,aAAaS,EAAaC,EAAgC,CAC9D,GAAI,KAAK,aAAa,IAAID,CAAG,EAC3B,OAGF,MAAME,EAAiB,KAAK,kBAAkBF,EAAKC,CAAO,EAC1D,KAAK,aAAa,IAAID,EAAKE,CAAc,EAEzC,GAAI,CACF,MAAMA,CACR,OAASjH,EAAO,CACd,QAAQ,KAAK,sBAAsB+G,CAAG,IAAK/G,CAAK,EAChD,KAAK,aAAa,OAAO+G,CAAG,CAC9B,CACF,CAEA,MAAc,kBAAkBA,EAAaC,EAAgC,CAC3E,MAAM9F,EAAW,MAAM,MAAM6F,EAAK,CAChC,QAAS,CACP,MAAS,WAAWC,EAAU,CAAC,EAAA,CACjC,CACD,EAED,GAAI,CAAC9F,EAAS,GACZ,MAAM,IAAI,MAAM,sBAAsBA,EAAS,MAAM,EAAE,EAGzD,MAAMgG,EAAShG,EAAS,MAAM,UAAA,EAC9B,GAAI,CAACgG,EACH,MAAM,IAAI,MAAM,4BAA4B,EAG9C,MAAMC,EAAuB,CAAA,EAC7B,IAAIC,EAAY,EAEhB,GAAI,CACF,KAAOA,EAAYJ,GAAS,CAC1B,KAAM,CAAE,KAAAK,EAAM,MAAA/C,CAAA,EAAU,MAAM4C,EAAO,KAAA,EACrC,GAAIG,EAAM,MAEVF,EAAO,KAAK7C,CAAK,EACjB8C,GAAa9C,EAAM,MACrB,CACF,QAAA,CACE4C,EAAO,YAAA,CACT,CAEA,OAAO,IAAI,KAAKC,CAAM,CACxB,CAGQ,uBAAuBX,EAA2B5B,EAA8B,CACtF,IAAI0C,EAAgC,KAEpC,MAAMC,EAAgB,IAAM,CAC1B,GAAIf,EAAQ,SAAS,OAAS,EAAG,CAC/B,MAAMgB,EAAchB,EAAQ,SAAS,IAAIA,EAAQ,SAAS,OAAS,CAAC,EAC9DiB,EAAcjB,EAAQ,YAC5B5B,EAAQ,aAAe,KAAK,KAAK4C,EAAcC,GAAe,KAAK,OAAO,WAAY,CAAC,CACzF,CACF,EAGMC,EAAc,IAAM,CACxB9C,EAAQ,cAAgB,YAAY,IAAA,CACtC,EAGM+C,EAAY,IAAM,CACtB/C,EAAQ,iBAAmB,YAAY,IAAA,EACvCA,EAAQ,cAAgBA,EAAQ,iBAAmBA,EAAQ,cAGvDA,EAAQ,eAAiBA,EAAQ,YAAc,IACjDA,EAAQ,UAAYA,EAAQ,aAAeA,EAAQ,cAAgB,KAEvE,EAGMgD,EAAY,IAAM,CAClBN,IAAmB,OACrBA,EAAiB,YAAY,IAAA,EAC7B1C,EAAQ,cAEZ,EAEMiD,EAAY,IAAM,CAClBP,IAAmB,OACrB1C,EAAQ,gBAAkB,YAAY,IAAA,EAAQ0C,EAC9CA,EAAiB,MAEnBC,EAAA,CACF,EAGMO,EAAa,IAAM,CACvB,GAAItB,EAAQ,SAAS,OAAS,EAAG,CAC/B,MAAMuB,EAAgBvB,EAAQ,SAAS,IAAI,CAAC,EAAI,IAChD5B,EAAQ,YAAcmD,CACxB,CACAR,EAAA,CACF,EAGAf,EAAQ,iBAAiB,YAAakB,CAAW,EACjDlB,EAAQ,iBAAiB,UAAWmB,CAAS,EAC7CnB,EAAQ,iBAAiB,UAAWoB,CAAS,EAC7CpB,EAAQ,iBAAiB,UAAWqB,CAAS,EAC7CrB,EAAQ,iBAAiB,WAAYsB,CAAU,EAY/C,WATgB,IAAM,CACpBtB,EAAQ,oBAAoB,YAAakB,CAAW,EACpDlB,EAAQ,oBAAoB,UAAWmB,CAAS,EAChDnB,EAAQ,oBAAoB,UAAWoB,CAAS,EAChDpB,EAAQ,oBAAoB,UAAWqB,CAAS,EAChDrB,EAAQ,oBAAoB,WAAYsB,CAAU,CACpD,EAGoB,IAAS,GAAI,CACnC,CAGQ,qBAAqBtB,EAA2BwB,EAAiB,CAEvE,QAAQ,IAAI,6BAA6BA,CAAO,MAAOxB,CAAO,CAMhE,CAEQ,wBAAwBF,EAA0B,CAExD,QAAQ,IAAI,4CAA6CA,EAAY,aAAa,CACpF,CAGA,mBAAoB,CAClB,KAAK,aAAa,MAAA,CACpB,CAGA,kBAAkBS,EAA8C,CAC9D,OAAO,KAAK,eAAe,IAAIA,CAAG,CACpC,CAGA,eAAuC,CACrC,OAAO,MAAM,KAAK,KAAK,eAAe,QAAQ,CAChD,CAGA,uBAAgC,CAE9B,MAAMkB,EADU,KAAK,cAAA,EACU,OAAOC,GAAKA,EAAE,gBAAkB,MAAS,EAExE,OAAID,EAAe,SAAW,EAAU,EAE1BA,EAAe,OAAO,CAAC3H,EAAK4H,IAAM5H,GAAO4H,EAAE,eAAiB,GAAI,CAAC,EAChED,EAAe,MAChC,CAGA,4BAKI,CACF,MAAME,MAAqB,IAE3B,YAAK,cAAA,EAAgB,QAAQvD,GAAW,CACtC,MAAMwD,EAAUxD,EAAQ,YACnBuD,EAAe,IAAIC,CAAO,GAC7BD,EAAe,IAAIC,EAAS,EAAE,EAEhCD,EAAe,IAAIC,CAAO,EAAG,KAAKxD,CAAO,CAC3C,CAAC,EAEM,MAAM,KAAKuD,EAAe,QAAA,CAAS,EAAE,IAAI,CAAC,CAACE,EAAazD,CAAO,KAAO,CAC3E,YAAAyD,EACA,YAAazD,EAAQ,OAAO,CAACtE,EAAK4H,IAAM5H,GAAO4H,EAAE,eAAiB,GAAI,CAAC,EAAItD,EAAQ,OACnF,UAAWA,EAAQ,OAAO,CAACtE,EAAK4H,IAAM5H,EAAM4H,EAAE,YAAa,CAAC,EAAItD,EAAQ,OACxE,gBAAiBA,EAAQ,OAAO,CAACtE,EAAK4H,IAAM5H,EAAM4H,EAAE,aAAc,CAAC,EAAItD,EAAQ,MAAA,EAC/E,CACJ,CACF,CAGO,MAAM0D,EAAwB,IAAIjC,EAGlC,SAASkC,EAAyB5I,EAAsC,CAC7E,KAAM,CAAC6I,CAAS,EAAIC,EAAM,SAAS,IACjC9I,EAAS,IAAI0G,EAAsB1G,CAAM,EAAI2I,CAAA,EAGzC,CAAChC,EAAaoC,CAAc,EAAID,EAAM,SAA6B,IAAI,EACvE,CAACE,EAAgBC,CAAiB,EAAIH,EAAM,SAAgC,CAAA,CAAE,EAEpFA,EAAM,UAAU,IAAM,CACpB,MAAMI,EAAcL,EAAU,eAAkB,UAAUE,CAAc,EACxEA,EAAeF,EAAU,eAAkB,sBAAA,CAAuB,EAGlE,MAAMM,EAAW,YAAY,IAAM,CACjCF,EAAkBJ,EAAU,eAAe,CAC7C,EAAG,GAAI,EAEP,MAAO,IAAM,CACXK,EAAA,EACA,cAAcC,CAAQ,CACxB,CACF,EAAG,CAACN,CAAS,CAAC,EAEd,MAAMO,EAAkBN,EAAM,YAC5B,CAAClC,EAAkBC,EAA2BC,IACrC+B,EAAU,qBAAqBjC,EAAUC,EAASC,CAAO,EAElE,CAAC+B,CAAS,CAAA,EAGZ,MAAO,CACL,YAAAlC,EACA,eAAAqC,EACA,gBAAAI,EACA,gBAAiBP,EAAU,sBAAA,EAC3B,aAAcA,EAAU,2BAAA,CAA2B,CAEvD,CCvfA,MAAMQ,CAA8C,CAClD,IAAOC,EAAuB,CAC5B,GAAI,CACF,MAAMC,EAAO,aAAa,QAAQ,gBAAgBD,CAAG,EAAE,EACvD,OAAOC,EAAO,KAAK,MAAMA,CAAI,EAAS,IACxC,MAAQ,CACN,OAAO,IACT,CACF,CAEA,IAAOD,EAAa3E,EAAgB,CAClC,GAAI,CACF,aAAa,QAAQ,gBAAgB2E,CAAG,GAAI,KAAK,UAAU3E,CAAK,CAAC,CACnE,OAAStE,EAAO,CACd,QAAQ,KAAK,wBAAyBA,CAAK,CAC7C,CACF,CAEA,OAAOiJ,EAAmB,CACxB,GAAI,CACF,aAAa,WAAW,gBAAgBA,CAAG,EAAE,CAC/C,OAASjJ,EAAO,CACd,QAAQ,KAAK,yBAA0BA,CAAK,CAC9C,CACF,CAEA,OAAc,CACZ,GAAI,CACF,OAAO,KAAK,YAAY,EAAE,QAAQiJ,GAAO,CACnCA,EAAI,WAAW,eAAe,GAChC,aAAa,WAAWA,CAAG,CAE/B,CAAC,CACH,OAASjJ,EAAO,CACd,QAAQ,KAAK,wBAAyBA,CAAK,CAC7C,CACF,CACF,CAEA,MAAMmJ,CAAiD,CACrD,MAAMC,EAAeC,EAAkB,CACrC,QAAQ,IAAI,aAAcD,EAAOC,CAAI,CACvC,CAEA,SAASC,EAAgBC,EAAoB,CAC3C,QAAQ,IAAI,sBAAuBD,EAAQC,CAAM,CACnD,CAEA,KAAK9E,EAAc+E,EAAwB,CACzC,QAAQ,IAAI,kBAAmB/E,EAAM+E,CAAU,CACjD,CACF,CAYA,MAAMC,EAAiBC,EAAAA,cAAuC,IAAI,EAS3D,SAASC,EAAgB,CAAE,SAAAC,EAAU,SAAAC,EAAW,CAAA,GAA4B,CACjF,MAAMC,EAAYC,EAAAA,QAA0B,IAAM,CAChD,MAAMC,EAASH,EAAS,QAAU,IAAII,EAAAA,oBAAoB,eAAe,EACnEC,EAAWL,EAAS,UAAY,IAAIM,EAAAA,SACpCC,EAAiBP,EAAS,gBAAkB,IAAIQ,EAAAA,eAAeL,CAAM,EACrEM,EAAUT,EAAS,SAAW,IAAIb,EAClCuB,EAAYV,EAAS,WAAa,IAAIV,EAE5C,MAAO,CACL,SAAAe,EACA,eAAAE,EACA,QAAAE,EACA,UAAAC,EACA,OAAAP,CAAA,CAEJ,EAAG,CAACH,CAAQ,CAAC,EAEb,+BACGJ,EAAe,SAAf,CAAwB,MAAOK,EAC7B,SAAAF,EACH,CAEJ,CAGO,SAASY,GAAgC,CAC9C,MAAMC,EAAUC,EAAAA,WAAWjB,CAAc,EACzC,GAAI,CAACgB,EACH,MAAM,IAAI,MAAM,iDAAiD,EAEnE,OAAOA,CACT,CAEO,SAASE,GAA+B,CAC7C,OAAOH,IAAc,QACvB,CAEO,SAASI,GAAoC,CAClD,OAAOJ,IAAc,cACvB,CAEO,SAASK,GAA6B,CAC3C,OAAOL,IAAc,OACvB,CAEO,SAASM,GAAiC,CAC/C,OAAON,IAAc,SACvB,CAEO,SAASO,GAA2B,CACzC,OAAOP,IAAc,MACvB,CAGO,SAASQ,EACd5I,EACwB,CACxB,OAAO,SAA+BC,EAAU,CAC9C,MAAMwH,EAAWW,EAAA,EACjB,OAAOS,EAAAA,kBAAAA,IAAC7I,EAAA,CAAW,GAAGC,EAAO,SAAAwH,CAAA,CAAoB,CACnD,CACF,CCzJO,SAASqB,GAAmBvL,EAA6B,GAAI,CAClE,OAAO,SAA8B,CAAE,SAAAiK,GAA2C,CAChF,OACEqB,EAAAA,kBAAAA,IAACtB,EAAA,CAAgB,SAAUhK,EAAO,SAC/B,SAAAiK,EACH,CAEJ,CACF,CCnBO,MAAMuB,EAAW,CACtB,UAAW,YACX,UAAW,YACX,kBAAmB,oBACnB,UAAW,YACX,mBAAoB,qBACpB,iBAAkB,mBAClB,eAAgB,iBAChB,SAAU,WACV,WAAY,aACZ,mBAAoB,oBACtB,EAYaC,EAAqD,CAChE,gBAAiB,CACfD,EAAS,UACTA,EAAS,kBACTA,EAAS,kBAAA,EAEX,gBAAiB,OACjB,gBAAiB,IACjB,cAAe,CACjB,EAGaE,GAAiB,CAE5B,iBAAkBC,EAAAA,KAAK,IACrB,QAAA,QAAA,EAAA,KAAA,IAAA,QAAO,oCAA0C,CAAA,EAAA,KAAAC,GAAAA,EAAA,gBAAA,EAC9C,SAAgB,CAAE,QAASC,EAAO,kBAAmB,CAAA,EAI1D,gBAAiBF,EAAAA,KAAK,IACpB,QAAA,QAAA,EAAA,KAAA,IAAA,QAAO,oCAA0C,CAAA,EAAA,KAAAC,GAAAA,EAAA,gBAAA,EAC9C,SAAgB,CAAE,QAASC,EAAO,kBAAmB,CAAA,EAI1D,gBAAiBF,EAAAA,KAAK,IACpB,QAAA,QAAA,EAAA,KAAA,IAAA,QAAO,oCAA0C,CAAA,EAAA,KAAAC,GAAAA,EAAA,gBAAA,EAC9C,SAAgB,CAAE,QAASC,EAAO,iBAAkB,CAAA,EAGzD,sBAAuBF,EAAAA,KAAK,IAC1B,QAAA,QAAA,EAAA,KAAA,IAAA,QAAO,oCAA0C,CAAA,EAAA,KAAAC,GAAAA,EAAA,gBAAA,EAC9C,SAAgB,CAAE,QAASC,EAAO,uBAAwB,CAAA,EAG/D,cAAeF,EAAAA,KAAK,IAClB,QAAA,QAAA,EAAA,KAAA,IAAA,QAAO,oCAA0C,CAAA,EAAA,KAAAC,GAAAA,EAAA,gBAAA,EAC9C,SAAgB,CAAE,QAASC,EAAO,eAAgB,CAAA,EAGvD,uBAAwBF,EAAAA,KAAK,IAC3B,QAAA,QAAA,EAAA,KAAA,IAAA,QAAO,oCAA0C,CAAA,EAAA,KAAAC,GAAAA,EAAA,gBAAA,EAC9C,SAAgB,CAAE,QAASC,EAAO,wBAAyB,CAAA,EAIhE,iBAAkBF,EAAAA,KAAK,IACrB,QAAA,QAAA,EAAA,KAAA,IAAA,QAAO,oCAA0C,CAAA,EAAA,KAAAC,GAAAA,EAAA,gBAAA,EAC9C,SAAgB,CAAE,QAASC,EAAO,kBAAmB,CAAA,CAE5D,EAGO,MAAMC,CAAgB,CAG3B,aAAa,YAAYC,EAAwC,CAC/D,GAAI,KAAK,MAAM,IAAIA,CAAO,EACxB,OAAO,KAAK,MAAM,IAAIA,CAAO,EAG/B,MAAMC,EAAY,MAAM,KAAK,oBAAoBD,CAAO,EACxD,YAAK,MAAM,IAAIA,EAASC,CAAS,EAC1BA,CACT,CAEA,aAAqB,oBAAoBD,EAAwC,CAC/E,GAAI,OAAO,OAAW,KAAe,OAAO,SAAa,IAEvD,MAAO,GAGT,OAAQA,EAAA,CACN,KAAKP,EAAS,UACZ,MAAO,cAAe,OAExB,KAAKA,EAAS,mBACZ,MAAO,4BAA6B,SAEtC,KAAKA,EAAS,kBACZ,MAAO,GAET,KAAKA,EAAS,UACZ,MAAO,iBAAkB,OAE3B,KAAKA,EAAS,UACZ,MAAO,yBAA0B,OAEnC,KAAKA,EAAS,iBACZ,MAAO,gBAAiB,OAE1B,KAAKA,EAAS,eACZ,MAAO,GAET,KAAKA,EAAS,SACZ,MAAO,cAAe,OAExB,KAAKA,EAAS,WACZ,MAAO,oBAAqB,QAAU,WAAY,SAAS,cAAc,QAAQ,EAEnF,KAAKA,EAAS,mBACZ,MAAO,kBAAmB,OAE5B,QACE,MAAO,EAAA,CAEb,CACF,CArDE1L,EADWgM,EACI,QAAQ,IAAI,KAwDtB,MAAMG,CAAkB,CAK7B,YAAYjM,EAA4C,GAAI,CAJpDF,EAAA,eACAA,EAAA,0BAAqB,KACrBA,EAAA,2BAAsB,KAG5B,KAAK,OAAS,CAAE,GAAG2L,EAA0B,GAAGzL,CAAA,CAClD,CAEA,MAAM,YAAqB+L,EAAyC,CAElE,GAAI,CAAC,KAAK,OAAO,gBAAgB,SAASA,CAAO,EAC/C,OAAO,KAIT,GAAI,KAAK,eAAe,IAAIA,CAAO,EACjC,OAAO,KAAK,iBAAiBA,CAAO,EAItC,GAAI,KAAK,gBAAgB,IAAIA,CAAO,EAClC,OAAO,KAAK,gBAAgB,IAAIA,CAAO,EAKzC,GAAI,CADgB,MAAMD,EAAgB,YAAYC,CAAO,EAE3D,eAAQ,KAAK,WAAWA,CAAO,mCAAmC,EAC3D,KAIT,MAAMG,EAAiB,KAAK,cAAcH,CAAO,EACjD,KAAK,gBAAgB,IAAIA,EAASG,CAAc,EAEhD,GAAI,CACF,MAAMjL,EAAS,MAAMiL,EACrB,YAAK,eAAe,IAAIH,CAAO,EACxB9K,CACT,OAASZ,EAAO,CACd,eAAQ,MAAM,0BAA0B0L,CAAO,IAAK1L,CAAK,EACzD,KAAK,gBAAgB,OAAO0L,CAAO,EAC5B,IACT,CACF,CAEA,MAAc,cAAiBA,EAAsBI,EAAU,EAAe,CAC5E,GAAI,CAEF,OADe,MAAM,KAAK,kBAAkBJ,CAAO,CAErD,OAAS1L,EAAO,CACd,GAAI8L,EAAU,KAAK,OAAO,cACxB,eAAQ,KAAK,mBAAmBJ,CAAO,sBAAsBI,CAAO,IAAI,KAAK,OAAO,aAAa,GAAG,EACpG,MAAM,IAAI,QAAQC,GAAW,WAAWA,EAAS,IAAOD,CAAO,CAAC,EACzD,KAAK,cAAcJ,EAASI,EAAU,CAAC,EAEhD,MAAM9L,CACR,CACF,CAEA,MAAc,kBAAkB0L,EAAsB,CACpD,OAAQA,EAAA,CACN,KAAKP,EAAS,UACZ,OAAO,QAAA,QAAA,EAAA,KAAA,IAAA,QAAO,sBAA+B,CAAA,EAAA,KAAAI,GAAAA,EAAA,sBAAA,EAE/C,KAAKJ,EAAS,UACZ,OAAO,QAAA,QAAA,EAAA,KAAA,IAAA,QAAO,oCAA0C,CAAA,EAAA,KAAAI,GAAAA,EAAA,gBAAA,EAE1D,KAAKJ,EAAS,kBACZ,OAAO,QAAA,QAAA,EAAA,KAAA,IAAA,QAAO,oCAA0C,CAAA,EAAA,KAAAI,GAAAA,EAAA,gBAAA,EAE1D,KAAKJ,EAAS,UACZ,OAAO,QAAA,QAAA,EAAA,KAAA,IAAA,QAAO,oCAA0C,CAAA,EAAA,KAAAI,GAAAA,EAAA,gBAAA,EAE1D,KAAKJ,EAAS,mBACZ,OAAO,QAAA,QAAA,EAAA,KAAA,IAAA,QAAO,oCAA0C,CAAA,EAAA,KAAAI,GAAAA,EAAA,gBAAA,EAE1D,KAAKJ,EAAS,iBACZ,OAAO,QAAA,QAAA,EAAA,KAAA,IAAA,QAAO,oCAA0C,CAAA,EAAA,KAAAI,GAAAA,EAAA,gBAAA,EAE1D,KAAKJ,EAAS,eACZ,OAAO,QAAA,QAAA,EAAA,KAAA,IAAA,QAAO,oCAA0C,CAAA,EAAA,KAAAI,GAAAA,EAAA,gBAAA,EAE1D,KAAKJ,EAAS,SACZ,OAAO,QAAA,QAAA,EAAA,KAAA,IAAA,QAAO,oCAA0C,CAAA,EAAA,KAAAI,GAAAA,EAAA,gBAAA,EAE1D,KAAKJ,EAAS,WACZ,OAAO,QAAA,QAAA,EAAA,KAAA,IAAA,QAAO,oCAA0C,CAAA,EAAA,KAAAI,GAAAA,EAAA,gBAAA,EAE1D,KAAKJ,EAAS,mBACZ,OAAO,QAAA,QAAA,EAAA,KAAA,IAAA,QAAO,sBAAgC,CAAA,EAAA,KAAAI,GAAAA,EAAA,qBAAA,EAEhD,QACE,MAAM,IAAI,MAAM,oBAAoBG,CAAO,EAAE,CAAA,CAEnD,CAEQ,iBAAiBA,EAAsB,CAE7C,OAAO,KAAK,gBAAgB,IAAIA,CAAO,CACzC,CAGA,MAAM,gBAAgBM,EAA0B,KAAK,OAAO,gBAAiB,CAC3E,MAAMC,EAAkBD,EAAS,OAAe,KAAK,YAAYN,CAAO,CAAC,EACzE,MAAM,QAAQ,WAAWO,CAAe,CAC1C,CAGA,iBAAkB,CAChB,MAAO,CACL,OAAQ,MAAM,KAAK,KAAK,cAAc,EACtC,QAAS,MAAM,KAAK,KAAK,gBAAgB,MAAM,EAC/C,QAAS,KAAK,OAAO,eAAA,CAEzB,CACF,CAGO,MAAMC,EAAoB,IAAIN,EAG9B,SAASO,EAA+BT,EAK7C,CACA,KAAM,CAACU,EAAeC,CAAgB,EAAI5D,EAAM,SAAmB,IAAI,EACjE,CAAC6D,EAASC,CAAU,EAAI9D,EAAM,SAAS,EAAK,EAC5C,CAACzI,EAAOwM,CAAQ,EAAI/D,EAAM,SAAuB,IAAI,EAErDgE,EAAOhE,EAAM,YAAY,SAAY,CACzC,GAAI,EAAA6D,GAAWF,GAEf,CAAAG,EAAW,EAAI,EACfC,EAAS,IAAI,EAEb,GAAI,CACF,MAAMhB,EAAS,MAAMU,EAAkB,YAAeR,CAAO,EAC7DW,EAAiBb,CAAM,CACzB,OAASpL,EAAK,CACZoM,EAASpM,CAAY,CACvB,QAAA,CACEmM,EAAW,EAAK,CAClB,EACF,EAAG,CAACb,EAASY,EAASF,CAAa,CAAC,EAGpC,OAAA3D,EAAM,UAAU,IAAM,CAChByD,EAAkB,OAAU,kBAAoB,aAClDO,EAAA,CAEJ,EAAG,CAACA,CAAI,CAAC,EAEF,CACL,QAASL,EACT,QAAAE,EACA,MAAAtM,EACA,KAAAyM,CAAA,CAEJ,CAGO,SAASC,GACdC,EACAjB,EACAkB,EACA,CACA,OAAO,SAAmCvK,EAAU,CAClD,KAAM,CAAE,QAAS+J,EAAe,QAAAE,EAAS,MAAAtM,CAAA,EAAUmM,EAAsBT,CAAO,EAEhF,GAAIY,EACF,OAAOrB,EAAAA,kBAAAA,IAAC,MAAA,CAAI,UAAU,uCAAA,CAAwC,EAGhE,GAAIjL,GAAS,CAACoM,EAAe,CAC3B,MAAMS,EAAWD,EACjB,OAAOC,EAAW5B,EAAAA,kBAAAA,IAAC4B,EAAA,CAAU,GAAGxK,EAAO,EAAK,IAC9C,CAEA,OAAO4I,wBAAC0B,EAAA,CAAkB,GAAGtK,CAAA,CAAO,CACtC,CACF,CCrTO,MAAMyK,GAA4B"}
|