@videojs/react 10.0.0-beta.13 → 10.0.0-beta.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/dist/default/index.js +1 -1
- package/dist/default/presets/audio/minimal-skin.css +0 -26
- package/dist/default/presets/audio/minimal-skin.js +1 -9
- package/dist/default/presets/audio/minimal-skin.js.map +1 -1
- package/dist/default/presets/audio/minimal-skin.tailwind.js +1 -9
- package/dist/default/presets/audio/minimal-skin.tailwind.js.map +1 -1
- package/dist/default/presets/audio/skin.css +0 -26
- package/dist/default/presets/audio/skin.js +1 -9
- package/dist/default/presets/audio/skin.js.map +1 -1
- package/dist/default/presets/audio/skin.tailwind.js +1 -9
- package/dist/default/presets/audio/skin.tailwind.js.map +1 -1
- package/dist/default/presets/video/minimal-skin.css +3 -45
- package/dist/default/presets/video/minimal-skin.js +4 -30
- package/dist/default/presets/video/minimal-skin.js.map +1 -1
- package/dist/default/presets/video/minimal-skin.tailwind.js +4 -30
- package/dist/default/presets/video/minimal-skin.tailwind.js.map +1 -1
- package/dist/default/presets/video/skin.css +3 -45
- package/dist/default/presets/video/skin.js +4 -30
- package/dist/default/presets/video/skin.js.map +1 -1
- package/dist/default/presets/video/skin.tailwind.js +4 -30
- package/dist/default/presets/video/skin.tailwind.js.map +1 -1
- package/dist/default/skins/dist/default/default/tailwind/audio.tailwind.js.map +1 -1
- package/dist/default/skins/dist/default/default/tailwind/video.tailwind.js.map +1 -1
- package/dist/default/skins/dist/default/minimal/tailwind/audio.tailwind.js.map +1 -1
- package/dist/default/skins/dist/default/minimal/tailwind/video.tailwind.js.map +1 -1
- package/dist/default/ui/create-media-button.js +14 -5
- package/dist/default/ui/create-media-button.js.map +1 -1
- package/dist/default/ui/thumbnail/thumbnail.js +1 -2
- package/dist/default/ui/thumbnail/thumbnail.js.map +1 -1
- package/dist/default/ui/tooltip/context.js +4 -1
- package/dist/default/ui/tooltip/context.js.map +1 -1
- package/dist/default/ui/tooltip/index.js +2 -2
- package/dist/default/ui/tooltip/tooltip-popup.js +2 -1
- package/dist/default/ui/tooltip/tooltip-popup.js.map +1 -1
- package/dist/default/ui/tooltip/tooltip-root.js +4 -1
- package/dist/default/ui/tooltip/tooltip-root.js.map +1 -1
- package/dist/default/ui/tooltip/tooltip-trigger.js +2 -5
- package/dist/default/ui/tooltip/tooltip-trigger.js.map +1 -1
- package/dist/default/ui/volume-slider/volume-slider-root.js +30 -12
- package/dist/default/ui/volume-slider/volume-slider-root.js.map +1 -1
- package/dist/dev/index.js +1 -1
- package/dist/dev/media/mux-video/index.d.ts +1 -1
- package/dist/dev/presets/audio/minimal-skin.css +0 -26
- package/dist/dev/presets/audio/minimal-skin.d.ts.map +1 -1
- package/dist/dev/presets/audio/minimal-skin.js +1 -9
- package/dist/dev/presets/audio/minimal-skin.js.map +1 -1
- package/dist/dev/presets/audio/minimal-skin.tailwind.d.ts.map +1 -1
- package/dist/dev/presets/audio/minimal-skin.tailwind.js +1 -9
- package/dist/dev/presets/audio/minimal-skin.tailwind.js.map +1 -1
- package/dist/dev/presets/audio/skin.css +0 -26
- package/dist/dev/presets/audio/skin.d.ts.map +1 -1
- package/dist/dev/presets/audio/skin.js +1 -9
- package/dist/dev/presets/audio/skin.js.map +1 -1
- package/dist/dev/presets/audio/skin.tailwind.d.ts.map +1 -1
- package/dist/dev/presets/audio/skin.tailwind.js +1 -9
- package/dist/dev/presets/audio/skin.tailwind.js.map +1 -1
- package/dist/dev/presets/video/minimal-skin.css +3 -45
- package/dist/dev/presets/video/minimal-skin.d.ts.map +1 -1
- package/dist/dev/presets/video/minimal-skin.js +4 -30
- package/dist/dev/presets/video/minimal-skin.js.map +1 -1
- package/dist/dev/presets/video/minimal-skin.tailwind.d.ts.map +1 -1
- package/dist/dev/presets/video/minimal-skin.tailwind.js +4 -30
- package/dist/dev/presets/video/minimal-skin.tailwind.js.map +1 -1
- package/dist/dev/presets/video/skin.css +3 -45
- package/dist/dev/presets/video/skin.d.ts.map +1 -1
- package/dist/dev/presets/video/skin.js +4 -30
- package/dist/dev/presets/video/skin.js.map +1 -1
- package/dist/dev/presets/video/skin.tailwind.d.ts.map +1 -1
- package/dist/dev/presets/video/skin.tailwind.js +4 -30
- package/dist/dev/presets/video/skin.tailwind.js.map +1 -1
- package/dist/dev/skins/dist/default/default/tailwind/audio.tailwind.js.map +1 -1
- package/dist/dev/skins/dist/default/default/tailwind/video.tailwind.js.map +1 -1
- package/dist/dev/skins/dist/default/minimal/tailwind/audio.tailwind.js.map +1 -1
- package/dist/dev/skins/dist/default/minimal/tailwind/video.tailwind.js.map +1 -1
- package/dist/dev/ui/create-media-button.js +14 -5
- package/dist/dev/ui/create-media-button.js.map +1 -1
- package/dist/dev/ui/thumbnail/thumbnail.d.ts.map +1 -1
- package/dist/dev/ui/thumbnail/thumbnail.js +1 -2
- package/dist/dev/ui/thumbnail/thumbnail.js.map +1 -1
- package/dist/dev/ui/tooltip/context.d.ts +4 -1
- package/dist/dev/ui/tooltip/context.d.ts.map +1 -1
- package/dist/dev/ui/tooltip/context.js +4 -1
- package/dist/dev/ui/tooltip/context.js.map +1 -1
- package/dist/dev/ui/tooltip/index.d.ts +2 -2
- package/dist/dev/ui/tooltip/index.js +2 -2
- package/dist/dev/ui/tooltip/tooltip-popup.d.ts.map +1 -1
- package/dist/dev/ui/tooltip/tooltip-popup.js +2 -1
- package/dist/dev/ui/tooltip/tooltip-popup.js.map +1 -1
- package/dist/dev/ui/tooltip/tooltip-root.d.ts.map +1 -1
- package/dist/dev/ui/tooltip/tooltip-root.js +4 -1
- package/dist/dev/ui/tooltip/tooltip-root.js.map +1 -1
- package/dist/dev/ui/tooltip/tooltip-trigger.d.ts.map +1 -1
- package/dist/dev/ui/tooltip/tooltip-trigger.js +2 -5
- package/dist/dev/ui/tooltip/tooltip-trigger.js.map +1 -1
- package/dist/dev/ui/volume-slider/volume-slider-root.d.ts.map +1 -1
- package/dist/dev/ui/volume-slider/volume-slider-root.js +30 -12
- package/dist/dev/ui/volume-slider/volume-slider-root.js.map +1 -1
- package/package.json +7 -7
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skin.js","names":["Popover.Root","Popover.Trigger","Popover.Popup","VolumeSlider.Root","VolumeSlider.Track","VolumeSlider.Fill","VolumeSlider.Thumb","ErrorDialog.Root","ErrorDialog.Popup","ErrorDialog.Title","ErrorDialog.Description","ErrorDialog.Close","Controls.Root","Tooltip.Provider","Tooltip.Root","Tooltip.Trigger","Tooltip.Popup","Time.Value","TimeSlider.Root","TimeSlider.Track","TimeSlider.Fill","TimeSlider.Buffer","TimeSlider.Thumb","Slider.Thumbnail","TimeSlider.Value"],"sources":["../../../../src/presets/video/skin.tsx"],"sourcesContent":["import {\n CaptionsOffIcon,\n CaptionsOnIcon,\n FullscreenEnterIcon,\n FullscreenExitIcon,\n PauseIcon,\n PipEnterIcon,\n PipExitIcon,\n PlayIcon,\n RestartIcon,\n SeekIcon,\n SpinnerIcon,\n VolumeHighIcon,\n VolumeLowIcon,\n VolumeOffIcon,\n} from '@videojs/icons/react';\nimport { isString } from '@videojs/utils/predicate';\nimport { cn } from '@videojs/utils/style';\nimport { type ComponentProps, forwardRef, type ReactNode } from 'react';\nimport { Container, usePlayer } from '@/player/context';\nimport { BufferingIndicator } from '@/ui/buffering-indicator';\nimport { CaptionsButton } from '@/ui/captions-button';\nimport { Controls } from '@/ui/controls';\nimport { ErrorDialog } from '@/ui/error-dialog';\nimport { FullscreenButton } from '@/ui/fullscreen-button';\nimport { MuteButton } from '@/ui/mute-button';\nimport { PiPButton } from '@/ui/pip-button';\nimport { PlayButton } from '@/ui/play-button';\nimport { PlaybackRateButton } from '@/ui/playback-rate-button';\nimport { Popover } from '@/ui/popover';\nimport { Poster } from '@/ui/poster';\nimport { SeekButton } from '@/ui/seek-button';\nimport { Slider } from '@/ui/slider';\nimport { Time } from '@/ui/time';\nimport { TimeSlider } from '@/ui/time-slider';\nimport { Tooltip } from '@/ui/tooltip';\nimport { VolumeSlider } from '@/ui/volume-slider';\nimport { isRenderProp } from '@/utils/use-render';\nimport type { BaseVideoSkinProps } from '../types';\n\nconst SEEK_TIME = 10;\n\nexport type VideoSkinProps = BaseVideoSkinProps;\n\nconst Button = forwardRef<HTMLButtonElement, ComponentProps<'button'>>(function Button({ className, ...props }, ref) {\n return (\n <button\n ref={ref}\n type=\"button\"\n className={cn('media-button media-button--subtle media-button--icon', className)}\n {...props}\n />\n );\n});\n\nfunction PlayLabel(): string {\n const paused = usePlayer((s) => Boolean(s.paused));\n const ended = usePlayer((s) => Boolean(s.ended));\n if (ended) return 'Replay';\n return paused ? 'Play' : 'Pause';\n}\n\nfunction CaptionsLabel(): string {\n const active = usePlayer((s) => Boolean(s.subtitlesShowing));\n return active ? 'Disable captions' : 'Enable captions';\n}\n\nfunction PiPLabel(): string {\n const pip = usePlayer((s) => Boolean(s.pip));\n return pip ? 'Exit picture-in-picture' : 'Enter picture-in-picture';\n}\n\nfunction FullscreenLabel(): string {\n const fullscreen = usePlayer((s) => Boolean(s.fullscreen));\n return fullscreen ? 'Exit fullscreen' : 'Enter fullscreen';\n}\n\nfunction VolumePopover(): ReactNode {\n const volumeUnsupported = usePlayer((s) => s.volumeAvailability === 'unsupported');\n\n const muteButton = (\n <MuteButton className=\"media-button--mute\" render={<Button />}>\n <VolumeOffIcon className=\"media-icon media-icon--volume-off\" />\n <VolumeLowIcon className=\"media-icon media-icon--volume-low\" />\n <VolumeHighIcon className=\"media-icon media-icon--volume-high\" />\n </MuteButton>\n );\n\n if (volumeUnsupported) return muteButton;\n\n return (\n <Popover.Root openOnHover delay={200} closeDelay={100} side=\"top\">\n <Popover.Trigger render={muteButton} />\n <Popover.Popup className=\"media-surface media-popover media-popover--volume\">\n <VolumeSlider.Root className=\"media-slider\" orientation=\"vertical\" thumbAlignment=\"edge\">\n <VolumeSlider.Track className=\"media-slider__track\">\n <VolumeSlider.Fill className=\"media-slider__fill\" />\n </VolumeSlider.Track>\n <VolumeSlider.Thumb className=\"media-slider__thumb media-slider__thumb--persistent\" />\n </VolumeSlider.Root>\n </Popover.Popup>\n </Popover.Root>\n );\n}\n\nexport function VideoSkin(props: VideoSkinProps): ReactNode {\n const { children, className, poster, ...rest } = props;\n\n return (\n <Container className={cn('media-default-skin media-default-skin--video', className)} {...rest}>\n {children}\n\n {poster && (\n <Poster src={isString(poster) ? poster : undefined} render={isRenderProp(poster) ? poster : undefined} />\n )}\n\n <BufferingIndicator\n render={(props) => (\n <div {...props} className=\"media-buffering-indicator\">\n <div className=\"media-surface\">\n <SpinnerIcon className=\"media-icon\" />\n </div>\n </div>\n )}\n />\n\n <ErrorDialog.Root>\n <ErrorDialog.Popup className=\"media-error\">\n <div className=\"media-error__dialog media-surface\">\n <div className=\"media-error__content\">\n <ErrorDialog.Title className=\"media-error__title\">Something went wrong.</ErrorDialog.Title>\n <ErrorDialog.Description className=\"media-error__description\" />\n </div>\n <div className=\"media-error__actions\">\n <ErrorDialog.Close className=\"media-button media-button--primary\">OK</ErrorDialog.Close>\n </div>\n </div>\n </ErrorDialog.Popup>\n </ErrorDialog.Root>\n\n <Controls.Root className=\"media-surface media-controls\">\n <Tooltip.Provider>\n <div className=\"media-button-group\">\n <Tooltip.Root side=\"top\">\n <Tooltip.Trigger\n render={\n <PlayButton className=\"media-button--play\" render={<Button />}>\n <RestartIcon className=\"media-icon media-icon--restart\" />\n <PlayIcon className=\"media-icon media-icon--play\" />\n <PauseIcon className=\"media-icon media-icon--pause\" />\n </PlayButton>\n }\n />\n <Tooltip.Popup className=\"media-surface media-tooltip\">\n <PlayLabel />\n </Tooltip.Popup>\n </Tooltip.Root>\n\n <Tooltip.Root side=\"top\">\n <Tooltip.Trigger\n render={\n <SeekButton seconds={-SEEK_TIME} className=\"media-button--seek\" render={<Button />}>\n <span className=\"media-icon__container\">\n <SeekIcon className=\"media-icon media-icon--seek media-icon--flipped\" />\n <span className=\"media-icon__label\">{SEEK_TIME}</span>\n </span>\n </SeekButton>\n }\n />\n <Tooltip.Popup className=\"media-surface media-tooltip\">Seek backward {SEEK_TIME} seconds</Tooltip.Popup>\n </Tooltip.Root>\n\n <Tooltip.Root side=\"top\">\n <Tooltip.Trigger\n render={\n <SeekButton seconds={SEEK_TIME} className=\"media-button--seek\" render={<Button />}>\n <span className=\"media-icon__container\">\n <SeekIcon className=\"media-icon media-icon--seek\" />\n <span className=\"media-icon__label\">{SEEK_TIME}</span>\n </span>\n </SeekButton>\n }\n />\n <Tooltip.Popup className=\"media-surface media-tooltip\">Seek forward {SEEK_TIME} seconds</Tooltip.Popup>\n </Tooltip.Root>\n </div>\n\n <div className=\"media-time-controls\">\n <Time.Value type=\"current\" className=\"media-time\" />\n <TimeSlider.Root className=\"media-slider\">\n <TimeSlider.Track className=\"media-slider__track\">\n <TimeSlider.Fill className=\"media-slider__fill\" />\n <TimeSlider.Buffer className=\"media-slider__buffer\" />\n </TimeSlider.Track>\n <TimeSlider.Thumb className=\"media-slider__thumb\" />\n\n <div className=\"media-surface media-preview media-slider__preview\">\n <Slider.Thumbnail className=\"media-preview__thumbnail\" />\n <TimeSlider.Value type=\"pointer\" className=\"media-time media-preview__time\" />\n <SpinnerIcon className=\"media-preview__spinner media-icon\" />\n </div>\n </TimeSlider.Root>\n <Time.Value type=\"duration\" className=\"media-time\" />\n </div>\n\n <div className=\"media-button-group\">\n <Tooltip.Root side=\"top\">\n <Tooltip.Trigger\n render={<PlaybackRateButton className=\"media-button--playback-rate\" render={<Button />} />}\n />\n <Tooltip.Popup className=\"media-surface media-tooltip\">Toggle playback rate</Tooltip.Popup>\n </Tooltip.Root>\n\n <VolumePopover />\n\n <Tooltip.Root side=\"top\">\n <Tooltip.Trigger\n render={\n <CaptionsButton className=\"media-button--captions\" render={<Button />}>\n <CaptionsOffIcon className=\"media-icon media-icon--captions-off\" />\n <CaptionsOnIcon className=\"media-icon media-icon--captions-on\" />\n </CaptionsButton>\n }\n />\n <Tooltip.Popup className=\"media-surface media-tooltip\">\n <CaptionsLabel />\n </Tooltip.Popup>\n </Tooltip.Root>\n\n <Tooltip.Root side=\"top\">\n <Tooltip.Trigger\n render={\n <PiPButton className=\"media-button--pip\" render={<Button />}>\n <PipEnterIcon className=\"media-icon media-icon--pip-enter\" />\n <PipExitIcon className=\"media-icon media-icon--pip-exit\" />\n </PiPButton>\n }\n />\n <Tooltip.Popup className=\"media-surface media-tooltip\">\n <PiPLabel />\n </Tooltip.Popup>\n </Tooltip.Root>\n\n <Tooltip.Root side=\"top\">\n <Tooltip.Trigger\n render={\n <FullscreenButton className=\"media-button--fullscreen\" render={<Button />}>\n <FullscreenEnterIcon className=\"media-icon media-icon--fullscreen-enter\" />\n <FullscreenExitIcon className=\"media-icon media-icon--fullscreen-exit\" />\n </FullscreenButton>\n }\n />\n <Tooltip.Popup className=\"media-surface media-tooltip\">\n <FullscreenLabel />\n </Tooltip.Popup>\n </Tooltip.Root>\n </div>\n </Tooltip.Provider>\n </Controls.Root>\n\n <div className=\"media-overlay\" />\n </Container>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAwCA,MAAM,YAAY;AAIlB,MAAM,SAAS,WAAwD,SAAS,OAAO,EAAE,WAAW,GAAG,SAAS,KAAK;AACnH,QACE,oBAAC,UAAD;EACO;EACL,MAAK;EACL,WAAW,GAAG,wDAAwD,UAAU;EAChF,GAAI;EACJ,CAAA;EAEJ;AAEF,SAAS,YAAoB;CAC3B,MAAM,SAAS,WAAW,MAAM,QAAQ,EAAE,OAAO,CAAC;AAElD,KADc,WAAW,MAAM,QAAQ,EAAE,MAAM,CAAC,CACrC,QAAO;AAClB,QAAO,SAAS,SAAS;;AAG3B,SAAS,gBAAwB;AAE/B,QADe,WAAW,MAAM,QAAQ,EAAE,iBAAiB,CAAC,GAC5C,qBAAqB;;AAGvC,SAAS,WAAmB;AAE1B,QADY,WAAW,MAAM,QAAQ,EAAE,IAAI,CAAC,GAC/B,4BAA4B;;AAG3C,SAAS,kBAA0B;AAEjC,QADmB,WAAW,MAAM,QAAQ,EAAE,WAAW,CAAC,GACtC,oBAAoB;;AAG1C,SAAS,gBAA2B;CAClC,MAAM,oBAAoB,WAAW,MAAM,EAAE,uBAAuB,cAAc;CAElF,MAAM,aACJ,qBAAC,YAAD;EAAY,WAAU;EAAqB,QAAQ,oBAAC,QAAD,EAAU,CAAA;YAA7D;GACE,oBAAC,eAAD,EAAe,WAAU,qCAAsC,CAAA;GAC/D,oBAAC,eAAD,EAAe,WAAU,qCAAsC,CAAA;GAC/D,oBAAC,gBAAD,EAAgB,WAAU,sCAAuC,CAAA;GACtD;;AAGf,KAAI,kBAAmB,QAAO;AAE9B,QACE,qBAACA,aAAD;EAAc,aAAA;EAAY,OAAO;EAAK,YAAY;EAAK,MAAK;YAA5D,CACE,oBAACC,gBAAD,EAAiB,QAAQ,YAAc,CAAA,EACvC,oBAACC,cAAD;GAAe,WAAU;aACvB,qBAACC,kBAAD;IAAmB,WAAU;IAAe,aAAY;IAAW,gBAAe;cAAlF,CACE,oBAACC,aAAD;KAAoB,WAAU;eAC5B,oBAACC,YAAD,EAAmB,WAAU,sBAAuB,CAAA;KACjC,CAAA,EACrB,oBAACC,aAAD,EAAoB,WAAU,uDAAwD,CAAA,CACpE;;GACN,CAAA,CACH;;;AAInB,SAAgB,UAAU,OAAkC;CAC1D,MAAM,EAAE,UAAU,WAAW,QAAQ,GAAG,SAAS;AAEjD,QACE,qBAAC,WAAD;EAAW,WAAW,GAAG,gDAAgD,UAAU;EAAE,GAAI;YAAzF;GACG;GAEA,UACC,oBAAC,QAAD;IAAQ,KAAK,SAAS,OAAO,GAAG,SAAS,KAAA;IAAW,QAAQ,aAAa,OAAO,GAAG,SAAS,KAAA;IAAa,CAAA;GAG3G,oBAAC,oBAAD,EACE,SAAS,UACP,oBAAC,OAAD;IAAK,GAAI;IAAO,WAAU;cACxB,oBAAC,OAAD;KAAK,WAAU;eACb,oBAAC,aAAD,EAAa,WAAU,cAAe,CAAA;KAClC,CAAA;IACF,CAAA,EAER,CAAA;GAEF,oBAACC,iBAAD,EAAA,UACE,oBAACC,kBAAD;IAAmB,WAAU;cAC3B,qBAAC,OAAD;KAAK,WAAU;eAAf,CACE,qBAAC,OAAD;MAAK,WAAU;gBAAf,CACE,oBAACC,kBAAD;OAAmB,WAAU;iBAAqB;OAAyC,CAAA,EAC3F,oBAACC,wBAAD,EAAyB,WAAU,4BAA6B,CAAA,CAC5D;SACN,oBAAC,OAAD;MAAK,WAAU;gBACb,oBAACC,kBAAD;OAAmB,WAAU;iBAAqC;OAAsB,CAAA;MACpF,CAAA,CACF;;IACY,CAAA,EACH,CAAA;GAEnB,oBAACC,cAAD;IAAe,WAAU;cACvB,qBAACC,iBAAD,EAAA,UAAA;KACE,qBAAC,OAAD;MAAK,WAAU;gBAAf;OACE,qBAACC,aAAD;QAAc,MAAK;kBAAnB,CACE,oBAACC,gBAAD,EACE,QACE,qBAAC,YAAD;SAAY,WAAU;SAAqB,QAAQ,oBAAC,QAAD,EAAU,CAAA;mBAA7D;UACE,oBAAC,aAAD,EAAa,WAAU,kCAAmC,CAAA;UAC1D,oBAAC,UAAD,EAAU,WAAU,+BAAgC,CAAA;UACpD,oBAAC,WAAD,EAAW,WAAU,gCAAiC,CAAA;UAC3C;YAEf,CAAA,EACF,oBAACC,cAAD;SAAe,WAAU;mBACvB,oBAAC,WAAD,EAAa,CAAA;SACC,CAAA,CACH;;OAEf,qBAACF,aAAD;QAAc,MAAK;kBAAnB,CACE,oBAACC,gBAAD,EACE,QACE,oBAAC,YAAD;SAAY,SAAS,CAAC;SAAW,WAAU;SAAqB,QAAQ,oBAAC,QAAD,EAAU,CAAA;mBAChF,qBAAC,QAAD;UAAM,WAAU;oBAAhB,CACE,oBAAC,UAAD,EAAU,WAAU,mDAAoD,CAAA,EACxE,oBAAC,QAAD;WAAM,WAAU;qBAAqB;WAAiB,CAAA,CACjD;;SACI,CAAA,EAEf,CAAA,EACF,qBAACC,cAAD;SAAe,WAAU;mBAAzB;UAAuD;UAAe;UAAU;UAAwB;WAC3F;;OAEf,qBAACF,aAAD;QAAc,MAAK;kBAAnB,CACE,oBAACC,gBAAD,EACE,QACE,oBAAC,YAAD;SAAY,SAAS;SAAW,WAAU;SAAqB,QAAQ,oBAAC,QAAD,EAAU,CAAA;mBAC/E,qBAAC,QAAD;UAAM,WAAU;oBAAhB,CACE,oBAAC,UAAD,EAAU,WAAU,+BAAgC,CAAA,EACpD,oBAAC,QAAD;WAAM,WAAU;qBAAqB;WAAiB,CAAA,CACjD;;SACI,CAAA,EAEf,CAAA,EACF,qBAACC,cAAD;SAAe,WAAU;mBAAzB;UAAuD;UAAc;UAAU;UAAwB;WAC1F;;OACX;;KAEN,qBAAC,OAAD;MAAK,WAAU;gBAAf;OACE,oBAACC,OAAD;QAAY,MAAK;QAAU,WAAU;QAAe,CAAA;OACpD,qBAACC,gBAAD;QAAiB,WAAU;kBAA3B;SACE,qBAACC,aAAD;UAAkB,WAAU;oBAA5B,CACE,oBAACC,YAAD,EAAiB,WAAU,sBAAuB,CAAA,EAClD,oBAACC,cAAD,EAAmB,WAAU,wBAAyB,CAAA,CACrC;;SACnB,oBAACC,aAAD,EAAkB,WAAU,uBAAwB,CAAA;SAEpD,qBAAC,OAAD;UAAK,WAAU;oBAAf;WACE,oBAACC,iBAAD,EAAkB,WAAU,4BAA6B,CAAA;WACzD,oBAACC,aAAD;YAAkB,MAAK;YAAU,WAAU;YAAmC,CAAA;WAC9E,oBAAC,aAAD,EAAa,WAAU,qCAAsC,CAAA;WACzD;;SACU;;OAClB,oBAACP,OAAD;QAAY,MAAK;QAAW,WAAU;QAAe,CAAA;OACjD;;KAEN,qBAAC,OAAD;MAAK,WAAU;gBAAf;OACE,qBAACH,aAAD;QAAc,MAAK;kBAAnB,CACE,oBAACC,gBAAD,EACE,QAAQ,oBAAC,oBAAD;SAAoB,WAAU;SAA8B,QAAQ,oBAAC,QAAD,EAAU,CAAA;SAAI,CAAA,EAC1F,CAAA,EACF,oBAACC,cAAD;SAAe,WAAU;mBAA8B;SAAoC,CAAA,CAC9E;;OAEf,oBAAC,eAAD,EAAiB,CAAA;OAEjB,qBAACF,aAAD;QAAc,MAAK;kBAAnB,CACE,oBAACC,gBAAD,EACE,QACE,qBAAC,gBAAD;SAAgB,WAAU;SAAyB,QAAQ,oBAAC,QAAD,EAAU,CAAA;mBAArE,CACE,oBAAC,iBAAD,EAAiB,WAAU,uCAAwC,CAAA,EACnE,oBAAC,gBAAD,EAAgB,WAAU,sCAAuC,CAAA,CAClD;YAEnB,CAAA,EACF,oBAACC,cAAD;SAAe,WAAU;mBACvB,oBAAC,eAAD,EAAiB,CAAA;SACH,CAAA,CACH;;OAEf,qBAACF,aAAD;QAAc,MAAK;kBAAnB,CACE,oBAACC,gBAAD,EACE,QACE,qBAAC,WAAD;SAAW,WAAU;SAAoB,QAAQ,oBAAC,QAAD,EAAU,CAAA;mBAA3D,CACE,oBAAC,cAAD,EAAc,WAAU,oCAAqC,CAAA,EAC7D,oBAAC,aAAD,EAAa,WAAU,mCAAoC,CAAA,CACjD;YAEd,CAAA,EACF,oBAACC,cAAD;SAAe,WAAU;mBACvB,oBAAC,UAAD,EAAY,CAAA;SACE,CAAA,CACH;;OAEf,qBAACF,aAAD;QAAc,MAAK;kBAAnB,CACE,oBAACC,gBAAD,EACE,QACE,qBAAC,kBAAD;SAAkB,WAAU;SAA2B,QAAQ,oBAAC,QAAD,EAAU,CAAA;mBAAzE,CACE,oBAAC,qBAAD,EAAqB,WAAU,2CAA4C,CAAA,EAC3E,oBAAC,oBAAD,EAAoB,WAAU,0CAA2C,CAAA,CACxD;YAErB,CAAA,EACF,oBAACC,cAAD;SAAe,WAAU;mBACvB,oBAAC,iBAAD,EAAmB,CAAA;SACL,CAAA,CACH;;OACX;;KACW,EAAA,CAAA;IACL,CAAA;GAEhB,oBAAC,OAAD,EAAK,WAAU,iBAAkB,CAAA;GACvB"}
|
|
1
|
+
{"version":3,"file":"skin.js","names":["Popover.Root","Popover.Trigger","Popover.Popup","VolumeSlider.Root","VolumeSlider.Track","VolumeSlider.Fill","VolumeSlider.Thumb","ErrorDialog.Root","ErrorDialog.Popup","ErrorDialog.Title","ErrorDialog.Description","ErrorDialog.Close","Controls.Root","Tooltip.Provider","Tooltip.Root","Tooltip.Trigger","Tooltip.Popup","Time.Value","TimeSlider.Root","TimeSlider.Track","TimeSlider.Fill","TimeSlider.Buffer","TimeSlider.Thumb","Slider.Thumbnail","TimeSlider.Value"],"sources":["../../../../src/presets/video/skin.tsx"],"sourcesContent":["import {\n CaptionsOffIcon,\n CaptionsOnIcon,\n FullscreenEnterIcon,\n FullscreenExitIcon,\n PauseIcon,\n PipEnterIcon,\n PipExitIcon,\n PlayIcon,\n RestartIcon,\n SeekIcon,\n SpinnerIcon,\n VolumeHighIcon,\n VolumeLowIcon,\n VolumeOffIcon,\n} from '@videojs/icons/react';\nimport { isString } from '@videojs/utils/predicate';\nimport { cn } from '@videojs/utils/style';\nimport { type ComponentProps, forwardRef, type ReactNode } from 'react';\nimport { Container, usePlayer } from '@/player/context';\nimport { BufferingIndicator } from '@/ui/buffering-indicator';\nimport { CaptionsButton } from '@/ui/captions-button';\nimport { Controls } from '@/ui/controls';\nimport { ErrorDialog } from '@/ui/error-dialog';\nimport { FullscreenButton } from '@/ui/fullscreen-button';\nimport { MuteButton } from '@/ui/mute-button';\nimport { PiPButton } from '@/ui/pip-button';\nimport { PlayButton } from '@/ui/play-button';\nimport { PlaybackRateButton } from '@/ui/playback-rate-button';\nimport { Popover } from '@/ui/popover';\nimport { Poster } from '@/ui/poster';\nimport { SeekButton } from '@/ui/seek-button';\nimport { Slider } from '@/ui/slider';\nimport { Time } from '@/ui/time';\nimport { TimeSlider } from '@/ui/time-slider';\nimport { Tooltip } from '@/ui/tooltip';\nimport { VolumeSlider } from '@/ui/volume-slider';\nimport { isRenderProp } from '@/utils/use-render';\nimport type { BaseVideoSkinProps } from '../types';\n\nconst SEEK_TIME = 10;\n\nexport type VideoSkinProps = BaseVideoSkinProps;\n\nconst Button = forwardRef<HTMLButtonElement, ComponentProps<'button'>>(function Button({ className, ...props }, ref) {\n return (\n <button\n ref={ref}\n type=\"button\"\n className={cn('media-button media-button--subtle media-button--icon', className)}\n {...props}\n />\n );\n});\n\nfunction VolumePopover(): ReactNode {\n const volumeUnsupported = usePlayer((s) => s.volumeAvailability === 'unsupported');\n\n const muteButton = (\n <MuteButton className=\"media-button--mute\" render={<Button />}>\n <VolumeOffIcon className=\"media-icon media-icon--volume-off\" />\n <VolumeLowIcon className=\"media-icon media-icon--volume-low\" />\n <VolumeHighIcon className=\"media-icon media-icon--volume-high\" />\n </MuteButton>\n );\n\n if (volumeUnsupported) return muteButton;\n\n return (\n <Popover.Root openOnHover delay={200} closeDelay={100} side=\"top\">\n <Popover.Trigger render={muteButton} />\n <Popover.Popup className=\"media-surface media-popover media-popover--volume\">\n <VolumeSlider.Root className=\"media-slider\" orientation=\"vertical\" thumbAlignment=\"edge\">\n <VolumeSlider.Track className=\"media-slider__track\">\n <VolumeSlider.Fill className=\"media-slider__fill\" />\n </VolumeSlider.Track>\n <VolumeSlider.Thumb className=\"media-slider__thumb media-slider__thumb--persistent\" />\n </VolumeSlider.Root>\n </Popover.Popup>\n </Popover.Root>\n );\n}\n\nexport function VideoSkin(props: VideoSkinProps): ReactNode {\n const { children, className, poster, ...rest } = props;\n\n return (\n <Container className={cn('media-default-skin media-default-skin--video', className)} {...rest}>\n {children}\n\n {poster && (\n <Poster src={isString(poster) ? poster : undefined} render={isRenderProp(poster) ? poster : undefined} />\n )}\n\n <BufferingIndicator\n render={(props) => (\n <div {...props} className=\"media-buffering-indicator\">\n <div className=\"media-surface\">\n <SpinnerIcon className=\"media-icon\" />\n </div>\n </div>\n )}\n />\n\n <ErrorDialog.Root>\n <ErrorDialog.Popup className=\"media-error\">\n <div className=\"media-error__dialog media-surface\">\n <div className=\"media-error__content\">\n <ErrorDialog.Title className=\"media-error__title\">Something went wrong.</ErrorDialog.Title>\n <ErrorDialog.Description className=\"media-error__description\" />\n </div>\n <div className=\"media-error__actions\">\n <ErrorDialog.Close className=\"media-button media-button--primary\">OK</ErrorDialog.Close>\n </div>\n </div>\n </ErrorDialog.Popup>\n </ErrorDialog.Root>\n\n <Controls.Root className=\"media-surface media-controls\">\n <Tooltip.Provider>\n <div className=\"media-button-group\">\n <Tooltip.Root side=\"top\">\n <Tooltip.Trigger\n render={\n <PlayButton className=\"media-button--play\" render={<Button />}>\n <RestartIcon className=\"media-icon media-icon--restart\" />\n <PlayIcon className=\"media-icon media-icon--play\" />\n <PauseIcon className=\"media-icon media-icon--pause\" />\n </PlayButton>\n }\n />\n <Tooltip.Popup className=\"media-surface media-tooltip\" />\n </Tooltip.Root>\n\n <Tooltip.Root side=\"top\">\n <Tooltip.Trigger\n render={\n <SeekButton seconds={-SEEK_TIME} className=\"media-button--seek\" render={<Button />}>\n <span className=\"media-icon__container\">\n <SeekIcon className=\"media-icon media-icon--seek media-icon--flipped\" />\n <span className=\"media-icon__label\">{SEEK_TIME}</span>\n </span>\n </SeekButton>\n }\n />\n <Tooltip.Popup className=\"media-surface media-tooltip\">Seek backward {SEEK_TIME} seconds</Tooltip.Popup>\n </Tooltip.Root>\n\n <Tooltip.Root side=\"top\">\n <Tooltip.Trigger\n render={\n <SeekButton seconds={SEEK_TIME} className=\"media-button--seek\" render={<Button />}>\n <span className=\"media-icon__container\">\n <SeekIcon className=\"media-icon media-icon--seek\" />\n <span className=\"media-icon__label\">{SEEK_TIME}</span>\n </span>\n </SeekButton>\n }\n />\n <Tooltip.Popup className=\"media-surface media-tooltip\">Seek forward {SEEK_TIME} seconds</Tooltip.Popup>\n </Tooltip.Root>\n </div>\n\n <div className=\"media-time-controls\">\n <Time.Value type=\"current\" className=\"media-time\" />\n <TimeSlider.Root className=\"media-slider\">\n <TimeSlider.Track className=\"media-slider__track\">\n <TimeSlider.Fill className=\"media-slider__fill\" />\n <TimeSlider.Buffer className=\"media-slider__buffer\" />\n </TimeSlider.Track>\n <TimeSlider.Thumb className=\"media-slider__thumb\" />\n\n <div className=\"media-surface media-preview media-slider__preview\">\n <Slider.Thumbnail className=\"media-preview__thumbnail\" />\n <TimeSlider.Value type=\"pointer\" className=\"media-time media-preview__time\" />\n <SpinnerIcon className=\"media-preview__spinner media-icon\" />\n </div>\n </TimeSlider.Root>\n <Time.Value type=\"duration\" className=\"media-time\" />\n </div>\n\n <div className=\"media-button-group\">\n <Tooltip.Root side=\"top\">\n <Tooltip.Trigger\n render={<PlaybackRateButton className=\"media-button--playback-rate\" render={<Button />} />}\n />\n <Tooltip.Popup className=\"media-surface media-tooltip\">Toggle playback rate</Tooltip.Popup>\n </Tooltip.Root>\n\n <VolumePopover />\n\n <Tooltip.Root side=\"top\">\n <Tooltip.Trigger\n render={\n <CaptionsButton className=\"media-button--captions\" render={<Button />}>\n <CaptionsOffIcon className=\"media-icon media-icon--captions-off\" />\n <CaptionsOnIcon className=\"media-icon media-icon--captions-on\" />\n </CaptionsButton>\n }\n />\n <Tooltip.Popup className=\"media-surface media-tooltip\" />\n </Tooltip.Root>\n\n <Tooltip.Root side=\"top\">\n <Tooltip.Trigger\n render={\n <PiPButton className=\"media-button--pip\" render={<Button />}>\n <PipEnterIcon className=\"media-icon media-icon--pip-enter\" />\n <PipExitIcon className=\"media-icon media-icon--pip-exit\" />\n </PiPButton>\n }\n />\n <Tooltip.Popup className=\"media-surface media-tooltip\" />\n </Tooltip.Root>\n\n <Tooltip.Root side=\"top\">\n <Tooltip.Trigger\n render={\n <FullscreenButton className=\"media-button--fullscreen\" render={<Button />}>\n <FullscreenEnterIcon className=\"media-icon media-icon--fullscreen-enter\" />\n <FullscreenExitIcon className=\"media-icon media-icon--fullscreen-exit\" />\n </FullscreenButton>\n }\n />\n <Tooltip.Popup className=\"media-surface media-tooltip\" />\n </Tooltip.Root>\n </div>\n </Tooltip.Provider>\n </Controls.Root>\n\n <div className=\"media-overlay\" />\n </Container>\n );\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skin.tailwind.d.ts","names":[],"sources":["../../../../src/presets/video/skin.tailwind.tsx"],"mappings":";;;;
|
|
1
|
+
{"version":3,"file":"skin.tailwind.d.ts","names":[],"sources":["../../../../src/presets/video/skin.tailwind.tsx"],"mappings":";;;;iBA8IgB,iBAAA,CAAkB,KAAA,EAAO,cAAA,GAAiB,SAAA"}
|
|
@@ -102,20 +102,6 @@ const SliderThumb = forwardRef(function SliderThumb({ persistent, className, ...
|
|
|
102
102
|
...props
|
|
103
103
|
});
|
|
104
104
|
});
|
|
105
|
-
function PlayLabel() {
|
|
106
|
-
const paused = usePlayer((s) => Boolean(s.paused));
|
|
107
|
-
if (usePlayer((s) => Boolean(s.ended))) return "Replay";
|
|
108
|
-
return paused ? "Play" : "Pause";
|
|
109
|
-
}
|
|
110
|
-
function CaptionsLabel() {
|
|
111
|
-
return usePlayer((s) => Boolean(s.subtitlesShowing)) ? "Disable captions" : "Enable captions";
|
|
112
|
-
}
|
|
113
|
-
function PiPLabel() {
|
|
114
|
-
return usePlayer((s) => Boolean(s.pip)) ? "Exit picture-in-picture" : "Enter picture-in-picture";
|
|
115
|
-
}
|
|
116
|
-
function FullscreenLabel() {
|
|
117
|
-
return usePlayer((s) => Boolean(s.fullscreen)) ? "Exit fullscreen" : "Enter fullscreen";
|
|
118
|
-
}
|
|
119
105
|
function VolumePopover() {
|
|
120
106
|
const volumeUnsupported = usePlayer((s) => s.volumeAvailability === "unsupported");
|
|
121
107
|
const muteButton = /* @__PURE__ */ jsxs(MuteButton, {
|
|
@@ -206,10 +192,7 @@ function VideoSkinTailwind(props) {
|
|
|
206
192
|
/* @__PURE__ */ jsx(PlayIcon, { className: cn(icon, iconState.play.play) }),
|
|
207
193
|
/* @__PURE__ */ jsx(PauseIcon, { className: cn(icon, iconState.play.pause) })
|
|
208
194
|
]
|
|
209
|
-
}) }), /* @__PURE__ */ jsx(TooltipPopup, {
|
|
210
|
-
className: cn(popup.tooltip),
|
|
211
|
-
children: /* @__PURE__ */ jsx(PlayLabel, {})
|
|
212
|
-
})]
|
|
195
|
+
}) }), /* @__PURE__ */ jsx(TooltipPopup, { className: cn(popup.tooltip) })]
|
|
213
196
|
}),
|
|
214
197
|
/* @__PURE__ */ jsxs(TooltipRoot, {
|
|
215
198
|
side: "top",
|
|
@@ -309,10 +292,7 @@ function VideoSkinTailwind(props) {
|
|
|
309
292
|
className: iconState.captions.button,
|
|
310
293
|
render: /* @__PURE__ */ jsx(Button, {}),
|
|
311
294
|
children: [/* @__PURE__ */ jsx(CaptionsOffIcon, { className: cn(icon, iconState.captions.off) }), /* @__PURE__ */ jsx(CaptionsOnIcon, { className: cn(icon, iconState.captions.on) })]
|
|
312
|
-
}) }), /* @__PURE__ */ jsx(TooltipPopup, {
|
|
313
|
-
className: cn(popup.tooltip),
|
|
314
|
-
children: /* @__PURE__ */ jsx(CaptionsLabel, {})
|
|
315
|
-
})]
|
|
295
|
+
}) }), /* @__PURE__ */ jsx(TooltipPopup, { className: cn(popup.tooltip) })]
|
|
316
296
|
}),
|
|
317
297
|
/* @__PURE__ */ jsxs(TooltipRoot, {
|
|
318
298
|
side: "top",
|
|
@@ -320,10 +300,7 @@ function VideoSkinTailwind(props) {
|
|
|
320
300
|
className: iconState.pip.button,
|
|
321
301
|
render: /* @__PURE__ */ jsx(Button, {}),
|
|
322
302
|
children: [/* @__PURE__ */ jsx(PipEnterIcon, { className: cn(icon, iconState.pip.off) }), /* @__PURE__ */ jsx(PipExitIcon, { className: cn(icon, iconState.pip.on) })]
|
|
323
|
-
}) }), /* @__PURE__ */ jsx(TooltipPopup, {
|
|
324
|
-
className: cn(popup.tooltip),
|
|
325
|
-
children: /* @__PURE__ */ jsx(PiPLabel, {})
|
|
326
|
-
})]
|
|
303
|
+
}) }), /* @__PURE__ */ jsx(TooltipPopup, { className: cn(popup.tooltip) })]
|
|
327
304
|
}),
|
|
328
305
|
/* @__PURE__ */ jsxs(TooltipRoot, {
|
|
329
306
|
side: "top",
|
|
@@ -331,10 +308,7 @@ function VideoSkinTailwind(props) {
|
|
|
331
308
|
className: iconState.fullscreen.button,
|
|
332
309
|
render: /* @__PURE__ */ jsx(Button, {}),
|
|
333
310
|
children: [/* @__PURE__ */ jsx(FullscreenEnterIcon, { className: cn(icon, iconState.fullscreen.enter) }), /* @__PURE__ */ jsx(FullscreenExitIcon, { className: cn(icon, iconState.fullscreen.exit) })]
|
|
334
|
-
}) }), /* @__PURE__ */ jsx(TooltipPopup, {
|
|
335
|
-
className: cn(popup.tooltip),
|
|
336
|
-
children: /* @__PURE__ */ jsx(FullscreenLabel, {})
|
|
337
|
-
})]
|
|
311
|
+
}) }), /* @__PURE__ */ jsx(TooltipPopup, { className: cn(popup.tooltip) })]
|
|
338
312
|
})
|
|
339
313
|
]
|
|
340
314
|
})
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skin.tailwind.js","names":["Popover.Root","Popover.Trigger","Popover.Popup","VolumeSlider.Root","VolumeSlider.Track","VolumeSlider.Fill","VolumeSlider.Thumb","ErrorDialog.Root","ErrorDialog.Popup","ErrorDialog.Title","ErrorDialog.Description","ErrorDialog.Close","Controls.Root","Tooltip.Provider","Tooltip.Root","Tooltip.Trigger","Tooltip.Popup","Time.Value","TimeSlider.Root","TimeSlider.Track","TimeSlider.Fill","TimeSlider.Buffer","TimeSlider.Thumb","Slider.Thumbnail","TimeSlider.Value"],"sources":["../../../../src/presets/video/skin.tailwind.tsx"],"sourcesContent":["import {\n CaptionsOffIcon,\n CaptionsOnIcon,\n FullscreenEnterIcon,\n FullscreenExitIcon,\n PauseIcon,\n PipEnterIcon,\n PipExitIcon,\n PlayIcon,\n RestartIcon,\n SeekIcon,\n SpinnerIcon,\n VolumeHighIcon,\n VolumeLowIcon,\n VolumeOffIcon,\n} from '@videojs/icons/react';\nimport {\n bufferingIndicator,\n button,\n buttonGroupEnd,\n buttonGroupStart,\n controls,\n error,\n icon,\n iconContainer,\n iconFlipped,\n iconState,\n overlay,\n playbackRate,\n popup,\n poster,\n preview,\n root,\n seek,\n slider,\n time,\n} from '@videojs/skins/default/tailwind/video.tailwind';\nimport { isString } from '@videojs/utils/predicate';\nimport { cn } from '@videojs/utils/style';\nimport { type ComponentProps, forwardRef, type ReactNode } from 'react';\nimport { Container, usePlayer } from '@/player/context';\nimport { BufferingIndicator } from '@/ui/buffering-indicator';\nimport { CaptionsButton } from '@/ui/captions-button';\nimport { Controls } from '@/ui/controls';\nimport { ErrorDialog } from '@/ui/error-dialog';\nimport { FullscreenButton } from '@/ui/fullscreen-button';\nimport { MuteButton } from '@/ui/mute-button';\nimport { PiPButton } from '@/ui/pip-button';\nimport { PlayButton } from '@/ui/play-button';\nimport { PlaybackRateButton } from '@/ui/playback-rate-button';\nimport { Popover } from '@/ui/popover';\nimport { Poster } from '@/ui/poster';\nimport { SeekButton } from '@/ui/seek-button';\nimport { Slider } from '@/ui/slider';\nimport { Time } from '@/ui/time';\nimport { TimeSlider } from '@/ui/time-slider';\nimport { Tooltip } from '@/ui/tooltip';\nimport { VolumeSlider } from '@/ui/volume-slider';\nimport { isRenderProp } from '@/utils/use-render';\nimport type { VideoSkinProps } from './skin';\n\nconst SEEK_TIME = 10;\n\n/* --------------------------------------- Components ---------------------------------------- */\n\nconst Button = forwardRef<HTMLButtonElement, ComponentProps<'button'>>(function Button({ className, ...props }, ref) {\n return (\n <button ref={ref} type=\"button\" className={cn(button.base, button.subtle, button.icon, className)} {...props} />\n );\n});\n\nconst SliderRoot = forwardRef<HTMLDivElement, ComponentProps<'div'>>(function SliderRoot({ className, ...props }, ref) {\n return <div ref={ref} className={cn(slider.root, className)} {...props} />;\n});\n\nconst SliderTrack = forwardRef<HTMLDivElement, ComponentProps<'div'>>(function SliderTrack(\n { className, ...props },\n ref\n) {\n return <div ref={ref} className={cn(slider.track, className)} {...props} />;\n});\n\nconst SliderFill = forwardRef<HTMLDivElement, ComponentProps<'div'> & { type?: 'fill' | 'buffer' }>(function SliderFill(\n { type = 'fill', className, ...props },\n ref\n) {\n return (\n <div\n ref={ref}\n className={cn(slider.fill.base, type === 'fill' ? slider.fill.fill : slider.fill.buffer, className)}\n {...props}\n />\n );\n});\n\nconst SliderBuffer = forwardRef<HTMLDivElement, ComponentProps<'div'>>(function SliderBuffer(props, ref) {\n return <SliderFill type=\"buffer\" ref={ref} {...props} />;\n});\n\nconst SliderThumb = forwardRef<HTMLDivElement, ComponentProps<'div'> & { persistent?: boolean }>(function SliderThumb(\n { persistent, className, ...props },\n ref\n) {\n return (\n <div\n ref={ref}\n className={cn(slider.thumb.base, persistent ? slider.thumb.persistent : slider.thumb.interactive, className)}\n {...props}\n />\n );\n});\n\nfunction PlayLabel(): string {\n const paused = usePlayer((s) => Boolean(s.paused));\n const ended = usePlayer((s) => Boolean(s.ended));\n if (ended) return 'Replay';\n return paused ? 'Play' : 'Pause';\n}\n\nfunction CaptionsLabel(): string {\n const active = usePlayer((s) => Boolean(s.subtitlesShowing));\n return active ? 'Disable captions' : 'Enable captions';\n}\n\nfunction PiPLabel(): string {\n const pip = usePlayer((s) => Boolean(s.pip));\n return pip ? 'Exit picture-in-picture' : 'Enter picture-in-picture';\n}\n\nfunction FullscreenLabel(): string {\n const fullscreen = usePlayer((s) => Boolean(s.fullscreen));\n return fullscreen ? 'Exit fullscreen' : 'Enter fullscreen';\n}\n\nfunction VolumePopover(): ReactNode {\n const volumeUnsupported = usePlayer((s) => s.volumeAvailability === 'unsupported');\n\n const muteButton = (\n <MuteButton className={iconState.mute.button} render={<Button />}>\n <VolumeOffIcon className={cn(icon, iconState.mute.volumeOff)} />\n <VolumeLowIcon className={cn(icon, iconState.mute.volumeLow)} />\n <VolumeHighIcon className={cn(icon, iconState.mute.volumeHigh)} />\n </MuteButton>\n );\n\n if (volumeUnsupported) return muteButton;\n\n return (\n <Popover.Root openOnHover delay={200} closeDelay={100} side=\"top\">\n <Popover.Trigger render={muteButton} />\n <Popover.Popup className={cn(popup.popover, popup.volume)}>\n <VolumeSlider.Root orientation=\"vertical\" thumbAlignment=\"edge\" render={<SliderRoot />}>\n <VolumeSlider.Track render={<SliderTrack />}>\n <VolumeSlider.Fill render={<SliderFill />} />\n </VolumeSlider.Track>\n <VolumeSlider.Thumb render={(props) => <SliderThumb persistent {...props} />} />\n </VolumeSlider.Root>\n </Popover.Popup>\n </Popover.Root>\n );\n}\n\n/* ------------------------------------------ Skin ------------------------------------------- */\n\nexport function VideoSkinTailwind(props: VideoSkinProps): ReactNode {\n const { children, className, poster: posterProp, ...rest } = props;\n\n return (\n <Container className={cn(root(false), className)} {...rest}>\n {children}\n\n {posterProp && (\n <Poster\n src={isString(posterProp) ? posterProp : undefined}\n render={isRenderProp(posterProp) ? posterProp : undefined}\n className={poster(false)}\n />\n )}\n\n <BufferingIndicator\n render={(props) => (\n <div {...props} className={bufferingIndicator.root}>\n <div className={bufferingIndicator.container}>\n <SpinnerIcon className={icon} />\n </div>\n </div>\n )}\n />\n\n <ErrorDialog.Root>\n <ErrorDialog.Popup className={error.root}>\n <div className={error.dialog}>\n <div className={error.content}>\n <ErrorDialog.Title className={error.title}>Something went wrong.</ErrorDialog.Title>\n <ErrorDialog.Description className={error.description} />\n </div>\n <div className={error.actions}>\n <ErrorDialog.Close className={cn(button.base, button.primary)}>OK</ErrorDialog.Close>\n </div>\n </div>\n </ErrorDialog.Popup>\n </ErrorDialog.Root>\n\n <Controls.Root\n data-controls=\"\" // Used as a hook for Tailwind has-[] styles\n className={controls}\n >\n <Tooltip.Provider>\n <div className={buttonGroupStart}>\n <Tooltip.Root side=\"top\">\n <Tooltip.Trigger\n render={\n <PlayButton className={iconState.play.button} render={<Button />}>\n <RestartIcon className={cn(icon, iconState.play.restart)} />\n <PlayIcon className={cn(icon, iconState.play.play)} />\n <PauseIcon className={cn(icon, iconState.play.pause)} />\n </PlayButton>\n }\n />\n <Tooltip.Popup className={cn(popup.tooltip)}>\n <PlayLabel />\n </Tooltip.Popup>\n </Tooltip.Root>\n\n <Tooltip.Root side=\"top\">\n <Tooltip.Trigger\n render={\n <SeekButton seconds={-SEEK_TIME} render={<Button />}>\n <span className={iconContainer}>\n <SeekIcon className={cn(icon, iconFlipped)} />\n <span className={cn(seek.label, seek.labelBackward)}>{SEEK_TIME}</span>\n </span>\n </SeekButton>\n }\n />\n <Tooltip.Popup className={cn(popup.tooltip)}>Seek backward {SEEK_TIME} seconds</Tooltip.Popup>\n </Tooltip.Root>\n\n <Tooltip.Root side=\"top\">\n <Tooltip.Trigger\n render={\n <SeekButton seconds={SEEK_TIME} render={<Button />}>\n <span className={iconContainer}>\n <SeekIcon className={icon} />\n <span className={cn(seek.label, seek.labelForward)}>{SEEK_TIME}</span>\n </span>\n </SeekButton>\n }\n />\n <Tooltip.Popup className={cn(popup.tooltip)}>Seek forward {SEEK_TIME} seconds</Tooltip.Popup>\n </Tooltip.Root>\n </div>\n\n <div className={time.group}>\n <Time.Value type=\"current\" className={time.current} />\n <TimeSlider.Root render={<SliderRoot />}>\n <TimeSlider.Track render={<SliderTrack />}>\n <TimeSlider.Fill render={<SliderFill />} />\n <TimeSlider.Buffer render={<SliderBuffer />} />\n </TimeSlider.Track>\n <TimeSlider.Thumb render={<SliderThumb />} />\n <div className={preview.root}>\n <Slider.Thumbnail className={preview.thumbnail} />\n <TimeSlider.Value type=\"pointer\" className={preview.time} />\n <SpinnerIcon className={cn(icon, preview.spinner)} />\n </div>\n </TimeSlider.Root>\n <Time.Value type=\"duration\" className={time.duration} />\n </div>\n\n <div className={buttonGroupEnd}>\n <Tooltip.Root side=\"top\">\n <Tooltip.Trigger render={<PlaybackRateButton className={playbackRate.button} render={<Button />} />} />\n <Tooltip.Popup className={cn(popup.tooltip)}>Toggle playback rate</Tooltip.Popup>\n </Tooltip.Root>\n\n <VolumePopover />\n\n <Tooltip.Root side=\"top\">\n <Tooltip.Trigger\n render={\n <CaptionsButton className={iconState.captions.button} render={<Button />}>\n <CaptionsOffIcon className={cn(icon, iconState.captions.off)} />\n <CaptionsOnIcon className={cn(icon, iconState.captions.on)} />\n </CaptionsButton>\n }\n />\n <Tooltip.Popup className={cn(popup.tooltip)}>\n <CaptionsLabel />\n </Tooltip.Popup>\n </Tooltip.Root>\n\n <Tooltip.Root side=\"top\">\n <Tooltip.Trigger\n render={\n <PiPButton className={iconState.pip.button} render={<Button />}>\n <PipEnterIcon className={cn(icon, iconState.pip.off)} />\n <PipExitIcon className={cn(icon, iconState.pip.on)} />\n </PiPButton>\n }\n />\n <Tooltip.Popup className={cn(popup.tooltip)}>\n <PiPLabel />\n </Tooltip.Popup>\n </Tooltip.Root>\n\n <Tooltip.Root side=\"top\">\n <Tooltip.Trigger\n render={\n <FullscreenButton className={iconState.fullscreen.button} render={<Button />}>\n <FullscreenEnterIcon className={cn(icon, iconState.fullscreen.enter)} />\n <FullscreenExitIcon className={cn(icon, iconState.fullscreen.exit)} />\n </FullscreenButton>\n }\n />\n <Tooltip.Popup className={cn(popup.tooltip)}>\n <FullscreenLabel />\n </Tooltip.Popup>\n </Tooltip.Root>\n </div>\n </Tooltip.Provider>\n </Controls.Root>\n\n <div className={overlay} />\n </Container>\n );\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"skin.tailwind.js","names":["Popover.Root","Popover.Trigger","Popover.Popup","VolumeSlider.Root","VolumeSlider.Track","VolumeSlider.Fill","VolumeSlider.Thumb","ErrorDialog.Root","ErrorDialog.Popup","ErrorDialog.Title","ErrorDialog.Description","ErrorDialog.Close","Controls.Root","Tooltip.Provider","Tooltip.Root","Tooltip.Trigger","Tooltip.Popup","Time.Value","TimeSlider.Root","TimeSlider.Track","TimeSlider.Fill","TimeSlider.Buffer","TimeSlider.Thumb","Slider.Thumbnail","TimeSlider.Value"],"sources":["../../../../src/presets/video/skin.tailwind.tsx"],"sourcesContent":["import {\n CaptionsOffIcon,\n CaptionsOnIcon,\n FullscreenEnterIcon,\n FullscreenExitIcon,\n PauseIcon,\n PipEnterIcon,\n PipExitIcon,\n PlayIcon,\n RestartIcon,\n SeekIcon,\n SpinnerIcon,\n VolumeHighIcon,\n VolumeLowIcon,\n VolumeOffIcon,\n} from '@videojs/icons/react';\nimport {\n bufferingIndicator,\n button,\n buttonGroupEnd,\n buttonGroupStart,\n controls,\n error,\n icon,\n iconContainer,\n iconFlipped,\n iconState,\n overlay,\n playbackRate,\n popup,\n poster,\n preview,\n root,\n seek,\n slider,\n time,\n} from '@videojs/skins/default/tailwind/video.tailwind';\nimport { isString } from '@videojs/utils/predicate';\nimport { cn } from '@videojs/utils/style';\nimport { type ComponentProps, forwardRef, type ReactNode } from 'react';\nimport { Container, usePlayer } from '@/player/context';\nimport { BufferingIndicator } from '@/ui/buffering-indicator';\nimport { CaptionsButton } from '@/ui/captions-button';\nimport { Controls } from '@/ui/controls';\nimport { ErrorDialog } from '@/ui/error-dialog';\nimport { FullscreenButton } from '@/ui/fullscreen-button';\nimport { MuteButton } from '@/ui/mute-button';\nimport { PiPButton } from '@/ui/pip-button';\nimport { PlayButton } from '@/ui/play-button';\nimport { PlaybackRateButton } from '@/ui/playback-rate-button';\nimport { Popover } from '@/ui/popover';\nimport { Poster } from '@/ui/poster';\nimport { SeekButton } from '@/ui/seek-button';\nimport { Slider } from '@/ui/slider';\nimport { Time } from '@/ui/time';\nimport { TimeSlider } from '@/ui/time-slider';\nimport { Tooltip } from '@/ui/tooltip';\nimport { VolumeSlider } from '@/ui/volume-slider';\nimport { isRenderProp } from '@/utils/use-render';\nimport type { VideoSkinProps } from './skin';\n\nconst SEEK_TIME = 10;\n\n/* --------------------------------------- Components ---------------------------------------- */\n\nconst Button = forwardRef<HTMLButtonElement, ComponentProps<'button'>>(function Button({ className, ...props }, ref) {\n return (\n <button ref={ref} type=\"button\" className={cn(button.base, button.subtle, button.icon, className)} {...props} />\n );\n});\n\nconst SliderRoot = forwardRef<HTMLDivElement, ComponentProps<'div'>>(function SliderRoot({ className, ...props }, ref) {\n return <div ref={ref} className={cn(slider.root, className)} {...props} />;\n});\n\nconst SliderTrack = forwardRef<HTMLDivElement, ComponentProps<'div'>>(function SliderTrack(\n { className, ...props },\n ref\n) {\n return <div ref={ref} className={cn(slider.track, className)} {...props} />;\n});\n\nconst SliderFill = forwardRef<HTMLDivElement, ComponentProps<'div'> & { type?: 'fill' | 'buffer' }>(function SliderFill(\n { type = 'fill', className, ...props },\n ref\n) {\n return (\n <div\n ref={ref}\n className={cn(slider.fill.base, type === 'fill' ? slider.fill.fill : slider.fill.buffer, className)}\n {...props}\n />\n );\n});\n\nconst SliderBuffer = forwardRef<HTMLDivElement, ComponentProps<'div'>>(function SliderBuffer(props, ref) {\n return <SliderFill type=\"buffer\" ref={ref} {...props} />;\n});\n\nconst SliderThumb = forwardRef<HTMLDivElement, ComponentProps<'div'> & { persistent?: boolean }>(function SliderThumb(\n { persistent, className, ...props },\n ref\n) {\n return (\n <div\n ref={ref}\n className={cn(slider.thumb.base, persistent ? slider.thumb.persistent : slider.thumb.interactive, className)}\n {...props}\n />\n );\n});\n\nfunction VolumePopover(): ReactNode {\n const volumeUnsupported = usePlayer((s) => s.volumeAvailability === 'unsupported');\n\n const muteButton = (\n <MuteButton className={iconState.mute.button} render={<Button />}>\n <VolumeOffIcon className={cn(icon, iconState.mute.volumeOff)} />\n <VolumeLowIcon className={cn(icon, iconState.mute.volumeLow)} />\n <VolumeHighIcon className={cn(icon, iconState.mute.volumeHigh)} />\n </MuteButton>\n );\n\n if (volumeUnsupported) return muteButton;\n\n return (\n <Popover.Root openOnHover delay={200} closeDelay={100} side=\"top\">\n <Popover.Trigger render={muteButton} />\n <Popover.Popup className={cn(popup.popover, popup.volume)}>\n <VolumeSlider.Root orientation=\"vertical\" thumbAlignment=\"edge\" render={<SliderRoot />}>\n <VolumeSlider.Track render={<SliderTrack />}>\n <VolumeSlider.Fill render={<SliderFill />} />\n </VolumeSlider.Track>\n <VolumeSlider.Thumb render={(props) => <SliderThumb persistent {...props} />} />\n </VolumeSlider.Root>\n </Popover.Popup>\n </Popover.Root>\n );\n}\n\n/* ------------------------------------------ Skin ------------------------------------------- */\n\nexport function VideoSkinTailwind(props: VideoSkinProps): ReactNode {\n const { children, className, poster: posterProp, ...rest } = props;\n\n return (\n <Container className={cn(root(false), className)} {...rest}>\n {children}\n\n {posterProp && (\n <Poster\n src={isString(posterProp) ? posterProp : undefined}\n render={isRenderProp(posterProp) ? posterProp : undefined}\n className={poster(false)}\n />\n )}\n\n <BufferingIndicator\n render={(props) => (\n <div {...props} className={bufferingIndicator.root}>\n <div className={bufferingIndicator.container}>\n <SpinnerIcon className={icon} />\n </div>\n </div>\n )}\n />\n\n <ErrorDialog.Root>\n <ErrorDialog.Popup className={error.root}>\n <div className={error.dialog}>\n <div className={error.content}>\n <ErrorDialog.Title className={error.title}>Something went wrong.</ErrorDialog.Title>\n <ErrorDialog.Description className={error.description} />\n </div>\n <div className={error.actions}>\n <ErrorDialog.Close className={cn(button.base, button.primary)}>OK</ErrorDialog.Close>\n </div>\n </div>\n </ErrorDialog.Popup>\n </ErrorDialog.Root>\n\n <Controls.Root\n data-controls=\"\" // Used as a hook for Tailwind has-[] styles\n className={controls}\n >\n <Tooltip.Provider>\n <div className={buttonGroupStart}>\n <Tooltip.Root side=\"top\">\n <Tooltip.Trigger\n render={\n <PlayButton className={iconState.play.button} render={<Button />}>\n <RestartIcon className={cn(icon, iconState.play.restart)} />\n <PlayIcon className={cn(icon, iconState.play.play)} />\n <PauseIcon className={cn(icon, iconState.play.pause)} />\n </PlayButton>\n }\n />\n <Tooltip.Popup className={cn(popup.tooltip)}></Tooltip.Popup>\n </Tooltip.Root>\n\n <Tooltip.Root side=\"top\">\n <Tooltip.Trigger\n render={\n <SeekButton seconds={-SEEK_TIME} render={<Button />}>\n <span className={iconContainer}>\n <SeekIcon className={cn(icon, iconFlipped)} />\n <span className={cn(seek.label, seek.labelBackward)}>{SEEK_TIME}</span>\n </span>\n </SeekButton>\n }\n />\n <Tooltip.Popup className={cn(popup.tooltip)}>Seek backward {SEEK_TIME} seconds</Tooltip.Popup>\n </Tooltip.Root>\n\n <Tooltip.Root side=\"top\">\n <Tooltip.Trigger\n render={\n <SeekButton seconds={SEEK_TIME} render={<Button />}>\n <span className={iconContainer}>\n <SeekIcon className={icon} />\n <span className={cn(seek.label, seek.labelForward)}>{SEEK_TIME}</span>\n </span>\n </SeekButton>\n }\n />\n <Tooltip.Popup className={cn(popup.tooltip)}>Seek forward {SEEK_TIME} seconds</Tooltip.Popup>\n </Tooltip.Root>\n </div>\n\n <div className={time.group}>\n <Time.Value type=\"current\" className={time.current} />\n <TimeSlider.Root render={<SliderRoot />}>\n <TimeSlider.Track render={<SliderTrack />}>\n <TimeSlider.Fill render={<SliderFill />} />\n <TimeSlider.Buffer render={<SliderBuffer />} />\n </TimeSlider.Track>\n <TimeSlider.Thumb render={<SliderThumb />} />\n <div className={preview.root}>\n <Slider.Thumbnail className={preview.thumbnail} />\n <TimeSlider.Value type=\"pointer\" className={preview.time} />\n <SpinnerIcon className={cn(icon, preview.spinner)} />\n </div>\n </TimeSlider.Root>\n <Time.Value type=\"duration\" className={time.duration} />\n </div>\n\n <div className={buttonGroupEnd}>\n <Tooltip.Root side=\"top\">\n <Tooltip.Trigger render={<PlaybackRateButton className={playbackRate.button} render={<Button />} />} />\n <Tooltip.Popup className={cn(popup.tooltip)}>Toggle playback rate</Tooltip.Popup>\n </Tooltip.Root>\n\n <VolumePopover />\n\n <Tooltip.Root side=\"top\">\n <Tooltip.Trigger\n render={\n <CaptionsButton className={iconState.captions.button} render={<Button />}>\n <CaptionsOffIcon className={cn(icon, iconState.captions.off)} />\n <CaptionsOnIcon className={cn(icon, iconState.captions.on)} />\n </CaptionsButton>\n }\n />\n <Tooltip.Popup className={cn(popup.tooltip)}></Tooltip.Popup>\n </Tooltip.Root>\n\n <Tooltip.Root side=\"top\">\n <Tooltip.Trigger\n render={\n <PiPButton className={iconState.pip.button} render={<Button />}>\n <PipEnterIcon className={cn(icon, iconState.pip.off)} />\n <PipExitIcon className={cn(icon, iconState.pip.on)} />\n </PiPButton>\n }\n />\n <Tooltip.Popup className={cn(popup.tooltip)}></Tooltip.Popup>\n </Tooltip.Root>\n\n <Tooltip.Root side=\"top\">\n <Tooltip.Trigger\n render={\n <FullscreenButton className={iconState.fullscreen.button} render={<Button />}>\n <FullscreenEnterIcon className={cn(icon, iconState.fullscreen.enter)} />\n <FullscreenExitIcon className={cn(icon, iconState.fullscreen.exit)} />\n </FullscreenButton>\n }\n />\n <Tooltip.Popup className={cn(popup.tooltip)}></Tooltip.Popup>\n </Tooltip.Root>\n </div>\n </Tooltip.Provider>\n </Controls.Root>\n\n <div className={overlay} />\n </Container>\n );\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"audio.tailwind.js","names":[],"sources":["../../../../../../../../skins/dist/default/default/tailwind/audio.tailwind.js"],"sourcesContent":["import { iconState } from \"../../shared/tailwind/icon-state.js\";\nimport {
|
|
1
|
+
{"version":3,"file":"audio.tailwind.js","names":[],"sources":["../../../../../../../../skins/dist/default/default/tailwind/audio.tailwind.js"],"sourcesContent":["import { iconState } from \"../../shared/tailwind/icon-state.js\";\nimport { bufferingIndicator as bufferingIndicator$1 } from \"./components/buffering.js\";\nimport { controls as controls$1 } from \"./components/controls.js\";\nimport { error as error$1 } from \"./components/error.js\";\nimport { popup as popup$1 } from \"./components/popup.js\";\nimport { root as root$1 } from \"./components/root.js\";\nimport { slider as slider$1 } from \"./components/slider.js\";\nimport { surface } from \"./components/surface.js\";\nimport { button } from \"./components/button.js\";\nimport { buttonGroup } from \"./components/button-group.js\";\nimport { icon, iconContainer, iconFlipped, iconHidden } from \"./components/icon.js\";\nimport { playbackRate } from \"./components/playback-rate.js\";\nimport { seek } from \"./components/seek.js\";\nimport { time } from \"./components/time.js\";\nimport { cn } from \"@videojs/utils/style\";\n//#region src/default/tailwind/audio.tailwind.ts\nconst root = cn(root$1, \"[--media-text-color:var(--media-color-primary,oklch(0_0_0))]\", \"[--media-surface-background-color:oklch(1_0_0/0.5)]\", \"[--media-surface-inner-border-color:oklch(1_0_0/0.1)]\", \"[--media-surface-outer-border-color:oklch(0_0_0/0.05)]\", \"[--media-surface-shadow-color:oklch(0_0_0/0.15)]\", \"[--media-surface-backdrop-filter:blur(16px)_saturate(1.5)]\", \"[--media-error-dialog-transition-duration:250ms]\", \"[--media-error-dialog-transition-delay:100ms]\", \"[--media-popup-transition-duration:100ms]\", \"[--media-popup-transition-timing-function:ease-out]\", \"[--media-tooltip-side-offset:0.75rem]\", \"[--media-popover-side-offset:0.75rem]\", \"motion-reduce:[--media-error-dialog-transition-duration:50ms]\", \"motion-reduce:[--media-error-dialog-transition-delay:0ms]\", \"motion-reduce:[--media-popup-transition-duration:0ms]\", \"dark:[--media-surface-background-color:oklch(0_0_0/0.4)]\", \"dark:[--media-text-color:var(--media-color-primary,oklch(1_0_0))]\", \"[@media(prefers-reduced-transparency:reduce)]:[--media-surface-background-color:oklch(1_0_0)]\", \"contrast-more:[--media-surface-background-color:oklch(1_0_0)]\", \"[@media(prefers-reduced-transparency:reduce)]:[--media-surface-outer-border-color:oklch(0_0_0/0.05)]\", \"contrast-more:[--media-surface-outer-border-color:oklch(0_0_0/0.05)]\", \"dark:[@media(prefers-reduced-transparency:reduce)]:[--media-surface-background-color:oklch(0_0_0)]\", \"dark:contrast-more:[--media-surface-background-color:oklch(0_0_0)]\", \"dark:[@media(prefers-reduced-transparency:reduce)]:[--media-surface-inner-border-color:oklch(1_0_0/0.2)]\", \"dark:contrast-more:[--media-surface-inner-border-color:oklch(1_0_0/0.2)]\", \"dark:[@media(prefers-reduced-transparency:reduce)]:[--media-surface-outer-border-color:transparent]\", \"dark:contrast-more:[--media-surface-outer-border-color:transparent]\");\nconst controls = cn(controls$1, surface, \"text-(--media-text-color)\", \"peer-data-open/error:[&_*]:invisible\");\nconst slider = {\n\t...slider$1,\n\ttrack: cn(slider$1.track, \"bg-black/10\", \"dark:bg-white/20 dark:ring-1 dark:ring-black/5\")\n};\nconst popup = {\n\t...popup$1,\n\tpopover: cn(surface, popup$1.popover),\n\ttooltip: cn(surface, popup$1.tooltip)\n};\nconst bufferingIndicator = {\n\t...bufferingIndicator$1,\n\tcontainer: cn(bufferingIndicator$1.container, surface)\n};\nconst error = {\n\t...error$1,\n\tdialog: cn(\"absolute inset-0 z-20 flex items-center gap-3 rounded-full px-5 pr-0.5\", \"bg-(--media-surface-background-color) text-(--media-text-color)\", \"backdrop-blur-lg backdrop-saturate-150\", \"transition-[opacity,filter] ease-out\", \"duration-(--media-error-dialog-transition-duration)\", \"delay-(--media-error-dialog-transition-delay)\", \"group-data-starting-style/error:opacity-0 group-data-starting-style/error:blur-xs\", \"group-data-ending-style/error:opacity-0 group-data-ending-style/error:blur-xs\", \"group-data-ending-style/error:delay-0\"),\n\tcontent: \"flex flex-1 items-center gap-2\"\n};\n//#endregion\nexport { bufferingIndicator, button, buttonGroup, controls, error, icon, iconContainer, iconFlipped, iconHidden, iconState, playbackRate, popup, root, seek, slider, time };\n\n//# sourceMappingURL=audio.tailwind.js.map"],"mappings":";;;;;;;;;;;;;;;;AAgBA,MAAM,OAAO,GAAG,QAAQ,gEAAgE,uDAAuD,yDAAyD,0DAA0D,oDAAoD,8DAA8D,oDAAoD,iDAAiD,6CAA6C,uDAAuD,yCAAyC,yCAAyC,iEAAiE,6DAA6D,yDAAyD,4DAA4D,qEAAqE,iGAAiG,iEAAiE,wGAAwG,wEAAwE,sGAAsG,sEAAsE,4GAA4G,4EAA4E,uGAAuG,sEAAsE;AAC1yD,MAAM,WAAW,GAAG,YAAY,SAAS,6BAA6B,uCAAuC;AAC7G,MAAM,SAAS;CACd,GAAG;CACH,OAAO,GAAG,SAAS,OAAO,eAAe,iDAAiD;CAC1F;AACD,MAAM,QAAQ;CACb,GAAG;CACH,SAAS,GAAG,SAAS,QAAQ,QAAQ;CACrC,SAAS,GAAG,SAAS,QAAQ,QAAQ;CACrC;CAGA,EADA,GAAG,sBACmD,GAA3C,GAAG,qBAAqB,WAAW,QAAQ;AAEvD,MAAM,QAAQ;CACb,GAAG;CACH,QAAQ,GAAG,0EAA0E,mEAAmE,0CAA0C,wCAAwC,uDAAuD,iDAAiD,qFAAqF,iFAAiF,wCAAwC;CAChiB,SAAS;CACT"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"video.tailwind.js","names":[],"sources":["../../../../../../../../skins/dist/default/default/tailwind/video.tailwind.js"],"sourcesContent":["import { iconState } from \"../../shared/tailwind/icon-state.js\";\nimport {
|
|
1
|
+
{"version":3,"file":"video.tailwind.js","names":[],"sources":["../../../../../../../../skins/dist/default/default/tailwind/video.tailwind.js"],"sourcesContent":["import { iconState } from \"../../shared/tailwind/icon-state.js\";\nimport { bufferingIndicator as bufferingIndicator$1 } from \"./components/buffering.js\";\nimport { controls as controls$1 } from \"./components/controls.js\";\nimport { error as error$1 } from \"./components/error.js\";\nimport { popup as popup$1 } from \"./components/popup.js\";\nimport { root as root$1 } from \"./components/root.js\";\nimport { slider as slider$1 } from \"./components/slider.js\";\nimport { surface } from \"./components/surface.js\";\nimport { button } from \"./components/button.js\";\nimport { buttonGroup } from \"./components/button-group.js\";\nimport { icon, iconContainer, iconFlipped, iconHidden } from \"./components/icon.js\";\nimport { playbackRate } from \"./components/playback-rate.js\";\nimport { seek } from \"./components/seek.js\";\nimport { time as time$1 } from \"./components/time.js\";\nimport { preview as preview$1 } from \"./components/preview.js\";\nimport { overlay } from \"./components/overlay.js\";\nimport { poster } from \"./components/poster.js\";\nimport { cn } from \"@videojs/utils/style\";\n//#region src/default/tailwind/video.tailwind.ts\nconst root = (isShadowDOM) => cn(root$1, \"bg-black\", \"after:absolute after:pointer-events-none after:rounded-[inherit] after:z-10\", \"after:inset-0 after:ring-1 after:ring-inset after:ring-black/10 dark:after:ring-white/15\", {\n\t\"[&_::slotted(video)]:block [&_::slotted(video)]:w-full [&_::slotted(video)]:h-full [&_::slotted(video)]:rounded-(--media-video-border-radius) [&_::slotted(video)]:[object-fit:var(--media-object-fit,contain)] [&_::slotted(video)]:[object-position:var(--media-object-position,center)]\": isShadowDOM,\n\t\"[&_video]:block [&_video]:w-full [&_video]:h-full [&_video]:rounded-[inherit] [&_video]:[object-fit:var(--media-object-fit,contain)] [&_video]:[object-position:var(--media-object-position,center)]\": !isShadowDOM\n}, \"[--media-spring-transition:linear(0,0.034_1.5%,0.763_9.7%,1.066_13.9%,1.198_19.9%,1.184_21.8%,0.963_37.5%,0.997_50.9%,1)]\", \"[--media-video-border-radius:var(--media-border-radius,2rem)]\", \"[--media-controls-transition-duration:100ms]\", \"[--media-controls-transition-timing-function:ease-out]\", \"[--media-error-dialog-transition-duration:350ms]\", \"[--media-error-dialog-transition-delay:100ms]\", \"[--media-error-dialog-transition-timing-function:var(--media-spring-transition)]\", \"[--media-popup-transition-duration:100ms]\", \"[--media-popup-transition-timing-function:ease-out]\", \"[--media-surface-background-color:oklch(1_0_0/0.1)]\", \"[--media-surface-inner-border-color:oklch(1_0_0/0.05)]\", \"[--media-surface-outer-border-color:oklch(0_0_0/0.1)]\", \"[--media-surface-shadow-color:oklch(0_0_0/0.15)]\", \"[--media-surface-backdrop-filter:blur(16px)_saturate(1.5)]\", \"motion-reduce:[--media-error-dialog-transition-duration:50ms]\", \"motion-reduce:[--media-error-dialog-transition-delay:0ms]\", \"motion-reduce:[--media-error-dialog-transition-timing-function:ease-out]\", \"[--media-tooltip-side-offset:0.75rem]\", \"[--media-popover-side-offset:0.5rem]\", \"motion-reduce:[--media-popup-transition-duration:0ms]\", \"[@media(prefers-reduced-transparency:reduce)]:[--media-surface-background-color:oklch(0_0_0)]\", \"contrast-more:[--media-surface-background-color:oklch(0_0_0)]\", \"[@media(prefers-reduced-transparency:reduce)]:[--media-surface-inner-border-color:oklch(1_0_0/0.25)]\", \"contrast-more:[--media-surface-inner-border-color:oklch(1_0_0/0.25)]\", \"[@media(prefers-reduced-transparency:reduce)]:[--media-surface-outer-border-color:transparent]\", \"contrast-more:[--media-surface-outer-border-color:transparent]\", \"[@media(pointer:fine)]:has-[[data-controls]:not([data-visible])]:[--media-controls-transition-duration:300ms]\", \"[@media(pointer:coarse)]:has-[[data-controls]:not([data-visible])]:[--media-controls-transition-duration:150ms]\", \"motion-reduce:has-[[data-controls]:not([data-visible])]:[--media-controls-transition-duration:50ms]\", \"[--media-caption-track-y:-0.5rem]\", \"[--media-caption-track-delay:25ms]\", \"[--media-caption-track-duration:var(--media-controls-transition-duration)]\", \"has-[[data-controls][data-visible]]:[--media-caption-track-y:-5.5rem]\", \"@2xl/media-root:has-[[data-controls][data-visible]]:[&>*]:[--media-caption-track-y:-3.5rem]\", !isShadowDOM ? [\n\t\"[&_video::-webkit-media-text-track-container]:transition-[translate]\",\n\t\"[&_video::-webkit-media-text-track-container]:duration-(--media-caption-track-duration)\",\n\t\"[&_video::-webkit-media-text-track-container]:ease-out\",\n\t\"[&_video::-webkit-media-text-track-container]:delay-(--media-caption-track-delay)\",\n\t\"[&_video::-webkit-media-text-track-container]:translate-y-(--media-caption-track-y)\",\n\t\"[&_video::-webkit-media-text-track-container]:scale-98\",\n\t\"[&_video::-webkit-media-text-track-container]:z-1\",\n\t\"[&_video::-webkit-media-text-track-container]:font-[inherit]\"\n] : [], \"[&:fullscreen]:[--media-border-radius:0]\", {\n\t\"[&:fullscreen_video]:object-contain\": !isShadowDOM,\n\t\"[&:fullscreen_::slotted(video)]:object-contain\": isShadowDOM\n});\nconst controls = cn(controls$1, surface, \"absolute bottom-2 inset-x-2 flex-wrap\", \"[color:var(--media-color-primary,oklch(1_0_0))] z-10\", \"peer-data-open/error:hidden\", \"ease-(--media-controls-transition-timing-function) origin-bottom\", \"duration-(--media-controls-transition-duration)\", \"[@media(pointer:fine)]:will-change-[scale,filter,opacity]\", \"[@media(pointer:fine)]:transition-[scale,filter,opacity]\", \"[@media(pointer:coarse)]:will-change-[scale,opacity]\", \"[@media(pointer:coarse)]:transition-[scale,opacity]\", \"not-data-visible:pointer-events-none not-data-visible:opacity-0\", \"motion-safe:not-data-visible:scale-90\", \"[@media(pointer:fine)]:motion-safe:not-data-visible:blur-sm\", \"@2xl/media-root:bottom-3 @2xl/media-root:inset-x-3 @2xl/media-root:flex-nowrap @2xl/media-root:gap-x-0.5 @2xl/media-root:p-1\");\nconst buttonGroupStart = cn(buttonGroup, \"flex-1 @2xl/media-root:flex-none\");\nconst buttonGroupEnd = cn(buttonGroup, \"flex-1 justify-end @2xl/media-root:flex-none\");\nconst time = {\n\t...time$1,\n\tgroup: cn(time$1.group, \"grow-0 shrink-0 basis-full order-[-1] px-2.5\", \"@2xl/media-root:grow @2xl/media-root:shrink @2xl/media-root:basis-0 @2xl/media-root:order-[unset]\")\n};\nconst preview = {\n\t...preview$1,\n\troot: cn(\"[--media-preview-max-width:11rem] [--media-preview-padding:-1.125rem] [--media-preview-inset:calc((100cqi-100%)/2)]\", \"absolute [left:clamp(calc(var(--media-preview-max-width)/2+var(--media-preview-padding)-var(--media-preview-inset)),var(--media-slider-pointer),calc(100%-var(--media-preview-max-width)/2-var(--media-preview-padding)+var(--media-preview-inset)))] bottom-[calc(100%+1.2rem)] -translate-x-1/2\", \"opacity-0 scale-80 blur-sm origin-bottom\", \"transition-[scale,opacity,filter] duration-150\", \"group-data-pointing/slider:opacity-100 group-data-pointing/slider:scale-100 group-data-pointing/slider:blur-none\", \"[&:has([role=img][data-hidden])]:opacity-0 [&:has([role=img][data-hidden])]:scale-80 [&:has([role=img][data-hidden])]:blur-sm\", \"[&:has([role=img][data-loading])]:max-h-24\", surface, preview$1.root),\n\tthumbnail: cn(preview$1.thumbnail, \"max-w-(--media-preview-max-width)\")\n};\nconst slider = {\n\t...slider$1,\n\ttrack: cn(slider$1.track, \"bg-white/20 ring-1 ring-black/5\")\n};\nconst popup = {\n\t...popup$1,\n\tpopover: cn(surface, popup$1.popover),\n\ttooltip: cn(surface, popup$1.tooltip)\n};\nconst bufferingIndicator = {\n\t...bufferingIndicator$1,\n\tcontainer: cn(bufferingIndicator$1.container, surface)\n};\nconst error = {\n\t...error$1,\n\tdialog: cn(error$1.dialog, surface, \"text-shadow-2xs text-shadow-black/25\"),\n\tcontent: cn(error$1.content, \"text-shadow-inherit\"),\n\ttitle: cn(error$1.title, \"text-base\")\n};\n//#endregion\nexport { bufferingIndicator, button, buttonGroup, buttonGroupEnd, buttonGroupStart, controls, error, icon, iconContainer, iconFlipped, iconHidden, iconState, overlay, playbackRate, popup, poster, preview, root, seek, slider, time };\n\n//# sourceMappingURL=video.tailwind.js.map"],"mappings":";;;;;;;;;;;;;;;;;;;AAmBA,MAAM,QAAQ,gBAAgB,GAAG,QAAQ,YAAY,+EAA+E,4FAA4F;CAC/N,8RAA8R;CAC9R,wMAAwM,CAAC;CACzM,EAAE,6HAA6H,iEAAiE,gDAAgD,0DAA0D,oDAAoD,iDAAiD,oFAAoF,6CAA6C,uDAAuD,uDAAuD,0DAA0D,yDAAyD,oDAAoD,8DAA8D,iEAAiE,6DAA6D,4EAA4E,yCAAyC,wCAAwC,yDAAyD,iGAAiG,iEAAiE,wGAAwG,wEAAwE,kGAAkG,kEAAkE,iHAAiH,mHAAmH,uGAAuG,qCAAqC,sCAAsC,8EAA8E,yEAAyE,+FAA+F,CAAC,cAAc;CACx0E;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA,GAAG,EAAE,EAAE,4CAA4C;CACnD,uCAAuC,CAAC;CACxC,kDAAkD;CAClD,CAAC;AACF,MAAM,WAAW,GAAG,YAAY,SAAS,yCAAyC,wDAAwD,+BAA+B,oEAAoE,mDAAmD,6DAA6D,4DAA4D,wDAAwD,uDAAuD,mEAAmE,yCAAyC,+DAA+D,+HAA+H;AAClzB,MAAM,mBAAmB,GAAG,aAAa,mCAAmC;AAC5E,MAAM,iBAAiB,GAAG,aAAa,+CAA+C;AACtF,MAAM,OAAO;CACZ,GAAG;CACH,OAAO,GAAG,OAAO,OAAO,gDAAgD,oGAAoG;CAC5K;AACD,MAAM,UAAU;CACf,GAAG;CACH,MAAM,GAAG,uHAAuH,qSAAqS,4CAA4C,kDAAkD,oHAAoH,iIAAiI,8CAA8C,SAAS,UAAU,KAAK;CAC9zB,WAAW,GAAG,UAAU,WAAW,oCAAoC;CACvE;AACD,MAAM,SAAS;CACd,GAAG;CACH,OAAO,GAAG,SAAS,OAAO,kCAAkC;CAC5D;AACD,MAAM,QAAQ;CACb,GAAG;CACH,SAAS,GAAG,SAAS,QAAQ,QAAQ;CACrC,SAAS,GAAG,SAAS,QAAQ,QAAQ;CACrC;AACD,MAAM,qBAAqB;CAC1B,GAAG;CACH,WAAW,GAAG,qBAAqB,WAAW,QAAQ;CACtD;AACD,MAAM,QAAQ;CACb,GAAG;CACH,QAAQ,GAAG,QAAQ,QAAQ,SAAS,uCAAuC;CAC3E,SAAS,GAAG,QAAQ,SAAS,sBAAsB;CACnD,OAAO,GAAG,QAAQ,OAAO,YAAY;CACrC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"audio.tailwind.js","names":[],"sources":["../../../../../../../../skins/dist/default/minimal/tailwind/audio.tailwind.js"],"sourcesContent":["import { controls as controls$1 } from \"./components/controls.js\";\nimport { error as error$1 } from \"./components/error.js\";\nimport { popup as popup$1 } from \"./components/popup.js\";\nimport { root as root$1 } from \"./components/root.js\";\nimport { iconState } from \"../../shared/tailwind/icon-state.js\";\nimport {
|
|
1
|
+
{"version":3,"file":"audio.tailwind.js","names":[],"sources":["../../../../../../../../skins/dist/default/minimal/tailwind/audio.tailwind.js"],"sourcesContent":["import { controls as controls$1 } from \"./components/controls.js\";\nimport { error as error$1 } from \"./components/error.js\";\nimport { popup as popup$1 } from \"./components/popup.js\";\nimport { root as root$1 } from \"./components/root.js\";\nimport { iconState } from \"../../shared/tailwind/icon-state.js\";\nimport { bufferingIndicator } from \"./components/buffering.js\";\nimport { button } from \"./components/button.js\";\nimport { buttonGroup } from \"./components/button-group.js\";\nimport { icon, iconContainer, iconFlipped, iconHidden } from \"./components/icon.js\";\nimport { seek } from \"./components/seek.js\";\nimport { slider } from \"./components/slider.js\";\nimport { time } from \"./components/time.js\";\nimport { cn } from \"@videojs/utils/style\";\n//#region src/minimal/tailwind/audio.tailwind.ts\nconst root = cn(root$1, \"[--media-controls-background-color:oklch(1_0_0)]\", \"[--media-controls-backdrop-filter:blur(16px)_saturate(1.5)]\", \"[--media-controls-border-color:oklch(0_0_0/0.05)]\", \"[--media-controls-text-color:var(--media-color-primary,oklch(0_0_0))]\", \"[--media-error-dialog-transition-duration:250ms]\", \"[--media-error-dialog-transition-delay:100ms]\", \"[--media-popup-transition-duration:100ms]\", \"[--media-popup-transition-timing-function:ease-out]\", \"[--media-tooltip-background-color:oklch(1_0_0/0.1)]\", \"[--media-tooltip-border-color:oklch(0_0_0/0.05)]\", \"[--media-tooltip-backdrop-filter:blur(16px)_saturate(1.5)]\", \"[--media-tooltip-text-color:currentColor]\", \"[--media-tooltip-side-offset:0.75rem]\", \"[--media-popover-side-offset:0.75rem]\", \"motion-reduce:[--media-error-dialog-transition-duration:50ms]\", \"motion-reduce:[--media-error-dialog-transition-delay:0ms]\", \"motion-reduce:[--media-popup-transition-duration:0ms]\", \"dark:[--media-controls-background-color:oklch(0_0_0)]\", \"dark:[--media-controls-border-color:oklch(1_0_0/0.1)]\", \"dark:[--media-controls-text-color:var(--media-color-primary,oklch(1_0_0))]\", \"[@media(prefers-reduced-transparency:reduce)]:[--media-tooltip-background-color:oklch(1_0_0)]\", \"contrast-more:[--media-tooltip-background-color:oklch(1_0_0)]\", \"dark:[@media(prefers-reduced-transparency:reduce)]:[--media-tooltip-background-color:oklch(0_0_0)]\", \"dark:contrast-more:[--media-tooltip-background-color:oklch(0_0_0)]\");\nconst controls = cn(controls$1, \"p-1.5 gap-2\", \"rounded-(--media-border-radius,1rem)\", \"peer-data-open/error:[&_*]:invisible\", \"text-(--media-controls-text-color)\", \"ring-1 ring-(color:--media-controls-border-color)\");\nconst popup = {\n\t...popup$1,\n\tvolume: cn(popup$1.popover, \"p-0 pl-16\", \"bg-transparent bg-gradient-to-l from-(--media-controls-background-color) from-80% to-transparent\")\n};\nconst error = {\n\t...error$1,\n\tdialog: cn(\"absolute inset-0 z-20 flex items-center gap-4 rounded-full px-5 pr-2\", \"bg-(--media-controls-background-color)\", \"transition-[opacity,filter,scale] ease-out\", \"duration-(--media-error-dialog-transition-duration)\", \"delay-(--media-error-dialog-transition-delay)\", \"group-data-starting-style/error:opacity-0 group-data-starting-style/error:blur-xs group-data-starting-style/error:scale-95\", \"group-data-ending-style/error:opacity-0 group-data-ending-style/error:blur-xs group-data-ending-style/error:scale-95\", \"group-data-ending-style/error:delay-0\"),\n\tcontent: \"flex flex-1 items-center gap-2\"\n};\n//#endregion\nexport { bufferingIndicator, button, buttonGroup, controls, error, icon, iconContainer, iconFlipped, iconHidden, iconState, popup, root, seek, slider, time };\n\n//# sourceMappingURL=audio.tailwind.js.map"],"mappings":";;;;;;;;;;;;;;AAcA,MAAM,OAAO,GAAG,QAAQ,oDAAoD,+DAA+D,qDAAqD,yEAAyE,oDAAoD,iDAAiD,6CAA6C,uDAAuD,uDAAuD,oDAAoD,8DAA8D,6CAA6C,yCAAyC,yCAAyC,iEAAiE,6DAA6D,yDAAyD,yDAAyD,yDAAyD,8EAA8E,iGAAiG,iEAAiE,sGAAsG,qEAAqE;AAC97C,MAAM,WAAW,GAAG,YAAY,eAAe,wCAAwC,wCAAwC,sCAAsC,oDAAoD;AACzN,MAAM,QAAQ;CACb,GAAG;CACH,QAAQ,GAAG,QAAQ,SAAS,aAAa,mGAAmG;CAC5I;AACD,MAAM,QAAQ;CACb,GAAG;CACH,QAAQ,GAAG,wEAAwE,0CAA0C,8CAA8C,uDAAuD,iDAAiD,8HAA8H,wHAAwH,wCAAwC;CACjjB,SAAS;CACT"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"video.tailwind.js","names":[],"sources":["../../../../../../../../skins/dist/default/minimal/tailwind/video.tailwind.js"],"sourcesContent":["import { controls as controls$1 } from \"./components/controls.js\";\nimport { error as error$1 } from \"./components/error.js\";\nimport { popup as popup$1 } from \"./components/popup.js\";\nimport { root as root$1 } from \"./components/root.js\";\nimport { iconState } from \"../../shared/tailwind/icon-state.js\";\nimport {
|
|
1
|
+
{"version":3,"file":"video.tailwind.js","names":[],"sources":["../../../../../../../../skins/dist/default/minimal/tailwind/video.tailwind.js"],"sourcesContent":["import { controls as controls$1 } from \"./components/controls.js\";\nimport { error as error$1 } from \"./components/error.js\";\nimport { popup as popup$1 } from \"./components/popup.js\";\nimport { root as root$1 } from \"./components/root.js\";\nimport { iconState } from \"../../shared/tailwind/icon-state.js\";\nimport { bufferingIndicator } from \"./components/buffering.js\";\nimport { button } from \"./components/button.js\";\nimport { buttonGroup } from \"./components/button-group.js\";\nimport { icon, iconContainer, iconFlipped, iconHidden } from \"./components/icon.js\";\nimport { seek } from \"./components/seek.js\";\nimport { slider as slider$1 } from \"./components/slider.js\";\nimport { time as time$1 } from \"./components/time.js\";\nimport { preview as preview$1 } from \"./components/preview.js\";\nimport { overlay } from \"./components/overlay.js\";\nimport { playbackRate } from \"./components/playback-rate.js\";\nimport { poster } from \"./components/poster.js\";\nimport { cn } from \"@videojs/utils/style\";\n//#region src/minimal/tailwind/video.tailwind.ts\nconst root = (isShadowDOM) => cn(root$1, \"bg-black overflow-clip\", \"after:absolute after:pointer-events-none after:rounded-[inherit] after:z-10\", \"after:inset-0 after:ring-1 after:ring-inset after:ring-black/15 dark:after:ring-white/15\", {\n\t\"[&_::slotted(video)]:block [&_::slotted(video)]:w-full [&_::slotted(video)]:h-full [&_::slotted(video)]:rounded-(--media-video-border-radius) [&_::slotted(video)]:[object-fit:var(--media-object-fit,cover)] [&_::slotted(video)]:[object-position:var(--media-object-position,center)]\": isShadowDOM,\n\t\"[&_video]:block [&_video]:w-full [&_video]:h-full [&_video]:rounded-[inherit] [&_video]:[object-fit:var(--media-object-fit,contain)] [&_video]:[object-position:var(--media-object-position,center)]\": !isShadowDOM\n}, \"[--media-video-border-radius:var(--media-border-radius,0.75rem)]\", \"[--media-controls-background-color:transparent]\", \"[--media-controls-transition-duration:100ms]\", \"[--media-controls-transition-timing-function:ease-out]\", \"[--media-error-dialog-transition-duration:150ms]\", \"[--media-error-dialog-transition-delay:100ms]\", \"[--media-error-dialog-transition-timing-function:ease-out]\", \"[--media-popup-transition-duration:100ms]\", \"[--media-popup-transition-timing-function:ease-out]\", \"[--media-tooltip-background-color:oklch(1_0_0/0.1)]\", \"[--media-tooltip-border-color:transparent]\", \"[--media-tooltip-backdrop-filter:blur(16px)_saturate(1.5)]\", \"[--media-tooltip-text-color:currentColor]\", \"[--media-tooltip-side-offset:0.5rem]\", \"[--media-popover-side-offset:1.5rem]\", \"motion-reduce:[--media-error-dialog-transition-duration:50ms]\", \"motion-reduce:[--media-error-dialog-transition-delay:0ms]\", \"motion-reduce:[--media-popup-transition-duration:0ms]\", \"[@media(prefers-reduced-transparency:reduce)]:[--media-controls-background-color:oklch(0_0_0)]\", \"contrast-more:[--media-controls-background-color:oklch(0_0_0)]\", \"[@media(prefers-reduced-transparency:reduce)]:[--media-tooltip-background-color:oklch(0_0_0)]\", \"contrast-more:[--media-tooltip-background-color:oklch(0_0_0)]\", \"@2xl/media-root:[&>*]:[--media-popover-side-offset:0rem]\", \"[@media(pointer:fine)]:has-[[data-controls]:not([data-visible])]:[--media-controls-transition-duration:300ms]\", \"[@media(pointer:coarse)]:has-[[data-controls]:not([data-visible])]:[--media-controls-transition-duration:150ms]\", \"motion-reduce:has-[[data-controls]:not([data-visible])]:[--media-controls-transition-duration:50ms]\", \"[--media-caption-track-y:-0.5rem]\", \"[--media-caption-track-delay:25ms]\", \"[--media-caption-track-duration:var(--media-controls-transition-duration)]\", \"has-[[data-controls][data-visible]]:[--media-caption-track-y:-5rem]\", \"@2xl/media-root:has-[[data-controls][data-visible]]:[&>*]:[--media-caption-track-y:-3rem]\", !isShadowDOM ? [\n\t\"[&_video::-webkit-media-text-track-container]:transition-[translate]\",\n\t\"[&_video::-webkit-media-text-track-container]:duration-(--media-caption-track-duration)\",\n\t\"[&_video::-webkit-media-text-track-container]:ease-out\",\n\t\"[&_video::-webkit-media-text-track-container]:delay-(--media-caption-track-delay)\",\n\t\"[&_video::-webkit-media-text-track-container]:translate-y-(--media-caption-track-y)\",\n\t\"[&_video::-webkit-media-text-track-container]:scale-98\",\n\t\"[&_video::-webkit-media-text-track-container]:z-1\",\n\t\"[&_video::-webkit-media-text-track-container]:font-[inherit]\"\n] : [], \"[&:fullscreen]:[--media-border-radius:0]\", {\n\t\"[&:fullscreen_video]:object-contain\": !isShadowDOM,\n\t\"[&:fullscreen_::slotted(video)]:object-contain\": isShadowDOM\n});\nconst controls = cn(controls$1, \"absolute bottom-1 inset-x-1\", \"p-1 gap-x-2 flex-wrap rounded-xl\", \"text-white z-10\", \"peer-data-open/error:hidden\", \"ease-(--media-controls-transition-timing-function)\", \"duration-(--media-controls-transition-duration)\", \"[@media(pointer:fine)]:will-change-[translate,filter,opacity]\", \"[@media(pointer:fine)]:transition-[translate,filter,opacity]\", \"[@media(pointer:coarse)]:will-change-[translate,opacity]\", \"[@media(pointer:coarse)]:transition-[translate,opacity]\", \"not-data-visible:opacity-0 not-data-visible:pointer-events-none\", \"motion-safe:not-data-visible:translate-y-full\", \"[@media(pointer:fine)]:motion-safe:not-data-visible:blur-sm\", \"@2xl/media-root:flex-nowrap @2xl/media-root:bottom-2 @2xl/media-root:inset-x-2\");\nconst buttonGroupStart = cn(buttonGroup, \"flex-1 @2xl/media-root:flex-none\");\nconst buttonGroupEnd = cn(buttonGroup, \"flex-1 justify-end @2xl/media-root:flex-none\");\nconst time = {\n\t...time$1,\n\tcontrols: cn(time$1.controls, \"grow-0 shrink-0 basis-full order-[-1] px-2.5\", \"@2xl/media-root:grow @2xl/media-root:shrink @2xl/media-root:basis-0 @2xl/media-root:order-[unset]\")\n};\nconst error = {\n\t...error$1,\n\troot: cn(error$1.root, \"pointer-events-none outline-none\"),\n\tdialog: cn(error$1.dialog, \"pointer-events-auto\"),\n\ttitle: cn(error$1.title, \"text-lg\")\n};\nconst preview = {\n\t...preview$1,\n\troot: cn(\"[--media-preview-max-width:11rem] [--media-preview-padding:-0.5rem] [--media-preview-inset:calc(100cqi-100%)]\", \"absolute [left:clamp(calc(var(--media-preview-max-width)/2+var(--media-preview-padding)),var(--media-slider-pointer),calc(100%-var(--media-preview-max-width)/2-var(--media-preview-padding)+var(--media-preview-inset)))] bottom-full -translate-x-1/2\", \"@2xl/media-root:bottom-[calc(100%+0.25rem)] @2xl/media-root:[left:var(--media-slider-pointer)]\", \"opacity-0 scale-80 blur-sm origin-bottom\", \"transition-[scale,opacity,filter] duration-150\", \"group-data-pointing/slider:opacity-100 group-data-pointing/slider:scale-100 group-data-pointing/slider:blur-none\", \"[&:has([role=img][data-hidden])]:opacity-0 [&:has([role=img][data-hidden])]:scale-80 [&:has([role=img][data-hidden])]:blur-sm\", \"[&:has([role=img][data-loading])]:max-h-24\", preview$1.root),\n\tthumbnailWrapper: cn(preview$1.thumbnailWrapper, \"after:absolute after:inset-0 after:rounded-[inherit]\", \"after:ring-1 after:ring-black/5 after:shadow-sm after:shadow-black/20\"),\n\tthumbnail: cn(preview$1.thumbnail, \"max-w-(--media-preview-max-width)\")\n};\nconst slider = {\n\t...slider$1,\n\ttrack: cn(slider$1.track, \"ring-1 ring-black/5\")\n};\nconst popup = {\n\t...popup$1,\n\tvolume: cn(popup$1.popover, \"py-3 px-0 bg-transparent rounded-xl\", \"[@media(prefers-reduced-transparency:reduce)]:bg-(--media-controls-background-color)\", \"contrast-more:bg-(--media-controls-background-color)\")\n};\n//#endregion\nexport { bufferingIndicator, button, buttonGroup, buttonGroupEnd, buttonGroupStart, controls, error, icon, iconContainer, iconFlipped, iconHidden, iconState, overlay, playbackRate, popup, poster, preview, root, seek, slider, time };\n\n//# sourceMappingURL=video.tailwind.js.map"],"mappings":";;;;;;;;;;;;;;;;;AAkBA,MAAM,QAAQ,gBAAgB,GAAG,QAAQ,0BAA0B,+EAA+E,4FAA4F;CAC7O,4RAA4R;CAC5R,wMAAwM,CAAC;CACzM,EAAE,oEAAoE,mDAAmD,gDAAgD,0DAA0D,oDAAoD,iDAAiD,8DAA8D,6CAA6C,uDAAuD,uDAAuD,8CAA8C,8DAA8D,6CAA6C,wCAAwC,wCAAwC,iEAAiE,6DAA6D,yDAAyD,kGAAkG,kEAAkE,iGAAiG,iEAAiE,4DAA4D,iHAAiH,mHAAmH,uGAAuG,qCAAqC,sCAAsC,8EAA8E,uEAAuE,6FAA6F,CAAC,cAAc;CAC19D;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA,GAAG,EAAE,EAAE,4CAA4C;CACnD,uCAAuC,CAAC;CACxC,kDAAkD;CAClD,CAAC;AACF,MAAM,WAAW,GAAG,YAAY,+BAA+B,oCAAoC,mBAAmB,+BAA+B,sDAAsD,mDAAmD,iEAAiE,gEAAgE,4DAA4D,2DAA2D,mEAAmE,iDAAiD,+DAA+D,iFAAiF;AAC1vB,MAAM,mBAAmB,GAAG,aAAa,mCAAmC;AAC5E,MAAM,iBAAiB,GAAG,aAAa,+CAA+C;AACtF,MAAM,OAAO;CACZ,GAAG;CACH,UAAU,GAAG,OAAO,UAAU,gDAAgD,oGAAoG;CAClL;AACD,MAAM,QAAQ;CACb,GAAG;CACH,MAAM,GAAG,QAAQ,MAAM,mCAAmC;CAC1D,QAAQ,GAAG,QAAQ,QAAQ,sBAAsB;CACjD,OAAO,GAAG,QAAQ,OAAO,UAAU;CACnC;AACD,MAAM,UAAU;CACf,GAAG;CACH,MAAM,GAAG,iHAAiH,2PAA2P,kGAAkG,4CAA4C,kDAAkD,oHAAoH,iIAAiI,8CAA8C,UAAU,KAAK;CACv2B,kBAAkB,GAAG,UAAU,kBAAkB,wDAAwD,wEAAwE;CACjL,WAAW,GAAG,UAAU,WAAW,oCAAoC;CACvE;AACD,MAAM,SAAS;CACd,GAAG;CACH,OAAO,GAAG,SAAS,OAAO,sBAAsB;CAChD;AACD,MAAM,QAAQ;CACb,GAAG;CACH,QAAQ,GAAG,QAAQ,SAAS,uCAAuC,wFAAwF,uDAAuD;CAClN"}
|
|
@@ -2,8 +2,9 @@
|
|
|
2
2
|
import { usePlayer } from "../player/context.js";
|
|
3
3
|
import { renderElement } from "../utils/use-render.js";
|
|
4
4
|
import { useButton } from "./hooks/use-button.js";
|
|
5
|
+
import { useOptionalTooltipContext } from "./tooltip/context.js";
|
|
5
6
|
import { logMissingFeature } from "@videojs/core/dom";
|
|
6
|
-
import { forwardRef, useState } from "react";
|
|
7
|
+
import { forwardRef, useLayoutEffect, useState } from "react";
|
|
7
8
|
//#region src/ui/create-media-button.tsx
|
|
8
9
|
/** Creates a media button React component from a core class and config. */
|
|
9
10
|
function createMediaButton(config) {
|
|
@@ -15,6 +16,7 @@ function createMediaButton(config) {
|
|
|
15
16
|
const elementProps = {};
|
|
16
17
|
for (const key of Object.keys(rest)) if (corePropKeys.has(key)) coreProps[key] = rest[key];
|
|
17
18
|
else elementProps[key] = rest[key];
|
|
19
|
+
const tooltipCtx = useOptionalTooltipContext();
|
|
18
20
|
const feature = usePlayer(selector);
|
|
19
21
|
const [core] = useState(() => new CoreClass());
|
|
20
22
|
core.setProps(coreProps);
|
|
@@ -23,12 +25,19 @@ function createMediaButton(config) {
|
|
|
23
25
|
onActivate: () => action(core, feature),
|
|
24
26
|
isDisabled: () => !!coreProps.disabled || !feature
|
|
25
27
|
});
|
|
26
|
-
if (
|
|
28
|
+
if (feature) core.setMedia(feature);
|
|
29
|
+
const state = feature ? core.getState() : null;
|
|
30
|
+
const label = state ? core.getLabel(state) : void 0;
|
|
31
|
+
useLayoutEffect(() => {
|
|
32
|
+
if (!tooltipCtx) return;
|
|
33
|
+
tooltipCtx.setContent(label);
|
|
34
|
+
return () => tooltipCtx.setContent(void 0);
|
|
35
|
+
}, [tooltipCtx, label]);
|
|
36
|
+
if (!feature || !state) {
|
|
27
37
|
logMissingFeature(displayName, selector.displayName ?? displayName);
|
|
28
38
|
return null;
|
|
29
39
|
}
|
|
30
|
-
core.
|
|
31
|
-
const state = core.getState();
|
|
40
|
+
const attrs = core.getAttrs(state);
|
|
32
41
|
return renderElement("button", {
|
|
33
42
|
render,
|
|
34
43
|
className,
|
|
@@ -38,7 +47,7 @@ function createMediaButton(config) {
|
|
|
38
47
|
stateAttrMap,
|
|
39
48
|
ref: [forwardedRef, buttonRef],
|
|
40
49
|
props: [
|
|
41
|
-
|
|
50
|
+
attrs,
|
|
42
51
|
elementProps,
|
|
43
52
|
getButtonProps()
|
|
44
53
|
]
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-media-button.js","names":[],"sources":["../../../src/ui/create-media-button.tsx"],"sourcesContent":["'use client';\n\nimport type { InferComponentState, InferMediaState,
|
|
1
|
+
{"version":3,"file":"create-media-button.js","names":[],"sources":["../../../src/ui/create-media-button.tsx"],"sourcesContent":["'use client';\n\nimport type { InferComponentState, InferMediaState, MediaButtonComponent, StateAttrMap } from '@videojs/core';\nimport { logMissingFeature } from '@videojs/core/dom';\nimport type { Selector } from '@videojs/store';\nimport type { ForwardedRef, ForwardRefExoticComponent, RefAttributes } from 'react';\nimport { forwardRef, useLayoutEffect, useState } from 'react';\n\nimport { usePlayer } from '../player/context';\nimport type { renderElement as renderElementFn } from '../utils/use-render';\nimport { renderElement } from '../utils/use-render';\nimport { useButton } from './hooks/use-button';\nimport { useOptionalTooltipContext } from './tooltip/context';\n\ninterface MediaButtonConfig<Core extends Required<MediaButtonComponent>> {\n displayName: string;\n core: { new (): Core; defaultProps: Record<string, unknown> };\n stateAttrMap: StateAttrMap<InferComponentState<Core>>;\n selector: Selector<object, InferMediaState<Core> | undefined>;\n action: (core: Core, state: InferMediaState<Core>) => void;\n}\n\n/** Creates a media button React component from a core class and config. */\nexport function createMediaButton<Core extends Required<MediaButtonComponent>, Props extends object>(\n config: MediaButtonConfig<Core>\n): ForwardRefExoticComponent<Props & RefAttributes<HTMLButtonElement>> {\n const { displayName, core: CoreClass, stateAttrMap, selector, action } = config;\n\n // Props that exist in the core's defaultProps are routed to setProps; the rest go to the DOM element.\n const corePropKeys = new Set(Object.keys(CoreClass.defaultProps));\n\n const Component = forwardRef(function MediaButton(\n componentProps: Record<string, unknown>,\n forwardedRef: ForwardedRef<HTMLButtonElement>\n ) {\n const { render, className, style, ...rest } = componentProps;\n\n const coreProps: Record<string, unknown> = {};\n const elementProps: Record<string, unknown> = {};\n\n for (const key of Object.keys(rest)) {\n if (corePropKeys.has(key)) {\n coreProps[key] = rest[key];\n } else {\n elementProps[key] = rest[key];\n }\n }\n\n const tooltipCtx = useOptionalTooltipContext();\n const feature = usePlayer(selector);\n\n const [core] = useState(() => new CoreClass());\n core.setProps(coreProps);\n\n const { getButtonProps, buttonRef } = useButton({\n displayName,\n onActivate: () => action(core, feature!),\n isDisabled: () => !!coreProps.disabled || !feature,\n });\n\n // Derive state and label before the hooks boundary so the\n // useLayoutEffect below (called unconditionally) can reference them.\n type State = InferComponentState<Core>;\n if (feature) core.setMedia(feature);\n const state = feature ? (core.getState() as State) : null;\n const label = state ? core.getLabel(state) : undefined;\n\n // Forward label to tooltip popup content when inside a Tooltip.Root.\n useLayoutEffect(() => {\n if (!tooltipCtx) return;\n tooltipCtx.setContent(label);\n return () => tooltipCtx.setContent(undefined);\n }, [tooltipCtx, label]);\n\n if (!feature || !state) {\n if (__DEV__) logMissingFeature(displayName, selector.displayName ?? displayName);\n return null;\n }\n\n const attrs = core.getAttrs(state);\n\n return renderElement(\n 'button',\n { render, className, style } as renderElementFn.ComponentProps<InferComponentState<Core>>,\n {\n state,\n stateAttrMap,\n ref: [forwardedRef, buttonRef],\n props: [attrs, elementProps, getButtonProps()],\n }\n );\n });\n\n Component.displayName = displayName;\n\n return Component as unknown as ForwardRefExoticComponent<Props & RefAttributes<HTMLButtonElement>>;\n}\n"],"mappings":";;;;;;;;;AAuBA,SAAgB,kBACd,QACqE;CACrE,MAAM,EAAE,aAAa,MAAM,WAAW,cAAc,UAAU,WAAW;CAGzE,MAAM,eAAe,IAAI,IAAI,OAAO,KAAK,UAAU,aAAa,CAAC;CAEjE,MAAM,YAAY,WAAW,SAAS,YACpC,gBACA,cACA;EACA,MAAM,EAAE,QAAQ,WAAW,OAAO,GAAG,SAAS;EAE9C,MAAM,YAAqC,EAAE;EAC7C,MAAM,eAAwC,EAAE;AAEhD,OAAK,MAAM,OAAO,OAAO,KAAK,KAAK,CACjC,KAAI,aAAa,IAAI,IAAI,CACvB,WAAU,OAAO,KAAK;MAEtB,cAAa,OAAO,KAAK;EAI7B,MAAM,aAAa,2BAA2B;EAC9C,MAAM,UAAU,UAAU,SAAS;EAEnC,MAAM,CAAC,QAAQ,eAAe,IAAI,WAAW,CAAC;AAC9C,OAAK,SAAS,UAAU;EAExB,MAAM,EAAE,gBAAgB,cAAc,UAAU;GAC9C;GACA,kBAAkB,OAAO,MAAM,QAAS;GACxC,kBAAkB,CAAC,CAAC,UAAU,YAAY,CAAC;GAC5C,CAAC;AAKF,MAAI,QAAS,MAAK,SAAS,QAAQ;EACnC,MAAM,QAAQ,UAAW,KAAK,UAAU,GAAa;EACrD,MAAM,QAAQ,QAAQ,KAAK,SAAS,MAAM,GAAG,KAAA;AAG7C,wBAAsB;AACpB,OAAI,CAAC,WAAY;AACjB,cAAW,WAAW,MAAM;AAC5B,gBAAa,WAAW,WAAW,KAAA,EAAU;KAC5C,CAAC,YAAY,MAAM,CAAC;AAEvB,MAAI,CAAC,WAAW,CAAC,OAAO;AACT,qBAAkB,aAAa,SAAS,eAAe,YAAY;AAChF,UAAO;;EAGT,MAAM,QAAQ,KAAK,SAAS,MAAM;AAElC,SAAO,cACL,UACA;GAAE;GAAQ;GAAW;GAAO,EAC5B;GACE;GACA;GACA,KAAK,CAAC,cAAc,UAAU;GAC9B,OAAO;IAAC;IAAO;IAAc,gBAAgB;IAAC;GAC/C,CACF;GACD;AAEF,WAAU,cAAc;AAExB,QAAO"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"thumbnail.d.ts","names":[],"sources":["../../../../src/ui/thumbnail/thumbnail.tsx"],"mappings":";;;;;UAkBiB,cAAA,SAAuB,gBAAA,QAAwB,aAAA,CAAc,KAAA,GAAQ,aAAA,CAAc,KAAA;;EAElG,UAAA,GAAa,cAAA;AAAA;AAAA,cAGF,SAAA,EAAS,KAAA,CAAA,yBAAA,CAAA,IAAA,CAAA,cAAA,WAAA,KAAA,CAAA,aAAA,CAAA,cAAA;AAAA,
|
|
1
|
+
{"version":3,"file":"thumbnail.d.ts","names":[],"sources":["../../../../src/ui/thumbnail/thumbnail.tsx"],"mappings":";;;;;UAkBiB,cAAA,SAAuB,gBAAA,QAAwB,aAAA,CAAc,KAAA,GAAQ,aAAA,CAAc,KAAA;;EAElG,UAAA,GAAa,cAAA;AAAA;AAAA,cAGF,SAAA,EAAS,KAAA,CAAA,yBAAA,CAAA,IAAA,CAAA,cAAA,WAAA,KAAA,CAAA,aAAA,CAAA,cAAA;AAAA,kBAsGL,SAAA;EAAA,KACH,KAAA,GAAQ,cAAA;EAAA,KACR,KAAA,GAAQ,aAAA,CAAc,KAAA;AAAA"}
|
|
@@ -22,8 +22,7 @@ const Thumbnail = forwardRef(function Thumbnail(componentProps, forwardedRef) {
|
|
|
22
22
|
useDestroy(handle, () => handle.connect());
|
|
23
23
|
const thumbnails = useMemo(() => {
|
|
24
24
|
if (externalThumbnails && externalThumbnails.length > 0) return externalThumbnails;
|
|
25
|
-
|
|
26
|
-
return mapCuesToThumbnails(textTrack.thumbnailCues, textTrack.thumbnailTrackSrc ?? void 0);
|
|
25
|
+
return textTrack && textTrack.thumbnailCues.length > 0 ? mapCuesToThumbnails(textTrack.thumbnailCues, textTrack.thumbnailTrackSrc ?? void 0) : [];
|
|
27
26
|
}, [externalThumbnails, textTrack]);
|
|
28
27
|
const thumbnail = useMemo(() => core.findActiveThumbnail(thumbnails, time), [
|
|
29
28
|
core,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"thumbnail.js","names":[],"sources":["../../../../src/ui/thumbnail/thumbnail.tsx"],"sourcesContent":["'use client';\n\nimport {\n mapCuesToThumbnails,\n ThumbnailCore,\n ThumbnailDataAttrs,\n type ThumbnailFetchPriority,\n type ThumbnailImage,\n} from '@videojs/core';\nimport { createThumbnail, selectTextTrack } from '@videojs/core/dom';\nimport type { CSSProperties } from 'react';\nimport { forwardRef, useMemo, useRef, useState } from 'react';\n\nimport { useOptionalPlayer } from '../../player/context';\nimport type { UIComponentProps } from '../../utils/types';\nimport { useDestroy } from '../../utils/use-destroy';\nimport { renderElement } from '../../utils/use-render';\n\nexport interface ThumbnailProps extends UIComponentProps<'div', ThumbnailCore.State>, ThumbnailCore.Props {\n /** Pre-parsed thumbnail images — bypasses the automatic `<track>` detection. */\n thumbnails?: ThumbnailImage[] | undefined;\n}\n\nexport const Thumbnail = forwardRef<HTMLDivElement, ThumbnailProps>(function Thumbnail(componentProps, forwardedRef) {\n const {\n render,\n className,\n style,\n time = 0,\n thumbnails: externalThumbnails,\n crossOrigin,\n loading,\n fetchPriority,\n ...elementProps\n } = componentProps;\n\n const [core] = useState(() => new ThumbnailCore());\n const divRef = useRef<HTMLDivElement>(null);\n const imgRef = useRef<HTMLImageElement>(null);\n const textTrack = useOptionalPlayer(selectTextTrack);\n\n // Force re-render when the handle's state changes (img load/error, resize).\n const [, setRenderToken] = useState(0);\n\n const [handle] = useState(() =>\n createThumbnail({\n getContainer: () => divRef.current,\n getImg: () => imgRef.current,\n onStateChange: () => setRenderToken((n) => n + 1),\n })\n );\n\n useDestroy(handle, () => handle.connect());\n\n // Resolve thumbnails: external prop takes priority over auto <track> path.\n const thumbnails = useMemo(() => {\n if (externalThumbnails && externalThumbnails.length > 0) return externalThumbnails;\n
|
|
1
|
+
{"version":3,"file":"thumbnail.js","names":[],"sources":["../../../../src/ui/thumbnail/thumbnail.tsx"],"sourcesContent":["'use client';\n\nimport {\n mapCuesToThumbnails,\n ThumbnailCore,\n ThumbnailDataAttrs,\n type ThumbnailFetchPriority,\n type ThumbnailImage,\n} from '@videojs/core';\nimport { createThumbnail, selectTextTrack } from '@videojs/core/dom';\nimport type { CSSProperties } from 'react';\nimport { forwardRef, useMemo, useRef, useState } from 'react';\n\nimport { useOptionalPlayer } from '../../player/context';\nimport type { UIComponentProps } from '../../utils/types';\nimport { useDestroy } from '../../utils/use-destroy';\nimport { renderElement } from '../../utils/use-render';\n\nexport interface ThumbnailProps extends UIComponentProps<'div', ThumbnailCore.State>, ThumbnailCore.Props {\n /** Pre-parsed thumbnail images — bypasses the automatic `<track>` detection. */\n thumbnails?: ThumbnailImage[] | undefined;\n}\n\nexport const Thumbnail = forwardRef<HTMLDivElement, ThumbnailProps>(function Thumbnail(componentProps, forwardedRef) {\n const {\n render,\n className,\n style,\n time = 0,\n thumbnails: externalThumbnails,\n crossOrigin,\n loading,\n fetchPriority,\n ...elementProps\n } = componentProps;\n\n const [core] = useState(() => new ThumbnailCore());\n const divRef = useRef<HTMLDivElement>(null);\n const imgRef = useRef<HTMLImageElement>(null);\n const textTrack = useOptionalPlayer(selectTextTrack);\n\n // Force re-render when the handle's state changes (img load/error, resize).\n const [, setRenderToken] = useState(0);\n\n const [handle] = useState(() =>\n createThumbnail({\n getContainer: () => divRef.current,\n getImg: () => imgRef.current,\n onStateChange: () => setRenderToken((n) => n + 1),\n })\n );\n\n useDestroy(handle, () => handle.connect());\n\n // Resolve thumbnails: external prop takes priority over auto <track> path.\n const thumbnails = useMemo(() => {\n if (externalThumbnails && externalThumbnails.length > 0) return externalThumbnails;\n return textTrack && textTrack.thumbnailCues.length > 0\n ? mapCuesToThumbnails(textTrack.thumbnailCues, textTrack.thumbnailTrackSrc ?? undefined)\n : [];\n }, [externalThumbnails, textTrack]);\n\n const thumbnail = useMemo(() => core.findActiveThumbnail(thumbnails, time), [core, thumbnails, time]);\n\n // Track src changes via the handle.\n handle.updateSrc(thumbnail?.url);\n\n const state = core.getState(handle.loading, handle.error, thumbnail);\n\n // Compute styles declaratively from resize result.\n let containerStyle: CSSProperties = { overflow: 'hidden' };\n let imgStyle: CSSProperties | undefined;\n\n if (thumbnail && handle.naturalWidth && handle.naturalHeight) {\n const constraints = handle.readConstraints();\n const result = core.resize(thumbnail, handle.naturalWidth, handle.naturalHeight, constraints);\n\n if (result) {\n containerStyle = {\n overflow: 'hidden',\n width: result.containerWidth,\n height: result.containerHeight,\n };\n imgStyle = {\n width: result.imageWidth,\n height: result.imageHeight,\n maxWidth: 'none',\n transform:\n result.offsetX || result.offsetY ? `translate(-${result.offsetX}px, -${result.offsetY}px)` : undefined,\n };\n }\n }\n\n return renderElement(\n 'div',\n { render, className, style },\n {\n state,\n stateAttrMap: ThumbnailDataAttrs,\n ref: [forwardedRef, divRef],\n props: [\n core.getAttrs(state),\n { style: containerStyle },\n elementProps,\n {\n children: (\n <img\n ref={imgRef}\n alt=\"\"\n aria-hidden=\"true\"\n decoding=\"async\"\n src={thumbnail?.url}\n crossOrigin={crossOrigin === '' || crossOrigin === null ? undefined : crossOrigin}\n loading={loading}\n style={imgStyle}\n // React's types omit `| undefined` from fetchPriority — cast to satisfy exactOptionalPropertyTypes.\n fetchPriority={fetchPriority as ThumbnailFetchPriority}\n />\n ),\n },\n ],\n }\n );\n});\n\nexport namespace Thumbnail {\n export type Props = ThumbnailProps;\n export type State = ThumbnailCore.State;\n}\n"],"mappings":";;;;;;;;;AAuBA,MAAa,YAAY,WAA2C,SAAS,UAAU,gBAAgB,cAAc;CACnH,MAAM,EACJ,QACA,WACA,OACA,OAAO,GACP,YAAY,oBACZ,aACA,SACA,eACA,GAAG,iBACD;CAEJ,MAAM,CAAC,QAAQ,eAAe,IAAI,eAAe,CAAC;CAClD,MAAM,SAAS,OAAuB,KAAK;CAC3C,MAAM,SAAS,OAAyB,KAAK;CAC7C,MAAM,YAAY,kBAAkB,gBAAgB;CAGpD,MAAM,GAAG,kBAAkB,SAAS,EAAE;CAEtC,MAAM,CAAC,UAAU,eACf,gBAAgB;EACd,oBAAoB,OAAO;EAC3B,cAAc,OAAO;EACrB,qBAAqB,gBAAgB,MAAM,IAAI,EAAE;EAClD,CAAC,CACH;AAED,YAAW,cAAc,OAAO,SAAS,CAAC;CAG1C,MAAM,aAAa,cAAc;AAC/B,MAAI,sBAAsB,mBAAmB,SAAS,EAAG,QAAO;AAChE,SAAO,aAAa,UAAU,cAAc,SAAS,IACjD,oBAAoB,UAAU,eAAe,UAAU,qBAAqB,KAAA,EAAU,GACtF,EAAE;IACL,CAAC,oBAAoB,UAAU,CAAC;CAEnC,MAAM,YAAY,cAAc,KAAK,oBAAoB,YAAY,KAAK,EAAE;EAAC;EAAM;EAAY;EAAK,CAAC;AAGrG,QAAO,UAAU,WAAW,IAAI;CAEhC,MAAM,QAAQ,KAAK,SAAS,OAAO,SAAS,OAAO,OAAO,UAAU;CAGpE,IAAI,iBAAgC,EAAE,UAAU,UAAU;CAC1D,IAAI;AAEJ,KAAI,aAAa,OAAO,gBAAgB,OAAO,eAAe;EAC5D,MAAM,cAAc,OAAO,iBAAiB;EAC5C,MAAM,SAAS,KAAK,OAAO,WAAW,OAAO,cAAc,OAAO,eAAe,YAAY;AAE7F,MAAI,QAAQ;AACV,oBAAiB;IACf,UAAU;IACV,OAAO,OAAO;IACd,QAAQ,OAAO;IAChB;AACD,cAAW;IACT,OAAO,OAAO;IACd,QAAQ,OAAO;IACf,UAAU;IACV,WACE,OAAO,WAAW,OAAO,UAAU,cAAc,OAAO,QAAQ,OAAO,OAAO,QAAQ,OAAO,KAAA;IAChG;;;AAIL,QAAO,cACL,OACA;EAAE;EAAQ;EAAW;EAAO,EAC5B;EACE;EACA,cAAc;EACd,KAAK,CAAC,cAAc,OAAO;EAC3B,OAAO;GACL,KAAK,SAAS,MAAM;GACpB,EAAE,OAAO,gBAAgB;GACzB;GACA,EACE,UACE,oBAAC,OAAD;IACE,KAAK;IACL,KAAI;IACJ,eAAY;IACZ,UAAS;IACT,KAAK,WAAW;IAChB,aAAa,gBAAgB,MAAM,gBAAgB,OAAO,KAAA,IAAY;IAC7D;IACT,OAAO;IAEQ;IACf,CAAA,EAEL;GACF;EACF,CACF;EACD"}
|
|
@@ -8,8 +8,11 @@ interface TooltipContextValue {
|
|
|
8
8
|
stateAttrMap: StateAttrMap<TooltipCore.State>;
|
|
9
9
|
anchorName: string;
|
|
10
10
|
popupId: string;
|
|
11
|
+
content: string | undefined;
|
|
12
|
+
setContent: (content: string | undefined) => void;
|
|
11
13
|
}
|
|
12
14
|
declare function useTooltipContext(): TooltipContextValue;
|
|
15
|
+
declare function useOptionalTooltipContext(): TooltipContextValue | null;
|
|
13
16
|
//#endregion
|
|
14
|
-
export { TooltipContextValue, useTooltipContext };
|
|
17
|
+
export { TooltipContextValue, useOptionalTooltipContext, useTooltipContext };
|
|
15
18
|
//# sourceMappingURL=context.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.d.ts","names":[],"sources":["../../../../src/ui/tooltip/context.tsx"],"mappings":";;;UAMiB,mBAAA;EACf,IAAA,EAAM,WAAA;EACN,OAAA,EAAS,UAAA;EACT,KAAA,EAAO,WAAA,CAAY,KAAA;EACnB,YAAA,EAAc,YAAA,CAAa,WAAA,CAAY,KAAA;EACvC,UAAA;EACA,OAAA;AAAA;AAAA,
|
|
1
|
+
{"version":3,"file":"context.d.ts","names":[],"sources":["../../../../src/ui/tooltip/context.tsx"],"mappings":";;;UAMiB,mBAAA;EACf,IAAA,EAAM,WAAA;EACN,OAAA,EAAS,UAAA;EACT,KAAA,EAAO,WAAA,CAAY,KAAA;EACnB,YAAA,EAAc,YAAA,CAAa,WAAA,CAAY,KAAA;EACvC,UAAA;EACA,OAAA;EACA,OAAA;EACA,UAAA,GAAa,OAAA;AAAA;AAAA,iBAOC,iBAAA,CAAA,GAAqB,mBAAA;AAAA,iBAMrB,yBAAA,CAAA,GAA6B,mBAAA"}
|
|
@@ -8,7 +8,10 @@ function useTooltipContext() {
|
|
|
8
8
|
if (!ctx) throw new Error("Tooltip compound components must be used within a Tooltip.Root");
|
|
9
9
|
return ctx;
|
|
10
10
|
}
|
|
11
|
+
function useOptionalTooltipContext() {
|
|
12
|
+
return useContext(TooltipContext);
|
|
13
|
+
}
|
|
11
14
|
//#endregion
|
|
12
|
-
export { TooltipContextProvider, useTooltipContext };
|
|
15
|
+
export { TooltipContextProvider, useOptionalTooltipContext, useTooltipContext };
|
|
13
16
|
|
|
14
17
|
//# sourceMappingURL=context.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.js","names":[],"sources":["../../../../src/ui/tooltip/context.tsx"],"sourcesContent":["'use client';\n\nimport type { StateAttrMap, TooltipCore } from '@videojs/core';\nimport type { TooltipApi } from '@videojs/core/dom';\nimport { createContext, useContext } from 'react';\n\nexport interface TooltipContextValue {\n core: TooltipCore;\n tooltip: TooltipApi;\n state: TooltipCore.State;\n stateAttrMap: StateAttrMap<TooltipCore.State>;\n anchorName: string;\n popupId: string;\n}\n\nconst TooltipContext = createContext<TooltipContextValue | null>(null);\n\nexport const TooltipContextProvider = TooltipContext.Provider;\n\nexport function useTooltipContext(): TooltipContextValue {\n const ctx = useContext(TooltipContext);\n if (!ctx) throw new Error('Tooltip compound components must be used within a Tooltip.Root');\n return ctx;\n}\n"],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"context.js","names":[],"sources":["../../../../src/ui/tooltip/context.tsx"],"sourcesContent":["'use client';\n\nimport type { StateAttrMap, TooltipCore } from '@videojs/core';\nimport type { TooltipApi } from '@videojs/core/dom';\nimport { createContext, useContext } from 'react';\n\nexport interface TooltipContextValue {\n core: TooltipCore;\n tooltip: TooltipApi;\n state: TooltipCore.State;\n stateAttrMap: StateAttrMap<TooltipCore.State>;\n anchorName: string;\n popupId: string;\n content: string | undefined;\n setContent: (content: string | undefined) => void;\n}\n\nconst TooltipContext = createContext<TooltipContextValue | null>(null);\n\nexport const TooltipContextProvider = TooltipContext.Provider;\n\nexport function useTooltipContext(): TooltipContextValue {\n const ctx = useContext(TooltipContext);\n if (!ctx) throw new Error('Tooltip compound components must be used within a Tooltip.Root');\n return ctx;\n}\n\nexport function useOptionalTooltipContext(): TooltipContextValue | null {\n return useContext(TooltipContext);\n}\n"],"mappings":";;;AAiBA,MAAM,iBAAiB,cAA0C,KAAK;AAEtE,MAAa,yBAAyB,eAAe;AAErD,SAAgB,oBAAyC;CACvD,MAAM,MAAM,WAAW,eAAe;AACtC,KAAI,CAAC,IAAK,OAAM,IAAI,MAAM,iEAAiE;AAC3F,QAAO;;AAGT,SAAgB,4BAAwD;AACtE,QAAO,WAAW,eAAe"}
|