@videojs/react 10.0.0-beta.30 → 10.0.0-beta.31

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.
Files changed (130) hide show
  1. package/dist/default/i18n/context.js.map +1 -1
  2. package/dist/default/i18n/create-i18n.js +3 -1
  3. package/dist/default/i18n/create-i18n.js.map +1 -1
  4. package/dist/default/i18n/get-provider-root-props.js +4 -2
  5. package/dist/default/i18n/get-provider-root-props.js.map +1 -1
  6. package/dist/default/player/container.js +16 -7
  7. package/dist/default/player/container.js.map +1 -1
  8. package/dist/default/presets/audio/minimal-skin.css +39 -7
  9. package/dist/default/presets/audio/skin.css +31 -7
  10. package/dist/default/presets/live-audio/minimal-skin.css +39 -7
  11. package/dist/default/presets/live-audio/skin.css +31 -7
  12. package/dist/default/presets/live-video/minimal-skin.css +39 -7
  13. package/dist/default/presets/live-video/minimal-skin.js +4 -1
  14. package/dist/default/presets/live-video/minimal-skin.js.map +1 -1
  15. package/dist/default/presets/live-video/minimal-skin.tailwind.js +4 -1
  16. package/dist/default/presets/live-video/minimal-skin.tailwind.js.map +1 -1
  17. package/dist/default/presets/live-video/skin.css +31 -7
  18. package/dist/default/presets/live-video/skin.js +4 -1
  19. package/dist/default/presets/live-video/skin.js.map +1 -1
  20. package/dist/default/presets/live-video/skin.tailwind.js +4 -1
  21. package/dist/default/presets/live-video/skin.tailwind.js.map +1 -1
  22. package/dist/default/presets/video/minimal-skin.css +39 -7
  23. package/dist/default/presets/video/minimal-skin.js +27 -11
  24. package/dist/default/presets/video/minimal-skin.js.map +1 -1
  25. package/dist/default/presets/video/minimal-skin.tailwind.js +28 -12
  26. package/dist/default/presets/video/minimal-skin.tailwind.js.map +1 -1
  27. package/dist/default/presets/video/skin.css +31 -7
  28. package/dist/default/presets/video/skin.js +27 -11
  29. package/dist/default/presets/video/skin.js.map +1 -1
  30. package/dist/default/presets/video/skin.tailwind.js +28 -12
  31. package/dist/default/presets/video/skin.tailwind.js.map +1 -1
  32. package/dist/default/skins/dist/default/default/tailwind/components/button-group.js +1 -1
  33. package/dist/default/skins/dist/default/default/tailwind/components/button-group.js.map +1 -1
  34. package/dist/default/skins/dist/default/default/tailwind/components/controls.js +1 -1
  35. package/dist/default/skins/dist/default/default/tailwind/components/controls.js.map +1 -1
  36. package/dist/default/skins/dist/default/default/tailwind/components/menu.js +8 -7
  37. package/dist/default/skins/dist/default/default/tailwind/components/menu.js.map +1 -1
  38. package/dist/default/skins/dist/default/default/tailwind/components/time.js +1 -1
  39. package/dist/default/skins/dist/default/default/tailwind/components/time.js.map +1 -1
  40. package/dist/default/skins/dist/default/minimal/tailwind/components/button-group.js +1 -1
  41. package/dist/default/skins/dist/default/minimal/tailwind/components/button-group.js.map +1 -1
  42. package/dist/default/skins/dist/default/minimal/tailwind/components/controls.js +1 -1
  43. package/dist/default/skins/dist/default/minimal/tailwind/components/controls.js.map +1 -1
  44. package/dist/default/skins/dist/default/minimal/tailwind/components/menu.js +8 -7
  45. package/dist/default/skins/dist/default/minimal/tailwind/components/menu.js.map +1 -1
  46. package/dist/default/skins/dist/default/minimal/tailwind/components/time.js +2 -2
  47. package/dist/default/skins/dist/default/minimal/tailwind/components/time.js.map +1 -1
  48. package/dist/default/ui/hooks/use-slider.js +1 -2
  49. package/dist/default/ui/hooks/use-slider.js.map +1 -1
  50. package/dist/dev/i18n/context.d.ts +3 -1
  51. package/dist/dev/i18n/context.d.ts.map +1 -1
  52. package/dist/dev/i18n/context.js.map +1 -1
  53. package/dist/dev/i18n/create-i18n.d.ts.map +1 -1
  54. package/dist/dev/i18n/create-i18n.js +3 -1
  55. package/dist/dev/i18n/create-i18n.js.map +1 -1
  56. package/dist/dev/i18n/get-provider-root-props.js +4 -2
  57. package/dist/dev/i18n/get-provider-root-props.js.map +1 -1
  58. package/dist/dev/player/container.d.ts.map +1 -1
  59. package/dist/dev/player/container.js +16 -7
  60. package/dist/dev/player/container.js.map +1 -1
  61. package/dist/dev/presets/audio/minimal-skin.css +39 -7
  62. package/dist/dev/presets/audio/skin.css +31 -7
  63. package/dist/dev/presets/live-audio/minimal-skin.css +39 -7
  64. package/dist/dev/presets/live-audio/skin.css +31 -7
  65. package/dist/dev/presets/live-video/minimal-skin.css +39 -7
  66. package/dist/dev/presets/live-video/minimal-skin.js +4 -1
  67. package/dist/dev/presets/live-video/minimal-skin.js.map +1 -1
  68. package/dist/dev/presets/live-video/minimal-skin.tailwind.js +4 -1
  69. package/dist/dev/presets/live-video/minimal-skin.tailwind.js.map +1 -1
  70. package/dist/dev/presets/live-video/skin.css +31 -7
  71. package/dist/dev/presets/live-video/skin.js +4 -1
  72. package/dist/dev/presets/live-video/skin.js.map +1 -1
  73. package/dist/dev/presets/live-video/skin.tailwind.js +4 -1
  74. package/dist/dev/presets/live-video/skin.tailwind.js.map +1 -1
  75. package/dist/dev/presets/video/minimal-skin.css +39 -7
  76. package/dist/dev/presets/video/minimal-skin.d.ts.map +1 -1
  77. package/dist/dev/presets/video/minimal-skin.js +27 -11
  78. package/dist/dev/presets/video/minimal-skin.js.map +1 -1
  79. package/dist/dev/presets/video/minimal-skin.tailwind.d.ts.map +1 -1
  80. package/dist/dev/presets/video/minimal-skin.tailwind.js +28 -12
  81. package/dist/dev/presets/video/minimal-skin.tailwind.js.map +1 -1
  82. package/dist/dev/presets/video/skin.css +31 -7
  83. package/dist/dev/presets/video/skin.d.ts.map +1 -1
  84. package/dist/dev/presets/video/skin.js +27 -11
  85. package/dist/dev/presets/video/skin.js.map +1 -1
  86. package/dist/dev/presets/video/skin.tailwind.d.ts.map +1 -1
  87. package/dist/dev/presets/video/skin.tailwind.js +28 -12
  88. package/dist/dev/presets/video/skin.tailwind.js.map +1 -1
  89. package/dist/dev/skins/dist/default/default/tailwind/components/button-group.js +1 -1
  90. package/dist/dev/skins/dist/default/default/tailwind/components/button-group.js.map +1 -1
  91. package/dist/dev/skins/dist/default/default/tailwind/components/controls.js +1 -1
  92. package/dist/dev/skins/dist/default/default/tailwind/components/controls.js.map +1 -1
  93. package/dist/dev/skins/dist/default/default/tailwind/components/menu.js +8 -7
  94. package/dist/dev/skins/dist/default/default/tailwind/components/menu.js.map +1 -1
  95. package/dist/dev/skins/dist/default/default/tailwind/components/time.js +1 -1
  96. package/dist/dev/skins/dist/default/default/tailwind/components/time.js.map +1 -1
  97. package/dist/dev/skins/dist/default/minimal/tailwind/components/button-group.js +1 -1
  98. package/dist/dev/skins/dist/default/minimal/tailwind/components/button-group.js.map +1 -1
  99. package/dist/dev/skins/dist/default/minimal/tailwind/components/controls.js +1 -1
  100. package/dist/dev/skins/dist/default/minimal/tailwind/components/controls.js.map +1 -1
  101. package/dist/dev/skins/dist/default/minimal/tailwind/components/menu.js +8 -7
  102. package/dist/dev/skins/dist/default/minimal/tailwind/components/menu.js.map +1 -1
  103. package/dist/dev/skins/dist/default/minimal/tailwind/components/time.js +2 -2
  104. package/dist/dev/skins/dist/default/minimal/tailwind/components/time.js.map +1 -1
  105. package/dist/dev/ui/hooks/use-slider.d.ts.map +1 -1
  106. package/dist/dev/ui/hooks/use-slider.js +1 -2
  107. package/dist/dev/ui/hooks/use-slider.js.map +1 -1
  108. package/docs/README.md +1 -1
  109. package/docs/concepts/media-sources.md +26 -2
  110. package/docs/concepts/skins.md +48 -16
  111. package/docs/how-to/customize-skins.md +7933 -50
  112. package/docs/how-to/i18n-switch-locale.md +27 -0
  113. package/docs/how-to/installation.md +4 -4
  114. package/docs/how-to/migrate-from-plyr.md +1 -1
  115. package/docs/llms.txt +7 -0
  116. package/docs/reference/cloudflare-video.md +223 -0
  117. package/docs/reference/dash-video.md +55 -0
  118. package/docs/reference/feature-metadata.md +3 -1
  119. package/docs/reference/hls-audio.md +27 -1
  120. package/docs/reference/hls-video.md +39 -1
  121. package/docs/reference/hlsjs-video.md +627 -0
  122. package/docs/reference/native-hls-video.md +41 -0
  123. package/docs/reference/shaka-video.md +359 -0
  124. package/docs/reference/spotify-audio.md +188 -0
  125. package/docs/reference/tiktok-video.md +280 -0
  126. package/docs/reference/title.md +1 -1
  127. package/docs/reference/twitch-video.md +211 -0
  128. package/docs/reference/vimeo-video.md +736 -0
  129. package/docs/reference/youtube-video.md +339 -0
  130. package/package.json +8 -8
@@ -1 +1 @@
1
- {"version":3,"file":"skin.tailwind.js","names":["Popover.Root","Popover.Trigger","Popover.Popup","VolumeSlider.Root","VolumeSlider.Track","VolumeSlider.Fill","VolumeSlider.Thumb","Menu.Root","Tooltip.Root","Tooltip.Trigger","Menu.Trigger","Tooltip.Popup","Tooltip.Label","Menu.Content","Menu.Item","Menu.Separator","Menu.RadioItem","Menu.ItemIndicator","ErrorDialog.Root","ErrorDialog.Popup","ErrorDialog.Title","ErrorDialog.Description","ErrorDialog.Close","Controls.Root","Tooltip.Provider","Tooltip.Shortcut","Time.Value","TimeSlider.Root","TimeSlider.Chapters","TimeSlider.Track","TimeSlider.Buffer","TimeSlider.Fill","TimeSlider.Thumb","TimeSlider.Preview","Slider.Thumbnail","TimeSlider.ChapterTitle","TimeSlider.Value","VolumeIndicator.Root","VolumeIndicator.Fill","VolumeIndicator.Value","StatusIndicator.Root","StatusIndicator.Value","SeekIndicator.Root","SeekIndicator.Value"],"sources":["../../../../src/presets/video/skin.tailwind.tsx"],"sourcesContent":["'use client';\n\nimport {\n audioText,\n captionsText,\n playbackRateText,\n qualityText,\n settingsText,\n speedText,\n} from '@videojs/core/i18n/text/menu';\nimport {\n badge,\n bufferingIndicator,\n button,\n buttonGroupEnd,\n buttonGroupStart,\n container,\n controls,\n error,\n icon,\n iconFlipped,\n iconState,\n inputIndicatorOverlay,\n menu,\n overlay,\n popup,\n poster,\n primaryControls,\n secondaryControls,\n seekIndicator,\n slider,\n statusIndicator,\n thumbnail,\n time,\n volumeIndicator,\n} from '@videojs/skins/default/tailwind/video.tailwind';\nimport { cn } from '@videojs/utils/style';\nimport { type ComponentProps, forwardRef, type ReactNode } from 'react';\nimport { useTranslator } from '@/i18n/context';\nimport {\n AirPlayEnterIcon,\n AirPlayExitIcon,\n CaptionsOffIcon,\n CaptionsOnIcon,\n CastEnterIcon,\n CastExitIcon,\n CheckIcon,\n ChevronIcon,\n FullscreenEnterIcon,\n FullscreenExitIcon,\n GearIcon,\n PauseIcon,\n PipEnterIcon,\n PipExitIcon,\n PlayIcon,\n QualityIcon,\n RestartIcon,\n SpeechIcon,\n SpeedIcon,\n SpinnerIcon,\n VolumeHighIcon,\n VolumeLowIcon,\n VolumeOffIcon,\n} from '@/icons';\nimport { Container } from '@/player/container';\nimport { usePlayer } from '@/player/context';\nimport { AirPlayButton } from '@/ui/airplay-button';\nimport { useAudioTrackOptions } from '@/ui/audio-track';\nimport { AudioTrackRadioGroup } from '@/ui/audio-track-radio-group';\nimport { BufferingIndicator } from '@/ui/buffering-indicator';\nimport { CaptionsButton } from '@/ui/captions-button';\nimport { CaptionsRadioGroup, useCaptionsOptions } from '@/ui/captions-radio-group';\nimport { CastButton } from '@/ui/cast-button';\nimport { Controls } from '@/ui/controls';\nimport { ErrorDialog } from '@/ui/error-dialog';\nimport { FullscreenButton } from '@/ui/fullscreen-button';\nimport { Gesture } from '@/ui/gesture';\nimport { Hotkey } from '@/ui/hotkey';\nimport { Menu } from '@/ui/menu';\nimport { MuteButton } from '@/ui/mute-button';\nimport { PiPButton } from '@/ui/pip-button';\nimport { PlayButton } from '@/ui/play-button';\nimport { usePlaybackRateOptions } from '@/ui/playback-rate';\nimport { PlaybackRateRadioGroup } from '@/ui/playback-rate-radio-group';\nimport { Popover } from '@/ui/popover';\nimport { Poster } from '@/ui/poster';\nimport { useQualityOptions } from '@/ui/quality';\nimport { QualityRadioGroup } from '@/ui/quality-radio-group';\nimport { SeekIndicator } from '@/ui/seek-indicator';\nimport { Slider } from '@/ui/slider';\nimport { StatusAnnouncer } from '@/ui/status-announcer';\nimport { StatusIndicator } from '@/ui/status-indicator';\nimport { Time } from '@/ui/time';\nimport { TimeSlider } from '@/ui/time-slider';\nimport { Tooltip } from '@/ui/tooltip';\nimport { VolumeIndicator } from '@/ui/volume-indicator';\nimport { VolumeSlider } from '@/ui/volume-slider';\nimport type { VideoSkinProps } from './skin';\n\nconst SEEK_TIME = 10;\nconst TOP_STATUS_ACTIONS = ['toggleSubtitles', 'toggleFullscreen', 'togglePictureInPicture'] as const;\nconst CENTER_STATUS_ACTIONS = ['togglePaused'] as const;\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 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 volumeUnavailable = usePlayer((s) => s.volumeAvailability !== 'available');\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 (volumeUnavailable) 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\nfunction MenuChevron({ flipped = false }: { flipped?: boolean }): ReactNode {\n return <ChevronIcon className={cn(icon, menu.icon, menu.chevron, flipped ? iconFlipped : undefined)} />;\n}\n\nfunction SettingsMenu(): ReactNode {\n const t = useTranslator();\n const playbackRate = usePlaybackRateOptions();\n const quality = useQualityOptions();\n const audioTrack = useAudioTrackOptions();\n const captions = useCaptionsOptions();\n const hasPlaybackRate = playbackRate?.state.availability === 'available';\n const hasQuality = quality?.state.availability === 'available';\n const hasAudioTrack = audioTrack?.state.availability === 'available';\n const hasCaptions = captions?.state.availability === 'available';\n\n if (!hasPlaybackRate && !hasQuality && !hasAudioTrack && !hasCaptions) return null;\n\n return (\n <Menu.Root side=\"top\" align=\"center\">\n <Tooltip.Root side=\"top\">\n <Tooltip.Trigger\n render={\n <Menu.Trigger\n aria-label={t(settingsText)}\n render={<Button className={cn(button.icon, menu.settingsTrigger)} />}\n >\n <GearIcon className={cn(icon, menu.settingsIcon)} />\n </Menu.Trigger>\n }\n />\n <Tooltip.Popup className={cn(popup.tooltip)}>\n <Tooltip.Label>{t(settingsText)}</Tooltip.Label>\n </Tooltip.Popup>\n </Tooltip.Root>\n <Menu.Content className={menu.settings}>\n <div className={menu.group}>\n {hasQuality ? (\n <Menu.Root>\n <Menu.Trigger\n className={menu.item}\n render={(props) => (\n <div {...props}>\n <QualityIcon className={cn(icon, menu.icon)} />\n <span>{t(qualityText)}</span>\n <span className={menu.hint}>\n <span className={menu.hintLabel}>{quality.selectedLabel}</span>\n <MenuChevron />\n </span>\n </div>\n )}\n />\n <Menu.Content className={menu.submenuPanel}>\n <Menu.Item className={menu.back}>\n <MenuChevron flipped />\n {t(qualityText)}\n </Menu.Item>\n <Menu.Separator className={menu.separator} />\n <QualityRadioGroup\n className={menu.group}\n aria-label={t(qualityText)}\n renderItem={(props, item) => (\n <Menu.RadioItem {...props} className={menu.item}>\n <span>\n {item.label}\n {item.tier ? <sup className={menu.tier}>{item.tier}</sup> : null}\n </span>\n {item.badge ? <span className={badge}>{item.badge}</span> : null}\n <Menu.ItemIndicator checked={item.checked} forceMount className={menu.indicator}>\n <CheckIcon className={cn(icon, menu.icon)} />\n </Menu.ItemIndicator>\n </Menu.RadioItem>\n )}\n />\n </Menu.Content>\n </Menu.Root>\n ) : null}\n\n {hasAudioTrack ? (\n <Menu.Root>\n <Menu.Trigger\n className={menu.item}\n render={(props) => (\n <div {...props}>\n <SpeechIcon className={icon} />\n <span>{t(audioText)}</span>\n <span className={menu.hint}>\n <span className={menu.hintLabel}>{audioTrack.selectedLabel}</span>\n <MenuChevron />\n </span>\n </div>\n )}\n />\n <Menu.Content className={menu.submenuPanel}>\n <Menu.Item className={menu.back}>\n <MenuChevron flipped />\n {t(audioText)}\n </Menu.Item>\n <Menu.Separator className={menu.separator} />\n <AudioTrackRadioGroup\n className={menu.group}\n aria-label={t(audioText)}\n renderItem={(props, item) => (\n <Menu.RadioItem {...props} className={menu.item}>\n <span>{item.label}</span>\n <Menu.ItemIndicator checked={item.checked} forceMount className={menu.indicator}>\n <CheckIcon className={icon} />\n </Menu.ItemIndicator>\n </Menu.RadioItem>\n )}\n />\n </Menu.Content>\n </Menu.Root>\n ) : null}\n\n {hasPlaybackRate ? (\n <Menu.Root>\n <Menu.Trigger\n className={menu.item}\n render={(props) => (\n <div {...props}>\n <SpeedIcon className={cn(icon, menu.icon)} />\n <span>{t(speedText)}</span>\n <span className={menu.hint}>\n <span className={menu.hintLabel}>{playbackRate.selectedLabel}</span>\n <MenuChevron />\n </span>\n </div>\n )}\n />\n <Menu.Content className={menu.submenuPanel}>\n <Menu.Item className={menu.back}>\n <MenuChevron flipped />\n {t(speedText)}\n </Menu.Item>\n <Menu.Separator className={menu.separator} />\n <PlaybackRateRadioGroup\n className={menu.group}\n aria-label={t(playbackRateText)}\n renderItem={(props, item) => (\n <Menu.RadioItem {...props} className={menu.item}>\n <span>{item.label}</span>\n <Menu.ItemIndicator checked={item.checked} forceMount className={menu.indicator}>\n <CheckIcon className={cn(icon, menu.icon)} />\n </Menu.ItemIndicator>\n </Menu.RadioItem>\n )}\n />\n </Menu.Content>\n </Menu.Root>\n ) : null}\n\n {hasCaptions ? (\n <Menu.Root>\n <Menu.Trigger\n className={menu.item}\n render={(props) => (\n <div {...props}>\n <CaptionsOffIcon className={cn(icon, menu.icon)} />\n <span>{t(captionsText)}</span>\n <span className={menu.hint}>\n <span className={menu.hintLabel}>{captions.selectedLabel}</span>\n <MenuChevron />\n </span>\n </div>\n )}\n />\n <Menu.Content className={menu.submenuPanel}>\n <Menu.Item className={menu.back}>\n <MenuChevron flipped />\n {t(captionsText)}\n </Menu.Item>\n <Menu.Separator className={menu.separator} />\n <CaptionsRadioGroup\n className={menu.group}\n aria-label={t(captionsText)}\n renderItem={(props, item) => (\n <Menu.RadioItem {...props} className={menu.item}>\n <span>{item.label}</span>\n <Menu.ItemIndicator checked={item.checked} forceMount className={menu.indicator}>\n <CheckIcon className={cn(icon, menu.icon)} />\n </Menu.ItemIndicator>\n </Menu.RadioItem>\n )}\n />\n </Menu.Content>\n </Menu.Root>\n ) : null}\n </div>\n </Menu.Content>\n </Menu.Root>\n );\n}\n\n/* ------------------------------------------ Skin ------------------------------------------- */\n\nexport function VideoSkinTailwind(props: VideoSkinProps): ReactNode {\n const { children, className, renderPoster, style, ...rest } = props;\n\n return (\n <Container className={cn(container(false), className)} style={style} {...rest}>\n {children}\n\n <Poster className={poster(false)} render={renderPoster} />\n\n <BufferingIndicator\n render={(props) => (\n <div {...props} className={bufferingIndicator.root}>\n <SpinnerIcon className={icon} />\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}></ErrorDialog.Title>\n <ErrorDialog.Description className={error.description} />\n </div>\n <div className={error.actions}>\n <ErrorDialog.Close className={cn(button.base, button.primary)}></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={primaryControls}>\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 <Tooltip.Label />\n <Tooltip.Shortcut className={popup.tooltipShortcut} />\n </Tooltip.Popup>\n </Tooltip.Root>\n\n <VolumePopover />\n </div>\n\n <div className={time.group}>\n <Time.Value type=\"current\" className={time.current} />\n <TimeSlider.Root render={<SliderRoot />}>\n <TimeSlider.Chapters\n className={slider.chapters}\n renderChapter={(props) => (\n <div {...props} className={cn(props.className, slider.chapter.base)}>\n <TimeSlider.Track render={<div className={slider.chapter.track} />}>\n <TimeSlider.Buffer render={<div className={cn(slider.fill.base, slider.fill.buffer)} />} />\n <TimeSlider.Fill render={<div className={cn(slider.fill.base, slider.fill.fill)} />} />\n </TimeSlider.Track>\n </div>\n )}\n />\n <TimeSlider.Thumb render={<SliderThumb />} />\n <TimeSlider.Preview overflow=\"visible\" className={slider.preview}>\n <div className={cn(thumbnail.root, slider.thumbnail)}>\n <Slider.Thumbnail className={thumbnail.image} />\n <SpinnerIcon className={cn(icon, thumbnail.spinner)} />\n </div>\n <div className={slider.value}>\n <TimeSlider.ChapterTitle className={slider.chapterTitle} />\n <TimeSlider.Value type=\"pointer\" />\n </div>\n </TimeSlider.Preview>\n </TimeSlider.Root>\n <Time.Value toggle type=\"remaining\" className={time.duration} />\n </div>\n\n <div className={cn(buttonGroupEnd, menu.settingsGroup)}>\n <Tooltip.Root side=\"top\">\n <Tooltip.Trigger\n render={\n <CaptionsButton className={cn(button.captions, 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 <Tooltip.Label />\n <Tooltip.Shortcut className={popup.tooltipShortcut} />\n </Tooltip.Popup>\n </Tooltip.Root>\n\n <SettingsMenu />\n </div>\n </div>\n\n <div className={secondaryControls}>\n <div className={buttonGroupEnd}>\n <Tooltip.Root side=\"top\">\n <Tooltip.Trigger\n render={\n <CastButton className={iconState.cast.button} render={<Button />}>\n <CastEnterIcon className={cn(icon, iconState.cast.enter)} />\n <CastExitIcon className={cn(icon, iconState.cast.exit)} />\n </CastButton>\n }\n />\n <Tooltip.Popup className={cn(popup.tooltip)}>\n <Tooltip.Label />\n <Tooltip.Shortcut className={popup.tooltipShortcut} />\n </Tooltip.Popup>\n </Tooltip.Root>\n\n <Tooltip.Root side=\"top\">\n <Tooltip.Trigger\n render={\n <AirPlayButton className={iconState.airplay.button} render={<Button />}>\n <AirPlayEnterIcon className={cn(icon, iconState.airplay.enter)} />\n <AirPlayExitIcon className={cn(icon, iconState.airplay.exit)} />\n </AirPlayButton>\n }\n />\n <Tooltip.Popup className={cn(popup.tooltip)}>\n <Tooltip.Label />\n <Tooltip.Shortcut className={popup.tooltipShortcut} />\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 <Tooltip.Label />\n <Tooltip.Shortcut className={popup.tooltipShortcut} />\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 <Tooltip.Label />\n <Tooltip.Shortcut className={popup.tooltipShortcut} />\n </Tooltip.Popup>\n </Tooltip.Root>\n </div>\n </div>\n </Tooltip.Provider>\n </Controls.Root>\n\n <div className={overlay} />\n\n {/* Hotkeys */}\n <Hotkey keys=\"Space\" action=\"togglePaused\" />\n <Hotkey keys=\"k\" action=\"togglePaused\" />\n <Hotkey keys=\"m\" action=\"toggleMuted\" />\n <Hotkey keys=\"f\" action=\"toggleFullscreen\" />\n <Hotkey keys=\"c\" action=\"toggleSubtitles\" />\n <Hotkey keys=\"i\" action=\"togglePictureInPicture\" />\n <Hotkey keys=\"ArrowRight\" action=\"seekStep\" value={SEEK_TIME / 2} />\n <Hotkey keys=\"ArrowLeft\" action=\"seekStep\" value={-(SEEK_TIME / 2)} />\n <Hotkey keys=\"l\" action=\"seekStep\" value={SEEK_TIME} />\n <Hotkey keys=\"j\" action=\"seekStep\" value={-SEEK_TIME} />\n <Hotkey keys=\"ArrowUp\" action=\"volumeStep\" value={0.05} />\n <Hotkey keys=\"ArrowDown\" action=\"volumeStep\" value={-0.05} />\n <Hotkey keys=\"0-9\" action=\"seekToPercent\" />\n <Hotkey keys=\"Home\" action=\"seekToPercent\" value={0} />\n <Hotkey keys=\"End\" action=\"seekToPercent\" value={100} />\n <Hotkey keys=\">\" action=\"speedUp\" />\n <Hotkey keys=\"<\" action=\"speedDown\" />\n\n {/* Gestures */}\n <Gesture type=\"tap\" action=\"togglePaused\" pointer=\"mouse\" region=\"center\" />\n <Gesture type=\"tap\" action=\"toggleControls\" pointer=\"touch\" />\n <Gesture type=\"doubletap\" action=\"seekStep\" value={-SEEK_TIME} region=\"left\" />\n <Gesture type=\"doubletap\" action=\"toggleFullscreen\" region=\"center\" />\n <Gesture type=\"doubletap\" action=\"seekStep\" value={SEEK_TIME} region=\"right\" />\n\n {/* Input Indicators */}\n <StatusAnnouncer className=\"sr-only\" />\n <div className={inputIndicatorOverlay}>\n <VolumeIndicator.Root className={volumeIndicator.root}>\n <VolumeIndicator.Fill className={volumeIndicator.content}>\n <VolumeHighIcon className={cn(volumeIndicator.icon.base, volumeIndicator.icon.high)} />\n <VolumeLowIcon className={cn(volumeIndicator.icon.base, volumeIndicator.icon.low)} />\n <VolumeOffIcon className={cn(volumeIndicator.icon.base, volumeIndicator.icon.off)} />\n <VolumeIndicator.Value className={volumeIndicator.value} />\n </VolumeIndicator.Fill>\n </VolumeIndicator.Root>\n\n <StatusIndicator.Root actions={TOP_STATUS_ACTIONS} className={statusIndicator.root}>\n <div className={statusIndicator.content}>\n <CaptionsOnIcon className={cn(statusIndicator.icon.base, statusIndicator.icon.captionsOn)} />\n <CaptionsOffIcon className={cn(statusIndicator.icon.base, statusIndicator.icon.captionsOff)} />\n <FullscreenEnterIcon className={cn(statusIndicator.icon.base, statusIndicator.icon.fullscreenEnter)} />\n <FullscreenExitIcon className={cn(statusIndicator.icon.base, statusIndicator.icon.fullscreenExit)} />\n <PipEnterIcon className={cn(statusIndicator.icon.base, statusIndicator.icon.pipEnter)} />\n <PipExitIcon className={cn(statusIndicator.icon.base, statusIndicator.icon.pipExit)} />\n <StatusIndicator.Value className={statusIndicator.value} />\n </div>\n </StatusIndicator.Root>\n\n <SeekIndicator.Root className={seekIndicator.root}>\n <ChevronIcon className={seekIndicator.icon} />\n <SeekIndicator.Value className={seekIndicator.value} />\n </SeekIndicator.Root>\n\n <StatusIndicator.Root actions={CENTER_STATUS_ACTIONS} className={statusIndicator.playback.root}>\n <PlayIcon className={cn(statusIndicator.playback.icon.base, statusIndicator.playback.icon.play)} />\n <PauseIcon className={cn(statusIndicator.playback.icon.base, statusIndicator.playback.icon.pause)} />\n </StatusIndicator.Root>\n </div>\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","Menu.Root","Tooltip.Root","Tooltip.Trigger","Menu.Trigger","Tooltip.Popup","Tooltip.Label","Menu.Content","Menu.Item","Menu.Separator","Menu.RadioItem","Menu.ItemIndicator","ErrorDialog.Root","ErrorDialog.Popup","ErrorDialog.Title","ErrorDialog.Description","ErrorDialog.Close","Controls.Root","Tooltip.Provider","Tooltip.Shortcut","Time.Value","TimeSlider.Root","TimeSlider.Chapters","TimeSlider.Track","TimeSlider.Buffer","TimeSlider.Fill","TimeSlider.Thumb","TimeSlider.Preview","Slider.Thumbnail","TimeSlider.ChapterTitle","TimeSlider.Value","VolumeIndicator.Root","VolumeIndicator.Fill","VolumeIndicator.Value","StatusIndicator.Root","StatusIndicator.Value","SeekIndicator.Root","SeekIndicator.Value"],"sources":["../../../../src/presets/video/skin.tailwind.tsx"],"sourcesContent":["'use client';\n\nimport {\n audioText,\n captionsText,\n playbackRateText,\n qualityText,\n settingsText,\n speedText,\n} from '@videojs/core/i18n/text/menu';\nimport {\n badge,\n bufferingIndicator,\n button,\n buttonGroupEnd,\n buttonGroupStart,\n container,\n controls,\n error,\n icon,\n iconFlipped,\n iconState,\n inputIndicatorOverlay,\n menu,\n overlay,\n popup,\n poster,\n primaryControls,\n secondaryControls,\n seekIndicator,\n slider,\n statusIndicator,\n thumbnail,\n time,\n volumeIndicator,\n} from '@videojs/skins/default/tailwind/video.tailwind';\nimport { cn } from '@videojs/utils/style';\nimport { type ComponentProps, forwardRef, type ReactNode } from 'react';\nimport { useTranslator } from '@/i18n/context';\nimport {\n AirPlayEnterIcon,\n AirPlayExitIcon,\n CaptionsOffIcon,\n CaptionsOnIcon,\n CastEnterIcon,\n CastExitIcon,\n CheckIcon,\n ChevronIcon,\n FullscreenEnterIcon,\n FullscreenExitIcon,\n GearIcon,\n PauseIcon,\n PipEnterIcon,\n PipExitIcon,\n PlayIcon,\n QualityIcon,\n RestartIcon,\n SpeechIcon,\n SpeedIcon,\n SpinnerIcon,\n VolumeHighIcon,\n VolumeLowIcon,\n VolumeOffIcon,\n} from '@/icons';\nimport { Container } from '@/player/container';\nimport { usePlayer } from '@/player/context';\nimport { AirPlayButton } from '@/ui/airplay-button';\nimport { useAudioTrackOptions } from '@/ui/audio-track';\nimport { AudioTrackRadioGroup } from '@/ui/audio-track-radio-group';\nimport { BufferingIndicator } from '@/ui/buffering-indicator';\nimport { CaptionsButton } from '@/ui/captions-button';\nimport { CaptionsRadioGroup, useCaptionsOptions } from '@/ui/captions-radio-group';\nimport { CastButton } from '@/ui/cast-button';\nimport { Controls } from '@/ui/controls';\nimport { ErrorDialog } from '@/ui/error-dialog';\nimport { FullscreenButton } from '@/ui/fullscreen-button';\nimport { Gesture } from '@/ui/gesture';\nimport { Hotkey } from '@/ui/hotkey';\nimport { Menu } from '@/ui/menu';\nimport { MuteButton } from '@/ui/mute-button';\nimport { PiPButton } from '@/ui/pip-button';\nimport { PlayButton } from '@/ui/play-button';\nimport { usePlaybackRateOptions } from '@/ui/playback-rate';\nimport { PlaybackRateRadioGroup } from '@/ui/playback-rate-radio-group';\nimport { Popover } from '@/ui/popover';\nimport { Poster } from '@/ui/poster';\nimport { useQualityOptions } from '@/ui/quality';\nimport { QualityRadioGroup } from '@/ui/quality-radio-group';\nimport { SeekIndicator } from '@/ui/seek-indicator';\nimport { Slider } from '@/ui/slider';\nimport { StatusAnnouncer } from '@/ui/status-announcer';\nimport { StatusIndicator } from '@/ui/status-indicator';\nimport { Time } from '@/ui/time';\nimport { TimeSlider } from '@/ui/time-slider';\nimport { Tooltip } from '@/ui/tooltip';\nimport { VolumeIndicator } from '@/ui/volume-indicator';\nimport { VolumeSlider } from '@/ui/volume-slider';\nimport type { VideoSkinProps } from './skin';\n\nconst SEEK_TIME = 10;\nconst TOP_STATUS_ACTIONS = ['toggleSubtitles', 'toggleFullscreen', 'togglePictureInPicture'] as const;\nconst CENTER_STATUS_ACTIONS = ['togglePaused'] as const;\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 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 volumeUnavailable = usePlayer((s) => s.volumeAvailability !== 'available');\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 (volumeUnavailable) 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\nfunction MenuChevron({ flipped = false }: { flipped?: boolean }): ReactNode {\n return (\n <ChevronIcon\n className={cn(icon, menu.icon, menu.chevron, flipped ? cn(iconFlipped, menu.backChevron) : undefined)}\n />\n );\n}\n\nfunction SettingsMenu(): ReactNode {\n const t = useTranslator();\n const playbackRate = usePlaybackRateOptions();\n const quality = useQualityOptions();\n const audioTrack = useAudioTrackOptions();\n const captions = useCaptionsOptions();\n const hasPlaybackRate = playbackRate?.state.availability === 'available';\n const hasQuality = quality?.state.availability === 'available';\n const hasAudioTrack = audioTrack?.state.availability === 'available';\n const hasCaptions = captions?.state.availability === 'available';\n\n if (!hasPlaybackRate && !hasQuality && !hasAudioTrack && !hasCaptions) return null;\n\n return (\n <Menu.Root side=\"top\" align=\"center\">\n <Tooltip.Root side=\"top\">\n <Tooltip.Trigger\n render={\n <Menu.Trigger\n aria-label={t(settingsText)}\n render={<Button className={cn(button.icon, menu.settingsTrigger)} />}\n >\n <GearIcon className={cn(icon, menu.settingsIcon)} />\n </Menu.Trigger>\n }\n />\n <Tooltip.Popup className={cn(popup.tooltip)}>\n <Tooltip.Label>{t(settingsText)}</Tooltip.Label>\n </Tooltip.Popup>\n </Tooltip.Root>\n <Menu.Content className={menu.settings}>\n <div className={menu.group}>\n {hasQuality ? (\n <Menu.Root>\n <Menu.Trigger\n className={menu.item}\n render={(props) => (\n <div {...props}>\n <QualityIcon className={cn(icon, menu.icon)} />\n <span>{t(qualityText)}</span>\n <span className={menu.hint}>\n <bdi dir=\"auto\" className={menu.hintLabel}>\n {quality.selectedLabel}\n </bdi>\n <MenuChevron />\n </span>\n </div>\n )}\n />\n <Menu.Content className={menu.submenuPanel}>\n <Menu.Item className={menu.back}>\n <MenuChevron flipped />\n {t(qualityText)}\n </Menu.Item>\n <Menu.Separator className={menu.separator} />\n <QualityRadioGroup\n className={menu.group}\n aria-label={t(qualityText)}\n renderItem={(props, item) => (\n <Menu.RadioItem {...props} className={menu.item}>\n <bdi dir=\"auto\">\n {item.label}\n {item.tier ? <sup className={menu.tier}>{item.tier}</sup> : null}\n </bdi>\n {item.badge ? <span className={badge}>{item.badge}</span> : null}\n <Menu.ItemIndicator checked={item.checked} forceMount className={menu.indicator}>\n <CheckIcon className={cn(icon, menu.icon)} />\n </Menu.ItemIndicator>\n </Menu.RadioItem>\n )}\n />\n </Menu.Content>\n </Menu.Root>\n ) : null}\n\n {hasAudioTrack ? (\n <Menu.Root>\n <Menu.Trigger\n className={menu.item}\n render={(props) => (\n <div {...props}>\n <SpeechIcon className={icon} />\n <span>{t(audioText)}</span>\n <span className={menu.hint}>\n <bdi dir=\"auto\" className={menu.hintLabel}>\n {audioTrack.selectedLabel}\n </bdi>\n <MenuChevron />\n </span>\n </div>\n )}\n />\n <Menu.Content className={menu.submenuPanel}>\n <Menu.Item className={menu.back}>\n <MenuChevron flipped />\n {t(audioText)}\n </Menu.Item>\n <Menu.Separator className={menu.separator} />\n <AudioTrackRadioGroup\n className={menu.group}\n aria-label={t(audioText)}\n renderItem={(props, item) => (\n <Menu.RadioItem {...props} className={menu.item}>\n <bdi dir=\"auto\">{item.label}</bdi>\n <Menu.ItemIndicator checked={item.checked} forceMount className={menu.indicator}>\n <CheckIcon className={icon} />\n </Menu.ItemIndicator>\n </Menu.RadioItem>\n )}\n />\n </Menu.Content>\n </Menu.Root>\n ) : null}\n\n {hasPlaybackRate ? (\n <Menu.Root>\n <Menu.Trigger\n className={menu.item}\n render={(props) => (\n <div {...props}>\n <SpeedIcon className={cn(icon, menu.icon)} />\n <span>{t(speedText)}</span>\n <span className={menu.hint}>\n <bdi dir=\"auto\" className={menu.hintLabel}>\n {playbackRate.selectedLabel}\n </bdi>\n <MenuChevron />\n </span>\n </div>\n )}\n />\n <Menu.Content className={menu.submenuPanel}>\n <Menu.Item className={menu.back}>\n <MenuChevron flipped />\n {t(speedText)}\n </Menu.Item>\n <Menu.Separator className={menu.separator} />\n <PlaybackRateRadioGroup\n className={menu.group}\n aria-label={t(playbackRateText)}\n renderItem={(props, item) => (\n <Menu.RadioItem {...props} className={menu.item}>\n <bdi dir=\"auto\">{item.label}</bdi>\n <Menu.ItemIndicator checked={item.checked} forceMount className={menu.indicator}>\n <CheckIcon className={cn(icon, menu.icon)} />\n </Menu.ItemIndicator>\n </Menu.RadioItem>\n )}\n />\n </Menu.Content>\n </Menu.Root>\n ) : null}\n\n {hasCaptions ? (\n <Menu.Root>\n <Menu.Trigger\n className={menu.item}\n render={(props) => (\n <div {...props}>\n <CaptionsOffIcon className={cn(icon, menu.icon)} />\n <span>{t(captionsText)}</span>\n <span className={menu.hint}>\n <bdi dir=\"auto\" className={menu.hintLabel}>\n {captions.selectedLabel}\n </bdi>\n <MenuChevron />\n </span>\n </div>\n )}\n />\n <Menu.Content className={menu.submenuPanel}>\n <Menu.Item className={menu.back}>\n <MenuChevron flipped />\n {t(captionsText)}\n </Menu.Item>\n <Menu.Separator className={menu.separator} />\n <CaptionsRadioGroup\n className={menu.group}\n aria-label={t(captionsText)}\n renderItem={(props, item) => (\n <Menu.RadioItem {...props} className={menu.item}>\n <bdi dir=\"auto\">{item.label}</bdi>\n <Menu.ItemIndicator checked={item.checked} forceMount className={menu.indicator}>\n <CheckIcon className={cn(icon, menu.icon)} />\n </Menu.ItemIndicator>\n </Menu.RadioItem>\n )}\n />\n </Menu.Content>\n </Menu.Root>\n ) : null}\n </div>\n </Menu.Content>\n </Menu.Root>\n );\n}\n\n/* ------------------------------------------ Skin ------------------------------------------- */\n\nexport function VideoSkinTailwind(props: VideoSkinProps): ReactNode {\n const { children, className, renderPoster, style, ...rest } = props;\n\n return (\n <Container className={cn(container(false), className)} style={style} {...rest}>\n {children}\n\n <Poster className={poster(false)} render={renderPoster} />\n\n <BufferingIndicator\n render={(props) => (\n <div {...props} className={bufferingIndicator.root}>\n <SpinnerIcon className={icon} />\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}></ErrorDialog.Title>\n <ErrorDialog.Description className={error.description} />\n </div>\n <div className={error.actions}>\n <ErrorDialog.Close className={cn(button.base, button.primary)}></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={primaryControls}>\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 <Tooltip.Label />\n <Tooltip.Shortcut className={popup.tooltipShortcut} />\n </Tooltip.Popup>\n </Tooltip.Root>\n\n <VolumePopover />\n </div>\n\n <div className={time.group}>\n <Time.Value type=\"current\" className={time.current} />\n <TimeSlider.Root render={<SliderRoot />}>\n <TimeSlider.Chapters\n className={slider.chapters}\n renderChapter={(props) => (\n <div {...props} className={cn(props.className, slider.chapter.base)}>\n <TimeSlider.Track render={<div className={slider.chapter.track} />}>\n <TimeSlider.Buffer render={<div className={cn(slider.fill.base, slider.fill.buffer)} />} />\n <TimeSlider.Fill render={<div className={cn(slider.fill.base, slider.fill.fill)} />} />\n </TimeSlider.Track>\n </div>\n )}\n />\n <TimeSlider.Thumb render={<SliderThumb />} />\n <TimeSlider.Preview overflow=\"visible\" className={slider.preview}>\n <div className={cn(thumbnail.root, slider.thumbnail)}>\n <Slider.Thumbnail className={thumbnail.image} />\n <SpinnerIcon className={cn(icon, thumbnail.spinner)} />\n </div>\n <div className={slider.value}>\n <TimeSlider.ChapterTitle className={slider.chapterTitle} />\n <TimeSlider.Value type=\"pointer\" />\n </div>\n </TimeSlider.Preview>\n </TimeSlider.Root>\n <Time.Value toggle type=\"remaining\" className={time.duration} />\n </div>\n\n <div className={cn(buttonGroupEnd, menu.settingsGroup)}>\n <Tooltip.Root side=\"top\">\n <Tooltip.Trigger\n render={\n <CaptionsButton className={cn(button.captions, 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 <Tooltip.Label />\n <Tooltip.Shortcut className={popup.tooltipShortcut} />\n </Tooltip.Popup>\n </Tooltip.Root>\n\n <SettingsMenu />\n </div>\n </div>\n\n <div className={secondaryControls}>\n <div className={buttonGroupEnd}>\n <Tooltip.Root side=\"top\">\n <Tooltip.Trigger\n render={\n <CastButton className={iconState.cast.button} render={<Button />}>\n <CastEnterIcon className={cn(icon, iconState.cast.enter)} />\n <CastExitIcon className={cn(icon, iconState.cast.exit)} />\n </CastButton>\n }\n />\n <Tooltip.Popup className={cn(popup.tooltip)}>\n <Tooltip.Label />\n <Tooltip.Shortcut className={popup.tooltipShortcut} />\n </Tooltip.Popup>\n </Tooltip.Root>\n\n <Tooltip.Root side=\"top\">\n <Tooltip.Trigger\n render={\n <AirPlayButton className={iconState.airplay.button} render={<Button />}>\n <AirPlayEnterIcon className={cn(icon, iconState.airplay.enter)} />\n <AirPlayExitIcon className={cn(icon, iconState.airplay.exit)} />\n </AirPlayButton>\n }\n />\n <Tooltip.Popup className={cn(popup.tooltip)}>\n <Tooltip.Label />\n <Tooltip.Shortcut className={popup.tooltipShortcut} />\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 <Tooltip.Label />\n <Tooltip.Shortcut className={popup.tooltipShortcut} />\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 <Tooltip.Label />\n <Tooltip.Shortcut className={popup.tooltipShortcut} />\n </Tooltip.Popup>\n </Tooltip.Root>\n </div>\n </div>\n </Tooltip.Provider>\n </Controls.Root>\n\n <div className={overlay} />\n\n {/* Hotkeys */}\n <Hotkey keys=\"Space\" action=\"togglePaused\" />\n <Hotkey keys=\"k\" action=\"togglePaused\" />\n <Hotkey keys=\"m\" action=\"toggleMuted\" />\n <Hotkey keys=\"f\" action=\"toggleFullscreen\" />\n <Hotkey keys=\"c\" action=\"toggleSubtitles\" />\n <Hotkey keys=\"i\" action=\"togglePictureInPicture\" />\n <Hotkey keys=\"ArrowRight\" action=\"seekStep\" value={SEEK_TIME / 2} />\n <Hotkey keys=\"ArrowLeft\" action=\"seekStep\" value={-(SEEK_TIME / 2)} />\n <Hotkey keys=\"l\" action=\"seekStep\" value={SEEK_TIME} />\n <Hotkey keys=\"j\" action=\"seekStep\" value={-SEEK_TIME} />\n <Hotkey keys=\"ArrowUp\" action=\"volumeStep\" value={0.05} />\n <Hotkey keys=\"ArrowDown\" action=\"volumeStep\" value={-0.05} />\n <Hotkey keys=\"0-9\" action=\"seekToPercent\" />\n <Hotkey keys=\"Home\" action=\"seekToPercent\" value={0} />\n <Hotkey keys=\"End\" action=\"seekToPercent\" value={100} />\n <Hotkey keys=\">\" action=\"speedUp\" />\n <Hotkey keys=\"<\" action=\"speedDown\" />\n\n {/* Gestures */}\n <Gesture type=\"tap\" action=\"togglePaused\" pointer=\"mouse\" region=\"center\" />\n <Gesture type=\"tap\" action=\"toggleControls\" pointer=\"touch\" />\n <Gesture type=\"doubletap\" action=\"seekStep\" value={-SEEK_TIME} region=\"left\" />\n <Gesture type=\"doubletap\" action=\"toggleFullscreen\" region=\"center\" />\n <Gesture type=\"doubletap\" action=\"seekStep\" value={SEEK_TIME} region=\"right\" />\n\n {/* Input Indicators */}\n <StatusAnnouncer className=\"sr-only\" />\n <div className={inputIndicatorOverlay}>\n <VolumeIndicator.Root className={volumeIndicator.root}>\n <VolumeIndicator.Fill className={volumeIndicator.content}>\n <VolumeHighIcon className={cn(volumeIndicator.icon.base, volumeIndicator.icon.high)} />\n <VolumeLowIcon className={cn(volumeIndicator.icon.base, volumeIndicator.icon.low)} />\n <VolumeOffIcon className={cn(volumeIndicator.icon.base, volumeIndicator.icon.off)} />\n <VolumeIndicator.Value className={volumeIndicator.value} />\n </VolumeIndicator.Fill>\n </VolumeIndicator.Root>\n\n <StatusIndicator.Root actions={TOP_STATUS_ACTIONS} className={statusIndicator.root}>\n <div className={statusIndicator.content}>\n <CaptionsOnIcon className={cn(statusIndicator.icon.base, statusIndicator.icon.captionsOn)} />\n <CaptionsOffIcon className={cn(statusIndicator.icon.base, statusIndicator.icon.captionsOff)} />\n <FullscreenEnterIcon className={cn(statusIndicator.icon.base, statusIndicator.icon.fullscreenEnter)} />\n <FullscreenExitIcon className={cn(statusIndicator.icon.base, statusIndicator.icon.fullscreenExit)} />\n <PipEnterIcon className={cn(statusIndicator.icon.base, statusIndicator.icon.pipEnter)} />\n <PipExitIcon className={cn(statusIndicator.icon.base, statusIndicator.icon.pipExit)} />\n <StatusIndicator.Value className={statusIndicator.value} />\n </div>\n </StatusIndicator.Root>\n\n <SeekIndicator.Root className={seekIndicator.root}>\n <ChevronIcon className={seekIndicator.icon} />\n <SeekIndicator.Value className={seekIndicator.value} />\n </SeekIndicator.Root>\n\n <StatusIndicator.Root actions={CENTER_STATUS_ACTIONS} className={statusIndicator.playback.root}>\n <PlayIcon className={cn(statusIndicator.playback.icon.base, statusIndicator.playback.icon.play)} />\n <PauseIcon className={cn(statusIndicator.playback.icon.base, statusIndicator.playback.icon.pause)} />\n </StatusIndicator.Root>\n </div>\n </Container>\n );\n}\n"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  //#region ../skins/dist/default/default/tailwind/components/button-group.js
2
- const buttonGroup = "flex items-center gap-px";
2
+ const buttonGroup = "flex items-center gap-px [&:dir(rtl)]:flex-row-reverse";
3
3
  //#endregion
4
4
  export { buttonGroup };
5
5
 
@@ -1 +1 @@
1
- {"version":3,"file":"button-group.js","names":[],"sources":["../../../../../../../../../skins/dist/default/default/tailwind/components/button-group.js"],"sourcesContent":["//#region src/default/tailwind/components/button-group.ts\nconst buttonGroup = \"flex items-center gap-px\";\n//#endregion\nexport { buttonGroup };\n\n//# sourceMappingURL=button-group.js.map"],"mappings":";AACA,MAAM,cAAc"}
1
+ {"version":3,"file":"button-group.js","names":[],"sources":["../../../../../../../../../skins/dist/default/default/tailwind/components/button-group.js"],"sourcesContent":["//#region src/default/tailwind/components/button-group.ts\nconst buttonGroup = \"flex items-center gap-px [&:dir(rtl)]:flex-row-reverse\";\n//#endregion\nexport { buttonGroup };\n\n//# sourceMappingURL=button-group.js.map"],"mappings":";AACA,MAAM,cAAc"}
@@ -1,6 +1,6 @@
1
1
  import { cn } from "@videojs/utils/style";
2
2
  //#region ../skins/dist/default/default/tailwind/components/controls.js
3
- const controls = cn("peer/controls", "@container/media-controls", "[--media-popover-side-offset:calc(var(--spacing)*(var(--base-side-offset,2)+var(--controls-padding,1)))]", "[--media-tooltip-side-offset:var(--media-popover-side-offset)]", "[--media-popover-boundary-offset:calc(var(--spacing)*var(--base-boundary-offset,2))]", "[--media-tooltip-boundary-offset:var(--media-popover-boundary-offset)]", "[padding:calc(var(--spacing)*var(--controls-padding,1))] flex items-center", "rounded-full", "text-shadow-2xs text-shadow-(color:--shadow-current-color)");
3
+ const controls = cn("peer/controls", "@container/media-controls", "[--media-popover-side-offset:calc(var(--spacing)*(var(--base-side-offset,2)+var(--controls-padding,1)))]", "[--media-tooltip-side-offset:var(--media-popover-side-offset)]", "[--media-popover-boundary-offset:calc(var(--spacing)*var(--base-boundary-offset,2))]", "[--media-tooltip-boundary-offset:var(--media-popover-boundary-offset)]", "[padding:calc(var(--spacing)*var(--controls-padding,1))] flex items-center [&:dir(rtl)]:flex-row-reverse", "rounded-full", "text-shadow-2xs text-shadow-(color:--shadow-current-color)");
4
4
  //#endregion
5
5
  export { controls };
6
6
 
@@ -1 +1 @@
1
- {"version":3,"file":"controls.js","names":[],"sources":["../../../../../../../../../skins/dist/default/default/tailwind/components/controls.js"],"sourcesContent":["import { cn } from \"@videojs/utils/style\";\n//#region src/default/tailwind/components/controls.ts\nconst controls = cn(\"peer/controls\", \"@container/media-controls\", \"[--media-popover-side-offset:calc(var(--spacing)*(var(--base-side-offset,2)+var(--controls-padding,1)))]\", \"[--media-tooltip-side-offset:var(--media-popover-side-offset)]\", \"[--media-popover-boundary-offset:calc(var(--spacing)*var(--base-boundary-offset,2))]\", \"[--media-tooltip-boundary-offset:var(--media-popover-boundary-offset)]\", \"[padding:calc(var(--spacing)*var(--controls-padding,1))] flex items-center\", \"rounded-full\", \"text-shadow-2xs text-shadow-(color:--shadow-current-color)\");\n//#endregion\nexport { controls };\n\n//# sourceMappingURL=controls.js.map"],"mappings":";;AAEA,MAAM,WAAW,GAAG,iBAAiB,6BAA6B,4GAA4G,kEAAkE,wFAAwF,0EAA0E,8EAA8E,gBAAgB,4DAA4D"}
1
+ {"version":3,"file":"controls.js","names":[],"sources":["../../../../../../../../../skins/dist/default/default/tailwind/components/controls.js"],"sourcesContent":["import { cn } from \"@videojs/utils/style\";\n//#region src/default/tailwind/components/controls.ts\nconst controls = cn(\"peer/controls\", \"@container/media-controls\", \"[--media-popover-side-offset:calc(var(--spacing)*(var(--base-side-offset,2)+var(--controls-padding,1)))]\", \"[--media-tooltip-side-offset:var(--media-popover-side-offset)]\", \"[--media-popover-boundary-offset:calc(var(--spacing)*var(--base-boundary-offset,2))]\", \"[--media-tooltip-boundary-offset:var(--media-popover-boundary-offset)]\", \"[padding:calc(var(--spacing)*var(--controls-padding,1))] flex items-center [&:dir(rtl)]:flex-row-reverse\", \"rounded-full\", \"text-shadow-2xs text-shadow-(color:--shadow-current-color)\");\n//#endregion\nexport { controls };\n\n//# sourceMappingURL=controls.js.map"],"mappings":";;AAEA,MAAM,WAAW,GAAG,iBAAiB,6BAA6B,4GAA4G,kEAAkE,wFAAwF,0EAA0E,4GAA4G,gBAAgB,4DAA4D"}
@@ -2,8 +2,8 @@ import { popup } from "./popup.js";
2
2
  import { surface } from "./surface.js";
3
3
  import { cn } from "@videojs/utils/style";
4
4
  //#region ../skins/dist/default/default/tailwind/components/menu.js
5
- const submenuPanel = cn("absolute inset-x-0 top-0 [max-height:inherit] overflow-auto overscroll-none p-(--menu-padding) outline-none", "z-10", "translate-none transition-[translate,filter] duration-(--menu-transition-duration) ease-out", "data-starting-style:pointer-events-none data-ending-style:pointer-events-none", "data-starting-style:overflow-hidden data-ending-style:overflow-hidden", "data-starting-style:translate-x-full data-ending-style:translate-x-full", "data-starting-style:blur data-ending-style:blur");
6
- const itemBase = cn("group/menu-item relative flex cursor-pointer select-none items-center gap-1.5 rounded-(--menu-item-border-radius) py-1.5 px-2", "text-left", "text-shadow-2xs text-shadow-(color:--shadow-current-color)", "outline-2 -outline-offset-2 outline-transparent", "transition-colors duration-100 ease-in-out", "supports-[top:anchor(top)]:duration-50", "supports-[top:anchor(top)]:hover:duration-200", "supports-[top:anchor(top)]:data-highlighted:duration-200", "hover:bg-(--accent-background-color) hover:text-(--accent-text-color)", "data-highlighted:bg-(--accent-background-color) data-highlighted:text-(--accent-text-color)", "focus-visible:outline-(--focus-ring-color) focus-visible:outline-offset-2");
5
+ const submenuPanel = cn("[--submenu-translate:100%] [&:dir(rtl)]:[--submenu-translate:-100%]", "absolute inset-x-0 top-0 [max-height:inherit] overflow-auto overscroll-none p-(--menu-padding) outline-none", "z-10", "translate-none transition-[translate,filter] duration-(--menu-transition-duration) ease-out", "data-starting-style:pointer-events-none data-ending-style:pointer-events-none", "data-starting-style:overflow-hidden data-ending-style:overflow-hidden", "data-starting-style:[translate:var(--submenu-translate)_0] data-ending-style:[translate:var(--submenu-translate)_0]", "data-starting-style:blur data-ending-style:blur");
6
+ const itemBase = cn("group/menu-item relative flex cursor-pointer select-none items-center gap-1.5 rounded-(--menu-item-border-radius) py-1.5 px-2", "text-start", "text-shadow-2xs text-shadow-(color:--shadow-current-color)", "outline-2 -outline-offset-2 outline-transparent", "transition-colors duration-100 ease-in-out", "supports-[top:anchor(top)]:duration-50", "supports-[top:anchor(top)]:hover:duration-200", "supports-[top:anchor(top)]:data-highlighted:duration-200", "hover:bg-(--accent-background-color) hover:text-(--accent-text-color)", "data-highlighted:bg-(--accent-background-color) data-highlighted:text-(--accent-text-color)", "focus-visible:outline-(--focus-ring-color) focus-visible:outline-offset-2");
7
7
  const menuTokens = cn("[--menu-transition-duration:250ms]", "[--menu-max-height:--spacing(56)]", "[--menu-padding:--spacing(1)]", "[--menu-border-radius:--spacing(3)]", "[--menu-item-border-radius:calc(var(--menu-border-radius)_-_var(--menu-padding))]", "motion-reduce:[--menu-transition-duration:0ms]");
8
8
  const group = cn("flex flex-col gap-0.5", "[anchor-scope:--menu-item-highlight-anchor]", "supports-[top:anchor(top)]:before:absolute", "supports-[top:anchor(top)]:before:[position-anchor:--menu-item-highlight-anchor]", "supports-[top:anchor(top)]:before:[inset:anchor(inside)]", "supports-[top:anchor(top)]:before:[overflow-anchor:none]", "supports-[top:anchor(top)]:before:pointer-events-none", "supports-[top:anchor(top)]:before:bg-(--accent-background-color)", "supports-[top:anchor(top)]:before:rounded-(--menu-item-border-radius)", "supports-[top:anchor(top)]:before:transition-[inset]", "supports-[top:anchor(top)]:before:duration-100", "supports-[top:anchor(top)]:before:ease-in-out", "supports-[top:anchor(top)]:has-data-[highlighted=]:before:duration-0");
9
9
  const menuHostShell = cn(popup.popover, surface, menuTokens, "min-w-max max-w-(--media-popover-available-width,none) max-h-[min(var(--media-popover-available-height,var(--menu-max-height)),var(--menu-max-height))]", "box-border rounded-(--menu-border-radius) p-(--menu-padding) overscroll-none");
@@ -11,19 +11,20 @@ const menu = {
11
11
  /** Standalone menu popover host (audio playback rate, sandbox demos). */
12
12
  root: cn(menuHostShell, "overflow-auto!"),
13
13
  /** Settings menu host with nested submenu navigation. */
14
- settings: cn(menuHostShell, "[--popup-transition:var(--popup-base-transition),width_var(--popup-transition-timing-function)_var(--menu-transition-duration),height_var(--popup-transition-timing-function)_var(--menu-transition-duration)]", "data-starting-style:[--popup-transition:var(--popup-base-transition)]", "data-ending-style:[--popup-transition:var(--popup-base-transition)]", "min-w-48! w-(--media-menu-width) h-(--media-menu-height)", "[&>:not([data-submenu])]:translate-none [&>:not([data-submenu])]:transition-[translate,filter]", "[&>:not([data-submenu])]:duration-(--menu-transition-duration) [&>:not([data-submenu])]:ease-out", "[&[data-submenu-expanded=true]>:not([data-submenu])]:-translate-x-full", "[&[data-submenu-expanded=true]>:not([data-submenu])]:blur", "[&[data-submenu-expanded]>:not([data-submenu])]:before:hidden", "overflow-hidden!"),
14
+ settings: cn(menuHostShell, "[--popup-transition:var(--popup-base-transition),width_var(--popup-transition-timing-function)_var(--menu-transition-duration),height_var(--popup-transition-timing-function)_var(--menu-transition-duration)]", "data-starting-style:[--popup-transition:var(--popup-base-transition)]", "data-ending-style:[--popup-transition:var(--popup-base-transition)]", "min-w-48! w-(--media-menu-width) h-(--media-menu-height)", "[&>:not([data-submenu])]:translate-none [&>:not([data-submenu])]:transition-[translate,filter]", "[&>:not([data-submenu])]:duration-(--menu-transition-duration) [&>:not([data-submenu])]:ease-out", "[--submenu-parent-translate:-100%] [&:dir(rtl)]:[--submenu-parent-translate:100%]", "[&[data-submenu-expanded=true]>:not([data-submenu])]:[translate:var(--submenu-parent-translate)_0]", "[&[data-submenu-expanded=true]>:not([data-submenu])]:blur", "[&[data-submenu-expanded]>:not([data-submenu])]:before:hidden", "overflow-hidden!"),
15
15
  group,
16
16
  item: cn(itemBase, "justify-between tabular-nums text-inherit", "supports-[top:anchor(top)]:data-highlighted:[anchor-name:--menu-item-highlight-anchor]", "supports-[top:anchor(top)]:data-highlighted:bg-transparent", "data-[availability=unavailable]:hidden data-[availability=unsupported]:hidden", "aria-disabled:pointer-events-none aria-disabled:cursor-not-allowed aria-disabled:opacity-50"),
17
17
  separator: "my-1 border-b border-[oklch(0_0_0/0.1)] shadow-[0_1px_0_0_oklch(1_0_0/0.075)]",
18
- tier: "pl-0.5 pt-px text-(length:--font-size-tiny) font-semibold leading-none text-current/70",
19
- indicator: "ml-auto -mr-1 shrink-0 opacity-0 group-aria-checked/menu-item:opacity-100",
18
+ tier: "ps-0.5 pt-px text-(length:--font-size-tiny) font-semibold leading-none text-current/70",
19
+ indicator: "ms-auto -me-1 shrink-0 opacity-0 group-aria-checked/menu-item:opacity-100",
20
20
  icon: "shrink-0 text-current/65 drop-shadow-[0_1px_0_var(--shadow-current-color)] group-hover/menu-item:text-inherit group-data-highlighted/menu-item:text-inherit",
21
21
  /** Nested submenu panel. */
22
22
  submenuPanel,
23
23
  back: cn(itemBase, "mb-0.5 w-full"),
24
- hint: "ml-auto inline-flex min-w-0 items-center gap-1 pl-2 text-current/65",
24
+ hint: "ms-auto inline-flex min-w-0 items-center gap-1 ps-2 text-current/65",
25
25
  hintLabel: "max-w-24 overflow-hidden text-ellipsis whitespace-nowrap",
26
- chevron: "size-3.5",
26
+ chevron: "size-3.5 [&:dir(rtl)]:[scale:-1_1]",
27
+ backChevron: "[&:dir(rtl)]:[scale:1_1]",
27
28
  settingsGroup: "group/settings",
28
29
  settingsTrigger: "group",
29
30
  settingsIcon: "transition-transform duration-150 ease-in-out group-aria-expanded:rotate-90 motion-reduce:duration-0"
@@ -1 +1 @@
1
- {"version":3,"file":"menu.js","names":[],"sources":["../../../../../../../../../skins/dist/default/default/tailwind/components/menu.js"],"sourcesContent":["import { popup } from \"./popup.js\";\nimport { surface } from \"./surface.js\";\nimport { cn } from \"@videojs/utils/style\";\n//#region src/default/tailwind/components/menu.ts\nconst submenuPanel = cn(\"absolute inset-x-0 top-0 [max-height:inherit] overflow-auto overscroll-none p-(--menu-padding) outline-none\", \"z-10\", \"translate-none transition-[translate,filter] duration-(--menu-transition-duration) ease-out\", \"data-starting-style:pointer-events-none data-ending-style:pointer-events-none\", \"data-starting-style:overflow-hidden data-ending-style:overflow-hidden\", \"data-starting-style:translate-x-full data-ending-style:translate-x-full\", \"data-starting-style:blur data-ending-style:blur\");\nconst itemBase = cn(\"group/menu-item relative flex cursor-pointer select-none items-center gap-1.5 rounded-(--menu-item-border-radius) py-1.5 px-2\", \"text-left\", \"text-shadow-2xs text-shadow-(color:--shadow-current-color)\", \"outline-2 -outline-offset-2 outline-transparent\", \"transition-colors duration-100 ease-in-out\", \"supports-[top:anchor(top)]:duration-50\", \"supports-[top:anchor(top)]:hover:duration-200\", \"supports-[top:anchor(top)]:data-highlighted:duration-200\", \"hover:bg-(--accent-background-color) hover:text-(--accent-text-color)\", \"data-highlighted:bg-(--accent-background-color) data-highlighted:text-(--accent-text-color)\", \"focus-visible:outline-(--focus-ring-color) focus-visible:outline-offset-2\");\nconst menuTokens = cn(\"[--menu-transition-duration:250ms]\", \"[--menu-max-height:--spacing(56)]\", \"[--menu-padding:--spacing(1)]\", \"[--menu-border-radius:--spacing(3)]\", \"[--menu-item-border-radius:calc(var(--menu-border-radius)_-_var(--menu-padding))]\", \"motion-reduce:[--menu-transition-duration:0ms]\");\nconst group = cn(\"flex flex-col gap-0.5\", \"[anchor-scope:--menu-item-highlight-anchor]\", \"supports-[top:anchor(top)]:before:absolute\", \"supports-[top:anchor(top)]:before:[position-anchor:--menu-item-highlight-anchor]\", \"supports-[top:anchor(top)]:before:[inset:anchor(inside)]\", \"supports-[top:anchor(top)]:before:[overflow-anchor:none]\", \"supports-[top:anchor(top)]:before:pointer-events-none\", \"supports-[top:anchor(top)]:before:bg-(--accent-background-color)\", \"supports-[top:anchor(top)]:before:rounded-(--menu-item-border-radius)\", \"supports-[top:anchor(top)]:before:transition-[inset]\", \"supports-[top:anchor(top)]:before:duration-100\", \"supports-[top:anchor(top)]:before:ease-in-out\", \"supports-[top:anchor(top)]:has-data-[highlighted=]:before:duration-0\");\nconst menuHostShell = cn(popup.popover, surface, menuTokens, \"min-w-max max-w-(--media-popover-available-width,none) max-h-[min(var(--media-popover-available-height,var(--menu-max-height)),var(--menu-max-height))]\", \"box-border rounded-(--menu-border-radius) p-(--menu-padding) overscroll-none\");\nconst menu = {\n\t/** Standalone menu popover host (audio playback rate, sandbox demos). */\n\troot: cn(menuHostShell, \"overflow-auto!\"),\n\t/** Settings menu host with nested submenu navigation. */\n\tsettings: cn(menuHostShell, \"[--popup-transition:var(--popup-base-transition),width_var(--popup-transition-timing-function)_var(--menu-transition-duration),height_var(--popup-transition-timing-function)_var(--menu-transition-duration)]\", \"data-starting-style:[--popup-transition:var(--popup-base-transition)]\", \"data-ending-style:[--popup-transition:var(--popup-base-transition)]\", \"min-w-48! w-(--media-menu-width) h-(--media-menu-height)\", \"[&>:not([data-submenu])]:translate-none [&>:not([data-submenu])]:transition-[translate,filter]\", \"[&>:not([data-submenu])]:duration-(--menu-transition-duration) [&>:not([data-submenu])]:ease-out\", \"[&[data-submenu-expanded=true]>:not([data-submenu])]:-translate-x-full\", \"[&[data-submenu-expanded=true]>:not([data-submenu])]:blur\", \"[&[data-submenu-expanded]>:not([data-submenu])]:before:hidden\", \"overflow-hidden!\"),\n\tgroup,\n\titem: cn(itemBase, \"justify-between tabular-nums text-inherit\", \"supports-[top:anchor(top)]:data-highlighted:[anchor-name:--menu-item-highlight-anchor]\", \"supports-[top:anchor(top)]:data-highlighted:bg-transparent\", \"data-[availability=unavailable]:hidden data-[availability=unsupported]:hidden\", \"aria-disabled:pointer-events-none aria-disabled:cursor-not-allowed aria-disabled:opacity-50\"),\n\tseparator: \"my-1 border-b border-[oklch(0_0_0/0.1)] shadow-[0_1px_0_0_oklch(1_0_0/0.075)]\",\n\ttier: \"pl-0.5 pt-px text-(length:--font-size-tiny) font-semibold leading-none text-current/70\",\n\tindicator: \"ml-auto -mr-1 shrink-0 opacity-0 group-aria-checked/menu-item:opacity-100\",\n\ticon: \"shrink-0 text-current/65 drop-shadow-[0_1px_0_var(--shadow-current-color)] group-hover/menu-item:text-inherit group-data-highlighted/menu-item:text-inherit\",\n\t/** Nested submenu panel. */\n\tsubmenuPanel,\n\tback: cn(itemBase, \"mb-0.5 w-full\"),\n\thint: \"ml-auto inline-flex min-w-0 items-center gap-1 pl-2 text-current/65\",\n\thintLabel: \"max-w-24 overflow-hidden text-ellipsis whitespace-nowrap\",\n\tchevron: \"size-3.5\",\n\tsettingsGroup: \"group/settings\",\n\tsettingsTrigger: \"group\",\n\tsettingsIcon: \"transition-transform duration-150 ease-in-out group-aria-expanded:rotate-90 motion-reduce:duration-0\"\n};\n//#endregion\nexport { menu };\n\n//# sourceMappingURL=menu.js.map"],"mappings":";;;;AAIA,MAAM,eAAe,GAAG,+GAA+G,QAAQ,+FAA+F,iFAAiF,yEAAyE,2EAA2E,iDAAiD;AACpgB,MAAM,WAAW,GAAG,iIAAiI,aAAa,8DAA8D,mDAAmD,8CAA8C,0CAA0C,iDAAiD,4DAA4D,yEAAyE,+FAA+F,2EAA2E;AAC3sB,MAAM,aAAa,GAAG,sCAAsC,qCAAqC,iCAAiC,uCAAuC,qFAAqF,gDAAgD;AAC9S,MAAM,QAAQ,GAAG,yBAAyB,+CAA+C,8CAA8C,oFAAoF,4DAA4D,4DAA4D,yDAAyD,oEAAoE,yEAAyE,wDAAwD,kDAAkD,iDAAiD,sEAAsE;AAC1vB,MAAM,gBAAgB,GAAG,MAAM,SAAS,SAAS,YAAY,2JAA2J,8EAA8E;AACtS,MAAM,OAAO;;CAEZ,MAAM,GAAG,eAAe,gBAAgB;;CAExC,UAAU,GAAG,eAAe,kNAAkN,yEAAyE,uEAAuE,4DAA4D,kGAAkG,oGAAoG,0EAA0E,6DAA6D,iEAAiE,kBAAkB;CAC11B;CACA,MAAM,GAAG,UAAU,6CAA6C,0FAA0F,8DAA8D,iFAAiF,6FAA6F;CACtY,WAAW;CACX,MAAM;CACN,WAAW;CACX,MAAM;;CAEN;CACA,MAAM,GAAG,UAAU,eAAe;CAClC,MAAM;CACN,WAAW;CACX,SAAS;CACT,eAAe;CACf,iBAAiB;CACjB,cAAc;AACf"}
1
+ {"version":3,"file":"menu.js","names":[],"sources":["../../../../../../../../../skins/dist/default/default/tailwind/components/menu.js"],"sourcesContent":["import { popup } from \"./popup.js\";\nimport { surface } from \"./surface.js\";\nimport { cn } from \"@videojs/utils/style\";\n//#region src/default/tailwind/components/menu.ts\nconst submenuPanel = cn(\"[--submenu-translate:100%] [&:dir(rtl)]:[--submenu-translate:-100%]\", \"absolute inset-x-0 top-0 [max-height:inherit] overflow-auto overscroll-none p-(--menu-padding) outline-none\", \"z-10\", \"translate-none transition-[translate,filter] duration-(--menu-transition-duration) ease-out\", \"data-starting-style:pointer-events-none data-ending-style:pointer-events-none\", \"data-starting-style:overflow-hidden data-ending-style:overflow-hidden\", \"data-starting-style:[translate:var(--submenu-translate)_0] data-ending-style:[translate:var(--submenu-translate)_0]\", \"data-starting-style:blur data-ending-style:blur\");\nconst itemBase = cn(\"group/menu-item relative flex cursor-pointer select-none items-center gap-1.5 rounded-(--menu-item-border-radius) py-1.5 px-2\", \"text-start\", \"text-shadow-2xs text-shadow-(color:--shadow-current-color)\", \"outline-2 -outline-offset-2 outline-transparent\", \"transition-colors duration-100 ease-in-out\", \"supports-[top:anchor(top)]:duration-50\", \"supports-[top:anchor(top)]:hover:duration-200\", \"supports-[top:anchor(top)]:data-highlighted:duration-200\", \"hover:bg-(--accent-background-color) hover:text-(--accent-text-color)\", \"data-highlighted:bg-(--accent-background-color) data-highlighted:text-(--accent-text-color)\", \"focus-visible:outline-(--focus-ring-color) focus-visible:outline-offset-2\");\nconst menuTokens = cn(\"[--menu-transition-duration:250ms]\", \"[--menu-max-height:--spacing(56)]\", \"[--menu-padding:--spacing(1)]\", \"[--menu-border-radius:--spacing(3)]\", \"[--menu-item-border-radius:calc(var(--menu-border-radius)_-_var(--menu-padding))]\", \"motion-reduce:[--menu-transition-duration:0ms]\");\nconst group = cn(\"flex flex-col gap-0.5\", \"[anchor-scope:--menu-item-highlight-anchor]\", \"supports-[top:anchor(top)]:before:absolute\", \"supports-[top:anchor(top)]:before:[position-anchor:--menu-item-highlight-anchor]\", \"supports-[top:anchor(top)]:before:[inset:anchor(inside)]\", \"supports-[top:anchor(top)]:before:[overflow-anchor:none]\", \"supports-[top:anchor(top)]:before:pointer-events-none\", \"supports-[top:anchor(top)]:before:bg-(--accent-background-color)\", \"supports-[top:anchor(top)]:before:rounded-(--menu-item-border-radius)\", \"supports-[top:anchor(top)]:before:transition-[inset]\", \"supports-[top:anchor(top)]:before:duration-100\", \"supports-[top:anchor(top)]:before:ease-in-out\", \"supports-[top:anchor(top)]:has-data-[highlighted=]:before:duration-0\");\nconst menuHostShell = cn(popup.popover, surface, menuTokens, \"min-w-max max-w-(--media-popover-available-width,none) max-h-[min(var(--media-popover-available-height,var(--menu-max-height)),var(--menu-max-height))]\", \"box-border rounded-(--menu-border-radius) p-(--menu-padding) overscroll-none\");\nconst menu = {\n\t/** Standalone menu popover host (audio playback rate, sandbox demos). */\n\troot: cn(menuHostShell, \"overflow-auto!\"),\n\t/** Settings menu host with nested submenu navigation. */\n\tsettings: cn(menuHostShell, \"[--popup-transition:var(--popup-base-transition),width_var(--popup-transition-timing-function)_var(--menu-transition-duration),height_var(--popup-transition-timing-function)_var(--menu-transition-duration)]\", \"data-starting-style:[--popup-transition:var(--popup-base-transition)]\", \"data-ending-style:[--popup-transition:var(--popup-base-transition)]\", \"min-w-48! w-(--media-menu-width) h-(--media-menu-height)\", \"[&>:not([data-submenu])]:translate-none [&>:not([data-submenu])]:transition-[translate,filter]\", \"[&>:not([data-submenu])]:duration-(--menu-transition-duration) [&>:not([data-submenu])]:ease-out\", \"[--submenu-parent-translate:-100%] [&:dir(rtl)]:[--submenu-parent-translate:100%]\", \"[&[data-submenu-expanded=true]>:not([data-submenu])]:[translate:var(--submenu-parent-translate)_0]\", \"[&[data-submenu-expanded=true]>:not([data-submenu])]:blur\", \"[&[data-submenu-expanded]>:not([data-submenu])]:before:hidden\", \"overflow-hidden!\"),\n\tgroup,\n\titem: cn(itemBase, \"justify-between tabular-nums text-inherit\", \"supports-[top:anchor(top)]:data-highlighted:[anchor-name:--menu-item-highlight-anchor]\", \"supports-[top:anchor(top)]:data-highlighted:bg-transparent\", \"data-[availability=unavailable]:hidden data-[availability=unsupported]:hidden\", \"aria-disabled:pointer-events-none aria-disabled:cursor-not-allowed aria-disabled:opacity-50\"),\n\tseparator: \"my-1 border-b border-[oklch(0_0_0/0.1)] shadow-[0_1px_0_0_oklch(1_0_0/0.075)]\",\n\ttier: \"ps-0.5 pt-px text-(length:--font-size-tiny) font-semibold leading-none text-current/70\",\n\tindicator: \"ms-auto -me-1 shrink-0 opacity-0 group-aria-checked/menu-item:opacity-100\",\n\ticon: \"shrink-0 text-current/65 drop-shadow-[0_1px_0_var(--shadow-current-color)] group-hover/menu-item:text-inherit group-data-highlighted/menu-item:text-inherit\",\n\t/** Nested submenu panel. */\n\tsubmenuPanel,\n\tback: cn(itemBase, \"mb-0.5 w-full\"),\n\thint: \"ms-auto inline-flex min-w-0 items-center gap-1 ps-2 text-current/65\",\n\thintLabel: \"max-w-24 overflow-hidden text-ellipsis whitespace-nowrap\",\n\tchevron: \"size-3.5 [&:dir(rtl)]:[scale:-1_1]\",\n\tbackChevron: \"[&:dir(rtl)]:[scale:1_1]\",\n\tsettingsGroup: \"group/settings\",\n\tsettingsTrigger: \"group\",\n\tsettingsIcon: \"transition-transform duration-150 ease-in-out group-aria-expanded:rotate-90 motion-reduce:duration-0\"\n};\n//#endregion\nexport { menu };\n\n//# sourceMappingURL=menu.js.map"],"mappings":";;;;AAIA,MAAM,eAAe,GAAG,uEAAuE,+GAA+G,QAAQ,+FAA+F,iFAAiF,yEAAyE,uHAAuH,iDAAiD;AACvnB,MAAM,WAAW,GAAG,iIAAiI,cAAc,8DAA8D,mDAAmD,8CAA8C,0CAA0C,iDAAiD,4DAA4D,yEAAyE,+FAA+F,2EAA2E;AAC5sB,MAAM,aAAa,GAAG,sCAAsC,qCAAqC,iCAAiC,uCAAuC,qFAAqF,gDAAgD;AAC9S,MAAM,QAAQ,GAAG,yBAAyB,+CAA+C,8CAA8C,oFAAoF,4DAA4D,4DAA4D,yDAAyD,oEAAoE,yEAAyE,wDAAwD,kDAAkD,iDAAiD,sEAAsE;AAC1vB,MAAM,gBAAgB,GAAG,MAAM,SAAS,SAAS,YAAY,2JAA2J,8EAA8E;AACtS,MAAM,OAAO;;CAEZ,MAAM,GAAG,eAAe,gBAAgB;;CAExC,UAAU,GAAG,eAAe,kNAAkN,yEAAyE,uEAAuE,4DAA4D,kGAAkG,oGAAoG,qFAAqF,sGAAsG,6DAA6D,iEAAiE,kBAAkB;CAC38B;CACA,MAAM,GAAG,UAAU,6CAA6C,0FAA0F,8DAA8D,iFAAiF,6FAA6F;CACtY,WAAW;CACX,MAAM;CACN,WAAW;CACX,MAAM;;CAEN;CACA,MAAM,GAAG,UAAU,eAAe;CAClC,MAAM;CACN,WAAW;CACX,SAAS;CACT,aAAa;CACb,eAAe;CACf,iBAAiB;CACjB,cAAc;AACf"}
@@ -1,6 +1,6 @@
1
1
  //#region ../skins/dist/default/default/tailwind/components/time.js
2
2
  const time = {
3
- group: "@container/media-time flex items-center flex-1 gap-2.5 @max-[16rem]/media-time:[&>*:last-child]:hidden",
3
+ group: "@container/media-time flex items-center flex-1 gap-2.5 [&:dir(rtl)]:flex-row-reverse @max-[16rem]/media-time:[&>*:last-child]:hidden",
4
4
  current: "tabular-nums",
5
5
  duration: "tabular-nums cursor-pointer rounded-[--spacing(1)] outline-2 outline-transparent -outline-offset-2 transition-[outline-color,outline-offset] duration-100 ease-out focus-visible:outline-(--focus-ring-color) focus-visible:outline-offset-2"
6
6
  };
@@ -1 +1 @@
1
- {"version":3,"file":"time.js","names":[],"sources":["../../../../../../../../../skins/dist/default/default/tailwind/components/time.js"],"sourcesContent":["//#region src/default/tailwind/components/time.ts\nconst time = {\n\tgroup: \"@container/media-time flex items-center flex-1 gap-2.5 @max-[16rem]/media-time:[&>*:last-child]:hidden\",\n\tcurrent: \"tabular-nums\",\n\tduration: \"tabular-nums cursor-pointer rounded-[--spacing(1)] outline-2 outline-transparent -outline-offset-2 transition-[outline-color,outline-offset] duration-100 ease-out focus-visible:outline-(--focus-ring-color) focus-visible:outline-offset-2\"\n};\n//#endregion\nexport { time };\n\n//# sourceMappingURL=time.js.map"],"mappings":";AACA,MAAM,OAAO;CACZ,OAAO;CACP,SAAS;CACT,UAAU;AACX"}
1
+ {"version":3,"file":"time.js","names":[],"sources":["../../../../../../../../../skins/dist/default/default/tailwind/components/time.js"],"sourcesContent":["//#region src/default/tailwind/components/time.ts\nconst time = {\n\tgroup: \"@container/media-time flex items-center flex-1 gap-2.5 [&:dir(rtl)]:flex-row-reverse @max-[16rem]/media-time:[&>*:last-child]:hidden\",\n\tcurrent: \"tabular-nums\",\n\tduration: \"tabular-nums cursor-pointer rounded-[--spacing(1)] outline-2 outline-transparent -outline-offset-2 transition-[outline-color,outline-offset] duration-100 ease-out focus-visible:outline-(--focus-ring-color) focus-visible:outline-offset-2\"\n};\n//#endregion\nexport { time };\n\n//# sourceMappingURL=time.js.map"],"mappings":";AACA,MAAM,OAAO;CACZ,OAAO;CACP,SAAS;CACT,UAAU;AACX"}
@@ -1,5 +1,5 @@
1
1
  //#region ../skins/dist/default/minimal/tailwind/components/button-group.js
2
- const buttonGroup = "flex items-center gap-px";
2
+ const buttonGroup = "flex items-center gap-px [&:dir(rtl)]:flex-row-reverse";
3
3
  //#endregion
4
4
  export { buttonGroup };
5
5
 
@@ -1 +1 @@
1
- {"version":3,"file":"button-group.js","names":[],"sources":["../../../../../../../../../skins/dist/default/minimal/tailwind/components/button-group.js"],"sourcesContent":["//#region src/minimal/tailwind/components/button-group.ts\nconst buttonGroup = \"flex items-center gap-px\";\n//#endregion\nexport { buttonGroup };\n\n//# sourceMappingURL=button-group.js.map"],"mappings":";AACA,MAAM,cAAc"}
1
+ {"version":3,"file":"button-group.js","names":[],"sources":["../../../../../../../../../skins/dist/default/minimal/tailwind/components/button-group.js"],"sourcesContent":["//#region src/minimal/tailwind/components/button-group.ts\nconst buttonGroup = \"flex items-center gap-px [&:dir(rtl)]:flex-row-reverse\";\n//#endregion\nexport { buttonGroup };\n\n//# sourceMappingURL=button-group.js.map"],"mappings":";AACA,MAAM,cAAc"}
@@ -1,6 +1,6 @@
1
1
  import { cn } from "@videojs/utils/style";
2
2
  //#region ../skins/dist/default/minimal/tailwind/components/controls.js
3
- const controls = cn("peer/controls", "@container/media-controls", "[--media-popover-side-offset:calc(var(--spacing)*(var(--base-side-offset,0)+var(--controls-padding,1)))]", "[--media-tooltip-side-offset:var(--media-popover-side-offset)]", "[--media-popover-boundary-offset:calc(var(--spacing)*(var(--base-boundary-offset,0)+var(--controls-padding,1)))]", "[--media-tooltip-boundary-offset:var(--media-popover-boundary-offset)]", "[padding:calc(var(--spacing)*var(--controls-padding,1))] flex items-center", "bg-(--controls-background-color)", "[backdrop-filter:var(--controls-backdrop-filter)]", "text-shadow-2xs text-shadow-(color:--shadow-current-color)");
3
+ const controls = cn("peer/controls", "@container/media-controls", "[--media-popover-side-offset:calc(var(--spacing)*(var(--base-side-offset,0)+var(--controls-padding,1)))]", "[--media-tooltip-side-offset:var(--media-popover-side-offset)]", "[--media-popover-boundary-offset:calc(var(--spacing)*(var(--base-boundary-offset,0)+var(--controls-padding,1)))]", "[--media-tooltip-boundary-offset:var(--media-popover-boundary-offset)]", "[padding:calc(var(--spacing)*var(--controls-padding,1))] flex items-center [&:dir(rtl)]:flex-row-reverse", "bg-(--controls-background-color)", "[backdrop-filter:var(--controls-backdrop-filter)]", "text-shadow-2xs text-shadow-(color:--shadow-current-color)");
4
4
  //#endregion
5
5
  export { controls };
6
6
 
@@ -1 +1 @@
1
- {"version":3,"file":"controls.js","names":[],"sources":["../../../../../../../../../skins/dist/default/minimal/tailwind/components/controls.js"],"sourcesContent":["import { cn } from \"@videojs/utils/style\";\n//#region src/minimal/tailwind/components/controls.ts\nconst controls = cn(\"peer/controls\", \"@container/media-controls\", \"[--media-popover-side-offset:calc(var(--spacing)*(var(--base-side-offset,0)+var(--controls-padding,1)))]\", \"[--media-tooltip-side-offset:var(--media-popover-side-offset)]\", \"[--media-popover-boundary-offset:calc(var(--spacing)*(var(--base-boundary-offset,0)+var(--controls-padding,1)))]\", \"[--media-tooltip-boundary-offset:var(--media-popover-boundary-offset)]\", \"[padding:calc(var(--spacing)*var(--controls-padding,1))] flex items-center\", \"bg-(--controls-background-color)\", \"[backdrop-filter:var(--controls-backdrop-filter)]\", \"text-shadow-2xs text-shadow-(color:--shadow-current-color)\");\n//#endregion\nexport { controls };\n\n//# sourceMappingURL=controls.js.map"],"mappings":";;AAEA,MAAM,WAAW,GAAG,iBAAiB,6BAA6B,4GAA4G,kEAAkE,oHAAoH,0EAA0E,8EAA8E,oCAAoC,qDAAqD,4DAA4D"}
1
+ {"version":3,"file":"controls.js","names":[],"sources":["../../../../../../../../../skins/dist/default/minimal/tailwind/components/controls.js"],"sourcesContent":["import { cn } from \"@videojs/utils/style\";\n//#region src/minimal/tailwind/components/controls.ts\nconst controls = cn(\"peer/controls\", \"@container/media-controls\", \"[--media-popover-side-offset:calc(var(--spacing)*(var(--base-side-offset,0)+var(--controls-padding,1)))]\", \"[--media-tooltip-side-offset:var(--media-popover-side-offset)]\", \"[--media-popover-boundary-offset:calc(var(--spacing)*(var(--base-boundary-offset,0)+var(--controls-padding,1)))]\", \"[--media-tooltip-boundary-offset:var(--media-popover-boundary-offset)]\", \"[padding:calc(var(--spacing)*var(--controls-padding,1))] flex items-center [&:dir(rtl)]:flex-row-reverse\", \"bg-(--controls-background-color)\", \"[backdrop-filter:var(--controls-backdrop-filter)]\", \"text-shadow-2xs text-shadow-(color:--shadow-current-color)\");\n//#endregion\nexport { controls };\n\n//# sourceMappingURL=controls.js.map"],"mappings":";;AAEA,MAAM,WAAW,GAAG,iBAAiB,6BAA6B,4GAA4G,kEAAkE,oHAAoH,0EAA0E,4GAA4G,oCAAoC,qDAAqD,4DAA4D"}
@@ -1,8 +1,8 @@
1
1
  import { popup } from "./popup.js";
2
2
  import { cn } from "@videojs/utils/style";
3
3
  //#region ../skins/dist/default/minimal/tailwind/components/menu.js
4
- const submenuPanel = cn("absolute inset-x-0 top-0 [max-height:inherit] overflow-auto overscroll-none p-(--menu-padding) outline-none", "z-10", "translate-none transition-[translate,filter] duration-(--menu-transition-duration) ease-out", "data-starting-style:pointer-events-none data-ending-style:pointer-events-none", "data-starting-style:overflow-hidden data-ending-style:overflow-hidden", "data-starting-style:translate-x-full data-ending-style:translate-x-full", "data-starting-style:blur data-ending-style:blur");
5
- const itemBase = cn("group/menu-item relative flex cursor-pointer select-none items-center gap-1.5 rounded-(--menu-item-border-radius) py-1.5 px-2", "text-left", "text-shadow-2xs text-shadow-(color:--shadow-current-color)", "outline-2 -outline-offset-2 outline-transparent", "transition-colors duration-100 ease-in-out", "supports-[top:anchor(top)]:duration-50", "supports-[top:anchor(top)]:hover:duration-200", "supports-[top:anchor(top)]:data-highlighted:duration-200", "hover:bg-(--accent-background-color) hover:text-(--accent-text-color)", "data-highlighted:bg-(--accent-background-color) data-highlighted:text-(--accent-text-color)", "focus-visible:outline-(--focus-ring-color) focus-visible:outline-offset-2");
4
+ const submenuPanel = cn("[--submenu-translate:100%] [&:dir(rtl)]:[--submenu-translate:-100%]", "absolute inset-x-0 top-0 [max-height:inherit] overflow-auto overscroll-none p-(--menu-padding) outline-none", "z-10", "translate-none transition-[translate,filter] duration-(--menu-transition-duration) ease-out", "data-starting-style:pointer-events-none data-ending-style:pointer-events-none", "data-starting-style:overflow-hidden data-ending-style:overflow-hidden", "data-starting-style:[translate:var(--submenu-translate)_0] data-ending-style:[translate:var(--submenu-translate)_0]", "data-starting-style:blur data-ending-style:blur");
5
+ const itemBase = cn("group/menu-item relative flex cursor-pointer select-none items-center gap-1.5 rounded-(--menu-item-border-radius) py-1.5 px-2", "text-start", "text-shadow-2xs text-shadow-(color:--shadow-current-color)", "outline-2 -outline-offset-2 outline-transparent", "transition-colors duration-100 ease-in-out", "supports-[top:anchor(top)]:duration-50", "supports-[top:anchor(top)]:hover:duration-200", "supports-[top:anchor(top)]:data-highlighted:duration-200", "hover:bg-(--accent-background-color) hover:text-(--accent-text-color)", "data-highlighted:bg-(--accent-background-color) data-highlighted:text-(--accent-text-color)", "focus-visible:outline-(--focus-ring-color) focus-visible:outline-offset-2");
6
6
  const menuTokens = cn("[--menu-transition-duration:250ms]", "[--menu-max-height:--spacing(56)]", "[--menu-padding:--spacing(1)]", "[--menu-border-radius:--spacing(2.5)]", "[--menu-item-border-radius:calc(var(--menu-border-radius)_-_var(--menu-padding))]", "motion-reduce:[--menu-transition-duration:0ms]");
7
7
  const group = cn("flex flex-col gap-0.5", "[anchor-scope:--menu-item-highlight-anchor]", "supports-[top:anchor(top)]:before:absolute", "supports-[top:anchor(top)]:before:[position-anchor:--menu-item-highlight-anchor]", "supports-[top:anchor(top)]:before:[inset:anchor(inside)]", "supports-[top:anchor(top)]:before:[overflow-anchor:none]", "supports-[top:anchor(top)]:before:pointer-events-none", "supports-[top:anchor(top)]:before:bg-(--accent-background-color)", "supports-[top:anchor(top)]:before:rounded-(--menu-item-border-radius)", "supports-[top:anchor(top)]:before:transition-[inset]", "supports-[top:anchor(top)]:before:duration-100", "supports-[top:anchor(top)]:before:ease-in-out", "supports-[top:anchor(top)]:has-data-[highlighted=]:before:duration-0");
8
8
  const menuHostShell = cn(popup.popover, menuTokens, "min-w-max max-w-(--media-popover-available-width,none) max-h-[min(var(--media-popover-available-height,var(--menu-max-height)),var(--menu-max-height))]", "bg-(--popover-background-color) [backdrop-filter:var(--popover-backdrop-filter)]", "shadow-[0_0_0_1px_var(--popover-border-color),0_4px_6px_-1px_oklch(0_0_0/0.1),0_2px_4px_-2px_oklch(0_0_0/0.1)]", "box-border rounded-(--menu-border-radius) p-(--menu-padding) overscroll-none");
@@ -10,19 +10,20 @@ const menu = {
10
10
  /** Standalone menu popover host (audio playback rate, sandbox demos). */
11
11
  root: cn(menuHostShell, "overflow-auto!"),
12
12
  /** Settings menu host with nested submenu navigation. */
13
- settings: cn(menuHostShell, "[--popup-transition:var(--popup-base-transition),width_var(--popup-transition-timing-function)_var(--menu-transition-duration),height_var(--popup-transition-timing-function)_var(--menu-transition-duration)]", "data-starting-style:[--popup-transition:var(--popup-base-transition)]", "data-ending-style:[--popup-transition:var(--popup-base-transition)]", "min-w-48! w-(--media-menu-width) h-(--media-menu-height)", "[&>:not([data-submenu])]:translate-none [&>:not([data-submenu])]:transition-[translate,filter]", "[&>:not([data-submenu])]:duration-(--menu-transition-duration) [&>:not([data-submenu])]:ease-out", "[&[data-submenu-expanded=true]>:not([data-submenu])]:-translate-x-full", "[&[data-submenu-expanded=true]>:not([data-submenu])]:blur", "[&[data-submenu-expanded]>:not([data-submenu])]:before:hidden", "overflow-hidden!"),
13
+ settings: cn(menuHostShell, "[--popup-transition:var(--popup-base-transition),width_var(--popup-transition-timing-function)_var(--menu-transition-duration),height_var(--popup-transition-timing-function)_var(--menu-transition-duration)]", "data-starting-style:[--popup-transition:var(--popup-base-transition)]", "data-ending-style:[--popup-transition:var(--popup-base-transition)]", "min-w-48! w-(--media-menu-width) h-(--media-menu-height)", "[&>:not([data-submenu])]:translate-none [&>:not([data-submenu])]:transition-[translate,filter]", "[&>:not([data-submenu])]:duration-(--menu-transition-duration) [&>:not([data-submenu])]:ease-out", "[--submenu-parent-translate:-100%] [&:dir(rtl)]:[--submenu-parent-translate:100%]", "[&[data-submenu-expanded=true]>:not([data-submenu])]:[translate:var(--submenu-parent-translate)_0]", "[&[data-submenu-expanded=true]>:not([data-submenu])]:blur", "[&[data-submenu-expanded]>:not([data-submenu])]:before:hidden", "overflow-hidden!"),
14
14
  group,
15
15
  item: cn(itemBase, "justify-between tabular-nums text-inherit", "supports-[top:anchor(top)]:data-highlighted:[anchor-name:--menu-item-highlight-anchor]", "supports-[top:anchor(top)]:data-highlighted:bg-transparent", "data-[availability=unavailable]:hidden data-[availability=unsupported]:hidden", "aria-disabled:pointer-events-none aria-disabled:cursor-not-allowed aria-disabled:opacity-50"),
16
16
  separator: "my-1 border-b border-[oklch(1_0_0/0.1)]",
17
- tier: "pl-0.5 pt-px text-(length:--font-size-tiny) font-semibold leading-none text-current/70",
18
- indicator: "ml-auto -mr-1 shrink-0 opacity-0 group-aria-checked/menu-item:opacity-100",
17
+ tier: "ps-0.5 pt-px text-(length:--font-size-tiny) font-semibold leading-none text-current/70",
18
+ indicator: "ms-auto -me-1 shrink-0 opacity-0 group-aria-checked/menu-item:opacity-100",
19
19
  icon: "shrink-0 text-current/50 drop-shadow-[0_1px_0_var(--shadow-current-color)] group-hover/menu-item:text-inherit group-data-highlighted/menu-item:text-inherit",
20
20
  /** Nested submenu panel. */
21
21
  submenuPanel,
22
22
  back: cn(itemBase, "mb-0.5 w-full"),
23
- hint: "ml-auto inline-flex min-w-0 items-center gap-1 pl-2 text-current/65",
23
+ hint: "ms-auto inline-flex min-w-0 items-center gap-1 ps-2 text-current/65",
24
24
  hintLabel: "max-w-24 overflow-hidden text-ellipsis whitespace-nowrap",
25
- chevron: "size-3.5",
25
+ chevron: "size-3.5 [&:dir(rtl)]:[scale:-1_1]",
26
+ backChevron: "[&:dir(rtl)]:[scale:1_1]",
26
27
  settingsGroup: "group/settings",
27
28
  settingsTrigger: "group",
28
29
  settingsIcon: "transition-transform duration-150 ease-in-out group-aria-expanded:rotate-90 motion-reduce:duration-0"
@@ -1 +1 @@
1
- {"version":3,"file":"menu.js","names":[],"sources":["../../../../../../../../../skins/dist/default/minimal/tailwind/components/menu.js"],"sourcesContent":["import { popup } from \"./popup.js\";\nimport { cn } from \"@videojs/utils/style\";\n//#region src/minimal/tailwind/components/menu.ts\nconst submenuPanel = cn(\"absolute inset-x-0 top-0 [max-height:inherit] overflow-auto overscroll-none p-(--menu-padding) outline-none\", \"z-10\", \"translate-none transition-[translate,filter] duration-(--menu-transition-duration) ease-out\", \"data-starting-style:pointer-events-none data-ending-style:pointer-events-none\", \"data-starting-style:overflow-hidden data-ending-style:overflow-hidden\", \"data-starting-style:translate-x-full data-ending-style:translate-x-full\", \"data-starting-style:blur data-ending-style:blur\");\nconst itemBase = cn(\"group/menu-item relative flex cursor-pointer select-none items-center gap-1.5 rounded-(--menu-item-border-radius) py-1.5 px-2\", \"text-left\", \"text-shadow-2xs text-shadow-(color:--shadow-current-color)\", \"outline-2 -outline-offset-2 outline-transparent\", \"transition-colors duration-100 ease-in-out\", \"supports-[top:anchor(top)]:duration-50\", \"supports-[top:anchor(top)]:hover:duration-200\", \"supports-[top:anchor(top)]:data-highlighted:duration-200\", \"hover:bg-(--accent-background-color) hover:text-(--accent-text-color)\", \"data-highlighted:bg-(--accent-background-color) data-highlighted:text-(--accent-text-color)\", \"focus-visible:outline-(--focus-ring-color) focus-visible:outline-offset-2\");\nconst menuTokens = cn(\"[--menu-transition-duration:250ms]\", \"[--menu-max-height:--spacing(56)]\", \"[--menu-padding:--spacing(1)]\", \"[--menu-border-radius:--spacing(2.5)]\", \"[--menu-item-border-radius:calc(var(--menu-border-radius)_-_var(--menu-padding))]\", \"motion-reduce:[--menu-transition-duration:0ms]\");\nconst group = cn(\"flex flex-col gap-0.5\", \"[anchor-scope:--menu-item-highlight-anchor]\", \"supports-[top:anchor(top)]:before:absolute\", \"supports-[top:anchor(top)]:before:[position-anchor:--menu-item-highlight-anchor]\", \"supports-[top:anchor(top)]:before:[inset:anchor(inside)]\", \"supports-[top:anchor(top)]:before:[overflow-anchor:none]\", \"supports-[top:anchor(top)]:before:pointer-events-none\", \"supports-[top:anchor(top)]:before:bg-(--accent-background-color)\", \"supports-[top:anchor(top)]:before:rounded-(--menu-item-border-radius)\", \"supports-[top:anchor(top)]:before:transition-[inset]\", \"supports-[top:anchor(top)]:before:duration-100\", \"supports-[top:anchor(top)]:before:ease-in-out\", \"supports-[top:anchor(top)]:has-data-[highlighted=]:before:duration-0\");\nconst menuHostShell = cn(popup.popover, menuTokens, \"min-w-max max-w-(--media-popover-available-width,none) max-h-[min(var(--media-popover-available-height,var(--menu-max-height)),var(--menu-max-height))]\", \"bg-(--popover-background-color) [backdrop-filter:var(--popover-backdrop-filter)]\", \"shadow-[0_0_0_1px_var(--popover-border-color),0_4px_6px_-1px_oklch(0_0_0/0.1),0_2px_4px_-2px_oklch(0_0_0/0.1)]\", \"box-border rounded-(--menu-border-radius) p-(--menu-padding) overscroll-none\");\nconst menu = {\n\t/** Standalone menu popover host (audio playback rate, sandbox demos). */\n\troot: cn(menuHostShell, \"overflow-auto!\"),\n\t/** Settings menu host with nested submenu navigation. */\n\tsettings: cn(menuHostShell, \"[--popup-transition:var(--popup-base-transition),width_var(--popup-transition-timing-function)_var(--menu-transition-duration),height_var(--popup-transition-timing-function)_var(--menu-transition-duration)]\", \"data-starting-style:[--popup-transition:var(--popup-base-transition)]\", \"data-ending-style:[--popup-transition:var(--popup-base-transition)]\", \"min-w-48! w-(--media-menu-width) h-(--media-menu-height)\", \"[&>:not([data-submenu])]:translate-none [&>:not([data-submenu])]:transition-[translate,filter]\", \"[&>:not([data-submenu])]:duration-(--menu-transition-duration) [&>:not([data-submenu])]:ease-out\", \"[&[data-submenu-expanded=true]>:not([data-submenu])]:-translate-x-full\", \"[&[data-submenu-expanded=true]>:not([data-submenu])]:blur\", \"[&[data-submenu-expanded]>:not([data-submenu])]:before:hidden\", \"overflow-hidden!\"),\n\tgroup,\n\titem: cn(itemBase, \"justify-between tabular-nums text-inherit\", \"supports-[top:anchor(top)]:data-highlighted:[anchor-name:--menu-item-highlight-anchor]\", \"supports-[top:anchor(top)]:data-highlighted:bg-transparent\", \"data-[availability=unavailable]:hidden data-[availability=unsupported]:hidden\", \"aria-disabled:pointer-events-none aria-disabled:cursor-not-allowed aria-disabled:opacity-50\"),\n\tseparator: \"my-1 border-b border-[oklch(1_0_0/0.1)]\",\n\ttier: \"pl-0.5 pt-px text-(length:--font-size-tiny) font-semibold leading-none text-current/70\",\n\tindicator: \"ml-auto -mr-1 shrink-0 opacity-0 group-aria-checked/menu-item:opacity-100\",\n\ticon: \"shrink-0 text-current/50 drop-shadow-[0_1px_0_var(--shadow-current-color)] group-hover/menu-item:text-inherit group-data-highlighted/menu-item:text-inherit\",\n\t/** Nested submenu panel. */\n\tsubmenuPanel,\n\tback: cn(itemBase, \"mb-0.5 w-full\"),\n\thint: \"ml-auto inline-flex min-w-0 items-center gap-1 pl-2 text-current/65\",\n\thintLabel: \"max-w-24 overflow-hidden text-ellipsis whitespace-nowrap\",\n\tchevron: \"size-3.5\",\n\tsettingsGroup: \"group/settings\",\n\tsettingsTrigger: \"group\",\n\tsettingsIcon: \"transition-transform duration-150 ease-in-out group-aria-expanded:rotate-90 motion-reduce:duration-0\"\n};\n//#endregion\nexport { menu };\n\n//# sourceMappingURL=menu.js.map"],"mappings":";;;AAGA,MAAM,eAAe,GAAG,+GAA+G,QAAQ,+FAA+F,iFAAiF,yEAAyE,2EAA2E,iDAAiD;AACpgB,MAAM,WAAW,GAAG,iIAAiI,aAAa,8DAA8D,mDAAmD,8CAA8C,0CAA0C,iDAAiD,4DAA4D,yEAAyE,+FAA+F,2EAA2E;AAC3sB,MAAM,aAAa,GAAG,sCAAsC,qCAAqC,iCAAiC,yCAAyC,qFAAqF,gDAAgD;AAChT,MAAM,QAAQ,GAAG,yBAAyB,+CAA+C,8CAA8C,oFAAoF,4DAA4D,4DAA4D,yDAAyD,oEAAoE,yEAAyE,wDAAwD,kDAAkD,iDAAiD,sEAAsE;AAC1vB,MAAM,gBAAgB,GAAG,MAAM,SAAS,YAAY,2JAA2J,oFAAoF,kHAAkH,8EAA8E;AACne,MAAM,OAAO;;CAEZ,MAAM,GAAG,eAAe,gBAAgB;;CAExC,UAAU,GAAG,eAAe,kNAAkN,yEAAyE,uEAAuE,4DAA4D,kGAAkG,oGAAoG,0EAA0E,6DAA6D,iEAAiE,kBAAkB;CAC11B;CACA,MAAM,GAAG,UAAU,6CAA6C,0FAA0F,8DAA8D,iFAAiF,6FAA6F;CACtY,WAAW;CACX,MAAM;CACN,WAAW;CACX,MAAM;;CAEN;CACA,MAAM,GAAG,UAAU,eAAe;CAClC,MAAM;CACN,WAAW;CACX,SAAS;CACT,eAAe;CACf,iBAAiB;CACjB,cAAc;AACf"}
1
+ {"version":3,"file":"menu.js","names":[],"sources":["../../../../../../../../../skins/dist/default/minimal/tailwind/components/menu.js"],"sourcesContent":["import { popup } from \"./popup.js\";\nimport { cn } from \"@videojs/utils/style\";\n//#region src/minimal/tailwind/components/menu.ts\nconst submenuPanel = cn(\"[--submenu-translate:100%] [&:dir(rtl)]:[--submenu-translate:-100%]\", \"absolute inset-x-0 top-0 [max-height:inherit] overflow-auto overscroll-none p-(--menu-padding) outline-none\", \"z-10\", \"translate-none transition-[translate,filter] duration-(--menu-transition-duration) ease-out\", \"data-starting-style:pointer-events-none data-ending-style:pointer-events-none\", \"data-starting-style:overflow-hidden data-ending-style:overflow-hidden\", \"data-starting-style:[translate:var(--submenu-translate)_0] data-ending-style:[translate:var(--submenu-translate)_0]\", \"data-starting-style:blur data-ending-style:blur\");\nconst itemBase = cn(\"group/menu-item relative flex cursor-pointer select-none items-center gap-1.5 rounded-(--menu-item-border-radius) py-1.5 px-2\", \"text-start\", \"text-shadow-2xs text-shadow-(color:--shadow-current-color)\", \"outline-2 -outline-offset-2 outline-transparent\", \"transition-colors duration-100 ease-in-out\", \"supports-[top:anchor(top)]:duration-50\", \"supports-[top:anchor(top)]:hover:duration-200\", \"supports-[top:anchor(top)]:data-highlighted:duration-200\", \"hover:bg-(--accent-background-color) hover:text-(--accent-text-color)\", \"data-highlighted:bg-(--accent-background-color) data-highlighted:text-(--accent-text-color)\", \"focus-visible:outline-(--focus-ring-color) focus-visible:outline-offset-2\");\nconst menuTokens = cn(\"[--menu-transition-duration:250ms]\", \"[--menu-max-height:--spacing(56)]\", \"[--menu-padding:--spacing(1)]\", \"[--menu-border-radius:--spacing(2.5)]\", \"[--menu-item-border-radius:calc(var(--menu-border-radius)_-_var(--menu-padding))]\", \"motion-reduce:[--menu-transition-duration:0ms]\");\nconst group = cn(\"flex flex-col gap-0.5\", \"[anchor-scope:--menu-item-highlight-anchor]\", \"supports-[top:anchor(top)]:before:absolute\", \"supports-[top:anchor(top)]:before:[position-anchor:--menu-item-highlight-anchor]\", \"supports-[top:anchor(top)]:before:[inset:anchor(inside)]\", \"supports-[top:anchor(top)]:before:[overflow-anchor:none]\", \"supports-[top:anchor(top)]:before:pointer-events-none\", \"supports-[top:anchor(top)]:before:bg-(--accent-background-color)\", \"supports-[top:anchor(top)]:before:rounded-(--menu-item-border-radius)\", \"supports-[top:anchor(top)]:before:transition-[inset]\", \"supports-[top:anchor(top)]:before:duration-100\", \"supports-[top:anchor(top)]:before:ease-in-out\", \"supports-[top:anchor(top)]:has-data-[highlighted=]:before:duration-0\");\nconst menuHostShell = cn(popup.popover, menuTokens, \"min-w-max max-w-(--media-popover-available-width,none) max-h-[min(var(--media-popover-available-height,var(--menu-max-height)),var(--menu-max-height))]\", \"bg-(--popover-background-color) [backdrop-filter:var(--popover-backdrop-filter)]\", \"shadow-[0_0_0_1px_var(--popover-border-color),0_4px_6px_-1px_oklch(0_0_0/0.1),0_2px_4px_-2px_oklch(0_0_0/0.1)]\", \"box-border rounded-(--menu-border-radius) p-(--menu-padding) overscroll-none\");\nconst menu = {\n\t/** Standalone menu popover host (audio playback rate, sandbox demos). */\n\troot: cn(menuHostShell, \"overflow-auto!\"),\n\t/** Settings menu host with nested submenu navigation. */\n\tsettings: cn(menuHostShell, \"[--popup-transition:var(--popup-base-transition),width_var(--popup-transition-timing-function)_var(--menu-transition-duration),height_var(--popup-transition-timing-function)_var(--menu-transition-duration)]\", \"data-starting-style:[--popup-transition:var(--popup-base-transition)]\", \"data-ending-style:[--popup-transition:var(--popup-base-transition)]\", \"min-w-48! w-(--media-menu-width) h-(--media-menu-height)\", \"[&>:not([data-submenu])]:translate-none [&>:not([data-submenu])]:transition-[translate,filter]\", \"[&>:not([data-submenu])]:duration-(--menu-transition-duration) [&>:not([data-submenu])]:ease-out\", \"[--submenu-parent-translate:-100%] [&:dir(rtl)]:[--submenu-parent-translate:100%]\", \"[&[data-submenu-expanded=true]>:not([data-submenu])]:[translate:var(--submenu-parent-translate)_0]\", \"[&[data-submenu-expanded=true]>:not([data-submenu])]:blur\", \"[&[data-submenu-expanded]>:not([data-submenu])]:before:hidden\", \"overflow-hidden!\"),\n\tgroup,\n\titem: cn(itemBase, \"justify-between tabular-nums text-inherit\", \"supports-[top:anchor(top)]:data-highlighted:[anchor-name:--menu-item-highlight-anchor]\", \"supports-[top:anchor(top)]:data-highlighted:bg-transparent\", \"data-[availability=unavailable]:hidden data-[availability=unsupported]:hidden\", \"aria-disabled:pointer-events-none aria-disabled:cursor-not-allowed aria-disabled:opacity-50\"),\n\tseparator: \"my-1 border-b border-[oklch(1_0_0/0.1)]\",\n\ttier: \"ps-0.5 pt-px text-(length:--font-size-tiny) font-semibold leading-none text-current/70\",\n\tindicator: \"ms-auto -me-1 shrink-0 opacity-0 group-aria-checked/menu-item:opacity-100\",\n\ticon: \"shrink-0 text-current/50 drop-shadow-[0_1px_0_var(--shadow-current-color)] group-hover/menu-item:text-inherit group-data-highlighted/menu-item:text-inherit\",\n\t/** Nested submenu panel. */\n\tsubmenuPanel,\n\tback: cn(itemBase, \"mb-0.5 w-full\"),\n\thint: \"ms-auto inline-flex min-w-0 items-center gap-1 ps-2 text-current/65\",\n\thintLabel: \"max-w-24 overflow-hidden text-ellipsis whitespace-nowrap\",\n\tchevron: \"size-3.5 [&:dir(rtl)]:[scale:-1_1]\",\n\tbackChevron: \"[&:dir(rtl)]:[scale:1_1]\",\n\tsettingsGroup: \"group/settings\",\n\tsettingsTrigger: \"group\",\n\tsettingsIcon: \"transition-transform duration-150 ease-in-out group-aria-expanded:rotate-90 motion-reduce:duration-0\"\n};\n//#endregion\nexport { menu };\n\n//# sourceMappingURL=menu.js.map"],"mappings":";;;AAGA,MAAM,eAAe,GAAG,uEAAuE,+GAA+G,QAAQ,+FAA+F,iFAAiF,yEAAyE,uHAAuH,iDAAiD;AACvnB,MAAM,WAAW,GAAG,iIAAiI,cAAc,8DAA8D,mDAAmD,8CAA8C,0CAA0C,iDAAiD,4DAA4D,yEAAyE,+FAA+F,2EAA2E;AAC5sB,MAAM,aAAa,GAAG,sCAAsC,qCAAqC,iCAAiC,yCAAyC,qFAAqF,gDAAgD;AAChT,MAAM,QAAQ,GAAG,yBAAyB,+CAA+C,8CAA8C,oFAAoF,4DAA4D,4DAA4D,yDAAyD,oEAAoE,yEAAyE,wDAAwD,kDAAkD,iDAAiD,sEAAsE;AAC1vB,MAAM,gBAAgB,GAAG,MAAM,SAAS,YAAY,2JAA2J,oFAAoF,kHAAkH,8EAA8E;AACne,MAAM,OAAO;;CAEZ,MAAM,GAAG,eAAe,gBAAgB;;CAExC,UAAU,GAAG,eAAe,kNAAkN,yEAAyE,uEAAuE,4DAA4D,kGAAkG,oGAAoG,qFAAqF,sGAAsG,6DAA6D,iEAAiE,kBAAkB;CAC38B;CACA,MAAM,GAAG,UAAU,6CAA6C,0FAA0F,8DAA8D,iFAAiF,6FAA6F;CACtY,WAAW;CACX,MAAM;CACN,WAAW;CACX,MAAM;;CAEN;CACA,MAAM,GAAG,UAAU,eAAe;CAClC,MAAM;CACN,WAAW;CACX,SAAS;CACT,aAAa;CACb,eAAe;CACf,iBAAiB;CACjB,cAAc;AACf"}
@@ -1,11 +1,11 @@
1
1
  import { cn } from "@videojs/utils/style";
2
2
  //#region ../skins/dist/default/minimal/tailwind/components/time.js
3
3
  const time = {
4
- group: "flex items-center gap-1",
4
+ group: "flex items-center gap-1 [&:dir(rtl)]:flex-row-reverse",
5
5
  current: cn("hidden tabular-nums cursor-pointer rounded-[--spacing(1)] outline-2 outline-transparent -outline-offset-2", "transition-[outline-color,outline-offset] duration-100 ease-out", "supports-[corner-shape:squircle]:rounded-[--spacing(4)]", "supports-[corner-shape:squircle]:[corner-shape:squircle]", "focus-visible:outline-(--focus-ring-color) focus-visible:outline-offset-2", "@2xl/media-root:inline"),
6
6
  separator: cn("hidden", "@2xl/media-root:inline @2xl/media-root:text-current/60"),
7
7
  duration: cn("tabular-nums", "@2xl/media-root:text-current/60"),
8
- controls: cn("@container/media-time-controls flex flex-row-reverse items-center flex-1 gap-3", "@2xl/media-root:flex-row")
8
+ controls: cn("@container/media-time-controls flex flex-row-reverse items-center flex-1 gap-3 [&:dir(rtl)]:flex-row", "@2xl/media-root:flex-row @2xl/media-root:[&:dir(rtl)]:flex-row-reverse")
9
9
  };
10
10
  //#endregion
11
11
  export { time };
@@ -1 +1 @@
1
- {"version":3,"file":"time.js","names":[],"sources":["../../../../../../../../../skins/dist/default/minimal/tailwind/components/time.js"],"sourcesContent":["import { cn } from \"@videojs/utils/style\";\n//#region src/minimal/tailwind/components/time.ts\nconst time = {\n\tgroup: \"flex items-center gap-1\",\n\tcurrent: cn(\"hidden tabular-nums cursor-pointer rounded-[--spacing(1)] outline-2 outline-transparent -outline-offset-2\", \"transition-[outline-color,outline-offset] duration-100 ease-out\", \"supports-[corner-shape:squircle]:rounded-[--spacing(4)]\", \"supports-[corner-shape:squircle]:[corner-shape:squircle]\", \"focus-visible:outline-(--focus-ring-color) focus-visible:outline-offset-2\", \"@2xl/media-root:inline\"),\n\tseparator: cn(\"hidden\", \"@2xl/media-root:inline @2xl/media-root:text-current/60\"),\n\tduration: cn(\"tabular-nums\", \"@2xl/media-root:text-current/60\"),\n\tcontrols: cn(\"@container/media-time-controls flex flex-row-reverse items-center flex-1 gap-3\", \"@2xl/media-root:flex-row\")\n};\n//#endregion\nexport { time };\n\n//# sourceMappingURL=time.js.map"],"mappings":";;AAEA,MAAM,OAAO;CACZ,OAAO;CACP,SAAS,GAAG,6GAA6G,mEAAmE,2DAA2D,4DAA4D,6EAA6E,wBAAwB;CACxZ,WAAW,GAAG,UAAU,wDAAwD;CAChF,UAAU,GAAG,gBAAgB,iCAAiC;CAC9D,UAAU,GAAG,kFAAkF,0BAA0B;AAC1H"}
1
+ {"version":3,"file":"time.js","names":[],"sources":["../../../../../../../../../skins/dist/default/minimal/tailwind/components/time.js"],"sourcesContent":["import { cn } from \"@videojs/utils/style\";\n//#region src/minimal/tailwind/components/time.ts\nconst time = {\n\tgroup: \"flex items-center gap-1 [&:dir(rtl)]:flex-row-reverse\",\n\tcurrent: cn(\"hidden tabular-nums cursor-pointer rounded-[--spacing(1)] outline-2 outline-transparent -outline-offset-2\", \"transition-[outline-color,outline-offset] duration-100 ease-out\", \"supports-[corner-shape:squircle]:rounded-[--spacing(4)]\", \"supports-[corner-shape:squircle]:[corner-shape:squircle]\", \"focus-visible:outline-(--focus-ring-color) focus-visible:outline-offset-2\", \"@2xl/media-root:inline\"),\n\tseparator: cn(\"hidden\", \"@2xl/media-root:inline @2xl/media-root:text-current/60\"),\n\tduration: cn(\"tabular-nums\", \"@2xl/media-root:text-current/60\"),\n\tcontrols: cn(\"@container/media-time-controls flex flex-row-reverse items-center flex-1 gap-3 [&:dir(rtl)]:flex-row\", \"@2xl/media-root:flex-row @2xl/media-root:[&:dir(rtl)]:flex-row-reverse\")\n};\n//#endregion\nexport { time };\n\n//# sourceMappingURL=time.js.map"],"mappings":";;AAEA,MAAM,OAAO;CACZ,OAAO;CACP,SAAS,GAAG,6GAA6G,mEAAmE,2DAA2D,4DAA4D,6EAA6E,wBAAwB;CACxZ,WAAW,GAAG,UAAU,wDAAwD;CAChF,UAAU,GAAG,gBAAgB,iCAAiC;CAC9D,UAAU,GAAG,wGAAwG,wEAAwE;AAC9L"}
@@ -5,7 +5,7 @@ import { useForceRender } from "../../utils/use-force-render.js";
5
5
  import { createSlider, selectControls } from "@videojs/core/dom";
6
6
  import { useSnapshot } from "@videojs/store/react";
7
7
  import { useCallback, useEffect, useLayoutEffect, useRef, useState } from "react";
8
- import { applyStyles, isRTL } from "@videojs/utils/dom";
8
+ import { applyStyles } from "@videojs/utils/dom";
9
9
  //#region src/ui/hooks/use-slider.ts
10
10
  /**
11
11
  * Manages slider input lifecycle for React.
@@ -31,7 +31,6 @@ function useSlider(options) {
31
31
  getElement: () => rootElementRef.current,
32
32
  getThumbElement: () => thumbElementRef.current,
33
33
  getOrientation: () => optionsRef.current.orientation ?? "horizontal",
34
- isRTL: () => rootElementRef.current ? isRTL(rootElementRef.current) : false,
35
34
  isDisabled: () => optionsRef.current.disabled ?? false,
36
35
  getPercent: () => optionsRef.current.getPercent(),
37
36
  getStepPercent: () => optionsRef.current.getStepPercent(),
@@ -1 +1 @@
1
- {"version":3,"file":"use-slider.js","names":[],"sources":["../../../../src/ui/hooks/use-slider.ts"],"sourcesContent":["import type { SliderInput, SliderState } from '@videojs/core';\nimport {\n createSlider,\n type SliderApi,\n type SliderOptions,\n type SliderRootProps,\n type SliderRootStyle,\n type SliderThumbProps,\n selectControls,\n} from '@videojs/core/dom';\nimport { useSnapshot } from '@videojs/store/react';\nimport { applyStyles, isRTL } from '@videojs/utils/dom';\nimport { useCallback, useEffect, useLayoutEffect, useRef, useState } from 'react';\nimport { useOptionalPlayer } from '../../player/context';\nimport { useDestroy } from '../../utils/use-destroy';\nimport { useForceRender } from '../../utils/use-force-render';\nimport { useLatestRef } from '../../utils/use-latest-ref';\n\nexport interface UseSliderOptions<State extends SliderState = SliderState>\n extends Pick<\n SliderOptions,\n | 'getPercent'\n | 'getStepPercent'\n | 'getLargeStepPercent'\n | 'changeThrottle'\n | 'onValueChange'\n | 'onValueCommit'\n | 'onDragStart'\n | 'onDragEnd'\n > {\n computeState: (input: SliderInput) => State;\n orientation?: 'horizontal' | 'vertical' | undefined;\n disabled?: boolean | undefined;\n /** Adjust a raw 0–100 percent for thumb alignment. Called for fill and pointer percents. */\n adjustPercent?: ((rawPercent: number, thumbSize: number, trackSize: number) => number) | undefined;\n /** Compute CSS variable map from the (possibly alignment-adjusted) state. */\n getCSSVars: (state: State) => Record<string, string>;\n}\n\nexport interface UseSliderReturnValue<State extends SliderState = SliderState> {\n state: State;\n input: SliderApi['input'];\n cssVars: Record<string, string>;\n rootRef: React.RefCallback<HTMLElement>;\n thumbRef: React.RefCallback<HTMLElement>;\n rootProps: SliderRootProps;\n rootStyle: SliderRootStyle;\n thumbProps: SliderThumbProps;\n}\n\n/**\n * Manages slider input lifecycle for React.\n *\n * Wraps `createSlider()` from `@videojs/core/dom` and subscribes to its\n * input state via `useSnapshot`. Returns split props for the root\n * (pointer events) and thumb (keyboard/focus) elements.\n */\nexport function useSlider<State extends SliderState = SliderState>(\n options: UseSliderOptions<State>\n): UseSliderReturnValue<State> {\n const optionsRef = useLatestRef(options);\n const controls = useOptionalPlayer(selectControls);\n const requestControlsLock = controls?.requestControlsLock;\n const releaseControlsLockRef = useRef<(() => void) | null>(null);\n\n const releaseControlsLock = useCallback(() => {\n releaseControlsLockRef.current?.();\n releaseControlsLockRef.current = null;\n }, []);\n\n useEffect(() => releaseControlsLock, [releaseControlsLock]);\n\n const rootElementRef = useRef<HTMLElement | null>(null);\n const thumbElementRef = useRef<HTMLElement | null>(null);\n const forceRender = useForceRender();\n\n // Lazy-init the slider handle. Stable across re-renders.\n const [slider] = useState<SliderApi>(() => {\n const stableOptions: SliderOptions = {\n getElement: () => rootElementRef.current!,\n getThumbElement: () => thumbElementRef.current,\n getOrientation: () => optionsRef.current.orientation ?? 'horizontal',\n isRTL: () => (rootElementRef.current ? isRTL(rootElementRef.current) : false),\n isDisabled: () => optionsRef.current.disabled ?? false,\n getPercent: () => optionsRef.current.getPercent(),\n getStepPercent: () => optionsRef.current.getStepPercent(),\n getLargeStepPercent: () => optionsRef.current.getLargeStepPercent(),\n changeThrottle: optionsRef.current.changeThrottle,\n adjustPercent: optionsRef.current.adjustPercent,\n onValueChange: (percent) => optionsRef.current.onValueChange?.(percent),\n onValueCommit: (percent) => optionsRef.current.onValueCommit?.(percent),\n onDragStart: () => {\n releaseControlsLockRef.current ??= requestControlsLock?.() ?? null;\n optionsRef.current.onDragStart?.();\n },\n onDragEnd: () => {\n releaseControlsLock();\n optionsRef.current.onDragEnd?.();\n },\n };\n\n return createSlider(stableOptions);\n });\n\n useDestroy(slider);\n\n // Percentage changes are rendered directly below. React only needs to\n // re-render when interaction state changes.\n const interaction = useSnapshot(slider.input, ({ dragging, pointing, focused }) => ({\n dragging,\n pointing,\n focused,\n }));\n const input = { ...slider.input.current, ...interaction };\n\n // Compute derived state from input + caller-provided projection.\n const state = options.computeState(input);\n\n // Force a synchronous re-render after mount so edge thumb alignment\n // can read DOM measurements from the now-populated element refs.\n useLayoutEffect(() => {\n if (state.thumbAlignment === 'edge' && rootElementRef.current && thumbElementRef.current) {\n forceRender();\n }\n }, [state.thumbAlignment]);\n\n // Adjust CSS var percents for edge thumb alignment using live DOM measurements.\n const cssVars = options.getCSSVars(slider.adjustForAlignment(state));\n\n const syncStyles = useCallback(\n (element = rootElementRef.current) => {\n if (!element) return;\n const next = optionsRef.current.computeState(slider.input.current);\n applyStyles(element, optionsRef.current.getCSSVars(slider.adjustForAlignment(next)));\n },\n [slider]\n );\n\n useLayoutEffect(() => {\n syncStyles();\n return slider.input.subscribe(syncStyles);\n }, [slider, syncStyles]);\n\n // Ref callbacks for root and thumb elements.\n const rootRef = useCallback(\n (element: HTMLElement | null) => {\n rootElementRef.current = element;\n syncStyles(element);\n },\n [syncStyles]\n );\n\n const thumbRef = useCallback((element: HTMLElement | null) => {\n thumbElementRef.current = element;\n }, []);\n\n return {\n state,\n input: slider.input,\n cssVars,\n rootRef,\n thumbRef,\n rootProps: slider.rootProps,\n rootStyle: slider.rootStyle,\n thumbProps: slider.thumbProps,\n };\n}\n\nexport namespace useSlider {\n export type Options = UseSliderOptions;\n export type ReturnValue = UseSliderReturnValue;\n}\n"],"mappings":";;;;;;;;;;;;;;;;AAyDA,SAAgB,UACd,SAC6B;CAC7B,MAAM,aAAa,aAAa,OAAO;CAEvC,MAAM,sBADW,kBAAkB,cACA,CAAC,EAAE;CACtC,MAAM,yBAAyB,OAA4B,IAAI;CAE/D,MAAM,sBAAsB,kBAAkB;EAC5C,uBAAuB,UAAU;EACjC,uBAAuB,UAAU;CACnC,GAAG,CAAC,CAAC;CAEL,gBAAgB,qBAAqB,CAAC,mBAAmB,CAAC;CAE1D,MAAM,iBAAiB,OAA2B,IAAI;CACtD,MAAM,kBAAkB,OAA2B,IAAI;CACvD,MAAM,cAAc,eAAe;CAGnC,MAAM,CAAC,UAAU,eAA0B;EAwBzC,OAAO,aAAa;GAtBlB,kBAAkB,eAAe;GACjC,uBAAuB,gBAAgB;GACvC,sBAAsB,WAAW,QAAQ,eAAe;GACxD,aAAc,eAAe,UAAU,MAAM,eAAe,OAAO,IAAI;GACvE,kBAAkB,WAAW,QAAQ,YAAY;GACjD,kBAAkB,WAAW,QAAQ,WAAW;GAChD,sBAAsB,WAAW,QAAQ,eAAe;GACxD,2BAA2B,WAAW,QAAQ,oBAAoB;GAClE,gBAAgB,WAAW,QAAQ;GACnC,eAAe,WAAW,QAAQ;GAClC,gBAAgB,YAAY,WAAW,QAAQ,gBAAgB,OAAO;GACtE,gBAAgB,YAAY,WAAW,QAAQ,gBAAgB,OAAO;GACtE,mBAAmB;IACjB,uBAAuB,YAAY,sBAAsB,KAAK;IAC9D,WAAW,QAAQ,cAAc;GACnC;GACA,iBAAiB;IACf,oBAAoB;IACpB,WAAW,QAAQ,YAAY;GACjC;EAG8B,CAAC;CACnC,CAAC;CAED,WAAW,MAAM;CAIjB,MAAM,cAAc,YAAY,OAAO,QAAQ,EAAE,UAAU,UAAU,eAAe;EAClF;EACA;EACA;CACF,EAAE;CACF,MAAM,QAAQ;EAAE,GAAG,OAAO,MAAM;EAAS,GAAG;CAAY;CAGxD,MAAM,QAAQ,QAAQ,aAAa,KAAK;CAIxC,sBAAsB;EACpB,IAAI,MAAM,mBAAmB,UAAU,eAAe,WAAW,gBAAgB,SAC/E,YAAY;CAEhB,GAAG,CAAC,MAAM,cAAc,CAAC;CAGzB,MAAM,UAAU,QAAQ,WAAW,OAAO,mBAAmB,KAAK,CAAC;CAEnE,MAAM,aAAa,aAChB,UAAU,eAAe,YAAY;EACpC,IAAI,CAAC,SAAS;EACd,MAAM,OAAO,WAAW,QAAQ,aAAa,OAAO,MAAM,OAAO;EACjE,YAAY,SAAS,WAAW,QAAQ,WAAW,OAAO,mBAAmB,IAAI,CAAC,CAAC;CACrF,GACA,CAAC,MAAM,CACT;CAEA,sBAAsB;EACpB,WAAW;EACX,OAAO,OAAO,MAAM,UAAU,UAAU;CAC1C,GAAG,CAAC,QAAQ,UAAU,CAAC;CAGvB,MAAM,UAAU,aACb,YAAgC;EAC/B,eAAe,UAAU;EACzB,WAAW,OAAO;CACpB,GACA,CAAC,UAAU,CACb;CAEA,MAAM,WAAW,aAAa,YAAgC;EAC5D,gBAAgB,UAAU;CAC5B,GAAG,CAAC,CAAC;CAEL,OAAO;EACL;EACA,OAAO,OAAO;EACd;EACA;EACA;EACA,WAAW,OAAO;EAClB,WAAW,OAAO;EAClB,YAAY,OAAO;CACrB;AACF"}
1
+ {"version":3,"file":"use-slider.js","names":[],"sources":["../../../../src/ui/hooks/use-slider.ts"],"sourcesContent":["import type { SliderInput, SliderState } from '@videojs/core';\nimport {\n createSlider,\n type SliderApi,\n type SliderOptions,\n type SliderRootProps,\n type SliderRootStyle,\n type SliderThumbProps,\n selectControls,\n} from '@videojs/core/dom';\nimport { useSnapshot } from '@videojs/store/react';\nimport { applyStyles } from '@videojs/utils/dom';\nimport { useCallback, useEffect, useLayoutEffect, useRef, useState } from 'react';\nimport { useOptionalPlayer } from '../../player/context';\nimport { useDestroy } from '../../utils/use-destroy';\nimport { useForceRender } from '../../utils/use-force-render';\nimport { useLatestRef } from '../../utils/use-latest-ref';\n\nexport interface UseSliderOptions<State extends SliderState = SliderState>\n extends Pick<\n SliderOptions,\n | 'getPercent'\n | 'getStepPercent'\n | 'getLargeStepPercent'\n | 'changeThrottle'\n | 'onValueChange'\n | 'onValueCommit'\n | 'onDragStart'\n | 'onDragEnd'\n > {\n computeState: (input: SliderInput) => State;\n orientation?: 'horizontal' | 'vertical' | undefined;\n disabled?: boolean | undefined;\n /** Adjust a raw 0–100 percent for thumb alignment. Called for fill and pointer percents. */\n adjustPercent?: ((rawPercent: number, thumbSize: number, trackSize: number) => number) | undefined;\n /** Compute CSS variable map from the (possibly alignment-adjusted) state. */\n getCSSVars: (state: State) => Record<string, string>;\n}\n\nexport interface UseSliderReturnValue<State extends SliderState = SliderState> {\n state: State;\n input: SliderApi['input'];\n cssVars: Record<string, string>;\n rootRef: React.RefCallback<HTMLElement>;\n thumbRef: React.RefCallback<HTMLElement>;\n rootProps: SliderRootProps;\n rootStyle: SliderRootStyle;\n thumbProps: SliderThumbProps;\n}\n\n/**\n * Manages slider input lifecycle for React.\n *\n * Wraps `createSlider()` from `@videojs/core/dom` and subscribes to its\n * input state via `useSnapshot`. Returns split props for the root\n * (pointer events) and thumb (keyboard/focus) elements.\n */\nexport function useSlider<State extends SliderState = SliderState>(\n options: UseSliderOptions<State>\n): UseSliderReturnValue<State> {\n const optionsRef = useLatestRef(options);\n const controls = useOptionalPlayer(selectControls);\n const requestControlsLock = controls?.requestControlsLock;\n const releaseControlsLockRef = useRef<(() => void) | null>(null);\n\n const releaseControlsLock = useCallback(() => {\n releaseControlsLockRef.current?.();\n releaseControlsLockRef.current = null;\n }, []);\n\n useEffect(() => releaseControlsLock, [releaseControlsLock]);\n\n const rootElementRef = useRef<HTMLElement | null>(null);\n const thumbElementRef = useRef<HTMLElement | null>(null);\n const forceRender = useForceRender();\n\n // Lazy-init the slider handle. Stable across re-renders.\n const [slider] = useState<SliderApi>(() => {\n const stableOptions: SliderOptions = {\n getElement: () => rootElementRef.current!,\n getThumbElement: () => thumbElementRef.current,\n getOrientation: () => optionsRef.current.orientation ?? 'horizontal',\n isDisabled: () => optionsRef.current.disabled ?? false,\n getPercent: () => optionsRef.current.getPercent(),\n getStepPercent: () => optionsRef.current.getStepPercent(),\n getLargeStepPercent: () => optionsRef.current.getLargeStepPercent(),\n changeThrottle: optionsRef.current.changeThrottle,\n adjustPercent: optionsRef.current.adjustPercent,\n onValueChange: (percent) => optionsRef.current.onValueChange?.(percent),\n onValueCommit: (percent) => optionsRef.current.onValueCommit?.(percent),\n onDragStart: () => {\n releaseControlsLockRef.current ??= requestControlsLock?.() ?? null;\n optionsRef.current.onDragStart?.();\n },\n onDragEnd: () => {\n releaseControlsLock();\n optionsRef.current.onDragEnd?.();\n },\n };\n\n return createSlider(stableOptions);\n });\n\n useDestroy(slider);\n\n // Percentage changes are rendered directly below. React only needs to\n // re-render when interaction state changes.\n const interaction = useSnapshot(slider.input, ({ dragging, pointing, focused }) => ({\n dragging,\n pointing,\n focused,\n }));\n const input = { ...slider.input.current, ...interaction };\n\n // Compute derived state from input + caller-provided projection.\n const state = options.computeState(input);\n\n // Force a synchronous re-render after mount so edge thumb alignment\n // can read DOM measurements from the now-populated element refs.\n useLayoutEffect(() => {\n if (state.thumbAlignment === 'edge' && rootElementRef.current && thumbElementRef.current) {\n forceRender();\n }\n }, [state.thumbAlignment]);\n\n // Adjust CSS var percents for edge thumb alignment using live DOM measurements.\n const cssVars = options.getCSSVars(slider.adjustForAlignment(state));\n\n const syncStyles = useCallback(\n (element = rootElementRef.current) => {\n if (!element) return;\n const next = optionsRef.current.computeState(slider.input.current);\n applyStyles(element, optionsRef.current.getCSSVars(slider.adjustForAlignment(next)));\n },\n [slider]\n );\n\n useLayoutEffect(() => {\n syncStyles();\n return slider.input.subscribe(syncStyles);\n }, [slider, syncStyles]);\n\n // Ref callbacks for root and thumb elements.\n const rootRef = useCallback(\n (element: HTMLElement | null) => {\n rootElementRef.current = element;\n syncStyles(element);\n },\n [syncStyles]\n );\n\n const thumbRef = useCallback((element: HTMLElement | null) => {\n thumbElementRef.current = element;\n }, []);\n\n return {\n state,\n input: slider.input,\n cssVars,\n rootRef,\n thumbRef,\n rootProps: slider.rootProps,\n rootStyle: slider.rootStyle,\n thumbProps: slider.thumbProps,\n };\n}\n\nexport namespace useSlider {\n export type Options = UseSliderOptions;\n export type ReturnValue = UseSliderReturnValue;\n}\n"],"mappings":";;;;;;;;;;;;;;;;AAyDA,SAAgB,UACd,SAC6B;CAC7B,MAAM,aAAa,aAAa,OAAO;CAEvC,MAAM,sBADW,kBAAkB,cACA,CAAC,EAAE;CACtC,MAAM,yBAAyB,OAA4B,IAAI;CAE/D,MAAM,sBAAsB,kBAAkB;EAC5C,uBAAuB,UAAU;EACjC,uBAAuB,UAAU;CACnC,GAAG,CAAC,CAAC;CAEL,gBAAgB,qBAAqB,CAAC,mBAAmB,CAAC;CAE1D,MAAM,iBAAiB,OAA2B,IAAI;CACtD,MAAM,kBAAkB,OAA2B,IAAI;CACvD,MAAM,cAAc,eAAe;CAGnC,MAAM,CAAC,UAAU,eAA0B;EAuBzC,OAAO,aAAa;GArBlB,kBAAkB,eAAe;GACjC,uBAAuB,gBAAgB;GACvC,sBAAsB,WAAW,QAAQ,eAAe;GACxD,kBAAkB,WAAW,QAAQ,YAAY;GACjD,kBAAkB,WAAW,QAAQ,WAAW;GAChD,sBAAsB,WAAW,QAAQ,eAAe;GACxD,2BAA2B,WAAW,QAAQ,oBAAoB;GAClE,gBAAgB,WAAW,QAAQ;GACnC,eAAe,WAAW,QAAQ;GAClC,gBAAgB,YAAY,WAAW,QAAQ,gBAAgB,OAAO;GACtE,gBAAgB,YAAY,WAAW,QAAQ,gBAAgB,OAAO;GACtE,mBAAmB;IACjB,uBAAuB,YAAY,sBAAsB,KAAK;IAC9D,WAAW,QAAQ,cAAc;GACnC;GACA,iBAAiB;IACf,oBAAoB;IACpB,WAAW,QAAQ,YAAY;GACjC;EAG8B,CAAC;CACnC,CAAC;CAED,WAAW,MAAM;CAIjB,MAAM,cAAc,YAAY,OAAO,QAAQ,EAAE,UAAU,UAAU,eAAe;EAClF;EACA;EACA;CACF,EAAE;CACF,MAAM,QAAQ;EAAE,GAAG,OAAO,MAAM;EAAS,GAAG;CAAY;CAGxD,MAAM,QAAQ,QAAQ,aAAa,KAAK;CAIxC,sBAAsB;EACpB,IAAI,MAAM,mBAAmB,UAAU,eAAe,WAAW,gBAAgB,SAC/E,YAAY;CAEhB,GAAG,CAAC,MAAM,cAAc,CAAC;CAGzB,MAAM,UAAU,QAAQ,WAAW,OAAO,mBAAmB,KAAK,CAAC;CAEnE,MAAM,aAAa,aAChB,UAAU,eAAe,YAAY;EACpC,IAAI,CAAC,SAAS;EACd,MAAM,OAAO,WAAW,QAAQ,aAAa,OAAO,MAAM,OAAO;EACjE,YAAY,SAAS,WAAW,QAAQ,WAAW,OAAO,mBAAmB,IAAI,CAAC,CAAC;CACrF,GACA,CAAC,MAAM,CACT;CAEA,sBAAsB;EACpB,WAAW;EACX,OAAO,OAAO,MAAM,UAAU,UAAU;CAC1C,GAAG,CAAC,QAAQ,UAAU,CAAC;CAGvB,MAAM,UAAU,aACb,YAAgC;EAC/B,eAAe,UAAU;EACzB,WAAW,OAAO;CACpB,GACA,CAAC,UAAU,CACb;CAEA,MAAM,WAAW,aAAa,YAAgC;EAC5D,gBAAgB,UAAU;CAC5B,GAAG,CAAC,CAAC;CAEL,OAAO;EACL;EACA,OAAO,OAAO;EACd;EACA;EACA;EACA,WAAW,OAAO;EAClB,WAAW,OAAO;EAClB,YAAY,OAAO;CACrB;AACF"}