@therealtinhtute/baroiplayer 1.0.6 → 1.0.7
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.d.ts +1 -1
- package/dist/package.json +1 -1
- package/package.json +1 -1
- 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-Af84FynT.js +0 -1179
- package/dist/context-Af84FynT.js.map +0 -1
- package/dist/context-CwZnPdz0.cjs +0 -23
- package/dist/context-CwZnPdz0.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-CXnYiOt6.cjs +0 -2
- package/dist/enhanced-components-CXnYiOt6.cjs.map +0 -1
- package/dist/enhanced-components-Da0TSvKe.js +0 -1073
- package/dist/enhanced-components-Da0TSvKe.js.map +0 -1
- package/dist/hooks-BCMilGRf.cjs +0 -4
- package/dist/hooks-BCMilGRf.cjs.map +0 -1
- package/dist/hooks-BPtHV1ZT.js +0 -2042
- package/dist/hooks-BPtHV1ZT.js.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/index.mjs.map +0 -1
- package/dist/minimal-components-BHJMuaL7.cjs +0 -2
- package/dist/minimal-components-BHJMuaL7.cjs.map +0 -1
- package/dist/minimal-components-BmqRefl1.js +0 -2002
- package/dist/minimal-components-BmqRefl1.js.map +0 -1
- package/dist/mona-loading.gif +0 -0
- package/dist/performance-monitor--rzKTlbj.js +0 -302
- package/dist/performance-monitor--rzKTlbj.js.map +0 -1
- package/dist/performance-monitor-cjIvZE2D.cjs +0 -2
- package/dist/performance-monitor-cjIvZE2D.cjs.map +0 -1
- package/dist/src/adapters/videojs-adapter.d.ts.map +0 -1
- package/dist/src/adapters/videojs-adapter.js +0 -350
- package/dist/src/assets/mona-loading.gif +0 -0
- package/dist/src/components/AnimateLoading.d.ts.map +0 -1
- package/dist/src/components/AnimateLoading.js +0 -41
- package/dist/src/components/LoadingState.d.ts.map +0 -1
- package/dist/src/components/LoadingState.js +0 -111
- package/dist/src/components/accessibility/keyboard-help-overlay.d.ts.map +0 -1
- package/dist/src/components/accessibility/keyboard-help-overlay.js +0 -90
- package/dist/src/components/audio-player.d.ts.map +0 -1
- package/dist/src/components/audio-player.js +0 -31
- package/dist/src/components/basic/index.d.ts.map +0 -1
- package/dist/src/components/basic/index.js +0 -29
- package/dist/src/components/enhanced/advanced-features.d.ts.map +0 -1
- package/dist/src/components/enhanced/advanced-features.js +0 -64
- package/dist/src/components/enhanced/debug-panel.d.ts.map +0 -1
- package/dist/src/components/enhanced/debug-panel.js +0 -94
- package/dist/src/components/enhanced/enhanced-controls.d.ts.map +0 -1
- package/dist/src/components/enhanced/enhanced-controls.js +0 -233
- package/dist/src/components/enhanced/enhanced-media-player.d.ts.map +0 -1
- package/dist/src/components/enhanced/enhanced-media-player.js +0 -316
- package/dist/src/components/enhanced/error-handling.d.ts.map +0 -1
- package/dist/src/components/enhanced/error-handling.js +0 -153
- package/dist/src/components/enhanced/index.d.ts.map +0 -1
- package/dist/src/components/enhanced/index.js +0 -10
- package/dist/src/components/enhanced/media-player-enhanced.d.ts.map +0 -1
- package/dist/src/components/enhanced/media-player-enhanced.js +0 -250
- package/dist/src/components/examples/basic-video-player.d.ts.map +0 -1
- package/dist/src/components/examples/basic-video-player.js +0 -16
- package/dist/src/components/examples/custom-controls-example.d.ts.map +0 -1
- package/dist/src/components/examples/custom-controls-example.js +0 -12
- package/dist/src/components/examples/enhanced-controls-example.d.ts.map +0 -1
- package/dist/src/components/examples/enhanced-controls-example.js +0 -18
- package/dist/src/components/examples/enhanced-media-player-example.d.ts.map +0 -1
- package/dist/src/components/examples/enhanced-media-player-example.js +0 -13
- package/dist/src/components/examples/loading-states-demo.d.ts.map +0 -1
- package/dist/src/components/examples/loading-states-demo.js +0 -41
- package/dist/src/components/examples/react-19-demo.d.ts.map +0 -1
- package/dist/src/components/examples/react-19-demo.js +0 -104
- package/dist/src/components/examples/volume-orientation-demo.d.ts.map +0 -1
- package/dist/src/components/examples/volume-orientation-demo.js +0 -31
- package/dist/src/components/icon-demo.d.ts.map +0 -1
- package/dist/src/components/icon-demo.js +0 -16
- package/dist/src/components/icons/index.d.ts.map +0 -1
- package/dist/src/components/icons/index.js +0 -59
- package/dist/src/components/icons/svg-icons/ArrowLeftIcon.d.ts.map +0 -1
- package/dist/src/components/icons/svg-icons/ArrowLeftIcon.js +0 -3
- package/dist/src/components/icons/svg-icons/ArrowRightIcon.d.ts.map +0 -1
- package/dist/src/components/icons/svg-icons/ArrowRightIcon.js +0 -3
- package/dist/src/components/icons/svg-icons/AudioIcon.d.ts.map +0 -1
- package/dist/src/components/icons/svg-icons/AudioIcon.js +0 -4
- package/dist/src/components/icons/svg-icons/BackwardIcon.d.ts.map +0 -1
- package/dist/src/components/icons/svg-icons/BackwardIcon.js +0 -3
- package/dist/src/components/icons/svg-icons/CameraIcon.d.ts.map +0 -1
- package/dist/src/components/icons/svg-icons/CameraIcon.js +0 -4
- package/dist/src/components/icons/svg-icons/CheckIcon.d.ts.map +0 -1
- package/dist/src/components/icons/svg-icons/CheckIcon.js +0 -4
- package/dist/src/components/icons/svg-icons/EnablePiPIcon.d.ts.map +0 -1
- package/dist/src/components/icons/svg-icons/EnablePiPIcon.js +0 -5
- package/dist/src/components/icons/svg-icons/ForwardIcon.d.ts.map +0 -1
- package/dist/src/components/icons/svg-icons/ForwardIcon.js +0 -3
- package/dist/src/components/icons/svg-icons/FullscreenEnterIcon.d.ts.map +0 -1
- package/dist/src/components/icons/svg-icons/FullscreenEnterIcon.js +0 -3
- package/dist/src/components/icons/svg-icons/FullscreenExitIcon.d.ts.map +0 -1
- package/dist/src/components/icons/svg-icons/FullscreenExitIcon.js +0 -3
- package/dist/src/components/icons/svg-icons/LoadingIcon.d.ts.map +0 -1
- package/dist/src/components/icons/svg-icons/LoadingIcon.js +0 -3
- package/dist/src/components/icons/svg-icons/PauseIcon.d.ts.map +0 -1
- package/dist/src/components/icons/svg-icons/PauseIcon.js +0 -3
- package/dist/src/components/icons/svg-icons/PlayIcon.d.ts.map +0 -1
- package/dist/src/components/icons/svg-icons/PlayIcon.js +0 -3
- package/dist/src/components/icons/svg-icons/PlaybackSpeedIcon.d.ts.map +0 -1
- package/dist/src/components/icons/svg-icons/PlaybackSpeedIcon.js +0 -3
- package/dist/src/components/icons/svg-icons/QualityIcon.d.ts.map +0 -1
- package/dist/src/components/icons/svg-icons/QualityIcon.js +0 -3
- package/dist/src/components/icons/svg-icons/SettingsIcon.d.ts.map +0 -1
- package/dist/src/components/icons/svg-icons/SettingsIcon.js +0 -3
- package/dist/src/components/icons/svg-icons/SliderIcon.d.ts.map +0 -1
- package/dist/src/components/icons/svg-icons/SliderIcon.js +0 -3
- package/dist/src/components/icons/svg-icons/SubtitleIcon.d.ts.map +0 -1
- package/dist/src/components/icons/svg-icons/SubtitleIcon.js +0 -3
- package/dist/src/components/icons/svg-icons/SubtitleOffIcon.d.ts.map +0 -1
- package/dist/src/components/icons/svg-icons/SubtitleOffIcon.js +0 -3
- package/dist/src/components/icons/svg-icons/UnPiPIcon.d.ts.map +0 -1
- package/dist/src/components/icons/svg-icons/UnPiPIcon.js +0 -5
- package/dist/src/components/icons/svg-icons/VolumeMutedIcon.d.ts.map +0 -1
- package/dist/src/components/icons/svg-icons/VolumeMutedIcon.js +0 -3
- package/dist/src/components/icons/svg-icons/VolumeOneIcon.d.ts.map +0 -1
- package/dist/src/components/icons/svg-icons/VolumeOneIcon.js +0 -3
- package/dist/src/components/icons/svg-icons/VolumeThreeIcon.d.ts.map +0 -1
- package/dist/src/components/icons/svg-icons/VolumeThreeIcon.js +0 -3
- package/dist/src/components/icons/svg-icons/VolumeTwoIcon.d.ts.map +0 -1
- package/dist/src/components/icons/svg-icons/VolumeTwoIcon.js +0 -3
- package/dist/src/components/legacy.d.ts.map +0 -1
- package/dist/src/components/legacy.js +0 -52
- package/dist/src/components/media-metadata-display.d.ts.map +0 -1
- package/dist/src/components/media-metadata-display.js +0 -20
- package/dist/src/components/media-player-audio.d.ts.map +0 -1
- package/dist/src/components/media-player-audio.js +0 -18
- package/dist/src/components/media-player-controls.d.ts.map +0 -1
- package/dist/src/components/media-player-controls.js +0 -150
- package/dist/src/components/media-player-error.d.ts.map +0 -1
- package/dist/src/components/media-player-error.js +0 -85
- package/dist/src/components/media-player-fullscreen.d.ts.map +0 -1
- package/dist/src/components/media-player-fullscreen.js +0 -68
- package/dist/src/components/media-player-hls.d.ts.map +0 -1
- package/dist/src/components/media-player-hls.js +0 -20
- package/dist/src/components/media-player-loading.d.ts.map +0 -1
- package/dist/src/components/media-player-loading.js +0 -53
- package/dist/src/components/media-player-play.d.ts.map +0 -1
- package/dist/src/components/media-player-play.js +0 -44
- package/dist/src/components/media-player-root.d.ts.map +0 -1
- package/dist/src/components/media-player-root.js +0 -243
- package/dist/src/components/media-player-seek.d.ts.map +0 -1
- package/dist/src/components/media-player-seek.js +0 -92
- package/dist/src/components/media-player-time.d.ts.map +0 -1
- package/dist/src/components/media-player-time.js +0 -57
- package/dist/src/components/media-player-tooltip.d.ts.map +0 -1
- package/dist/src/components/media-player-tooltip.js +0 -14
- package/dist/src/components/media-player-video.d.ts.map +0 -1
- package/dist/src/components/media-player-video.js +0 -18
- package/dist/src/components/media-player-volume.d.ts.map +0 -1
- package/dist/src/components/media-player-volume.js +0 -88
- package/dist/src/components/media-player.d.ts.map +0 -1
- package/dist/src/components/media-player.js +0 -67
- package/dist/src/components/media-suspense.d.ts.map +0 -1
- package/dist/src/components/media-suspense.js +0 -173
- package/dist/src/components/player-settings-form.d.ts.map +0 -1
- package/dist/src/components/player-settings-form.js +0 -46
- package/dist/src/components/react-player-wrapper.d.ts.map +0 -1
- package/dist/src/components/react-player-wrapper.js +0 -163
- package/dist/src/components/simple-video-player.d.ts.map +0 -1
- package/dist/src/components/simple-video-player.js +0 -41
- package/dist/src/components/ui/enhanced-seek-bar.d.ts.map +0 -1
- package/dist/src/components/ui/enhanced-seek-bar.js +0 -112
- package/dist/src/components/ui/fullscreen-button.d.ts.map +0 -1
- package/dist/src/components/ui/fullscreen-button.js +0 -21
- package/dist/src/components/ui/media-resource-preloader.d.ts.map +0 -1
- package/dist/src/components/ui/media-resource-preloader.js +0 -295
- package/dist/src/components/ui/play-button.d.ts.map +0 -1
- package/dist/src/components/ui/play-button.js +0 -26
- package/dist/src/components/ui/seek-bar.d.ts.map +0 -1
- package/dist/src/components/ui/seek-bar.js +0 -54
- package/dist/src/components/ui/time-display.d.ts.map +0 -1
- package/dist/src/components/ui/time-display.js +0 -18
- package/dist/src/components/ui/volume-control.d.ts.map +0 -1
- package/dist/src/components/ui/volume-control.js +0 -71
- package/dist/src/components/unified/base-media-player.d.ts.map +0 -1
- package/dist/src/components/unified/base-media-player.js +0 -104
- package/dist/src/components/unified/media-player.d.ts.map +0 -1
- package/dist/src/components/unified/media-player.js +0 -41
- package/dist/src/components/variants/minimal/AccessibleMinimalPlayer.d.ts.map +0 -1
- package/dist/src/components/variants/minimal/AccessibleMinimalPlayer.js +0 -322
- package/dist/src/components/variants/minimal/EnhancedMinimalMediaPlayer.d.ts.map +0 -1
- package/dist/src/components/variants/minimal/EnhancedMinimalMediaPlayer.js +0 -280
- package/dist/src/components/variants/minimal/MinimalControls.d.ts.map +0 -1
- package/dist/src/components/variants/minimal/MinimalControls.js +0 -19
- package/dist/src/components/variants/minimal/MinimalLoading.d.ts.map +0 -1
- package/dist/src/components/variants/minimal/MinimalLoading.js +0 -6
- package/dist/src/components/variants/minimal/MinimalMediaPlayer.d.ts.map +0 -1
- package/dist/src/components/variants/minimal/MinimalMediaPlayer.js +0 -135
- package/dist/src/components/variants/minimal/MinimalOverlay.d.ts.map +0 -1
- package/dist/src/components/variants/minimal/MinimalOverlay.js +0 -15
- package/dist/src/components/variants/minimal/MinimalPlayButton.d.ts.map +0 -1
- package/dist/src/components/variants/minimal/MinimalPlayButton.js +0 -29
- package/dist/src/components/variants/minimal/MinimalSeekBar.d.ts.map +0 -1
- package/dist/src/components/variants/minimal/MinimalSeekBar.js +0 -73
- package/dist/src/components/variants/minimal/MinimalVolumeControl.d.ts.map +0 -1
- package/dist/src/components/variants/minimal/MinimalVolumeControl.js +0 -29
- package/dist/src/components/variants/minimal/SimpleMinimalPlayer.d.ts.map +0 -1
- package/dist/src/components/variants/minimal/SimpleMinimalPlayer.js +0 -51
- package/dist/src/components/variants/minimal/components/CenterPlayButton.d.ts.map +0 -1
- package/dist/src/components/variants/minimal/components/CenterPlayButton.js +0 -8
- package/dist/src/components/variants/minimal/components/ControlBar.d.ts.map +0 -1
- package/dist/src/components/variants/minimal/components/ControlBar.js +0 -10
- package/dist/src/components/variants/minimal/components/EnhancedSettingsMenu.d.ts.map +0 -1
- package/dist/src/components/variants/minimal/components/EnhancedSettingsMenu.js +0 -68
- package/dist/src/components/variants/minimal/components/PlaybackControls.d.ts.map +0 -1
- package/dist/src/components/variants/minimal/components/PlaybackControls.js +0 -9
- package/dist/src/components/variants/minimal/components/RightControls.d.ts.map +0 -1
- package/dist/src/components/variants/minimal/components/RightControls.js +0 -40
- package/dist/src/components/variants/minimal/components/SeekBar.d.ts.map +0 -1
- package/dist/src/components/variants/minimal/components/SeekBar.js +0 -43
- package/dist/src/components/variants/minimal/components/SettingsDropdown.d.ts.map +0 -1
- package/dist/src/components/variants/minimal/components/SettingsDropdown.js +0 -18
- package/dist/src/components/variants/minimal/components/SubtitleDisplay.d.ts.map +0 -1
- package/dist/src/components/variants/minimal/components/SubtitleDisplay.js +0 -6
- package/dist/src/components/variants/minimal/components/TimeDisplay.d.ts.map +0 -1
- package/dist/src/components/variants/minimal/components/TimeDisplay.js +0 -5
- package/dist/src/components/variants/minimal/components/VideoElement.d.ts.map +0 -1
- package/dist/src/components/variants/minimal/components/VideoElement.js +0 -4
- package/dist/src/components/variants/minimal/components/VolumeControl.d.ts.map +0 -1
- package/dist/src/components/variants/minimal/components/VolumeControl.js +0 -99
- package/dist/src/components/variants/minimal/index.d.ts.map +0 -1
- package/dist/src/components/variants/minimal/index.js +0 -8
- package/dist/src/components/video-player.d.ts.map +0 -1
- package/dist/src/components/video-player.js +0 -38
- package/dist/src/context/error-handling.d.ts.map +0 -1
- package/dist/src/context/error-handling.js +0 -300
- package/dist/src/context/media-context.d.ts.map +0 -1
- package/dist/src/context/media-context.js +0 -121
- package/dist/src/context/media-provider.d.ts.map +0 -1
- package/dist/src/context/media-provider.js +0 -164
- package/dist/src/context/media-store.d.ts.map +0 -1
- package/dist/src/context/media-store.js +0 -273
- package/dist/src/context/persistence.d.ts.map +0 -1
- package/dist/src/context/persistence.js +0 -356
- package/dist/src/core/events/event-system.d.ts.map +0 -1
- package/dist/src/core/events/event-system.js +0 -288
- package/dist/src/core/events/hooks.d.ts.map +0 -1
- package/dist/src/core/events/hooks.js +0 -198
- package/dist/src/core/events/index.d.ts.map +0 -1
- package/dist/src/core/events/index.js +0 -7
- package/dist/src/core/events/middleware.d.ts.map +0 -1
- package/dist/src/core/events/middleware.js +0 -219
- package/dist/src/core/index.d.ts.map +0 -1
- package/dist/src/core/index.js +0 -15
- package/dist/src/core/optimization/bundle-optimizer.d.ts.map +0 -1
- package/dist/src/core/optimization/bundle-optimizer.js +0 -217
- package/dist/src/core/performance/cicd.d.ts.map +0 -1
- package/dist/src/core/performance/cicd.js +0 -83
- package/dist/src/core/performance/index.d.ts.map +0 -1
- package/dist/src/core/performance/index.js +0 -14
- package/dist/src/core/performance/media-loading-optimizer.d.ts.map +0 -1
- package/dist/src/core/performance/media-loading-optimizer.js +0 -404
- package/dist/src/core/performance/performance-budgets.d.ts.map +0 -1
- package/dist/src/core/performance/performance-budgets.js +0 -326
- package/dist/src/core/performance/performance-monitor.d.ts.map +0 -1
- package/dist/src/core/performance/performance-monitor.js +0 -297
- package/dist/src/core/performance/performance-testing.d.ts.map +0 -1
- package/dist/src/core/performance/performance-testing.js +0 -314
- package/dist/src/core/plugins/base-plugin.d.ts.map +0 -1
- package/dist/src/core/plugins/base-plugin.js +0 -151
- package/dist/src/core/plugins/enhanced-plugin-system.d.ts.map +0 -1
- package/dist/src/core/plugins/enhanced-plugin-system.js +0 -305
- package/dist/src/core/plugins/examples/analytics-plugin.d.ts.map +0 -1
- package/dist/src/core/plugins/examples/analytics-plugin.js +0 -191
- package/dist/src/core/plugins/index.d.ts.map +0 -1
- package/dist/src/core/plugins/index.js +0 -9
- package/dist/src/core/plugins/registry.d.ts.map +0 -1
- package/dist/src/core/plugins/registry.js +0 -261
- package/dist/src/core/plugins/types.d.ts.map +0 -1
- package/dist/src/core/plugins/types.js +0 -31
- package/dist/src/core/plugins/utils.d.ts.map +0 -1
- package/dist/src/core/plugins/utils.js +0 -274
- package/dist/src/core/progressive-loading.d.ts.map +0 -1
- package/dist/src/core/progressive-loading.js +0 -239
- package/dist/src/core/providers/enhanced-hls-provider.d.ts.map +0 -1
- package/dist/src/core/providers/enhanced-hls-provider.js +0 -273
- package/dist/src/core/providers/service-provider.d.ts.map +0 -1
- package/dist/src/core/providers/service-provider.js +0 -105
- package/dist/src/core/utils.d.ts.map +0 -1
- package/dist/src/core/utils.js +0 -21
- package/dist/src/features/media-session/media-session-manager.d.ts.map +0 -1
- package/dist/src/features/media-session/media-session-manager.js +0 -331
- package/dist/src/features/picture-in-picture/pip-manager.d.ts.map +0 -1
- package/dist/src/features/picture-in-picture/pip-manager.js +0 -353
- package/dist/src/features/playlist/playlist-manager.d.ts.map +0 -1
- package/dist/src/features/playlist/playlist-manager.js +0 -475
- package/dist/src/features/subtitles/subtitle-manager.d.ts.map +0 -1
- package/dist/src/features/subtitles/subtitle-manager.js +0 -335
- package/dist/src/features/subtitles/subtitle-parser.d.ts.map +0 -1
- package/dist/src/features/subtitles/subtitle-parser.js +0 -217
- package/dist/src/features/thumbnails/thumbnail-generator.d.ts.map +0 -1
- package/dist/src/features/thumbnails/thumbnail-generator.js +0 -388
- package/dist/src/hooks/accessibility/index.d.ts.map +0 -1
- package/dist/src/hooks/accessibility/index.js +0 -4
- package/dist/src/hooks/accessibility/use-accessibility-preferences.d.ts.map +0 -1
- package/dist/src/hooks/accessibility/use-accessibility-preferences.js +0 -156
- package/dist/src/hooks/accessibility/use-focus-management.d.ts.map +0 -1
- package/dist/src/hooks/accessibility/use-focus-management.js +0 -142
- package/dist/src/hooks/accessibility/use-keyboard-shortcuts.d.ts.map +0 -1
- package/dist/src/hooks/accessibility/use-keyboard-shortcuts.js +0 -101
- package/dist/src/hooks/accessibility/use-screen-reader.d.ts.map +0 -1
- package/dist/src/hooks/accessibility/use-screen-reader.js +0 -148
- package/dist/src/hooks/core/index.d.ts.map +0 -1
- package/dist/src/hooks/core/index.js +0 -19
- package/dist/src/hooks/legacy.d.ts.map +0 -1
- package/dist/src/hooks/legacy.js +0 -17
- package/dist/src/hooks/use-enhanced-media-player.d.ts.map +0 -1
- package/dist/src/hooks/use-enhanced-media-player.js +0 -395
- package/dist/src/hooks/use-intelligent-preloading.d.ts.map +0 -1
- package/dist/src/hooks/use-intelligent-preloading.js +0 -258
- package/dist/src/hooks/use-keyboard-controls.d.ts.map +0 -1
- package/dist/src/hooks/use-keyboard-controls.js +0 -83
- package/dist/src/hooks/use-media-actions.d.ts.map +0 -1
- package/dist/src/hooks/use-media-actions.js +0 -121
- package/dist/src/hooks/use-media-metadata.d.ts.map +0 -1
- package/dist/src/hooks/use-media-metadata.js +0 -74
- package/dist/src/hooks/use-media-optimistic.d.ts.map +0 -1
- package/dist/src/hooks/use-media-optimistic.js +0 -205
- package/dist/src/hooks/use-media-player.d.ts.map +0 -1
- package/dist/src/hooks/use-media-player.js +0 -251
- package/dist/src/hooks/use-media-state.d.ts.map +0 -1
- package/dist/src/hooks/use-media-state.js +0 -162
- package/dist/src/hooks/use-memory-optimization.d.ts.map +0 -1
- package/dist/src/hooks/use-memory-optimization.js +0 -288
- package/dist/src/hooks/use-optimistic-controls.d.ts.map +0 -1
- package/dist/src/hooks/use-optimistic-controls.js +0 -60
- package/dist/src/hooks/use-optimized-media.d.ts.map +0 -1
- package/dist/src/hooks/use-optimized-media.js +0 -211
- package/dist/src/hooks/use-touch-gestures.d.ts.map +0 -1
- package/dist/src/hooks/use-touch-gestures.js +0 -289
- package/dist/src/hooks/useEnhancedSubtitles.d.ts.map +0 -1
- package/dist/src/hooks/useEnhancedSubtitles.js +0 -205
- package/dist/src/hooks/useKeyboardShortcuts.d.ts.map +0 -1
- package/dist/src/hooks/useKeyboardShortcuts.js +0 -59
- package/dist/src/hooks/useMediaControls.d.ts.map +0 -1
- package/dist/src/hooks/useMediaControls.js +0 -44
- package/dist/src/hooks/useScreenshot.d.ts.map +0 -1
- package/dist/src/hooks/useScreenshot.js +0 -56
- package/dist/src/hooks/useSubtitles.d.ts.map +0 -1
- package/dist/src/hooks/useSubtitles.js +0 -73
- package/dist/src/hooks/useVideoPlayer.d.ts.map +0 -1
- package/dist/src/hooks/useVideoPlayer.js +0 -184
- package/dist/src/icons/components/FullscreenIcon.d.ts.map +0 -1
- package/dist/src/icons/components/FullscreenIcon.js +0 -11
- package/dist/src/icons/components/SettingsIcon.d.ts.map +0 -1
- package/dist/src/icons/components/SettingsIcon.js +0 -11
- package/dist/src/icons/components/animated/LoadingIcon.d.ts.map +0 -1
- package/dist/src/icons/components/animated/LoadingIcon.js +0 -11
- package/dist/src/icons/components/animated/PlayPauseIcon.d.ts.map +0 -1
- package/dist/src/icons/components/animated/PlayPauseIcon.js +0 -9
- package/dist/src/icons/components/media/PauseIcon.d.ts.map +0 -1
- package/dist/src/icons/components/media/PauseIcon.js +0 -12
- package/dist/src/icons/components/media/PlayIcon.d.ts.map +0 -1
- package/dist/src/icons/components/media/PlayIcon.js +0 -12
- package/dist/src/icons/components/volume/VolumeIcon.d.ts.map +0 -1
- package/dist/src/icons/components/volume/VolumeIcon.js +0 -11
- package/dist/src/icons/components/volume/VolumeOffIcon.d.ts.map +0 -1
- package/dist/src/icons/components/volume/VolumeOffIcon.js +0 -11
- package/dist/src/icons/index.d.ts.map +0 -1
- package/dist/src/icons/index.js +0 -45
- package/dist/src/icons/provider.d.ts.map +0 -1
- package/dist/src/icons/provider.js +0 -37
- package/dist/src/icons/types.d.ts.map +0 -1
- package/dist/src/icons/types.js +0 -1
- package/dist/src/index-enhanced.d.ts.map +0 -1
- package/dist/src/index-enhanced.js +0 -16
- package/dist/src/index-legacy.d.ts.map +0 -1
- package/dist/src/index-legacy.js +0 -97
- package/dist/src/index.d.ts.map +0 -1
- package/dist/src/index.js +0 -90
- package/dist/src/index.minimal.d.ts.map +0 -1
- package/dist/src/index.minimal.js +0 -3
- package/dist/src/lib/deprecation.d.ts.map +0 -1
- package/dist/src/lib/deprecation.js +0 -31
- package/dist/src/lib/format-time.d.ts.map +0 -1
- package/dist/src/lib/format-time.js +0 -32
- package/dist/src/lib/index.d.ts.map +0 -1
- package/dist/src/lib/index.js +0 -3
- package/dist/src/lib/utils.d.ts.map +0 -1
- package/dist/src/lib/utils.js +0 -5
- package/dist/src/test/setup.d.ts.map +0 -1
- package/dist/src/test/setup.js +0 -65
- package/dist/src/types/events.d.ts.map +0 -1
- package/dist/src/types/events.js +0 -2
- package/dist/src/types/formats.d.ts.map +0 -1
- package/dist/src/types/formats.js +0 -63
- package/dist/src/types/index.d.ts.map +0 -1
- package/dist/src/types/index.js +0 -4
- package/dist/utils-Db13763z.cjs +0 -9
- package/dist/utils-Db13763z.cjs.map +0 -1
- package/dist/utils-nTO4AnHo.js +0 -2809
- package/dist/utils-nTO4AnHo.js.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/src/adapters/videojs-adapter.js +0 -350
- package/src/components/AnimateLoading.js +0 -41
- package/src/components/LoadingState.js +0 -111
- package/src/components/accessibility/keyboard-help-overlay.js +0 -90
- package/src/components/audio-player.js +0 -31
- package/src/components/basic/index.js +0 -29
- package/src/components/enhanced/advanced-features.js +0 -64
- package/src/components/enhanced/debug-panel.js +0 -94
- package/src/components/enhanced/enhanced-controls.js +0 -233
- package/src/components/enhanced/enhanced-media-player.js +0 -316
- package/src/components/enhanced/error-handling.js +0 -153
- package/src/components/enhanced/index.js +0 -10
- package/src/components/enhanced/media-player-enhanced.js +0 -250
- package/src/components/examples/basic-video-player.js +0 -16
- package/src/components/examples/custom-controls-example.js +0 -12
- package/src/components/examples/enhanced-controls-example.js +0 -18
- package/src/components/examples/enhanced-media-player-example.js +0 -13
- package/src/components/examples/loading-states-demo.js +0 -41
- package/src/components/examples/react-19-demo.js +0 -104
- package/src/components/examples/volume-orientation-demo.js +0 -31
- package/src/components/icon-demo.js +0 -16
- package/src/components/icons/index.js +0 -59
- package/src/components/icons/svg-icons/ArrowLeftIcon.js +0 -3
- package/src/components/icons/svg-icons/ArrowRightIcon.js +0 -3
- package/src/components/icons/svg-icons/AudioIcon.js +0 -4
- package/src/components/icons/svg-icons/BackwardIcon.js +0 -3
- package/src/components/icons/svg-icons/CameraIcon.js +0 -4
- package/src/components/icons/svg-icons/CheckIcon.js +0 -4
- package/src/components/icons/svg-icons/EnablePiPIcon.js +0 -5
- package/src/components/icons/svg-icons/ForwardIcon.js +0 -3
- package/src/components/icons/svg-icons/FullscreenEnterIcon.js +0 -3
- package/src/components/icons/svg-icons/FullscreenExitIcon.js +0 -3
- package/src/components/icons/svg-icons/LoadingIcon.js +0 -3
- package/src/components/icons/svg-icons/PauseIcon.js +0 -3
- package/src/components/icons/svg-icons/PlayIcon.js +0 -3
- package/src/components/icons/svg-icons/PlaybackSpeedIcon.js +0 -3
- package/src/components/icons/svg-icons/QualityIcon.js +0 -3
- package/src/components/icons/svg-icons/SettingsIcon.js +0 -3
- package/src/components/icons/svg-icons/SliderIcon.js +0 -3
- package/src/components/icons/svg-icons/SubtitleIcon.js +0 -3
- package/src/components/icons/svg-icons/SubtitleOffIcon.js +0 -3
- package/src/components/icons/svg-icons/UnPiPIcon.js +0 -5
- package/src/components/icons/svg-icons/VolumeMutedIcon.js +0 -3
- package/src/components/icons/svg-icons/VolumeOneIcon.js +0 -3
- package/src/components/icons/svg-icons/VolumeThreeIcon.js +0 -3
- package/src/components/icons/svg-icons/VolumeTwoIcon.js +0 -3
- package/src/components/legacy.js +0 -52
- package/src/components/media-metadata-display.js +0 -20
- package/src/components/media-player-audio.js +0 -18
- package/src/components/media-player-controls.js +0 -150
- package/src/components/media-player-error.js +0 -85
- package/src/components/media-player-fullscreen.js +0 -68
- package/src/components/media-player-hls.js +0 -20
- package/src/components/media-player-loading.js +0 -53
- package/src/components/media-player-play.js +0 -44
- package/src/components/media-player-root.js +0 -243
- package/src/components/media-player-seek.js +0 -92
- package/src/components/media-player-time.js +0 -57
- package/src/components/media-player-tooltip.js +0 -14
- package/src/components/media-player-video.js +0 -18
- package/src/components/media-player-volume.js +0 -88
- package/src/components/media-player.js +0 -67
- package/src/components/media-suspense.js +0 -173
- package/src/components/player-settings-form.js +0 -46
- package/src/components/react-player-wrapper.js +0 -163
- package/src/components/simple-video-player.js +0 -41
- package/src/components/ui/enhanced-seek-bar.js +0 -112
- package/src/components/ui/fullscreen-button.js +0 -21
- package/src/components/ui/media-resource-preloader.js +0 -295
- package/src/components/ui/play-button.js +0 -26
- package/src/components/ui/seek-bar.js +0 -54
- package/src/components/ui/time-display.js +0 -18
- package/src/components/ui/volume-control.js +0 -71
- package/src/components/unified/base-media-player.js +0 -104
- package/src/components/unified/media-player.js +0 -41
- package/src/components/variants/minimal/AccessibleMinimalPlayer.js +0 -322
- package/src/components/variants/minimal/EnhancedMinimalMediaPlayer.js +0 -280
- package/src/components/variants/minimal/MinimalControls.js +0 -19
- package/src/components/variants/minimal/MinimalLoading.js +0 -6
- package/src/components/variants/minimal/MinimalMediaPlayer.js +0 -135
- package/src/components/variants/minimal/MinimalOverlay.js +0 -15
- package/src/components/variants/minimal/MinimalPlayButton.js +0 -29
- package/src/components/variants/minimal/MinimalSeekBar.js +0 -73
- package/src/components/variants/minimal/MinimalVolumeControl.js +0 -29
- package/src/components/variants/minimal/SimpleMinimalPlayer.js +0 -51
- package/src/components/variants/minimal/components/CenterPlayButton.js +0 -8
- package/src/components/variants/minimal/components/ControlBar.js +0 -10
- package/src/components/variants/minimal/components/EnhancedSettingsMenu.js +0 -68
- package/src/components/variants/minimal/components/PlaybackControls.js +0 -9
- package/src/components/variants/minimal/components/RightControls.js +0 -40
- package/src/components/variants/minimal/components/SeekBar.js +0 -43
- package/src/components/variants/minimal/components/SettingsDropdown.js +0 -18
- package/src/components/variants/minimal/components/SubtitleDisplay.js +0 -6
- package/src/components/variants/minimal/components/TimeDisplay.js +0 -5
- package/src/components/variants/minimal/components/VideoElement.js +0 -4
- package/src/components/variants/minimal/components/VolumeControl.js +0 -99
- package/src/components/variants/minimal/index.js +0 -8
- package/src/components/video-player.js +0 -38
- package/src/context/error-handling.js +0 -300
- package/src/context/media-context.js +0 -121
- package/src/context/media-provider.js +0 -164
- package/src/context/media-store.js +0 -273
- package/src/context/persistence.js +0 -356
- package/src/core/events/event-system.js +0 -288
- package/src/core/events/hooks.js +0 -198
- package/src/core/events/index.js +0 -7
- package/src/core/events/middleware.js +0 -219
- package/src/core/index.js +0 -15
- package/src/core/optimization/bundle-optimizer.js +0 -217
- package/src/core/performance/cicd.js +0 -83
- package/src/core/performance/index.js +0 -14
- package/src/core/performance/media-loading-optimizer.js +0 -404
- package/src/core/performance/performance-budgets.js +0 -326
- package/src/core/performance/performance-monitor.js +0 -297
- package/src/core/performance/performance-testing.js +0 -314
- package/src/core/plugins/base-plugin.js +0 -151
- package/src/core/plugins/enhanced-plugin-system.js +0 -305
- package/src/core/plugins/examples/analytics-plugin.js +0 -191
- package/src/core/plugins/index.js +0 -9
- package/src/core/plugins/registry.js +0 -261
- package/src/core/plugins/types.js +0 -31
- package/src/core/plugins/utils.js +0 -274
- package/src/core/progressive-loading.js +0 -239
- package/src/core/providers/enhanced-hls-provider.js +0 -273
- package/src/core/providers/service-provider.js +0 -105
- package/src/core/utils.js +0 -21
- package/src/features/media-session/media-session-manager.js +0 -331
- package/src/features/picture-in-picture/pip-manager.js +0 -353
- package/src/features/playlist/playlist-manager.js +0 -475
- package/src/features/subtitles/subtitle-manager.js +0 -335
- package/src/features/subtitles/subtitle-parser.js +0 -217
- package/src/features/thumbnails/thumbnail-generator.js +0 -388
- package/src/hooks/accessibility/index.js +0 -4
- package/src/hooks/accessibility/use-accessibility-preferences.js +0 -156
- package/src/hooks/accessibility/use-focus-management.js +0 -142
- package/src/hooks/accessibility/use-keyboard-shortcuts.js +0 -101
- package/src/hooks/accessibility/use-screen-reader.js +0 -148
- package/src/hooks/core/index.js +0 -19
- package/src/hooks/legacy.js +0 -17
- package/src/hooks/use-enhanced-media-player.js +0 -395
- package/src/hooks/use-intelligent-preloading.js +0 -258
- package/src/hooks/use-keyboard-controls.js +0 -83
- package/src/hooks/use-media-actions.js +0 -121
- package/src/hooks/use-media-metadata.js +0 -74
- package/src/hooks/use-media-optimistic.js +0 -205
- package/src/hooks/use-media-player.js +0 -251
- package/src/hooks/use-media-state.js +0 -162
- package/src/hooks/use-memory-optimization.js +0 -288
- package/src/hooks/use-optimistic-controls.js +0 -60
- package/src/hooks/use-optimized-media.js +0 -211
- package/src/hooks/use-touch-gestures.js +0 -289
- package/src/hooks/useEnhancedSubtitles.js +0 -205
- package/src/hooks/useKeyboardShortcuts.js +0 -59
- package/src/hooks/useMediaControls.js +0 -44
- package/src/hooks/useScreenshot.js +0 -56
- package/src/hooks/useSubtitles.js +0 -73
- package/src/hooks/useVideoPlayer.js +0 -184
- package/src/icons/components/FullscreenIcon.js +0 -11
- package/src/icons/components/SettingsIcon.js +0 -11
- package/src/icons/components/animated/LoadingIcon.js +0 -11
- package/src/icons/components/animated/PlayPauseIcon.js +0 -9
- package/src/icons/components/media/PauseIcon.js +0 -12
- package/src/icons/components/media/PlayIcon.js +0 -12
- package/src/icons/components/volume/VolumeIcon.js +0 -11
- package/src/icons/components/volume/VolumeOffIcon.js +0 -11
- package/src/icons/index.js +0 -45
- package/src/icons/provider.js +0 -37
- package/src/icons/types.js +0 -1
- package/src/index-enhanced.js +0 -16
- package/src/index-legacy.js +0 -97
- package/src/index.js +0 -90
- package/src/index.minimal.js +0 -3
- package/src/lib/deprecation.js +0 -31
- package/src/lib/format-time.js +0 -32
- package/src/lib/index.js +0 -3
- package/src/lib/utils.js +0 -5
- package/src/test/setup.js +0 -65
- package/src/types/events.js +0 -2
- package/src/types/formats.js +0 -63
- package/src/types/index.js +0 -4
|
@@ -1,480 +0,0 @@
|
|
|
1
|
-
var v = Object.defineProperty;
|
|
2
|
-
var T = (s, e, t) => e in s ? v(s, e, { enumerable: !0, configurable: !0, writable: !0, value: t }) : s[e] = t;
|
|
3
|
-
var a = (s, e, t) => T(s, typeof e != "symbol" ? e + "" : e, t);
|
|
4
|
-
import { useRef as m, useEffect as d, useCallback as p, useMemo as H, useState as x } from "react";
|
|
5
|
-
class E {
|
|
6
|
-
constructor() {
|
|
7
|
-
a(this, "listeners", /* @__PURE__ */ new Map());
|
|
8
|
-
a(this, "eventQueue", []);
|
|
9
|
-
a(this, "isProcessing", !1);
|
|
10
|
-
a(this, "middlewares", []);
|
|
11
|
-
a(this, "eventHistory", []);
|
|
12
|
-
a(this, "maxHistorySize", 1e3);
|
|
13
|
-
}
|
|
14
|
-
// Subscribe to events
|
|
15
|
-
on(e, t, r = {}) {
|
|
16
|
-
return this.addEventListener(e, t, r);
|
|
17
|
-
}
|
|
18
|
-
// Subscribe to events (one-time)
|
|
19
|
-
once(e, t, r = {}) {
|
|
20
|
-
return this.addEventListener(e, t, { ...r, once: !0 });
|
|
21
|
-
}
|
|
22
|
-
// Subscribe to events with wildcard support
|
|
23
|
-
addEventListener(e, t, r = {}) {
|
|
24
|
-
const n = this.generateId(), o = { handler: t, options: r, id: n };
|
|
25
|
-
this.listeners.has(e) || this.listeners.set(e, []);
|
|
26
|
-
const i = this.listeners.get(e), u = r.priority || "normal", l = { high: 2, normal: 1, low: 0 }[u];
|
|
27
|
-
let h = i.length;
|
|
28
|
-
for (let c = 0; c < i.length; c++) {
|
|
29
|
-
const g = i[c];
|
|
30
|
-
if (!g) continue;
|
|
31
|
-
const w = g.options.priority || "normal";
|
|
32
|
-
if (l > { high: 2, normal: 1, low: 0 }[w]) {
|
|
33
|
-
h = c;
|
|
34
|
-
break;
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
return i.splice(h, 0, o), () => {
|
|
38
|
-
const c = i.findIndex((g) => g.id === n);
|
|
39
|
-
c !== -1 && i.splice(c, 1), i.length === 0 && this.listeners.delete(e);
|
|
40
|
-
};
|
|
41
|
-
}
|
|
42
|
-
// Remove event listener
|
|
43
|
-
removeEventListener(e, t) {
|
|
44
|
-
const r = this.listeners.get(e);
|
|
45
|
-
if (r) {
|
|
46
|
-
if (t) {
|
|
47
|
-
const n = r.findIndex((o) => o.handler === t);
|
|
48
|
-
n !== -1 && r.splice(n, 1);
|
|
49
|
-
} else
|
|
50
|
-
this.listeners.delete(e);
|
|
51
|
-
r && r.length === 0 && this.listeners.delete(e);
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
// Emit events
|
|
55
|
-
emit(e, t, r) {
|
|
56
|
-
const n = {
|
|
57
|
-
type: e,
|
|
58
|
-
timestamp: Date.now(),
|
|
59
|
-
detail: t,
|
|
60
|
-
bubbles: !0,
|
|
61
|
-
cancelable: !0,
|
|
62
|
-
defaultPrevented: !1,
|
|
63
|
-
...r
|
|
64
|
-
};
|
|
65
|
-
return this.dispatchEvent(n);
|
|
66
|
-
}
|
|
67
|
-
// Dispatch event
|
|
68
|
-
dispatchEvent(e) {
|
|
69
|
-
let t = e;
|
|
70
|
-
for (const r of this.middlewares)
|
|
71
|
-
if (t = r(t), !t)
|
|
72
|
-
return !1;
|
|
73
|
-
return this.addToHistory(t), this.eventQueue.push(t), this.isProcessing || this.processEventQueue(), !t.defaultPrevented;
|
|
74
|
-
}
|
|
75
|
-
// Process event queue with React 19 concurrent scheduling
|
|
76
|
-
processEventQueue() {
|
|
77
|
-
if (this.isProcessing) return;
|
|
78
|
-
this.isProcessing = !0;
|
|
79
|
-
const e = typeof window < "u" && "scheduler" in window ? window.scheduler.postTask : (r) => setTimeout(r, 0), t = () => {
|
|
80
|
-
if (this.eventQueue.length === 0) {
|
|
81
|
-
this.isProcessing = !1;
|
|
82
|
-
return;
|
|
83
|
-
}
|
|
84
|
-
const r = Math.min(this.eventQueue.length, 5), n = this.eventQueue.splice(0, r);
|
|
85
|
-
Promise.all(n.map((o) => this.processEvent(o).catch(console.error))).then(() => {
|
|
86
|
-
e(t);
|
|
87
|
-
}).catch(() => {
|
|
88
|
-
this.isProcessing = !1;
|
|
89
|
-
});
|
|
90
|
-
};
|
|
91
|
-
e(t);
|
|
92
|
-
}
|
|
93
|
-
// Process individual event
|
|
94
|
-
async processEvent(e) {
|
|
95
|
-
const { type: t } = e, r = this.listeners.get(t) || [], n = [];
|
|
96
|
-
for (const [u, l] of this.listeners.entries())
|
|
97
|
-
u.includes("*") && this.matchPattern(t, u) && n.push(...l);
|
|
98
|
-
const o = [...r, ...n].sort((u, l) => {
|
|
99
|
-
const h = { high: 2, normal: 1, low: 0 }[u.options.priority || "normal"];
|
|
100
|
-
return { high: 2, normal: 1, low: 0 }[l.options.priority || "normal"] - h;
|
|
101
|
-
}), i = [];
|
|
102
|
-
for (const u of o)
|
|
103
|
-
if (!(u.options.filter && !u.options.filter(e)))
|
|
104
|
-
try {
|
|
105
|
-
if (await Promise.resolve(u.handler(e)), u.options.once && i.push(u.id), e.defaultPrevented && !e.bubbles)
|
|
106
|
-
break;
|
|
107
|
-
} catch (l) {
|
|
108
|
-
console.error(`Error in event handler for ${t}:`, l), console.error(`Event handler error for ${t}:`, l);
|
|
109
|
-
}
|
|
110
|
-
for (const u of i)
|
|
111
|
-
for (const [l, h] of this.listeners.entries()) {
|
|
112
|
-
const c = h.findIndex((g) => g.id === u);
|
|
113
|
-
if (c !== -1) {
|
|
114
|
-
h.splice(c, 1), h.length === 0 && this.listeners.delete(l);
|
|
115
|
-
break;
|
|
116
|
-
}
|
|
117
|
-
}
|
|
118
|
-
}
|
|
119
|
-
// Add middleware
|
|
120
|
-
use(e) {
|
|
121
|
-
return this.middlewares.push(e), () => {
|
|
122
|
-
const t = this.middlewares.indexOf(e);
|
|
123
|
-
t !== -1 && this.middlewares.splice(t, 1);
|
|
124
|
-
};
|
|
125
|
-
}
|
|
126
|
-
// Event history management
|
|
127
|
-
addToHistory(e) {
|
|
128
|
-
this.eventHistory.push(e), this.eventHistory.length > this.maxHistorySize && this.eventHistory.shift();
|
|
129
|
-
}
|
|
130
|
-
// Get event history
|
|
131
|
-
getHistory(e) {
|
|
132
|
-
return e ? this.eventHistory.filter(e) : [...this.eventHistory];
|
|
133
|
-
}
|
|
134
|
-
// Clear event history
|
|
135
|
-
clearHistory() {
|
|
136
|
-
this.eventHistory = [];
|
|
137
|
-
}
|
|
138
|
-
// Pattern matching for wildcards
|
|
139
|
-
matchPattern(e, t) {
|
|
140
|
-
return new RegExp(
|
|
141
|
-
"^" + t.replace(/\*/g, ".*").replace(/\?/g, ".") + "$"
|
|
142
|
-
).test(e);
|
|
143
|
-
}
|
|
144
|
-
// Generate unique ID
|
|
145
|
-
generateId() {
|
|
146
|
-
return `event_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`;
|
|
147
|
-
}
|
|
148
|
-
// Get listener count
|
|
149
|
-
getListenerCount(e) {
|
|
150
|
-
return e ? this.listeners.get(e)?.length || 0 : Array.from(this.listeners.values()).reduce((t, r) => t + r.length, 0);
|
|
151
|
-
}
|
|
152
|
-
// Get all event types
|
|
153
|
-
getEventTypes() {
|
|
154
|
-
return Array.from(this.listeners.keys());
|
|
155
|
-
}
|
|
156
|
-
// Clear all listeners
|
|
157
|
-
removeAllListeners(e) {
|
|
158
|
-
e ? this.listeners.delete(e) : this.listeners.clear();
|
|
159
|
-
}
|
|
160
|
-
// Destroy event bus
|
|
161
|
-
destroy() {
|
|
162
|
-
this.listeners.clear(), this.eventQueue = [], this.middlewares = [], this.eventHistory = [], this.isProcessing = !1;
|
|
163
|
-
}
|
|
164
|
-
}
|
|
165
|
-
const k = new E();
|
|
166
|
-
class S {
|
|
167
|
-
constructor(e, t) {
|
|
168
|
-
a(this, "eventBus");
|
|
169
|
-
a(this, "element");
|
|
170
|
-
a(this, "delegatedEvents", /* @__PURE__ */ new Set());
|
|
171
|
-
this.eventBus = e, this.element = t;
|
|
172
|
-
}
|
|
173
|
-
// Delegate DOM events to event bus
|
|
174
|
-
delegate(e, t) {
|
|
175
|
-
if (this.delegatedEvents.has(e)) return;
|
|
176
|
-
const r = (n) => {
|
|
177
|
-
this.eventBus.emit(t || `dom:${e}`, {
|
|
178
|
-
originalEvent: n,
|
|
179
|
-
target: n.target?.tagName.toLowerCase(),
|
|
180
|
-
currentTarget: n.currentTarget?.tagName.toLowerCase()
|
|
181
|
-
});
|
|
182
|
-
};
|
|
183
|
-
this.element.addEventListener(e, r, { passive: !0 }), this.delegatedEvents.add(e);
|
|
184
|
-
}
|
|
185
|
-
// Setup common delegations
|
|
186
|
-
setupCommonDelegations() {
|
|
187
|
-
this.delegate("click", "user:click"), this.delegate("mouseenter", "user:hover"), this.delegate("mouseleave", "user:hover"), this.delegate("focus", "user:focus"), this.delegate("blur", "user:focus"), this.delegate("keydown", "user:keyboard"), this.delegate("keyup", "user:keyboard");
|
|
188
|
-
}
|
|
189
|
-
destroy() {
|
|
190
|
-
this.delegatedEvents.clear();
|
|
191
|
-
}
|
|
192
|
-
}
|
|
193
|
-
const f = {
|
|
194
|
-
// Logging middleware
|
|
195
|
-
logger: (s = "[Event]") => (e) => (process.env.NODE_ENV === "development" && console.log(`${s} ${e.type}`, e.detail), e),
|
|
196
|
-
// Throttling middleware
|
|
197
|
-
throttle: (s, e = 100) => {
|
|
198
|
-
const t = /* @__PURE__ */ new Map();
|
|
199
|
-
return (r) => {
|
|
200
|
-
if (s.includes(r.type)) {
|
|
201
|
-
const n = t.get(r.type) || 0, o = r.timestamp;
|
|
202
|
-
if (o - n < e)
|
|
203
|
-
return null;
|
|
204
|
-
t.set(r.type, o);
|
|
205
|
-
}
|
|
206
|
-
return r;
|
|
207
|
-
};
|
|
208
|
-
},
|
|
209
|
-
// Debouncing middleware
|
|
210
|
-
debounce: (s, e = 100) => {
|
|
211
|
-
const t = /* @__PURE__ */ new Map(), r = /* @__PURE__ */ new Map();
|
|
212
|
-
return (n) => {
|
|
213
|
-
if (s.includes(n.type)) {
|
|
214
|
-
const o = t.get(n.type);
|
|
215
|
-
o && clearTimeout(o), r.set(n.type, n);
|
|
216
|
-
const i = setTimeout(() => {
|
|
217
|
-
r.get(n.type) && (r.delete(n.type), t.delete(n.type));
|
|
218
|
-
}, e);
|
|
219
|
-
return t.set(n.type, i), null;
|
|
220
|
-
}
|
|
221
|
-
return n;
|
|
222
|
-
};
|
|
223
|
-
},
|
|
224
|
-
// Filtering middleware
|
|
225
|
-
filter: (s) => (e) => s(e) ? e : null,
|
|
226
|
-
// Event transformation middleware
|
|
227
|
-
transform: (s) => (e) => {
|
|
228
|
-
try {
|
|
229
|
-
return s(e);
|
|
230
|
-
} catch (t) {
|
|
231
|
-
return console.error("Error in event transformer:", t), e;
|
|
232
|
-
}
|
|
233
|
-
},
|
|
234
|
-
// Performance monitoring middleware
|
|
235
|
-
performance: () => {
|
|
236
|
-
const s = /* @__PURE__ */ new Map();
|
|
237
|
-
return (e) => {
|
|
238
|
-
const t = performance.now(), r = s.get(e.type) || { count: 0, totalTime: 0 };
|
|
239
|
-
if (r.count++, r.totalTime += performance.now() - t, s.set(e.type, r), r.count % 100 === 0) {
|
|
240
|
-
const n = r.totalTime / r.count;
|
|
241
|
-
console.log(`Event ${e.type}: ${r.count} calls, avg ${n.toFixed(2)}ms`);
|
|
242
|
-
}
|
|
243
|
-
return e;
|
|
244
|
-
};
|
|
245
|
-
},
|
|
246
|
-
// Error handling middleware
|
|
247
|
-
errorHandler: (s) => (e) => {
|
|
248
|
-
try {
|
|
249
|
-
if (!e.type || typeof e.type != "string")
|
|
250
|
-
throw new Error("Invalid event: missing or invalid type");
|
|
251
|
-
if (!e.timestamp || typeof e.timestamp != "number")
|
|
252
|
-
throw new Error("Invalid event: missing or invalid timestamp");
|
|
253
|
-
return e;
|
|
254
|
-
} catch (t) {
|
|
255
|
-
return s ? s(t, e) : console.error("Event validation error:", t), null;
|
|
256
|
-
}
|
|
257
|
-
},
|
|
258
|
-
// Security middleware (prevent certain events or sanitize data)
|
|
259
|
-
security: (s = {}) => (e) => {
|
|
260
|
-
const { blockedEventTypes: t = [], sanitizeDetail: r = !0, maxDetailSize: n = 1e4 } = s;
|
|
261
|
-
if (t.includes(e.type))
|
|
262
|
-
return console.warn(`Blocked event type: ${e.type}`), null;
|
|
263
|
-
if (r && e.detail)
|
|
264
|
-
try {
|
|
265
|
-
JSON.stringify(e.detail).length > n && (console.warn(`Event detail too large, truncating: ${e.type}`), e.detail = { ...e.detail, _truncated: !0 });
|
|
266
|
-
} catch {
|
|
267
|
-
console.warn(`Failed to serialize event detail: ${e.type}`), e.detail = { _serializationError: !0 };
|
|
268
|
-
}
|
|
269
|
-
return e;
|
|
270
|
-
},
|
|
271
|
-
// Conditional middleware
|
|
272
|
-
when: (s, e) => (t) => s(t) ? e(t) : t,
|
|
273
|
-
// Chain multiple middleware
|
|
274
|
-
chain: (...s) => (e) => {
|
|
275
|
-
let t = e;
|
|
276
|
-
for (const r of s) {
|
|
277
|
-
if (t === null) break;
|
|
278
|
-
t = r(t);
|
|
279
|
-
}
|
|
280
|
-
return t;
|
|
281
|
-
}
|
|
282
|
-
};
|
|
283
|
-
class L {
|
|
284
|
-
constructor() {
|
|
285
|
-
a(this, "middlewares", []);
|
|
286
|
-
}
|
|
287
|
-
// Add middleware
|
|
288
|
-
use(e) {
|
|
289
|
-
return this.middlewares.push(e), this;
|
|
290
|
-
}
|
|
291
|
-
// Add logging
|
|
292
|
-
log(e) {
|
|
293
|
-
return this.use(f.logger(e));
|
|
294
|
-
}
|
|
295
|
-
// Add throttling
|
|
296
|
-
throttle(e, t) {
|
|
297
|
-
return this.use(f.throttle(e, t));
|
|
298
|
-
}
|
|
299
|
-
// Add debouncing
|
|
300
|
-
debounce(e, t) {
|
|
301
|
-
return this.use(f.debounce(e, t));
|
|
302
|
-
}
|
|
303
|
-
// Add filtering
|
|
304
|
-
filter(e) {
|
|
305
|
-
return this.use(f.filter(e));
|
|
306
|
-
}
|
|
307
|
-
// Add transformation
|
|
308
|
-
transform(e) {
|
|
309
|
-
return this.use(f.transform(e));
|
|
310
|
-
}
|
|
311
|
-
// Add performance monitoring
|
|
312
|
-
performance() {
|
|
313
|
-
return this.use(f.performance());
|
|
314
|
-
}
|
|
315
|
-
// Add error handling
|
|
316
|
-
errorHandler(e) {
|
|
317
|
-
return this.use(f.errorHandler(e));
|
|
318
|
-
}
|
|
319
|
-
// Add security
|
|
320
|
-
security(e) {
|
|
321
|
-
return this.use(f.security(e));
|
|
322
|
-
}
|
|
323
|
-
// Add conditional middleware
|
|
324
|
-
when(e, t) {
|
|
325
|
-
return this.use(f.when(e, t));
|
|
326
|
-
}
|
|
327
|
-
// Build the final middleware
|
|
328
|
-
build() {
|
|
329
|
-
return f.chain(...this.middlewares);
|
|
330
|
-
}
|
|
331
|
-
}
|
|
332
|
-
const y = () => new L(), P = {
|
|
333
|
-
// Development middleware stack
|
|
334
|
-
development: () => y().log("[Dev Event]").performance().errorHandler().build(),
|
|
335
|
-
// Production middleware stack
|
|
336
|
-
production: () => y().security().errorHandler().throttle(["media:timeupdate", "user:mousemove"], 16).build(),
|
|
337
|
-
// Testing middleware stack
|
|
338
|
-
testing: () => y().errorHandler((s, e) => {
|
|
339
|
-
throw new Error(`Event error in test: ${s.message} for event ${e.type}`);
|
|
340
|
-
}).build()
|
|
341
|
-
};
|
|
342
|
-
function D(s) {
|
|
343
|
-
const e = m(null);
|
|
344
|
-
return e.current || (e.current = s || new E()), d(() => {
|
|
345
|
-
const t = e.current;
|
|
346
|
-
return () => {
|
|
347
|
-
t.destroy();
|
|
348
|
-
};
|
|
349
|
-
}, []), e.current;
|
|
350
|
-
}
|
|
351
|
-
function b(s, e, t, r, n) {
|
|
352
|
-
const o = m(t), i = m(r);
|
|
353
|
-
d(() => {
|
|
354
|
-
o.current = t, i.current = r;
|
|
355
|
-
}), d(() => s.on(e, o.current, i.current), [s, e, ...n || []]);
|
|
356
|
-
}
|
|
357
|
-
function I(s) {
|
|
358
|
-
return p((e, t, r) => s.emit(e, t, r), [s]);
|
|
359
|
-
}
|
|
360
|
-
function R(s, e, t, r) {
|
|
361
|
-
b(s, e, t, { once: !0 }, r);
|
|
362
|
-
}
|
|
363
|
-
function C(s) {
|
|
364
|
-
const e = m([]), t = p((n, o, i) => {
|
|
365
|
-
const u = s.on(n, o, i);
|
|
366
|
-
return e.current.push(u), u;
|
|
367
|
-
}, [s]), r = p(() => {
|
|
368
|
-
e.current.forEach((n) => n()), e.current = [];
|
|
369
|
-
}, []);
|
|
370
|
-
return d(() => r, [r]), {
|
|
371
|
-
on: t,
|
|
372
|
-
removeAll: r
|
|
373
|
-
};
|
|
374
|
-
}
|
|
375
|
-
function Q(s, e, t = 100) {
|
|
376
|
-
const r = m([]);
|
|
377
|
-
d(() => s.addEventListener("*", (i) => {
|
|
378
|
-
(!e || e(i)) && (r.current.push(i), r.current.length > t && r.current.shift());
|
|
379
|
-
}), [s, e, t]);
|
|
380
|
-
const n = p(() => {
|
|
381
|
-
r.current = [];
|
|
382
|
-
}, []);
|
|
383
|
-
return {
|
|
384
|
-
history: r.current,
|
|
385
|
-
clearHistory: n
|
|
386
|
-
};
|
|
387
|
-
}
|
|
388
|
-
function N(s) {
|
|
389
|
-
const e = m(/* @__PURE__ */ new Map());
|
|
390
|
-
d(() => {
|
|
391
|
-
const n = (i) => {
|
|
392
|
-
const u = e.current.get(i.type) || {
|
|
393
|
-
count: 0,
|
|
394
|
-
lastTimestamp: 0,
|
|
395
|
-
frequency: 0
|
|
396
|
-
};
|
|
397
|
-
if (u.count++, u.lastTimestamp > 0) {
|
|
398
|
-
const l = (i.timestamp - u.lastTimestamp) / 1e3;
|
|
399
|
-
u.frequency = l > 0 ? 1 / l : 0;
|
|
400
|
-
}
|
|
401
|
-
u.lastTimestamp = i.timestamp, e.current.set(i.type, u);
|
|
402
|
-
};
|
|
403
|
-
return s.addEventListener("*", n);
|
|
404
|
-
}, [s]);
|
|
405
|
-
const t = p(() => Object.fromEntries(e.current.entries()), []), r = p(() => {
|
|
406
|
-
e.current.clear();
|
|
407
|
-
}, []);
|
|
408
|
-
return {
|
|
409
|
-
getMetrics: t,
|
|
410
|
-
resetMetrics: r
|
|
411
|
-
};
|
|
412
|
-
}
|
|
413
|
-
function O(s, e = {}) {
|
|
414
|
-
const { logEvents: t = !0, logMetrics: r = !1, filterEventTypes: n } = e;
|
|
415
|
-
d(() => t ? s.addEventListener("*", (i) => {
|
|
416
|
-
n && !n.includes(i.type) || (console.group(`🎯 Event: ${i.type}`), console.log("Timestamp:", new Date(i.timestamp).toISOString()), console.log("Detail:", i.detail), console.log("Bubbles:", i.bubbles), console.log("Cancelable:", i.cancelable), console.groupEnd());
|
|
417
|
-
}) : void 0, [s, t, n]), d(() => {
|
|
418
|
-
if (!r) return;
|
|
419
|
-
const o = setInterval(() => {
|
|
420
|
-
const i = s.getListenerCount(), u = s.getEventTypes();
|
|
421
|
-
console.group("📊 Event Metrics"), console.log("Total Listeners:", i), console.log("Event Types:", u.length), console.log("Active Types:", u), console.groupEnd();
|
|
422
|
-
}, 5e3);
|
|
423
|
-
return () => clearInterval(o);
|
|
424
|
-
}, [s, r]);
|
|
425
|
-
}
|
|
426
|
-
function A(s, e, t, r, n, o) {
|
|
427
|
-
const i = H(() => typeof r == "function" ? r() : r, [r, ...o || []]);
|
|
428
|
-
d(() => i ? s.on(e, t, n) : void 0, [s, e, i, ...o || []]);
|
|
429
|
-
}
|
|
430
|
-
function _(s, e, t) {
|
|
431
|
-
const [r, n] = x(e);
|
|
432
|
-
return d(() => {
|
|
433
|
-
const o = [];
|
|
434
|
-
return Object.entries(t).forEach(([i, u]) => {
|
|
435
|
-
const l = s.addEventListener(i, (h) => {
|
|
436
|
-
n((c) => u(h.detail, c));
|
|
437
|
-
});
|
|
438
|
-
o.push(l);
|
|
439
|
-
}), () => {
|
|
440
|
-
o.forEach((i) => i());
|
|
441
|
-
};
|
|
442
|
-
}, [s, t]), r;
|
|
443
|
-
}
|
|
444
|
-
function z(s, e, t, r) {
|
|
445
|
-
const n = m(void 0);
|
|
446
|
-
b(
|
|
447
|
-
s,
|
|
448
|
-
e,
|
|
449
|
-
p((o) => {
|
|
450
|
-
typeof n.current == "function" && n.current(), n.current = t(o.detail);
|
|
451
|
-
}, r || []),
|
|
452
|
-
void 0,
|
|
453
|
-
r
|
|
454
|
-
), d(() => () => {
|
|
455
|
-
typeof n.current == "function" && n.current();
|
|
456
|
-
}, []);
|
|
457
|
-
}
|
|
458
|
-
const q = "1.0.0";
|
|
459
|
-
export {
|
|
460
|
-
E,
|
|
461
|
-
L as M,
|
|
462
|
-
q as a,
|
|
463
|
-
S as b,
|
|
464
|
-
y as c,
|
|
465
|
-
k as d,
|
|
466
|
-
f as e,
|
|
467
|
-
P as f,
|
|
468
|
-
b as g,
|
|
469
|
-
I as h,
|
|
470
|
-
R as i,
|
|
471
|
-
C as j,
|
|
472
|
-
Q as k,
|
|
473
|
-
N as l,
|
|
474
|
-
O as m,
|
|
475
|
-
A as n,
|
|
476
|
-
_ as o,
|
|
477
|
-
z as p,
|
|
478
|
-
D as u
|
|
479
|
-
};
|
|
480
|
-
//# sourceMappingURL=core-events-B5W_j8yU.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"core-events-B5W_j8yU.js","sources":["../src/core/events/event-system.ts","../src/core/events/middleware.ts","../src/core/events/hooks.ts","../src/core/events/index.ts"],"sourcesContent":["// Event system types\nexport interface MediaPlayerEvent {\n type: string\n timestamp: number\n target?: string\n detail?: any\n bubbles?: boolean\n cancelable?: boolean\n defaultPrevented?: boolean\n}\n\nexport type EventHandler<T = any> = (event: MediaPlayerEvent & { detail: T }) => void\nexport type EventUnsubscriber = () => void\n\nexport interface EventOptions {\n once?: boolean\n passive?: boolean\n priority?: 'high' | 'normal' | 'low'\n filter?: (event: MediaPlayerEvent) => boolean\n}\n\n// Event categories for organization\nexport type EventCategory = \n | 'media' // Media playback events\n | 'user' // User interaction events \n | 'system' // System/internal events\n | 'plugin' // Plugin events\n | 'error' // Error events\n | 'performance' // Performance events\n\n// Standard media events\nexport interface MediaEvents {\n // Playback events\n 'media:loadstart': { src: string }\n 'media:loadeddata': { duration: number }\n 'media:canplay': {}\n 'media:canplaythrough': {}\n 'media:play': { currentTime: number }\n 'media:pause': { currentTime: number }\n 'media:ended': { duration: number }\n 'media:seeking': { currentTime: number, targetTime: number }\n 'media:seeked': { currentTime: number, previousTime: number }\n 'media:timeupdate': { currentTime: number, duration: number }\n 'media:durationchange': { duration: number }\n 'media:volumechange': { volume: number, muted: boolean }\n 'media:ratechange': { playbackRate: number }\n \n // Loading events\n 'media:loadedmetadata': { src: string }\n 'media:progress': { buffered: TimeRanges }\n 'media:suspend': {}\n 'media:abort': {}\n 'media:error': { error: Error }\n 'media:stalled': {}\n 'media:waiting': {}\n \n // User interaction events \n 'user:click': { x: number, y: number, element: string }\n 'user:hover': { element: string }\n 'user:focus': { element: string }\n 'user:keyboard': { key: string, code: string, altKey: boolean, ctrlKey: boolean, shiftKey: boolean }\n 'user:gesture': { type: string, data: any }\n \n // System events\n 'system:ready': {}\n 'system:resize': { width: number, height: number }\n 'system:fullscreen': { isFullscreen: boolean }\n 'system:pip': { isPictureInPicture: boolean }\n 'system:visibility': { isVisible: boolean }\n \n // Plugin events\n 'plugin:loaded': { name: string }\n 'plugin:enabled': { name: string }\n 'plugin:disabled': { name: string }\n 'plugin:error': { name: string, error: Error }\n \n // Performance events\n 'performance:fps': { fps: number }\n 'performance:memory': { used: number, total: number }\n 'performance:load': { loadTime: number }\n}\n\n// Event bus implementation\nexport class EventBus {\n private listeners = new Map<string, Array<{\n handler: EventHandler\n options: EventOptions\n id: string\n }>>()\n \n private eventQueue: MediaPlayerEvent[] = []\n private isProcessing = false\n private middlewares: Array<(event: MediaPlayerEvent) => MediaPlayerEvent | null> = []\n private eventHistory: MediaPlayerEvent[] = []\n private maxHistorySize = 1000\n\n // Subscribe to events\n on<K extends keyof MediaEvents>(\n type: K,\n handler: EventHandler<MediaEvents[K]>,\n options: EventOptions = {}\n ): EventUnsubscriber {\n return this.addEventListener(type, handler as EventHandler, options)\n }\n\n // Subscribe to events (one-time)\n once<K extends keyof MediaEvents>(\n type: K,\n handler: EventHandler<MediaEvents[K]>,\n options: EventOptions = {}\n ): EventUnsubscriber {\n return this.addEventListener(type, handler as EventHandler, { ...options, once: true })\n }\n\n // Subscribe to events with wildcard support\n addEventListener(\n type: string,\n handler: EventHandler,\n options: EventOptions = {}\n ): EventUnsubscriber {\n const id = this.generateId()\n const listener = { handler, options, id }\n\n if (!this.listeners.has(type)) {\n this.listeners.set(type, [])\n }\n\n const listeners = this.listeners.get(type)!\n \n // Insert based on priority\n const priority = options.priority || 'normal'\n const priorityValue = { high: 2, normal: 1, low: 0 }[priority]\n \n let insertIndex = listeners.length\n for (let i = 0; i < listeners.length; i++) {\n const listener = listeners[i]\n if (!listener) continue\n const listenerPriority = listener.options.priority || 'normal'\n if (priorityValue > { high: 2, normal: 1, low: 0 }[listenerPriority]) {\n insertIndex = i\n break\n }\n }\n \n listeners.splice(insertIndex, 0, listener)\n\n // Return unsubscriber\n return () => {\n const index = listeners.findIndex(l => l.id === id)\n if (index !== -1) {\n listeners.splice(index, 1)\n }\n if (listeners.length === 0) {\n this.listeners.delete(type)\n }\n }\n }\n\n // Remove event listener\n removeEventListener(type: string, handler?: EventHandler): void {\n const listeners = this.listeners.get(type)\n if (!listeners) return\n\n if (handler) {\n const index = listeners.findIndex(l => l.handler === handler)\n if (index !== -1) {\n listeners.splice(index, 1)\n }\n } else {\n this.listeners.delete(type)\n }\n\n if (listeners && listeners.length === 0) {\n this.listeners.delete(type)\n }\n }\n\n // Emit events\n emit<K extends keyof MediaEvents>(\n type: K,\n detail?: MediaEvents[K],\n options?: Partial<MediaPlayerEvent>\n ): boolean {\n const event: MediaPlayerEvent = {\n type,\n timestamp: Date.now(),\n detail,\n bubbles: true,\n cancelable: true,\n defaultPrevented: false,\n ...options\n }\n\n return this.dispatchEvent(event)\n }\n\n // Dispatch event\n dispatchEvent(event: MediaPlayerEvent): boolean {\n // Apply middlewares\n let processedEvent: MediaPlayerEvent | null = event\n for (const middleware of this.middlewares) {\n processedEvent = middleware(processedEvent)\n if (!processedEvent) {\n return false // Event was cancelled by middleware\n }\n }\n\n // Add to history\n this.addToHistory(processedEvent)\n\n // Queue event for processing\n this.eventQueue.push(processedEvent)\n \n if (!this.isProcessing) {\n this.processEventQueue()\n }\n\n return !processedEvent.defaultPrevented\n }\n\n // Process event queue with React 19 concurrent scheduling\n private processEventQueue(): void {\n if (this.isProcessing) return\n\n this.isProcessing = true\n\n // Use scheduler for non-blocking event processing\n const schedule = (typeof window !== 'undefined' && 'scheduler' in window)\n ? (window as any).scheduler.postTask\n : (cb: () => void) => setTimeout(cb, 0)\n\n const processNext = () => {\n if (this.eventQueue.length === 0) {\n this.isProcessing = false\n return\n }\n\n const batchSize = Math.min(this.eventQueue.length, 5) // Process max 5 events per frame\n const events = this.eventQueue.splice(0, batchSize)\n\n // Process events in parallel using Promise.all\n Promise.all(events.map(event => this.processEvent(event).catch(console.error)))\n .then(() => {\n // Schedule next batch in next frame\n schedule(processNext)\n })\n .catch(() => {\n this.isProcessing = false\n })\n }\n\n schedule(processNext)\n }\n\n // Process individual event\n private async processEvent(event: MediaPlayerEvent): Promise<void> {\n const { type } = event\n\n // Get exact matches\n const exactListeners = this.listeners.get(type) || []\n \n // Get wildcard matches\n const wildcardListeners: typeof exactListeners = []\n for (const [pattern, listeners] of this.listeners.entries()) {\n if (pattern.includes('*') && this.matchPattern(type, pattern)) {\n wildcardListeners.push(...listeners)\n }\n }\n\n // Combine and sort by priority\n const allListeners = [...exactListeners, ...wildcardListeners]\n .sort((a, b) => {\n const priorityA = { high: 2, normal: 1, low: 0 }[a.options.priority || 'normal']\n const priorityB = { high: 2, normal: 1, low: 0 }[b.options.priority || 'normal']\n return priorityB - priorityA\n })\n\n // Execute listeners\n const listenersToRemove: string[] = []\n\n for (const listener of allListeners) {\n // Apply filter if present\n if (listener.options.filter && !listener.options.filter(event)) {\n continue\n }\n\n try {\n // Execute handler\n await Promise.resolve(listener.handler(event as any))\n\n // Mark for removal if once\n if (listener.options.once) {\n listenersToRemove.push(listener.id)\n }\n\n // Stop propagation if event was cancelled\n if (event.defaultPrevented && !event.bubbles) {\n break\n }\n } catch (error) {\n console.error(`Error in event handler for ${type}:`, error)\n \n // Log error instead\n console.error(`Event handler error for ${type}:`, error)\n }\n }\n\n // Remove one-time listeners\n for (const id of listenersToRemove) {\n for (const [eventType, listeners] of this.listeners.entries()) {\n const index = listeners.findIndex(l => l.id === id)\n if (index !== -1) {\n listeners.splice(index, 1)\n if (listeners.length === 0) {\n this.listeners.delete(eventType)\n }\n break\n }\n }\n }\n }\n\n // Add middleware\n use(middleware: (event: MediaPlayerEvent) => MediaPlayerEvent | null): () => void {\n this.middlewares.push(middleware)\n return () => {\n const index = this.middlewares.indexOf(middleware)\n if (index !== -1) {\n this.middlewares.splice(index, 1)\n }\n }\n }\n\n // Event history management\n private addToHistory(event: MediaPlayerEvent): void {\n this.eventHistory.push(event)\n if (this.eventHistory.length > this.maxHistorySize) {\n this.eventHistory.shift()\n }\n }\n\n // Get event history\n getHistory(filter?: (event: MediaPlayerEvent) => boolean): MediaPlayerEvent[] {\n return filter ? this.eventHistory.filter(filter) : [...this.eventHistory]\n }\n\n // Clear event history\n clearHistory(): void {\n this.eventHistory = []\n }\n\n // Pattern matching for wildcards\n private matchPattern(eventType: string, pattern: string): boolean {\n const regex = new RegExp(\n '^' + pattern.replace(/\\*/g, '.*').replace(/\\?/g, '.') + '$'\n )\n return regex.test(eventType)\n }\n\n // Generate unique ID\n private generateId(): string {\n return `event_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`\n }\n\n // Get listener count\n getListenerCount(type?: string): number {\n if (type) {\n return this.listeners.get(type)?.length || 0\n }\n return Array.from(this.listeners.values()).reduce((sum, listeners) => sum + listeners.length, 0)\n }\n\n // Get all event types\n getEventTypes(): string[] {\n return Array.from(this.listeners.keys())\n }\n\n // Clear all listeners\n removeAllListeners(type?: string): void {\n if (type) {\n this.listeners.delete(type)\n } else {\n this.listeners.clear()\n }\n }\n\n // Destroy event bus\n destroy(): void {\n this.listeners.clear()\n this.eventQueue = []\n this.middlewares = []\n this.eventHistory = []\n this.isProcessing = false\n }\n}\n\n// Default event bus instance\nexport const defaultEventBus = new EventBus()\n\n// Event delegation helper\nexport class EventDelegator {\n private eventBus: EventBus\n private element: HTMLElement\n private delegatedEvents = new Set<string>()\n\n constructor(eventBus: EventBus, element: HTMLElement) {\n this.eventBus = eventBus\n this.element = element\n }\n\n // Delegate DOM events to event bus\n delegate(domEvent: string, mediaEvent?: string): void {\n if (this.delegatedEvents.has(domEvent)) return\n\n const handler = (e: Event) => {\n this.eventBus.emit(mediaEvent || `dom:${domEvent}` as any, {\n originalEvent: e,\n target: (e.target as HTMLElement)?.tagName.toLowerCase(),\n currentTarget: (e.currentTarget as HTMLElement)?.tagName.toLowerCase()\n })\n }\n\n this.element.addEventListener(domEvent, handler, { passive: true })\n this.delegatedEvents.add(domEvent)\n }\n\n // Setup common delegations\n setupCommonDelegations(): void {\n this.delegate('click', 'user:click')\n this.delegate('mouseenter', 'user:hover')\n this.delegate('mouseleave', 'user:hover')\n this.delegate('focus', 'user:focus')\n this.delegate('blur', 'user:focus')\n this.delegate('keydown', 'user:keyboard')\n this.delegate('keyup', 'user:keyboard')\n }\n\n destroy(): void {\n this.delegatedEvents.clear()\n }\n}\n\n","import type { MediaPlayerEvent } from './event-system'\n\n// Middleware function type\nexport type EventMiddleware = (event: MediaPlayerEvent) => MediaPlayerEvent | null\n\n// Common middleware implementations\nexport const eventMiddlewares = {\n // Logging middleware\n logger: (prefix = '[Event]'): EventMiddleware => (event) => {\n if (process.env.NODE_ENV === 'development') {\n console.log(`${prefix} ${event.type}`, event.detail)\n }\n return event\n },\n\n // Throttling middleware\n throttle: (eventTypes: string[], delay = 100): EventMiddleware => {\n const lastTimes = new Map<string, number>()\n \n return (event) => {\n if (eventTypes.includes(event.type)) {\n const lastTime = lastTimes.get(event.type) || 0\n const now = event.timestamp\n \n if (now - lastTime < delay) {\n return null // Throttle this event\n }\n \n lastTimes.set(event.type, now)\n }\n \n return event\n }\n },\n\n // Debouncing middleware\n debounce: (eventTypes: string[], delay = 100): EventMiddleware => {\n const timeouts = new Map<string, NodeJS.Timeout>()\n const eventQueue = new Map<string, MediaPlayerEvent>()\n \n return (event) => {\n if (eventTypes.includes(event.type)) {\n // Clear existing timeout\n const existingTimeout = timeouts.get(event.type)\n if (existingTimeout) {\n clearTimeout(existingTimeout)\n }\n \n // Store the latest event\n eventQueue.set(event.type, event)\n \n // Set new timeout\n const timeout = setTimeout(() => {\n const queuedEvent = eventQueue.get(event.type)\n if (queuedEvent) {\n // Process the debounced event\n // Note: This is a simplified approach - in a real implementation,\n // you'd need to re-inject the event into the processing pipeline\n eventQueue.delete(event.type)\n timeouts.delete(event.type)\n }\n }, delay)\n \n timeouts.set(event.type, timeout)\n \n return null // Don't process immediately\n }\n \n return event\n }\n },\n\n // Filtering middleware\n filter: (predicate: (event: MediaPlayerEvent) => boolean): EventMiddleware => (event) => {\n return predicate(event) ? event : null\n },\n\n // Event transformation middleware\n transform: (transformer: (event: MediaPlayerEvent) => MediaPlayerEvent): EventMiddleware => (event) => {\n try {\n return transformer(event)\n } catch (error) {\n console.error('Error in event transformer:', error)\n return event\n }\n },\n\n // Performance monitoring middleware\n performance: (): EventMiddleware => {\n const metrics = new Map<string, { count: number; totalTime: number }>()\n \n return (event) => {\n const startTime = performance.now()\n \n // Update metrics\n const existing = metrics.get(event.type) || { count: 0, totalTime: 0 }\n existing.count++\n existing.totalTime += performance.now() - startTime\n metrics.set(event.type, existing)\n \n // Log metrics periodically (every 100 events)\n if (existing.count % 100 === 0) {\n const avgTime = existing.totalTime / existing.count\n console.log(`Event ${event.type}: ${existing.count} calls, avg ${avgTime.toFixed(2)}ms`)\n }\n \n return event\n }\n },\n\n // Error handling middleware\n errorHandler: (onError?: (error: Error, event: MediaPlayerEvent) => void): EventMiddleware => (event) => {\n try {\n // Validate event structure\n if (!event.type || typeof event.type !== 'string') {\n throw new Error('Invalid event: missing or invalid type')\n }\n \n if (!event.timestamp || typeof event.timestamp !== 'number') {\n throw new Error('Invalid event: missing or invalid timestamp')\n }\n \n return event\n } catch (error) {\n if (onError) {\n onError(error as Error, event)\n } else {\n console.error('Event validation error:', error)\n }\n return null\n }\n },\n\n // Security middleware (prevent certain events or sanitize data)\n security: (options: {\n blockedEventTypes?: string[]\n sanitizeDetail?: boolean\n maxDetailSize?: number\n } = {}): EventMiddleware => (event) => {\n const { blockedEventTypes = [], sanitizeDetail = true, maxDetailSize = 10000 } = options\n \n // Block certain event types\n if (blockedEventTypes.includes(event.type)) {\n console.warn(`Blocked event type: ${event.type}`)\n return null\n }\n \n // Sanitize detail if needed\n if (sanitizeDetail && event.detail) {\n try {\n const detailStr = JSON.stringify(event.detail)\n if (detailStr.length > maxDetailSize) {\n console.warn(`Event detail too large, truncating: ${event.type}`)\n event.detail = { ...event.detail, _truncated: true }\n }\n } catch (error) {\n console.warn(`Failed to serialize event detail: ${event.type}`)\n event.detail = { _serializationError: true }\n }\n }\n \n return event\n },\n\n // Conditional middleware\n when: (condition: (event: MediaPlayerEvent) => boolean, middleware: EventMiddleware): EventMiddleware => (event) => {\n return condition(event) ? middleware(event) : event\n },\n\n // Chain multiple middleware\n chain: (...middlewares: EventMiddleware[]): EventMiddleware => (event) => {\n let currentEvent: MediaPlayerEvent | null = event\n \n for (const middleware of middlewares) {\n if (currentEvent === null) break\n currentEvent = middleware(currentEvent)\n }\n \n return currentEvent\n }\n}\n\n// Middleware builder class\nexport class MiddlewareBuilder {\n private middlewares: EventMiddleware[] = []\n\n // Add middleware\n use(middleware: EventMiddleware): this {\n this.middlewares.push(middleware)\n return this\n }\n\n // Add logging\n log(prefix?: string): this {\n return this.use(eventMiddlewares.logger(prefix))\n }\n\n // Add throttling\n throttle(eventTypes: string[], delay?: number): this {\n return this.use(eventMiddlewares.throttle(eventTypes, delay))\n }\n\n // Add debouncing\n debounce(eventTypes: string[], delay?: number): this {\n return this.use(eventMiddlewares.debounce(eventTypes, delay))\n }\n\n // Add filtering\n filter(predicate: (event: MediaPlayerEvent) => boolean): this {\n return this.use(eventMiddlewares.filter(predicate))\n }\n\n // Add transformation\n transform(transformer: (event: MediaPlayerEvent) => MediaPlayerEvent): this {\n return this.use(eventMiddlewares.transform(transformer))\n }\n\n // Add performance monitoring\n performance(): this {\n return this.use(eventMiddlewares.performance())\n }\n\n // Add error handling\n errorHandler(onError?: (error: Error, event: MediaPlayerEvent) => void): this {\n return this.use(eventMiddlewares.errorHandler(onError))\n }\n\n // Add security\n security(options?: Parameters<typeof eventMiddlewares.security>[0]): this {\n return this.use(eventMiddlewares.security(options))\n }\n\n // Add conditional middleware\n when(condition: (event: MediaPlayerEvent) => boolean, middleware: EventMiddleware): this {\n return this.use(eventMiddlewares.when(condition, middleware))\n }\n\n // Build the final middleware\n build(): EventMiddleware {\n return eventMiddlewares.chain(...this.middlewares)\n }\n}\n\n// Helper to create middleware builder\nexport const createMiddleware = () => new MiddlewareBuilder()\n\n// Export commonly used middleware combinations\nexport const commonMiddlewares = {\n // Development middleware stack\n development: () => createMiddleware()\n .log('[Dev Event]')\n .performance()\n .errorHandler()\n .build(),\n\n // Production middleware stack\n production: () => createMiddleware()\n .security()\n .errorHandler()\n .throttle(['media:timeupdate', 'user:mousemove'], 16) // ~60fps\n .build(),\n\n // Testing middleware stack\n testing: () => createMiddleware()\n .errorHandler((error, event) => {\n throw new Error(`Event error in test: ${error.message} for event ${event.type}`)\n })\n .build()\n}","import React, { useEffect, useRef, useCallback, useMemo, useState } from 'react'\nimport { EventBus, type EventHandler, type EventUnsubscriber, type EventOptions, type MediaEvents } from './event-system'\n\n// Hook to use event bus with React\nexport function useEventBus(eventBus?: EventBus): EventBus {\n const eventBusRef = useRef<EventBus | null>(null)\n \n if (!eventBusRef.current) {\n eventBusRef.current = eventBus || new EventBus()\n }\n \n useEffect(() => {\n const currentEventBus = eventBusRef.current!\n \n return () => {\n // Cleanup on unmount\n currentEventBus.destroy()\n }\n }, [])\n \n return eventBusRef.current\n}\n\n// Hook to listen to events\nexport function useEventListener<K extends keyof MediaEvents>(\n eventBus: EventBus,\n type: K,\n handler: EventHandler<MediaEvents[K]>,\n options?: EventOptions,\n deps?: React.DependencyList\n): void {\n const handlerRef = useRef(handler)\n const optionsRef = useRef(options)\n \n // Update refs when dependencies change\n useEffect(() => {\n handlerRef.current = handler\n optionsRef.current = options\n })\n \n useEffect(() => {\n const unsubscribe = eventBus.on(type, handlerRef.current, optionsRef.current)\n return unsubscribe\n }, [eventBus, type, ...(deps || [])])\n}\n\n// Hook to emit events\nexport function useEventEmitter(eventBus: EventBus) {\n return useCallback(<K extends keyof MediaEvents>(\n type: K,\n detail?: MediaEvents[K],\n options?: Partial<MediaEvents[K]>\n ) => {\n return eventBus.emit(type, detail, options)\n }, [eventBus])\n}\n\n// Hook for one-time event listeners\nexport function useEventOnce<K extends keyof MediaEvents>(\n eventBus: EventBus,\n type: K,\n handler: EventHandler<MediaEvents[K]>,\n deps?: React.DependencyList\n): void {\n useEventListener(eventBus, type, handler, { once: true }, deps)\n}\n\n// Hook to create event handlers with automatic cleanup\nexport function useEventHandlers(eventBus: EventBus) {\n const handlersRef = useRef<EventUnsubscriber[]>([])\n \n const addHandler = useCallback(<K extends keyof MediaEvents>(\n type: K,\n handler: EventHandler<MediaEvents[K]>,\n options?: EventOptions\n ) => {\n const unsubscribe = eventBus.on(type, handler, options)\n handlersRef.current.push(unsubscribe)\n return unsubscribe\n }, [eventBus])\n \n const removeAllHandlers = useCallback(() => {\n handlersRef.current.forEach(unsubscribe => unsubscribe())\n handlersRef.current = []\n }, [])\n \n useEffect(() => {\n return removeAllHandlers\n }, [removeAllHandlers])\n \n return {\n on: addHandler,\n removeAll: removeAllHandlers\n }\n}\n\n// Hook for event history\nexport function useEventHistory(\n eventBus: EventBus,\n filter?: (event: any) => boolean,\n maxSize = 100\n) {\n const historyRef = useRef<any[]>([])\n \n useEffect(() => {\n const unsubscribe = eventBus.addEventListener('*', (event) => {\n if (!filter || filter(event)) {\n historyRef.current.push(event)\n \n // Limit history size\n if (historyRef.current.length > maxSize) {\n historyRef.current.shift()\n }\n }\n })\n \n return unsubscribe\n }, [eventBus, filter, maxSize])\n \n const clearHistory = useCallback(() => {\n historyRef.current = []\n }, [])\n \n return {\n history: historyRef.current,\n clearHistory\n }\n}\n\n// Hook for event metrics/analytics\nexport function useEventMetrics(eventBus: EventBus) {\n const metricsRef = useRef<Map<string, {\n count: number\n lastTimestamp: number\n frequency: number // events per second\n }>>(new Map())\n \n useEffect(() => {\n const updateMetrics = (event: any) => {\n const existing = metricsRef.current.get(event.type) || {\n count: 0,\n lastTimestamp: 0,\n frequency: 0\n }\n \n existing.count++\n \n if (existing.lastTimestamp > 0) {\n const timeDiff = (event.timestamp - existing.lastTimestamp) / 1000 // seconds\n existing.frequency = timeDiff > 0 ? 1 / timeDiff : 0\n }\n \n existing.lastTimestamp = event.timestamp\n metricsRef.current.set(event.type, existing)\n }\n \n const unsubscribe = eventBus.addEventListener('*', updateMetrics)\n return unsubscribe\n }, [eventBus])\n \n const getMetrics = useCallback(() => {\n return Object.fromEntries(metricsRef.current.entries())\n }, [])\n \n const resetMetrics = useCallback(() => {\n metricsRef.current.clear()\n }, [])\n \n return {\n getMetrics,\n resetMetrics\n }\n}\n\n// Hook for event debugging\nexport function useEventDebugger(\n eventBus: EventBus, \n options: {\n logEvents?: boolean\n logMetrics?: boolean\n filterEventTypes?: string[]\n } = {}\n) {\n const { logEvents = true, logMetrics = false, filterEventTypes } = options\n \n useEffect(() => {\n if (!logEvents) return\n \n const unsubscribe = eventBus.addEventListener('*', (event) => {\n if (filterEventTypes && !filterEventTypes.includes(event.type)) {\n return\n }\n \n console.group(`🎯 Event: ${event.type}`)\n console.log('Timestamp:', new Date(event.timestamp).toISOString())\n console.log('Detail:', event.detail)\n console.log('Bubbles:', event.bubbles)\n console.log('Cancelable:', event.cancelable)\n console.groupEnd()\n })\n \n return unsubscribe\n }, [eventBus, logEvents, filterEventTypes])\n \n useEffect(() => {\n if (!logMetrics) return\n \n const interval = setInterval(() => {\n const listenerCount = eventBus.getListenerCount()\n const eventTypes = eventBus.getEventTypes()\n \n console.group('📊 Event Metrics')\n console.log('Total Listeners:', listenerCount)\n console.log('Event Types:', eventTypes.length)\n console.log('Active Types:', eventTypes)\n console.groupEnd()\n }, 5000)\n \n return () => clearInterval(interval)\n }, [eventBus, logMetrics])\n}\n\n// Hook for conditional event handling\nexport function useConditionalEventListener<K extends keyof MediaEvents>(\n eventBus: EventBus,\n type: K,\n handler: EventHandler<MediaEvents[K]>,\n condition: boolean | (() => boolean),\n options?: EventOptions,\n deps?: React.DependencyList\n): void {\n const shouldListen = useMemo(() => {\n return typeof condition === 'function' ? condition() : condition\n }, [condition, ...(deps || [])])\n \n useEffect(() => {\n if (!shouldListen) return\n \n const unsubscribe = eventBus.on(type, handler, options)\n return unsubscribe\n }, [eventBus, type, shouldListen, ...(deps || [])])\n}\n\n// Hook for event state synchronization\nexport function useEventState<T>(\n eventBus: EventBus,\n initialValue: T,\n eventMapping: Record<string, (detail: any, currentValue: T) => T>\n) {\n const [state, setState] = useState<T>(initialValue)\n \n useEffect(() => {\n const unsubscribers: EventUnsubscriber[] = []\n \n Object.entries(eventMapping).forEach(([eventType, updater]) => {\n const unsubscribe = eventBus.addEventListener(eventType, (event) => {\n setState(current => updater(event.detail, current))\n })\n unsubscribers.push(unsubscribe)\n })\n \n return () => {\n unsubscribers.forEach(unsubscribe => unsubscribe())\n }\n }, [eventBus, eventMapping])\n \n return state\n}\n\n// Hook for creating event-driven effects\nexport function useEventEffect<K extends keyof MediaEvents>(\n eventBus: EventBus,\n type: K,\n effect: (detail: MediaEvents[K]) => void | (() => void),\n deps?: React.DependencyList\n): void {\n const cleanupRef = useRef<(() => void) | void>(undefined)\n \n useEventListener(\n eventBus,\n type,\n useCallback((event) => {\n // Clean up previous effect\n if (typeof cleanupRef.current === 'function') {\n cleanupRef.current()\n }\n \n // Run new effect\n cleanupRef.current = effect(event.detail)\n }, deps || []),\n undefined,\n deps\n )\n \n useEffect(() => {\n return () => {\n if (typeof cleanupRef.current === 'function') {\n cleanupRef.current()\n }\n }\n }, [])\n}","// Event system exports\nexport {\n EventBus,\n EventDelegator,\n defaultEventBus\n} from './event-system'\n\nexport type {\n MediaPlayerEvent,\n EventHandler,\n EventUnsubscriber,\n EventOptions,\n EventCategory,\n MediaEvents\n} from './event-system'\n\n// Event utilities\nexport * from './middleware'\nexport * from './hooks'\n\n// Version\nexport const EVENT_SYSTEM_VERSION = '1.0.0'"],"names":["EventBus","__publicField","type","handler","options","id","listener","listeners","priority","priorityValue","insertIndex","i","listenerPriority","index","l","detail","event","processedEvent","middleware","schedule","cb","processNext","batchSize","events","exactListeners","wildcardListeners","pattern","allListeners","a","b","priorityA","listenersToRemove","error","eventType","filter","sum","defaultEventBus","EventDelegator","eventBus","element","domEvent","mediaEvent","e","eventMiddlewares","prefix","eventTypes","delay","lastTimes","lastTime","now","timeouts","eventQueue","existingTimeout","timeout","predicate","transformer","metrics","startTime","existing","avgTime","onError","blockedEventTypes","sanitizeDetail","maxDetailSize","condition","middlewares","currentEvent","MiddlewareBuilder","createMiddleware","commonMiddlewares","useEventBus","eventBusRef","useRef","useEffect","currentEventBus","useEventListener","deps","handlerRef","optionsRef","useEventEmitter","useCallback","useEventOnce","useEventHandlers","handlersRef","addHandler","unsubscribe","removeAllHandlers","useEventHistory","maxSize","historyRef","clearHistory","useEventMetrics","metricsRef","updateMetrics","timeDiff","getMetrics","resetMetrics","useEventDebugger","logEvents","logMetrics","filterEventTypes","interval","listenerCount","useConditionalEventListener","shouldListen","useMemo","useEventState","initialValue","eventMapping","state","setState","useState","unsubscribers","updater","current","useEventEffect","effect","cleanupRef","EVENT_SYSTEM_VERSION"],"mappings":"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"}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
"use strict";var b=Object.defineProperty;var w=(s,e,t)=>e in s?b(s,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):s[e]=t;var d=(s,e,t)=>w(s,typeof e!="symbol"?e+"":e,t);const c=require("react");class g{constructor(){d(this,"listeners",new Map);d(this,"eventQueue",[]);d(this,"isProcessing",!1);d(this,"middlewares",[]);d(this,"eventHistory",[]);d(this,"maxHistorySize",1e3)}on(e,t,r={}){return this.addEventListener(e,t,r)}once(e,t,r={}){return this.addEventListener(e,t,{...r,once:!0})}addEventListener(e,t,r={}){const n=this.generateId(),o={handler:t,options:r,id:n};this.listeners.has(e)||this.listeners.set(e,[]);const i=this.listeners.get(e),u=r.priority||"normal",l={high:2,normal:1,low:0}[u];let h=i.length;for(let a=0;a<i.length;a++){const m=i[a];if(!m)continue;const v=m.options.priority||"normal";if(l>{high:2,normal:1,low:0}[v]){h=a;break}}return i.splice(h,0,o),()=>{const a=i.findIndex(m=>m.id===n);a!==-1&&i.splice(a,1),i.length===0&&this.listeners.delete(e)}}removeEventListener(e,t){const r=this.listeners.get(e);if(r){if(t){const n=r.findIndex(o=>o.handler===t);n!==-1&&r.splice(n,1)}else this.listeners.delete(e);r&&r.length===0&&this.listeners.delete(e)}}emit(e,t,r){const n={type:e,timestamp:Date.now(),detail:t,bubbles:!0,cancelable:!0,defaultPrevented:!1,...r};return this.dispatchEvent(n)}dispatchEvent(e){let t=e;for(const r of this.middlewares)if(t=r(t),!t)return!1;return this.addToHistory(t),this.eventQueue.push(t),this.isProcessing||this.processEventQueue(),!t.defaultPrevented}processEventQueue(){if(this.isProcessing)return;this.isProcessing=!0;const e=typeof window<"u"&&"scheduler"in window?window.scheduler.postTask:r=>setTimeout(r,0),t=()=>{if(this.eventQueue.length===0){this.isProcessing=!1;return}const r=Math.min(this.eventQueue.length,5),n=this.eventQueue.splice(0,r);Promise.all(n.map(o=>this.processEvent(o).catch(console.error))).then(()=>{e(t)}).catch(()=>{this.isProcessing=!1})};e(t)}async processEvent(e){const{type:t}=e,r=this.listeners.get(t)||[],n=[];for(const[u,l]of this.listeners.entries())u.includes("*")&&this.matchPattern(t,u)&&n.push(...l);const o=[...r,...n].sort((u,l)=>{const h={high:2,normal:1,low:0}[u.options.priority||"normal"];return{high:2,normal:1,low:0}[l.options.priority||"normal"]-h}),i=[];for(const u of o)if(!(u.options.filter&&!u.options.filter(e)))try{if(await Promise.resolve(u.handler(e)),u.options.once&&i.push(u.id),e.defaultPrevented&&!e.bubbles)break}catch(l){console.error(`Error in event handler for ${t}:`,l),console.error(`Event handler error for ${t}:`,l)}for(const u of i)for(const[l,h]of this.listeners.entries()){const a=h.findIndex(m=>m.id===u);if(a!==-1){h.splice(a,1),h.length===0&&this.listeners.delete(l);break}}}use(e){return this.middlewares.push(e),()=>{const t=this.middlewares.indexOf(e);t!==-1&&this.middlewares.splice(t,1)}}addToHistory(e){this.eventHistory.push(e),this.eventHistory.length>this.maxHistorySize&&this.eventHistory.shift()}getHistory(e){return e?this.eventHistory.filter(e):[...this.eventHistory]}clearHistory(){this.eventHistory=[]}matchPattern(e,t){return new RegExp("^"+t.replace(/\*/g,".*").replace(/\?/g,".")+"$").test(e)}generateId(){return`event_${Date.now()}_${Math.random().toString(36).substr(2,9)}`}getListenerCount(e){return e?this.listeners.get(e)?.length||0:Array.from(this.listeners.values()).reduce((t,r)=>t+r.length,0)}getEventTypes(){return Array.from(this.listeners.keys())}removeAllListeners(e){e?this.listeners.delete(e):this.listeners.clear()}destroy(){this.listeners.clear(),this.eventQueue=[],this.middlewares=[],this.eventHistory=[],this.isProcessing=!1}}const T=new g;class H{constructor(e,t){d(this,"eventBus");d(this,"element");d(this,"delegatedEvents",new Set);this.eventBus=e,this.element=t}delegate(e,t){if(this.delegatedEvents.has(e))return;const r=n=>{this.eventBus.emit(t||`dom:${e}`,{originalEvent:n,target:n.target?.tagName.toLowerCase(),currentTarget:n.currentTarget?.tagName.toLowerCase()})};this.element.addEventListener(e,r,{passive:!0}),this.delegatedEvents.add(e)}setupCommonDelegations(){this.delegate("click","user:click"),this.delegate("mouseenter","user:hover"),this.delegate("mouseleave","user:hover"),this.delegate("focus","user:focus"),this.delegate("blur","user:focus"),this.delegate("keydown","user:keyboard"),this.delegate("keyup","user:keyboard")}destroy(){this.delegatedEvents.clear()}}const f={logger:(s="[Event]")=>e=>(process.env.NODE_ENV==="development"&&console.log(`${s} ${e.type}`,e.detail),e),throttle:(s,e=100)=>{const t=new Map;return r=>{if(s.includes(r.type)){const n=t.get(r.type)||0,o=r.timestamp;if(o-n<e)return null;t.set(r.type,o)}return r}},debounce:(s,e=100)=>{const t=new Map,r=new Map;return n=>{if(s.includes(n.type)){const o=t.get(n.type);o&&clearTimeout(o),r.set(n.type,n);const i=setTimeout(()=>{r.get(n.type)&&(r.delete(n.type),t.delete(n.type))},e);return t.set(n.type,i),null}return n}},filter:s=>e=>s(e)?e:null,transform:s=>e=>{try{return s(e)}catch(t){return console.error("Error in event transformer:",t),e}},performance:()=>{const s=new Map;return e=>{const t=performance.now(),r=s.get(e.type)||{count:0,totalTime:0};if(r.count++,r.totalTime+=performance.now()-t,s.set(e.type,r),r.count%100===0){const n=r.totalTime/r.count;console.log(`Event ${e.type}: ${r.count} calls, avg ${n.toFixed(2)}ms`)}return e}},errorHandler:s=>e=>{try{if(!e.type||typeof e.type!="string")throw new Error("Invalid event: missing or invalid type");if(!e.timestamp||typeof e.timestamp!="number")throw new Error("Invalid event: missing or invalid timestamp");return e}catch(t){return s?s(t,e):console.error("Event validation error:",t),null}},security:(s={})=>e=>{const{blockedEventTypes:t=[],sanitizeDetail:r=!0,maxDetailSize:n=1e4}=s;if(t.includes(e.type))return console.warn(`Blocked event type: ${e.type}`),null;if(r&&e.detail)try{JSON.stringify(e.detail).length>n&&(console.warn(`Event detail too large, truncating: ${e.type}`),e.detail={...e.detail,_truncated:!0})}catch{console.warn(`Failed to serialize event detail: ${e.type}`),e.detail={_serializationError:!0}}return e},when:(s,e)=>t=>s(t)?e(t):t,chain:(...s)=>e=>{let t=e;for(const r of s){if(t===null)break;t=r(t)}return t}};class y{constructor(){d(this,"middlewares",[])}use(e){return this.middlewares.push(e),this}log(e){return this.use(f.logger(e))}throttle(e,t){return this.use(f.throttle(e,t))}debounce(e,t){return this.use(f.debounce(e,t))}filter(e){return this.use(f.filter(e))}transform(e){return this.use(f.transform(e))}performance(){return this.use(f.performance())}errorHandler(e){return this.use(f.errorHandler(e))}security(e){return this.use(f.security(e))}when(e,t){return this.use(f.when(e,t))}build(){return f.chain(...this.middlewares)}}const p=()=>new y,M={development:()=>p().log("[Dev Event]").performance().errorHandler().build(),production:()=>p().security().errorHandler().throttle(["media:timeupdate","user:mousemove"],16).build(),testing:()=>p().errorHandler((s,e)=>{throw new Error(`Event error in test: ${s.message} for event ${e.type}`)}).build()};function L(s){const e=c.useRef(null);return e.current||(e.current=s||new g),c.useEffect(()=>{const t=e.current;return()=>{t.destroy()}},[]),e.current}function E(s,e,t,r,n){const o=c.useRef(t),i=c.useRef(r);c.useEffect(()=>{o.current=t,i.current=r}),c.useEffect(()=>s.on(e,o.current,i.current),[s,e,...n||[]])}function k(s){return c.useCallback((e,t,r)=>s.emit(e,t,r),[s])}function x(s,e,t,r){E(s,e,t,{once:!0},r)}function S(s){const e=c.useRef([]),t=c.useCallback((n,o,i)=>{const u=s.on(n,o,i);return e.current.push(u),u},[s]),r=c.useCallback(()=>{e.current.forEach(n=>n()),e.current=[]},[]);return c.useEffect(()=>r,[r]),{on:t,removeAll:r}}function R(s,e,t=100){const r=c.useRef([]);c.useEffect(()=>s.addEventListener("*",i=>{(!e||e(i))&&(r.current.push(i),r.current.length>t&&r.current.shift())}),[s,e,t]);const n=c.useCallback(()=>{r.current=[]},[]);return{history:r.current,clearHistory:n}}function $(s){const e=c.useRef(new Map);c.useEffect(()=>{const n=i=>{const u=e.current.get(i.type)||{count:0,lastTimestamp:0,frequency:0};if(u.count++,u.lastTimestamp>0){const l=(i.timestamp-u.lastTimestamp)/1e3;u.frequency=l>0?1/l:0}u.lastTimestamp=i.timestamp,e.current.set(i.type,u)};return s.addEventListener("*",n)},[s]);const t=c.useCallback(()=>Object.fromEntries(e.current.entries()),[]),r=c.useCallback(()=>{e.current.clear()},[]);return{getMetrics:t,resetMetrics:r}}function C(s,e={}){const{logEvents:t=!0,logMetrics:r=!1,filterEventTypes:n}=e;c.useEffect(()=>t?s.addEventListener("*",i=>{n&&!n.includes(i.type)||(console.group(`🎯 Event: ${i.type}`),console.log("Timestamp:",new Date(i.timestamp).toISOString()),console.log("Detail:",i.detail),console.log("Bubbles:",i.bubbles),console.log("Cancelable:",i.cancelable),console.groupEnd())}):void 0,[s,t,n]),c.useEffect(()=>{if(!r)return;const o=setInterval(()=>{const i=s.getListenerCount(),u=s.getEventTypes();console.group("📊 Event Metrics"),console.log("Total Listeners:",i),console.log("Event Types:",u.length),console.log("Active Types:",u),console.groupEnd()},5e3);return()=>clearInterval(o)},[s,r])}function P(s,e,t,r,n,o){const i=c.useMemo(()=>typeof r=="function"?r():r,[r,...o||[]]);c.useEffect(()=>i?s.on(e,t,n):void 0,[s,e,i,...o||[]])}function D(s,e,t){const[r,n]=c.useState(e);return c.useEffect(()=>{const o=[];return Object.entries(t).forEach(([i,u])=>{const l=s.addEventListener(i,h=>{n(a=>u(h.detail,a))});o.push(l)}),()=>{o.forEach(i=>i())}},[s,t]),r}function I(s,e,t,r){const n=c.useRef(void 0);E(s,e,c.useCallback(o=>{typeof n.current=="function"&&n.current(),n.current=t(o.detail)},r||[]),void 0,r),c.useEffect(()=>()=>{typeof n.current=="function"&&n.current()},[])}const N="1.0.0";exports.EVENT_SYSTEM_VERSION=N;exports.EventBus=g;exports.EventDelegator=H;exports.MiddlewareBuilder=y;exports.commonMiddlewares=M;exports.createMiddleware=p;exports.defaultEventBus=T;exports.eventMiddlewares=f;exports.useConditionalEventListener=P;exports.useEventBus=L;exports.useEventDebugger=C;exports.useEventEffect=I;exports.useEventEmitter=k;exports.useEventHandlers=S;exports.useEventHistory=R;exports.useEventListener=E;exports.useEventMetrics=$;exports.useEventOnce=x;exports.useEventState=D;
|
|
2
|
-
//# sourceMappingURL=core-events-CN0-Vhhq.cjs.map
|