@hanifhan1f/vidstack-react 1.12.13 → 1.12.14
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/dev/chunks/vidstack-B-FM4-oZ.js +668 -0
- package/dev/chunks/vidstack-B92UncBI.js +61 -0
- package/dev/chunks/vidstack-BDiAEW1N.js +11691 -0
- package/dev/chunks/vidstack-BZIhWvGa.js +1371 -0
- package/dev/chunks/vidstack-Bfi_jCvb.js +476 -0
- package/dev/chunks/vidstack-CBF7iUqu.js +22 -0
- package/dev/chunks/vidstack-CFZ0rYJz.js +34 -0
- package/dev/chunks/vidstack-CM82l-7o.js +551 -0
- package/dev/chunks/vidstack-CvWDiSTs.js +84 -0
- package/dev/chunks/vidstack-CzU-uC5f.js +189 -0
- package/dev/chunks/vidstack-D-hQD1eE.js +9 -0
- package/dev/chunks/vidstack-D6_9yy0x.js +643 -0
- package/dev/chunks/vidstack-DJQOTrl6.js +180 -0
- package/dev/chunks/vidstack-DNbKNc4R.js +288 -0
- package/dev/chunks/vidstack-D_bWd66h.js +2023 -0
- package/dev/chunks/vidstack-Dm1xEU9Q.js +36 -0
- package/dev/chunks/vidstack-f6WXkmfP.js +375 -0
- package/dev/chunks/vidstack-krOAtKMi.js +34 -0
- package/dev/chunks/vidstack-lYFZKRUc.js +401 -0
- package/dev/player/vidstack-default-components.js +14 -0
- package/dev/player/vidstack-default-icons.js +88 -0
- package/dev/player/vidstack-default-layout.js +14 -0
- package/dev/player/vidstack-plyr-icons.js +62 -0
- package/dev/player/vidstack-plyr-layout.js +636 -0
- package/dev/player/vidstack-remotion.js +345 -0
- package/dev/vidstack.js +587 -0
- package/dom.d.ts +91 -0
- package/google-cast.d.ts +1422 -0
- package/icons.d.ts +5 -0
- package/index.d.ts +8 -0
- package/package.json +9 -60
- package/player/layouts/default.d.ts +11392 -0
- package/player/layouts/plyr.d.ts +5 -0
- package/player/remotion.d.ts +5 -0
- package/player/styles/base.css +153 -0
- package/player/styles/default/buffering.css +55 -0
- package/player/styles/default/buttons.css +175 -0
- package/player/styles/default/captions.css +181 -0
- package/player/styles/default/chapter-title.css +26 -0
- package/player/styles/default/controls.css +56 -0
- package/player/styles/default/gestures.css +19 -0
- package/player/styles/default/icons.css +6 -0
- package/player/styles/default/keyboard.css +148 -0
- package/player/styles/default/layouts/audio.css +417 -0
- package/player/styles/default/layouts/video.css +1082 -0
- package/player/styles/default/menus.css +959 -0
- package/player/styles/default/poster.css +52 -0
- package/player/styles/default/sliders.css +391 -0
- package/player/styles/default/theme.css +2461 -0
- package/player/styles/default/thumbnail.css +40 -0
- package/player/styles/default/time.css +45 -0
- package/player/styles/default/tooltips.css +141 -0
- package/player/styles/plyr/theme.css +1237 -0
- package/prod/chunks/vidstack-0Foyib2F.js +34 -0
- package/prod/chunks/vidstack-BbPEqH3g.js +11196 -0
- package/prod/chunks/vidstack-Bh7M8kL6.js +663 -0
- package/prod/chunks/vidstack-BlPINAXN.js +189 -0
- package/prod/chunks/vidstack-C5Rzkyfp.js +375 -0
- package/prod/chunks/vidstack-CBF7iUqu.js +22 -0
- package/prod/chunks/vidstack-CZNlvfmV.js +288 -0
- package/prod/chunks/vidstack-CZgUA94N.js +1979 -0
- package/prod/chunks/vidstack-D0XCUWbp.js +159 -0
- package/prod/chunks/vidstack-DTyDOhwS.js +504 -0
- package/prod/chunks/vidstack-DhC5F6c8.js +470 -0
- package/prod/chunks/vidstack-Dm1xEU9Q.js +36 -0
- package/prod/chunks/vidstack-Ma9rwtR0.js +386 -0
- package/prod/chunks/vidstack-WsodkLQg.js +1371 -0
- package/prod/chunks/vidstack-jIPoNqhj.js +545 -0
- package/prod/chunks/vidstack-krOAtKMi.js +34 -0
- package/prod/chunks/vidstack-vqp2QaHR.js +9 -0
- package/prod/chunks/vidstack-xo_SmgiV.js +84 -0
- package/prod/chunks/vidstack-xvxeRtaN.js +61 -0
- package/prod/player/vidstack-default-components.js +14 -0
- package/prod/player/vidstack-default-icons.js +88 -0
- package/prod/player/vidstack-default-layout.js +14 -0
- package/prod/player/vidstack-plyr-icons.js +62 -0
- package/prod/player/vidstack-plyr-layout.js +636 -0
- package/prod/player/vidstack-remotion.js +335 -0
- package/prod/vidstack-icons.js +435 -0
- package/prod/vidstack.js +648 -0
- package/server/chunks/vidstack-2zMSe4ym.js +1371 -0
- package/server/chunks/vidstack-BtqWstSj.js +375 -0
- package/server/chunks/vidstack-C-HdFsZi.js +84 -0
- package/server/chunks/vidstack-C4iWXMC-.js +545 -0
- package/server/chunks/vidstack-C5zFBMwg.js +386 -0
- package/server/chunks/vidstack-CBF7iUqu.js +22 -0
- package/server/chunks/vidstack-CEh38XpD.js +288 -0
- package/server/chunks/vidstack-CkMAeO-e.js +34 -0
- package/server/chunks/vidstack-Cm0qnRvu.js +11196 -0
- package/server/chunks/vidstack-CoGzBr_V.js +663 -0
- package/server/chunks/vidstack-CyFwkPiu.js +470 -0
- package/server/chunks/vidstack-D-hQD1eE.js +9 -0
- package/server/chunks/vidstack-D_bWd66h.js +2023 -0
- package/server/chunks/vidstack-Dm1xEU9Q.js +36 -0
- package/server/chunks/vidstack-DtQSvsQr.js +189 -0
- package/server/chunks/vidstack-jlaBqZq5.js +61 -0
- package/server/chunks/vidstack-krOAtKMi.js +34 -0
- package/server/chunks/vidstack-rWs25cS9.js +159 -0
- package/server/chunks/vidstack-uyCXITen.js +504 -0
- package/server/player/vidstack-default-components.js +14 -0
- package/server/player/vidstack-default-icons.js +88 -0
- package/server/player/vidstack-default-layout.js +14 -0
- package/server/player/vidstack-plyr-icons.js +62 -0
- package/server/player/vidstack-plyr-layout.js +636 -0
- package/server/player/vidstack-remotion.js +335 -0
- package/server/vidstack.js +648 -0
- package/tailwind.cjs +101 -0
- package/tailwind.d.cts +15 -0
- package/.templates/sandbox/document.css +0 -27
- package/.templates/sandbox/favicon-32x32.png +0 -0
- package/.templates/sandbox/index.html +0 -21
- package/.templates/sandbox/main.tsx +0 -12
- package/.templates/sandbox/player.css +0 -39
- package/.templates/sandbox/player.tsx +0 -121
- package/.templates/sandbox/tracks.ts +0 -23
- package/analyze.config.ts +0 -7
- package/build/build-icons.js +0 -62
- package/rollup.config.ts +0 -256
- package/src/components/announcer.tsx +0 -47
- package/src/components/layouts/default/audio-layout.tsx +0 -231
- package/src/components/layouts/default/context.ts +0 -28
- package/src/components/layouts/default/hooks.ts +0 -13
- package/src/components/layouts/default/icons.tsx +0 -225
- package/src/components/layouts/default/index.ts +0 -11
- package/src/components/layouts/default/media-layout.tsx +0 -259
- package/src/components/layouts/default/slots.tsx +0 -98
- package/src/components/layouts/default/ui/announcer.tsx +0 -22
- package/src/components/layouts/default/ui/buttons.tsx +0 -301
- package/src/components/layouts/default/ui/captions.tsx +0 -16
- package/src/components/layouts/default/ui/controls.tsx +0 -12
- package/src/components/layouts/default/ui/keyboard-display.tsx +0 -132
- package/src/components/layouts/default/ui/menus/accessibility-menu.tsx +0 -100
- package/src/components/layouts/default/ui/menus/audio-menu.tsx +0 -167
- package/src/components/layouts/default/ui/menus/captions-menu.tsx +0 -61
- package/src/components/layouts/default/ui/menus/chapters-menu.tsx +0 -132
- package/src/components/layouts/default/ui/menus/font-menu.tsx +0 -331
- package/src/components/layouts/default/ui/menus/items/menu-checkbox.tsx +0 -72
- package/src/components/layouts/default/ui/menus/items/menu-items.tsx +0 -135
- package/src/components/layouts/default/ui/menus/items/menu-slider.tsx +0 -92
- package/src/components/layouts/default/ui/menus/playback-menu.tsx +0 -232
- package/src/components/layouts/default/ui/menus/settings-menu.tsx +0 -114
- package/src/components/layouts/default/ui/menus/utils.ts +0 -12
- package/src/components/layouts/default/ui/sliders.tsx +0 -136
- package/src/components/layouts/default/ui/time.tsx +0 -73
- package/src/components/layouts/default/ui/title.tsx +0 -24
- package/src/components/layouts/default/ui/tooltip.tsx +0 -27
- package/src/components/layouts/default/ui.ts +0 -8
- package/src/components/layouts/default/video-layout.tsx +0 -344
- package/src/components/layouts/plyr/context.ts +0 -26
- package/src/components/layouts/plyr/icons/plyr-airplay.js +0 -1
- package/src/components/layouts/plyr/icons/plyr-captions-off.js +0 -1
- package/src/components/layouts/plyr/icons/plyr-captions-on.js +0 -1
- package/src/components/layouts/plyr/icons/plyr-download.js +0 -1
- package/src/components/layouts/plyr/icons/plyr-enter-fullscreen.js +0 -1
- package/src/components/layouts/plyr/icons/plyr-exit-fullscreen.js +0 -1
- package/src/components/layouts/plyr/icons/plyr-fast-forward.js +0 -1
- package/src/components/layouts/plyr/icons/plyr-muted.js +0 -1
- package/src/components/layouts/plyr/icons/plyr-pause.js +0 -1
- package/src/components/layouts/plyr/icons/plyr-pip.js +0 -1
- package/src/components/layouts/plyr/icons/plyr-play.js +0 -1
- package/src/components/layouts/plyr/icons/plyr-restart.js +0 -1
- package/src/components/layouts/plyr/icons/plyr-rewind.js +0 -1
- package/src/components/layouts/plyr/icons/plyr-settings.js +0 -1
- package/src/components/layouts/plyr/icons/plyr-volume.js +0 -1
- package/src/components/layouts/plyr/icons.tsx +0 -71
- package/src/components/layouts/plyr/index.ts +0 -11
- package/src/components/layouts/plyr/layout.tsx +0 -1024
- package/src/components/layouts/plyr/props.ts +0 -104
- package/src/components/layouts/plyr/slots.tsx +0 -52
- package/src/components/layouts/remotion-ui.ts +0 -13
- package/src/components/layouts/utils.ts +0 -17
- package/src/components/player-callbacks.ts +0 -67
- package/src/components/player.tsx +0 -67
- package/src/components/primitives/instances.ts +0 -92
- package/src/components/primitives/nodes.tsx +0 -58
- package/src/components/primitives/slot.tsx +0 -132
- package/src/components/provider.tsx +0 -187
- package/src/components/text-track.tsx +0 -106
- package/src/components/ui/buttons/airplay-button.tsx +0 -53
- package/src/components/ui/buttons/caption-button.tsx +0 -55
- package/src/components/ui/buttons/fullscreen-button.tsx +0 -55
- package/src/components/ui/buttons/google-cast-button.tsx +0 -53
- package/src/components/ui/buttons/live-button.tsx +0 -56
- package/src/components/ui/buttons/mute-button.tsx +0 -60
- package/src/components/ui/buttons/pip-button.tsx +0 -54
- package/src/components/ui/buttons/play-button.tsx +0 -53
- package/src/components/ui/buttons/seek-button.tsx +0 -55
- package/src/components/ui/buttons/toggle-button.tsx +0 -51
- package/src/components/ui/caption.tsx +0 -70
- package/src/components/ui/captions.tsx +0 -41
- package/src/components/ui/chapter-title.tsx +0 -40
- package/src/components/ui/controls.tsx +0 -90
- package/src/components/ui/gesture.tsx +0 -43
- package/src/components/ui/menu.tsx +0 -251
- package/src/components/ui/poster.tsx +0 -101
- package/src/components/ui/radio-group.tsx +0 -88
- package/src/components/ui/sliders/audio-gain-slider.tsx +0 -55
- package/src/components/ui/sliders/quality-slider.tsx +0 -54
- package/src/components/ui/sliders/slider-callbacks.ts +0 -14
- package/src/components/ui/sliders/slider-value.tsx +0 -13
- package/src/components/ui/sliders/slider.tsx +0 -254
- package/src/components/ui/sliders/speed-slider.tsx +0 -54
- package/src/components/ui/sliders/time-slider.tsx +0 -379
- package/src/components/ui/sliders/volume-slider.tsx +0 -55
- package/src/components/ui/spinner.tsx +0 -105
- package/src/components/ui/thumbnail.tsx +0 -82
- package/src/components/ui/time.tsx +0 -77
- package/src/components/ui/title.tsx +0 -32
- package/src/components/ui/tooltip.tsx +0 -135
- package/src/globals.d.ts +0 -3
- package/src/hooks/create-text-track.ts +0 -22
- package/src/hooks/options/use-audio-gain-options.ts +0 -75
- package/src/hooks/options/use-audio-options.ts +0 -71
- package/src/hooks/options/use-caption-options.ts +0 -95
- package/src/hooks/options/use-chapter-options.ts +0 -97
- package/src/hooks/options/use-playback-rate-options.ts +0 -75
- package/src/hooks/options/use-video-quality-options.ts +0 -123
- package/src/hooks/use-active-text-cues.ts +0 -28
- package/src/hooks/use-active-text-track.ts +0 -19
- package/src/hooks/use-chapter-title.ts +0 -12
- package/src/hooks/use-dom.ts +0 -121
- package/src/hooks/use-media-context.ts +0 -6
- package/src/hooks/use-media-player.ts +0 -19
- package/src/hooks/use-media-provider.ts +0 -31
- package/src/hooks/use-media-remote.ts +0 -37
- package/src/hooks/use-media-state.ts +0 -58
- package/src/hooks/use-signals.ts +0 -24
- package/src/hooks/use-slider-preview.ts +0 -126
- package/src/hooks/use-slider-state.ts +0 -63
- package/src/hooks/use-state.ts +0 -47
- package/src/hooks/use-text-cues.ts +0 -33
- package/src/hooks/use-thumbnails.ts +0 -69
- package/src/icon.ts +0 -37
- package/src/icons.ts +0 -754
- package/src/index.ts +0 -181
- package/src/providers/remotion/index.ts +0 -10
- package/src/providers/remotion/layout-engine.ts +0 -123
- package/src/providers/remotion/loader.ts +0 -35
- package/src/providers/remotion/playback-engine.ts +0 -142
- package/src/providers/remotion/provider.tsx +0 -514
- package/src/providers/remotion/type-check.ts +0 -13
- package/src/providers/remotion/types.ts +0 -94
- package/src/providers/remotion/ui/context.tsx +0 -120
- package/src/providers/remotion/ui/error-boundary.tsx +0 -57
- package/src/providers/remotion/ui/poster.tsx +0 -33
- package/src/providers/remotion/ui/slider-thumbnail.tsx +0 -41
- package/src/providers/remotion/ui/thumbnail.tsx +0 -166
- package/src/providers/remotion/validate.ts +0 -220
- package/src/source.ts +0 -5
- package/src/utils.ts +0 -27
- package/tsconfig.build.json +0 -10
- package/tsconfig.json +0 -11
- package/types/react/src/components/announcer.d.ts +0 -16
- package/types/react/src/components/layouts/default/audio-layout.d.ts +0 -27
- package/types/react/src/components/layouts/default/context.d.ts +0 -14
- package/types/react/src/components/layouts/default/hooks.d.ts +0 -2
- package/types/react/src/components/layouts/default/icons.d.ts +0 -95
- package/types/react/src/components/layouts/default/index.d.ts +0 -5
- package/types/react/src/components/layouts/default/media-layout.d.ts +0 -133
- package/types/react/src/components/layouts/default/slots.d.ts +0 -22
- package/types/react/src/components/layouts/default/ui/announcer.d.ts +0 -6
- package/types/react/src/components/layouts/default/ui/buttons.d.ts +0 -54
- package/types/react/src/components/layouts/default/ui/captions.d.ts +0 -6
- package/types/react/src/components/layouts/default/ui/controls.d.ts +0 -6
- package/types/react/src/components/layouts/default/ui/keyboard-display.d.ts +0 -8
- package/types/react/src/components/layouts/default/ui/menus/accessibility-menu.d.ts +0 -10
- package/types/react/src/components/layouts/default/ui/menus/audio-menu.d.ts +0 -10
- package/types/react/src/components/layouts/default/ui/menus/captions-menu.d.ts +0 -10
- package/types/react/src/components/layouts/default/ui/menus/chapters-menu.d.ts +0 -7
- package/types/react/src/components/layouts/default/ui/menus/font-menu.d.ts +0 -6
- package/types/react/src/components/layouts/default/ui/menus/items/menu-checkbox.d.ts +0 -13
- package/types/react/src/components/layouts/default/ui/menus/items/menu-items.d.ts +0 -49
- package/types/react/src/components/layouts/default/ui/menus/items/menu-slider.d.ts +0 -26
- package/types/react/src/components/layouts/default/ui/menus/playback-menu.d.ts +0 -10
- package/types/react/src/components/layouts/default/ui/menus/settings-menu.d.ts +0 -15
- package/types/react/src/components/layouts/default/ui/menus/utils.d.ts +0 -1
- package/types/react/src/components/layouts/default/ui/sliders.d.ts +0 -24
- package/types/react/src/components/layouts/default/ui/time.d.ts +0 -30
- package/types/react/src/components/layouts/default/ui/title.d.ts +0 -6
- package/types/react/src/components/layouts/default/ui/tooltip.d.ts +0 -12
- package/types/react/src/components/layouts/default/ui.d.ts +0 -8
- package/types/react/src/components/layouts/default/video-layout.d.ts +0 -47
- package/types/react/src/components/layouts/plyr/context.d.ts +0 -12
- package/types/react/src/components/layouts/plyr/icons/plyr-airplay.d.ts +0 -2
- package/types/react/src/components/layouts/plyr/icons/plyr-captions-off.d.ts +0 -2
- package/types/react/src/components/layouts/plyr/icons/plyr-captions-on.d.ts +0 -2
- package/types/react/src/components/layouts/plyr/icons/plyr-download.d.ts +0 -2
- package/types/react/src/components/layouts/plyr/icons/plyr-enter-fullscreen.d.ts +0 -2
- package/types/react/src/components/layouts/plyr/icons/plyr-exit-fullscreen.d.ts +0 -2
- package/types/react/src/components/layouts/plyr/icons/plyr-fast-forward.d.ts +0 -2
- package/types/react/src/components/layouts/plyr/icons/plyr-muted.d.ts +0 -2
- package/types/react/src/components/layouts/plyr/icons/plyr-pause.d.ts +0 -2
- package/types/react/src/components/layouts/plyr/icons/plyr-pip.d.ts +0 -2
- package/types/react/src/components/layouts/plyr/icons/plyr-play.d.ts +0 -2
- package/types/react/src/components/layouts/plyr/icons/plyr-restart.d.ts +0 -2
- package/types/react/src/components/layouts/plyr/icons/plyr-rewind.d.ts +0 -2
- package/types/react/src/components/layouts/plyr/icons/plyr-settings.d.ts +0 -2
- package/types/react/src/components/layouts/plyr/icons/plyr-volume.d.ts +0 -2
- package/types/react/src/components/layouts/plyr/icons.d.ts +0 -25
- package/types/react/src/components/layouts/plyr/index.d.ts +0 -6
- package/types/react/src/components/layouts/plyr/layout.d.ts +0 -17
- package/types/react/src/components/layouts/plyr/props.d.ts +0 -71
- package/types/react/src/components/layouts/plyr/slots.d.ts +0 -9
- package/types/react/src/components/layouts/remotion-ui.d.ts +0 -3
- package/types/react/src/components/layouts/utils.d.ts +0 -1
- package/types/react/src/components/player-callbacks.d.ts +0 -6
- package/types/react/src/components/player.d.ts +0 -32
- package/types/react/src/components/primitives/instances.d.ts +0 -83
- package/types/react/src/components/primitives/nodes.d.ts +0 -15
- package/types/react/src/components/primitives/slot.d.ts +0 -11
- package/types/react/src/components/provider.d.ts +0 -26
- package/types/react/src/components/text-track.d.ts +0 -100
- package/types/react/src/components/ui/buttons/airplay-button.d.ts +0 -22
- package/types/react/src/components/ui/buttons/caption-button.d.ts +0 -24
- package/types/react/src/components/ui/buttons/fullscreen-button.d.ts +0 -24
- package/types/react/src/components/ui/buttons/google-cast-button.d.ts +0 -22
- package/types/react/src/components/ui/buttons/live-button.d.ts +0 -26
- package/types/react/src/components/ui/buttons/mute-button.d.ts +0 -30
- package/types/react/src/components/ui/buttons/pip-button.d.ts +0 -24
- package/types/react/src/components/ui/buttons/play-button.d.ts +0 -23
- package/types/react/src/components/ui/buttons/seek-button.d.ts +0 -25
- package/types/react/src/components/ui/buttons/toggle-button.d.ts +0 -22
- package/types/react/src/components/ui/caption.d.ts +0 -11
- package/types/react/src/components/ui/captions.d.ts +0 -20
- package/types/react/src/components/ui/chapter-title.d.ts +0 -20
- package/types/react/src/components/ui/controls.d.ts +0 -40
- package/types/react/src/components/ui/gesture.d.ts +0 -20
- package/types/react/src/components/ui/menu.d.ts +0 -102
- package/types/react/src/components/ui/poster.d.ts +0 -25
- package/types/react/src/components/ui/radio-group.d.ts +0 -39
- package/types/react/src/components/ui/sliders/audio-gain-slider.d.ts +0 -29
- package/types/react/src/components/ui/sliders/quality-slider.d.ts +0 -28
- package/types/react/src/components/ui/sliders/slider-callbacks.d.ts +0 -6
- package/types/react/src/components/ui/sliders/slider-value.d.ts +0 -9
- package/types/react/src/components/ui/sliders/slider.d.ts +0 -134
- package/types/react/src/components/ui/sliders/speed-slider.d.ts +0 -28
- package/types/react/src/components/ui/sliders/time-slider.d.ts +0 -124
- package/types/react/src/components/ui/sliders/volume-slider.d.ts +0 -29
- package/types/react/src/components/ui/spinner.d.ts +0 -31
- package/types/react/src/components/ui/thumbnail.d.ts +0 -26
- package/types/react/src/components/ui/time.d.ts +0 -20
- package/types/react/src/components/ui/title.d.ts +0 -15
- package/types/react/src/components/ui/tooltip.d.ts +0 -63
- package/types/react/src/hooks/create-text-track.d.ts +0 -7
- package/types/react/src/hooks/options/use-audio-gain-options.d.ts +0 -22
- package/types/react/src/hooks/options/use-audio-options.d.ts +0 -17
- package/types/react/src/hooks/options/use-caption-options.d.ts +0 -24
- package/types/react/src/hooks/options/use-chapter-options.d.ts +0 -18
- package/types/react/src/hooks/options/use-playback-rate-options.d.ts +0 -22
- package/types/react/src/hooks/options/use-video-quality-options.d.ts +0 -35
- package/types/react/src/hooks/use-active-text-cues.d.ts +0 -6
- package/types/react/src/hooks/use-active-text-track.d.ts +0 -5
- package/types/react/src/hooks/use-chapter-title.d.ts +0 -4
- package/types/react/src/hooks/use-dom.d.ts +0 -9
- package/types/react/src/hooks/use-media-context.d.ts +0 -1
- package/types/react/src/hooks/use-media-player.d.ts +0 -7
- package/types/react/src/hooks/use-media-provider.d.ts +0 -7
- package/types/react/src/hooks/use-media-remote.d.ts +0 -12
- package/types/react/src/hooks/use-media-state.d.ts +0 -15
- package/types/react/src/hooks/use-signals.d.ts +0 -5
- package/types/react/src/hooks/use-slider-preview.d.ts +0 -27
- package/types/react/src/hooks/use-slider-state.d.ts +0 -16
- package/types/react/src/hooks/use-state.d.ts +0 -18
- package/types/react/src/hooks/use-text-cues.d.ts +0 -6
- package/types/react/src/hooks/use-thumbnails.d.ts +0 -16
- package/types/react/src/icon.d.ts +0 -17
- package/types/react/src/icons.d.ts +0 -215
- package/types/react/src/index.d.ts +0 -78
- package/types/react/src/providers/remotion/index.d.ts +0 -7
- package/types/react/src/providers/remotion/layout-engine.d.ts +0 -8
- package/types/react/src/providers/remotion/loader.d.ts +0 -9
- package/types/react/src/providers/remotion/playback-engine.d.ts +0 -11
- package/types/react/src/providers/remotion/provider.d.ts +0 -26
- package/types/react/src/providers/remotion/type-check.d.ts +0 -6
- package/types/react/src/providers/remotion/types.d.ts +0 -91
- package/types/react/src/providers/remotion/ui/context.d.ts +0 -17
- package/types/react/src/providers/remotion/ui/error-boundary.d.ts +0 -21
- package/types/react/src/providers/remotion/ui/poster.d.ts +0 -18
- package/types/react/src/providers/remotion/ui/slider-thumbnail.d.ts +0 -17
- package/types/react/src/providers/remotion/ui/thumbnail.d.ts +0 -32
- package/types/react/src/providers/remotion/validate.d.ts +0 -12
- package/types/react/src/source.d.ts +0 -3
- package/types/react/src/utils.d.ts +0 -3
- package/types/vidstack/src/core/api/src-types.d.ts +0 -50
- package/types/vidstack/src/utils/mime.d.ts +0 -15
- package/types/vidstack/src/utils/network.d.ts +0 -17
- package/types/vidstack/src/utils/support.d.ts +0 -72
- package/vite.config.ts +0 -23
- /package/{npm/analyze.json.d.ts → analyze.json.d.ts} +0 -0
|
@@ -1,104 +0,0 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
FileDownloadInfo,
|
|
3
|
-
PlyrControl,
|
|
4
|
-
PlyrLayoutTranslations,
|
|
5
|
-
PlyrMarker,
|
|
6
|
-
ThumbnailSrc,
|
|
7
|
-
} from 'vidstack';
|
|
8
|
-
|
|
9
|
-
import type { PlyrLayoutIcons } from './icons';
|
|
10
|
-
import type { PlyrLayoutSlots } from './slots';
|
|
11
|
-
|
|
12
|
-
export const defaultPlyrLayoutProps: Omit<PlyrLayoutProps, 'icons' | 'slots' | 'posterFrame'> = {
|
|
13
|
-
clickToPlay: true,
|
|
14
|
-
clickToFullscreen: true,
|
|
15
|
-
controls: [
|
|
16
|
-
'play-large',
|
|
17
|
-
'play',
|
|
18
|
-
'progress',
|
|
19
|
-
'current-time',
|
|
20
|
-
'mute+volume',
|
|
21
|
-
'captions',
|
|
22
|
-
'settings',
|
|
23
|
-
'pip',
|
|
24
|
-
'airplay',
|
|
25
|
-
'fullscreen',
|
|
26
|
-
],
|
|
27
|
-
displayDuration: false,
|
|
28
|
-
download: null,
|
|
29
|
-
markers: null,
|
|
30
|
-
invertTime: true,
|
|
31
|
-
thumbnails: null,
|
|
32
|
-
toggleTime: true,
|
|
33
|
-
translations: null,
|
|
34
|
-
seekTime: 10,
|
|
35
|
-
speed: [0.5, 0.75, 1, 1.25, 1.5, 1.75, 2, 4],
|
|
36
|
-
};
|
|
37
|
-
|
|
38
|
-
export interface PlyrLayoutProps {
|
|
39
|
-
/**
|
|
40
|
-
* The icons to be rendered and displayed inside the layout.
|
|
41
|
-
*/
|
|
42
|
-
icons: PlyrLayoutIcons;
|
|
43
|
-
/**
|
|
44
|
-
* The frame of the video to use as the poster. This only works with Remotion sources at the
|
|
45
|
-
* moment.
|
|
46
|
-
*/
|
|
47
|
-
posterFrame?: number;
|
|
48
|
-
/**
|
|
49
|
-
* Press the video container to toggle play/pause.
|
|
50
|
-
*/
|
|
51
|
-
clickToPlay?: boolean;
|
|
52
|
-
/**
|
|
53
|
-
* Double-press the video container to toggle fullscreen.
|
|
54
|
-
*/
|
|
55
|
-
clickToFullscreen?: boolean;
|
|
56
|
-
/**
|
|
57
|
-
* The controls to be included in the layout and their order specified by the position in the
|
|
58
|
-
* array.
|
|
59
|
-
*/
|
|
60
|
-
controls?: PlyrControl[];
|
|
61
|
-
/**
|
|
62
|
-
* Whether the duration should be displayed. This is ignored if `toggleTime` is `true`.
|
|
63
|
-
*/
|
|
64
|
-
displayDuration?: boolean;
|
|
65
|
-
/**
|
|
66
|
-
* Sets the download URL and filename for the download button. The download button must be
|
|
67
|
-
* included in the `controls` prop for this to take effect.
|
|
68
|
-
*/
|
|
69
|
-
download?: FileDownloadInfo;
|
|
70
|
-
/**
|
|
71
|
-
* Points on the time slider which should be visually marked for the user.
|
|
72
|
-
*/
|
|
73
|
-
markers?: PlyrMarker[] | null;
|
|
74
|
-
/**
|
|
75
|
-
* Display the current time as a countdown rather than an incremental counter.
|
|
76
|
-
*/
|
|
77
|
-
invertTime?: boolean;
|
|
78
|
-
/**
|
|
79
|
-
* The thumbnails resource.
|
|
80
|
-
*
|
|
81
|
-
* @see {@link https://www.vidstack.io/docs/wc/player/core-concepts/loading#thumbnails}
|
|
82
|
-
*/
|
|
83
|
-
thumbnails?: ThumbnailSrc;
|
|
84
|
-
/**
|
|
85
|
-
* Allow users to press to toggle the inverted time.
|
|
86
|
-
*/
|
|
87
|
-
toggleTime?: boolean;
|
|
88
|
-
/**
|
|
89
|
-
* Translation map from english to your desired language for words used throughout the layout.
|
|
90
|
-
*/
|
|
91
|
-
translations?: Partial<PlyrLayoutTranslations> | null;
|
|
92
|
-
/**
|
|
93
|
-
* The time, in seconds, to seek when a user hits fast forward or rewind.
|
|
94
|
-
*/
|
|
95
|
-
seekTime?: number;
|
|
96
|
-
/**
|
|
97
|
-
* The speed options to display in the UI.
|
|
98
|
-
*/
|
|
99
|
-
speed?: (string | number)[];
|
|
100
|
-
/**
|
|
101
|
-
* Provide additional content to be inserted in specific positions.
|
|
102
|
-
*/
|
|
103
|
-
slots?: PlyrLayoutSlots;
|
|
104
|
-
}
|
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
import * as React from 'react';
|
|
2
|
-
|
|
3
|
-
import { isUndefined, uppercaseFirstChar } from 'maverick.js/std';
|
|
4
|
-
|
|
5
|
-
import { usePlyrLayoutContext } from './context';
|
|
6
|
-
|
|
7
|
-
export type SlotPositions<Name extends string> =
|
|
8
|
-
| `before${Capitalize<Name>}`
|
|
9
|
-
| Name
|
|
10
|
-
| `after${Capitalize<Name>}`;
|
|
11
|
-
|
|
12
|
-
export type Slots<Names extends string> = {
|
|
13
|
-
[slotName in SlotPositions<Names>]?: React.ReactNode;
|
|
14
|
-
};
|
|
15
|
-
|
|
16
|
-
export type PlyrLayoutSlotName =
|
|
17
|
-
| 'airPlayButton'
|
|
18
|
-
| 'captionsButton'
|
|
19
|
-
| 'currentTime'
|
|
20
|
-
| 'download'
|
|
21
|
-
| 'duration'
|
|
22
|
-
| 'fastForwardButton'
|
|
23
|
-
| 'fullscreenButton'
|
|
24
|
-
| 'liveButton'
|
|
25
|
-
| 'muteButton'
|
|
26
|
-
| 'pipButton'
|
|
27
|
-
| 'playButton'
|
|
28
|
-
| 'playLargeButton'
|
|
29
|
-
| 'poster'
|
|
30
|
-
| 'restartButton'
|
|
31
|
-
| 'rewindButton'
|
|
32
|
-
| 'rewindButton'
|
|
33
|
-
| 'settings'
|
|
34
|
-
| 'settingsButton'
|
|
35
|
-
| 'timeSlider'
|
|
36
|
-
| 'volumeSlider'
|
|
37
|
-
| 'settingsMenu';
|
|
38
|
-
|
|
39
|
-
export interface PlyrLayoutSlots extends Slots<PlyrLayoutSlotName> {}
|
|
40
|
-
|
|
41
|
-
export function slot(name: PlyrLayoutSlotName, defaultValue: React.ReactNode): React.ReactNode {
|
|
42
|
-
const { slots } = usePlyrLayoutContext(),
|
|
43
|
-
slot = slots?.[name],
|
|
44
|
-
capitalizedName = uppercaseFirstChar(name as string);
|
|
45
|
-
return (
|
|
46
|
-
<>
|
|
47
|
-
{slots?.[`before${capitalizedName}`]}
|
|
48
|
-
{isUndefined(slot) ? defaultValue : slot}
|
|
49
|
-
{slots?.[`after${capitalizedName}`]}
|
|
50
|
-
</>
|
|
51
|
-
);
|
|
52
|
-
}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import { signal } from 'maverick.js';
|
|
2
|
-
|
|
3
|
-
export const RemotionThumbnail = /* @__PURE__ */ signal<React.LazyExoticComponent<
|
|
4
|
-
React.ComponentType<any>
|
|
5
|
-
> | null>(null);
|
|
6
|
-
|
|
7
|
-
export const RemotionSliderThumbnail = /* @__PURE__ */ signal<React.LazyExoticComponent<
|
|
8
|
-
React.ComponentType<any>
|
|
9
|
-
> | null>(null);
|
|
10
|
-
|
|
11
|
-
export const RemotionPoster = /* @__PURE__ */ signal<React.LazyExoticComponent<
|
|
12
|
-
React.ComponentType<any>
|
|
13
|
-
> | null>(null);
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import * as React from 'react';
|
|
2
|
-
|
|
3
|
-
import { effect } from 'maverick.js';
|
|
4
|
-
|
|
5
|
-
import { useMediaPlayer } from '../../hooks/use-media-player';
|
|
6
|
-
|
|
7
|
-
export function useLayoutName(name: string) {
|
|
8
|
-
const player = useMediaPlayer();
|
|
9
|
-
React.useEffect(() => {
|
|
10
|
-
if (!player) return;
|
|
11
|
-
return effect(() => {
|
|
12
|
-
const el = player.$el;
|
|
13
|
-
el?.setAttribute('data-layout', name);
|
|
14
|
-
return () => el?.removeAttribute('data-layout');
|
|
15
|
-
});
|
|
16
|
-
}, [player]);
|
|
17
|
-
}
|
|
@@ -1,67 +0,0 @@
|
|
|
1
|
-
import type { InferComponentEvents } from 'maverick.js';
|
|
2
|
-
import type { ReactEventCallbacks } from 'maverick.js/react';
|
|
3
|
-
|
|
4
|
-
import type { MediaPlayerInstance } from './primitives/instances';
|
|
5
|
-
|
|
6
|
-
type PlayerCallbacks = keyof ReactEventCallbacks<InferComponentEvents<MediaPlayerInstance>>;
|
|
7
|
-
|
|
8
|
-
export const playerCallbacks: PlayerCallbacks[] = [
|
|
9
|
-
'onAbort',
|
|
10
|
-
'onAudioTrackChange',
|
|
11
|
-
'onAudioTracksChange',
|
|
12
|
-
'onAutoPlay',
|
|
13
|
-
'onAutoPlayChange',
|
|
14
|
-
'onAutoPlayFail',
|
|
15
|
-
'onCanLoad',
|
|
16
|
-
'onCanPlay',
|
|
17
|
-
'onCanPlayThrough',
|
|
18
|
-
'onControlsChange',
|
|
19
|
-
'onDestroy',
|
|
20
|
-
'onDurationChange',
|
|
21
|
-
'onEmptied',
|
|
22
|
-
'onEnd',
|
|
23
|
-
'onEnded',
|
|
24
|
-
'onError',
|
|
25
|
-
'onFindMediaPlayer',
|
|
26
|
-
'onFullscreenChange',
|
|
27
|
-
'onFullscreenError',
|
|
28
|
-
'onLiveChange',
|
|
29
|
-
'onLiveEdgeChange',
|
|
30
|
-
'onLoadedData',
|
|
31
|
-
'onLoadedMetadata',
|
|
32
|
-
'onLoadStart',
|
|
33
|
-
'onLoopChange',
|
|
34
|
-
'onOrientationChange',
|
|
35
|
-
'onPause',
|
|
36
|
-
'onPictureInPictureChange',
|
|
37
|
-
'onPictureInPictureError',
|
|
38
|
-
'onPlay',
|
|
39
|
-
'onPlayFail',
|
|
40
|
-
'onPlaying',
|
|
41
|
-
'onPlaysInlineChange',
|
|
42
|
-
'onPosterChange',
|
|
43
|
-
'onProgress',
|
|
44
|
-
'onProviderChange',
|
|
45
|
-
'onProviderLoaderChange',
|
|
46
|
-
'onProviderSetup',
|
|
47
|
-
'onQualitiesChange',
|
|
48
|
-
'onQualityChange',
|
|
49
|
-
'onRateChange',
|
|
50
|
-
'onReplay',
|
|
51
|
-
'onSeeked',
|
|
52
|
-
'onSeeking',
|
|
53
|
-
'onSourceChange',
|
|
54
|
-
'onSourceChange',
|
|
55
|
-
'onStalled',
|
|
56
|
-
'onStarted',
|
|
57
|
-
'onStreamTypeChange',
|
|
58
|
-
'onSuspend',
|
|
59
|
-
'onTextTrackChange',
|
|
60
|
-
'onTextTracksChange',
|
|
61
|
-
'onTimeUpdate',
|
|
62
|
-
'onTitleChange',
|
|
63
|
-
'onVdsLog',
|
|
64
|
-
'onVideoPresentationChange',
|
|
65
|
-
'onVolumeChange',
|
|
66
|
-
'onWaiting',
|
|
67
|
-
];
|
|
@@ -1,67 +0,0 @@
|
|
|
1
|
-
import * as React from 'react';
|
|
2
|
-
|
|
3
|
-
import { createReactComponent, type ReactElementProps } from 'maverick.js/react';
|
|
4
|
-
import type { MediaSrc } from 'vidstack';
|
|
5
|
-
|
|
6
|
-
import type { PlayerSrc } from '../source';
|
|
7
|
-
import { playerCallbacks } from './player-callbacks';
|
|
8
|
-
import { MediaPlayerInstance } from './primitives/instances';
|
|
9
|
-
import { Primitive } from './primitives/nodes';
|
|
10
|
-
|
|
11
|
-
/* -------------------------------------------------------------------------------------------------
|
|
12
|
-
* MediaPlayer
|
|
13
|
-
* -----------------------------------------------------------------------------------------------*/
|
|
14
|
-
|
|
15
|
-
const MediaPlayerBridge = createReactComponent(MediaPlayerInstance, {
|
|
16
|
-
events: playerCallbacks,
|
|
17
|
-
eventsRegex: /^onHls/,
|
|
18
|
-
domEventsRegex: /^onMedia/,
|
|
19
|
-
});
|
|
20
|
-
|
|
21
|
-
export interface MediaPlayerProps extends Omit<ReactElementProps<MediaPlayerInstance>, 'src'> {
|
|
22
|
-
/**
|
|
23
|
-
* The URL or object of the current media resource/s to be considered for playback.
|
|
24
|
-
*
|
|
25
|
-
* @see {@link https://vidstack.io/docs/player/core-concepts/loading#sources}
|
|
26
|
-
*/
|
|
27
|
-
src?: PlayerSrc;
|
|
28
|
-
aspectRatio?: string;
|
|
29
|
-
asChild?: boolean;
|
|
30
|
-
children: React.ReactNode;
|
|
31
|
-
ref?: React.Ref<MediaPlayerInstance>;
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
/**
|
|
35
|
-
* All media components exist inside the `<MediaPlayer>` component. This component's main
|
|
36
|
-
* responsibilities are to manage media state updates, dispatch media events, handle media
|
|
37
|
-
* requests, and expose media state through HTML attributes and CSS properties for styling
|
|
38
|
-
* purposes.
|
|
39
|
-
*
|
|
40
|
-
* @docs {@link https://www.vidstack.io/docs/player/components/media/player}
|
|
41
|
-
* @example
|
|
42
|
-
* ```tsx
|
|
43
|
-
* <MediaPlayer src="...">
|
|
44
|
-
* <MediaProvider />
|
|
45
|
-
* </MediaPlayer>
|
|
46
|
-
* ```
|
|
47
|
-
*/
|
|
48
|
-
const MediaPlayer = React.forwardRef<MediaPlayerInstance, MediaPlayerProps>(
|
|
49
|
-
({ aspectRatio, children, ...props }, forwardRef) => {
|
|
50
|
-
return (
|
|
51
|
-
<MediaPlayerBridge
|
|
52
|
-
{...props}
|
|
53
|
-
src={props.src as MediaSrc}
|
|
54
|
-
ref={forwardRef}
|
|
55
|
-
style={{
|
|
56
|
-
aspectRatio,
|
|
57
|
-
...props.style,
|
|
58
|
-
}}
|
|
59
|
-
>
|
|
60
|
-
{(props) => <Primitive.div {...props}>{children}</Primitive.div>}
|
|
61
|
-
</MediaPlayerBridge>
|
|
62
|
-
);
|
|
63
|
-
},
|
|
64
|
-
);
|
|
65
|
-
|
|
66
|
-
MediaPlayer.displayName = 'MediaPlayer';
|
|
67
|
-
export { MediaPlayer };
|
|
@@ -1,92 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
AirPlayButton,
|
|
3
|
-
AudioGainSlider,
|
|
4
|
-
CaptionButton,
|
|
5
|
-
Captions,
|
|
6
|
-
Controls,
|
|
7
|
-
ControlsGroup,
|
|
8
|
-
FullscreenButton,
|
|
9
|
-
Gesture,
|
|
10
|
-
GoogleCastButton,
|
|
11
|
-
LiveButton,
|
|
12
|
-
MediaAnnouncer,
|
|
13
|
-
MediaPlayer,
|
|
14
|
-
MediaProvider,
|
|
15
|
-
Menu,
|
|
16
|
-
MenuButton,
|
|
17
|
-
MenuItem,
|
|
18
|
-
MenuItems,
|
|
19
|
-
MenuPortal,
|
|
20
|
-
MuteButton,
|
|
21
|
-
PIPButton,
|
|
22
|
-
PlayButton,
|
|
23
|
-
Poster,
|
|
24
|
-
QualitySlider,
|
|
25
|
-
Radio,
|
|
26
|
-
RadioGroup,
|
|
27
|
-
SeekButton,
|
|
28
|
-
Slider,
|
|
29
|
-
SliderChapters,
|
|
30
|
-
SliderPreview,
|
|
31
|
-
SliderThumbnail,
|
|
32
|
-
SliderValue,
|
|
33
|
-
SliderVideo,
|
|
34
|
-
SpeedSlider,
|
|
35
|
-
Thumbnail,
|
|
36
|
-
Time,
|
|
37
|
-
TimeSlider,
|
|
38
|
-
ToggleButton,
|
|
39
|
-
Tooltip,
|
|
40
|
-
TooltipContent,
|
|
41
|
-
TooltipTrigger,
|
|
42
|
-
VolumeSlider,
|
|
43
|
-
} from 'vidstack';
|
|
44
|
-
|
|
45
|
-
// Core
|
|
46
|
-
export class MediaPlayerInstance extends MediaPlayer {}
|
|
47
|
-
export class MediaProviderInstance extends MediaProvider {}
|
|
48
|
-
export class MediaAnnouncerInstance extends MediaAnnouncer {}
|
|
49
|
-
// Controls
|
|
50
|
-
export class ControlsInstance extends Controls {}
|
|
51
|
-
export class ControlsGroupInstance extends ControlsGroup {}
|
|
52
|
-
// Buttons
|
|
53
|
-
export class ToggleButtonInstance extends ToggleButton {}
|
|
54
|
-
export class CaptionButtonInstance extends CaptionButton {}
|
|
55
|
-
export class FullscreenButtonInstance extends FullscreenButton {}
|
|
56
|
-
export class LiveButtonInstance extends LiveButton {}
|
|
57
|
-
export class MuteButtonInstance extends MuteButton {}
|
|
58
|
-
export class PIPButtonInstance extends PIPButton {}
|
|
59
|
-
export class PlayButtonInstance extends PlayButton {}
|
|
60
|
-
export class AirPlayButtonInstance extends AirPlayButton {}
|
|
61
|
-
export class GoogleCastButtonInstance extends GoogleCastButton {}
|
|
62
|
-
export class SeekButtonInstance extends SeekButton {}
|
|
63
|
-
// Tooltip
|
|
64
|
-
export class TooltipInstance extends Tooltip {}
|
|
65
|
-
export class TooltipTriggerInstance extends TooltipTrigger {}
|
|
66
|
-
export class TooltipContentInstance extends TooltipContent {}
|
|
67
|
-
// Sliders
|
|
68
|
-
export class SliderInstance extends Slider {}
|
|
69
|
-
export class TimeSliderInstance extends TimeSlider {}
|
|
70
|
-
export class VolumeSliderInstance extends VolumeSlider {}
|
|
71
|
-
export class AudioGainSliderInstance extends AudioGainSlider {}
|
|
72
|
-
export class SpeedSliderInstance extends SpeedSlider {}
|
|
73
|
-
export class QualitySliderInstance extends QualitySlider {}
|
|
74
|
-
export class SliderThumbnailInstance extends SliderThumbnail {}
|
|
75
|
-
export class SliderValueInstance extends SliderValue {}
|
|
76
|
-
export class SliderVideoInstance extends SliderVideo {}
|
|
77
|
-
export class SliderPreviewInstance extends SliderPreview {}
|
|
78
|
-
export class SliderChaptersInstance extends SliderChapters {}
|
|
79
|
-
// Menus
|
|
80
|
-
export class MenuInstance extends Menu {}
|
|
81
|
-
export class MenuButtonInstance extends MenuButton {}
|
|
82
|
-
export class MenuItemsInstance extends MenuItems {}
|
|
83
|
-
export class MenuItemInstance extends MenuItem {}
|
|
84
|
-
export class MenuPortalInstance extends MenuPortal {}
|
|
85
|
-
export class RadioGroupInstance extends RadioGroup {}
|
|
86
|
-
export class RadioInstance extends Radio {}
|
|
87
|
-
// Display
|
|
88
|
-
export class CaptionsInstance extends Captions {}
|
|
89
|
-
export class GestureInstance extends Gesture {}
|
|
90
|
-
export class PosterInstance extends Poster {}
|
|
91
|
-
export class ThumbnailInstance extends Thumbnail {}
|
|
92
|
-
export class TimeInstance extends Time {}
|
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
/* -------------------------------------------------------------------------------------------------
|
|
2
|
-
* Credit: https://github.com/radix-ui/primitives/blob/main/packages/react/primitive/src/Primitive.tsx
|
|
3
|
-
* -----------------------------------------------------------------------------------------------*/
|
|
4
|
-
|
|
5
|
-
import * as React from 'react';
|
|
6
|
-
|
|
7
|
-
import { Slot } from './slot';
|
|
8
|
-
|
|
9
|
-
/* -------------------------------------------------------------------------------------------------
|
|
10
|
-
* Primitive
|
|
11
|
-
* -----------------------------------------------------------------------------------------------*/
|
|
12
|
-
|
|
13
|
-
const NODES = ['button', 'div', 'span', 'img', 'video', 'audio'] as const;
|
|
14
|
-
|
|
15
|
-
export const Primitive = NODES.reduce((primitives, node) => {
|
|
16
|
-
const Node = React.forwardRef((props: PrimitivePropsWithRef<typeof node>, forwardedRef: any) => {
|
|
17
|
-
const { asChild, ...primitiveProps } = props;
|
|
18
|
-
const Comp: any = asChild ? Slot : node;
|
|
19
|
-
return <Comp {...primitiveProps} ref={forwardedRef} />;
|
|
20
|
-
});
|
|
21
|
-
|
|
22
|
-
Node.displayName = `Primitive.${node}`;
|
|
23
|
-
|
|
24
|
-
return { ...primitives, [node]: Node };
|
|
25
|
-
}, {} as Primitives);
|
|
26
|
-
|
|
27
|
-
/* -------------------------------------------------------------------------------------------------
|
|
28
|
-
* Types
|
|
29
|
-
* -----------------------------------------------------------------------------------------------*/
|
|
30
|
-
|
|
31
|
-
// Temporary while we await merge of this fix:
|
|
32
|
-
// https://github.com/DefinitelyTyped/DefinitelyTyped/pull/55396
|
|
33
|
-
type PropsWithoutRef<P> = P extends any
|
|
34
|
-
? 'ref' extends keyof P
|
|
35
|
-
? Pick<P, Exclude<keyof P, 'ref'>>
|
|
36
|
-
: P
|
|
37
|
-
: P;
|
|
38
|
-
|
|
39
|
-
export type ComponentPropsWithoutRef<T extends React.ElementType> = PropsWithoutRef<
|
|
40
|
-
React.ComponentProps<T>
|
|
41
|
-
>;
|
|
42
|
-
|
|
43
|
-
type Primitives = { [E in (typeof NODES)[number]]: PrimitiveForwardRefComponent<E> };
|
|
44
|
-
|
|
45
|
-
export type PrimitivePropsWithRef<E extends React.ElementType> = Omit<
|
|
46
|
-
React.ComponentProps<E>,
|
|
47
|
-
'style'
|
|
48
|
-
> &
|
|
49
|
-
React.Attributes & {
|
|
50
|
-
asChild?: boolean;
|
|
51
|
-
style?:
|
|
52
|
-
| React.CSSProperties
|
|
53
|
-
| (React.CSSProperties & Record<`--${string}`, string | null | undefined>)
|
|
54
|
-
| undefined;
|
|
55
|
-
};
|
|
56
|
-
|
|
57
|
-
interface PrimitiveForwardRefComponent<E extends React.ElementType>
|
|
58
|
-
extends React.ForwardRefExoticComponent<PrimitivePropsWithRef<E>> {}
|
|
@@ -1,132 +0,0 @@
|
|
|
1
|
-
/* -------------------------------------------------------------------------------------------------
|
|
2
|
-
* Credit: https://github.com/radix-ui/primitives/blob/main/packages/react/slot/src/Slot.tsx
|
|
3
|
-
* -----------------------------------------------------------------------------------------------*/
|
|
4
|
-
|
|
5
|
-
import * as React from 'react';
|
|
6
|
-
|
|
7
|
-
import { composeRefs } from 'maverick.js/react';
|
|
8
|
-
|
|
9
|
-
/* -------------------------------------------------------------------------------------------------
|
|
10
|
-
* Slot
|
|
11
|
-
* -----------------------------------------------------------------------------------------------*/
|
|
12
|
-
|
|
13
|
-
interface SlotProps extends React.HTMLAttributes<HTMLElement> {
|
|
14
|
-
children?: React.ReactNode;
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
const Slot = React.forwardRef<HTMLElement, SlotProps>((props, forwardedRef) => {
|
|
18
|
-
const { children, ...slotProps } = props;
|
|
19
|
-
const childrenArray = React.Children.toArray(children);
|
|
20
|
-
const slottable = childrenArray.find(isSlottable);
|
|
21
|
-
|
|
22
|
-
if (slottable) {
|
|
23
|
-
// the new element to render is the one passed as a child of `Slottable`
|
|
24
|
-
const newElement = (slottable.props as { children: React.ReactNode }).children;
|
|
25
|
-
|
|
26
|
-
const newChildren = childrenArray.map((child) => {
|
|
27
|
-
if (child === slottable) {
|
|
28
|
-
// because the new element will be the one rendered, we are only interested
|
|
29
|
-
// in grabbing its children (`newElement.props.children`)
|
|
30
|
-
if (React.Children.count(newElement) > 1) return React.Children.only(null);
|
|
31
|
-
return React.isValidElement(newElement)
|
|
32
|
-
? (newElement.props as { children: React.ReactNode }).children
|
|
33
|
-
: null;
|
|
34
|
-
} else {
|
|
35
|
-
return child;
|
|
36
|
-
}
|
|
37
|
-
});
|
|
38
|
-
|
|
39
|
-
return (
|
|
40
|
-
<SlotClone {...slotProps} ref={forwardedRef}>
|
|
41
|
-
{React.isValidElement(newElement)
|
|
42
|
-
? React.cloneElement(newElement, undefined, newChildren)
|
|
43
|
-
: null}
|
|
44
|
-
</SlotClone>
|
|
45
|
-
);
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
return (
|
|
49
|
-
<SlotClone {...slotProps} ref={forwardedRef}>
|
|
50
|
-
{children}
|
|
51
|
-
</SlotClone>
|
|
52
|
-
);
|
|
53
|
-
});
|
|
54
|
-
|
|
55
|
-
Slot.displayName = 'Slot';
|
|
56
|
-
|
|
57
|
-
/* -------------------------------------------------------------------------------------------------
|
|
58
|
-
* SlotClone
|
|
59
|
-
* -----------------------------------------------------------------------------------------------*/
|
|
60
|
-
|
|
61
|
-
interface SlotCloneProps {
|
|
62
|
-
children: React.ReactNode;
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
const SlotClone = React.forwardRef<any, SlotCloneProps>((props, forwardedRef) => {
|
|
66
|
-
const { children, ...slotProps } = props;
|
|
67
|
-
|
|
68
|
-
if (React.isValidElement(children)) {
|
|
69
|
-
return React.cloneElement<any>(children, {
|
|
70
|
-
...mergeProps(slotProps, children.props as any),
|
|
71
|
-
ref: forwardedRef ? composeRefs(forwardedRef, (children as any).ref) : (children as any).ref,
|
|
72
|
-
});
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
return React.Children.count(children) > 1 ? React.Children.only(null) : null;
|
|
76
|
-
});
|
|
77
|
-
|
|
78
|
-
SlotClone.displayName = 'SlotClone';
|
|
79
|
-
|
|
80
|
-
/* -------------------------------------------------------------------------------------------------
|
|
81
|
-
* Slottable
|
|
82
|
-
* -----------------------------------------------------------------------------------------------*/
|
|
83
|
-
|
|
84
|
-
const Slottable = ({ children }: { children: React.ReactNode }) => {
|
|
85
|
-
return <>{children}</>;
|
|
86
|
-
};
|
|
87
|
-
|
|
88
|
-
/* ---------------------------------------------------------------------------------------------- */
|
|
89
|
-
|
|
90
|
-
type AnyProps = Record<string, any>;
|
|
91
|
-
|
|
92
|
-
function isSlottable(child: React.ReactNode): child is React.ReactElement {
|
|
93
|
-
return React.isValidElement(child) && child.type === Slottable;
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
function mergeProps(slotProps: AnyProps, childProps: AnyProps) {
|
|
97
|
-
// all child props should override
|
|
98
|
-
const overrideProps = { ...childProps };
|
|
99
|
-
|
|
100
|
-
for (const propName in childProps) {
|
|
101
|
-
const slotPropValue = slotProps[propName];
|
|
102
|
-
const childPropValue = childProps[propName];
|
|
103
|
-
|
|
104
|
-
const isHandler = /^on[A-Z]/.test(propName);
|
|
105
|
-
if (isHandler) {
|
|
106
|
-
// if the handler exists on both, we compose them
|
|
107
|
-
if (slotPropValue && childPropValue) {
|
|
108
|
-
overrideProps[propName] = (...args: unknown[]) => {
|
|
109
|
-
childPropValue(...args);
|
|
110
|
-
slotPropValue(...args);
|
|
111
|
-
};
|
|
112
|
-
}
|
|
113
|
-
// but if it exists only on the slot, we use only this one
|
|
114
|
-
else if (slotPropValue) {
|
|
115
|
-
overrideProps[propName] = slotPropValue;
|
|
116
|
-
}
|
|
117
|
-
}
|
|
118
|
-
// if it's `style`, we merge them
|
|
119
|
-
else if (propName === 'style') {
|
|
120
|
-
overrideProps[propName] = { ...slotPropValue, ...childPropValue };
|
|
121
|
-
} else if (propName === 'className') {
|
|
122
|
-
overrideProps[propName] = [slotPropValue, childPropValue].filter(Boolean).join(' ');
|
|
123
|
-
}
|
|
124
|
-
}
|
|
125
|
-
|
|
126
|
-
return { ...slotProps, ...overrideProps };
|
|
127
|
-
}
|
|
128
|
-
|
|
129
|
-
const Root = Slot;
|
|
130
|
-
|
|
131
|
-
export { Slot, Slottable, Root };
|
|
132
|
-
export type { SlotProps };
|