@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,250 +0,0 @@
|
|
|
1
|
-
"use client";
|
|
2
|
-
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
-
import React from "react";
|
|
4
|
-
import { useMediaContext, useMediaSelector, useMediaDispatch, MediaActionTypes } from "../../context/media-context";
|
|
5
|
-
import { cn } from "../../lib/utils";
|
|
6
|
-
// Custom hook for auto-hide controls
|
|
7
|
-
function useAutoHideControls(autoHide, delay, showOnHover, showOnTouch) {
|
|
8
|
-
const [showControls, setShowControls] = React.useState(true);
|
|
9
|
-
const [isHovering, setIsHovering] = React.useState(false);
|
|
10
|
-
const [isTouching, setIsTouching] = React.useState(false);
|
|
11
|
-
const timeoutRef = React.useRef(null);
|
|
12
|
-
const resetTimeout = React.useCallback(() => {
|
|
13
|
-
if (timeoutRef.current) {
|
|
14
|
-
clearTimeout(timeoutRef.current);
|
|
15
|
-
}
|
|
16
|
-
if (autoHide) {
|
|
17
|
-
timeoutRef.current = setTimeout(() => {
|
|
18
|
-
if (!isHovering && !isTouching) {
|
|
19
|
-
setShowControls(false);
|
|
20
|
-
}
|
|
21
|
-
}, delay);
|
|
22
|
-
}
|
|
23
|
-
}, [autoHide, delay, isHovering, isTouching]);
|
|
24
|
-
const showControlsTemporarily = React.useCallback(() => {
|
|
25
|
-
setShowControls(true);
|
|
26
|
-
resetTimeout();
|
|
27
|
-
}, [resetTimeout]);
|
|
28
|
-
React.useEffect(() => {
|
|
29
|
-
if (autoHide) {
|
|
30
|
-
resetTimeout();
|
|
31
|
-
}
|
|
32
|
-
else {
|
|
33
|
-
setShowControls(true);
|
|
34
|
-
}
|
|
35
|
-
return () => {
|
|
36
|
-
if (timeoutRef.current) {
|
|
37
|
-
clearTimeout(timeoutRef.current);
|
|
38
|
-
}
|
|
39
|
-
};
|
|
40
|
-
}, [autoHide, resetTimeout]);
|
|
41
|
-
const handleMouseEnter = React.useCallback(() => {
|
|
42
|
-
if (showOnHover) {
|
|
43
|
-
setIsHovering(true);
|
|
44
|
-
setShowControls(true);
|
|
45
|
-
}
|
|
46
|
-
}, [showOnHover]);
|
|
47
|
-
const handleMouseLeave = React.useCallback(() => {
|
|
48
|
-
if (showOnHover) {
|
|
49
|
-
setIsHovering(false);
|
|
50
|
-
resetTimeout();
|
|
51
|
-
}
|
|
52
|
-
}, [showOnHover, resetTimeout]);
|
|
53
|
-
const handleTouchStart = React.useCallback(() => {
|
|
54
|
-
if (showOnTouch) {
|
|
55
|
-
setIsTouching(true);
|
|
56
|
-
showControlsTemporarily();
|
|
57
|
-
}
|
|
58
|
-
}, [showOnTouch, showControlsTemporarily]);
|
|
59
|
-
const handleTouchEnd = React.useCallback(() => {
|
|
60
|
-
if (showOnTouch) {
|
|
61
|
-
setIsTouching(false);
|
|
62
|
-
resetTimeout();
|
|
63
|
-
}
|
|
64
|
-
}, [showOnTouch, resetTimeout]);
|
|
65
|
-
return {
|
|
66
|
-
showControls,
|
|
67
|
-
showControlsTemporarily,
|
|
68
|
-
handleMouseEnter,
|
|
69
|
-
handleMouseLeave,
|
|
70
|
-
handleTouchStart,
|
|
71
|
-
handleTouchEnd
|
|
72
|
-
};
|
|
73
|
-
}
|
|
74
|
-
// Custom hook for touch gestures
|
|
75
|
-
function useTouchGestures(enabled) {
|
|
76
|
-
const dispatch = useMediaDispatch();
|
|
77
|
-
const isPlaying = useMediaSelector(state => state.isPlaying);
|
|
78
|
-
const currentTime = useMediaSelector(state => state.currentTime);
|
|
79
|
-
const duration = useMediaSelector(state => state.duration);
|
|
80
|
-
const volume = useMediaSelector(state => state.volume);
|
|
81
|
-
const [touchStart, setTouchStart] = React.useState(null);
|
|
82
|
-
const [isDoubleTap, setIsDoubleTap] = React.useState(false);
|
|
83
|
-
const handleTouchStart = React.useCallback((e) => {
|
|
84
|
-
if (!enabled)
|
|
85
|
-
return;
|
|
86
|
-
const touch = e.touches[0];
|
|
87
|
-
if (!touch)
|
|
88
|
-
return;
|
|
89
|
-
const now = Date.now();
|
|
90
|
-
if (touchStart && now - touchStart.time < 300) {
|
|
91
|
-
setIsDoubleTap(true);
|
|
92
|
-
// Double tap to play/pause
|
|
93
|
-
dispatch({
|
|
94
|
-
type: isPlaying ? MediaActionTypes.PAUSE : MediaActionTypes.PLAY
|
|
95
|
-
});
|
|
96
|
-
}
|
|
97
|
-
else {
|
|
98
|
-
setTouchStart({
|
|
99
|
-
x: touch.clientX,
|
|
100
|
-
y: touch.clientY,
|
|
101
|
-
time: now
|
|
102
|
-
});
|
|
103
|
-
setIsDoubleTap(false);
|
|
104
|
-
}
|
|
105
|
-
}, [enabled, touchStart, isPlaying, dispatch]);
|
|
106
|
-
const handleTouchMove = React.useCallback((e) => {
|
|
107
|
-
if (!enabled || !touchStart || isDoubleTap)
|
|
108
|
-
return;
|
|
109
|
-
const touch = e.touches[0];
|
|
110
|
-
if (!touch)
|
|
111
|
-
return;
|
|
112
|
-
const deltaX = touch.clientX - touchStart.x;
|
|
113
|
-
const deltaY = touch.clientY - touchStart.y;
|
|
114
|
-
// Horizontal swipe for seeking
|
|
115
|
-
if (Math.abs(deltaX) > Math.abs(deltaY) && Math.abs(deltaX) > 50) {
|
|
116
|
-
const seekAmount = (deltaX / window.innerWidth) * 30; // 30 seconds max
|
|
117
|
-
const newTime = Math.max(0, Math.min(duration, currentTime + seekAmount));
|
|
118
|
-
dispatch({
|
|
119
|
-
type: MediaActionTypes.SEEK,
|
|
120
|
-
detail: newTime
|
|
121
|
-
});
|
|
122
|
-
}
|
|
123
|
-
// Vertical swipe for volume (right side of screen)
|
|
124
|
-
if (Math.abs(deltaY) > Math.abs(deltaX) && Math.abs(deltaY) > 50 && touchStart.x > window.innerWidth / 2) {
|
|
125
|
-
const volumeChange = -(deltaY / window.innerHeight) * 1; // Full range
|
|
126
|
-
const newVolume = Math.max(0, Math.min(1, volume + volumeChange));
|
|
127
|
-
dispatch({
|
|
128
|
-
type: MediaActionTypes.SET_VOLUME,
|
|
129
|
-
detail: newVolume
|
|
130
|
-
});
|
|
131
|
-
}
|
|
132
|
-
}, [enabled, touchStart, isDoubleTap, duration, currentTime, volume, dispatch]);
|
|
133
|
-
const handleTouchEnd = React.useCallback(() => {
|
|
134
|
-
if (!enabled)
|
|
135
|
-
return;
|
|
136
|
-
// Reset touch state after a delay to allow for double tap detection
|
|
137
|
-
setTimeout(() => {
|
|
138
|
-
setTouchStart(null);
|
|
139
|
-
setIsDoubleTap(false);
|
|
140
|
-
}, 300);
|
|
141
|
-
}, [enabled]);
|
|
142
|
-
return {
|
|
143
|
-
handleTouchStart,
|
|
144
|
-
handleTouchMove,
|
|
145
|
-
handleTouchEnd
|
|
146
|
-
};
|
|
147
|
-
}
|
|
148
|
-
export const EnhancedMediaPlayer = function EnhancedMediaPlayer({ children, className, autoHide = true, autoHideDelay = 3000, showControlsOnHover = true, showControlsOnTouch = true, enableKeyboardControls = true, enableTouchGestures = true, onPlay, onPause, onTimeUpdate, onVolumeChange, onFullscreenChange }) {
|
|
149
|
-
const context = useMediaContext();
|
|
150
|
-
const dispatch = useMediaDispatch();
|
|
151
|
-
// State selectors with memoization
|
|
152
|
-
const isPlaying = useMediaSelector(React.useCallback(state => state.isPlaying, []));
|
|
153
|
-
const isFullscreen = useMediaSelector(React.useCallback(state => state.isFullscreen, []));
|
|
154
|
-
const currentTime = useMediaSelector(React.useCallback(state => state.currentTime, []));
|
|
155
|
-
const volume = useMediaSelector(React.useCallback(state => state.volume, []));
|
|
156
|
-
const error = useMediaSelector(React.useCallback(state => state.error, []));
|
|
157
|
-
// Custom hooks
|
|
158
|
-
const { showControls, showControlsTemporarily, handleMouseEnter, handleMouseLeave, handleTouchStart: handleControlsTouch, handleTouchEnd: handleControlsTouchEnd } = useAutoHideControls(autoHide, autoHideDelay, showControlsOnHover, showControlsOnTouch);
|
|
159
|
-
const { handleTouchStart: handleGestureStart, handleTouchMove: handleGestureMove, handleTouchEnd: handleGestureEnd } = useTouchGestures(enableTouchGestures);
|
|
160
|
-
// Combine touch handlers
|
|
161
|
-
const handleTouchStart = React.useCallback((e) => {
|
|
162
|
-
handleControlsTouch();
|
|
163
|
-
handleGestureStart(e);
|
|
164
|
-
}, [handleControlsTouch, handleGestureStart]);
|
|
165
|
-
const handleTouchEnd = React.useCallback(() => {
|
|
166
|
-
handleControlsTouchEnd();
|
|
167
|
-
handleGestureEnd();
|
|
168
|
-
}, [handleControlsTouchEnd, handleGestureEnd]);
|
|
169
|
-
// Event handlers with memoization
|
|
170
|
-
const handleClick = React.useCallback(() => {
|
|
171
|
-
showControlsTemporarily();
|
|
172
|
-
}, [showControlsTemporarily]);
|
|
173
|
-
// Keyboard controls
|
|
174
|
-
React.useEffect(() => {
|
|
175
|
-
if (!enableKeyboardControls)
|
|
176
|
-
return;
|
|
177
|
-
const handleKeyDown = (e) => {
|
|
178
|
-
if (e.target instanceof HTMLInputElement || e.target instanceof HTMLTextAreaElement) {
|
|
179
|
-
return;
|
|
180
|
-
}
|
|
181
|
-
switch (e.code) {
|
|
182
|
-
case 'Space':
|
|
183
|
-
case 'KeyK':
|
|
184
|
-
e.preventDefault();
|
|
185
|
-
dispatch({
|
|
186
|
-
type: isPlaying ? MediaActionTypes.PAUSE : MediaActionTypes.PLAY
|
|
187
|
-
});
|
|
188
|
-
break;
|
|
189
|
-
case 'KeyF':
|
|
190
|
-
e.preventDefault();
|
|
191
|
-
dispatch({
|
|
192
|
-
type: isFullscreen ? MediaActionTypes.EXIT_FULLSCREEN : MediaActionTypes.ENTER_FULLSCREEN
|
|
193
|
-
});
|
|
194
|
-
break;
|
|
195
|
-
case 'KeyM':
|
|
196
|
-
e.preventDefault();
|
|
197
|
-
dispatch({ type: MediaActionTypes.TOGGLE_MUTE });
|
|
198
|
-
break;
|
|
199
|
-
case 'ArrowLeft':
|
|
200
|
-
e.preventDefault();
|
|
201
|
-
dispatch({
|
|
202
|
-
type: MediaActionTypes.SEEK,
|
|
203
|
-
detail: Math.max(0, currentTime - 10)
|
|
204
|
-
});
|
|
205
|
-
break;
|
|
206
|
-
case 'ArrowRight':
|
|
207
|
-
e.preventDefault();
|
|
208
|
-
dispatch({
|
|
209
|
-
type: MediaActionTypes.SEEK,
|
|
210
|
-
detail: currentTime + 10
|
|
211
|
-
});
|
|
212
|
-
break;
|
|
213
|
-
case 'ArrowUp':
|
|
214
|
-
e.preventDefault();
|
|
215
|
-
dispatch({
|
|
216
|
-
type: MediaActionTypes.SET_VOLUME,
|
|
217
|
-
detail: Math.min(1, volume + 0.1)
|
|
218
|
-
});
|
|
219
|
-
break;
|
|
220
|
-
case 'ArrowDown':
|
|
221
|
-
e.preventDefault();
|
|
222
|
-
dispatch({
|
|
223
|
-
type: MediaActionTypes.SET_VOLUME,
|
|
224
|
-
detail: Math.max(0, volume - 0.1)
|
|
225
|
-
});
|
|
226
|
-
break;
|
|
227
|
-
}
|
|
228
|
-
};
|
|
229
|
-
document.addEventListener('keydown', handleKeyDown);
|
|
230
|
-
return () => document.removeEventListener('keydown', handleKeyDown);
|
|
231
|
-
}, [enableKeyboardControls, dispatch, isPlaying, isFullscreen, currentTime, volume]);
|
|
232
|
-
// Event callbacks
|
|
233
|
-
React.useEffect(() => {
|
|
234
|
-
if (isPlaying)
|
|
235
|
-
onPlay?.();
|
|
236
|
-
else
|
|
237
|
-
onPause?.();
|
|
238
|
-
}, [isPlaying, onPlay, onPause]);
|
|
239
|
-
React.useEffect(() => {
|
|
240
|
-
onTimeUpdate?.(currentTime);
|
|
241
|
-
}, [currentTime, onTimeUpdate]);
|
|
242
|
-
React.useEffect(() => {
|
|
243
|
-
onVolumeChange?.(volume);
|
|
244
|
-
}, [volume, onVolumeChange]);
|
|
245
|
-
React.useEffect(() => {
|
|
246
|
-
onFullscreenChange?.(isFullscreen);
|
|
247
|
-
}, [isFullscreen, onFullscreenChange]);
|
|
248
|
-
return (_jsx("div", { ref: context.rootRef, className: cn("relative isolate flex flex-col overflow-hidden rounded-lg bg-black outline-none", "focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2", "data-[disabled]:pointer-events-none data-[disabled]:opacity-50", isFullscreen && "fixed inset-0 z-50 rounded-none", className), "data-state": isFullscreen ? "fullscreen" : "inline", "data-disabled": error ? "" : undefined, "data-controls-visible": showControls ? "" : undefined, tabIndex: 0, onMouseEnter: handleMouseEnter, onMouseLeave: handleMouseLeave, onTouchStart: handleTouchStart, onTouchMove: handleGestureMove, onTouchEnd: handleTouchEnd, onClick: handleClick, children: children }));
|
|
249
|
-
};
|
|
250
|
-
EnhancedMediaPlayer.displayName = "EnhancedMediaPlayer";
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"basic-video-player.d.ts","sourceRoot":"","sources":["basic-video-player.tsx"],"names":[],"mappings":"AAcA,MAAM,WAAW,qBAAqB;IACpC,GAAG,EAAE,MAAM,CAAA;IACX,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,wBAAgB,gBAAgB,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,qBAAqB,2CAgCjF;yBAhCe,gBAAgB"}
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
"use client";
|
|
2
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
-
import { MediaPlayerRoot } from "../media-player-root";
|
|
4
|
-
import { MediaPlayerVideo } from "../media-player-video";
|
|
5
|
-
import { MediaPlayerControls, MediaPlayerControlsOverlay } from "../media-player-controls";
|
|
6
|
-
import { MediaPlayerPlay } from "../media-player-play";
|
|
7
|
-
import { MediaPlayerSeek } from "../media-player-seek";
|
|
8
|
-
import { MediaPlayerVolume } from "../media-player-volume";
|
|
9
|
-
import { MediaPlayerTime } from "../media-player-time";
|
|
10
|
-
import { MediaPlayerFullscreen } from "../media-player-fullscreen";
|
|
11
|
-
import { MediaPlayerLoading } from "../media-player-loading";
|
|
12
|
-
import { MediaPlayerError } from "../media-player-error";
|
|
13
|
-
export function BasicVideoPlayer({ src, poster, className }) {
|
|
14
|
-
return (_jsxs(MediaPlayerRoot, { className: className, children: [_jsx(MediaPlayerVideo, { src: src, poster: poster, crossOrigin: "anonymous", playsInline: true }), _jsx(MediaPlayerLoading, {}), _jsx(MediaPlayerError, {}), _jsx(MediaPlayerControlsOverlay, {}), _jsxs(MediaPlayerControls, { children: [_jsxs("div", { className: "flex items-center gap-2", children: [_jsx(MediaPlayerPlay, {}), _jsx(MediaPlayerVolume, {}), _jsx(MediaPlayerTime, { variant: "current" })] }), _jsx("div", { className: "flex-1 px-2", children: _jsx(MediaPlayerSeek, {}) }), _jsxs("div", { className: "flex items-center gap-2", children: [_jsx(MediaPlayerTime, { variant: "duration" }), _jsx(MediaPlayerFullscreen, {})] })] })] }));
|
|
15
|
-
}
|
|
16
|
-
BasicVideoPlayer.displayName = "BasicVideoPlayer";
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"custom-controls-example.d.ts","sourceRoot":"","sources":["custom-controls-example.tsx"],"names":[],"mappings":"AASA,MAAM,WAAW,0BAA0B;IAC1C,GAAG,EAAE,MAAM,CAAA;IACX,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,SAAS,CAAC,EAAE,MAAM,CAAA;CAClB;AAED,wBAAgB,qBAAqB,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,0BAA0B,2CA6C3F;yBA7Ce,qBAAqB"}
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
"use client";
|
|
2
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
-
import { MediaPlayer } from "../media-player";
|
|
4
|
-
import { FullscreenButton } from "../ui/fullscreen-button";
|
|
5
|
-
import { PlayButton } from "../ui/play-button";
|
|
6
|
-
import { SeekBar } from "../ui/seek-bar";
|
|
7
|
-
import { TimeDisplay } from "../ui/time-display";
|
|
8
|
-
import { VolumeControl } from "../ui/volume-control";
|
|
9
|
-
export function CustomControlsExample({ src, poster, className }) {
|
|
10
|
-
return (_jsx(MediaPlayer, { src: src, customControls: true, showControls: false, className: className, children: ({ state, controls }) => (_jsxs("div", { className: "absolute inset-0 flex flex-col justify-end", children: [_jsx("div", { className: "pointer-events-none absolute inset-0 bg-gradient-to-t from-black/80 via-transparent to-transparent" }), _jsxs("div", { className: "relative z-10 space-y-3 p-4", children: [_jsx("div", { className: "w-full", children: _jsx(SeekBar, { currentTime: state.currentTime, duration: state.duration, onSeek: controls.seek, className: "w-full" }) }), _jsxs("div", { className: "flex items-center justify-between", children: [_jsxs("div", { className: "flex items-center gap-3", children: [_jsx(PlayButton, { isPlaying: state.isPlaying, onToggle: controls.toggle, size: "lg" }), _jsx(VolumeControl, { volume: state.volume, isMuted: state.isMuted, onVolumeChange: controls.setVolume, onToggleMute: controls.toggleMute }), _jsx(TimeDisplay, { currentTime: state.currentTime, duration: state.duration })] }), _jsx("div", { className: "flex items-center gap-2", children: _jsx(FullscreenButton, { isFullscreen: state.isFullscreen, onToggle: controls.toggleFullscreen }) })] })] })] })) }));
|
|
11
|
-
}
|
|
12
|
-
CustomControlsExample.displayName = "CustomControlsExample";
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"enhanced-controls-example.d.ts","sourceRoot":"","sources":["enhanced-controls-example.tsx"],"names":[],"mappings":"AAgBA,MAAM,WAAW,4BAA4B;IAC5C,GAAG,EAAE,MAAM,CAAA;IACX,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,SAAS,CAAC,EAAE,MAAM,CAAA;CAClB;AAGD,wBAAgB,uBAAuB,CAAC,EACvC,GAAG,EACH,MAAM,EACN,SAAS,EACT,EAAE,4BAA4B,2CAmB9B;AAGD,wBAAgB,6BAA6B,CAAC,EAC7C,GAAG,EACH,MAAM,EACN,SAAS,EACT,EAAE,4BAA4B,2CA+B9B;AAGD,wBAAgB,sBAAsB,CAAC,EACtC,GAAG,EACH,MAAM,EACN,SAAS,EACT,EAAE,4BAA4B,2CAsB9B"}
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
"use client";
|
|
2
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
-
import { MediaProvider } from "../../context/media-provider";
|
|
4
|
-
import { MediaPlayerRoot } from "../media-player-root";
|
|
5
|
-
import { MediaPlayerVideo } from "../media-player-video";
|
|
6
|
-
import { EnhancedControlBar, EnhancedPlayButton, EnhancedSeekBar, EnhancedBackwardButton, EnhancedForwardButton, EnhancedVolumeControl, EnhancedTimeDisplay } from "../enhanced/enhanced-controls";
|
|
7
|
-
// Complete example with all enhanced controls
|
|
8
|
-
export function EnhancedControlsExample({ src, poster, className }) {
|
|
9
|
-
return (_jsx(MediaProvider, { children: _jsxs(MediaPlayerRoot, { className: className, children: [_jsx(MediaPlayerVideo, { src: src, poster: poster }), _jsx(EnhancedControlBar, { className: "absolute right-0 bottom-0 left-0", showSkipButtons: true, showVolumeControl: true, showTimeDisplay: true, playButtonSize: "xl", skipButtonSize: "md", skipTime: 10 })] }) }));
|
|
10
|
-
}
|
|
11
|
-
// Example with individual components for custom layouts
|
|
12
|
-
export function CustomEnhancedControlsExample({ src, poster, className }) {
|
|
13
|
-
return (_jsx(MediaProvider, { children: _jsxs(MediaPlayerRoot, { className: className, children: [_jsx(MediaPlayerVideo, { src: src, poster: poster }), _jsxs("div", { className: "absolute right-0 bottom-0 left-0 bg-gradient-to-t from-black/80 to-transparent p-4", children: [_jsx(EnhancedSeekBar, { className: "mb-4" }), _jsxs("div", { className: "flex items-center justify-between", children: [_jsxs("div", { className: "flex items-center gap-3", children: [_jsx(EnhancedBackwardButton, { skipTime: 15, size: "md" }), _jsx(EnhancedPlayButton, { size: "xl" }), _jsx(EnhancedForwardButton, { skipTime: 15, size: "md" }), _jsx(EnhancedVolumeControl, {})] }), _jsxs("div", { className: "flex items-center gap-2 font-mono text-sm text-white", children: [_jsx(EnhancedTimeDisplay, { variant: "current" }), _jsx("span", { className: "text-white/60", children: "/" }), _jsx(EnhancedTimeDisplay, { variant: "duration" })] })] })] })] }) }));
|
|
14
|
-
}
|
|
15
|
-
// Minimal example with just skip buttons
|
|
16
|
-
export function SkipButtonsOnlyExample({ src, poster, className }) {
|
|
17
|
-
return (_jsx(MediaProvider, { children: _jsxs(MediaPlayerRoot, { className: className, children: [_jsx(MediaPlayerVideo, { src: src, poster: poster }), _jsx("div", { className: "-translate-x-1/2 absolute bottom-4 left-1/2 transform", children: _jsxs("div", { className: "flex items-center gap-4", children: [_jsx(EnhancedBackwardButton, { skipTime: 10, size: "lg" }), _jsx(EnhancedPlayButton, { size: "xl" }), _jsx(EnhancedForwardButton, { skipTime: 10, size: "lg" })] }) })] }) }));
|
|
18
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"enhanced-media-player-example.d.ts","sourceRoot":"","sources":["enhanced-media-player-example.tsx"],"names":[],"mappings":"AAUA,UAAU,wBAAwB;IACjC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;IACtB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,WAAW,CAAC,EAAE,MAAM,CAAA;CACpB;AAED,wBAAgB,0BAA0B,CAAC,EAC1C,GAAG,EACH,SAAS,EACT,KAAsB,EACtB,WAA+D,EAC/D,EAAE,wBAAwB,2CA8Q1B"}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
"use client";
|
|
2
|
-
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
3
|
-
import { useState } from "react";
|
|
4
|
-
import { MediaPlayer } from "../media-player";
|
|
5
|
-
import { PlayButton } from "../ui/play-button";
|
|
6
|
-
import { SeekBar } from "../ui/seek-bar";
|
|
7
|
-
import { TimeDisplay } from "../ui/time-display";
|
|
8
|
-
import { VolumeControl } from "../ui/volume-control";
|
|
9
|
-
import { cn } from "../../lib/utils";
|
|
10
|
-
export function EnhancedMediaPlayerExample({ src, className, title = "Sample Media", description = "Demonstrating the new BaroiPlayer design system" }) {
|
|
11
|
-
const [isControlsVisible, setIsControlsVisible] = useState(true);
|
|
12
|
-
return (_jsxs("div", { className: cn("mx-auto w-full max-w-4xl space-y-6", className), children: [_jsxs("div", { className: "space-y-2", children: [_jsx("h2", { className: "font-semibold text-[color:var(--color-text-primary)] text-fluid-xl", children: title }), _jsx("p", { className: "text-[color:var(--color-text-secondary)] text-fluid-sm", children: description })] }), _jsx("div", { className: cn("group relative", "hover:shadow-2xl hover:shadow-[color:var(--color-brand-primary)]/10", "transition-all duration-500 ease-out"), onMouseEnter: () => setIsControlsVisible(true), onMouseLeave: () => setIsControlsVisible(false), children: _jsx(MediaPlayer, { src: src, customControls: true, children: ({ state, controls }) => (_jsxs(_Fragment, { children: [_jsx("div", { className: cn("absolute inset-0 z-20 flex items-center justify-center", "transition-all duration-300", state.isLoading && "pointer-events-none"), children: _jsx("div", { className: cn("relative", "transition-all duration-300 ease-out", "hover:scale-105"), children: _jsx(PlayButton, { isPlaying: state.isPlaying, onToggle: controls.toggle, disabled: state.isLoading, size: "xl", className: cn("transform transition-all duration-300", !isControlsVisible && !state.isLoading && "scale-75 opacity-60", isControlsVisible && "scale-100 opacity-100") }) }) }), _jsxs("div", { className: cn("absolute right-0 bottom-0 left-0 z-30", "glass-strong border-[color:var(--media-border)]/30 border-t", "transition-all duration-300 ease-out", !isControlsVisible && "translate-y-full opacity-0", isControlsVisible && "translate-y-0 opacity-100"), children: [_jsx("div", { className: "-mt-2 px-4", children: _jsx(SeekBar, { currentTime: state.currentTime, duration: state.duration, buffered: state.buffered, onSeek: controls.seek, className: "w-full" }) }), _jsxs("div", { className: cn("flex items-center justify-between gap-4 p-4", "media-md:px-8 media-sm:px-6"), children: [_jsxs("div", { className: "flex items-center gap-3 media-sm:gap-4", children: [_jsx(PlayButton, { isPlaying: state.isPlaying, onToggle: controls.toggle, disabled: state.isLoading, size: "md" }), _jsx("div", { className: "media-sm:block hidden", children: _jsx(TimeDisplay, { currentTime: state.currentTime, duration: state.duration, className: "font-mono text-fluid-sm" }) })] }), _jsxs("div", { className: cn("media-md:block hidden flex-1 text-center", "space-y-1"), children: [_jsx("p", { className: "truncate font-medium text-[color:var(--media-text)] text-fluid-sm", children: title }), state.duration > 0 && (_jsxs("div", { className: "text-[color:var(--media-text-secondary)] text-xs", children: [Math.round((state.currentTime / state.duration) * 100), "% complete"] }))] }), _jsxs("div", { className: "flex items-center gap-3 media-sm:gap-4", children: [_jsx("div", { className: "media-sm:block hidden", children: _jsx(VolumeControl, { volume: state.volume, isMuted: state.isMuted, onVolumeChange: controls.setVolume, onToggleMute: controls.toggleMute, size: "md" }) }), _jsx("button", { onClick: controls.toggleFullscreen, className: cn("group glass-strong media-control relative", "size-10 touch-manipulation rounded-xl contain-layout", "bg-[color:var(--media-control-bg)] backdrop-blur-sm", "border border-[color:var(--media-border)]/30", "text-[color:var(--media-text)] transition-all duration-300", "hover:bg-[color:var(--media-control-hover)]", "hover:border-[color:var(--media-border)]/50", "hover:-translate-y-0.5 hover:scale-105", "active:translate-y-0 active:scale-100", "focus-ring"), "aria-label": "Enter fullscreen", children: _jsx("svg", { className: "m-auto size-5 transition-transform duration-200 group-hover:scale-110", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: _jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M4 8V4m0 0h4M4 4l5 5m11-1V4m0 0h-4m4 0l-5 5M4 16v4m0 0h4m-4 0l5-5m11 5l-5-5m5 5v-4m0 4h-4" }) }) })] })] }), _jsx("div", { className: "media-sm:hidden px-4 pb-3", children: _jsx(TimeDisplay, { currentTime: state.currentTime, duration: state.duration, className: "text-center font-mono text-sm" }) })] }), state.isLoading && (_jsx("div", { className: cn("absolute inset-0 z-40 flex items-center justify-center", "glass animate-enter rounded-lg", "bg-[color:var(--media-bg)]/20 backdrop-blur-sm"), children: _jsxs("div", { className: "space-y-4 text-center text-[color:var(--media-text)]", children: [_jsxs("div", { className: "relative", children: [_jsx("div", { className: cn("size-16 animate-spin rounded-full border-2", "border-[color:var(--color-brand-accent)]/30", "border-t-[color:var(--color-brand-accent)]") }), _jsx("div", { className: cn("absolute inset-0 size-16 rounded-full", "bg-gradient-to-r from-[color:var(--color-brand-primary)] to-[color:var(--color-brand-accent)]", "animate-pulse opacity-20 blur-lg") })] }), _jsxs("p", { className: "font-medium text-[color:var(--media-text-secondary)] text-fluid-base", children: ["Loading ", title, "..."] })] }) })), state.error && (_jsx("div", { className: cn("absolute inset-0 z-40 flex items-center justify-center", "glass-strong animate-enter rounded-lg", "bg-[color:var(--color-error)]/10 backdrop-blur-md"), children: _jsxs("div", { className: "mx-auto max-w-sm space-y-4 p-6 text-center text-[color:var(--media-text)]", children: [_jsx("div", { className: "mx-auto w-fit rounded-full bg-[color:var(--color-error)]/20 p-4", children: _jsx("svg", { className: "size-8 text-[color:var(--color-error)]", fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", children: _jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-2.5L13.732 4c-.77-.833-1.964-.833-2.732 0L3.732 16.5c-.77.833.192 2.5 1.732 2.5z" }) }) }), _jsxs("div", { children: [_jsx("h3", { className: "mb-2 font-semibold text-fluid-lg", children: "Playback Error" }), _jsx("p", { className: "text-[color:var(--media-text-secondary)] text-fluid-sm", children: state.error })] }), _jsx("button", { onClick: () => window.location.reload(), className: cn("rounded-lg px-6 py-2 font-medium transition-all duration-200", "bg-[color:var(--color-brand-primary)] text-[color:var(--media-text)]", "hover:scale-105 hover:bg-[color:var(--color-brand-accent)]", "focus-ring active:scale-95"), children: "Try Again" })] }) }))] })) }) }), _jsxs("div", { className: "grid grid-cols-1 media-lg:grid-cols-3 media-sm:grid-cols-2 gap-4", children: [_jsxs("div", { className: "glass-strong space-y-3 rounded-xl border border-[color:var(--glass-border-medium)] p-6", children: [_jsx("h3", { className: "font-semibold text-[color:var(--color-text-primary)] text-fluid-base", children: "Modern Colors" }), _jsx("p", { className: "text-[color:var(--color-text-secondary)] text-fluid-sm", children: "OKLCH color space for vivid, accessible colors across all displays." }), _jsxs("div", { className: "flex gap-2", children: [_jsx("div", { className: "h-4 w-4 rounded-full bg-[color:var(--color-brand-primary)] shadow-sm" }), _jsx("div", { className: "h-4 w-4 rounded-full bg-[color:var(--color-brand-accent)] shadow-sm" }), _jsx("div", { className: "h-4 w-4 rounded-full bg-[color:var(--color-brand-highlight)] shadow-sm" })] })] }), _jsxs("div", { className: "glass-strong space-y-3 rounded-xl border border-[color:var(--glass-border-medium)] p-6", children: [_jsx("h3", { className: "font-semibold text-[color:var(--color-text-primary)] text-fluid-base", children: "Container Queries" }), _jsx("p", { className: "text-[color:var(--color-text-secondary)] text-fluid-sm", children: "Responsive design based on container size, not just viewport." }), _jsx("div", { className: "font-mono text-[color:var(--color-text-tertiary)] text-xs", children: "@container (min-width: 480px)" })] }), _jsxs("div", { className: "glass-strong media-lg:col-span-1 media-sm:col-span-2 space-y-3 rounded-xl border border-[color:var(--glass-border-medium)] p-6", children: [_jsx("h3", { className: "font-semibold text-[color:var(--color-text-primary)] text-fluid-base", children: "Smooth Animations" }), _jsx("p", { className: "text-[color:var(--color-text-secondary)] text-fluid-sm", children: "Performance-optimized with CSS containment and modern easing." }), _jsx("div", { className: "h-1 w-8 animate-pulse rounded-full bg-gradient-to-r from-[color:var(--color-brand-primary)] to-[color:var(--color-brand-accent)]" })] })] })] }));
|
|
13
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"loading-states-demo.d.ts","sourceRoot":"","sources":["loading-states-demo.tsx"],"names":[],"mappings":"AAOA,wBAAgB,iBAAiB,4CAsIhC"}
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
"use client";
|
|
2
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
-
import { useState } from "react";
|
|
4
|
-
import { SimpleMinimalPlayer } from "../variants/minimal/SimpleMinimalPlayer";
|
|
5
|
-
import { AnimateLoadingWrapper } from "../LoadingState";
|
|
6
|
-
import { cn } from "../../lib/utils";
|
|
7
|
-
export function LoadingStatesDemo() {
|
|
8
|
-
const [showCustomLoading, setShowCustomLoading] = useState(false);
|
|
9
|
-
const [loadingVariant, setLoadingVariant] = useState("animate");
|
|
10
|
-
// Custom loading component example
|
|
11
|
-
const CustomLoadingComponent = ({ context }) => (_jsxs("div", { className: "flex flex-col items-center gap-4 text-white", children: [_jsx("div", { className: "h-16 w-16 animate-pulse rounded-full bg-gradient-to-r from-cyan-500 to-blue-500" }), _jsxs("p", { className: "font-medium text-sm", children: ["Custom ", context, " loader"] })] }));
|
|
12
|
-
return (_jsx("div", { className: "min-h-screen bg-gray-950 p-8", children: _jsxs("div", { className: "mx-auto max-w-6xl space-y-8", children: [_jsxs("div", { className: "text-center", children: [_jsx("h1", { className: "mb-4 font-bold text-3xl text-white", children: "Loading States Demo" }), _jsx("p", { className: "mb-6 text-gray-400", children: "Demonstrating the new AnimateLoading integration with context-aware loading text" })] }), _jsxs("div", { className: "mb-8 grid grid-cols-1 gap-6 md:grid-cols-3", children: [_jsxs("div", { className: "relative h-40 overflow-hidden rounded-lg bg-black", children: [_jsx(AnimateLoadingWrapper, { context: "initial" }), _jsx("p", { className: "absolute bottom-2 left-2 text-white/60 text-xs", children: "Initial Loading" })] }), _jsxs("div", { className: "relative h-40 overflow-hidden rounded-lg bg-black", children: [_jsx(AnimateLoadingWrapper, { context: "seeking" }), _jsx("p", { className: "absolute bottom-2 left-2 text-white/60 text-xs", children: "Seeking" })] }), _jsxs("div", { className: "relative h-40 overflow-hidden rounded-lg bg-black", children: [_jsx(AnimateLoadingWrapper, { context: "buffering" }), _jsx("p", { className: "absolute bottom-2 left-2 text-white/60 text-xs", children: "Buffering" })] })] }), _jsxs("div", { className: "mb-6 flex justify-center gap-4", children: [_jsxs("div", { className: "flex items-center gap-2", children: [_jsx("label", { className: "text-sm text-white", children: "Loading Variant:" }), _jsxs("select", { value: loadingVariant, onChange: (e) => setLoadingVariant(e.target.value), className: "rounded border border-gray-700 bg-gray-800 px-3 py-1 text-white", children: [_jsx("option", { value: "animate", children: "Animate (Default)" }), _jsx("option", { value: "spinner", children: "Spinner" }), _jsx("option", { value: "dots", children: "Dots" }), _jsx("option", { value: "skeleton", children: "Skeleton" })] })] }), _jsxs("button", { onClick: () => setShowCustomLoading(!showCustomLoading), className: cn("rounded-lg px-4 py-2 transition-colors", showCustomLoading
|
|
13
|
-
? "bg-cyan-600 text-white"
|
|
14
|
-
: "bg-gray-800 text-gray-300 hover:bg-gray-700"), children: [showCustomLoading ? "Using Custom" : "Use Custom", " Loading"] })] }), _jsxs("div", { className: "space-y-4", children: [_jsx("h2", { className: "font-semibold text-white text-xl", children: "Live Player Example" }), _jsx("div", { className: "aspect-video overflow-hidden rounded-lg bg-black", children: _jsx(SimpleMinimalPlayer, { src: "https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/BigBuckBunny.mp4", poster: "https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/images/BigBuckBunny.jpg", crossOrigin: "anonymous", showLoadingState: true, loadingComponent: showCustomLoading ? CustomLoadingComponent : undefined, loadingProps: {
|
|
15
|
-
variant: showCustomLoading ? undefined : loadingVariant,
|
|
16
|
-
size: "sm",
|
|
17
|
-
message: showCustomLoading ? undefined : "Custom message..."
|
|
18
|
-
} }) }), _jsxs("div", { className: "rounded-lg bg-gray-900 p-4", children: [_jsx("h3", { className: "mb-2 font-medium text-white", children: "Features:" }), _jsxs("ul", { className: "space-y-1 text-gray-300 text-sm", children: [_jsx("li", { children: "\u2022 AnimateLoading from UI package as default" }), _jsx("li", { children: "\u2022 Context-aware loading messages" }), _jsx("li", { children: "\u2022 No blur backdrop for better performance" }), _jsx("li", { children: "\u2022 Customizable text size based on size prop" }), _jsx("li", { children: "\u2022 Support for custom loading components" }), _jsx("li", { children: "\u2022 Fallback to other variants (spinner, dots, skeleton)" })] })] }), _jsxs("div", { className: "rounded-lg bg-gray-900 p-4", children: [_jsx("h3", { className: "mb-2 font-medium text-white", children: "Usage:" }), _jsx("pre", { className: "overflow-x-auto text-green-400 text-sm", children: _jsx("code", { children: `// Default with AnimateLoading
|
|
19
|
-
<SimpleMinimalPlayer
|
|
20
|
-
src="video.mp4"
|
|
21
|
-
showLoadingState={true}
|
|
22
|
-
/>
|
|
23
|
-
|
|
24
|
-
// Custom loading component
|
|
25
|
-
<SimpleMinimalPlayer
|
|
26
|
-
src="video.mp4"
|
|
27
|
-
loadingComponent={CustomLoader}
|
|
28
|
-
loadingProps={{
|
|
29
|
-
size: "sm",
|
|
30
|
-
message: "Please wait..."
|
|
31
|
-
}}
|
|
32
|
-
/>
|
|
33
|
-
|
|
34
|
-
// Use different variant
|
|
35
|
-
<SimpleMinimalPlayer
|
|
36
|
-
src="video.mp4"
|
|
37
|
-
loadingProps={{
|
|
38
|
-
variant: "spinner"
|
|
39
|
-
}}
|
|
40
|
-
/>` }) })] })] })] }) }));
|
|
41
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"react-19-demo.d.ts","sourceRoot":"","sources":["react-19-demo.tsx"],"names":[],"mappings":"AAiCA,UAAU,2BAA2B;IACpC,GAAG,EAAE,MAAM,CAAA;IACX,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,OAAO,CAAC,EAAE,MAAM,CAAA;CAChB;AAED,wBAAgB,sBAAsB,CAAC,EACtC,GAAG,EACH,MAAM,EACN,SAAS,EACT,OAAyB,EACzB,EAAE,2BAA2B,2CA2B7B;AAiOD,wBAAgB,kBAAkB,4CAmFjC"}
|
|
@@ -1,104 +0,0 @@
|
|
|
1
|
-
"use client";
|
|
2
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
-
import React from "react";
|
|
4
|
-
import { MediaProvider } from "../../context/media-provider";
|
|
5
|
-
import { MediaPlayerRoot } from "../media-player-root";
|
|
6
|
-
import { MediaPlayerVideo } from "../media-player-video";
|
|
7
|
-
import { MediaPlayerControls } from "../media-player-controls";
|
|
8
|
-
import { MediaPlayerPlay } from "../media-player-play";
|
|
9
|
-
import { MediaPlayerVolume } from "../media-player-volume";
|
|
10
|
-
import { MediaPlayerTime } from "../media-player-time";
|
|
11
|
-
import { MediaPlayerSeek } from "../media-player-seek";
|
|
12
|
-
import { MediaPlayerFullscreen } from "../media-player-fullscreen";
|
|
13
|
-
import { EnhancedMediaWrapper, MediaLoading, useMediaConcurrent, useMediaPerformance } from "../media-suspense";
|
|
14
|
-
import { useEnhancedMediaState } from "../../hooks/use-media-state";
|
|
15
|
-
import { useMediaActions } from "../../hooks/use-media-actions";
|
|
16
|
-
import { useMediaOptimistic } from "../../hooks/use-media-optimistic";
|
|
17
|
-
import { useMediaErrorHandler } from "../../context/error-handling";
|
|
18
|
-
import { useOptimisticMediaSelector } from "../../context/media-context";
|
|
19
|
-
import { cn } from "../../lib/utils";
|
|
20
|
-
export function React19MediaPlayerDemo({ src, poster, className, mediaId = "react-19-demo" }) {
|
|
21
|
-
return (_jsx(EnhancedMediaWrapper, { className: className, priority: "high", loadingFallback: _jsx(MediaLoading, { variant: "skeleton", size: "lg" }), errorFallback: ErrorFallback, children: _jsx(MediaProvider, { mediaId: mediaId, useEnhancedStore: true, enableOptimisticUpdates: true, enableErrorRecovery: true, persistenceConfig: {
|
|
22
|
-
userPreferences: true,
|
|
23
|
-
sessionState: true,
|
|
24
|
-
debounceMs: 300
|
|
25
|
-
}, retryConfig: {
|
|
26
|
-
maxRetries: 3,
|
|
27
|
-
exponentialBackoff: true
|
|
28
|
-
}, children: _jsx(MediaPlayerContent, { src: src, poster: poster }) }) }));
|
|
29
|
-
}
|
|
30
|
-
// Internal content component with React 19 hooks
|
|
31
|
-
function MediaPlayerContent({ src, poster }) {
|
|
32
|
-
// React 19 enhanced state management
|
|
33
|
-
const mediaState = useEnhancedMediaState();
|
|
34
|
-
const { isLoading: actionLoading, errorMessage, ...actions } = useMediaActions(mediaState.state // Type assertion for store
|
|
35
|
-
);
|
|
36
|
-
// React 19 optimistic updates
|
|
37
|
-
const optimisticState = useMediaOptimistic(mediaState.state);
|
|
38
|
-
// React 19 concurrent features
|
|
39
|
-
const { isPending, updateWithTransition } = useMediaConcurrent();
|
|
40
|
-
// Performance monitoring
|
|
41
|
-
const { metrics, recordRenderTime } = useMediaPerformance();
|
|
42
|
-
// Error handling
|
|
43
|
-
const { errors, clearError } = useMediaErrorHandler();
|
|
44
|
-
// Record render performance
|
|
45
|
-
React.useEffect(() => {
|
|
46
|
-
const start = performance.now();
|
|
47
|
-
return () => recordRenderTime(start);
|
|
48
|
-
}, [recordRenderTime]);
|
|
49
|
-
// Optimistic selectors for immediate UI feedback
|
|
50
|
-
const isPlaying = useOptimisticMediaSelector(state => state.isPlaying);
|
|
51
|
-
const volume = useOptimisticMediaSelector(state => state.volume);
|
|
52
|
-
const currentTime = useOptimisticMediaSelector(state => state.currentTime);
|
|
53
|
-
const duration = useOptimisticMediaSelector(state => state.duration);
|
|
54
|
-
const isFullscreen = useOptimisticMediaSelector(state => state.isFullscreen);
|
|
55
|
-
// Enhanced action handlers with React 19 features
|
|
56
|
-
const handlePlayPause = async () => {
|
|
57
|
-
await updateWithTransition(async () => {
|
|
58
|
-
await optimisticState.togglePlayPause();
|
|
59
|
-
});
|
|
60
|
-
};
|
|
61
|
-
const handleVolumeChange = async (newVolume) => {
|
|
62
|
-
await optimisticState.setVolumeOptimistic(newVolume);
|
|
63
|
-
};
|
|
64
|
-
const handleSeek = async (time) => {
|
|
65
|
-
await optimisticState.seekOptimistic(time);
|
|
66
|
-
};
|
|
67
|
-
const handleFullscreenToggle = async () => {
|
|
68
|
-
await optimisticState.toggleFullscreenOptimistic();
|
|
69
|
-
};
|
|
70
|
-
return (_jsxs(MediaPlayerRoot, { className: cn("group relative overflow-hidden rounded-lg", "border border-border bg-black shadow-lg", "transition-all duration-200", isPending && "opacity-75", // Visual feedback for pending transitions
|
|
71
|
-
actionLoading && "pointer-events-none"), enableGestures: true, enableMobileOptimizations: true, children: [_jsx(MediaPlayerVideo, { src: src, poster: poster, className: "aspect-video w-full object-contain" }), (actionLoading || isPending) && (_jsx("div", { className: "absolute inset-0 flex items-center justify-center bg-black/20", children: _jsx(MediaLoading, { variant: "spinner", size: "lg", children: actionLoading ? "Processing..." : "Updating..." }) })), _jsx(MediaPlayerControls, { className: "absolute right-0 bottom-0 left-0", children: _jsxs("div", { className: "flex items-center gap-4 bg-gradient-to-t from-black/80 to-transparent p-4", children: [_jsx(MediaPlayerPlay, { className: "text-white transition-colors hover:text-white/80" }), _jsx(MediaPlayerVolume, { className: "text-white" }), _jsx(MediaPlayerTime, { className: "min-w-[120px] font-mono text-sm text-white" }), _jsx("div", { className: "flex-1", children: _jsx(MediaPlayerSeek, { className: "w-full" }) }), _jsx(MediaPlayerFullscreen, { className: "text-white transition-colors hover:text-white/80" })] }) }), (errorMessage || errors.length > 0) && (_jsxs("div", { className: "absolute top-4 right-4 rounded-lg bg-destructive/90 px-3 py-2 text-destructive-foreground text-sm", children: [errorMessage || errors[0]?.message, _jsx("button", { onClick: () => clearError(errors[0] ? `${errors[0].action?.type}-${errors[0].timestamp}` : ''), className: "ml-2 underline hover:no-underline", children: "Dismiss" })] })), process.env.NODE_ENV === 'development' && (_jsx(PerformanceDebugPanel, { metrics: metrics, optimisticState: optimisticState, errors: errors }))] }));
|
|
72
|
-
}
|
|
73
|
-
// Error fallback component
|
|
74
|
-
function ErrorFallback({ error, resetError }) {
|
|
75
|
-
return (_jsxs("div", { className: "flex min-h-[300px] flex-col items-center justify-center rounded-lg border border-destructive/20 bg-destructive/10 p-8", children: [_jsx("div", { className: "mb-2 font-semibold text-destructive text-xl", children: "React 19 Media Player Error" }), _jsx("div", { className: "mb-4 max-w-md text-center text-muted-foreground", children: error.message }), _jsx("button", { onClick: resetError, className: "rounded-lg bg-primary px-4 py-2 text-primary-foreground transition-colors hover:bg-primary/90", children: "Retry Player" })] }));
|
|
76
|
-
}
|
|
77
|
-
// Performance debug panel (development only)
|
|
78
|
-
function PerformanceDebugPanel({ metrics, optimisticState, errors }) {
|
|
79
|
-
const [isExpanded, setIsExpanded] = React.useState(false);
|
|
80
|
-
if (!isExpanded) {
|
|
81
|
-
return (_jsx("button", { onClick: () => setIsExpanded(true), className: "absolute top-4 left-4 rounded bg-blue-600 px-2 py-1 text-white text-xs", children: "Debug" }));
|
|
82
|
-
}
|
|
83
|
-
return (_jsxs("div", { className: "absolute top-4 left-4 max-w-sm rounded-lg bg-black/90 p-4 font-mono text-white text-xs", children: [_jsxs("div", { className: "mb-2 flex items-center justify-between", children: [_jsx("span", { className: "font-bold", children: "React 19 Debug" }), _jsx("button", { onClick: () => setIsExpanded(false), className: "text-white/60 hover:text-white", children: "\u00D7" })] }), _jsxs("div", { className: "space-y-1", children: [_jsxs("div", { children: ["Render Time: ", metrics.renderTime, "ms"] }), _jsxs("div", { children: ["Suspense Count: ", metrics.suspenseCount] }), _jsxs("div", { children: ["Error Count: ", metrics.errorCount] }), _jsxs("div", { children: ["Transition Count: ", metrics.transitionCount] }), _jsxs("div", { children: ["Has Optimistic: ", optimisticState.hasOptimisticUpdates ? 'Yes' : 'No'] }), _jsxs("div", { children: ["Active Errors: ", errors.length] })] }), optimisticState.differences?.length > 0 && (_jsxs("div", { className: "mt-2 border-white/20 border-t pt-2", children: [_jsx("div", { className: "mb-1 font-bold", children: "Optimistic Diffs:" }), optimisticState.differences.map((diff, i) => (_jsxs("div", { className: "text-yellow-400", children: [diff.key, ": ", JSON.stringify(diff.optimistic), "(was: ", JSON.stringify(diff.actual), ")"] }, i)))] }))] }));
|
|
84
|
-
}
|
|
85
|
-
// Example usage component
|
|
86
|
-
export function React19DemoExample() {
|
|
87
|
-
const [currentSrc, setCurrentSrc] = React.useState("https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/BigBuckBunny.mp4");
|
|
88
|
-
const videoSources = [
|
|
89
|
-
{
|
|
90
|
-
src: "https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/BigBuckBunny.mp4",
|
|
91
|
-
title: "Big Buck Bunny",
|
|
92
|
-
poster: "https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/images/BigBuckBunny.jpg"
|
|
93
|
-
},
|
|
94
|
-
{
|
|
95
|
-
src: "https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/ElephantsDream.mp4",
|
|
96
|
-
title: "Elephants Dream",
|
|
97
|
-
poster: "https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/images/ElephantsDream.jpg"
|
|
98
|
-
}
|
|
99
|
-
];
|
|
100
|
-
const currentVideo = videoSources.find(v => v.src === currentSrc);
|
|
101
|
-
return (_jsxs("div", { className: "mx-auto max-w-4xl space-y-6 p-6", children: [_jsxs("div", { children: [_jsx("h1", { className: "mb-2 font-bold text-3xl", children: "React 19 Enhanced Media Player" }), _jsx("p", { className: "text-muted-foreground", children: "Featuring useOptimistic, useActionState, Suspense, concurrent features, error handling, state persistence, and performance optimizations." })] }), _jsx("div", { className: "flex gap-4", children: videoSources.map((video) => (_jsx("button", { onClick: () => setCurrentSrc(video.src), className: cn("rounded-lg border px-4 py-2 transition-colors", currentSrc === video.src
|
|
102
|
-
? "border-primary bg-primary text-primary-foreground"
|
|
103
|
-
: "border-border bg-background hover:border-primary/50"), children: video.title }, video.src))) }), _jsx(React19MediaPlayerDemo, { src: currentSrc, poster: currentVideo.poster, mediaId: `demo-${currentSrc}`, className: "w-full" }), _jsxs("div", { className: "grid grid-cols-1 gap-4 text-sm md:grid-cols-2", children: [_jsxs("div", { className: "space-y-2", children: [_jsx("h3", { className: "font-semibold", children: "React 19 Features" }), _jsxs("ul", { className: "space-y-1 text-muted-foreground", children: [_jsx("li", { children: "\u2705 useOptimistic for immediate UI feedback" }), _jsx("li", { children: "\u2705 useActionState for form-like actions" }), _jsx("li", { children: "\u2705 Automatic memoization via React compiler" }), _jsx("li", { children: "\u2705 Concurrent features with Suspense" }), _jsx("li", { children: "\u2705 Enhanced error boundaries" })] })] }), _jsxs("div", { className: "space-y-2", children: [_jsx("h3", { className: "font-semibold", children: "Media Features" }), _jsxs("ul", { className: "space-y-1 text-muted-foreground", children: [_jsx("li", { children: "\u2705 Optimistic play/pause/seek/volume" }), _jsx("li", { children: "\u2705 Automatic state persistence" }), _jsx("li", { children: "\u2705 Error recovery with retries" }), _jsx("li", { children: "\u2705 Touch gestures & mobile optimization" }), _jsx("li", { children: "\u2705 Performance monitoring" })] })] })] })] }));
|
|
104
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"volume-orientation-demo.d.ts","sourceRoot":"","sources":["volume-orientation-demo.tsx"],"names":[],"mappings":"AAKA,wBAAgB,qBAAqB,4CA4GpC"}
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
"use client";
|
|
2
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
-
import { useState } from "react";
|
|
4
|
-
import { SimpleMinimalPlayer } from "../variants/minimal/SimpleMinimalPlayer";
|
|
5
|
-
export function VolumeOrientationDemo() {
|
|
6
|
-
const [orientation, setOrientation] = useState("horizontal");
|
|
7
|
-
return (_jsx("div", { className: "min-h-screen bg-gray-950 p-8", children: _jsxs("div", { className: "mx-auto max-w-5xl space-y-8", children: [_jsxs("div", { className: "text-center", children: [_jsx("h1", { className: "mb-4 font-bold text-3xl text-white", children: "Enhanced Volume Control Demo" }), _jsx("p", { className: "mb-6 text-gray-400", children: "Small gradient volume slider with horizontal/vertical orientation" }), _jsxs("div", { className: "mb-8 flex justify-center gap-4", children: [_jsx("button", { onClick: () => setOrientation("horizontal"), className: `rounded-lg px-4 py-2 transition-colors ${orientation === "horizontal"
|
|
8
|
-
? "bg-cyan-600 text-white"
|
|
9
|
-
: "bg-gray-800 text-gray-400 hover:bg-gray-700"}`, children: "Horizontal (Default)" }), _jsx("button", { onClick: () => setOrientation("vertical"), className: `rounded-lg px-4 py-2 transition-colors ${orientation === "vertical"
|
|
10
|
-
? "bg-cyan-600 text-white"
|
|
11
|
-
: "bg-gray-800 text-gray-400 hover:bg-gray-700"}`, children: "Vertical" })] })] }), _jsx("div", { className: "aspect-video overflow-hidden rounded-lg bg-black", children: _jsx(SimpleMinimalPlayer, { src: "https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/BigBuckBunny.mp4", poster: "https://commondatastorage.googleapis.com/gtv-videos-bucket/sample/images/BigBuckBunny.jpg", crossOrigin: "anonymous", className: "h-full w-full", volumeOrientation: orientation }) }), _jsxs("div", { className: "mt-8 grid gap-6 md:grid-cols-2", children: [_jsxs("div", { className: "rounded-lg bg-gray-900 p-6", children: [_jsx("h3", { className: "mb-3 font-semibold text-lg text-white", children: "Horizontal Mode (Default)" }), _jsxs("ul", { className: "space-y-2 text-gray-400 text-sm", children: [_jsx("li", { children: "\u2022 Slider appears beside the volume button" }), _jsx("li", { children: "\u2022 Expands horizontally on hover" }), _jsx("li", { children: "\u2022 Cyan to blue gradient (4px height)" }), _jsx("li", { children: "\u2022 Smooth 300ms transition" }), _jsx("li", { children: "\u2022 White thumb appears on hover" })] })] }), _jsxs("div", { className: "rounded-lg bg-gray-900 p-6", children: [_jsx("h3", { className: "mb-3 font-semibold text-lg text-white", children: "Vertical Mode" }), _jsxs("ul", { className: "space-y-2 text-gray-400 text-sm", children: [_jsx("li", { children: "\u2022 Slider appears above the volume button" }), _jsx("li", { children: "\u2022 Expands vertically on hover" }), _jsx("li", { children: "\u2022 Same gradient rotated 90\u00B0" }), _jsx("li", { children: "\u2022 Shows percentage value" }), _jsx("li", { children: "\u2022 Dark backdrop for visibility" })] })] })] }), _jsxs("div", { className: "rounded-lg bg-gray-900 p-6", children: [_jsx("h3", { className: "mb-3 font-semibold text-lg text-white", children: "Usage Example" }), _jsx("pre", { className: "overflow-x-auto text-gray-300 text-sm", children: _jsx("code", { children: `// Default horizontal orientation
|
|
12
|
-
<VolumeControl
|
|
13
|
-
volume={volume}
|
|
14
|
-
isMuted={isMuted}
|
|
15
|
-
showVolumeSlider={showSlider}
|
|
16
|
-
onToggleMute={handleMute}
|
|
17
|
-
onVolumeChange={handleVolumeChange}
|
|
18
|
-
onShowVolumeSlider={setShowSlider}
|
|
19
|
-
/>
|
|
20
|
-
|
|
21
|
-
// Vertical orientation
|
|
22
|
-
<VolumeControl
|
|
23
|
-
volume={volume}
|
|
24
|
-
isMuted={isMuted}
|
|
25
|
-
showVolumeSlider={showSlider}
|
|
26
|
-
onToggleMute={handleMute}
|
|
27
|
-
onVolumeChange={handleVolumeChange}
|
|
28
|
-
onShowVolumeSlider={setShowSlider}
|
|
29
|
-
orientation="vertical"
|
|
30
|
-
/>` }) })] })] }) }));
|
|
31
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"icon-demo.d.ts","sourceRoot":"","sources":["icon-demo.tsx"],"names":[],"mappings":"AAaA,wBAAgB,cAAc,4CAmM7B"}
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import { useState } from 'react';
|
|
3
|
-
import { IconProvider, PlayIcon, PauseIcon, VolumeIcon, VolumeOffIcon, SettingsIcon, FullscreenIcon, LoadingIcon, PlayPauseIcon } from '../icons';
|
|
4
|
-
export function IconSystemDemo() {
|
|
5
|
-
const [isPlaying, setIsPlaying] = useState(false);
|
|
6
|
-
const [volume, setVolume] = useState(0.8);
|
|
7
|
-
const [theme, setTheme] = useState({
|
|
8
|
-
size: 24,
|
|
9
|
-
strokeWidth: 2,
|
|
10
|
-
color: 'currentColor'
|
|
11
|
-
});
|
|
12
|
-
const customPlayIcon = ({ className, ...props }) => (_jsxs("svg", { className: className, width: "24", height: "24", viewBox: "0 0 24 24", fill: "none", ...props, children: [_jsx("circle", { cx: "12", cy: "12", r: "10", fill: "#ff6b6b" }), _jsx("polygon", { points: "10 8 16 12 10 16 10 8", fill: "white" })] }));
|
|
13
|
-
return (_jsx("div", { className: "min-h-screen bg-gray-950 p-8", children: _jsxs("div", { className: "mx-auto max-w-4xl", children: [_jsx("h1", { className: "mb-8 text-center font-bold text-3xl text-white", children: "Icon System Demo" }), _jsxs("div", { className: "mb-8 rounded-lg bg-gray-800 p-6", children: [_jsx("h2", { className: "mb-4 font-semibold text-white text-xl", children: "Theme Configuration" }), _jsxs("div", { className: "grid grid-cols-1 gap-4 md:grid-cols-3", children: [_jsxs("div", { children: [_jsxs("label", { className: "mb-2 block font-medium text-sm text-white", children: ["Size: ", theme.size] }), _jsx("input", { type: "range", min: "16", max: "48", value: theme.size, onChange: (e) => setTheme(prev => ({ ...prev, size: Number(e.target.value) })), className: "h-2 w-full cursor-pointer appearance-none rounded-lg bg-gray-700" })] }), _jsxs("div", { children: [_jsxs("label", { className: "mb-2 block font-medium text-sm text-white", children: ["Stroke Width: ", theme.strokeWidth] }), _jsx("input", { type: "range", min: "1", max: "4", step: "0.5", value: theme.strokeWidth, onChange: (e) => setTheme(prev => ({ ...prev, strokeWidth: Number(e.target.value) })), className: "h-2 w-full cursor-pointer appearance-none rounded-lg bg-gray-700" })] }), _jsxs("div", { children: [_jsx("label", { className: "mb-2 block font-medium text-sm text-white", children: "Color" }), _jsxs("select", { value: theme.color, onChange: (e) => setTheme(prev => ({ ...prev, color: e.target.value })), className: "w-full rounded-lg border border-gray-600 bg-gray-700 p-2 text-white", children: [_jsx("option", { value: "currentColor", children: "Current Color" }), _jsx("option", { value: "#ffffff", children: "White" }), _jsx("option", { value: "#06b6d4", children: "Cyan" }), _jsx("option", { value: "#f59e0b", children: "Amber" }), _jsx("option", { value: "#ef4444", children: "Red" })] })] })] })] }), _jsxs("div", { className: "grid grid-cols-1 gap-8 lg:grid-cols-2", children: [_jsxs("div", { className: "rounded-lg bg-gray-800 p-6", children: [_jsx("h2", { className: "mb-4 font-semibold text-white text-xl", children: "Default Icons" }), _jsx(IconProvider, { theme: theme, children: _jsxs("div", { className: "grid grid-cols-4 gap-4 text-white", children: [_jsxs("div", { className: "flex flex-col items-center space-y-2", children: [_jsx(PlayIcon, {}), _jsx("span", { className: "text-xs", children: "Play" })] }), _jsxs("div", { className: "flex flex-col items-center space-y-2", children: [_jsx(PauseIcon, {}), _jsx("span", { className: "text-xs", children: "Pause" })] }), _jsxs("div", { className: "flex flex-col items-center space-y-2", children: [_jsx(VolumeIcon, {}), _jsx("span", { className: "text-xs", children: "Volume" })] }), _jsxs("div", { className: "flex flex-col items-center space-y-2", children: [_jsx(VolumeOffIcon, {}), _jsx("span", { className: "text-xs", children: "Mute" })] }), _jsxs("div", { className: "flex flex-col items-center space-y-2", children: [_jsx(SettingsIcon, {}), _jsx("span", { className: "text-xs", children: "Settings" })] }), _jsxs("div", { className: "flex flex-col items-center space-y-2", children: [_jsx(FullscreenIcon, {}), _jsx("span", { className: "text-xs", children: "Fullscreen" })] }), _jsxs("div", { className: "flex flex-col items-center space-y-2", children: [_jsx(LoadingIcon, {}), _jsx("span", { className: "text-xs", children: "Loading" })] }), _jsxs("div", { className: "flex flex-col items-center space-y-2", children: [_jsx(PlayPauseIcon, { isPlaying: isPlaying }), _jsx("span", { className: "text-xs", children: "Play/Pause" })] })] }) })] }), _jsxs("div", { className: "rounded-lg bg-gray-800 p-6", children: [_jsx("h2", { className: "mb-4 font-semibold text-white text-xl", children: "Custom Icons" }), _jsx(IconProvider, { theme: theme, icons: {
|
|
14
|
-
play: customPlayIcon
|
|
15
|
-
}, children: _jsxs("div", { className: "grid grid-cols-4 gap-4 text-white", children: [_jsxs("div", { className: "flex flex-col items-center space-y-2", children: [_jsx(PlayIcon, {}), _jsx("span", { className: "text-xs", children: "Custom Play" })] }), _jsxs("div", { className: "flex flex-col items-center space-y-2", children: [_jsx(PauseIcon, {}), _jsx("span", { className: "text-xs", children: "Default Pause" })] }), _jsxs("div", { className: "flex flex-col items-center space-y-2", children: [_jsx(VolumeIcon, {}), _jsx("span", { className: "text-xs", children: "Default Volume" })] }), _jsxs("div", { className: "flex flex-col items-center space-y-2", children: [_jsx(SettingsIcon, {}), _jsx("span", { className: "text-xs", children: "Default Settings" })] })] }) })] })] }), _jsxs("div", { className: "mt-8 rounded-lg bg-gray-800 p-6", children: [_jsx("h2", { className: "mb-4 font-semibold text-white text-xl", children: "Interactive Media Player Demo" }), _jsx(IconProvider, { theme: { ...theme, size: 32 }, children: _jsxs("div", { className: "flex items-center justify-center space-x-6 text-white", children: [_jsx("button", { onClick: () => setIsPlaying(!isPlaying), className: "rounded-full bg-blue-600 p-3 transition-colors hover:bg-blue-700", "aria-label": isPlaying ? 'Pause' : 'Play', children: _jsx(PlayPauseIcon, { isPlaying: isPlaying }) }), _jsx("button", { onClick: () => setVolume(volume > 0 ? 0 : 0.8), className: "rounded-full bg-gray-600 p-3 transition-colors hover:bg-gray-700", "aria-label": volume > 0 ? 'Mute' : 'Unmute', children: volume > 0 ? _jsx(VolumeIcon, {}) : _jsx(VolumeOffIcon, {}) }), _jsx("button", { className: "rounded-full bg-gray-600 p-3 transition-colors hover:bg-gray-700", "aria-label": "Settings", children: _jsx(SettingsIcon, {}) }), _jsx("button", { className: "rounded-full bg-gray-600 p-3 transition-colors hover:bg-gray-700", "aria-label": "Fullscreen", children: _jsx(FullscreenIcon, {}) })] }) }), _jsxs("div", { className: "mt-4 text-center text-gray-400 text-sm", children: ["Status: ", isPlaying ? 'Playing' : 'Paused', " | Volume: ", volume > 0 ? 'On' : 'Muted'] })] })] }) }));
|
|
16
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAA;AAiBzB,MAAM,WAAW,SAAS;IACzB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,KAAK,CAAC,EAAE,MAAM,CAAA;CACd;AAGD,eAAO,MAAM,eAAe,EAAE,KAAK,CAAC,EAAE,CAAC,SAAS,CAIqC,CAAA;AAGrF,eAAO,MAAM,gBAAgB,EAAE,KAAK,CAAC,EAAE,CAAC,SAAS,CAIqC,CAAA;AAGtF,eAAO,MAAM,iBAAiB,EAAE,KAAK,CAAC,EAAE,CAAC,SAAS,CAIwC,CAAA;AAG1F,eAAO,MAAM,sBAAsB,EAAE,KAAK,CAAC,EAAE,CAAC,SAAS,CAIqC,CAAA;AAG5F,eAAO,MAAM,qBAAqB,EAAE,KAAK,CAAC,EAAE,CAAC,SAAS,CAI0C,CAAA;AAGhG,eAAO,MAAM,yBAAyB,EAAE,KAAK,CAAC,EAAE,CAAC,SAAS,CAIqC,CAAA;AAG/F,eAAO,MAAM,mBAAmB,EAAE,KAAK,CAAC,EAAE,CAAC,SAAS,CAIqC,CAAA;AAGzF,eAAO,MAAM,cAAc,EAAE,KAAK,CAAC,EAAE,CAAC,SAAS,CAW9C,CAAA;AAGD,eAAO,MAAM,kBAAkB,EAAE,KAAK,CAAC,EAAE,CAAC,SAAS,CAIsC,CAAA;AAGzF,eAAO,MAAM,mBAAmB,EAAE,KAAK,CAAC,EAAE,CAAC,SAAS,CAIoC,CAAA;AAGxF,eAAO,MAAM,oBAAoB,EAAE,KAAK,CAAC,EAAE,CAAC,SAAS,CAImC,CAAA;AAGxF,eAAO,MAAM,qBAAqB,EAAE,KAAK,CAAC,EAAE,CAAC,SAAS,CAImC,CAAA;AAGzF,eAAO,MAAM,mBAAmB,EAAE,KAAK,CAAC,EAAE,CAAC,SAAS,CAIwC,CAAA;AAG5F,eAAO,MAAM,qBAAqB,EAAE,KAAK,CAAC,EAAE,CAAC,SAAS,CAIiC,CAAA;AAGvF,eAAO,MAAM,gBAAgB,EAAE,KAAK,CAAC,EAAE,CAAC,SAAS,CAI6C,CAAA;AAG9F,MAAM,WAAW,OAAO;IACvB,IAAI,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC,SAAS,CAAC,CAAA;IAC1B,KAAK,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC,SAAS,CAAC,CAAA;IAC3B,MAAM,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC,SAAS,CAAC,CAAA;IAC5B,WAAW,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC,SAAS,CAAC,CAAA;IACjC,UAAU,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC,SAAS,CAAC,CAAA;IAChC,cAAc,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC,SAAS,CAAC,CAAA;IACpC,QAAQ,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC,SAAS,CAAC,CAAA;IAC9B,OAAO,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC,SAAS,CAAC,CAAA;IAC7B,QAAQ,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC,SAAS,CAAC,CAAA;IAC9B,OAAO,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC,SAAS,CAAC,CAAA;IAC7B,QAAQ,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC,SAAS,CAAC,CAAA;CAC9B;AAGD,eAAO,MAAM,mBAAmB,EAAE,OAYjC,CAAA"}
|