@videojs/html 10.0.0-beta.3 → 10.0.0-beta.4

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 (159) hide show
  1. package/cdn/audio-minimal.css +1 -1
  2. package/cdn/audio-minimal.dev.js +172 -87
  3. package/cdn/audio-minimal.dev.js.map +1 -1
  4. package/cdn/audio-minimal.js +5 -5
  5. package/cdn/audio-minimal.js.map +1 -1
  6. package/cdn/audio.css +1 -1
  7. package/cdn/audio.dev.js +166 -81
  8. package/cdn/audio.dev.js.map +1 -1
  9. package/cdn/audio.js +5 -5
  10. package/cdn/audio.js.map +1 -1
  11. package/cdn/background.dev.js +27 -18
  12. package/cdn/background.dev.js.map +1 -1
  13. package/cdn/background.js +4 -4
  14. package/cdn/background.js.map +1 -1
  15. package/cdn/media/hls-video.dev.js +0 -1
  16. package/cdn/media/hls-video.dev.js.map +1 -1
  17. package/cdn/media/hls-video.js +1 -1
  18. package/cdn/media/hls-video.js.map +1 -1
  19. package/cdn/media/simple-hls-video.dev.js +178 -158
  20. package/cdn/media/simple-hls-video.dev.js.map +1 -1
  21. package/cdn/media/simple-hls-video.js +1 -1
  22. package/cdn/media/simple-hls-video.js.map +1 -1
  23. package/cdn/video-minimal.css +1 -1
  24. package/cdn/video-minimal.dev.js +196 -111
  25. package/cdn/video-minimal.dev.js.map +1 -1
  26. package/cdn/video-minimal.js +3 -3
  27. package/cdn/video-minimal.js.map +1 -1
  28. package/cdn/video.css +1 -1
  29. package/cdn/video.dev.js +192 -107
  30. package/cdn/video.dev.js.map +1 -1
  31. package/cdn/video.js +5 -5
  32. package/cdn/video.js.map +1 -1
  33. package/dist/default/_virtual/inline-css_src/define/audio/minimal-skin.js +1 -1
  34. package/dist/default/_virtual/inline-css_src/define/audio/minimal-skin.js.map +1 -1
  35. package/dist/default/_virtual/inline-css_src/define/audio/skin.js +1 -1
  36. package/dist/default/_virtual/inline-css_src/define/audio/skin.js.map +1 -1
  37. package/dist/default/_virtual/inline-css_src/define/video/minimal-skin.js +1 -1
  38. package/dist/default/_virtual/inline-css_src/define/video/minimal-skin.js.map +1 -1
  39. package/dist/default/_virtual/inline-css_src/define/video/skin.js +1 -1
  40. package/dist/default/_virtual/inline-css_src/define/video/skin.js.map +1 -1
  41. package/dist/default/define/audio/minimal-skin.css +8 -2
  42. package/dist/default/define/audio/minimal-skin.js +2 -1
  43. package/dist/default/define/audio/minimal-skin.js.map +1 -1
  44. package/dist/default/define/audio/minimal-skin.tailwind.js +5 -2
  45. package/dist/default/define/audio/minimal-skin.tailwind.js.map +1 -1
  46. package/dist/default/define/audio/skin.css +5 -5
  47. package/dist/default/define/audio/skin.js +2 -1
  48. package/dist/default/define/audio/skin.js.map +1 -1
  49. package/dist/default/define/audio/skin.tailwind.js +5 -2
  50. package/dist/default/define/audio/skin.tailwind.js.map +1 -1
  51. package/dist/default/define/shared.css +3 -0
  52. package/dist/default/define/video/minimal-skin.css +34 -9
  53. package/dist/default/define/video/minimal-skin.js +2 -1
  54. package/dist/default/define/video/minimal-skin.js.map +1 -1
  55. package/dist/default/define/video/minimal-skin.tailwind.js +4 -3
  56. package/dist/default/define/video/minimal-skin.tailwind.js.map +1 -1
  57. package/dist/default/define/video/skin.css +29 -7
  58. package/dist/default/define/video/skin.js +2 -1
  59. package/dist/default/define/video/skin.js.map +1 -1
  60. package/dist/default/define/video/skin.tailwind.js +4 -3
  61. package/dist/default/define/video/skin.tailwind.js.map +1 -1
  62. package/dist/default/skins/dist/default/default/tailwind/audio.tailwind.js +3 -21
  63. package/dist/default/skins/dist/default/default/tailwind/audio.tailwind.js.map +1 -1
  64. package/dist/default/skins/dist/default/default/tailwind/components/overlay.js +1 -1
  65. package/dist/default/skins/dist/default/default/tailwind/components/overlay.js.map +1 -1
  66. package/dist/default/skins/dist/default/default/tailwind/components/root.js +1 -1
  67. package/dist/default/skins/dist/default/default/tailwind/components/root.js.map +1 -1
  68. package/dist/default/skins/dist/default/default/tailwind/video.tailwind.js +7 -4
  69. package/dist/default/skins/dist/default/default/tailwind/video.tailwind.js.map +1 -1
  70. package/dist/default/skins/dist/default/minimal/tailwind/audio.tailwind.js +3 -21
  71. package/dist/default/skins/dist/default/minimal/tailwind/audio.tailwind.js.map +1 -1
  72. package/dist/default/skins/dist/default/minimal/tailwind/components/overlay.js +1 -1
  73. package/dist/default/skins/dist/default/minimal/tailwind/components/overlay.js.map +1 -1
  74. package/dist/default/skins/dist/default/minimal/tailwind/components/popup.js +1 -1
  75. package/dist/default/skins/dist/default/minimal/tailwind/components/popup.js.map +1 -1
  76. package/dist/default/skins/dist/default/minimal/tailwind/video.tailwind.js +6 -3
  77. package/dist/default/skins/dist/default/minimal/tailwind/video.tailwind.js.map +1 -1
  78. package/dist/default/skins/dist/default/{default/tailwind/components → shared/tailwind}/icon-state.js +1 -1
  79. package/dist/default/skins/dist/default/shared/tailwind/icon-state.js.map +1 -0
  80. package/dist/{dev/skins/dist/default/default/tailwind/components → default/skins/dist/default/shared/tailwind}/tooltip-state.js +1 -1
  81. package/dist/default/skins/dist/default/shared/tailwind/tooltip-state.js.map +1 -0
  82. package/dist/default/store/container-mixin.js +22 -10
  83. package/dist/default/store/container-mixin.js.map +1 -1
  84. package/dist/default/ui/tooltip/tooltip-group-element.js +4 -1
  85. package/dist/default/ui/tooltip/tooltip-group-element.js.map +1 -1
  86. package/dist/dev/_virtual/inline-css_src/define/audio/minimal-skin.js +1 -1
  87. package/dist/dev/_virtual/inline-css_src/define/audio/minimal-skin.js.map +1 -1
  88. package/dist/dev/_virtual/inline-css_src/define/audio/skin.js +1 -1
  89. package/dist/dev/_virtual/inline-css_src/define/audio/skin.js.map +1 -1
  90. package/dist/dev/_virtual/inline-css_src/define/video/minimal-skin.js +1 -1
  91. package/dist/dev/_virtual/inline-css_src/define/video/minimal-skin.js.map +1 -1
  92. package/dist/dev/_virtual/inline-css_src/define/video/skin.js +1 -1
  93. package/dist/dev/_virtual/inline-css_src/define/video/skin.js.map +1 -1
  94. package/dist/dev/define/audio/minimal-skin.css +8 -2
  95. package/dist/dev/define/audio/minimal-skin.d.ts.map +1 -1
  96. package/dist/dev/define/audio/minimal-skin.js +67 -64
  97. package/dist/dev/define/audio/minimal-skin.js.map +1 -1
  98. package/dist/dev/define/audio/minimal-skin.tailwind.d.ts.map +1 -1
  99. package/dist/dev/define/audio/minimal-skin.tailwind.js +71 -66
  100. package/dist/dev/define/audio/minimal-skin.tailwind.js.map +1 -1
  101. package/dist/dev/define/audio/skin.css +5 -5
  102. package/dist/dev/define/audio/skin.d.ts.map +1 -1
  103. package/dist/dev/define/audio/skin.js +59 -56
  104. package/dist/dev/define/audio/skin.js.map +1 -1
  105. package/dist/dev/define/audio/skin.tailwind.d.ts.map +1 -1
  106. package/dist/dev/define/audio/skin.tailwind.js +64 -59
  107. package/dist/dev/define/audio/skin.tailwind.js.map +1 -1
  108. package/dist/dev/define/shared.css +3 -0
  109. package/dist/dev/define/video/minimal-skin.css +34 -9
  110. package/dist/dev/define/video/minimal-skin.d.ts.map +1 -1
  111. package/dist/dev/define/video/minimal-skin.js +88 -85
  112. package/dist/dev/define/video/minimal-skin.js.map +1 -1
  113. package/dist/dev/define/video/minimal-skin.tailwind.d.ts.map +1 -1
  114. package/dist/dev/define/video/minimal-skin.tailwind.js +98 -95
  115. package/dist/dev/define/video/minimal-skin.tailwind.js.map +1 -1
  116. package/dist/dev/define/video/skin.css +29 -7
  117. package/dist/dev/define/video/skin.d.ts.map +1 -1
  118. package/dist/dev/define/video/skin.js +82 -79
  119. package/dist/dev/define/video/skin.js.map +1 -1
  120. package/dist/dev/define/video/skin.tailwind.d.ts.map +1 -1
  121. package/dist/dev/define/video/skin.tailwind.js +92 -89
  122. package/dist/dev/define/video/skin.tailwind.js.map +1 -1
  123. package/dist/dev/skins/dist/default/default/tailwind/audio.tailwind.js +3 -21
  124. package/dist/dev/skins/dist/default/default/tailwind/audio.tailwind.js.map +1 -1
  125. package/dist/dev/skins/dist/default/default/tailwind/components/overlay.js +1 -1
  126. package/dist/dev/skins/dist/default/default/tailwind/components/overlay.js.map +1 -1
  127. package/dist/dev/skins/dist/default/default/tailwind/components/root.js +1 -1
  128. package/dist/dev/skins/dist/default/default/tailwind/components/root.js.map +1 -1
  129. package/dist/dev/skins/dist/default/default/tailwind/video.tailwind.js +7 -4
  130. package/dist/dev/skins/dist/default/default/tailwind/video.tailwind.js.map +1 -1
  131. package/dist/dev/skins/dist/default/minimal/tailwind/audio.tailwind.js +3 -21
  132. package/dist/dev/skins/dist/default/minimal/tailwind/audio.tailwind.js.map +1 -1
  133. package/dist/dev/skins/dist/default/minimal/tailwind/components/overlay.js +1 -1
  134. package/dist/dev/skins/dist/default/minimal/tailwind/components/overlay.js.map +1 -1
  135. package/dist/dev/skins/dist/default/minimal/tailwind/components/popup.js +1 -1
  136. package/dist/dev/skins/dist/default/minimal/tailwind/components/popup.js.map +1 -1
  137. package/dist/dev/skins/dist/default/minimal/tailwind/video.tailwind.js +6 -3
  138. package/dist/dev/skins/dist/default/minimal/tailwind/video.tailwind.js.map +1 -1
  139. package/dist/{default/skins/dist/default/minimal/tailwind/components → dev/skins/dist/default/shared/tailwind}/icon-state.js +1 -1
  140. package/dist/dev/skins/dist/default/shared/tailwind/icon-state.js.map +1 -0
  141. package/dist/dev/skins/dist/default/{minimal/tailwind/components → shared/tailwind}/tooltip-state.js +1 -1
  142. package/dist/dev/skins/dist/default/shared/tailwind/tooltip-state.js.map +1 -0
  143. package/dist/dev/store/container-mixin.js +22 -10
  144. package/dist/dev/store/container-mixin.js.map +1 -1
  145. package/dist/dev/ui/tooltip/tooltip-group-element.js +4 -1
  146. package/dist/dev/ui/tooltip/tooltip-group-element.js.map +1 -1
  147. package/package.json +8 -8
  148. package/dist/default/skins/dist/default/default/tailwind/components/icon-state.js.map +0 -1
  149. package/dist/default/skins/dist/default/default/tailwind/components/tooltip-state.js +0 -28
  150. package/dist/default/skins/dist/default/default/tailwind/components/tooltip-state.js.map +0 -1
  151. package/dist/default/skins/dist/default/minimal/tailwind/components/icon-state.js.map +0 -1
  152. package/dist/default/skins/dist/default/minimal/tailwind/components/tooltip-state.js +0 -28
  153. package/dist/default/skins/dist/default/minimal/tailwind/components/tooltip-state.js.map +0 -1
  154. package/dist/dev/skins/dist/default/default/tailwind/components/icon-state.js +0 -29
  155. package/dist/dev/skins/dist/default/default/tailwind/components/icon-state.js.map +0 -1
  156. package/dist/dev/skins/dist/default/default/tailwind/components/tooltip-state.js.map +0 -1
  157. package/dist/dev/skins/dist/default/minimal/tailwind/components/icon-state.js +0 -29
  158. package/dist/dev/skins/dist/default/minimal/tailwind/components/icon-state.js.map +0 -1
  159. package/dist/dev/skins/dist/default/minimal/tailwind/components/tooltip-state.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"skin.js","names":[],"sources":["../../../../../../inline-css:src/define/video/skin.js"],"sourcesContent":["export default \"/* ==========================================================================\\n Icon State Visibility for Video Skins\\n\\n Data-attribute-driven visibility rules for multi-state icon buttons.\\n Uses :is() with both element selectors (for HTML custom element wrappers)\\n and class selectors (for React rendered SVG elements).\\n ========================================================================== */\\n\\n/* --- All icons hidden by default --- */\\n\\n.media-button--play .media-icon--restart,\\n.media-button--play .media-icon--play,\\n.media-button--play .media-icon--pause,\\n.media-button--mute .media-icon--volume-off,\\n.media-button--mute .media-icon--volume-low,\\n.media-button--mute .media-icon--volume-high,\\n.media-button--fullscreen .media-icon--fullscreen-enter,\\n.media-button--fullscreen .media-icon--fullscreen-exit,\\n.media-button--captions .media-icon--captions-off,\\n.media-button--captions .media-icon--captions-on {\\n display: none;\\n opacity: 0;\\n}\\n\\n/* --- Active icon per state --- */\\n\\n/* Play: ended → restart */\\n.media-button--play[data-ended] .media-icon--restart,\\n/* Play: paused (not ended) → play */\\n.media-button--play:not([data-ended])[data-paused] .media-icon--play,\\n/* Play: playing (not paused, not ended) → pause */\\n.media-button--play:not([data-paused]):not([data-ended]) .media-icon--pause,\\n/* Mute: muted → volume off */\\n.media-button--mute[data-muted] .media-icon--volume-off,\\n/* Mute: volume low (not muted) → volume low */\\n.media-button--mute:not([data-muted])[data-volume-level=\\\"low\\\"] .media-icon--volume-low,\\n/* Mute: volume high (not muted, not low) → volume high */\\n.media-button--mute:not([data-muted]):not([data-volume-level=\\\"low\\\"]) .media-icon--volume-high,\\n/* Fullscreen: not fullscreen → enter */\\n.media-button--fullscreen:not([data-fullscreen]) .media-icon--fullscreen-enter,\\n/* Fullscreen: fullscreen → exit */\\n.media-button--fullscreen[data-fullscreen] .media-icon--fullscreen-exit,\\n/* Captions: not active → captions off */\\n.media-button--captions:not([data-active]) .media-icon--captions-off,\\n/* Captions: active → captions on */\\n.media-button--captions[data-active] .media-icon--captions-on {\\n display: block;\\n opacity: 1;\\n}\\n\\n/* ==========================================================================\\n Tooltip Label State Visibility for Video Skins\\n\\n Data-attribute-driven visibility rules for multi-state tooltip labels.\\n Uses adjacent sibling selectors to match button state → tooltip content.\\n ========================================================================== */\\n\\n/* --- All multi-state labels hidden by default --- */\\n\\n.media-tooltip-label {\\n display: none;\\n}\\n\\n/* --- Active label per state --- */\\n\\n/* Play: ended → replay */\\n.media-button--play[data-ended] + .media-tooltip .media-tooltip-label--replay,\\n/* Play: paused (not ended) → play */\\n .media-button--play:not([data-ended])[data-paused] + .media-tooltip\\n .media-tooltip-label--play,\\n/* Play: playing (not paused, not ended) → pause */\\n .media-button--play:not([data-paused]):not([data-ended]) + .media-tooltip\\n .media-tooltip-label--pause,\\n/* Fullscreen: not fullscreen → enter */\\n .media-button--fullscreen:not([data-fullscreen]) + .media-tooltip\\n .media-tooltip-label--enter-fullscreen,\\n/* Fullscreen: fullscreen → exit */\\n .media-button--fullscreen[data-fullscreen] + .media-tooltip\\n .media-tooltip-label--exit-fullscreen,\\n/* Captions: not active → enable */\\n .media-button--captions:not([data-active]) + .media-tooltip\\n .media-tooltip-label--enable-captions,\\n/* Captions: active → disable */\\n .media-button--captions[data-active] + .media-tooltip\\n .media-tooltip-label--disable-captions,\\n/* PiP: not in pip → enter */\\n .media-button--pip:not([data-pip]) + .media-tooltip\\n .media-tooltip-label--enter-pip,\\n/* PiP: in pip → exit */\\n .media-button--pip[data-pip] + .media-tooltip\\n .media-tooltip-label--exit-pip {\\n display: block;\\n}\\n\\n/* ==========================================================================\\n Reset\\n ========================================================================== */\\n\\n.media-default-skin *,\\n.media-default-skin *::before,\\n.media-default-skin *::after {\\n box-sizing: border-box;\\n margin: 0;\\n}\\n.media-default-skin img,\\n.media-default-skin video,\\n.media-default-skin svg {\\n display: block;\\n max-width: 100%;\\n}\\n.media-default-skin button {\\n font: inherit;\\n}\\n@media (prefers-reduced-motion: no-preference) {\\n .media-default-skin {\\n interpolate-size: allow-keywords;\\n }\\n}\\n\\n/* ==========================================================================\\n Root Container\\n ========================================================================== */\\n\\n.media-default-skin {\\n position: relative;\\n isolation: isolate;\\n display: block;\\n height: 100%;\\n width: 100%;\\n container: media-root / inline-size;\\n border-radius: var(--media-border-radius, 2rem);\\n font-family:\\n Inter Variable,\\n Inter,\\n ui-sans-serif,\\n system-ui,\\n sans-serif;\\n font-size: 0.8125rem;\\n line-height: 1.5;\\n letter-spacing: normal;\\n -webkit-font-smoothing: auto;\\n -moz-osx-font-smoothing: auto;\\n\\n &:fullscreen {\\n border-radius: 0;\\n }\\n}\\n\\n/* ==========================================================================\\n Surface (shared glass effect for tooltips, popovers, controls)\\n ========================================================================== */\\n\\n.media-default-skin .media-surface {\\n background-color: var(--media-surface-background-color);\\n backdrop-filter: var(--media-surface-backdrop-filter);\\n box-shadow:\\n inset 0 0 0 1px var(--media-surface-inner-border-color),\\n 0 1px 3px 0 var(--media-surface-shadow-color),\\n 0 1px 2px -1px var(--media-surface-shadow-color);\\n\\n /* Inner border ring */\\n &::after {\\n content: \\\"\\\";\\n position: absolute;\\n inset: 0;\\n z-index: 10;\\n border-radius: inherit;\\n box-shadow: 0 0 0 1px var(--media-surface-outer-border-color);\\n pointer-events: none;\\n }\\n\\n @media (prefers-reduced-transparency: reduce) {\\n background-color: oklch(from var(--media-surface-background-color) l c h / 0.7);\\n }\\n\\n @media (prefers-contrast: more) {\\n background-color: oklch(from var(--media-surface-background-color) l c h / 0.9);\\n }\\n}\\n\\n/* ==========================================================================\\n Media Element\\n ========================================================================== */\\n\\n.media-default-skin ::slotted(video),\\n.media-default-skin video {\\n display: block;\\n width: 100%;\\n height: 100%;\\n border-radius: var(--media-border-radius, 2rem);\\n}\\n\\n/* ==========================================================================\\n Poster Image\\n ========================================================================== */\\n\\n.media-default-skin > img {\\n position: absolute;\\n inset: 0;\\n width: 100%;\\n height: 100%;\\n border-radius: inherit;\\n object-fit: cover;\\n transition: opacity 0.25s;\\n pointer-events: none;\\n\\n &:not([data-visible]) {\\n opacity: 0;\\n }\\n}\\n\\n/* ==========================================================================\\n Overlay / Scrim\\n ========================================================================== */\\n\\n.media-default-skin .media-overlay {\\n position: absolute;\\n inset: 0;\\n border-radius: inherit;\\n background-image: linear-gradient(to top, oklch(0 0 0 / 0.5), oklch(0 0 0 / 0.3), oklch(0 0 0 / 0));\\n backdrop-filter: blur(0) saturate(1.2) brightness(0.9);\\n opacity: 0;\\n transition-property: opacity, backdrop-filter;\\n transition-duration: 300ms;\\n transition-delay: 500ms;\\n transition-timing-function: ease-out;\\n pointer-events: none;\\n\\n @media (prefers-reduced-motion: reduce) {\\n transition-duration: 100ms;\\n }\\n}\\n\\n.media-default-skin .media-controls[data-visible] ~ .media-overlay,\\n.media-default-skin .media-error[data-open] ~ .media-overlay {\\n opacity: 1;\\n transition-duration: 150ms;\\n transition-delay: 0ms;\\n}\\n\\n.media-default-skin .media-error[data-open] ~ .media-overlay {\\n backdrop-filter: blur(8px) saturate(1.2) brightness(0.9);\\n}\\n\\n/* ==========================================================================\\n Buffering Indicator\\n ========================================================================== */\\n\\n.media-default-skin .media-buffering-indicator {\\n position: absolute;\\n inset: 0;\\n display: none;\\n align-items: center;\\n justify-content: center;\\n color: oklch(1 0 0);\\n pointer-events: none;\\n\\n &[data-visible] {\\n display: flex;\\n }\\n\\n .media-surface {\\n padding: 0.25rem;\\n border-radius: 100%;\\n }\\n}\\n\\n/* ==========================================================================\\n Error Dialog\\n ========================================================================== */\\n\\n.media-default-skin .media-error {\\n position: absolute;\\n inset: 0;\\n z-index: 20;\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n}\\n\\n.media-default-skin .media-error__dialog {\\n display: flex;\\n flex-direction: column;\\n gap: 0.75rem;\\n max-width: 18rem;\\n padding: 0.75rem;\\n border-radius: 1.75rem;\\n color: oklch(1 0 0);\\n font-size: 0.875rem;\\n transition-property: opacity, transform;\\n transition-duration: 500ms;\\n transition-delay: 100ms;\\n transition-timing-function: linear(\\n 0,\\n 0.034 1.5%,\\n 0.763 9.7%,\\n 1.066 13.9%,\\n 1.198 19.9%,\\n 1.184 21.8%,\\n 0.963 37.5%,\\n 0.997 50.9%,\\n 1\\n );\\n\\n /* Simple, fast transition for reduced motion users */\\n @media (prefers-reduced-motion: reduce) {\\n transition-duration: 100ms;\\n transition-delay: 0ms;\\n transition-timing-function: ease-out;\\n }\\n}\\n\\n.media-default-skin .media-error[data-starting-style] .media-error__dialog,\\n.media-default-skin .media-error[data-ending-style] .media-error__dialog {\\n opacity: 0;\\n transform: scale(0.5);\\n}\\n\\n.media-default-skin .media-error__content {\\n display: flex;\\n flex-direction: column;\\n gap: 0.5rem;\\n padding: 0.5rem 0.5rem 0.375rem;\\n}\\n\\n.media-default-skin .media-error__title {\\n font-weight: 600;\\n line-height: 1.25;\\n}\\n\\n.media-default-skin .media-error__description {\\n opacity: 0.7;\\n}\\n\\n.media-default-skin .media-error__actions {\\n display: flex;\\n gap: 0.5rem;\\n\\n & > * {\\n flex: 1;\\n }\\n}\\n\\n/* ==========================================================================\\n Controls\\n ========================================================================== */\\n\\n.media-default-skin .media-controls {\\n container: media-controls / inline-size;\\n display: flex;\\n align-items: center;\\n gap: 0.075rem;\\n padding: 0.175rem;\\n border-radius: calc(infinity * 1px);\\n --media-controls-current-shadow-color: oklch(from currentColor 0 0 0 / clamp(0, calc((l - 0.5) * 0.5), 0.25));\\n --media-controls-current-shadow-color-subtle: oklch(\\n from var(--media-controls-current-shadow-color) l c h /\\n calc(alpha * 0.4)\\n );\\n text-shadow: 0 0 1px var(--media-controls-current-shadow-color);\\n\\n @container media-root (width > 40rem) {\\n gap: 0.125rem;\\n padding: 0.25rem;\\n }\\n}\\n\\n/* ==========================================================================\\n Time Display\\n ========================================================================== */\\n\\n.media-default-skin .media-time {\\n container: media-time / inline-size;\\n display: flex;\\n align-items: center;\\n flex: 1;\\n gap: 0.75rem;\\n padding-inline: 0.5rem;\\n\\n & .media-time__value:first-child {\\n display: none;\\n\\n @container media-time (width > 18rem) {\\n display: block;\\n }\\n }\\n}\\n\\n.media-default-skin .media-time__value {\\n font-variant-numeric: tabular-nums;\\n}\\n\\n/* ==========================================================================\\n Buttons\\n ========================================================================== */\\n\\n/* Base button */\\n.media-default-skin .media-button {\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n flex-shrink: 0;\\n padding: 0.5rem 1rem;\\n background: oklch(1 0 0);\\n border: none;\\n border-radius: calc(infinity * 1px);\\n outline: 2px solid transparent;\\n outline-offset: -2px;\\n color: oklch(0 0 0);\\n font-weight: 500;\\n text-align: center;\\n transition-property: background-color, color, outline-offset, transform;\\n transition-duration: 150ms;\\n transition-timing-function: ease-out;\\n cursor: pointer;\\n user-select: none;\\n\\n &:focus-visible {\\n outline-color: oklch(62.3% 0.214 259.815);\\n outline-offset: 2px;\\n }\\n\\n &[disabled] {\\n opacity: 0.5;\\n filter: grayscale(1);\\n cursor: not-allowed;\\n }\\n\\n &[data-availability=\\\"unavailable\\\"] {\\n display: none;\\n }\\n}\\n\\n/* Icon button variant */\\n.media-default-skin .media-button--icon {\\n display: grid;\\n width: 2.125rem;\\n padding: 0;\\n aspect-ratio: 1;\\n background: transparent;\\n color: inherit;\\n text-shadow: inherit;\\n\\n &:hover,\\n &:focus-visible,\\n &[aria-expanded=\\\"true\\\"] {\\n background-color: oklch(from currentColor l c h / 0.1);\\n text-decoration: none;\\n }\\n\\n &:active {\\n transform: scale(0.9);\\n }\\n\\n & .media-icon {\\n filter: drop-shadow(0 1px 0 var(--media-controls-current-shadow-color, oklch(0 0 0 / 0.25)));\\n }\\n}\\n\\n/* Seek button */\\n.media-default-skin .media-button--seek {\\n & .media-icon__label {\\n position: absolute;\\n right: -1px;\\n bottom: -3px;\\n font-size: 0.75em;\\n font-weight: 480;\\n font-variant-numeric: tabular-nums;\\n }\\n\\n &:has(.media-icon--flipped) .media-icon__label {\\n right: unset;\\n left: -1px;\\n }\\n\\n @container media-controls (width < 28rem) {\\n display: none;\\n }\\n}\\n\\n/* Playback rate button */\\n.media-default-skin .media-button--playback-rate {\\n padding: 0;\\n\\n &::after {\\n content: attr(data-rate) \\\"\\\\00D7\\\";\\n width: 4ch;\\n font-variant-numeric: tabular-nums;\\n }\\n}\\n\\n/* ==========================================================================\\n Icons\\n ========================================================================== */\\n\\n.media-default-skin .media-icon__container {\\n position: relative;\\n}\\n.media-default-skin .media-icon {\\n display: block;\\n flex-shrink: 0;\\n grid-area: 1 / 1;\\n width: 18px;\\n height: 18px;\\n transition-behavior: allow-discrete;\\n transition-property: display, opacity;\\n transition-duration: 150ms;\\n transition-timing-function: ease-out;\\n}\\n.media-default-skin .media-icon--flipped {\\n scale: -1 1;\\n}\\n\\n/* ==========================================================================\\n Slider\\n ========================================================================== */\\n\\n.media-default-skin .media-slider {\\n position: relative;\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n flex: 1;\\n border-radius: calc(infinity * 1px);\\n outline: none;\\n\\n &[data-orientation=\\\"horizontal\\\"] {\\n min-width: 5rem;\\n width: 100%;\\n height: 1.25rem;\\n }\\n\\n &[data-orientation=\\\"vertical\\\"] {\\n width: 1.25rem;\\n height: 5rem;\\n }\\n}\\n\\n/* Track */\\n.media-default-skin .media-slider__track {\\n position: relative;\\n isolation: isolate;\\n overflow: hidden;\\n border-radius: inherit;\\n user-select: none;\\n\\n &[data-orientation=\\\"horizontal\\\"] {\\n width: 100%;\\n height: 0.25rem;\\n }\\n\\n &[data-orientation=\\\"vertical\\\"] {\\n width: 0.25rem;\\n height: 100%;\\n }\\n}\\n\\n/* Thumb */\\n.media-default-skin .media-slider__thumb {\\n z-index: 10;\\n position: absolute;\\n transform: translate(-50%, -50%);\\n width: 0.625rem;\\n height: 0.625rem;\\n background-color: currentColor;\\n border-radius: calc(infinity * 1px);\\n box-shadow:\\n 0 0 0 1px var(--media-controls-current-shadow-color-subtle, oklch(0 0 0 / 0.1)),\\n 0 1px 3px 0 oklch(0 0 0 / 0.15),\\n 0 1px 2px -1px oklch(0 0 0 / 0.15);\\n opacity: 0;\\n transition-property: opacity, height, width, outline-offset;\\n transition-duration: 150ms;\\n transition-timing-function: ease-out;\\n user-select: none;\\n outline: 4px solid transparent;\\n outline-offset: -4px;\\n\\n &[data-orientation=\\\"horizontal\\\"] {\\n top: 50%;\\n left: var(--media-slider-fill);\\n }\\n\\n &[data-orientation=\\\"vertical\\\"] {\\n left: 50%;\\n top: calc(100% - var(--media-slider-fill));\\n }\\n\\n &:hover,\\n &:focus {\\n outline-color: oklch(from currentColor l c h / 0.25);\\n outline-offset: 0;\\n }\\n}\\n\\n.media-default-skin .media-slider:active .media-slider__thumb,\\n.media-default-skin .media-slider__thumb--persistent {\\n width: 0.75rem;\\n height: 0.75rem;\\n}\\n\\n.media-default-skin .media-slider:hover .media-slider__thumb,\\n.media-default-skin .media-slider__thumb:focus-visible,\\n.media-default-skin .media-slider__thumb--persistent {\\n opacity: 1;\\n}\\n\\n/* Shared track fills */\\n.media-default-skin .media-slider__buffer,\\n.media-default-skin .media-slider__fill {\\n position: absolute;\\n border-radius: inherit;\\n pointer-events: none;\\n}\\n\\n.media-default-skin .media-slider__buffer[data-orientation=\\\"horizontal\\\"],\\n.media-default-skin .media-slider__fill[data-orientation=\\\"horizontal\\\"] {\\n inset-block: 0;\\n left: 0;\\n}\\n\\n.media-default-skin .media-slider__buffer[data-orientation=\\\"vertical\\\"],\\n.media-default-skin .media-slider__fill[data-orientation=\\\"vertical\\\"] {\\n inset-inline: 0;\\n bottom: 0;\\n}\\n\\n/* Buffer */\\n.media-default-skin .media-slider__buffer {\\n background-color: oklch(from currentColor l c h / 0.2);\\n transition-duration: 0.25s;\\n transition-timing-function: ease-out;\\n\\n &[data-orientation=\\\"horizontal\\\"] {\\n width: var(--media-slider-buffer);\\n transition-property: width;\\n }\\n\\n &[data-orientation=\\\"vertical\\\"] {\\n height: var(--media-slider-buffer);\\n transition-property: height;\\n }\\n}\\n\\n/* Fill */\\n.media-default-skin .media-slider__fill {\\n background-color: currentColor;\\n\\n &[data-orientation=\\\"horizontal\\\"] {\\n width: var(--media-slider-fill);\\n }\\n\\n &[data-orientation=\\\"vertical\\\"] {\\n height: var(--media-slider-fill);\\n }\\n}\\n\\n/* Time display within slider */\\n.media-default-skin .media-slider__time-display {\\n font-variant-numeric: tabular-nums;\\n}\\n\\n/* ==========================================================================\\n Popups & Tooltips\\n ========================================================================== */\\n\\n.media-default-skin .media-popover,\\n.media-default-skin .media-tooltip {\\n margin: 0;\\n border: 0;\\n color: inherit;\\n overflow: visible;\\n transition-property: transform, scale, opacity, filter;\\n transition-duration: 200ms;\\n\\n &[data-starting-style],\\n &[data-ending-style] {\\n opacity: 0;\\n transform: scale(0);\\n filter: blur(8px);\\n }\\n\\n &[data-instant] {\\n transition-duration: 0ms;\\n }\\n\\n &[data-side=\\\"top\\\"] {\\n transform-origin: bottom;\\n }\\n &[data-side=\\\"bottom\\\"] {\\n transform-origin: top;\\n }\\n &[data-side=\\\"left\\\"] {\\n transform-origin: right;\\n }\\n &[data-side=\\\"right\\\"] {\\n transform-origin: left;\\n }\\n}\\n\\n.media-default-skin .media-popover {\\n --media-popover-side-offset: 0.5rem;\\n}\\n.media-default-skin .media-popover--volume {\\n padding: 0.625rem 0.25rem;\\n border-radius: calc(infinity * 1px);\\n}\\n\\n.media-default-skin .media-tooltip {\\n padding: 0.25rem 0.625rem;\\n border-radius: calc(infinity * 1px);\\n font-size: 0.75rem;\\n white-space: nowrap;\\n --media-tooltip-side-offset: 0.5rem;\\n}\\n\\n/* ==========================================================================\\n Native Caption Track\\n ========================================================================== */\\n\\n.media-default-skin {\\n --media-caption-track-delay: 600ms;\\n --media-caption-track-y: -0.5rem;\\n\\n &:has(.media-controls[data-visible]) {\\n --media-caption-track-delay: 25ms;\\n --media-caption-track-y: -3.5rem;\\n }\\n}\\n\\n.media-default-skin video::-webkit-media-text-track-container {\\n /* NOTE: The delay must account for the controls delay/duration */\\n transition: transform 150ms ease-out;\\n transition-delay: var(--media-caption-track-delay);\\n transform: translateY(var(--media-caption-track-y)) scale(0.98);\\n z-index: 1;\\n font-family: inherit;\\n}\\n\\n@media (prefers-reduced-motion: reduce) {\\n .media-default-skin video::-webkit-media-text-track-container {\\n transition-duration: 50ms;\\n }\\n}\\n\\n\\n/* ==========================================================================\\n Root\\n ========================================================================== */\\n\\n.media-default-skin--video {\\n background: oklch(0 0 0);\\n --media-border-color: oklch(0 0 0 / 0.1);\\n --media-surface-background-color: oklch(1 0 0 / 0.1);\\n --media-surface-inner-border-color: oklch(1 0 0 / 0.05);\\n --media-surface-outer-border-color: oklch(0 0 0 / 0.1);\\n --media-surface-shadow-color: oklch(0 0 0 / 0.15);\\n --media-surface-backdrop-filter: blur(64px) brightness(0.9) saturate(1.5);\\n\\n @media (prefers-color-scheme: dark) {\\n --media-border-color: oklch(1 0 0 / 0.1);\\n }\\n\\n /* Inner border ring */\\n &::after {\\n content: \\\"\\\";\\n position: absolute;\\n inset: 0;\\n z-index: 10;\\n border-radius: inherit;\\n box-shadow: inset 0 0 0 1px var(--media-border-color);\\n pointer-events: none;\\n }\\n}\\n\\n/* ==========================================================================\\n Controls (hide/show behavior)\\n ========================================================================== */\\n\\n.media-default-skin--video .media-controls {\\n position: absolute;\\n bottom: 0.75rem;\\n inset-inline: 0.75rem;\\n z-index: 10;\\n will-change: scale, transform, filter, opacity;\\n transition-property: scale, transform, filter, opacity;\\n transition-duration: 100ms;\\n transition-delay: 0ms;\\n transition-timing-function: ease-out;\\n transform-origin: bottom;\\n color: oklch(1 0 0);\\n\\n &:not([data-visible]) {\\n opacity: 0;\\n scale: 0.9;\\n filter: blur(8px);\\n transition-duration: 300ms;\\n transition-delay: 500ms;\\n pointer-events: none;\\n\\n @media (prefers-reduced-motion: reduce) {\\n scale: 1;\\n filter: blur(0);\\n transition-duration: 100ms;\\n }\\n }\\n}\\n\\n/* ==========================================================================\\n Sliders\\n ========================================================================== */\\n\\n.media-default-skin--video .media-slider__track {\\n background-color: oklch(1 0 0 / 0.2);\\n box-shadow: 0 0 0 1px oklch(0 0 0 / 0.05);\\n}\\n\\n\";"],"mappings":";AAAA,mBAAe"}
1
+ {"version":3,"file":"skin.js","names":[],"sources":["../../../../../../inline-css:src/define/video/skin.js"],"sourcesContent":["export default \"/* ==========================================================================\\n Icon State Visibility for Video Skins\\n\\n Data-attribute-driven visibility rules for multi-state icon buttons.\\n Uses :is() with both element selectors (for HTML custom element wrappers)\\n and class selectors (for React rendered SVG elements).\\n ========================================================================== */\\n\\n/* --- All icons hidden by default --- */\\n\\n.media-button--play .media-icon--restart,\\n.media-button--play .media-icon--play,\\n.media-button--play .media-icon--pause,\\n.media-button--mute .media-icon--volume-off,\\n.media-button--mute .media-icon--volume-low,\\n.media-button--mute .media-icon--volume-high,\\n.media-button--fullscreen .media-icon--fullscreen-enter,\\n.media-button--fullscreen .media-icon--fullscreen-exit,\\n.media-button--captions .media-icon--captions-off,\\n.media-button--captions .media-icon--captions-on {\\n display: none;\\n opacity: 0;\\n}\\n\\n/* --- Active icon per state --- */\\n\\n/* Play: ended → restart */\\n.media-button--play[data-ended] .media-icon--restart,\\n/* Play: paused (not ended) → play */\\n.media-button--play:not([data-ended])[data-paused] .media-icon--play,\\n/* Play: playing (not paused, not ended) → pause */\\n.media-button--play:not([data-paused]):not([data-ended]) .media-icon--pause,\\n/* Mute: muted → volume off */\\n.media-button--mute[data-muted] .media-icon--volume-off,\\n/* Mute: volume low (not muted) → volume low */\\n.media-button--mute:not([data-muted])[data-volume-level=\\\"low\\\"] .media-icon--volume-low,\\n/* Mute: volume high (not muted, not low) → volume high */\\n.media-button--mute:not([data-muted]):not([data-volume-level=\\\"low\\\"]) .media-icon--volume-high,\\n/* Fullscreen: not fullscreen → enter */\\n.media-button--fullscreen:not([data-fullscreen]) .media-icon--fullscreen-enter,\\n/* Fullscreen: fullscreen → exit */\\n.media-button--fullscreen[data-fullscreen] .media-icon--fullscreen-exit,\\n/* Captions: not active → captions off */\\n.media-button--captions:not([data-active]) .media-icon--captions-off,\\n/* Captions: active → captions on */\\n.media-button--captions[data-active] .media-icon--captions-on {\\n display: block;\\n opacity: 1;\\n}\\n\\n/* ==========================================================================\\n Tooltip Label State Visibility for Video Skins\\n\\n Data-attribute-driven visibility rules for multi-state tooltip labels.\\n Uses adjacent sibling selectors to match button state → tooltip content.\\n ========================================================================== */\\n\\n/* --- All multi-state labels hidden by default --- */\\n\\n.media-tooltip-label {\\n display: none;\\n}\\n\\n/* --- Active label per state --- */\\n\\n/* Play: ended → replay */\\n.media-button--play[data-ended] + .media-tooltip .media-tooltip-label--replay,\\n/* Play: paused (not ended) → play */\\n .media-button--play:not([data-ended])[data-paused] + .media-tooltip\\n .media-tooltip-label--play,\\n/* Play: playing (not paused, not ended) → pause */\\n .media-button--play:not([data-paused]):not([data-ended]) + .media-tooltip\\n .media-tooltip-label--pause,\\n/* Fullscreen: not fullscreen → enter */\\n .media-button--fullscreen:not([data-fullscreen]) + .media-tooltip\\n .media-tooltip-label--enter-fullscreen,\\n/* Fullscreen: fullscreen → exit */\\n .media-button--fullscreen[data-fullscreen] + .media-tooltip\\n .media-tooltip-label--exit-fullscreen,\\n/* Captions: not active → enable */\\n .media-button--captions:not([data-active]) + .media-tooltip\\n .media-tooltip-label--enable-captions,\\n/* Captions: active → disable */\\n .media-button--captions[data-active] + .media-tooltip\\n .media-tooltip-label--disable-captions,\\n/* PiP: not in pip → enter */\\n .media-button--pip:not([data-pip]) + .media-tooltip\\n .media-tooltip-label--enter-pip,\\n/* PiP: in pip → exit */\\n .media-button--pip[data-pip] + .media-tooltip\\n .media-tooltip-label--exit-pip {\\n display: block;\\n}\\n\\n/* ==========================================================================\\n Reset\\n ========================================================================== */\\n\\n.media-default-skin *,\\n.media-default-skin *::before,\\n.media-default-skin *::after {\\n box-sizing: border-box;\\n margin: 0;\\n}\\n.media-default-skin img,\\n.media-default-skin video,\\n.media-default-skin svg {\\n display: block;\\n max-width: 100%;\\n}\\n.media-default-skin button {\\n font: inherit;\\n}\\n@media (prefers-reduced-motion: no-preference) {\\n .media-default-skin {\\n interpolate-size: allow-keywords;\\n }\\n}\\n\\n/* ==========================================================================\\n Root Container\\n ========================================================================== */\\n\\n.media-default-skin {\\n position: relative;\\n isolation: isolate;\\n display: block;\\n height: 100%;\\n width: 100%;\\n container: media-root / inline-size;\\n border-radius: var(--media-border-radius, 2rem);\\n font-family:\\n Inter Variable,\\n Inter,\\n ui-sans-serif,\\n system-ui,\\n sans-serif;\\n font-size: 0.8125rem;\\n line-height: 1.5;\\n letter-spacing: normal;\\n -webkit-font-smoothing: auto;\\n -moz-osx-font-smoothing: auto;\\n}\\n\\n/* ==========================================================================\\n Surface (shared glass effect for tooltips, popovers, controls)\\n ========================================================================== */\\n\\n.media-default-skin .media-surface {\\n background-color: var(--media-surface-background-color);\\n backdrop-filter: var(--media-surface-backdrop-filter);\\n box-shadow:\\n inset 0 0 0 1px var(--media-surface-inner-border-color),\\n 0 1px 3px 0 var(--media-surface-shadow-color),\\n 0 1px 2px -1px var(--media-surface-shadow-color);\\n\\n /* Inner border ring */\\n &::after {\\n content: \\\"\\\";\\n position: absolute;\\n inset: 0;\\n z-index: 10;\\n border-radius: inherit;\\n box-shadow: 0 0 0 1px var(--media-surface-outer-border-color);\\n pointer-events: none;\\n }\\n\\n @media (prefers-reduced-transparency: reduce) {\\n background-color: oklch(from var(--media-surface-background-color) l c h / 0.7);\\n }\\n\\n @media (prefers-contrast: more) {\\n background-color: oklch(from var(--media-surface-background-color) l c h / 0.9);\\n }\\n}\\n\\n/* ==========================================================================\\n Media Element\\n ========================================================================== */\\n\\n.media-default-skin ::slotted(video),\\n.media-default-skin video {\\n display: block;\\n width: 100%;\\n height: 100%;\\n}\\n.media-default-skin ::slotted(video) {\\n border-radius: var(--media-border-radius, 2rem);\\n}\\n.media-default-skin video {\\n border-radius: inherit;\\n}\\n\\n/* ==========================================================================\\n Poster Image\\n ========================================================================== */\\n\\n.media-default-skin > img {\\n position: absolute;\\n inset: 0;\\n width: 100%;\\n height: 100%;\\n border-radius: inherit;\\n object-fit: cover;\\n transition: opacity 0.25s;\\n pointer-events: none;\\n\\n &:not([data-visible]) {\\n opacity: 0;\\n }\\n}\\n\\n/* ==========================================================================\\n Fullscreen\\n ========================================================================== */\\n\\n.media-default-skin:fullscreen video,\\n.media-default-skin:fullscreen ::slotted(video),\\n.media-default-skin > img {\\n object-fit: contain;\\n}\\n.media-default-skin:fullscreen ::slotted(video) {\\n border-radius: 0;\\n}\\n\\n/* ==========================================================================\\n Overlay / Scrim\\n ========================================================================== */\\n\\n.media-default-skin .media-overlay {\\n position: absolute;\\n inset: 0;\\n border-radius: inherit;\\n background-image: linear-gradient(to top, oklch(0 0 0 / 0.5), oklch(0 0 0 / 0.3), oklch(0 0 0 / 0));\\n backdrop-filter: blur(0) saturate(1.5);\\n opacity: 0;\\n transition-property: opacity, backdrop-filter;\\n transition-duration: 300ms;\\n transition-delay: 500ms;\\n transition-timing-function: ease-out;\\n pointer-events: none;\\n\\n @media (prefers-reduced-motion: reduce) {\\n transition-duration: 100ms;\\n }\\n}\\n\\n.media-default-skin .media-controls[data-visible] ~ .media-overlay,\\n.media-default-skin .media-error[data-open] ~ .media-overlay {\\n opacity: 1;\\n transition-duration: 150ms;\\n transition-delay: 0ms;\\n}\\n\\n.media-default-skin .media-error[data-open] ~ .media-overlay {\\n backdrop-filter: blur(16px) saturate(1.5);\\n}\\n\\n/* ==========================================================================\\n Buffering Indicator\\n ========================================================================== */\\n\\n.media-default-skin .media-buffering-indicator {\\n position: absolute;\\n inset: 0;\\n display: none;\\n align-items: center;\\n justify-content: center;\\n color: oklch(1 0 0);\\n pointer-events: none;\\n\\n &[data-visible] {\\n display: flex;\\n }\\n\\n .media-surface {\\n padding: 0.25rem;\\n border-radius: 100%;\\n }\\n}\\n\\n/* ==========================================================================\\n Error Dialog\\n ========================================================================== */\\n\\n.media-default-skin .media-error {\\n position: absolute;\\n inset: 0;\\n z-index: 20;\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n}\\n\\n.media-default-skin .media-error__dialog {\\n display: flex;\\n flex-direction: column;\\n gap: 0.75rem;\\n max-width: 18rem;\\n padding: 0.75rem;\\n border-radius: 1.75rem;\\n color: oklch(1 0 0);\\n font-size: 0.875rem;\\n transition-property: opacity, transform;\\n transition-duration: 500ms;\\n transition-delay: 100ms;\\n transition-timing-function: linear(\\n 0,\\n 0.034 1.5%,\\n 0.763 9.7%,\\n 1.066 13.9%,\\n 1.198 19.9%,\\n 1.184 21.8%,\\n 0.963 37.5%,\\n 0.997 50.9%,\\n 1\\n );\\n\\n /* Simple, fast transition for reduced motion users */\\n @media (prefers-reduced-motion: reduce) {\\n transition-duration: 100ms;\\n transition-delay: 0ms;\\n transition-timing-function: ease-out;\\n }\\n}\\n\\n.media-default-skin .media-error[data-starting-style] .media-error__dialog,\\n.media-default-skin .media-error[data-ending-style] .media-error__dialog {\\n opacity: 0;\\n transform: scale(0.5);\\n}\\n\\n.media-default-skin .media-error__content {\\n display: flex;\\n flex-direction: column;\\n gap: 0.5rem;\\n padding: 0.5rem 0.5rem 0.375rem;\\n}\\n\\n.media-default-skin .media-error__title {\\n font-weight: 600;\\n line-height: 1.25;\\n}\\n\\n.media-default-skin .media-error__description {\\n opacity: 0.7;\\n}\\n\\n.media-default-skin .media-error__actions {\\n display: flex;\\n gap: 0.5rem;\\n\\n & > * {\\n flex: 1;\\n }\\n}\\n\\n/* ==========================================================================\\n Controls\\n ========================================================================== */\\n\\n.media-default-skin .media-controls {\\n container: media-controls / inline-size;\\n display: flex;\\n align-items: center;\\n gap: 0.075rem;\\n padding: 0.175rem;\\n border-radius: calc(infinity * 1px);\\n --media-controls-current-shadow-color: oklch(from currentColor 0 0 0 / clamp(0, calc((l - 0.5) * 0.5), 0.25));\\n --media-controls-current-shadow-color-subtle: oklch(\\n from var(--media-controls-current-shadow-color) l c h /\\n calc(alpha * 0.4)\\n );\\n text-shadow: 0 0 1px var(--media-controls-current-shadow-color);\\n\\n @container media-root (width > 40rem) {\\n gap: 0.125rem;\\n padding: 0.25rem;\\n }\\n}\\n\\n/* ==========================================================================\\n Time Display\\n ========================================================================== */\\n\\n.media-default-skin .media-time {\\n container: media-time / inline-size;\\n display: flex;\\n align-items: center;\\n flex: 1;\\n gap: 0.75rem;\\n padding-inline: 0.5rem;\\n\\n & .media-time__value:first-child {\\n display: none;\\n\\n @container media-time (width > 18rem) {\\n display: block;\\n }\\n }\\n}\\n\\n.media-default-skin .media-time__value {\\n font-variant-numeric: tabular-nums;\\n}\\n\\n/* ==========================================================================\\n Buttons\\n ========================================================================== */\\n\\n/* Base button */\\n.media-default-skin .media-button {\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n flex-shrink: 0;\\n padding: 0.5rem 1rem;\\n background: oklch(1 0 0);\\n border: none;\\n border-radius: calc(infinity * 1px);\\n outline: 2px solid transparent;\\n outline-offset: -2px;\\n color: oklch(0 0 0);\\n font-weight: 500;\\n text-align: center;\\n transition-property: background-color, color, outline-offset, transform;\\n transition-duration: 150ms;\\n transition-timing-function: ease-out;\\n cursor: pointer;\\n user-select: none;\\n\\n &:focus-visible {\\n outline-color: oklch(62.3% 0.214 259.815);\\n outline-offset: 2px;\\n }\\n\\n &[disabled] {\\n opacity: 0.5;\\n filter: grayscale(1);\\n cursor: not-allowed;\\n }\\n\\n &[data-availability=\\\"unavailable\\\"] {\\n display: none;\\n }\\n}\\n\\n/* Icon button variant */\\n.media-default-skin .media-button--icon {\\n display: grid;\\n width: 2.125rem;\\n padding: 0;\\n aspect-ratio: 1;\\n background: transparent;\\n color: inherit;\\n text-shadow: inherit;\\n\\n &:hover,\\n &:focus-visible,\\n &[aria-expanded=\\\"true\\\"] {\\n background-color: oklch(from currentColor l c h / 0.1);\\n text-decoration: none;\\n }\\n\\n &:active {\\n transform: scale(0.9);\\n }\\n\\n & .media-icon {\\n filter: drop-shadow(0 1px 0 var(--media-controls-current-shadow-color, oklch(0 0 0 / 0.25)));\\n }\\n}\\n\\n/* Seek button */\\n.media-default-skin .media-button--seek {\\n & .media-icon__label {\\n position: absolute;\\n right: -1px;\\n bottom: -3px;\\n font-size: 0.75em;\\n font-weight: 480;\\n font-variant-numeric: tabular-nums;\\n }\\n\\n &:has(.media-icon--flipped) .media-icon__label {\\n right: unset;\\n left: -1px;\\n }\\n\\n @container media-controls (width < 28rem) {\\n display: none;\\n }\\n}\\n\\n/* Playback rate button */\\n.media-default-skin .media-button--playback-rate {\\n padding: 0;\\n\\n &::after {\\n content: attr(data-rate) \\\"\\\\00D7\\\";\\n width: 4ch;\\n font-variant-numeric: tabular-nums;\\n }\\n}\\n\\n/* ==========================================================================\\n Icons\\n ========================================================================== */\\n\\n.media-default-skin .media-icon__container {\\n position: relative;\\n}\\n.media-default-skin .media-icon {\\n display: block;\\n flex-shrink: 0;\\n grid-area: 1 / 1;\\n width: 18px;\\n height: 18px;\\n transition-behavior: allow-discrete;\\n transition-property: display, opacity;\\n transition-duration: 150ms;\\n transition-timing-function: ease-out;\\n}\\n.media-default-skin .media-icon--flipped {\\n scale: -1 1;\\n}\\n\\n/* ==========================================================================\\n Slider\\n ========================================================================== */\\n\\n.media-default-skin .media-slider {\\n position: relative;\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n flex: 1;\\n border-radius: calc(infinity * 1px);\\n outline: none;\\n\\n &[data-orientation=\\\"horizontal\\\"] {\\n min-width: 5rem;\\n width: 100%;\\n height: 1.25rem;\\n }\\n\\n &[data-orientation=\\\"vertical\\\"] {\\n width: 1.25rem;\\n height: 5rem;\\n }\\n}\\n\\n/* Track */\\n.media-default-skin .media-slider__track {\\n position: relative;\\n isolation: isolate;\\n overflow: hidden;\\n border-radius: inherit;\\n user-select: none;\\n\\n &[data-orientation=\\\"horizontal\\\"] {\\n width: 100%;\\n height: 0.25rem;\\n }\\n\\n &[data-orientation=\\\"vertical\\\"] {\\n width: 0.25rem;\\n height: 100%;\\n }\\n}\\n\\n/* Thumb */\\n.media-default-skin .media-slider__thumb {\\n z-index: 10;\\n position: absolute;\\n transform: translate(-50%, -50%);\\n width: 0.625rem;\\n height: 0.625rem;\\n background-color: currentColor;\\n border-radius: calc(infinity * 1px);\\n box-shadow:\\n 0 0 0 1px var(--media-controls-current-shadow-color-subtle, oklch(0 0 0 / 0.1)),\\n 0 1px 3px 0 oklch(0 0 0 / 0.15),\\n 0 1px 2px -1px oklch(0 0 0 / 0.15);\\n opacity: 0;\\n transition-property: opacity, height, width, outline-offset;\\n transition-duration: 150ms;\\n transition-timing-function: ease-out;\\n user-select: none;\\n outline: 4px solid transparent;\\n outline-offset: -4px;\\n\\n &[data-orientation=\\\"horizontal\\\"] {\\n top: 50%;\\n left: var(--media-slider-fill);\\n }\\n\\n &[data-orientation=\\\"vertical\\\"] {\\n left: 50%;\\n top: calc(100% - var(--media-slider-fill));\\n }\\n\\n &:hover,\\n &:focus {\\n outline-color: oklch(from currentColor l c h / 0.25);\\n outline-offset: 0;\\n }\\n}\\n\\n.media-default-skin .media-slider:active .media-slider__thumb,\\n.media-default-skin .media-slider__thumb--persistent {\\n width: 0.75rem;\\n height: 0.75rem;\\n}\\n\\n.media-default-skin .media-slider:hover .media-slider__thumb,\\n.media-default-skin .media-slider__thumb:focus-visible,\\n.media-default-skin .media-slider__thumb--persistent {\\n opacity: 1;\\n}\\n\\n/* Shared track fills */\\n.media-default-skin .media-slider__buffer,\\n.media-default-skin .media-slider__fill {\\n position: absolute;\\n border-radius: inherit;\\n pointer-events: none;\\n}\\n\\n.media-default-skin .media-slider__buffer[data-orientation=\\\"horizontal\\\"],\\n.media-default-skin .media-slider__fill[data-orientation=\\\"horizontal\\\"] {\\n inset-block: 0;\\n left: 0;\\n}\\n\\n.media-default-skin .media-slider__buffer[data-orientation=\\\"vertical\\\"],\\n.media-default-skin .media-slider__fill[data-orientation=\\\"vertical\\\"] {\\n inset-inline: 0;\\n bottom: 0;\\n}\\n\\n/* Buffer */\\n.media-default-skin .media-slider__buffer {\\n background-color: oklch(from currentColor l c h / 0.2);\\n transition-duration: 0.25s;\\n transition-timing-function: ease-out;\\n\\n &[data-orientation=\\\"horizontal\\\"] {\\n width: var(--media-slider-buffer);\\n transition-property: width;\\n }\\n\\n &[data-orientation=\\\"vertical\\\"] {\\n height: var(--media-slider-buffer);\\n transition-property: height;\\n }\\n}\\n\\n/* Fill */\\n.media-default-skin .media-slider__fill {\\n background-color: currentColor;\\n\\n &[data-orientation=\\\"horizontal\\\"] {\\n width: var(--media-slider-fill);\\n }\\n\\n &[data-orientation=\\\"vertical\\\"] {\\n height: var(--media-slider-fill);\\n }\\n}\\n\\n/* Time display within slider */\\n.media-default-skin .media-slider__time-display {\\n font-variant-numeric: tabular-nums;\\n}\\n\\n/* ==========================================================================\\n Popups & Tooltips\\n ========================================================================== */\\n\\n.media-default-skin .media-popover,\\n.media-default-skin .media-tooltip {\\n margin: 0;\\n border: 0;\\n color: inherit;\\n overflow: visible;\\n transition-property: transform, scale, opacity, filter;\\n transition-duration: 200ms;\\n\\n &[data-starting-style],\\n &[data-ending-style] {\\n opacity: 0;\\n transform: scale(0);\\n filter: blur(8px);\\n }\\n\\n &[data-instant] {\\n transition-duration: 0ms;\\n }\\n\\n &[data-side=\\\"top\\\"] {\\n transform-origin: bottom;\\n }\\n &[data-side=\\\"bottom\\\"] {\\n transform-origin: top;\\n }\\n &[data-side=\\\"left\\\"] {\\n transform-origin: right;\\n }\\n &[data-side=\\\"right\\\"] {\\n transform-origin: left;\\n }\\n}\\n\\n.media-default-skin .media-popover {\\n --media-popover-side-offset: 0.5rem;\\n}\\n.media-default-skin .media-popover--volume {\\n padding: 0.625rem 0.25rem;\\n border-radius: calc(infinity * 1px);\\n}\\n\\n.media-default-skin .media-tooltip {\\n padding: 0.25rem 0.625rem;\\n border-radius: calc(infinity * 1px);\\n font-size: 0.75rem;\\n white-space: nowrap;\\n --media-tooltip-side-offset: 0.5rem;\\n}\\n\\n/* ==========================================================================\\n Native Caption Track\\n ========================================================================== */\\n\\n.media-default-skin {\\n --media-caption-track-delay: 600ms;\\n --media-caption-track-y: -0.5rem;\\n\\n &:has(.media-controls[data-visible]) {\\n --media-caption-track-delay: 25ms;\\n --media-caption-track-y: -3.5rem;\\n }\\n}\\n\\n.media-default-skin video::-webkit-media-text-track-container {\\n /* NOTE: The delay must account for the controls delay/duration */\\n transition: transform 150ms ease-out;\\n transition-delay: var(--media-caption-track-delay);\\n transform: translateY(var(--media-caption-track-y)) scale(0.98);\\n z-index: 1;\\n font-family: inherit;\\n}\\n\\n@media (prefers-reduced-motion: reduce) {\\n .media-default-skin video::-webkit-media-text-track-container {\\n transition-duration: 50ms;\\n }\\n}\\n\\n\\n/* ==========================================================================\\n Root\\n ========================================================================== */\\n\\n.media-default-skin--video {\\n background: oklch(0 0 0);\\n --media-border-color: oklch(0 0 0 / 0.1);\\n --media-surface-background-color: oklch(1 0 0 / 0.1);\\n --media-surface-inner-border-color: oklch(1 0 0 / 0.05);\\n --media-surface-outer-border-color: oklch(0 0 0 / 0.1);\\n --media-surface-shadow-color: oklch(0 0 0 / 0.15);\\n --media-surface-backdrop-filter: blur(16px) saturate(1.5);\\n\\n @media (prefers-color-scheme: dark) {\\n --media-border-color: oklch(1 0 0 / 0.1);\\n }\\n\\n /* Inner border ring */\\n &::after {\\n content: \\\"\\\";\\n position: absolute;\\n inset: 0;\\n z-index: 10;\\n border-radius: inherit;\\n box-shadow: inset 0 0 0 1px var(--media-border-color);\\n pointer-events: none;\\n }\\n\\n &:fullscreen {\\n border-radius: 0;\\n }\\n}\\n\\n/* ==========================================================================\\n Controls (hide/show behavior)\\n ========================================================================== */\\n\\n.media-default-skin--video .media-controls {\\n position: absolute;\\n bottom: 0.75rem;\\n inset-inline: 0.75rem;\\n z-index: 10;\\n will-change: scale, transform, filter, opacity;\\n transition-property: scale, transform, filter, opacity;\\n transition-duration: 100ms;\\n transition-delay: 0ms;\\n transition-timing-function: ease-out;\\n transform-origin: bottom;\\n color: oklch(1 0 0);\\n\\n &:not([data-visible]) {\\n opacity: 0;\\n scale: 0.9;\\n filter: blur(8px);\\n transition-duration: 300ms;\\n transition-delay: 500ms;\\n pointer-events: none;\\n\\n @media (prefers-reduced-motion: reduce) {\\n scale: 1;\\n filter: blur(0);\\n transition-duration: 100ms;\\n }\\n }\\n}\\n\\n/* ==========================================================================\\n Sliders\\n ========================================================================== */\\n\\n.media-default-skin--video .media-slider__track {\\n background-color: oklch(1 0 0 / 0.2);\\n box-shadow: 0 0 0 1px oklch(0 0 0 / 0.05);\\n}\\n\\nmedia-tooltip-group {\\n display: contents;\\n}\\n\\n\";"],"mappings":";AAAA,mBAAe"}
@@ -95,6 +95,8 @@
95
95
  position: relative;
96
96
  isolation: isolate;
97
97
  display: block;
98
+ height: 100%;
99
+ width: 100%;
98
100
  container: media-root / inline-size;
99
101
  border-radius: var(--media-border-radius, 0.75rem);
100
102
  font-family:
@@ -581,7 +583,7 @@
581
583
  padding: 0.25rem 0.5rem;
582
584
  border-radius: 0.25rem;
583
585
  background-color: oklch(1 0 0 / 0.1);
584
- backdrop-filter: blur(64px) brightness(0.9) saturate(1.5);
586
+ backdrop-filter: blur(16px) saturate(1.5);
585
587
  box-shadow:
586
588
  0 4px 6px -1px oklch(0 0 0 / 0.1),
587
589
  0 2px 4px -2px oklch(0 0 0 / 0.1);
@@ -618,7 +620,7 @@
618
620
  gap: 0.5rem;
619
621
  padding: 0.375rem;
620
622
  background-color: var(--media-controls-background-color);
621
- backdrop-filter: blur(8px) brightness(0.98) saturate(1.2);
623
+ backdrop-filter: blur(16px) saturate(1.5);
622
624
  border-radius: var(--media-border-radius, 0.75rem);
623
625
  color: var(--media-controls-text-color);
624
626
  box-shadow: 0 0 0 1px var(--media-controls-border-color);
@@ -634,3 +636,7 @@
634
636
  --media-popover-side-offset: 0.75rem;
635
637
  }
636
638
 
639
+ media-tooltip-group {
640
+ display: contents;
641
+ }
642
+
@@ -1 +1 @@
1
- {"version":3,"file":"minimal-skin.d.ts","names":[],"sources":["../../../../src/define/audio/minimal-skin.ts"],"mappings":";;;iBAmBS,eAAA,CAAA;AAAA,cAAe,4BAAA;;;;cAkFX,uBAAA,SAAgC,4BAAA;EAAA,gBAC3B,OAAA;EAAA,OACT,MAAA,EAAM,aAAA;EAAA,OACN,eAAA,SAAe,eAAA;AAAA;AAAA,QAKhB,MAAA;EAAA,UACI,qBAAA;IAAA,CACP,uBAAA,CAAwB,OAAA,GAAU,uBAAA;EAAA;AAAA"}
1
+ {"version":3,"file":"minimal-skin.d.ts","names":[],"sources":["../../../../src/define/audio/minimal-skin.ts"],"mappings":";;;iBAoBS,eAAA,CAAA;AAAA,cAAe,4BAAA;;;;cAoFX,uBAAA,SAAgC,4BAAA;EAAA,gBAC3B,OAAA;EAAA,OACT,MAAA,EAAM,aAAA;EAAA,OACN,eAAA,SAAe,eAAA;AAAA;AAAA,QAKhB,MAAA;EAAA,UACI,qBAAA;IAAA,CACP,uBAAA,CAAwB,OAAA,GAAU,uBAAA;EAAA;AAAA"}
@@ -9,6 +9,7 @@ import "../ui/seek-button.js";
9
9
  import "../ui/time.js";
10
10
  import "../ui/time-slider.js";
11
11
  import "../ui/tooltip.js";
12
+ import "../ui/tooltip-group.js";
12
13
  import "../ui/volume-slider.js";
13
14
  import minimal_skin_default from "../../_virtual/inline-css_src/define/audio/minimal-skin.js";
14
15
  import { ReactiveElement } from "@videojs/element";
@@ -21,77 +22,79 @@ function getTemplateHTML() {
21
22
  <slot name="media"></slot>
22
23
 
23
24
  <div class="media-controls">
24
- <span class="media-button-group">
25
- <media-play-button commandfor="play-tooltip" class="media-button media-button--icon media-button--play">
26
- ${renderIcon("restart", { class: "media-icon media-icon--restart" })}
27
- ${renderIcon("play", { class: "media-icon media-icon--play" })}
28
- ${renderIcon("pause", { class: "media-icon media-icon--pause" })}
29
- </media-play-button>
30
- <media-tooltip id="play-tooltip" side="top" class="media-tooltip">
31
- <span class="media-tooltip-label media-tooltip-label--replay">Replay</span>
32
- <span class="media-tooltip-label media-tooltip-label--play">Play</span>
33
- <span class="media-tooltip-label media-tooltip-label--pause">Pause</span>
34
- </media-tooltip>
25
+ <media-tooltip-group>
26
+ <div class="media-button-group">
27
+ <media-play-button commandfor="play-tooltip" class="media-button media-button--icon media-button--play">
28
+ ${renderIcon("restart", { class: "media-icon media-icon--restart" })}
29
+ ${renderIcon("play", { class: "media-icon media-icon--play" })}
30
+ ${renderIcon("pause", { class: "media-icon media-icon--pause" })}
31
+ </media-play-button>
32
+ <media-tooltip id="play-tooltip" side="top" class="media-tooltip">
33
+ <span class="media-tooltip-label media-tooltip-label--replay">Replay</span>
34
+ <span class="media-tooltip-label media-tooltip-label--play">Play</span>
35
+ <span class="media-tooltip-label media-tooltip-label--pause">Pause</span>
36
+ </media-tooltip>
35
37
 
36
- <media-seek-button commandfor="seek-backward-tooltip" seconds="${-SEEK_TIME}" class="media-button media-button--icon media-button--seek">
37
- <span class="media-icon__container">
38
- ${renderIcon("seek", { class: "media-icon media-icon--seek media-icon--flipped" })}
39
- <span class="media-icon__label">${SEEK_TIME}</span>
40
- </span>
41
- </media-seek-button>
42
- <media-tooltip id="seek-backward-tooltip" side="top" class="media-tooltip">
43
- Seek backward ${SEEK_TIME} seconds
44
- </media-tooltip>
38
+ <media-seek-button commandfor="seek-backward-tooltip" seconds="${-SEEK_TIME}" class="media-button media-button--icon media-button--seek">
39
+ <span class="media-icon__container">
40
+ ${renderIcon("seek", { class: "media-icon media-icon--seek media-icon--flipped" })}
41
+ <span class="media-icon__label">${SEEK_TIME}</span>
42
+ </span>
43
+ </media-seek-button>
44
+ <media-tooltip id="seek-backward-tooltip" side="top" class="media-tooltip">
45
+ Seek backward ${SEEK_TIME} seconds
46
+ </media-tooltip>
45
47
 
46
- <media-seek-button commandfor="seek-forward-tooltip" seconds="${SEEK_TIME}" class="media-button media-button--icon media-button--seek">
47
- <span class="media-icon__container">
48
- ${renderIcon("seek", { class: "media-icon media-icon--seek" })}
49
- <span class="media-icon__label">${SEEK_TIME}</span>
50
- </span>
51
- </media-seek-button>
52
- <media-tooltip id="seek-forward-tooltip" side="top" class="media-tooltip">
53
- Seek forward ${SEEK_TIME} seconds
54
- </media-tooltip>
55
- </span>
48
+ <media-seek-button commandfor="seek-forward-tooltip" seconds="${SEEK_TIME}" class="media-button media-button--icon media-button--seek">
49
+ <span class="media-icon__container">
50
+ ${renderIcon("seek", { class: "media-icon media-icon--seek" })}
51
+ <span class="media-icon__label">${SEEK_TIME}</span>
52
+ </span>
53
+ </media-seek-button>
54
+ <media-tooltip id="seek-forward-tooltip" side="top" class="media-tooltip">
55
+ Seek forward ${SEEK_TIME} seconds
56
+ </media-tooltip>
57
+ </div>
56
58
 
57
- <span class="media-time-controls">
58
- <media-time-group class="media-time">
59
- <media-time type="current" class="media-time__value media-time__value--current"></media-time>
60
- <media-time-separator class="media-time__separator"></media-time-separator>
61
- <media-time type="duration" class="media-time__value media-time__value--duration"></media-time>
62
- </media-time-group>
59
+ <div class="media-time-controls">
60
+ <media-time-group class="media-time">
61
+ <media-time type="current" class="media-time__value media-time__value--current"></media-time>
62
+ <media-time-separator class="media-time__separator"></media-time-separator>
63
+ <media-time type="duration" class="media-time__value media-time__value--duration"></media-time>
64
+ </media-time-group>
63
65
 
64
- <media-time-slider class="media-slider">
65
- <media-slider-track class="media-slider__track">
66
- <media-slider-fill class="media-slider__fill"></media-slider-fill>
67
- <media-slider-buffer class="media-slider__buffer"></media-slider-buffer>
68
- </media-slider-track>
69
- <media-slider-thumb class="media-slider__thumb"></media-slider-thumb>
70
- </media-time-slider>
71
- </span>
72
-
73
- <span class="media-button-group">
74
- <media-playback-rate-button commandfor="playback-rate-tooltip" class="media-button media-button--icon media-button--playback-rate">
75
- </media-playback-rate-button>
76
- <media-tooltip id="playback-rate-tooltip" side="top" class="media-tooltip">
77
- Toggle playback rate
78
- </media-tooltip>
79
-
80
- <media-mute-button commandfor="audio-volume-popover" class="media-button media-button--icon media-button--mute">
81
- ${renderIcon("volume-off", { class: "media-icon media-icon--volume-off" })}
82
- ${renderIcon("volume-low", { class: "media-icon media-icon--volume-low" })}
83
- ${renderIcon("volume-high", { class: "media-icon media-icon--volume-high" })}
84
- </media-mute-button>
85
-
86
- <media-popover id="audio-volume-popover" open-on-hover delay="200" close-delay="100" side="left" class="media-popover media-popover--volume">
87
- <media-volume-slider class="media-slider" orientation="horizontal" thumb-alignment="edge">
66
+ <media-time-slider class="media-slider">
88
67
  <media-slider-track class="media-slider__track">
89
68
  <media-slider-fill class="media-slider__fill"></media-slider-fill>
69
+ <media-slider-buffer class="media-slider__buffer"></media-slider-buffer>
90
70
  </media-slider-track>
91
- <media-slider-thumb class="media-slider__thumb media-slider__thumb--persistent"></media-slider-thumb>
92
- </media-volume-slider>
93
- </media-popover>
94
- </span>
71
+ <media-slider-thumb class="media-slider__thumb"></media-slider-thumb>
72
+ </media-time-slider>
73
+ </div>
74
+
75
+ <div class="media-button-group">
76
+ <media-playback-rate-button commandfor="playback-rate-tooltip" class="media-button media-button--icon media-button--playback-rate">
77
+ </media-playback-rate-button>
78
+ <media-tooltip id="playback-rate-tooltip" side="top" class="media-tooltip">
79
+ Toggle playback rate
80
+ </media-tooltip>
81
+
82
+ <media-mute-button commandfor="audio-volume-popover" class="media-button media-button--icon media-button--mute">
83
+ ${renderIcon("volume-off", { class: "media-icon media-icon--volume-off" })}
84
+ ${renderIcon("volume-low", { class: "media-icon media-icon--volume-low" })}
85
+ ${renderIcon("volume-high", { class: "media-icon media-icon--volume-high" })}
86
+ </media-mute-button>
87
+
88
+ <media-popover id="audio-volume-popover" open-on-hover delay="200" close-delay="100" side="left" class="media-popover media-popover--volume">
89
+ <media-volume-slider class="media-slider" orientation="horizontal" thumb-alignment="edge">
90
+ <media-slider-track class="media-slider__track">
91
+ <media-slider-fill class="media-slider__fill"></media-slider-fill>
92
+ </media-slider-track>
93
+ <media-slider-thumb class="media-slider__thumb media-slider__thumb--persistent"></media-slider-thumb>
94
+ </media-volume-slider>
95
+ </media-popover>
96
+ </div>
97
+ </media-tooltip-group>
95
98
  </div>
96
99
  </media-container>
97
100
  `;
@@ -1 +1 @@
1
- {"version":3,"file":"minimal-skin.js","names":["styles"],"sources":["../../../../src/define/audio/minimal-skin.ts"],"sourcesContent":["import { ReactiveElement } from '@videojs/element';\nimport { renderIcon } from '@videojs/icons/render/minimal';\nimport { createStyles, SkinMixin } from '../skin-mixin';\nimport styles from './minimal-skin.css?inline';\n\n// Side-effect imports: register all custom elements used in the template.\nimport '../media/container';\nimport '../ui/mute-button';\nimport '../ui/play-button';\nimport '../ui/playback-rate-button';\nimport '../ui/popover';\nimport '../ui/seek-button';\nimport '../ui/time';\nimport '../ui/time-slider';\nimport '../ui/tooltip';\nimport '../ui/volume-slider';\n\nconst SEEK_TIME = 10;\n\nfunction getTemplateHTML() {\n return /*html*/ `\n <media-container class=\"media-minimal-skin media-minimal-skin--audio\">\n <slot name=\"media\"></slot>\n\n <div class=\"media-controls\">\n <span class=\"media-button-group\">\n <media-play-button commandfor=\"play-tooltip\" class=\"media-button media-button--icon media-button--play\">\n ${renderIcon('restart', { class: 'media-icon media-icon--restart' })}\n ${renderIcon('play', { class: 'media-icon media-icon--play' })}\n ${renderIcon('pause', { class: 'media-icon media-icon--pause' })}\n </media-play-button>\n <media-tooltip id=\"play-tooltip\" side=\"top\" class=\"media-tooltip\">\n <span class=\"media-tooltip-label media-tooltip-label--replay\">Replay</span>\n <span class=\"media-tooltip-label media-tooltip-label--play\">Play</span>\n <span class=\"media-tooltip-label media-tooltip-label--pause\">Pause</span>\n </media-tooltip>\n\n <media-seek-button commandfor=\"seek-backward-tooltip\" seconds=\"${-SEEK_TIME}\" class=\"media-button media-button--icon media-button--seek\">\n <span class=\"media-icon__container\">\n ${renderIcon('seek', { class: 'media-icon media-icon--seek media-icon--flipped' })}\n <span class=\"media-icon__label\">${SEEK_TIME}</span>\n </span>\n </media-seek-button>\n <media-tooltip id=\"seek-backward-tooltip\" side=\"top\" class=\"media-tooltip\">\n Seek backward ${SEEK_TIME} seconds\n </media-tooltip>\n\n <media-seek-button commandfor=\"seek-forward-tooltip\" seconds=\"${SEEK_TIME}\" class=\"media-button media-button--icon media-button--seek\">\n <span class=\"media-icon__container\">\n ${renderIcon('seek', { class: 'media-icon media-icon--seek' })}\n <span class=\"media-icon__label\">${SEEK_TIME}</span>\n </span>\n </media-seek-button>\n <media-tooltip id=\"seek-forward-tooltip\" side=\"top\" class=\"media-tooltip\">\n Seek forward ${SEEK_TIME} seconds\n </media-tooltip>\n </span>\n\n <span class=\"media-time-controls\">\n <media-time-group class=\"media-time\">\n <media-time type=\"current\" class=\"media-time__value media-time__value--current\"></media-time>\n <media-time-separator class=\"media-time__separator\"></media-time-separator>\n <media-time type=\"duration\" class=\"media-time__value media-time__value--duration\"></media-time>\n </media-time-group>\n\n <media-time-slider class=\"media-slider\">\n <media-slider-track class=\"media-slider__track\">\n <media-slider-fill class=\"media-slider__fill\"></media-slider-fill>\n <media-slider-buffer class=\"media-slider__buffer\"></media-slider-buffer>\n </media-slider-track>\n <media-slider-thumb class=\"media-slider__thumb\"></media-slider-thumb>\n </media-time-slider>\n </span>\n\n <span class=\"media-button-group\">\n <media-playback-rate-button commandfor=\"playback-rate-tooltip\" class=\"media-button media-button--icon media-button--playback-rate\">\n </media-playback-rate-button>\n <media-tooltip id=\"playback-rate-tooltip\" side=\"top\" class=\"media-tooltip\">\n Toggle playback rate\n </media-tooltip>\n\n <media-mute-button commandfor=\"audio-volume-popover\" class=\"media-button media-button--icon media-button--mute\">\n ${renderIcon('volume-off', { class: 'media-icon media-icon--volume-off' })}\n ${renderIcon('volume-low', { class: 'media-icon media-icon--volume-low' })}\n ${renderIcon('volume-high', { class: 'media-icon media-icon--volume-high' })}\n </media-mute-button>\n\n <media-popover id=\"audio-volume-popover\" open-on-hover delay=\"200\" close-delay=\"100\" side=\"left\" class=\"media-popover media-popover--volume\">\n <media-volume-slider class=\"media-slider\" orientation=\"horizontal\" thumb-alignment=\"edge\">\n <media-slider-track class=\"media-slider__track\">\n <media-slider-fill class=\"media-slider__fill\"></media-slider-fill>\n </media-slider-track>\n <media-slider-thumb class=\"media-slider__thumb media-slider__thumb--persistent\"></media-slider-thumb>\n </media-volume-slider>\n </media-popover>\n </span>\n </div>\n </media-container>\n `;\n}\n\nexport class MinimalAudioSkinElement extends SkinMixin(ReactiveElement) {\n static readonly tagName = 'audio-minimal-skin';\n static styles = createStyles(styles);\n static getTemplateHTML = getTemplateHTML;\n}\n\ncustomElements.define(MinimalAudioSkinElement.tagName, MinimalAudioSkinElement);\n\ndeclare global {\n interface HTMLElementTagNameMap {\n [MinimalAudioSkinElement.tagName]: MinimalAudioSkinElement;\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;AAiBA,MAAM,YAAY;AAElB,SAAS,kBAAkB;AACzB,QAAgB;;;;;;;cAOJ,WAAW,WAAW,EAAE,OAAO,kCAAkC,CAAC,CAAC;cACnE,WAAW,QAAQ,EAAE,OAAO,+BAA+B,CAAC,CAAC;cAC7D,WAAW,SAAS,EAAE,OAAO,gCAAgC,CAAC,CAAC;;;;;;;;2EAQF,CAAC,UAAU;;gBAEtE,WAAW,QAAQ,EAAE,OAAO,mDAAmD,CAAC,CAAC;gDACjD,UAAU;;;;4BAI9B,UAAU;;;0EAGoC,UAAU;;gBAEpE,WAAW,QAAQ,EAAE,OAAO,+BAA+B,CAAC,CAAC;gDAC7B,UAAU;;;;2BAI/B,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;cA4BvB,WAAW,cAAc,EAAE,OAAO,qCAAqC,CAAC,CAAC;cACzE,WAAW,cAAc,EAAE,OAAO,qCAAqC,CAAC,CAAC;cACzE,WAAW,eAAe,EAAE,OAAO,sCAAsC,CAAC,CAAC;;;;;;;;;;;;;;;;AAiBzF,IAAa,0BAAb,cAA6C,UAAU,gBAAgB,CAAC;;iBAC5C;;;gBACV,aAAaA,qBAAO;;;yBACX;;;AAG3B,eAAe,OAAO,wBAAwB,SAAS,wBAAwB"}
1
+ {"version":3,"file":"minimal-skin.js","names":["styles"],"sources":["../../../../src/define/audio/minimal-skin.ts"],"sourcesContent":["import { ReactiveElement } from '@videojs/element';\nimport { renderIcon } from '@videojs/icons/render/minimal';\nimport { createStyles, SkinMixin } from '../skin-mixin';\nimport styles from './minimal-skin.css?inline';\n\n// Side-effect imports: register all custom elements used in the template.\nimport '../media/container';\nimport '../ui/mute-button';\nimport '../ui/play-button';\nimport '../ui/playback-rate-button';\nimport '../ui/popover';\nimport '../ui/seek-button';\nimport '../ui/time';\nimport '../ui/time-slider';\nimport '../ui/tooltip';\nimport '../ui/tooltip-group';\nimport '../ui/volume-slider';\n\nconst SEEK_TIME = 10;\n\nfunction getTemplateHTML() {\n return /*html*/ `\n <media-container class=\"media-minimal-skin media-minimal-skin--audio\">\n <slot name=\"media\"></slot>\n\n <div class=\"media-controls\">\n <media-tooltip-group>\n <div class=\"media-button-group\">\n <media-play-button commandfor=\"play-tooltip\" class=\"media-button media-button--icon media-button--play\">\n ${renderIcon('restart', { class: 'media-icon media-icon--restart' })}\n ${renderIcon('play', { class: 'media-icon media-icon--play' })}\n ${renderIcon('pause', { class: 'media-icon media-icon--pause' })}\n </media-play-button>\n <media-tooltip id=\"play-tooltip\" side=\"top\" class=\"media-tooltip\">\n <span class=\"media-tooltip-label media-tooltip-label--replay\">Replay</span>\n <span class=\"media-tooltip-label media-tooltip-label--play\">Play</span>\n <span class=\"media-tooltip-label media-tooltip-label--pause\">Pause</span>\n </media-tooltip>\n\n <media-seek-button commandfor=\"seek-backward-tooltip\" seconds=\"${-SEEK_TIME}\" class=\"media-button media-button--icon media-button--seek\">\n <span class=\"media-icon__container\">\n ${renderIcon('seek', { class: 'media-icon media-icon--seek media-icon--flipped' })}\n <span class=\"media-icon__label\">${SEEK_TIME}</span>\n </span>\n </media-seek-button>\n <media-tooltip id=\"seek-backward-tooltip\" side=\"top\" class=\"media-tooltip\">\n Seek backward ${SEEK_TIME} seconds\n </media-tooltip>\n\n <media-seek-button commandfor=\"seek-forward-tooltip\" seconds=\"${SEEK_TIME}\" class=\"media-button media-button--icon media-button--seek\">\n <span class=\"media-icon__container\">\n ${renderIcon('seek', { class: 'media-icon media-icon--seek' })}\n <span class=\"media-icon__label\">${SEEK_TIME}</span>\n </span>\n </media-seek-button>\n <media-tooltip id=\"seek-forward-tooltip\" side=\"top\" class=\"media-tooltip\">\n Seek forward ${SEEK_TIME} seconds\n </media-tooltip>\n </div>\n\n <div class=\"media-time-controls\">\n <media-time-group class=\"media-time\">\n <media-time type=\"current\" class=\"media-time__value media-time__value--current\"></media-time>\n <media-time-separator class=\"media-time__separator\"></media-time-separator>\n <media-time type=\"duration\" class=\"media-time__value media-time__value--duration\"></media-time>\n </media-time-group>\n\n <media-time-slider class=\"media-slider\">\n <media-slider-track class=\"media-slider__track\">\n <media-slider-fill class=\"media-slider__fill\"></media-slider-fill>\n <media-slider-buffer class=\"media-slider__buffer\"></media-slider-buffer>\n </media-slider-track>\n <media-slider-thumb class=\"media-slider__thumb\"></media-slider-thumb>\n </media-time-slider>\n </div>\n\n <div class=\"media-button-group\">\n <media-playback-rate-button commandfor=\"playback-rate-tooltip\" class=\"media-button media-button--icon media-button--playback-rate\">\n </media-playback-rate-button>\n <media-tooltip id=\"playback-rate-tooltip\" side=\"top\" class=\"media-tooltip\">\n Toggle playback rate\n </media-tooltip>\n\n <media-mute-button commandfor=\"audio-volume-popover\" class=\"media-button media-button--icon media-button--mute\">\n ${renderIcon('volume-off', { class: 'media-icon media-icon--volume-off' })}\n ${renderIcon('volume-low', { class: 'media-icon media-icon--volume-low' })}\n ${renderIcon('volume-high', { class: 'media-icon media-icon--volume-high' })}\n </media-mute-button>\n\n <media-popover id=\"audio-volume-popover\" open-on-hover delay=\"200\" close-delay=\"100\" side=\"left\" class=\"media-popover media-popover--volume\">\n <media-volume-slider class=\"media-slider\" orientation=\"horizontal\" thumb-alignment=\"edge\">\n <media-slider-track class=\"media-slider__track\">\n <media-slider-fill class=\"media-slider__fill\"></media-slider-fill>\n </media-slider-track>\n <media-slider-thumb class=\"media-slider__thumb media-slider__thumb--persistent\"></media-slider-thumb>\n </media-volume-slider>\n </media-popover>\n </div>\n </media-tooltip-group>\n </div>\n </media-container>\n `;\n}\n\nexport class MinimalAudioSkinElement extends SkinMixin(ReactiveElement) {\n static readonly tagName = 'audio-minimal-skin';\n static styles = createStyles(styles);\n static getTemplateHTML = getTemplateHTML;\n}\n\ncustomElements.define(MinimalAudioSkinElement.tagName, MinimalAudioSkinElement);\n\ndeclare global {\n interface HTMLElementTagNameMap {\n [MinimalAudioSkinElement.tagName]: MinimalAudioSkinElement;\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;AAkBA,MAAM,YAAY;AAElB,SAAS,kBAAkB;AACzB,QAAgB;;;;;;;;gBAQF,WAAW,WAAW,EAAE,OAAO,kCAAkC,CAAC,CAAC;gBACnE,WAAW,QAAQ,EAAE,OAAO,+BAA+B,CAAC,CAAC;gBAC7D,WAAW,SAAS,EAAE,OAAO,gCAAgC,CAAC,CAAC;;;;;;;;6EAQF,CAAC,UAAU;;kBAEtE,WAAW,QAAQ,EAAE,OAAO,mDAAmD,CAAC,CAAC;kDACjD,UAAU;;;;8BAI9B,UAAU;;;4EAGoC,UAAU;;kBAEpE,WAAW,QAAQ,EAAE,OAAO,+BAA+B,CAAC,CAAC;kDAC7B,UAAU;;;;6BAI/B,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;gBA4BvB,WAAW,cAAc,EAAE,OAAO,qCAAqC,CAAC,CAAC;gBACzE,WAAW,cAAc,EAAE,OAAO,qCAAqC,CAAC,CAAC;gBACzE,WAAW,eAAe,EAAE,OAAO,sCAAsC,CAAC,CAAC;;;;;;;;;;;;;;;;;AAkB3F,IAAa,0BAAb,cAA6C,UAAU,gBAAgB,CAAC;;iBAC5C;;;gBACV,aAAaA,qBAAO;;;yBACX;;;AAG3B,eAAe,OAAO,wBAAwB,SAAS,wBAAwB"}
@@ -1 +1 @@
1
- {"version":3,"file":"minimal-skin.tailwind.d.ts","names":[],"sources":["../../../../src/define/audio/minimal-skin.tailwind.ts"],"mappings":";;;iBAmCS,eAAA,CAAA;AAAA,cAAe,oCAAA;;;;cAoFX,+BAAA,SAAwC,oCAAA;EAAA,gBACnC,OAAA;EAAA,OACT,eAAA,SAAe,eAAA;AAAA;AAAA,QAKhB,MAAA;EAAA,UACI,qBAAA;IAAA,CACP,+BAAA,CAAgC,OAAA,GAAU,+BAAA;EAAA;AAAA"}
1
+ {"version":3,"file":"minimal-skin.tailwind.d.ts","names":[],"sources":["../../../../src/define/audio/minimal-skin.tailwind.ts"],"mappings":";;;iBAoCS,eAAA,CAAA;AAAA,cAAe,oCAAA;;;;cAsFX,+BAAA,SAAwC,oCAAA;EAAA,gBACnC,OAAA;EAAA,OACT,eAAA,SAAe,eAAA;AAAA;AAAA,QAKhB,MAAA;EAAA,UACI,qBAAA;IAAA,CACP,+BAAA,CAAgC,OAAA,GAAU,+BAAA;EAAA;AAAA"}
@@ -1,5 +1,7 @@
1
1
  import { SkinMixin } from "../skin-mixin.js";
2
2
  import { renderIcon } from "../../icons/dist/render/minimal/index.js";
3
+ import { iconState } from "../../skins/dist/default/shared/tailwind/icon-state.js";
4
+ import { tooltipState } from "../../skins/dist/default/shared/tailwind/tooltip-state.js";
3
5
  import { button } from "../../skins/dist/default/minimal/tailwind/components/button.js";
4
6
  import { buttonGroup } from "../../skins/dist/default/minimal/tailwind/components/button-group.js";
5
7
  import { icon, iconContainer, iconFlipped } from "../../skins/dist/default/minimal/tailwind/components/icon.js";
@@ -15,9 +17,10 @@ import "../ui/seek-button.js";
15
17
  import "../ui/time.js";
16
18
  import "../ui/time-slider.js";
17
19
  import "../ui/tooltip.js";
20
+ import "../ui/tooltip-group.js";
18
21
  import "../ui/volume-slider.js";
19
22
  import { playbackRate } from "../../skins/dist/default/default/tailwind/components/playback-rate.js";
20
- import { controls, iconState, popup, root, tooltipState } from "../../skins/dist/default/minimal/tailwind/audio.tailwind.js";
23
+ import { controls, popup, root } from "../../skins/dist/default/minimal/tailwind/audio.tailwind.js";
21
24
  import { ReactiveElement } from "@videojs/element";
22
25
  import { cn } from "@videojs/utils/style";
23
26
 
@@ -29,79 +32,81 @@ function getTemplateHTML() {
29
32
  <slot name="media"></slot>
30
33
 
31
34
  <div class="${controls}">
32
- <span class="${buttonGroup}">
33
- <span class="${tooltipState.play.wrapper}">
34
- <media-play-button commandfor="play-tooltip" class="${cn(button.base, button.icon, iconState.play.button)}">
35
- ${renderIcon("restart", { class: cn(icon, iconState.play.restart) })}
36
- ${renderIcon("play", { class: cn(icon, iconState.play.play) })}
37
- ${renderIcon("pause", { class: cn(icon, iconState.play.pause) })}
38
- </media-play-button>
39
- <media-tooltip id="play-tooltip" side="top" class="${cn(popup.tooltip)}">
40
- <span class="${tooltipState.play.replay}">Replay</span>
41
- <span class="${tooltipState.play.play}">Play</span>
42
- <span class="${tooltipState.play.pause}">Pause</span>
43
- </media-tooltip>
44
- </span>
45
-
46
- <media-seek-button commandfor="seek-backward-tooltip" seconds="${-SEEK_TIME}" class="${cn(button.base, button.icon, seek.button)}">
47
- <span class="${iconContainer}">
48
- ${renderIcon("seek", { class: cn(icon, iconFlipped) })}
49
- <span class="${cn(seek.label, seek.labelBackward)}">${SEEK_TIME}</span>
50
- </span>
51
- </media-seek-button>
52
- <media-tooltip id="seek-backward-tooltip" side="top" class="${cn(popup.tooltip)}">
53
- Seek backward ${SEEK_TIME} seconds
54
- </media-tooltip>
55
-
56
- <media-seek-button commandfor="seek-forward-tooltip" seconds="${SEEK_TIME}" class="${cn(button.base, button.icon, seek.button)}">
57
- <span class="${iconContainer}">
58
- ${renderIcon("seek", { class: icon })}
59
- <span class="${cn(seek.label, seek.labelForward)}">${SEEK_TIME}</span>
35
+ <media-tooltip-group class="contents">
36
+ <div class="${buttonGroup}">
37
+ <span class="${tooltipState.play.wrapper}">
38
+ <media-play-button commandfor="play-tooltip" class="${cn(button.base, button.icon, iconState.play.button)}">
39
+ ${renderIcon("restart", { class: cn(icon, iconState.play.restart) })}
40
+ ${renderIcon("play", { class: cn(icon, iconState.play.play) })}
41
+ ${renderIcon("pause", { class: cn(icon, iconState.play.pause) })}
42
+ </media-play-button>
43
+ <media-tooltip id="play-tooltip" side="top" class="${cn(popup.tooltip)}">
44
+ <span class="${tooltipState.play.replay}">Replay</span>
45
+ <span class="${tooltipState.play.play}">Play</span>
46
+ <span class="${tooltipState.play.pause}">Pause</span>
47
+ </media-tooltip>
60
48
  </span>
61
- </media-seek-button>
62
- <media-tooltip id="seek-forward-tooltip" side="top" class="${cn(popup.tooltip)}">
63
- Seek forward ${SEEK_TIME} seconds
64
- </media-tooltip>
65
- </span>
66
-
67
- <span class="${time.controls}">
68
- <media-time-group class="${time.group}">
69
- <media-time type="current" class="${time.current}"></media-time>
70
- <media-time-separator class="${time.separator}"></media-time-separator>
71
- <media-time type="duration" class="${time.duration}"></media-time>
72
- </media-time-group>
73
49
 
74
- <media-time-slider class="${slider.root}">
75
- <media-slider-track class="${slider.track}">
76
- <media-slider-fill class="${cn(slider.fill.base, slider.fill.fill)}"></media-slider-fill>
77
- <media-slider-buffer class="${cn(slider.fill.base, slider.fill.buffer)}"></media-slider-buffer>
78
- </media-slider-track>
79
- <media-slider-thumb class="${cn(slider.thumb.base, slider.thumb.interactive)}"></media-slider-thumb>
80
- </media-time-slider>
81
- </span>
50
+ <media-seek-button commandfor="seek-backward-tooltip" seconds="${-SEEK_TIME}" class="${cn(button.base, button.icon, seek.button)}">
51
+ <span class="${iconContainer}">
52
+ ${renderIcon("seek", { class: cn(icon, iconFlipped) })}
53
+ <span class="${cn(seek.label, seek.labelBackward)}">${SEEK_TIME}</span>
54
+ </span>
55
+ </media-seek-button>
56
+ <media-tooltip id="seek-backward-tooltip" side="top" class="${cn(popup.tooltip)}">
57
+ Seek backward ${SEEK_TIME} seconds
58
+ </media-tooltip>
82
59
 
83
- <span class="${buttonGroup}">
84
- <media-playback-rate-button commandfor="playback-rate-tooltip" class="${cn(button.base, button.icon, playbackRate.button)}">
85
- </media-playback-rate-button>
86
- <media-tooltip id="playback-rate-tooltip" side="top" class="${cn(popup.tooltip)}">
87
- Toggle playback rate
88
- </media-tooltip>
60
+ <media-seek-button commandfor="seek-forward-tooltip" seconds="${SEEK_TIME}" class="${cn(button.base, button.icon, seek.button)}">
61
+ <span class="${iconContainer}">
62
+ ${renderIcon("seek", { class: icon })}
63
+ <span class="${cn(seek.label, seek.labelForward)}">${SEEK_TIME}</span>
64
+ </span>
65
+ </media-seek-button>
66
+ <media-tooltip id="seek-forward-tooltip" side="top" class="${cn(popup.tooltip)}">
67
+ Seek forward ${SEEK_TIME} seconds
68
+ </media-tooltip>
69
+ </div>
89
70
 
90
- <media-mute-button commandfor="audio-volume-popover" class="${cn(button.base, button.icon, iconState.mute.button)}">
91
- ${renderIcon("volume-off", { class: cn(icon, iconState.mute.volumeOff) })}
92
- ${renderIcon("volume-low", { class: cn(icon, iconState.mute.volumeLow) })}
93
- ${renderIcon("volume-high", { class: cn(icon, iconState.mute.volumeHigh) })}
94
- </media-mute-button>
71
+ <div class="${time.controls}">
72
+ <media-time-group class="${time.group}">
73
+ <media-time type="current" class="${time.current}"></media-time>
74
+ <media-time-separator class="${time.separator}"></media-time-separator>
75
+ <media-time type="duration" class="${time.duration}"></media-time>
76
+ </media-time-group>
95
77
 
96
- <media-popover id="audio-volume-popover" open-on-hover delay="200" close-delay="100" side="left" class="${cn(popup.volume)}">
97
- <media-volume-slider class="${slider.root}" orientation="horizontal" thumb-alignment="edge">
78
+ <media-time-slider class="${slider.root}">
98
79
  <media-slider-track class="${slider.track}">
99
80
  <media-slider-fill class="${cn(slider.fill.base, slider.fill.fill)}"></media-slider-fill>
81
+ <media-slider-buffer class="${cn(slider.fill.base, slider.fill.buffer)}"></media-slider-buffer>
100
82
  </media-slider-track>
101
- <media-slider-thumb class="${slider.thumb.base}"></media-slider-thumb>
102
- </media-volume-slider>
103
- </media-popover>
104
- </span>
83
+ <media-slider-thumb class="${cn(slider.thumb.base, slider.thumb.interactive)}"></media-slider-thumb>
84
+ </media-time-slider>
85
+ </div>
86
+
87
+ <div class="${buttonGroup}">
88
+ <media-playback-rate-button commandfor="playback-rate-tooltip" class="${cn(button.base, button.icon, playbackRate.button)}">
89
+ </media-playback-rate-button>
90
+ <media-tooltip id="playback-rate-tooltip" side="top" class="${cn(popup.tooltip)}">
91
+ Toggle playback rate
92
+ </media-tooltip>
93
+
94
+ <media-mute-button commandfor="audio-volume-popover" class="${cn(button.base, button.icon, iconState.mute.button)}">
95
+ ${renderIcon("volume-off", { class: cn(icon, iconState.mute.volumeOff) })}
96
+ ${renderIcon("volume-low", { class: cn(icon, iconState.mute.volumeLow) })}
97
+ ${renderIcon("volume-high", { class: cn(icon, iconState.mute.volumeHigh) })}
98
+ </media-mute-button>
99
+
100
+ <media-popover id="audio-volume-popover" open-on-hover delay="200" close-delay="100" side="left" class="${cn(popup.volume)}">
101
+ <media-volume-slider class="${slider.root}" orientation="horizontal" thumb-alignment="edge">
102
+ <media-slider-track class="${slider.track}">
103
+ <media-slider-fill class="${cn(slider.fill.base, slider.fill.fill)}"></media-slider-fill>
104
+ </media-slider-track>
105
+ <media-slider-thumb class="${slider.thumb.base}"></media-slider-thumb>
106
+ </media-volume-slider>
107
+ </media-popover>
108
+ </div>
109
+ </media-tooltip-group>
105
110
  </div>
106
111
  </media-container>
107
112
  `;
@@ -1 +1 @@
1
- {"version":3,"file":"minimal-skin.tailwind.js","names":[],"sources":["../../../../src/define/audio/minimal-skin.tailwind.ts"],"sourcesContent":["import { ReactiveElement } from '@videojs/element';\nimport { renderIcon } from '@videojs/icons/render/minimal';\nimport { playbackRate } from '@videojs/skins/default/tailwind/audio.tailwind';\nimport {\n button,\n buttonGroup,\n controls,\n icon,\n iconContainer,\n iconFlipped,\n iconState,\n popup,\n root,\n seek,\n slider,\n time,\n tooltipState,\n} from '@videojs/skins/minimal/tailwind/audio.tailwind';\nimport { cn } from '@videojs/utils/style';\nimport { SkinMixin } from '../skin-mixin';\n\n// Side-effect imports: register all custom elements used in the template.\nimport '../media/container';\nimport '../ui/mute-button';\nimport '../ui/play-button';\nimport '../ui/playback-rate-button';\nimport '../ui/popover';\nimport '../ui/seek-button';\nimport '../ui/time';\nimport '../ui/time-slider';\nimport '../ui/tooltip';\nimport '../ui/volume-slider';\n\nconst SEEK_TIME = 10;\n\nfunction getTemplateHTML() {\n return /*html*/ `\n <media-container class=\"${root}\">\n <slot name=\"media\"></slot>\n\n <div class=\"${controls}\">\n <span class=\"${buttonGroup}\">\n <span class=\"${tooltipState.play.wrapper}\">\n <media-play-button commandfor=\"play-tooltip\" class=\"${cn(button.base, button.icon, iconState.play.button)}\">\n ${renderIcon('restart', { class: cn(icon, iconState.play.restart) })}\n ${renderIcon('play', { class: cn(icon, iconState.play.play) })}\n ${renderIcon('pause', { class: cn(icon, iconState.play.pause) })}\n </media-play-button>\n <media-tooltip id=\"play-tooltip\" side=\"top\" class=\"${cn(popup.tooltip)}\">\n <span class=\"${tooltipState.play.replay}\">Replay</span>\n <span class=\"${tooltipState.play.play}\">Play</span>\n <span class=\"${tooltipState.play.pause}\">Pause</span>\n </media-tooltip>\n </span>\n\n <media-seek-button commandfor=\"seek-backward-tooltip\" seconds=\"${-SEEK_TIME}\" class=\"${cn(button.base, button.icon, seek.button)}\">\n <span class=\"${iconContainer}\">\n ${renderIcon('seek', { class: cn(icon, iconFlipped) })}\n <span class=\"${cn(seek.label, seek.labelBackward)}\">${SEEK_TIME}</span>\n </span>\n </media-seek-button>\n <media-tooltip id=\"seek-backward-tooltip\" side=\"top\" class=\"${cn(popup.tooltip)}\">\n Seek backward ${SEEK_TIME} seconds\n </media-tooltip>\n\n <media-seek-button commandfor=\"seek-forward-tooltip\" seconds=\"${SEEK_TIME}\" class=\"${cn(button.base, button.icon, seek.button)}\">\n <span class=\"${iconContainer}\">\n ${renderIcon('seek', { class: icon })}\n <span class=\"${cn(seek.label, seek.labelForward)}\">${SEEK_TIME}</span>\n </span>\n </media-seek-button>\n <media-tooltip id=\"seek-forward-tooltip\" side=\"top\" class=\"${cn(popup.tooltip)}\">\n Seek forward ${SEEK_TIME} seconds\n </media-tooltip>\n </span>\n\n <span class=\"${time.controls}\">\n <media-time-group class=\"${time.group}\">\n <media-time type=\"current\" class=\"${time.current}\"></media-time>\n <media-time-separator class=\"${time.separator}\"></media-time-separator>\n <media-time type=\"duration\" class=\"${time.duration}\"></media-time>\n </media-time-group>\n\n <media-time-slider class=\"${slider.root}\">\n <media-slider-track class=\"${slider.track}\">\n <media-slider-fill class=\"${cn(slider.fill.base, slider.fill.fill)}\"></media-slider-fill>\n <media-slider-buffer class=\"${cn(slider.fill.base, slider.fill.buffer)}\"></media-slider-buffer>\n </media-slider-track>\n <media-slider-thumb class=\"${cn(slider.thumb.base, slider.thumb.interactive)}\"></media-slider-thumb>\n </media-time-slider>\n </span>\n\n <span class=\"${buttonGroup}\">\n <media-playback-rate-button commandfor=\"playback-rate-tooltip\" class=\"${cn(button.base, button.icon, playbackRate.button)}\">\n </media-playback-rate-button>\n <media-tooltip id=\"playback-rate-tooltip\" side=\"top\" class=\"${cn(popup.tooltip)}\">\n Toggle playback rate\n </media-tooltip>\n\n <media-mute-button commandfor=\"audio-volume-popover\" class=\"${cn(button.base, button.icon, iconState.mute.button)}\">\n ${renderIcon('volume-off', { class: cn(icon, iconState.mute.volumeOff) })}\n ${renderIcon('volume-low', { class: cn(icon, iconState.mute.volumeLow) })}\n ${renderIcon('volume-high', { class: cn(icon, iconState.mute.volumeHigh) })}\n </media-mute-button>\n\n <media-popover id=\"audio-volume-popover\" open-on-hover delay=\"200\" close-delay=\"100\" side=\"left\" class=\"${cn(popup.volume)}\">\n <media-volume-slider class=\"${slider.root}\" orientation=\"horizontal\" thumb-alignment=\"edge\">\n <media-slider-track class=\"${slider.track}\">\n <media-slider-fill class=\"${cn(slider.fill.base, slider.fill.fill)}\"></media-slider-fill>\n </media-slider-track>\n <media-slider-thumb class=\"${slider.thumb.base}\"></media-slider-thumb>\n </media-volume-slider>\n </media-popover>\n </span>\n </div>\n </media-container>\n `;\n}\n\nexport class MinimalAudioSkinTailwindElement extends SkinMixin(ReactiveElement) {\n static readonly tagName = 'audio-minimal-skin-tailwind';\n static getTemplateHTML = getTemplateHTML;\n}\n\ncustomElements.define(MinimalAudioSkinTailwindElement.tagName, MinimalAudioSkinTailwindElement);\n\ndeclare global {\n interface HTMLElementTagNameMap {\n [MinimalAudioSkinTailwindElement.tagName]: MinimalAudioSkinTailwindElement;\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAiCA,MAAM,YAAY;AAElB,SAAS,kBAAkB;AACzB,QAAgB;8BACY,KAAK;;;oBAGf,SAAS;uBACN,YAAY;yBACV,aAAa,KAAK,QAAQ;kEACe,GAAG,OAAO,MAAM,OAAO,MAAM,UAAU,KAAK,OAAO,CAAC;gBACtG,WAAW,WAAW,EAAE,OAAO,GAAG,MAAM,UAAU,KAAK,QAAQ,EAAE,CAAC,CAAC;gBACnE,WAAW,QAAQ,EAAE,OAAO,GAAG,MAAM,UAAU,KAAK,KAAK,EAAE,CAAC,CAAC;gBAC7D,WAAW,SAAS,EAAE,OAAO,GAAG,MAAM,UAAU,KAAK,MAAM,EAAE,CAAC,CAAC;;iEAEd,GAAG,MAAM,QAAQ,CAAC;6BACtD,aAAa,KAAK,OAAO;6BACzB,aAAa,KAAK,KAAK;6BACvB,aAAa,KAAK,MAAM;;;;2EAIsB,CAAC,UAAU,WAAW,GAAG,OAAO,MAAM,OAAO,MAAM,KAAK,OAAO,CAAC;2BAChH,cAAc;gBACzB,WAAW,QAAQ,EAAE,OAAO,GAAG,MAAM,YAAY,EAAE,CAAC,CAAC;6BACxC,GAAG,KAAK,OAAO,KAAK,cAAc,CAAC,IAAI,UAAU;;;wEAGN,GAAG,MAAM,QAAQ,CAAC;4BAC9D,UAAU;;;0EAGoC,UAAU,WAAW,GAAG,OAAO,MAAM,OAAO,MAAM,KAAK,OAAO,CAAC;2BAC9G,cAAc;gBACzB,WAAW,QAAQ,EAAE,OAAO,MAAM,CAAC,CAAC;6BACvB,GAAG,KAAK,OAAO,KAAK,aAAa,CAAC,IAAI,UAAU;;;uEAGN,GAAG,MAAM,QAAQ,CAAC;2BAC9D,UAAU;;;;uBAId,KAAK,SAAS;qCACA,KAAK,MAAM;gDACA,KAAK,QAAQ;2CAClB,KAAK,UAAU;iDACT,KAAK,SAAS;;;sCAGzB,OAAO,KAAK;yCACT,OAAO,MAAM;0CACZ,GAAG,OAAO,KAAK,MAAM,OAAO,KAAK,KAAK,CAAC;4CACrC,GAAG,OAAO,KAAK,MAAM,OAAO,KAAK,OAAO,CAAC;;yCAE5C,GAAG,OAAO,MAAM,MAAM,OAAO,MAAM,YAAY,CAAC;;;;uBAIlE,YAAY;mFACgD,GAAG,OAAO,MAAM,OAAO,MAAM,aAAa,OAAO,CAAC;;wEAE7D,GAAG,MAAM,QAAQ,CAAC;;;;wEAIlB,GAAG,OAAO,MAAM,OAAO,MAAM,UAAU,KAAK,OAAO,CAAC;cAC9G,WAAW,cAAc,EAAE,OAAO,GAAG,MAAM,UAAU,KAAK,UAAU,EAAE,CAAC,CAAC;cACxE,WAAW,cAAc,EAAE,OAAO,GAAG,MAAM,UAAU,KAAK,UAAU,EAAE,CAAC,CAAC;cACxE,WAAW,eAAe,EAAE,OAAO,GAAG,MAAM,UAAU,KAAK,WAAW,EAAE,CAAC,CAAC;;;oHAG4B,GAAG,MAAM,OAAO,CAAC;0CAC3F,OAAO,KAAK;2CACX,OAAO,MAAM;4CACZ,GAAG,OAAO,KAAK,MAAM,OAAO,KAAK,KAAK,CAAC;;2CAExC,OAAO,MAAM,KAAK;;;;;;;;AAS7D,IAAa,kCAAb,cAAqD,UAAU,gBAAgB,CAAC;;iBACpD;;;yBACD;;;AAG3B,eAAe,OAAO,gCAAgC,SAAS,gCAAgC"}
1
+ {"version":3,"file":"minimal-skin.tailwind.js","names":[],"sources":["../../../../src/define/audio/minimal-skin.tailwind.ts"],"sourcesContent":["import { ReactiveElement } from '@videojs/element';\nimport { renderIcon } from '@videojs/icons/render/minimal';\nimport { playbackRate } from '@videojs/skins/default/tailwind/audio.tailwind';\nimport {\n button,\n buttonGroup,\n controls,\n icon,\n iconContainer,\n iconFlipped,\n iconState,\n popup,\n root,\n seek,\n slider,\n time,\n tooltipState,\n} from '@videojs/skins/minimal/tailwind/audio.tailwind';\nimport { cn } from '@videojs/utils/style';\nimport { SkinMixin } from '../skin-mixin';\n\n// Side-effect imports: register all custom elements used in the template.\nimport '../media/container';\nimport '../ui/mute-button';\nimport '../ui/play-button';\nimport '../ui/playback-rate-button';\nimport '../ui/popover';\nimport '../ui/seek-button';\nimport '../ui/time';\nimport '../ui/time-slider';\nimport '../ui/tooltip';\nimport '../ui/tooltip-group';\nimport '../ui/volume-slider';\n\nconst SEEK_TIME = 10;\n\nfunction getTemplateHTML() {\n return /*html*/ `\n <media-container class=\"${root}\">\n <slot name=\"media\"></slot>\n\n <div class=\"${controls}\">\n <media-tooltip-group class=\"contents\">\n <div class=\"${buttonGroup}\">\n <span class=\"${tooltipState.play.wrapper}\">\n <media-play-button commandfor=\"play-tooltip\" class=\"${cn(button.base, button.icon, iconState.play.button)}\">\n ${renderIcon('restart', { class: cn(icon, iconState.play.restart) })}\n ${renderIcon('play', { class: cn(icon, iconState.play.play) })}\n ${renderIcon('pause', { class: cn(icon, iconState.play.pause) })}\n </media-play-button>\n <media-tooltip id=\"play-tooltip\" side=\"top\" class=\"${cn(popup.tooltip)}\">\n <span class=\"${tooltipState.play.replay}\">Replay</span>\n <span class=\"${tooltipState.play.play}\">Play</span>\n <span class=\"${tooltipState.play.pause}\">Pause</span>\n </media-tooltip>\n </span>\n\n <media-seek-button commandfor=\"seek-backward-tooltip\" seconds=\"${-SEEK_TIME}\" class=\"${cn(button.base, button.icon, seek.button)}\">\n <span class=\"${iconContainer}\">\n ${renderIcon('seek', { class: cn(icon, iconFlipped) })}\n <span class=\"${cn(seek.label, seek.labelBackward)}\">${SEEK_TIME}</span>\n </span>\n </media-seek-button>\n <media-tooltip id=\"seek-backward-tooltip\" side=\"top\" class=\"${cn(popup.tooltip)}\">\n Seek backward ${SEEK_TIME} seconds\n </media-tooltip>\n\n <media-seek-button commandfor=\"seek-forward-tooltip\" seconds=\"${SEEK_TIME}\" class=\"${cn(button.base, button.icon, seek.button)}\">\n <span class=\"${iconContainer}\">\n ${renderIcon('seek', { class: icon })}\n <span class=\"${cn(seek.label, seek.labelForward)}\">${SEEK_TIME}</span>\n </span>\n </media-seek-button>\n <media-tooltip id=\"seek-forward-tooltip\" side=\"top\" class=\"${cn(popup.tooltip)}\">\n Seek forward ${SEEK_TIME} seconds\n </media-tooltip>\n </div>\n\n <div class=\"${time.controls}\">\n <media-time-group class=\"${time.group}\">\n <media-time type=\"current\" class=\"${time.current}\"></media-time>\n <media-time-separator class=\"${time.separator}\"></media-time-separator>\n <media-time type=\"duration\" class=\"${time.duration}\"></media-time>\n </media-time-group>\n\n <media-time-slider class=\"${slider.root}\">\n <media-slider-track class=\"${slider.track}\">\n <media-slider-fill class=\"${cn(slider.fill.base, slider.fill.fill)}\"></media-slider-fill>\n <media-slider-buffer class=\"${cn(slider.fill.base, slider.fill.buffer)}\"></media-slider-buffer>\n </media-slider-track>\n <media-slider-thumb class=\"${cn(slider.thumb.base, slider.thumb.interactive)}\"></media-slider-thumb>\n </media-time-slider>\n </div>\n\n <div class=\"${buttonGroup}\">\n <media-playback-rate-button commandfor=\"playback-rate-tooltip\" class=\"${cn(button.base, button.icon, playbackRate.button)}\">\n </media-playback-rate-button>\n <media-tooltip id=\"playback-rate-tooltip\" side=\"top\" class=\"${cn(popup.tooltip)}\">\n Toggle playback rate\n </media-tooltip>\n\n <media-mute-button commandfor=\"audio-volume-popover\" class=\"${cn(button.base, button.icon, iconState.mute.button)}\">\n ${renderIcon('volume-off', { class: cn(icon, iconState.mute.volumeOff) })}\n ${renderIcon('volume-low', { class: cn(icon, iconState.mute.volumeLow) })}\n ${renderIcon('volume-high', { class: cn(icon, iconState.mute.volumeHigh) })}\n </media-mute-button>\n\n <media-popover id=\"audio-volume-popover\" open-on-hover delay=\"200\" close-delay=\"100\" side=\"left\" class=\"${cn(popup.volume)}\">\n <media-volume-slider class=\"${slider.root}\" orientation=\"horizontal\" thumb-alignment=\"edge\">\n <media-slider-track class=\"${slider.track}\">\n <media-slider-fill class=\"${cn(slider.fill.base, slider.fill.fill)}\"></media-slider-fill>\n </media-slider-track>\n <media-slider-thumb class=\"${slider.thumb.base}\"></media-slider-thumb>\n </media-volume-slider>\n </media-popover>\n </div>\n </media-tooltip-group>\n </div>\n </media-container>\n `;\n}\n\nexport class MinimalAudioSkinTailwindElement extends SkinMixin(ReactiveElement) {\n static readonly tagName = 'audio-minimal-skin-tailwind';\n static getTemplateHTML = getTemplateHTML;\n}\n\ncustomElements.define(MinimalAudioSkinTailwindElement.tagName, MinimalAudioSkinTailwindElement);\n\ndeclare global {\n interface HTMLElementTagNameMap {\n [MinimalAudioSkinTailwindElement.tagName]: MinimalAudioSkinTailwindElement;\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAkCA,MAAM,YAAY;AAElB,SAAS,kBAAkB;AACzB,QAAgB;8BACY,KAAK;;;oBAGf,SAAS;;wBAEL,YAAY;2BACT,aAAa,KAAK,QAAQ;oEACe,GAAG,OAAO,MAAM,OAAO,MAAM,UAAU,KAAK,OAAO,CAAC;kBACtG,WAAW,WAAW,EAAE,OAAO,GAAG,MAAM,UAAU,KAAK,QAAQ,EAAE,CAAC,CAAC;kBACnE,WAAW,QAAQ,EAAE,OAAO,GAAG,MAAM,UAAU,KAAK,KAAK,EAAE,CAAC,CAAC;kBAC7D,WAAW,SAAS,EAAE,OAAO,GAAG,MAAM,UAAU,KAAK,MAAM,EAAE,CAAC,CAAC;;mEAEd,GAAG,MAAM,QAAQ,CAAC;+BACtD,aAAa,KAAK,OAAO;+BACzB,aAAa,KAAK,KAAK;+BACvB,aAAa,KAAK,MAAM;;;;6EAIsB,CAAC,UAAU,WAAW,GAAG,OAAO,MAAM,OAAO,MAAM,KAAK,OAAO,CAAC;6BAChH,cAAc;kBACzB,WAAW,QAAQ,EAAE,OAAO,GAAG,MAAM,YAAY,EAAE,CAAC,CAAC;+BACxC,GAAG,KAAK,OAAO,KAAK,cAAc,CAAC,IAAI,UAAU;;;0EAGN,GAAG,MAAM,QAAQ,CAAC;8BAC9D,UAAU;;;4EAGoC,UAAU,WAAW,GAAG,OAAO,MAAM,OAAO,MAAM,KAAK,OAAO,CAAC;6BAC9G,cAAc;kBACzB,WAAW,QAAQ,EAAE,OAAO,MAAM,CAAC,CAAC;+BACvB,GAAG,KAAK,OAAO,KAAK,aAAa,CAAC,IAAI,UAAU;;;yEAGN,GAAG,MAAM,QAAQ,CAAC;6BAC9D,UAAU;;;;wBAIf,KAAK,SAAS;uCACC,KAAK,MAAM;kDACA,KAAK,QAAQ;6CAClB,KAAK,UAAU;mDACT,KAAK,SAAS;;;wCAGzB,OAAO,KAAK;2CACT,OAAO,MAAM;4CACZ,GAAG,OAAO,KAAK,MAAM,OAAO,KAAK,KAAK,CAAC;8CACrC,GAAG,OAAO,KAAK,MAAM,OAAO,KAAK,OAAO,CAAC;;2CAE5C,GAAG,OAAO,MAAM,MAAM,OAAO,MAAM,YAAY,CAAC;;;;wBAInE,YAAY;qFACiD,GAAG,OAAO,MAAM,OAAO,MAAM,aAAa,OAAO,CAAC;;0EAE7D,GAAG,MAAM,QAAQ,CAAC;;;;0EAIlB,GAAG,OAAO,MAAM,OAAO,MAAM,UAAU,KAAK,OAAO,CAAC;gBAC9G,WAAW,cAAc,EAAE,OAAO,GAAG,MAAM,UAAU,KAAK,UAAU,EAAE,CAAC,CAAC;gBACxE,WAAW,cAAc,EAAE,OAAO,GAAG,MAAM,UAAU,KAAK,UAAU,EAAE,CAAC,CAAC;gBACxE,WAAW,eAAe,EAAE,OAAO,GAAG,MAAM,UAAU,KAAK,WAAW,EAAE,CAAC,CAAC;;;sHAG4B,GAAG,MAAM,OAAO,CAAC;4CAC3F,OAAO,KAAK;6CACX,OAAO,MAAM;8CACZ,GAAG,OAAO,KAAK,MAAM,OAAO,KAAK,KAAK,CAAC;;6CAExC,OAAO,MAAM,KAAK;;;;;;;;;AAU/D,IAAa,kCAAb,cAAqD,UAAU,gBAAgB,CAAC;;iBACpD;;;yBACD;;;AAG3B,eAAe,OAAO,gCAAgC,SAAS,gCAAgC"}