@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
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"core-plugins-Bq9KLany.js","sources":["../src/core/plugins/types.ts","../src/core/plugins/registry.ts","../src/core/plugins/base-plugin.ts","../src/core/plugins/examples/analytics-plugin.ts","../src/core/plugins/utils.ts","../src/core/plugins/index.ts"],"sourcesContent":["// TODO: Import proper types when integrated\nexport interface MediaState {\n isPlaying: boolean\n currentTime: number\n duration: number\n volume: number\n isMuted: boolean\n}\n\nexport interface MediaPlayerControls {\n play(): void\n pause(): void\n seek(time: number): void\n setVolume(volume: number): void\n}\n\n// Plugin lifecycle phases\nexport type PluginPhase = 'initialize' | 'activate' | 'deactivate' | 'destroy'\n\n// Plugin categories for organization\nexport type PluginCategory = \n | 'controls' \n | 'analytics' \n | 'streaming' \n | 'subtitle' \n | 'quality' \n | 'ui' \n | 'accessibility'\n | 'performance'\n\n// Plugin priority for execution order\nexport type PluginPriority = 'high' | 'medium' | 'low'\n\n// Plugin configuration interface\nexport interface PluginConfig {\n [key: string]: any\n}\n\n// Plugin context provided to each plugin\nexport interface PluginContext {\n // Core media player state and controls\n state: MediaState\n controls: MediaPlayerControls\n \n // Plugin management\n plugins: PluginRegistry\n \n // Event system\n emit: (event: string, data?: any) => void\n on: (event: string, handler: (data: any) => void) => () => void\n \n // Utilities\n element: HTMLElement | null\n logger: PluginLogger\n}\n\n// Plugin metadata\nexport interface PluginMetadata {\n name: string\n version: string\n description: string\n author?: string\n category: PluginCategory\n priority: PluginPriority\n dependencies?: string[]\n conflicts?: string[]\n}\n\n// Plugin interface that all plugins must implement\nexport interface Plugin {\n metadata: PluginMetadata\n \n // Plugin lifecycle methods\n initialize(context: PluginContext, config?: PluginConfig): Promise<void> | void\n activate(context: PluginContext): Promise<void> | void\n deactivate(context: PluginContext): Promise<void> | void\n destroy(context: PluginContext): Promise<void> | void\n \n // Configuration handling\n configure?(config: PluginConfig): Promise<void> | void\n \n // Health check for plugin status\n healthCheck?(): Promise<boolean> | boolean\n}\n\n// Plugin factory function type\nexport type PluginFactory<T extends Plugin = Plugin> = (config?: PluginConfig) => T\n\n// Plugin registry interface\nexport interface PluginRegistry {\n register(factory: PluginFactory, config?: PluginConfig): Promise<void>\n unregister(name: string): Promise<void>\n get(name: string): Plugin | undefined\n getAll(): Plugin[]\n isEnabled(name: string): boolean\n enable(name: string): Promise<void>\n disable(name: string): Promise<void>\n configure(name: string, config: PluginConfig): Promise<void>\n}\n\n// Plugin logger interface\nexport interface PluginLogger {\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// Plugin event types\nexport interface PluginEvents {\n 'plugin:registered': { name: string; plugin: Plugin }\n 'plugin:enabled': { name: string; plugin: Plugin }\n 'plugin:disabled': { name: string; plugin: Plugin }\n 'plugin:error': { name: string; error: Error }\n 'plugin:configured': { name: string; config: PluginConfig }\n}\n\n// Plugin error types\nexport class PluginError extends Error {\n constructor(\n public pluginName: string,\n public phase: PluginPhase,\n message: string,\n public originalError?: Error\n ) {\n super(`Plugin '${pluginName}' failed during ${phase}: ${message}`)\n this.name = 'PluginError'\n }\n}\n\n// Plugin dependency error\nexport class PluginDependencyError extends PluginError {\n constructor(\n pluginName: string,\n public missingDependencies: string[]\n ) {\n super(\n pluginName,\n 'initialize',\n `Missing dependencies: ${missingDependencies.join(', ')}`\n )\n this.name = 'PluginDependencyError'\n }\n}\n\n// Plugin conflict error\nexport class PluginConflictError extends PluginError {\n constructor(\n pluginName: string,\n public conflictingPlugins: string[]\n ) {\n super(\n pluginName,\n 'activate',\n `Conflicts with active plugins: ${conflictingPlugins.join(', ')}`\n )\n this.name = 'PluginConflictError'\n }\n}","import { EventBus } from '../events/event-system'\nimport type {\n Plugin,\n PluginFactory,\n PluginConfig,\n PluginRegistry as IPluginRegistry,\n PluginContext,\n PluginLogger,\n PluginEvents,\n PluginPriority\n} from './types'\nimport {\n PluginError,\n PluginDependencyError,\n PluginConflictError\n} from './types'\n\n// Plugin registry implementation\nexport class PluginRegistry implements IPluginRegistry {\n private plugins = new Map<string, Plugin>()\n private pluginConfigs = new Map<string, PluginConfig>()\n private enabledPlugins = new Set<string>()\n private eventBus = new EventBus()\n private logger: PluginLogger\n\n constructor(logger: PluginLogger) {\n this.logger = logger\n }\n\n // Register a plugin factory\n async register(factory: PluginFactory, config: PluginConfig = {}): Promise<void> {\n try {\n const plugin = factory(config)\n const { name, dependencies = [], conflicts = [] } = plugin.metadata\n\n // Check if plugin already exists\n if (this.plugins.has(name)) {\n throw new PluginError(name, 'initialize', 'Plugin already registered')\n }\n\n // Validate dependencies\n const missingDependencies = dependencies.filter(dep => !this.plugins.has(dep))\n if (missingDependencies.length > 0) {\n throw new PluginDependencyError(name, missingDependencies)\n }\n\n // Check for conflicts with enabled plugins\n const activeConflicts = conflicts.filter(conflict => this.enabledPlugins.has(conflict))\n if (activeConflicts.length > 0) {\n throw new PluginConflictError(name, activeConflicts)\n }\n\n // Store plugin and configuration\n this.plugins.set(name, plugin)\n this.pluginConfigs.set(name, config)\n\n this.logger.info(`Plugin '${name}' registered successfully`)\n ;(this.eventBus as any).emit('plugin:registered', { name, plugin })\n\n } catch (error) {\n const pluginName = factory({}).metadata.name\n this.logger.error(`Failed to register plugin '${pluginName}'`, error)\n ;(this.eventBus as any).emit('plugin:error', { name: pluginName, error: error as Error })\n throw error\n }\n }\n\n // Unregister a plugin\n async unregister(name: string): Promise<void> {\n const plugin = this.plugins.get(name)\n if (!plugin) {\n throw new PluginError(name, 'destroy', 'Plugin not found')\n }\n\n try {\n // Disable plugin if enabled\n if (this.enabledPlugins.has(name)) {\n await this.disable(name)\n }\n\n // Remove from registry\n this.plugins.delete(name)\n this.pluginConfigs.delete(name)\n\n this.logger.info(`Plugin '${name}' unregistered successfully`)\n } catch (error) {\n this.logger.error(`Failed to unregister plugin '${name}'`, error)\n throw error\n }\n }\n\n // Get a plugin by name\n get(name: string): Plugin | undefined {\n return this.plugins.get(name)\n }\n\n // Get all plugins sorted by priority\n getAll(): Plugin[] {\n return Array.from(this.plugins.values()).sort(this.sortByPriority)\n }\n\n // Check if plugin is enabled\n isEnabled(name: string): boolean {\n return this.enabledPlugins.has(name)\n }\n\n // Enable a plugin\n async enable(name: string): Promise<void> {\n const plugin = this.plugins.get(name)\n if (!plugin) {\n throw new PluginError(name, 'activate', 'Plugin not found')\n }\n\n if (this.enabledPlugins.has(name)) {\n this.logger.warn(`Plugin '${name}' is already enabled`)\n return\n }\n\n try {\n const context = this.createPluginContext(name)\n const config = this.pluginConfigs.get(name)\n\n // Initialize plugin\n await plugin.initialize(context, config)\n \n // Activate plugin\n await plugin.activate(context)\n \n this.enabledPlugins.add(name)\n this.logger.info(`Plugin '${name}' enabled successfully`)\n ;(this.eventBus as any).emit('plugin:enabled', { name, plugin })\n\n } catch (error) {\n this.logger.error(`Failed to enable plugin '${name}'`, error)\n ;(this.eventBus as any).emit('plugin:error', { name, error: error as Error })\n throw error\n }\n }\n\n // Disable a plugin\n async disable(name: string): Promise<void> {\n const plugin = this.plugins.get(name)\n if (!plugin) {\n throw new PluginError(name, 'deactivate', 'Plugin not found')\n }\n\n if (!this.enabledPlugins.has(name)) {\n this.logger.warn(`Plugin '${name}' is already disabled`)\n return\n }\n\n try {\n const context = this.createPluginContext(name)\n\n // Deactivate plugin\n await plugin.deactivate(context)\n \n // Destroy plugin resources\n await plugin.destroy(context)\n \n this.enabledPlugins.delete(name)\n this.logger.info(`Plugin '${name}' disabled successfully`)\n ;(this.eventBus as any).emit('plugin:disabled', { name, plugin })\n\n } catch (error) {\n this.logger.error(`Failed to disable plugin '${name}'`, error)\n ;(this.eventBus as any).emit('plugin:error', { name, error: error as Error })\n throw error\n }\n }\n\n // Configure a plugin\n async configure(name: string, config: PluginConfig): Promise<void> {\n const plugin = this.plugins.get(name)\n if (!plugin) {\n throw new PluginError(name, 'initialize', 'Plugin not found')\n }\n\n try {\n // Update stored configuration\n this.pluginConfigs.set(name, { ...this.pluginConfigs.get(name), ...config })\n\n // If plugin has configure method, call it\n if (plugin.configure) {\n await plugin.configure(config)\n }\n\n this.logger.info(`Plugin '${name}' configured successfully`)\n ;(this.eventBus as any).emit('plugin:configured', { name, config })\n\n } catch (error) {\n this.logger.error(`Failed to configure plugin '${name}'`, error)\n ;(this.eventBus as any).emit('plugin:error', { name, error: error as Error })\n throw error\n }\n }\n\n // Enable multiple plugins with dependency resolution\n async enablePlugins(names: string[]): Promise<void> {\n const resolved = this.resolveDependencies(names)\n \n for (const name of resolved) {\n if (!this.enabledPlugins.has(name)) {\n await this.enable(name)\n }\n }\n }\n\n // Disable multiple plugins\n async disablePlugins(names: string[]): Promise<void> {\n // Disable in reverse order to handle dependencies\n const reversed = [...names].reverse()\n \n for (const name of reversed) {\n if (this.enabledPlugins.has(name)) {\n await this.disable(name)\n }\n }\n }\n\n // Get enabled plugins\n getEnabledPlugins(): Plugin[] {\n return Array.from(this.enabledPlugins)\n .map(name => this.plugins.get(name)!)\n .filter(Boolean)\n .sort(this.sortByPriority)\n }\n\n // Health check for all enabled plugins\n async healthCheck(): Promise<{ name: string; healthy: boolean; error?: Error }[]> {\n const results = []\n \n for (const name of this.enabledPlugins) {\n const plugin = this.plugins.get(name)!\n try {\n const healthy = plugin.healthCheck ? await plugin.healthCheck() : true\n results.push({ name, healthy })\n } catch (error) {\n results.push({ name, healthy: false, error: error as Error })\n }\n }\n \n return results\n }\n\n // Event handling\n on<K extends keyof PluginEvents>(\n event: K,\n listener: (data: PluginEvents[K]) => void\n ): () => void {\n (this.eventBus as any).on(event, listener)\n return () => (this.eventBus as any).off(event, listener)\n }\n\n // Create plugin context (will be implemented when we have the full context)\n private createPluginContext(pluginName: string): PluginContext {\n // This will be implemented when we integrate with the media player\n // For now, return a minimal context\n return {\n state: {} as any,\n controls: {} as any,\n plugins: this,\n emit: (event: string, data?: any) => (this.eventBus as any).emit(event, data),\n on: (event: string, handler: (data: any) => void) => {\n (this.eventBus as any).on(event, handler)\n return () => (this.eventBus as any).off(event, handler)\n },\n element: null,\n logger: this.createPluginLogger(pluginName)\n }\n }\n\n // Create plugin-specific logger\n private createPluginLogger(pluginName: string): PluginLogger {\n return {\n info: (message: string, data?: any) => this.logger.info(`[${pluginName}] ${message}`, data),\n warn: (message: string, data?: any) => this.logger.warn(`[${pluginName}] ${message}`, data),\n error: (message: string, data?: any) => this.logger.error(`[${pluginName}] ${message}`, data),\n debug: (message: string, data?: any) => this.logger.debug(`[${pluginName}] ${message}`, data)\n }\n }\n\n // Resolve plugin dependencies\n private resolveDependencies(names: string[]): string[] {\n const resolved: string[] = []\n const visiting = new Set<string>()\n\n const visit = (name: string) => {\n if (resolved.includes(name)) return\n if (visiting.has(name)) {\n throw new PluginError(name, 'initialize', 'Circular dependency detected')\n }\n\n visiting.add(name)\n \n const plugin = this.plugins.get(name)\n if (!plugin) {\n throw new PluginError(name, 'initialize', 'Plugin not found')\n }\n\n // Visit dependencies first\n for (const dep of plugin.metadata.dependencies || []) {\n visit(dep)\n }\n\n visiting.delete(name)\n resolved.push(name)\n }\n\n for (const name of names) {\n visit(name)\n }\n\n return resolved\n }\n\n // Sort plugins by priority\n private sortByPriority(a: Plugin, b: Plugin): number {\n const priorityOrder: Record<PluginPriority, number> = {\n high: 3,\n medium: 2,\n low: 1\n }\n \n return priorityOrder[b.metadata.priority] - priorityOrder[a.metadata.priority]\n }\n}","import type {\n Plugin,\n PluginMetadata,\n PluginContext,\n PluginConfig,\n PluginCategory,\n PluginPriority\n} from './types'\n\n// Abstract base plugin class\nexport abstract class BasePlugin implements Plugin {\n public readonly metadata: PluginMetadata\n\n protected context?: PluginContext\n protected config: PluginConfig = {}\n protected initialized = false\n protected active = false\n\n constructor(metadata: Omit<PluginMetadata, 'version'> & { version?: string }) {\n this.metadata = {\n version: '1.0.0',\n ...metadata\n }\n }\n\n // Plugin lifecycle methods - can be overridden by subclasses\n async initialize(context: PluginContext, config: PluginConfig = {}): Promise<void> {\n if (this.initialized) {\n context.logger.warn('Plugin already initialized')\n return\n }\n\n this.context = context\n this.config = { ...this.config, ...config }\n \n try {\n await this.onInitialize()\n this.initialized = true\n context.logger.info(`Plugin initialized`)\n } catch (error) {\n context.logger.error('Failed to initialize plugin', error)\n throw error\n }\n }\n\n async activate(context: PluginContext): Promise<void> {\n if (!this.initialized) {\n throw new Error('Plugin must be initialized before activation')\n }\n\n if (this.active) {\n context.logger.warn('Plugin already active')\n return\n }\n\n try {\n await this.onActivate()\n this.active = true\n context.logger.info(`Plugin activated`)\n } catch (error) {\n context.logger.error('Failed to activate plugin', error)\n throw error\n }\n }\n\n async deactivate(context: PluginContext): Promise<void> {\n if (!this.active) {\n context.logger.warn('Plugin already inactive')\n return\n }\n\n try {\n await this.onDeactivate()\n this.active = false\n context.logger.info(`Plugin deactivated`)\n } catch (error) {\n context.logger.error('Failed to deactivate plugin', error)\n throw error\n }\n }\n\n async destroy(context: PluginContext): Promise<void> {\n if (this.active) {\n await this.deactivate(context)\n }\n\n try {\n await this.onDestroy()\n this.initialized = false\n context.logger.info(`Plugin destroyed`)\n } catch (error) {\n context.logger.error('Failed to destroy plugin', error)\n throw error\n }\n }\n\n async configure(config: PluginConfig): Promise<void> {\n const oldConfig = { ...this.config }\n this.config = { ...this.config, ...config }\n \n try {\n await this.onConfigure(config, oldConfig)\n this.context?.logger.info('Plugin configured')\n } catch (error) {\n // Rollback configuration on error\n this.config = oldConfig\n this.context?.logger.error('Failed to configure plugin', error)\n throw error\n }\n }\n\n healthCheck(): boolean {\n return this.initialized && this.onHealthCheck()\n }\n\n // Template methods for subclasses to override\n protected abstract onInitialize(): Promise<void> | void\n protected abstract onActivate(): Promise<void> | void\n protected abstract onDeactivate(): Promise<void> | void\n \n protected onDestroy(): Promise<void> | void {\n // Default implementation - subclasses can override\n }\n\n protected onConfigure(newConfig: PluginConfig, oldConfig: PluginConfig): Promise<void> | void {\n // Default implementation - subclasses can override\n }\n\n protected onHealthCheck(): boolean {\n // Default implementation - subclasses can override\n return true\n }\n\n // Utility methods for plugins\n protected get state() {\n return this.context?.state\n }\n\n protected get controls() {\n return this.context?.controls\n }\n\n protected get element() {\n return this.context?.element\n }\n\n protected get logger() {\n return this.context?.logger\n }\n\n protected emit(event: string, data?: any): void {\n this.context?.emit(event, data)\n }\n\n protected on(event: string, handler: (data: any) => void): () => void {\n return this.context?.on(event, handler) || (() => {})\n }\n\n // Helper methods for common plugin patterns\n protected addEventListeners(element: HTMLElement, events: Record<string, (e: Event) => void>): () => void {\n Object.entries(events).forEach(([event, handler]) => {\n element.addEventListener(event, handler)\n })\n\n // Return cleanup function\n return () => {\n Object.entries(events).forEach(([event, handler]) => {\n element.removeEventListener(event, handler)\n })\n }\n }\n\n protected createConfig<T extends PluginConfig>(defaults: T): T {\n return { ...defaults, ...this.config } as T\n }\n\n // Plugin status\n get isInitialized(): boolean {\n return this.initialized\n }\n\n get isActive(): boolean {\n return this.active\n }\n}\n\n// Simple plugin factory helper\nexport function createPlugin<T extends BasePlugin>(\n PluginClass: new (config?: PluginConfig) => T\n) {\n return (config?: PluginConfig) => new PluginClass(config)\n}\n\n// Plugin decorator for metadata - TODO: Fix implementation\n// export function plugin(metadata: Omit<PluginMetadata, 'version'> & { version?: string }) {\n// return function<T extends { new (...args: any[]): BasePlugin }>(constructor: T) {\n// return class extends constructor {\n// constructor(...args: any[]) {\n// super(metadata, ...args)\n// }\n// }\n// }\n// }\n\n// Common plugin configurations\nexport interface UIPluginConfig extends PluginConfig {\n position?: 'top' | 'bottom' | 'left' | 'right' | 'center'\n zIndex?: number\n className?: string\n style?: Record<string, string>\n}\n\nexport interface AnalyticsPluginConfig extends PluginConfig {\n trackingId?: string\n events?: string[]\n samplingRate?: number\n debug?: boolean\n}\n\nexport interface PerformancePluginConfig extends PluginConfig {\n enableMetrics?: boolean\n reportInterval?: number\n thresholds?: Record<string, number>\n}","import { BasePlugin, type AnalyticsPluginConfig } from '../base-plugin'\n\ninterface AnalyticsEvent {\n event: string\n timestamp: number\n data?: any\n}\n\ninterface AnalyticsConfig extends AnalyticsPluginConfig {\n trackingId: string\n events: string[]\n samplingRate: number\n debug: boolean\n endpoint?: string\n}\n\nexport class AnalyticsPlugin extends BasePlugin {\n private events: AnalyticsEvent[] = []\n private analyticsConfig!: AnalyticsConfig\n private cleanupFunctions: Array<() => void> = []\n private reportTimer?: NodeJS.Timeout\n\n constructor(config?: AnalyticsPluginConfig) {\n super({\n name: 'analytics',\n description: 'Media player analytics and tracking',\n category: 'analytics',\n priority: 'low',\n author: 'BaroiPlayer Team'\n })\n }\n\n protected onInitialize(): void {\n this.analyticsConfig = this.createConfig<AnalyticsConfig>({\n trackingId: '',\n events: ['play', 'pause', 'seek', 'ended', 'error'],\n samplingRate: 1.0,\n debug: false,\n endpoint: '/api/analytics'\n })\n\n if (!this.analyticsConfig.trackingId) {\n throw new Error('Analytics plugin requires a tracking ID')\n }\n\n this.logger?.info('Analytics plugin initialized', { \n trackingId: this.analyticsConfig.trackingId,\n events: this.analyticsConfig.events \n })\n }\n\n protected onActivate(): void {\n // Set up event listeners for media events\n const mediaEventCleanup = this.setupMediaEventListeners()\n this.cleanupFunctions.push(mediaEventCleanup)\n\n // Set up periodic reporting\n if (this.analyticsConfig.endpoint) {\n this.reportTimer = setInterval(() => {\n this.reportEvents()\n }, 30000) // Report every 30 seconds\n\n this.cleanupFunctions.push(() => {\n if (this.reportTimer) {\n clearInterval(this.reportTimer)\n }\n })\n }\n\n this.trackEvent('plugin_activated', { plugin: 'analytics' })\n this.logger?.info('Analytics tracking started')\n }\n\n protected onDeactivate(): void {\n // Clean up all event listeners and timers\n this.cleanupFunctions.forEach(cleanup => cleanup())\n this.cleanupFunctions = []\n\n // Report any remaining events\n if (this.events.length > 0) {\n this.reportEvents()\n }\n\n this.trackEvent('plugin_deactivated', { plugin: 'analytics' })\n this.logger?.info('Analytics tracking stopped')\n }\n\n protected onConfigure(newConfig: AnalyticsConfig): void {\n // Update tracking configuration \n this.analyticsConfig = { ...this.analyticsConfig, ...newConfig }\n if (newConfig.events) {\n // Re-setup event listeners if events changed\n this.cleanupFunctions.forEach(cleanup => cleanup())\n this.cleanupFunctions = []\n \n const mediaEventCleanup = this.setupMediaEventListeners()\n this.cleanupFunctions.push(mediaEventCleanup)\n }\n }\n\n private setupMediaEventListeners(): () => void {\n const cleanupFunctions: Array<() => void> = []\n\n // Listen for media state changes\n if (this.analyticsConfig.events.includes('play')) {\n const unsubscribe = this.on('media:play', (data) => {\n this.trackEvent('play', data)\n })\n cleanupFunctions.push(unsubscribe)\n }\n\n if (this.analyticsConfig.events.includes('pause')) {\n const unsubscribe = this.on('media:pause', (data) => {\n this.trackEvent('pause', data)\n })\n cleanupFunctions.push(unsubscribe)\n }\n\n if (this.analyticsConfig.events.includes('seek')) {\n const unsubscribe = this.on('media:seek', (data) => {\n this.trackEvent('seek', data)\n })\n cleanupFunctions.push(unsubscribe)\n }\n\n if (this.analyticsConfig.events.includes('ended')) {\n const unsubscribe = this.on('media:ended', (data) => {\n this.trackEvent('ended', data)\n })\n cleanupFunctions.push(unsubscribe)\n }\n\n if (this.analyticsConfig.events.includes('error')) {\n const unsubscribe = this.on('media:error', (data) => {\n this.trackEvent('error', data)\n })\n cleanupFunctions.push(unsubscribe)\n }\n\n // Return cleanup function\n return () => {\n cleanupFunctions.forEach(cleanup => cleanup())\n }\n }\n\n private trackEvent(event: string, data?: any): void {\n // Apply sampling rate\n if (Math.random() > this.analyticsConfig.samplingRate) {\n return\n }\n\n const analyticsEvent: AnalyticsEvent = {\n event,\n timestamp: Date.now(),\n data: {\n ...data,\n trackingId: this.analyticsConfig.trackingId,\n sessionId: this.generateSessionId(),\n mediaState: {\n currentTime: this.state?.currentTime,\n duration: this.state?.duration,\n volume: this.state?.volume,\n isPlaying: this.state?.isPlaying\n }\n }\n }\n\n this.events.push(analyticsEvent)\n\n if (this.analyticsConfig.debug) {\n this.logger?.info('Analytics event tracked', analyticsEvent)\n }\n\n // Emit event for other plugins or applications to use\n this.emit('analytics:event', analyticsEvent)\n }\n\n private async reportEvents(): Promise<void> {\n if (this.events.length === 0 || !this.analyticsConfig.endpoint) {\n return\n }\n\n const eventsToReport = [...this.events]\n this.events = []\n\n try {\n const response = await fetch(this.analyticsConfig.endpoint, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n trackingId: this.analyticsConfig.trackingId,\n events: eventsToReport\n })\n })\n\n if (!response.ok) {\n throw new Error(`Analytics report failed: ${response.status}`)\n }\n\n if (this.analyticsConfig.debug) {\n this.logger?.info(`Reported ${eventsToReport.length} analytics events`)\n }\n\n } catch (error) {\n // Put events back in queue on failure\n this.events.unshift(...eventsToReport)\n this.logger?.error('Failed to report analytics events', error)\n }\n }\n\n private generateSessionId(): string {\n // Simple session ID generation - could be more sophisticated\n return `session_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`\n }\n\n // Public API for manual event tracking\n public track(event: string, data?: any): void {\n this.trackEvent(event, data)\n }\n\n // Get pending events count\n public getPendingEventsCount(): number {\n return this.events.length\n }\n\n // Flush all pending events\n public async flush(): Promise<void> {\n await this.reportEvents()\n }\n\n protected onHealthCheck(): boolean {\n // Check if we're not accumulating too many events\n return this.events.length < 1000\n }\n}\n\n// Plugin factory\nexport const createAnalyticsPlugin = (config?: AnalyticsPluginConfig) => {\n return new AnalyticsPlugin(config)\n}","import type { Plugin, PluginLogger, PluginConfig } from './types'\n\n// Simple console logger implementation\nexport class ConsolePluginLogger implements PluginLogger {\n private prefix: string\n\n constructor(prefix = '[Plugin]') {\n this.prefix = prefix\n }\n\n info(message: string, data?: any): void {\n if (data) {\n console.info(`${this.prefix} ${message}`, data)\n } else {\n console.info(`${this.prefix} ${message}`)\n }\n }\n\n warn(message: string, data?: any): void {\n if (data) {\n console.warn(`${this.prefix} ${message}`, data)\n } else {\n console.warn(`${this.prefix} ${message}`)\n }\n }\n\n error(message: string, data?: any): void {\n if (data) {\n console.error(`${this.prefix} ${message}`, data)\n } else {\n console.error(`${this.prefix} ${message}`)\n }\n }\n\n debug(message: string, data?: any): void {\n if (process.env.NODE_ENV === 'development') {\n if (data) {\n console.debug(`${this.prefix} ${message}`, data)\n } else {\n console.debug(`${this.prefix} ${message}`)\n }\n }\n }\n}\n\n// Plugin validation utilities\nexport class PluginValidator {\n static validateMetadata(plugin: Plugin): boolean {\n const { metadata } = plugin\n \n if (!metadata.name || typeof metadata.name !== 'string') {\n throw new Error('Plugin metadata must include a valid name')\n }\n\n if (!metadata.version || typeof metadata.version !== 'string') {\n throw new Error('Plugin metadata must include a valid version')\n }\n\n if (!metadata.description || typeof metadata.description !== 'string') {\n throw new Error('Plugin metadata must include a valid description')\n }\n\n if (!metadata.category) {\n throw new Error('Plugin metadata must include a valid category')\n }\n\n if (!metadata.priority) {\n throw new Error('Plugin metadata must include a valid priority')\n }\n\n return true\n }\n\n static validateConfig(config: PluginConfig, schema?: Record<string, any>): boolean {\n if (!schema) return true\n\n // Simple schema validation - could be enhanced with a proper schema validator\n for (const [key, rules] of Object.entries(schema)) {\n const value = config[key]\n\n if (rules.required && (value === undefined || value === null)) {\n throw new Error(`Configuration property '${key}' is required`)\n }\n\n if (value !== undefined && rules.type && typeof value !== rules.type) {\n throw new Error(`Configuration property '${key}' must be of type '${rules.type}'`)\n }\n\n if (rules.enum && !rules.enum.includes(value)) {\n throw new Error(`Configuration property '${key}' must be one of: ${rules.enum.join(', ')}`)\n }\n\n if (rules.min !== undefined && typeof value === 'number' && value < rules.min) {\n throw new Error(`Configuration property '${key}' must be at least ${rules.min}`)\n }\n\n if (rules.max !== undefined && typeof value === 'number' && value > rules.max) {\n throw new Error(`Configuration property '${key}' must be at most ${rules.max}`)\n }\n }\n\n return true\n }\n}\n\n// Plugin performance monitoring\nexport class PluginPerformanceMonitor {\n private metrics = new Map<string, {\n calls: number\n totalTime: number\n averageTime: number\n lastCall: number\n }>()\n\n measure<T>(pluginName: string, operation: string, fn: () => T | Promise<T>): T | Promise<T> {\n const key = `${pluginName}.${operation}`\n const startTime = performance.now()\n\n const updateMetrics = () => {\n const endTime = performance.now()\n const duration = endTime - startTime\n\n const existing = this.metrics.get(key) || {\n calls: 0,\n totalTime: 0,\n averageTime: 0,\n lastCall: 0\n }\n\n existing.calls++\n existing.totalTime += duration\n existing.averageTime = existing.totalTime / existing.calls\n existing.lastCall = endTime\n\n this.metrics.set(key, existing)\n }\n\n const result = fn()\n\n if (result instanceof Promise) {\n return result.then(\n (value) => {\n updateMetrics()\n return value\n },\n (error) => {\n updateMetrics()\n throw error\n }\n )\n } else {\n updateMetrics()\n return result\n }\n }\n\n getMetrics(pluginName?: string) {\n if (pluginName) {\n const pluginMetrics: Record<string, any> = {}\n for (const [key, value] of this.metrics.entries()) {\n if (key.startsWith(`${pluginName}.`)) {\n const operation = key.substring(pluginName.length + 1)\n pluginMetrics[operation] = value\n }\n }\n return pluginMetrics\n }\n\n return Object.fromEntries(this.metrics.entries())\n }\n\n reset(pluginName?: string): void {\n if (pluginName) {\n for (const key of this.metrics.keys()) {\n if (key.startsWith(`${pluginName}.`)) {\n this.metrics.delete(key)\n }\n }\n } else {\n this.metrics.clear()\n }\n }\n}\n\n// Plugin development helpers\nexport const PluginDevelopmentHelpers = {\n // Create a mock plugin context for testing\n createMockContext(): any {\n return {\n state: {\n isPlaying: false,\n currentTime: 0,\n duration: 0,\n volume: 1,\n isMuted: false,\n isLoading: false,\n error: null\n },\n controls: {\n play: () => Promise.resolve(),\n pause: () => Promise.resolve(),\n seek: (time: number) => Promise.resolve(),\n setVolume: (volume: number) => Promise.resolve(),\n mute: () => Promise.resolve(),\n unmute: () => Promise.resolve(),\n toggleMute: () => Promise.resolve()\n },\n plugins: {\n get: () => undefined,\n getAll: () => [],\n isEnabled: () => false\n },\n emit: () => {},\n on: () => () => {},\n element: null,\n logger: new ConsolePluginLogger('[MockPlugin]')\n }\n },\n\n // Create a test plugin for development\n createTestPlugin(name: string, hooks: Partial<Plugin> = {}): Plugin {\n return {\n metadata: {\n name,\n version: '1.0.0',\n description: `Test plugin: ${name}`,\n category: 'ui',\n priority: 'medium'\n },\n initialize: async () => {},\n activate: async () => {},\n deactivate: async () => {},\n destroy: async () => {},\n healthCheck: () => true,\n ...hooks\n }\n },\n\n // Plugin timing utilities\n time: {\n async: async <T>(label: string, fn: () => Promise<T>): Promise<T> => {\n console.time(label)\n try {\n const result = await fn()\n console.timeEnd(label)\n return result\n } catch (error) {\n console.timeEnd(label)\n throw error\n }\n },\n\n sync: <T>(label: string, fn: () => T): T => {\n console.time(label)\n try {\n const result = fn()\n console.timeEnd(label)\n return result\n } catch (error) {\n console.timeEnd(label)\n throw error\n }\n }\n }\n}\n\n// Plugin storage utilities for persistent data\nexport class PluginStorage {\n private prefix: string\n\n constructor(pluginName: string) {\n this.prefix = `baroi-plugin-${pluginName}`\n }\n\n get<T>(key: string, defaultValue?: T): T | undefined {\n try {\n const item = localStorage.getItem(`${this.prefix}-${key}`)\n return item ? JSON.parse(item) as T : defaultValue\n } catch {\n return defaultValue\n }\n }\n\n set<T>(key: string, value: T): void {\n try {\n localStorage.setItem(`${this.prefix}-${key}`, JSON.stringify(value))\n } catch (error) {\n console.warn(`Failed to store plugin data for key: ${key}`, error)\n }\n }\n\n remove(key: string): void {\n try {\n localStorage.removeItem(`${this.prefix}-${key}`)\n } catch (error) {\n console.warn(`Failed to remove plugin data for key: ${key}`, error)\n }\n }\n\n clear(): void {\n try {\n const keys = Object.keys(localStorage).filter(key => \n key.startsWith(`${this.prefix}-`)\n )\n keys.forEach(key => localStorage.removeItem(key))\n } catch (error) {\n console.warn('Failed to clear plugin data', error)\n }\n }\n}\n\n// Export default logger instance\nexport const defaultPluginLogger = new ConsolePluginLogger()\n\n// Export default performance monitor instance\nexport const defaultPerformanceMonitor = new PluginPerformanceMonitor()","// Plugin system core exports\nexport type {\n Plugin,\n PluginFactory,\n PluginConfig,\n PluginRegistry as IPluginRegistry,\n PluginContext,\n PluginLogger,\n PluginMetadata,\n PluginCategory,\n PluginPriority,\n PluginPhase,\n PluginEvents\n} from './types'\n\nexport {\n PluginError,\n PluginDependencyError,\n PluginConflictError\n} from './types'\n\nexport { PluginRegistry } from './registry'\n\nexport {\n BasePlugin,\n createPlugin,\n type UIPluginConfig,\n type AnalyticsPluginConfig,\n type PerformancePluginConfig\n} from './base-plugin'\n\n// Example plugins\nexport { AnalyticsPlugin, createAnalyticsPlugin } from './examples/analytics-plugin'\n\n// Plugin utilities\nexport * from './utils'\n\n// Version\nexport const PLUGIN_SYSTEM_VERSION = '1.0.0'"],"names":["PluginError","pluginName","phase","message","originalError","PluginDependencyError","missingDependencies","PluginConflictError","conflictingPlugins","PluginRegistry","logger","__publicField","EventBus","factory","config","plugin","name","dependencies","conflicts","dep","activeConflicts","conflict","error","context","names","resolved","reversed","results","healthy","event","listener","data","handler","visiting","visit","a","b","priorityOrder","BasePlugin","metadata","oldConfig","newConfig","element","events","defaults","createPlugin","PluginClass","AnalyticsPlugin","mediaEventCleanup","cleanup","cleanupFunctions","unsubscribe","analyticsEvent","eventsToReport","response","createAnalyticsPlugin","ConsolePluginLogger","prefix","PluginValidator","schema","key","rules","value","PluginPerformanceMonitor","operation","fn","startTime","updateMetrics","endTime","duration","existing","result","pluginMetrics","PluginDevelopmentHelpers","time","volume","hooks","label","PluginStorage","defaultValue","item","defaultPluginLogger","defaultPerformanceMonitor","PLUGIN_SYSTEM_VERSION"],"mappings":"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"}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
"use strict";var w=Object.defineProperty;var P=(r,t,e)=>t in r?w(r,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):r[t]=e;var o=(r,t,e)=>P(r,typeof t!="symbol"?t+"":t,e);const E=require("./core-events-CN0-Vhhq.cjs");class a extends Error{constructor(t,e,i,n){super(`Plugin '${t}' failed during ${e}: ${i}`),this.pluginName=t,this.phase=e,this.originalError=n,this.name="PluginError"}}class f extends a{constructor(t,e){super(t,"initialize",`Missing dependencies: ${e.join(", ")}`),this.missingDependencies=e,this.name="PluginDependencyError"}}class p extends a{constructor(t,e){super(t,"activate",`Conflicts with active plugins: ${e.join(", ")}`),this.conflictingPlugins=e,this.name="PluginConflictError"}}class ${constructor(t){o(this,"plugins",new Map);o(this,"pluginConfigs",new Map);o(this,"enabledPlugins",new Set);o(this,"eventBus",new E.EventBus);o(this,"logger");this.logger=t}async register(t,e={}){try{const i=t(e),{name:n,dependencies:s=[],conflicts:c=[]}=i.metadata;if(this.plugins.has(n))throw new a(n,"initialize","Plugin already registered");const u=s.filter(h=>!this.plugins.has(h));if(u.length>0)throw new f(n,u);const l=c.filter(h=>this.enabledPlugins.has(h));if(l.length>0)throw new p(n,l);this.plugins.set(n,i),this.pluginConfigs.set(n,e),this.logger.info(`Plugin '${n}' registered successfully`),this.eventBus.emit("plugin:registered",{name:n,plugin:i})}catch(i){const n=t({}).metadata.name;throw this.logger.error(`Failed to register plugin '${n}'`,i),this.eventBus.emit("plugin:error",{name:n,error:i}),i}}async unregister(t){if(!this.plugins.get(t))throw new a(t,"destroy","Plugin not found");try{this.enabledPlugins.has(t)&&await this.disable(t),this.plugins.delete(t),this.pluginConfigs.delete(t),this.logger.info(`Plugin '${t}' unregistered successfully`)}catch(i){throw this.logger.error(`Failed to unregister plugin '${t}'`,i),i}}get(t){return this.plugins.get(t)}getAll(){return Array.from(this.plugins.values()).sort(this.sortByPriority)}isEnabled(t){return this.enabledPlugins.has(t)}async enable(t){const e=this.plugins.get(t);if(!e)throw new a(t,"activate","Plugin not found");if(this.enabledPlugins.has(t)){this.logger.warn(`Plugin '${t}' is already enabled`);return}try{const i=this.createPluginContext(t),n=this.pluginConfigs.get(t);await e.initialize(i,n),await e.activate(i),this.enabledPlugins.add(t),this.logger.info(`Plugin '${t}' enabled successfully`),this.eventBus.emit("plugin:enabled",{name:t,plugin:e})}catch(i){throw this.logger.error(`Failed to enable plugin '${t}'`,i),this.eventBus.emit("plugin:error",{name:t,error:i}),i}}async disable(t){const e=this.plugins.get(t);if(!e)throw new a(t,"deactivate","Plugin not found");if(!this.enabledPlugins.has(t)){this.logger.warn(`Plugin '${t}' is already disabled`);return}try{const i=this.createPluginContext(t);await e.deactivate(i),await e.destroy(i),this.enabledPlugins.delete(t),this.logger.info(`Plugin '${t}' disabled successfully`),this.eventBus.emit("plugin:disabled",{name:t,plugin:e})}catch(i){throw this.logger.error(`Failed to disable plugin '${t}'`,i),this.eventBus.emit("plugin:error",{name:t,error:i}),i}}async configure(t,e){const i=this.plugins.get(t);if(!i)throw new a(t,"initialize","Plugin not found");try{this.pluginConfigs.set(t,{...this.pluginConfigs.get(t),...e}),i.configure&&await i.configure(e),this.logger.info(`Plugin '${t}' configured successfully`),this.eventBus.emit("plugin:configured",{name:t,config:e})}catch(n){throw this.logger.error(`Failed to configure plugin '${t}'`,n),this.eventBus.emit("plugin:error",{name:t,error:n}),n}}async enablePlugins(t){const e=this.resolveDependencies(t);for(const i of e)this.enabledPlugins.has(i)||await this.enable(i)}async disablePlugins(t){const e=[...t].reverse();for(const i of e)this.enabledPlugins.has(i)&&await this.disable(i)}getEnabledPlugins(){return Array.from(this.enabledPlugins).map(t=>this.plugins.get(t)).filter(Boolean).sort(this.sortByPriority)}async healthCheck(){const t=[];for(const e of this.enabledPlugins){const i=this.plugins.get(e);try{const n=i.healthCheck?await i.healthCheck():!0;t.push({name:e,healthy:n})}catch(n){t.push({name:e,healthy:!1,error:n})}}return t}on(t,e){return this.eventBus.on(t,e),()=>this.eventBus.off(t,e)}createPluginContext(t){return{state:{},controls:{},plugins:this,emit:(e,i)=>this.eventBus.emit(e,i),on:(e,i)=>(this.eventBus.on(e,i),()=>this.eventBus.off(e,i)),element:null,logger:this.createPluginLogger(t)}}createPluginLogger(t){return{info:(e,i)=>this.logger.info(`[${t}] ${e}`,i),warn:(e,i)=>this.logger.warn(`[${t}] ${e}`,i),error:(e,i)=>this.logger.error(`[${t}] ${e}`,i),debug:(e,i)=>this.logger.debug(`[${t}] ${e}`,i)}}resolveDependencies(t){const e=[],i=new Set,n=s=>{if(e.includes(s))return;if(i.has(s))throw new a(s,"initialize","Circular dependency detected");i.add(s);const c=this.plugins.get(s);if(!c)throw new a(s,"initialize","Plugin not found");for(const u of c.metadata.dependencies||[])n(u);i.delete(s),e.push(s)};for(const s of t)n(s);return e}sortByPriority(t,e){const i={high:3,medium:2,low:1};return i[e.metadata.priority]-i[t.metadata.priority]}}class y{constructor(t){o(this,"metadata");o(this,"context");o(this,"config",{});o(this,"initialized",!1);o(this,"active",!1);this.metadata={version:"1.0.0",...t}}async initialize(t,e={}){if(this.initialized){t.logger.warn("Plugin already initialized");return}this.context=t,this.config={...this.config,...e};try{await this.onInitialize(),this.initialized=!0,t.logger.info("Plugin initialized")}catch(i){throw t.logger.error("Failed to initialize plugin",i),i}}async activate(t){if(!this.initialized)throw new Error("Plugin must be initialized before activation");if(this.active){t.logger.warn("Plugin already active");return}try{await this.onActivate(),this.active=!0,t.logger.info("Plugin activated")}catch(e){throw t.logger.error("Failed to activate plugin",e),e}}async deactivate(t){if(!this.active){t.logger.warn("Plugin already inactive");return}try{await this.onDeactivate(),this.active=!1,t.logger.info("Plugin deactivated")}catch(e){throw t.logger.error("Failed to deactivate plugin",e),e}}async destroy(t){this.active&&await this.deactivate(t);try{await this.onDestroy(),this.initialized=!1,t.logger.info("Plugin destroyed")}catch(e){throw t.logger.error("Failed to destroy plugin",e),e}}async configure(t){const e={...this.config};this.config={...this.config,...t};try{await this.onConfigure(t,e),this.context?.logger.info("Plugin configured")}catch(i){throw this.config=e,this.context?.logger.error("Failed to configure plugin",i),i}}healthCheck(){return this.initialized&&this.onHealthCheck()}onDestroy(){}onConfigure(t,e){}onHealthCheck(){return!0}get state(){return this.context?.state}get controls(){return this.context?.controls}get element(){return this.context?.element}get logger(){return this.context?.logger}emit(t,e){this.context?.emit(t,e)}on(t,e){return this.context?.on(t,e)||(()=>{})}addEventListeners(t,e){return Object.entries(e).forEach(([i,n])=>{t.addEventListener(i,n)}),()=>{Object.entries(e).forEach(([i,n])=>{t.removeEventListener(i,n)})}}createConfig(t){return{...t,...this.config}}get isInitialized(){return this.initialized}get isActive(){return this.active}}function C(r){return t=>new r(t)}class v extends y{constructor(e){super({name:"analytics",description:"Media player analytics and tracking",category:"analytics",priority:"low",author:"BaroiPlayer Team"});o(this,"events",[]);o(this,"analyticsConfig");o(this,"cleanupFunctions",[]);o(this,"reportTimer")}onInitialize(){if(this.analyticsConfig=this.createConfig({trackingId:"",events:["play","pause","seek","ended","error"],samplingRate:1,debug:!1,endpoint:"/api/analytics"}),!this.analyticsConfig.trackingId)throw new Error("Analytics plugin requires a tracking ID");this.logger?.info("Analytics plugin initialized",{trackingId:this.analyticsConfig.trackingId,events:this.analyticsConfig.events})}onActivate(){const e=this.setupMediaEventListeners();this.cleanupFunctions.push(e),this.analyticsConfig.endpoint&&(this.reportTimer=setInterval(()=>{this.reportEvents()},3e4),this.cleanupFunctions.push(()=>{this.reportTimer&&clearInterval(this.reportTimer)})),this.trackEvent("plugin_activated",{plugin:"analytics"}),this.logger?.info("Analytics tracking started")}onDeactivate(){this.cleanupFunctions.forEach(e=>e()),this.cleanupFunctions=[],this.events.length>0&&this.reportEvents(),this.trackEvent("plugin_deactivated",{plugin:"analytics"}),this.logger?.info("Analytics tracking stopped")}onConfigure(e){if(this.analyticsConfig={...this.analyticsConfig,...e},e.events){this.cleanupFunctions.forEach(n=>n()),this.cleanupFunctions=[];const i=this.setupMediaEventListeners();this.cleanupFunctions.push(i)}}setupMediaEventListeners(){const e=[];if(this.analyticsConfig.events.includes("play")){const i=this.on("media:play",n=>{this.trackEvent("play",n)});e.push(i)}if(this.analyticsConfig.events.includes("pause")){const i=this.on("media:pause",n=>{this.trackEvent("pause",n)});e.push(i)}if(this.analyticsConfig.events.includes("seek")){const i=this.on("media:seek",n=>{this.trackEvent("seek",n)});e.push(i)}if(this.analyticsConfig.events.includes("ended")){const i=this.on("media:ended",n=>{this.trackEvent("ended",n)});e.push(i)}if(this.analyticsConfig.events.includes("error")){const i=this.on("media:error",n=>{this.trackEvent("error",n)});e.push(i)}return()=>{e.forEach(i=>i())}}trackEvent(e,i){if(Math.random()>this.analyticsConfig.samplingRate)return;const n={event:e,timestamp:Date.now(),data:{...i,trackingId:this.analyticsConfig.trackingId,sessionId:this.generateSessionId(),mediaState:{currentTime:this.state?.currentTime,duration:this.state?.duration,volume:this.state?.volume,isPlaying:this.state?.isPlaying}}};this.events.push(n),this.analyticsConfig.debug&&this.logger?.info("Analytics event tracked",n),this.emit("analytics:event",n)}async reportEvents(){if(this.events.length===0||!this.analyticsConfig.endpoint)return;const e=[...this.events];this.events=[];try{const i=await fetch(this.analyticsConfig.endpoint,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({trackingId:this.analyticsConfig.trackingId,events:e})});if(!i.ok)throw new Error(`Analytics report failed: ${i.status}`);this.analyticsConfig.debug&&this.logger?.info(`Reported ${e.length} analytics events`)}catch(i){this.events.unshift(...e),this.logger?.error("Failed to report analytics events",i)}}generateSessionId(){return`session_${Date.now()}_${Math.random().toString(36).substr(2,9)}`}track(e,i){this.trackEvent(e,i)}getPendingEventsCount(){return this.events.length}async flush(){await this.reportEvents()}onHealthCheck(){return this.events.length<1e3}}const b=r=>new v(r);class d{constructor(t="[Plugin]"){o(this,"prefix");this.prefix=t}info(t,e){e?console.info(`${this.prefix} ${t}`,e):console.info(`${this.prefix} ${t}`)}warn(t,e){e?console.warn(`${this.prefix} ${t}`,e):console.warn(`${this.prefix} ${t}`)}error(t,e){e?console.error(`${this.prefix} ${t}`,e):console.error(`${this.prefix} ${t}`)}debug(t,e){process.env.NODE_ENV==="development"&&(e?console.debug(`${this.prefix} ${t}`,e):console.debug(`${this.prefix} ${t}`))}}class k{static validateMetadata(t){const{metadata:e}=t;if(!e.name||typeof e.name!="string")throw new Error("Plugin metadata must include a valid name");if(!e.version||typeof e.version!="string")throw new Error("Plugin metadata must include a valid version");if(!e.description||typeof e.description!="string")throw new Error("Plugin metadata must include a valid description");if(!e.category)throw new Error("Plugin metadata must include a valid category");if(!e.priority)throw new Error("Plugin metadata must include a valid priority");return!0}static validateConfig(t,e){if(!e)return!0;for(const[i,n]of Object.entries(e)){const s=t[i];if(n.required&&s==null)throw new Error(`Configuration property '${i}' is required`);if(s!==void 0&&n.type&&typeof s!==n.type)throw new Error(`Configuration property '${i}' must be of type '${n.type}'`);if(n.enum&&!n.enum.includes(s))throw new Error(`Configuration property '${i}' must be one of: ${n.enum.join(", ")}`);if(n.min!==void 0&&typeof s=="number"&&s<n.min)throw new Error(`Configuration property '${i}' must be at least ${n.min}`);if(n.max!==void 0&&typeof s=="number"&&s>n.max)throw new Error(`Configuration property '${i}' must be at most ${n.max}`)}return!0}}class m{constructor(){o(this,"metrics",new Map)}measure(t,e,i){const n=`${t}.${e}`,s=performance.now(),c=()=>{const l=performance.now(),h=l-s,g=this.metrics.get(n)||{calls:0,totalTime:0,averageTime:0,lastCall:0};g.calls++,g.totalTime+=h,g.averageTime=g.totalTime/g.calls,g.lastCall=l,this.metrics.set(n,g)},u=i();return u instanceof Promise?u.then(l=>(c(),l),l=>{throw c(),l}):(c(),u)}getMetrics(t){if(t){const e={};for(const[i,n]of this.metrics.entries())if(i.startsWith(`${t}.`)){const s=i.substring(t.length+1);e[s]=n}return e}return Object.fromEntries(this.metrics.entries())}reset(t){if(t)for(const e of this.metrics.keys())e.startsWith(`${t}.`)&&this.metrics.delete(e);else this.metrics.clear()}}const x={createMockContext(){return{state:{isPlaying:!1,currentTime:0,duration:0,volume:1,isMuted:!1,isLoading:!1,error:null},controls:{play:()=>Promise.resolve(),pause:()=>Promise.resolve(),seek:r=>Promise.resolve(),setVolume:r=>Promise.resolve(),mute:()=>Promise.resolve(),unmute:()=>Promise.resolve(),toggleMute:()=>Promise.resolve()},plugins:{get:()=>{},getAll:()=>[],isEnabled:()=>!1},emit:()=>{},on:()=>()=>{},element:null,logger:new d("[MockPlugin]")}},createTestPlugin(r,t={}){return{metadata:{name:r,version:"1.0.0",description:`Test plugin: ${r}`,category:"ui",priority:"medium"},initialize:async()=>{},activate:async()=>{},deactivate:async()=>{},destroy:async()=>{},healthCheck:()=>!0,...t}},time:{async:async(r,t)=>{console.time(r);try{const e=await t();return console.timeEnd(r),e}catch(e){throw console.timeEnd(r),e}},sync:(r,t)=>{console.time(r);try{const e=t();return console.timeEnd(r),e}catch(e){throw console.timeEnd(r),e}}}};class I{constructor(t){o(this,"prefix");this.prefix=`baroi-plugin-${t}`}get(t,e){try{const i=localStorage.getItem(`${this.prefix}-${t}`);return i?JSON.parse(i):e}catch{return e}}set(t,e){try{localStorage.setItem(`${this.prefix}-${t}`,JSON.stringify(e))}catch(i){console.warn(`Failed to store plugin data for key: ${t}`,i)}}remove(t){try{localStorage.removeItem(`${this.prefix}-${t}`)}catch(e){console.warn(`Failed to remove plugin data for key: ${t}`,e)}}clear(){try{Object.keys(localStorage).filter(e=>e.startsWith(`${this.prefix}-`)).forEach(e=>localStorage.removeItem(e))}catch(t){console.warn("Failed to clear plugin data",t)}}}const M=new d,z=new m,F="1.0.0";exports.AnalyticsPlugin=v;exports.BasePlugin=y;exports.ConsolePluginLogger=d;exports.PLUGIN_SYSTEM_VERSION=F;exports.PluginConflictError=p;exports.PluginDependencyError=f;exports.PluginDevelopmentHelpers=x;exports.PluginError=a;exports.PluginPerformanceMonitor=m;exports.PluginRegistry=$;exports.PluginStorage=I;exports.PluginValidator=k;exports.createAnalyticsPlugin=b;exports.createPlugin=C;exports.defaultPerformanceMonitor=z;exports.defaultPluginLogger=M;
|
|
2
|
-
//# sourceMappingURL=core-plugins-CPDSHMiQ.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"core-plugins-CPDSHMiQ.cjs","sources":["../src/core/plugins/types.ts","../src/core/plugins/registry.ts","../src/core/plugins/base-plugin.ts","../src/core/plugins/examples/analytics-plugin.ts","../src/core/plugins/utils.ts","../src/core/plugins/index.ts"],"sourcesContent":["// TODO: Import proper types when integrated\nexport interface MediaState {\n isPlaying: boolean\n currentTime: number\n duration: number\n volume: number\n isMuted: boolean\n}\n\nexport interface MediaPlayerControls {\n play(): void\n pause(): void\n seek(time: number): void\n setVolume(volume: number): void\n}\n\n// Plugin lifecycle phases\nexport type PluginPhase = 'initialize' | 'activate' | 'deactivate' | 'destroy'\n\n// Plugin categories for organization\nexport type PluginCategory = \n | 'controls' \n | 'analytics' \n | 'streaming' \n | 'subtitle' \n | 'quality' \n | 'ui' \n | 'accessibility'\n | 'performance'\n\n// Plugin priority for execution order\nexport type PluginPriority = 'high' | 'medium' | 'low'\n\n// Plugin configuration interface\nexport interface PluginConfig {\n [key: string]: any\n}\n\n// Plugin context provided to each plugin\nexport interface PluginContext {\n // Core media player state and controls\n state: MediaState\n controls: MediaPlayerControls\n \n // Plugin management\n plugins: PluginRegistry\n \n // Event system\n emit: (event: string, data?: any) => void\n on: (event: string, handler: (data: any) => void) => () => void\n \n // Utilities\n element: HTMLElement | null\n logger: PluginLogger\n}\n\n// Plugin metadata\nexport interface PluginMetadata {\n name: string\n version: string\n description: string\n author?: string\n category: PluginCategory\n priority: PluginPriority\n dependencies?: string[]\n conflicts?: string[]\n}\n\n// Plugin interface that all plugins must implement\nexport interface Plugin {\n metadata: PluginMetadata\n \n // Plugin lifecycle methods\n initialize(context: PluginContext, config?: PluginConfig): Promise<void> | void\n activate(context: PluginContext): Promise<void> | void\n deactivate(context: PluginContext): Promise<void> | void\n destroy(context: PluginContext): Promise<void> | void\n \n // Configuration handling\n configure?(config: PluginConfig): Promise<void> | void\n \n // Health check for plugin status\n healthCheck?(): Promise<boolean> | boolean\n}\n\n// Plugin factory function type\nexport type PluginFactory<T extends Plugin = Plugin> = (config?: PluginConfig) => T\n\n// Plugin registry interface\nexport interface PluginRegistry {\n register(factory: PluginFactory, config?: PluginConfig): Promise<void>\n unregister(name: string): Promise<void>\n get(name: string): Plugin | undefined\n getAll(): Plugin[]\n isEnabled(name: string): boolean\n enable(name: string): Promise<void>\n disable(name: string): Promise<void>\n configure(name: string, config: PluginConfig): Promise<void>\n}\n\n// Plugin logger interface\nexport interface PluginLogger {\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// Plugin event types\nexport interface PluginEvents {\n 'plugin:registered': { name: string; plugin: Plugin }\n 'plugin:enabled': { name: string; plugin: Plugin }\n 'plugin:disabled': { name: string; plugin: Plugin }\n 'plugin:error': { name: string; error: Error }\n 'plugin:configured': { name: string; config: PluginConfig }\n}\n\n// Plugin error types\nexport class PluginError extends Error {\n constructor(\n public pluginName: string,\n public phase: PluginPhase,\n message: string,\n public originalError?: Error\n ) {\n super(`Plugin '${pluginName}' failed during ${phase}: ${message}`)\n this.name = 'PluginError'\n }\n}\n\n// Plugin dependency error\nexport class PluginDependencyError extends PluginError {\n constructor(\n pluginName: string,\n public missingDependencies: string[]\n ) {\n super(\n pluginName,\n 'initialize',\n `Missing dependencies: ${missingDependencies.join(', ')}`\n )\n this.name = 'PluginDependencyError'\n }\n}\n\n// Plugin conflict error\nexport class PluginConflictError extends PluginError {\n constructor(\n pluginName: string,\n public conflictingPlugins: string[]\n ) {\n super(\n pluginName,\n 'activate',\n `Conflicts with active plugins: ${conflictingPlugins.join(', ')}`\n )\n this.name = 'PluginConflictError'\n }\n}","import { EventBus } from '../events/event-system'\nimport type {\n Plugin,\n PluginFactory,\n PluginConfig,\n PluginRegistry as IPluginRegistry,\n PluginContext,\n PluginLogger,\n PluginEvents,\n PluginPriority\n} from './types'\nimport {\n PluginError,\n PluginDependencyError,\n PluginConflictError\n} from './types'\n\n// Plugin registry implementation\nexport class PluginRegistry implements IPluginRegistry {\n private plugins = new Map<string, Plugin>()\n private pluginConfigs = new Map<string, PluginConfig>()\n private enabledPlugins = new Set<string>()\n private eventBus = new EventBus()\n private logger: PluginLogger\n\n constructor(logger: PluginLogger) {\n this.logger = logger\n }\n\n // Register a plugin factory\n async register(factory: PluginFactory, config: PluginConfig = {}): Promise<void> {\n try {\n const plugin = factory(config)\n const { name, dependencies = [], conflicts = [] } = plugin.metadata\n\n // Check if plugin already exists\n if (this.plugins.has(name)) {\n throw new PluginError(name, 'initialize', 'Plugin already registered')\n }\n\n // Validate dependencies\n const missingDependencies = dependencies.filter(dep => !this.plugins.has(dep))\n if (missingDependencies.length > 0) {\n throw new PluginDependencyError(name, missingDependencies)\n }\n\n // Check for conflicts with enabled plugins\n const activeConflicts = conflicts.filter(conflict => this.enabledPlugins.has(conflict))\n if (activeConflicts.length > 0) {\n throw new PluginConflictError(name, activeConflicts)\n }\n\n // Store plugin and configuration\n this.plugins.set(name, plugin)\n this.pluginConfigs.set(name, config)\n\n this.logger.info(`Plugin '${name}' registered successfully`)\n ;(this.eventBus as any).emit('plugin:registered', { name, plugin })\n\n } catch (error) {\n const pluginName = factory({}).metadata.name\n this.logger.error(`Failed to register plugin '${pluginName}'`, error)\n ;(this.eventBus as any).emit('plugin:error', { name: pluginName, error: error as Error })\n throw error\n }\n }\n\n // Unregister a plugin\n async unregister(name: string): Promise<void> {\n const plugin = this.plugins.get(name)\n if (!plugin) {\n throw new PluginError(name, 'destroy', 'Plugin not found')\n }\n\n try {\n // Disable plugin if enabled\n if (this.enabledPlugins.has(name)) {\n await this.disable(name)\n }\n\n // Remove from registry\n this.plugins.delete(name)\n this.pluginConfigs.delete(name)\n\n this.logger.info(`Plugin '${name}' unregistered successfully`)\n } catch (error) {\n this.logger.error(`Failed to unregister plugin '${name}'`, error)\n throw error\n }\n }\n\n // Get a plugin by name\n get(name: string): Plugin | undefined {\n return this.plugins.get(name)\n }\n\n // Get all plugins sorted by priority\n getAll(): Plugin[] {\n return Array.from(this.plugins.values()).sort(this.sortByPriority)\n }\n\n // Check if plugin is enabled\n isEnabled(name: string): boolean {\n return this.enabledPlugins.has(name)\n }\n\n // Enable a plugin\n async enable(name: string): Promise<void> {\n const plugin = this.plugins.get(name)\n if (!plugin) {\n throw new PluginError(name, 'activate', 'Plugin not found')\n }\n\n if (this.enabledPlugins.has(name)) {\n this.logger.warn(`Plugin '${name}' is already enabled`)\n return\n }\n\n try {\n const context = this.createPluginContext(name)\n const config = this.pluginConfigs.get(name)\n\n // Initialize plugin\n await plugin.initialize(context, config)\n \n // Activate plugin\n await plugin.activate(context)\n \n this.enabledPlugins.add(name)\n this.logger.info(`Plugin '${name}' enabled successfully`)\n ;(this.eventBus as any).emit('plugin:enabled', { name, plugin })\n\n } catch (error) {\n this.logger.error(`Failed to enable plugin '${name}'`, error)\n ;(this.eventBus as any).emit('plugin:error', { name, error: error as Error })\n throw error\n }\n }\n\n // Disable a plugin\n async disable(name: string): Promise<void> {\n const plugin = this.plugins.get(name)\n if (!plugin) {\n throw new PluginError(name, 'deactivate', 'Plugin not found')\n }\n\n if (!this.enabledPlugins.has(name)) {\n this.logger.warn(`Plugin '${name}' is already disabled`)\n return\n }\n\n try {\n const context = this.createPluginContext(name)\n\n // Deactivate plugin\n await plugin.deactivate(context)\n \n // Destroy plugin resources\n await plugin.destroy(context)\n \n this.enabledPlugins.delete(name)\n this.logger.info(`Plugin '${name}' disabled successfully`)\n ;(this.eventBus as any).emit('plugin:disabled', { name, plugin })\n\n } catch (error) {\n this.logger.error(`Failed to disable plugin '${name}'`, error)\n ;(this.eventBus as any).emit('plugin:error', { name, error: error as Error })\n throw error\n }\n }\n\n // Configure a plugin\n async configure(name: string, config: PluginConfig): Promise<void> {\n const plugin = this.plugins.get(name)\n if (!plugin) {\n throw new PluginError(name, 'initialize', 'Plugin not found')\n }\n\n try {\n // Update stored configuration\n this.pluginConfigs.set(name, { ...this.pluginConfigs.get(name), ...config })\n\n // If plugin has configure method, call it\n if (plugin.configure) {\n await plugin.configure(config)\n }\n\n this.logger.info(`Plugin '${name}' configured successfully`)\n ;(this.eventBus as any).emit('plugin:configured', { name, config })\n\n } catch (error) {\n this.logger.error(`Failed to configure plugin '${name}'`, error)\n ;(this.eventBus as any).emit('plugin:error', { name, error: error as Error })\n throw error\n }\n }\n\n // Enable multiple plugins with dependency resolution\n async enablePlugins(names: string[]): Promise<void> {\n const resolved = this.resolveDependencies(names)\n \n for (const name of resolved) {\n if (!this.enabledPlugins.has(name)) {\n await this.enable(name)\n }\n }\n }\n\n // Disable multiple plugins\n async disablePlugins(names: string[]): Promise<void> {\n // Disable in reverse order to handle dependencies\n const reversed = [...names].reverse()\n \n for (const name of reversed) {\n if (this.enabledPlugins.has(name)) {\n await this.disable(name)\n }\n }\n }\n\n // Get enabled plugins\n getEnabledPlugins(): Plugin[] {\n return Array.from(this.enabledPlugins)\n .map(name => this.plugins.get(name)!)\n .filter(Boolean)\n .sort(this.sortByPriority)\n }\n\n // Health check for all enabled plugins\n async healthCheck(): Promise<{ name: string; healthy: boolean; error?: Error }[]> {\n const results = []\n \n for (const name of this.enabledPlugins) {\n const plugin = this.plugins.get(name)!\n try {\n const healthy = plugin.healthCheck ? await plugin.healthCheck() : true\n results.push({ name, healthy })\n } catch (error) {\n results.push({ name, healthy: false, error: error as Error })\n }\n }\n \n return results\n }\n\n // Event handling\n on<K extends keyof PluginEvents>(\n event: K,\n listener: (data: PluginEvents[K]) => void\n ): () => void {\n (this.eventBus as any).on(event, listener)\n return () => (this.eventBus as any).off(event, listener)\n }\n\n // Create plugin context (will be implemented when we have the full context)\n private createPluginContext(pluginName: string): PluginContext {\n // This will be implemented when we integrate with the media player\n // For now, return a minimal context\n return {\n state: {} as any,\n controls: {} as any,\n plugins: this,\n emit: (event: string, data?: any) => (this.eventBus as any).emit(event, data),\n on: (event: string, handler: (data: any) => void) => {\n (this.eventBus as any).on(event, handler)\n return () => (this.eventBus as any).off(event, handler)\n },\n element: null,\n logger: this.createPluginLogger(pluginName)\n }\n }\n\n // Create plugin-specific logger\n private createPluginLogger(pluginName: string): PluginLogger {\n return {\n info: (message: string, data?: any) => this.logger.info(`[${pluginName}] ${message}`, data),\n warn: (message: string, data?: any) => this.logger.warn(`[${pluginName}] ${message}`, data),\n error: (message: string, data?: any) => this.logger.error(`[${pluginName}] ${message}`, data),\n debug: (message: string, data?: any) => this.logger.debug(`[${pluginName}] ${message}`, data)\n }\n }\n\n // Resolve plugin dependencies\n private resolveDependencies(names: string[]): string[] {\n const resolved: string[] = []\n const visiting = new Set<string>()\n\n const visit = (name: string) => {\n if (resolved.includes(name)) return\n if (visiting.has(name)) {\n throw new PluginError(name, 'initialize', 'Circular dependency detected')\n }\n\n visiting.add(name)\n \n const plugin = this.plugins.get(name)\n if (!plugin) {\n throw new PluginError(name, 'initialize', 'Plugin not found')\n }\n\n // Visit dependencies first\n for (const dep of plugin.metadata.dependencies || []) {\n visit(dep)\n }\n\n visiting.delete(name)\n resolved.push(name)\n }\n\n for (const name of names) {\n visit(name)\n }\n\n return resolved\n }\n\n // Sort plugins by priority\n private sortByPriority(a: Plugin, b: Plugin): number {\n const priorityOrder: Record<PluginPriority, number> = {\n high: 3,\n medium: 2,\n low: 1\n }\n \n return priorityOrder[b.metadata.priority] - priorityOrder[a.metadata.priority]\n }\n}","import type {\n Plugin,\n PluginMetadata,\n PluginContext,\n PluginConfig,\n PluginCategory,\n PluginPriority\n} from './types'\n\n// Abstract base plugin class\nexport abstract class BasePlugin implements Plugin {\n public readonly metadata: PluginMetadata\n\n protected context?: PluginContext\n protected config: PluginConfig = {}\n protected initialized = false\n protected active = false\n\n constructor(metadata: Omit<PluginMetadata, 'version'> & { version?: string }) {\n this.metadata = {\n version: '1.0.0',\n ...metadata\n }\n }\n\n // Plugin lifecycle methods - can be overridden by subclasses\n async initialize(context: PluginContext, config: PluginConfig = {}): Promise<void> {\n if (this.initialized) {\n context.logger.warn('Plugin already initialized')\n return\n }\n\n this.context = context\n this.config = { ...this.config, ...config }\n \n try {\n await this.onInitialize()\n this.initialized = true\n context.logger.info(`Plugin initialized`)\n } catch (error) {\n context.logger.error('Failed to initialize plugin', error)\n throw error\n }\n }\n\n async activate(context: PluginContext): Promise<void> {\n if (!this.initialized) {\n throw new Error('Plugin must be initialized before activation')\n }\n\n if (this.active) {\n context.logger.warn('Plugin already active')\n return\n }\n\n try {\n await this.onActivate()\n this.active = true\n context.logger.info(`Plugin activated`)\n } catch (error) {\n context.logger.error('Failed to activate plugin', error)\n throw error\n }\n }\n\n async deactivate(context: PluginContext): Promise<void> {\n if (!this.active) {\n context.logger.warn('Plugin already inactive')\n return\n }\n\n try {\n await this.onDeactivate()\n this.active = false\n context.logger.info(`Plugin deactivated`)\n } catch (error) {\n context.logger.error('Failed to deactivate plugin', error)\n throw error\n }\n }\n\n async destroy(context: PluginContext): Promise<void> {\n if (this.active) {\n await this.deactivate(context)\n }\n\n try {\n await this.onDestroy()\n this.initialized = false\n context.logger.info(`Plugin destroyed`)\n } catch (error) {\n context.logger.error('Failed to destroy plugin', error)\n throw error\n }\n }\n\n async configure(config: PluginConfig): Promise<void> {\n const oldConfig = { ...this.config }\n this.config = { ...this.config, ...config }\n \n try {\n await this.onConfigure(config, oldConfig)\n this.context?.logger.info('Plugin configured')\n } catch (error) {\n // Rollback configuration on error\n this.config = oldConfig\n this.context?.logger.error('Failed to configure plugin', error)\n throw error\n }\n }\n\n healthCheck(): boolean {\n return this.initialized && this.onHealthCheck()\n }\n\n // Template methods for subclasses to override\n protected abstract onInitialize(): Promise<void> | void\n protected abstract onActivate(): Promise<void> | void\n protected abstract onDeactivate(): Promise<void> | void\n \n protected onDestroy(): Promise<void> | void {\n // Default implementation - subclasses can override\n }\n\n protected onConfigure(newConfig: PluginConfig, oldConfig: PluginConfig): Promise<void> | void {\n // Default implementation - subclasses can override\n }\n\n protected onHealthCheck(): boolean {\n // Default implementation - subclasses can override\n return true\n }\n\n // Utility methods for plugins\n protected get state() {\n return this.context?.state\n }\n\n protected get controls() {\n return this.context?.controls\n }\n\n protected get element() {\n return this.context?.element\n }\n\n protected get logger() {\n return this.context?.logger\n }\n\n protected emit(event: string, data?: any): void {\n this.context?.emit(event, data)\n }\n\n protected on(event: string, handler: (data: any) => void): () => void {\n return this.context?.on(event, handler) || (() => {})\n }\n\n // Helper methods for common plugin patterns\n protected addEventListeners(element: HTMLElement, events: Record<string, (e: Event) => void>): () => void {\n Object.entries(events).forEach(([event, handler]) => {\n element.addEventListener(event, handler)\n })\n\n // Return cleanup function\n return () => {\n Object.entries(events).forEach(([event, handler]) => {\n element.removeEventListener(event, handler)\n })\n }\n }\n\n protected createConfig<T extends PluginConfig>(defaults: T): T {\n return { ...defaults, ...this.config } as T\n }\n\n // Plugin status\n get isInitialized(): boolean {\n return this.initialized\n }\n\n get isActive(): boolean {\n return this.active\n }\n}\n\n// Simple plugin factory helper\nexport function createPlugin<T extends BasePlugin>(\n PluginClass: new (config?: PluginConfig) => T\n) {\n return (config?: PluginConfig) => new PluginClass(config)\n}\n\n// Plugin decorator for metadata - TODO: Fix implementation\n// export function plugin(metadata: Omit<PluginMetadata, 'version'> & { version?: string }) {\n// return function<T extends { new (...args: any[]): BasePlugin }>(constructor: T) {\n// return class extends constructor {\n// constructor(...args: any[]) {\n// super(metadata, ...args)\n// }\n// }\n// }\n// }\n\n// Common plugin configurations\nexport interface UIPluginConfig extends PluginConfig {\n position?: 'top' | 'bottom' | 'left' | 'right' | 'center'\n zIndex?: number\n className?: string\n style?: Record<string, string>\n}\n\nexport interface AnalyticsPluginConfig extends PluginConfig {\n trackingId?: string\n events?: string[]\n samplingRate?: number\n debug?: boolean\n}\n\nexport interface PerformancePluginConfig extends PluginConfig {\n enableMetrics?: boolean\n reportInterval?: number\n thresholds?: Record<string, number>\n}","import { BasePlugin, type AnalyticsPluginConfig } from '../base-plugin'\n\ninterface AnalyticsEvent {\n event: string\n timestamp: number\n data?: any\n}\n\ninterface AnalyticsConfig extends AnalyticsPluginConfig {\n trackingId: string\n events: string[]\n samplingRate: number\n debug: boolean\n endpoint?: string\n}\n\nexport class AnalyticsPlugin extends BasePlugin {\n private events: AnalyticsEvent[] = []\n private analyticsConfig!: AnalyticsConfig\n private cleanupFunctions: Array<() => void> = []\n private reportTimer?: NodeJS.Timeout\n\n constructor(config?: AnalyticsPluginConfig) {\n super({\n name: 'analytics',\n description: 'Media player analytics and tracking',\n category: 'analytics',\n priority: 'low',\n author: 'BaroiPlayer Team'\n })\n }\n\n protected onInitialize(): void {\n this.analyticsConfig = this.createConfig<AnalyticsConfig>({\n trackingId: '',\n events: ['play', 'pause', 'seek', 'ended', 'error'],\n samplingRate: 1.0,\n debug: false,\n endpoint: '/api/analytics'\n })\n\n if (!this.analyticsConfig.trackingId) {\n throw new Error('Analytics plugin requires a tracking ID')\n }\n\n this.logger?.info('Analytics plugin initialized', { \n trackingId: this.analyticsConfig.trackingId,\n events: this.analyticsConfig.events \n })\n }\n\n protected onActivate(): void {\n // Set up event listeners for media events\n const mediaEventCleanup = this.setupMediaEventListeners()\n this.cleanupFunctions.push(mediaEventCleanup)\n\n // Set up periodic reporting\n if (this.analyticsConfig.endpoint) {\n this.reportTimer = setInterval(() => {\n this.reportEvents()\n }, 30000) // Report every 30 seconds\n\n this.cleanupFunctions.push(() => {\n if (this.reportTimer) {\n clearInterval(this.reportTimer)\n }\n })\n }\n\n this.trackEvent('plugin_activated', { plugin: 'analytics' })\n this.logger?.info('Analytics tracking started')\n }\n\n protected onDeactivate(): void {\n // Clean up all event listeners and timers\n this.cleanupFunctions.forEach(cleanup => cleanup())\n this.cleanupFunctions = []\n\n // Report any remaining events\n if (this.events.length > 0) {\n this.reportEvents()\n }\n\n this.trackEvent('plugin_deactivated', { plugin: 'analytics' })\n this.logger?.info('Analytics tracking stopped')\n }\n\n protected onConfigure(newConfig: AnalyticsConfig): void {\n // Update tracking configuration \n this.analyticsConfig = { ...this.analyticsConfig, ...newConfig }\n if (newConfig.events) {\n // Re-setup event listeners if events changed\n this.cleanupFunctions.forEach(cleanup => cleanup())\n this.cleanupFunctions = []\n \n const mediaEventCleanup = this.setupMediaEventListeners()\n this.cleanupFunctions.push(mediaEventCleanup)\n }\n }\n\n private setupMediaEventListeners(): () => void {\n const cleanupFunctions: Array<() => void> = []\n\n // Listen for media state changes\n if (this.analyticsConfig.events.includes('play')) {\n const unsubscribe = this.on('media:play', (data) => {\n this.trackEvent('play', data)\n })\n cleanupFunctions.push(unsubscribe)\n }\n\n if (this.analyticsConfig.events.includes('pause')) {\n const unsubscribe = this.on('media:pause', (data) => {\n this.trackEvent('pause', data)\n })\n cleanupFunctions.push(unsubscribe)\n }\n\n if (this.analyticsConfig.events.includes('seek')) {\n const unsubscribe = this.on('media:seek', (data) => {\n this.trackEvent('seek', data)\n })\n cleanupFunctions.push(unsubscribe)\n }\n\n if (this.analyticsConfig.events.includes('ended')) {\n const unsubscribe = this.on('media:ended', (data) => {\n this.trackEvent('ended', data)\n })\n cleanupFunctions.push(unsubscribe)\n }\n\n if (this.analyticsConfig.events.includes('error')) {\n const unsubscribe = this.on('media:error', (data) => {\n this.trackEvent('error', data)\n })\n cleanupFunctions.push(unsubscribe)\n }\n\n // Return cleanup function\n return () => {\n cleanupFunctions.forEach(cleanup => cleanup())\n }\n }\n\n private trackEvent(event: string, data?: any): void {\n // Apply sampling rate\n if (Math.random() > this.analyticsConfig.samplingRate) {\n return\n }\n\n const analyticsEvent: AnalyticsEvent = {\n event,\n timestamp: Date.now(),\n data: {\n ...data,\n trackingId: this.analyticsConfig.trackingId,\n sessionId: this.generateSessionId(),\n mediaState: {\n currentTime: this.state?.currentTime,\n duration: this.state?.duration,\n volume: this.state?.volume,\n isPlaying: this.state?.isPlaying\n }\n }\n }\n\n this.events.push(analyticsEvent)\n\n if (this.analyticsConfig.debug) {\n this.logger?.info('Analytics event tracked', analyticsEvent)\n }\n\n // Emit event for other plugins or applications to use\n this.emit('analytics:event', analyticsEvent)\n }\n\n private async reportEvents(): Promise<void> {\n if (this.events.length === 0 || !this.analyticsConfig.endpoint) {\n return\n }\n\n const eventsToReport = [...this.events]\n this.events = []\n\n try {\n const response = await fetch(this.analyticsConfig.endpoint, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify({\n trackingId: this.analyticsConfig.trackingId,\n events: eventsToReport\n })\n })\n\n if (!response.ok) {\n throw new Error(`Analytics report failed: ${response.status}`)\n }\n\n if (this.analyticsConfig.debug) {\n this.logger?.info(`Reported ${eventsToReport.length} analytics events`)\n }\n\n } catch (error) {\n // Put events back in queue on failure\n this.events.unshift(...eventsToReport)\n this.logger?.error('Failed to report analytics events', error)\n }\n }\n\n private generateSessionId(): string {\n // Simple session ID generation - could be more sophisticated\n return `session_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`\n }\n\n // Public API for manual event tracking\n public track(event: string, data?: any): void {\n this.trackEvent(event, data)\n }\n\n // Get pending events count\n public getPendingEventsCount(): number {\n return this.events.length\n }\n\n // Flush all pending events\n public async flush(): Promise<void> {\n await this.reportEvents()\n }\n\n protected onHealthCheck(): boolean {\n // Check if we're not accumulating too many events\n return this.events.length < 1000\n }\n}\n\n// Plugin factory\nexport const createAnalyticsPlugin = (config?: AnalyticsPluginConfig) => {\n return new AnalyticsPlugin(config)\n}","import type { Plugin, PluginLogger, PluginConfig } from './types'\n\n// Simple console logger implementation\nexport class ConsolePluginLogger implements PluginLogger {\n private prefix: string\n\n constructor(prefix = '[Plugin]') {\n this.prefix = prefix\n }\n\n info(message: string, data?: any): void {\n if (data) {\n console.info(`${this.prefix} ${message}`, data)\n } else {\n console.info(`${this.prefix} ${message}`)\n }\n }\n\n warn(message: string, data?: any): void {\n if (data) {\n console.warn(`${this.prefix} ${message}`, data)\n } else {\n console.warn(`${this.prefix} ${message}`)\n }\n }\n\n error(message: string, data?: any): void {\n if (data) {\n console.error(`${this.prefix} ${message}`, data)\n } else {\n console.error(`${this.prefix} ${message}`)\n }\n }\n\n debug(message: string, data?: any): void {\n if (process.env.NODE_ENV === 'development') {\n if (data) {\n console.debug(`${this.prefix} ${message}`, data)\n } else {\n console.debug(`${this.prefix} ${message}`)\n }\n }\n }\n}\n\n// Plugin validation utilities\nexport class PluginValidator {\n static validateMetadata(plugin: Plugin): boolean {\n const { metadata } = plugin\n \n if (!metadata.name || typeof metadata.name !== 'string') {\n throw new Error('Plugin metadata must include a valid name')\n }\n\n if (!metadata.version || typeof metadata.version !== 'string') {\n throw new Error('Plugin metadata must include a valid version')\n }\n\n if (!metadata.description || typeof metadata.description !== 'string') {\n throw new Error('Plugin metadata must include a valid description')\n }\n\n if (!metadata.category) {\n throw new Error('Plugin metadata must include a valid category')\n }\n\n if (!metadata.priority) {\n throw new Error('Plugin metadata must include a valid priority')\n }\n\n return true\n }\n\n static validateConfig(config: PluginConfig, schema?: Record<string, any>): boolean {\n if (!schema) return true\n\n // Simple schema validation - could be enhanced with a proper schema validator\n for (const [key, rules] of Object.entries(schema)) {\n const value = config[key]\n\n if (rules.required && (value === undefined || value === null)) {\n throw new Error(`Configuration property '${key}' is required`)\n }\n\n if (value !== undefined && rules.type && typeof value !== rules.type) {\n throw new Error(`Configuration property '${key}' must be of type '${rules.type}'`)\n }\n\n if (rules.enum && !rules.enum.includes(value)) {\n throw new Error(`Configuration property '${key}' must be one of: ${rules.enum.join(', ')}`)\n }\n\n if (rules.min !== undefined && typeof value === 'number' && value < rules.min) {\n throw new Error(`Configuration property '${key}' must be at least ${rules.min}`)\n }\n\n if (rules.max !== undefined && typeof value === 'number' && value > rules.max) {\n throw new Error(`Configuration property '${key}' must be at most ${rules.max}`)\n }\n }\n\n return true\n }\n}\n\n// Plugin performance monitoring\nexport class PluginPerformanceMonitor {\n private metrics = new Map<string, {\n calls: number\n totalTime: number\n averageTime: number\n lastCall: number\n }>()\n\n measure<T>(pluginName: string, operation: string, fn: () => T | Promise<T>): T | Promise<T> {\n const key = `${pluginName}.${operation}`\n const startTime = performance.now()\n\n const updateMetrics = () => {\n const endTime = performance.now()\n const duration = endTime - startTime\n\n const existing = this.metrics.get(key) || {\n calls: 0,\n totalTime: 0,\n averageTime: 0,\n lastCall: 0\n }\n\n existing.calls++\n existing.totalTime += duration\n existing.averageTime = existing.totalTime / existing.calls\n existing.lastCall = endTime\n\n this.metrics.set(key, existing)\n }\n\n const result = fn()\n\n if (result instanceof Promise) {\n return result.then(\n (value) => {\n updateMetrics()\n return value\n },\n (error) => {\n updateMetrics()\n throw error\n }\n )\n } else {\n updateMetrics()\n return result\n }\n }\n\n getMetrics(pluginName?: string) {\n if (pluginName) {\n const pluginMetrics: Record<string, any> = {}\n for (const [key, value] of this.metrics.entries()) {\n if (key.startsWith(`${pluginName}.`)) {\n const operation = key.substring(pluginName.length + 1)\n pluginMetrics[operation] = value\n }\n }\n return pluginMetrics\n }\n\n return Object.fromEntries(this.metrics.entries())\n }\n\n reset(pluginName?: string): void {\n if (pluginName) {\n for (const key of this.metrics.keys()) {\n if (key.startsWith(`${pluginName}.`)) {\n this.metrics.delete(key)\n }\n }\n } else {\n this.metrics.clear()\n }\n }\n}\n\n// Plugin development helpers\nexport const PluginDevelopmentHelpers = {\n // Create a mock plugin context for testing\n createMockContext(): any {\n return {\n state: {\n isPlaying: false,\n currentTime: 0,\n duration: 0,\n volume: 1,\n isMuted: false,\n isLoading: false,\n error: null\n },\n controls: {\n play: () => Promise.resolve(),\n pause: () => Promise.resolve(),\n seek: (time: number) => Promise.resolve(),\n setVolume: (volume: number) => Promise.resolve(),\n mute: () => Promise.resolve(),\n unmute: () => Promise.resolve(),\n toggleMute: () => Promise.resolve()\n },\n plugins: {\n get: () => undefined,\n getAll: () => [],\n isEnabled: () => false\n },\n emit: () => {},\n on: () => () => {},\n element: null,\n logger: new ConsolePluginLogger('[MockPlugin]')\n }\n },\n\n // Create a test plugin for development\n createTestPlugin(name: string, hooks: Partial<Plugin> = {}): Plugin {\n return {\n metadata: {\n name,\n version: '1.0.0',\n description: `Test plugin: ${name}`,\n category: 'ui',\n priority: 'medium'\n },\n initialize: async () => {},\n activate: async () => {},\n deactivate: async () => {},\n destroy: async () => {},\n healthCheck: () => true,\n ...hooks\n }\n },\n\n // Plugin timing utilities\n time: {\n async: async <T>(label: string, fn: () => Promise<T>): Promise<T> => {\n console.time(label)\n try {\n const result = await fn()\n console.timeEnd(label)\n return result\n } catch (error) {\n console.timeEnd(label)\n throw error\n }\n },\n\n sync: <T>(label: string, fn: () => T): T => {\n console.time(label)\n try {\n const result = fn()\n console.timeEnd(label)\n return result\n } catch (error) {\n console.timeEnd(label)\n throw error\n }\n }\n }\n}\n\n// Plugin storage utilities for persistent data\nexport class PluginStorage {\n private prefix: string\n\n constructor(pluginName: string) {\n this.prefix = `baroi-plugin-${pluginName}`\n }\n\n get<T>(key: string, defaultValue?: T): T | undefined {\n try {\n const item = localStorage.getItem(`${this.prefix}-${key}`)\n return item ? JSON.parse(item) as T : defaultValue\n } catch {\n return defaultValue\n }\n }\n\n set<T>(key: string, value: T): void {\n try {\n localStorage.setItem(`${this.prefix}-${key}`, JSON.stringify(value))\n } catch (error) {\n console.warn(`Failed to store plugin data for key: ${key}`, error)\n }\n }\n\n remove(key: string): void {\n try {\n localStorage.removeItem(`${this.prefix}-${key}`)\n } catch (error) {\n console.warn(`Failed to remove plugin data for key: ${key}`, error)\n }\n }\n\n clear(): void {\n try {\n const keys = Object.keys(localStorage).filter(key => \n key.startsWith(`${this.prefix}-`)\n )\n keys.forEach(key => localStorage.removeItem(key))\n } catch (error) {\n console.warn('Failed to clear plugin data', error)\n }\n }\n}\n\n// Export default logger instance\nexport const defaultPluginLogger = new ConsolePluginLogger()\n\n// Export default performance monitor instance\nexport const defaultPerformanceMonitor = new PluginPerformanceMonitor()","// Plugin system core exports\nexport type {\n Plugin,\n PluginFactory,\n PluginConfig,\n PluginRegistry as IPluginRegistry,\n PluginContext,\n PluginLogger,\n PluginMetadata,\n PluginCategory,\n PluginPriority,\n PluginPhase,\n PluginEvents\n} from './types'\n\nexport {\n PluginError,\n PluginDependencyError,\n PluginConflictError\n} from './types'\n\nexport { PluginRegistry } from './registry'\n\nexport {\n BasePlugin,\n createPlugin,\n type UIPluginConfig,\n type AnalyticsPluginConfig,\n type PerformancePluginConfig\n} from './base-plugin'\n\n// Example plugins\nexport { AnalyticsPlugin, createAnalyticsPlugin } from './examples/analytics-plugin'\n\n// Plugin utilities\nexport * from './utils'\n\n// Version\nexport const PLUGIN_SYSTEM_VERSION = '1.0.0'"],"names":["PluginError","pluginName","phase","message","originalError","PluginDependencyError","missingDependencies","PluginConflictError","conflictingPlugins","PluginRegistry","logger","__publicField","EventBus","factory","config","plugin","name","dependencies","conflicts","dep","activeConflicts","conflict","error","context","names","resolved","reversed","results","healthy","event","listener","data","handler","visiting","visit","a","b","priorityOrder","BasePlugin","metadata","oldConfig","newConfig","element","events","defaults","createPlugin","PluginClass","AnalyticsPlugin","mediaEventCleanup","cleanup","cleanupFunctions","unsubscribe","analyticsEvent","eventsToReport","response","createAnalyticsPlugin","ConsolePluginLogger","prefix","PluginValidator","schema","key","rules","value","PluginPerformanceMonitor","operation","fn","startTime","updateMetrics","endTime","duration","existing","result","pluginMetrics","PluginDevelopmentHelpers","time","volume","hooks","label","PluginStorage","defaultValue","item","defaultPluginLogger","defaultPerformanceMonitor","PLUGIN_SYSTEM_VERSION"],"mappings":"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"}
|
package/dist/core.js
DELETED
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
"use strict";var z=Object.defineProperty;var _=(o,e,t)=>e in o?z(o,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):o[e]=t;var u=(o,e,t)=>_(o,typeof e!="symbol"?e+"":e,t);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const m=require("./core-plugins-CPDSHMiQ.cjs"),g=require("./core-events-CN0-Vhhq.cjs"),w=require("./context-DCJ_scmO.cjs"),d=require("react"),f=require("./performance-monitor-CUW6f5ll.cjs");class M{constructor(){u(this,"results",[]);u(this,"regressionDetector",new f.PerformanceRegressionDetector)}async runTest(e,t){const r=[];let n=0,i=0,s;try{for(let h=0;h<e.warmupIterations;h++)await t();global.gc&&global.gc(),n=this.getMemoryUsage();for(let h=0;h<e.iterations;h++){const b=performance.now();await t();const O=performance.now();r.push(O-b)}i=this.getMemoryUsage()}catch(h){s=h instanceof Error?h.message:String(h)}const a=r.reduce((h,b)=>h+b,0)/r.length,c=Math.min(...r),p=Math.max(...r),P=i-n,v=!s&&a<=e.expectedThreshold.renderTime&&P<=e.expectedThreshold.memoryUsage,S={testName:e.name,passed:v,metrics:{averageRenderTime:a,minRenderTime:isFinite(c)?c:0,maxRenderTime:isFinite(p)?p:0,memoryUsage:P,iterations:e.iterations},threshold:e.expectedThreshold,error:s};return this.results.push(S),S}getMemoryUsage(){return"memory"in performance&&performance.memory.usedJSHeapSize||0}async testComponentRender(e,t,r=16){const n={name:`${e} Render Performance`,iterations:100,warmupIterations:10,timeout:5e3,expectedThreshold:{renderTime:r,memoryUsage:1048576}};return this.runTest(n,t)}async testBundleLoading(e,t=1e3){const r={name:`Bundle Loading: ${e}`,iterations:5,warmupIterations:1,timeout:1e4,expectedThreshold:{renderTime:t,memoryUsage:5242880}};return this.runTest(r,async()=>{const n=performance.now();try{const s=await fetch(e);if(!s.ok)throw new Error(`Failed to load bundle: ${s.status}`);await s.blob()}catch(s){console.warn(`Bundle loading test failed for ${e}:`,s)}return performance.now()-n})}async testMemoryLeaks(e,t=1e3){const r={name:"Memory Leak Detection",iterations:t,warmupIterations:100,timeout:3e4,expectedThreshold:{renderTime:1/0,memoryUsage:10485760}},n=this.getMemoryUsage(),i=await this.runTest(r,e),a=this.getMemoryUsage()-n,c=a>r.expectedThreshold.memoryUsage;return{...i,passed:i.passed&&!c,error:c?`Potential memory leak detected: ${Math.round(a/1024/1024)}MB increase`:i.error}}async testInteractionDelay(e,t=100){const r={name:"Interaction Delay",iterations:50,warmupIterations:5,timeout:5e3,expectedThreshold:{renderTime:t,memoryUsage:1048576}};return this.runTest(r,e)}async runRegressionTests(e,t){t&&this.regressionDetector.setBaseline(t);const r=this.regressionDetector.detectRegression(e);return{passed:r.length===0,regressions:r}}getResults(){return[...this.results]}getSummary(){const e=this.results.length,t=this.results.filter(i=>i.passed).length,r=e-t,n=e>0?t/e*100:0;return{totalTests:e,passedTests:t,failedTests:r,passRate:n}}clearResults(){this.results=[]}generateReport(){const e=this.getSummary();let t=`Performance Test Report
|
|
2
|
-
`;return t+=`========================
|
|
3
|
-
|
|
4
|
-
`,t+=`Total Tests: ${e.totalTests}
|
|
5
|
-
`,t+=`Passed: ${e.passedTests}
|
|
6
|
-
`,t+=`Failed: ${e.failedTests}
|
|
7
|
-
`,t+=`Pass Rate: ${e.passRate.toFixed(1)}%
|
|
8
|
-
|
|
9
|
-
`,this.results.length>0&&(t+=`Detailed Results:
|
|
10
|
-
`,t+=`-----------------
|
|
11
|
-
|
|
12
|
-
`,this.results.forEach((r,n)=>{t+=`${n+1}. ${r.testName}
|
|
13
|
-
`,t+=` Status: ${r.passed?"PASS":"FAIL"}
|
|
14
|
-
`,t+=` Average Render Time: ${r.metrics.averageRenderTime.toFixed(2)}ms
|
|
15
|
-
`,t+=` Min/Max Render Time: ${r.metrics.minRenderTime.toFixed(2)}ms / ${r.metrics.maxRenderTime.toFixed(2)}ms
|
|
16
|
-
`,t+=` Memory Usage: ${Math.round(r.metrics.memoryUsage/1024)} KB
|
|
17
|
-
`,t+=` Iterations: ${r.metrics.iterations}
|
|
18
|
-
`,r.error&&(t+=` Error: ${r.error}
|
|
19
|
-
`),t+=`
|
|
20
|
-
`})),t}}const T=new M,V={async testComponent(o,e={},t=16){return T.testComponentRender(o.displayName||o.name||"Component",()=>({type:o,props:e}),t)},async testHook(o,e,t=1){const r={name:`Hook Performance: ${e}`,iterations:1e3,warmupIterations:100,timeout:5e3,expectedThreshold:{renderTime:t,memoryUsage:1048576}};return T.runTest(r,o)},async testAsyncOperation(o,e,t=1e3){const r={name:`Async Operation: ${e}`,iterations:10,warmupIterations:2,timeout:3e4,expectedThreshold:{renderTime:t,memoryUsage:2097152}};return T.runTest(r,o)},async measureBundleImpact(o,e,t){const r=performance.memory?.usedJSHeapSize||0,n=performance.now();o();const i=performance.memory?.usedJSHeapSize||0,s=performance.now();e();const a=performance.memory?.usedJSHeapSize||0,c=performance.now();return{bundleIncrease:a-r,memoryIncrease:i-r,renderTimeImpact:c-s-(s-n)}}};class k{constructor(){u(this,"benchmark",new M);u(this,"suites",new Map)}registerSuite(e,t){this.suites.set(e,t)}async runSuite(e,t){const r=this.suites.get(e);if(!r)throw new Error(`Test suite '${e}' not found`);const n=[];for(const i of r){const s=t.get(i.name);if(!s){console.warn(`No implementation found for test '${i.name}'`);continue}const a=await this.benchmark.runTest(i,s);n.push(a)}return n}async runAllSuites(e){const t=new Map;for(const[r]of this.suites){const n=e.get(r);if(!n){console.warn(`No implementations found for suite '${r}'`);continue}const i=await this.runSuite(r,n);t.set(r,i)}return t}generateComprehensiveReport(){this.benchmark.getSummary();let e=this.benchmark.generateReport();if(this.suites.size>0){e+=`
|
|
21
|
-
Test Suites:
|
|
22
|
-
`,e+=`============
|
|
23
|
-
|
|
24
|
-
`;for(const[t,r]of this.suites)e+=`Suite: ${t}
|
|
25
|
-
`,e+=`Tests: ${r.length}
|
|
26
|
-
|
|
27
|
-
`}return e}}const H=new k,A=[{name:"Main Bundle Size (ESM)",category:"bundle",limit:250*1024,unit:"bytes",severity:"error",description:"Main bundle should stay under 250KB for fast initial loading"},{name:"Main Bundle Size (CJS)",category:"bundle",limit:200*1024,unit:"bytes",severity:"error",description:"CJS bundle should be smaller due to better compression"},{name:"Core Module Size",category:"bundle",limit:15*1024,unit:"bytes",severity:"warning",description:"Core architecture should remain lightweight"},{name:"Enhanced Components Size",category:"bundle",limit:40*1024,unit:"bytes",severity:"warning",description:"Enhanced components bundle size"},{name:"Component Render Time",category:"runtime",limit:16,unit:"ms",severity:"error",description:"Component rendering should complete within one frame"},{name:"First Input Delay",category:"runtime",limit:100,unit:"ms",severity:"error",description:"First Input Delay should be under 100ms for good UX"},{name:"Largest Contentful Paint",category:"runtime",limit:2500,unit:"ms",severity:"warning",description:"LCP should be under 2.5s for good Core Web Vitals score"},{name:"Cumulative Layout Shift",category:"runtime",limit:.1,unit:"score",severity:"warning",description:"CLS should be under 0.1 for good visual stability"},{name:"Memory Usage",category:"memory",limit:50*1024*1024,unit:"bytes",severity:"warning",description:"Memory usage should stay under 50MB for good performance"},{name:"Memory Increase Per Operation",category:"memory",limit:1024*1024,unit:"bytes",severity:"error",description:"Each operation should not increase memory by more than 1MB"},{name:"Media Load Time",category:"network",limit:3e3,unit:"ms",severity:"warning",description:"Media should start loading within 3 seconds"}];class R{constructor(e=A,t={enabled:!0,channels:[{type:"console",config:{}}],threshold:1,cooldown:300*1e3}){u(this,"budgets",new Map);u(this,"violations",[]);u(this,"alertConfig");u(this,"lastAlertTime",0);e.forEach(r=>{this.budgets.set(r.name,r)}),this.alertConfig=t}checkMetric(e,t,r="runtime"){const n=[];for(const[i,s]of this.budgets)if(s.category===r&&(i.includes(e)||e.includes(i.split(" ")[0]?.toLowerCase()||""))&&t>s.limit){const a={budget:s,actualValue:t,overageAmount:t-s.limit,overagePercentage:(t-s.limit)/s.limit*100,timestamp:Date.now()};n.push(a),this.violations.push(a)}return n.length>0&&this.handleViolations(n),n}async checkBundleSizes(e){const t=[];return typeof window<"u"||typeof process>"u"?(console.warn("Bundle size checking is only available in Node.js environment"),t):(console.warn("Bundle size checking disabled - use Node.js cicdIntegration from @rp/baroiplayer/core/performance/cicd for CI/CD environments"),t)}checkRuntimeMetrics(e){const t=[];return e.renderTime!==void 0&&t.push(...this.checkMetric("Component Render Time",e.renderTime,"runtime")),e.fid!==void 0&&t.push(...this.checkMetric("First Input Delay",e.fid,"runtime")),e.lcp!==void 0&&t.push(...this.checkMetric("Largest Contentful Paint",e.lcp,"runtime")),e.cls!==void 0&&t.push(...this.checkMetric("Cumulative Layout Shift",e.cls,"runtime")),e.memoryUsage!==void 0&&t.push(...this.checkMetric("Memory Usage",e.memoryUsage,"memory")),e.mediaLoadTime!==void 0&&t.push(...this.checkMetric("Media Load Time",e.mediaLoadTime,"network")),t}async handleViolations(e){if(!this.alertConfig.enabled)return;const t=Date.now();e.filter(n=>n.budget.severity==="error").length>=this.alertConfig.threshold&&t-this.lastAlertTime>=this.alertConfig.cooldown&&(await this.sendAlerts(e),this.lastAlertTime=t)}async sendAlerts(e){const t=this.formatAlertMessage(e);for(const r of this.alertConfig.channels)try{await this.sendAlert(r,t)}catch(n){console.error(`Failed to send alert via ${r.type}:`,n)}}formatAlertMessage(e){let t=`🚨 Performance Budget Violations Detected!
|
|
28
|
-
|
|
29
|
-
`;return e.forEach(r=>{const{budget:n,actualValue:i,overageAmount:s,overagePercentage:a}=r;this.getUnitDisplay(n.unit),t+=`❌ ${n.name}
|
|
30
|
-
`,t+=` Limit: ${this.formatValue(n.limit,n.unit)}
|
|
31
|
-
`,t+=` Actual: ${this.formatValue(i,n.unit)}
|
|
32
|
-
`,t+=` Overage: ${this.formatValue(s,n.unit)} (+${a.toFixed(1)}%)
|
|
33
|
-
`,t+=` Severity: ${n.severity.toUpperCase()}
|
|
34
|
-
|
|
35
|
-
`}),t+=`Time: ${new Date().toISOString()}
|
|
36
|
-
`,t+=`Total Violations: ${e.length}`,t}async sendAlert(e,t){switch(e.type){case"console":console.error(t);break;case"webhook":if(e.config.url){const r=await fetch(e.config.url,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({text:t,timestamp:Date.now()})});if(!r.ok)throw new Error(`Webhook failed: ${r.status}`)}break;case"slack":if(e.config.url){const r=await fetch(e.config.url,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({text:t,channel:e.config.channel,username:"BaroiPlayer Performance Monitor"})});if(!r.ok)throw new Error(`Slack webhook failed: ${r.status}`)}break;default:console.warn(`Unsupported alert channel: ${e.type}`)}}formatValue(e,t){switch(t){case"bytes":return this.formatBytes(e);case"ms":return`${e.toFixed(2)}ms`;case"score":return e.toFixed(3);case"percent":return`${e.toFixed(1)}%`;default:return e.toString()}}formatBytes(e){return e>=1024*1024?`${(e/1024/1024).toFixed(2)}MB`:e>=1024?`${(e/1024).toFixed(2)}KB`:`${e}B`}getUnitDisplay(e){return{bytes:"bytes",ms:"milliseconds",score:"score",percent:"percent"}[e]||e}addBudget(e){this.budgets.set(e.name,e)}removeBudget(e){this.budgets.delete(e)}updateBudget(e,t){const r=this.budgets.get(e);r&&this.budgets.set(e,{...r,...t})}getBudgets(){return Array.from(this.budgets.values())}getViolations(e){return e?this.violations.filter(t=>t.timestamp>=e):[...this.violations]}clearViolations(){this.violations=[]}getViolationSummary(){const e={},t={};return this.violations.forEach(r=>{const n=r.budget.category,i=r.budget.severity;e[n]=(e[n]||0)+1,t[i]=(t[i]||0)+1}),{total:this.violations.length,byCategory:e,bySeverity:t}}}const q=new R,B={preloadStrategy:"metadata",adaptiveBitrate:!0,maxPreloadSize:2*1024*1024,networkThresholds:{"2g":{maxBitrate:128,preload:!1},"3g":{maxBitrate:500,preload:!1},"4g":{maxBitrate:2e3,preload:!0},"5g":{maxBitrate:1e4,preload:!0}},bufferSize:10,enableServiceWorker:!0};class I{constructor(){u(this,"connection");u(this,"listeners",new Set);u(this,"currentInfo");if(typeof window>"u"||typeof navigator>"u"){this.connection=null,this.currentInfo={effectiveType:"unknown",downlink:0,rtt:0,saveData:!1,isOnline:!0};return}this.connection=navigator.connection||navigator.mozConnection||navigator.webkitConnection,this.currentInfo=this.getNetworkInfo(),this.initializeListeners()}getNetworkInfo(){if(typeof navigator>"u")return{effectiveType:"unknown",downlink:0,rtt:0,saveData:!1,isOnline:!0};const e=navigator.onLine;return this.connection?{effectiveType:this.connection.effectiveType||"unknown",downlink:this.connection.downlink||0,rtt:this.connection.rtt||0,saveData:this.connection.saveData||!1,isOnline:e}:{effectiveType:"unknown",downlink:0,rtt:0,saveData:!1,isOnline:e}}initializeListeners(){typeof window>"u"||(this.connection&&this.connection.addEventListener("change",this.handleNetworkChange.bind(this)),window.addEventListener("online",this.handleNetworkChange.bind(this)),window.addEventListener("offline",this.handleNetworkChange.bind(this)))}handleNetworkChange(){const e=this.getNetworkInfo();this.currentInfo=e,this.listeners.forEach(t=>t(e))}getCurrentNetworkInfo(){return{...this.currentInfo}}subscribe(e){return this.listeners.add(e),()=>this.listeners.delete(e)}async estimateBandwidth(){if(this.connection&&this.connection.downlink)return this.connection.downlink*1e3;try{const e=performance.now(),n=await(await fetch("/api/bandwidth-test?size=100kb")).blob(),s=(performance.now()-e)/1e3;return n.size*8/s/1e3}catch(e){return console.warn("Bandwidth estimation failed:",e),1e3}}}class L{constructor(e={}){u(this,"config");u(this,"networkMonitor");u(this,"loadingMetrics",new Map);u(this,"preloadCache",new Map);this.config={...B,...e},this.networkMonitor=new I,this.initializeNetworkMonitoring()}initializeNetworkMonitoring(){this.networkMonitor.subscribe(e=>{this.handleNetworkChange(e)})}handleNetworkChange(e){console.log("Network changed:",e),this.config.adaptiveBitrate&&this.adjustQualityForNetwork(e),(e.effectiveType==="2g"||e.saveData)&&this.clearPreloadCache()}async optimizeMediaLoading(e,t,r={}){const n=performance.now(),i=this.networkMonitor.getCurrentNetworkInfo(),s={loadStartTime:n,bytesLoaded:0,loadSpeed:0,networkType:i.effectiveType,quality:r.quality||"auto",bufferHealth:0,stallsCount:0,stallsDuration:0};this.loadingMetrics.set(e,s);try{const a=this.chooseLoadingStrategy(i,r);return a.shouldPreload&&await this.preloadMedia(e,a.preloadAmount),t.preload=a.preloadAttribute,this.monitorLoadingProgress(t,s),this.config.adaptiveBitrate&&a.suggestedQuality&&this.applyQualitySettings(t,a.suggestedQuality),s}catch(a){return console.error("Media loading optimization failed:",a),s}}chooseLoadingStrategy(e,t){const r=e.effectiveType==="unknown"?"4g":e.effectiveType,n=this.config.networkThresholds[r]||this.config.networkThresholds["4g"];return{shouldPreload:t.preload!==!1&&n.preload&&!e.saveData,preloadAmount:e.saveData?0:this.config.maxPreloadSize,preloadAttribute:this.getPreloadAttribute(e),suggestedQuality:this.getSuggestedQuality(e,n.maxBitrate),bufferTarget:this.getBufferTarget(e)}}getPreloadAttribute(e){return e.saveData||e.effectiveType==="2g"?"none":e.effectiveType==="3g"?"metadata":this.config.preloadStrategy}getSuggestedQuality(e,t){const r=e.downlink*1e3;return r>=t*2?"high":r>=t?"medium":"low"}getBufferTarget(e){switch(e.effectiveType){case"2g":return 2;case"3g":return 5;case"4g":return this.config.bufferSize;case"5g":return this.config.bufferSize*1.5;default:return this.config.bufferSize}}async preloadMedia(e,t){if(this.preloadCache.has(e))return;const r=this.fetchWithProgress(e,t);this.preloadCache.set(e,r);try{await r}catch(n){console.warn(`Preload failed for ${e}:`,n),this.preloadCache.delete(e)}}async fetchWithProgress(e,t){const r=await fetch(e,{headers:{Range:`bytes=0-${t-1}`}});if(!r.ok)throw new Error(`Failed to preload: ${r.status}`);const n=r.body?.getReader();if(!n)throw new Error("Response body not readable");const i=[];let s=0;try{for(;s<t;){const{done:a,value:c}=await n.read();if(a)break;i.push(c),s+=c.length}}finally{n.releaseLock()}return new Blob(i)}monitorLoadingProgress(e,t){let r=null;const n=()=>{if(e.buffered.length>0){const v=e.buffered.end(e.buffered.length-1),S=e.currentTime;t.bufferHealth=Math.min((v-S)/this.config.bufferSize,1)}},i=()=>{t.firstByteTime=performance.now()},s=()=>{t.loadCompleteTime=performance.now(),t.totalLoadTime=t.loadCompleteTime-t.loadStartTime,t.totalLoadTime&&t.bytesLoaded>0&&(t.loadSpeed=t.bytesLoaded/(t.totalLoadTime/1e3))},a=()=>{r===null&&(r=performance.now(),t.stallsCount++)},c=()=>{r!==null&&(t.stallsDuration+=performance.now()-r,r=null),n()},p=()=>{if(e.buffered.length>0){const v=e.buffered.end(0)*1e3;t.bytesLoaded=v}n()};e.addEventListener("loadstart",i),e.addEventListener("canplay",s),e.addEventListener("waiting",a),e.addEventListener("playing",c),e.addEventListener("progress",p),setTimeout(()=>{e.removeEventListener("loadstart",i),e.removeEventListener("canplay",s),e.removeEventListener("waiting",a),e.removeEventListener("playing",c),e.removeEventListener("progress",p)},300*1e3)}applyQualitySettings(e,t){console.log(`Applying quality setting: ${t} to`,e)}adjustQualityForNetwork(e){console.log("Adjusting quality for network conditions:",e.effectiveType)}clearPreloadCache(){this.preloadCache.clear()}getLoadingMetrics(e){return this.loadingMetrics.get(e)}getAllMetrics(){return Array.from(this.loadingMetrics.values())}getAverageLoadingTime(){const t=this.getAllMetrics().filter(n=>n.totalLoadTime!==void 0);return t.length===0?0:t.reduce((n,i)=>n+(i.totalLoadTime||0),0)/t.length}getNetworkPerformanceStats(){const e=new Map;return this.getAllMetrics().forEach(t=>{const r=t.networkType;e.has(r)||e.set(r,[]),e.get(r).push(t)}),Array.from(e.entries()).map(([t,r])=>({networkType:t,avgLoadTime:r.reduce((n,i)=>n+(i.totalLoadTime||0),0)/r.length,avgStalls:r.reduce((n,i)=>n+i.stallsCount,0)/r.length,avgBufferHealth:r.reduce((n,i)=>n+i.bufferHealth,0)/r.length}))}}const F=new L;function j(o){const[e]=d.useState(()=>o?new L(o):F),[t,r]=d.useState(null),[n,i]=d.useState([]);d.useEffect(()=>{const a=e.networkMonitor.subscribe(r);r(e.networkMonitor.getCurrentNetworkInfo());const c=setInterval(()=>{i(e.getAllMetrics())},1e3);return()=>{a(),clearInterval(c)}},[e]);const s=d.useCallback((a,c,p)=>e.optimizeMediaLoading(a,c,p),[e]);return{networkInfo:t,loadingMetrics:n,optimizeLoading:s,averageLoadTime:e.getAverageLoadingTime(),networkStats:e.getNetworkPerformanceStats()}}class Y{get(e){try{const t=localStorage.getItem(`baroi-player-${e}`);return t?JSON.parse(t):null}catch{return null}}set(e,t){try{localStorage.setItem(`baroi-player-${e}`,JSON.stringify(t))}catch(r){console.warn("Failed to store data:",r)}}remove(e){try{localStorage.removeItem(`baroi-player-${e}`)}catch(t){console.warn("Failed to remove data:",t)}}clear(){try{Object.keys(localStorage).forEach(e=>{e.startsWith("baroi-player-")&&localStorage.removeItem(e)})}catch(e){console.warn("Failed to clear data:",e)}}}class Q{track(e,t){console.log("Analytics:",e,t)}identify(e,t){console.log("Analytics identify:",e,t)}page(e,t){console.log("Analytics page:",e,t)}}const N=d.createContext(null);function x({children:o,services:e={}}){const t=d.useMemo(()=>{const r=e.logger||new m.ConsolePluginLogger("[BaroiPlayer]"),n=e.eventBus||new g.EventBus,i=e.pluginRegistry||new m.PluginRegistry(r),s=e.storage||new Y,a=e.analytics||new Q;return{eventBus:n,pluginRegistry:i,storage:s,analytics:a,logger:r}},[e]);return w.jsxRuntimeExports.jsx(N.Provider,{value:t,children:o})}function y(){const o=d.useContext(N);if(!o)throw new Error("useServices must be used within ServiceProvider");return o}function K(){return y().eventBus}function W(){return y().pluginRegistry}function J(){return y().storage}function G(){return y().analytics}function X(){return y().logger}function Z(o){return function(t){const r=y();return w.jsxRuntimeExports.jsx(o,{...t,services:r})}}function ee(o={}){return function({children:t}){return w.jsxRuntimeExports.jsx(x,{services:o.services,children:t})}}const l={SUBTITLES:"subtitles",PLAYLISTS:"playlists",ADVANCED_CONTROLS:"advanced_controls",ANALYTICS:"analytics",PICTURE_IN_PICTURE:"picture_in_picture",QUALITY_SELECTOR:"quality_selector",PLAYBACK_SPEED:"playback_speed",CHAPTERS:"chapters",THUMBNAILS:"thumbnails",KEYBOARD_SHORTCUTS:"keyboard_shortcuts"},D={enabledFeatures:[l.SUBTITLES,l.ADVANCED_CONTROLS,l.KEYBOARD_SHORTCUTS],loadingStrategy:"lazy",fallbackTimeout:5e3,retryAttempts:3},te={SubtitleSelector:d.lazy(()=>Promise.resolve().then(()=>require("./enhanced-components-DTIObgB7.cjs")).then(o=>o.advancedFeatures).then(o=>({default:o.SubtitleSelector}))),PlaylistManager:d.lazy(()=>Promise.resolve().then(()=>require("./enhanced-components-DTIObgB7.cjs")).then(o=>o.advancedFeatures).then(o=>({default:o.SubtitleSelector}))),QualitySelector:d.lazy(()=>Promise.resolve().then(()=>require("./enhanced-components-DTIObgB7.cjs")).then(o=>o.advancedFeatures).then(o=>({default:o.QualitySelector}))),PlaybackSpeedSelector:d.lazy(()=>Promise.resolve().then(()=>require("./enhanced-components-DTIObgB7.cjs")).then(o=>o.advancedFeatures).then(o=>({default:o.PlaybackSpeedSelector}))),ChaptersPanel:d.lazy(()=>Promise.resolve().then(()=>require("./enhanced-components-DTIObgB7.cjs")).then(o=>o.advancedFeatures).then(o=>({default:o.ChaptersPanel}))),PictureInPictureButton:d.lazy(()=>Promise.resolve().then(()=>require("./enhanced-components-DTIObgB7.cjs")).then(o=>o.advancedFeatures).then(o=>({default:o.PictureInPictureButton}))),AnalyticsTracker:d.lazy(()=>Promise.resolve().then(()=>require("./enhanced-components-DTIObgB7.cjs")).then(o=>o.advancedFeatures).then(o=>({default:o.SubtitleSelector})))};class C{static async isSupported(e){if(this.cache.has(e))return this.cache.get(e);const t=await this.checkFeatureSupport(e);return this.cache.set(e,t),t}static async checkFeatureSupport(e){if(typeof window>"u"||typeof document>"u")return!0;switch(e){case l.SUBTITLES:return"TextTrack"in window;case l.PICTURE_IN_PICTURE:return"pictureInPictureEnabled"in document;case l.ADVANCED_CONTROLS:return!0;case l.PLAYLISTS:return"MediaSession"in window;case l.ANALYTICS:return"IntersectionObserver"in window;case l.QUALITY_SELECTOR:return"MediaSource"in window;case l.PLAYBACK_SPEED:return!0;case l.CHAPTERS:return"TextTrack"in window;case l.THUMBNAILS:return"OffscreenCanvas"in window||"canvas"in document.createElement("canvas");case l.KEYBOARD_SHORTCUTS:return"KeyboardEvent"in window;default:return!1}}}u(C,"cache",new Map);class ${constructor(e={}){u(this,"config");u(this,"loadedFeatures",new Set);u(this,"loadingPromises",new Map);this.config={...D,...e}}async loadFeature(e){if(!this.config.enabledFeatures.includes(e))return null;if(this.loadedFeatures.has(e))return this.getLoadedFeature(e);if(this.loadingPromises.has(e))return this.loadingPromises.get(e);if(!await C.isSupported(e))return console.warn(`Feature ${e} is not supported in this browser`),null;const r=this.loadWithRetry(e);this.loadingPromises.set(e,r);try{const n=await r;return this.loadedFeatures.add(e),n}catch(n){return console.error(`Failed to load feature ${e}:`,n),this.loadingPromises.delete(e),null}}async loadWithRetry(e,t=1){try{return await this.loadFeatureModule(e)}catch(r){if(t<this.config.retryAttempts)return console.warn(`Loading feature ${e} failed, retrying (${t}/${this.config.retryAttempts})`),await new Promise(n=>setTimeout(n,1e3*t)),this.loadWithRetry(e,t+1);throw r}}async loadFeatureModule(e){switch(e){case l.SUBTITLES:return Promise.resolve().then(()=>require("./hooks-C_r8wexn.cjs")).then(t=>t.useEnhancedSubtitles$2);case l.PLAYLISTS:return Promise.resolve().then(()=>require("./enhanced-components-DTIObgB7.cjs")).then(t=>t.advancedFeatures);case l.ADVANCED_CONTROLS:return Promise.resolve().then(()=>require("./enhanced-components-DTIObgB7.cjs")).then(t=>t.advancedFeatures);case l.ANALYTICS:return Promise.resolve().then(()=>require("./enhanced-components-DTIObgB7.cjs")).then(t=>t.advancedFeatures);case l.PICTURE_IN_PICTURE:return Promise.resolve().then(()=>require("./enhanced-components-DTIObgB7.cjs")).then(t=>t.advancedFeatures);case l.QUALITY_SELECTOR:return Promise.resolve().then(()=>require("./enhanced-components-DTIObgB7.cjs")).then(t=>t.advancedFeatures);case l.PLAYBACK_SPEED:return Promise.resolve().then(()=>require("./enhanced-components-DTIObgB7.cjs")).then(t=>t.advancedFeatures);case l.CHAPTERS:return Promise.resolve().then(()=>require("./enhanced-components-DTIObgB7.cjs")).then(t=>t.advancedFeatures);case l.THUMBNAILS:return Promise.resolve().then(()=>require("./enhanced-components-DTIObgB7.cjs")).then(t=>t.advancedFeatures);case l.KEYBOARD_SHORTCUTS:return Promise.resolve().then(()=>require("./hooks-C_r8wexn.cjs")).then(t=>t.useKeyboardControls$1);default:throw new Error(`Unknown feature: ${e}`)}}getLoadedFeature(e){return this.loadingPromises.get(e)}async preloadFeatures(e=this.config.enabledFeatures){const t=e.map(r=>this.loadFeature(r));await Promise.allSettled(t)}getLoadingState(){return{loaded:Array.from(this.loadedFeatures),loading:Array.from(this.loadingPromises.keys()),enabled:this.config.enabledFeatures}}}const E=new $;function U(o){const[e,t]=d.useState(null),[r,n]=d.useState(!1),[i,s]=d.useState(null),a=d.useCallback(async()=>{if(!(r||e)){n(!0),s(null);try{const c=await E.loadFeature(o);t(c)}catch(c){s(c)}finally{n(!1)}}},[o,r,e]);return d.useEffect(()=>{E.config.loadingStrategy==="immediate"&&a()},[a]),{feature:e,loading:r,error:i,load:a}}function re(o,e,t){return function(n){const{feature:i,loading:s,error:a}=U(e);if(s)return w.jsxRuntimeExports.jsx("div",{className:"h-8 animate-pulse rounded bg-gray-200"});if(a||!i){const c=t;return c?w.jsxRuntimeExports.jsx(c,{...n}):null}return w.jsxRuntimeExports.jsx(o,{...n})}}const ne="1.0.0";exports.AnalyticsPlugin=m.AnalyticsPlugin;exports.BasePlugin=m.BasePlugin;exports.ConsolePluginLogger=m.ConsolePluginLogger;exports.PLUGIN_SYSTEM_VERSION=m.PLUGIN_SYSTEM_VERSION;exports.PluginConflictError=m.PluginConflictError;exports.PluginDependencyError=m.PluginDependencyError;exports.PluginDevelopmentHelpers=m.PluginDevelopmentHelpers;exports.PluginError=m.PluginError;exports.PluginPerformanceMonitor=m.PluginPerformanceMonitor;exports.PluginRegistry=m.PluginRegistry;exports.PluginStorage=m.PluginStorage;exports.PluginValidator=m.PluginValidator;exports.createAnalyticsPlugin=m.createAnalyticsPlugin;exports.createPlugin=m.createPlugin;exports.defaultPerformanceMonitor=m.defaultPerformanceMonitor;exports.defaultPluginLogger=m.defaultPluginLogger;exports.EVENT_SYSTEM_VERSION=g.EVENT_SYSTEM_VERSION;exports.EventBus=g.EventBus;exports.EventDelegator=g.EventDelegator;exports.MiddlewareBuilder=g.MiddlewareBuilder;exports.commonMiddlewares=g.commonMiddlewares;exports.createMiddleware=g.createMiddleware;exports.defaultEventBus=g.defaultEventBus;exports.eventMiddlewares=g.eventMiddlewares;exports.useConditionalEventListener=g.useConditionalEventListener;exports.useEventBus=g.useEventBus;exports.useEventDebugger=g.useEventDebugger;exports.useEventEffect=g.useEventEffect;exports.useEventEmitter=g.useEventEmitter;exports.useEventHandlers=g.useEventHandlers;exports.useEventHistory=g.useEventHistory;exports.useEventListener=g.useEventListener;exports.useEventMetrics=g.useEventMetrics;exports.useEventOnce=g.useEventOnce;exports.useEventState=g.useEventState;exports.PerformanceDashboard=f.PerformanceDashboard;exports.PerformanceMonitor=f.PerformanceMonitor;exports.PerformanceRegressionDetector=f.PerformanceRegressionDetector;exports.defaultThresholds=f.defaultThresholds;exports.performanceMonitor=f.performanceMonitor;exports.usePerformanceMonitor=f.usePerformanceMonitor;exports.withPerformanceMonitoring=f.withPerformanceMonitoring;exports.CORE_ARCHITECTURE_VERSION=ne;exports.FEATURES=l;exports.FeatureDetector=C;exports.MediaLoadingOptimizer=L;exports.NetworkMonitor=I;exports.PerformanceBenchmark=M;exports.PerformanceBudgetMonitor=R;exports.PerformanceTestFramework=k;exports.ProgressiveLoader=$;exports.ServiceProvider=x;exports.createArchitecture=ee;exports.defaultMediaLoadingConfig=B;exports.defaultPerformanceBudgets=A;exports.defaultProgressiveConfig=D;exports.lazyComponents=te;exports.mediaLoadingOptimizer=F;exports.performanceBenchmark=T;exports.performanceBudgetMonitor=q;exports.performanceTestFramework=H;exports.performanceTestUtils=V;exports.progressiveLoader=E;exports.useAnalytics=G;exports.useLogger=X;exports.useMediaLoadingOptimizer=j;exports.usePluginRegistry=W;exports.useProgressiveFeature=U;exports.useServiceEventBus=K;exports.useServices=y;exports.useStorage=J;exports.withProgressiveFeature=re;exports.withServices=Z;
|
|
37
|
-
//# sourceMappingURL=core.js.map
|