@videojs/html 10.0.0-beta.2 → 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.
- package/cdn/audio-minimal.css +1 -1
- package/cdn/audio-minimal.dev.js +197 -126
- package/cdn/audio-minimal.dev.js.map +1 -1
- package/cdn/audio-minimal.js +5 -5
- package/cdn/audio-minimal.js.map +1 -1
- package/cdn/audio.css +1 -1
- package/cdn/audio.dev.js +191 -120
- package/cdn/audio.dev.js.map +1 -1
- package/cdn/audio.js +5 -5
- package/cdn/audio.js.map +1 -1
- package/cdn/background.dev.js +40 -25
- package/cdn/background.dev.js.map +1 -1
- package/cdn/background.js +4 -4
- package/cdn/background.js.map +1 -1
- package/cdn/media/hls-video.dev.js +0 -1
- package/cdn/media/hls-video.dev.js.map +1 -1
- package/cdn/media/hls-video.js +1 -1
- package/cdn/media/hls-video.js.map +1 -1
- package/cdn/media/simple-hls-video.dev.js +178 -158
- package/cdn/media/simple-hls-video.dev.js.map +1 -1
- package/cdn/media/simple-hls-video.js +1 -1
- package/cdn/media/simple-hls-video.js.map +1 -1
- package/cdn/video-minimal.css +1 -1
- package/cdn/video-minimal.dev.js +220 -161
- package/cdn/video-minimal.dev.js.map +1 -1
- package/cdn/video-minimal.js +5 -5
- package/cdn/video-minimal.js.map +1 -1
- package/cdn/video.css +1 -1
- package/cdn/video.dev.js +217 -158
- package/cdn/video.dev.js.map +1 -1
- package/cdn/video.js +4 -4
- package/cdn/video.js.map +1 -1
- package/dist/default/_virtual/inline-css_src/define/audio/minimal-skin.js +1 -1
- package/dist/default/_virtual/inline-css_src/define/audio/minimal-skin.js.map +1 -1
- package/dist/default/_virtual/inline-css_src/define/audio/skin.js +1 -1
- package/dist/default/_virtual/inline-css_src/define/audio/skin.js.map +1 -1
- package/dist/default/_virtual/inline-css_src/define/base.js +6 -0
- package/dist/default/_virtual/inline-css_src/define/base.js.map +1 -0
- package/dist/default/_virtual/inline-css_src/define/video/minimal-skin.js +1 -1
- package/dist/default/_virtual/inline-css_src/define/video/minimal-skin.js.map +1 -1
- package/dist/default/_virtual/inline-css_src/define/video/skin.js +1 -1
- package/dist/default/_virtual/inline-css_src/define/video/skin.js.map +1 -1
- package/dist/default/define/audio/minimal-skin.css +8 -2
- package/dist/default/define/audio/minimal-skin.js +2 -1
- package/dist/default/define/audio/minimal-skin.js.map +1 -1
- package/dist/default/define/audio/minimal-skin.tailwind.js +5 -2
- package/dist/default/define/audio/minimal-skin.tailwind.js.map +1 -1
- package/dist/default/define/audio/skin.css +7 -5
- package/dist/default/define/audio/skin.js +2 -1
- package/dist/default/define/audio/skin.js.map +1 -1
- package/dist/default/define/audio/skin.tailwind.js +5 -2
- package/dist/default/define/audio/skin.tailwind.js.map +1 -1
- package/dist/default/define/base.css +25 -0
- package/dist/default/define/shared.css +3 -0
- package/dist/default/define/skin-mixin.js +10 -18
- package/dist/default/define/skin-mixin.js.map +1 -1
- package/dist/default/define/video/minimal-skin.css +35 -73
- package/dist/default/define/video/minimal-skin.js +2 -1
- package/dist/default/define/video/minimal-skin.js.map +1 -1
- package/dist/default/define/video/minimal-skin.tailwind.js +4 -4
- package/dist/default/define/video/minimal-skin.tailwind.js.map +1 -1
- package/dist/default/define/video/skin.css +32 -71
- package/dist/default/define/video/skin.js +2 -1
- package/dist/default/define/video/skin.js.map +1 -1
- package/dist/default/define/video/skin.tailwind.js +5 -4
- package/dist/default/define/video/skin.tailwind.js.map +1 -1
- package/dist/default/skins/dist/default/default/tailwind/audio.tailwind.js +3 -21
- package/dist/default/skins/dist/default/default/tailwind/audio.tailwind.js.map +1 -1
- package/dist/default/skins/dist/default/default/tailwind/components/overlay.js +1 -1
- package/dist/default/skins/dist/default/default/tailwind/components/overlay.js.map +1 -1
- package/dist/default/skins/dist/default/default/tailwind/components/root.js +1 -1
- package/dist/default/skins/dist/default/default/tailwind/components/root.js.map +1 -1
- package/dist/default/skins/dist/default/default/tailwind/video.tailwind.js +8 -5
- package/dist/default/skins/dist/default/default/tailwind/video.tailwind.js.map +1 -1
- package/dist/default/skins/dist/default/minimal/tailwind/audio.tailwind.js +3 -22
- package/dist/default/skins/dist/default/minimal/tailwind/audio.tailwind.js.map +1 -1
- package/dist/default/skins/dist/default/minimal/tailwind/components/overlay.js +1 -1
- package/dist/default/skins/dist/default/minimal/tailwind/components/overlay.js.map +1 -1
- package/dist/default/skins/dist/default/minimal/tailwind/components/popup.js +1 -1
- package/dist/default/skins/dist/default/minimal/tailwind/components/popup.js.map +1 -1
- package/dist/default/skins/dist/default/minimal/tailwind/video.tailwind.js +6 -4
- package/dist/default/skins/dist/default/minimal/tailwind/video.tailwind.js.map +1 -1
- package/dist/default/skins/dist/default/{default/tailwind/components → shared/tailwind}/icon-state.js +1 -1
- package/dist/default/skins/dist/default/shared/tailwind/icon-state.js.map +1 -0
- package/dist/{dev/skins/dist/default/default/tailwind/components → default/skins/dist/default/shared/tailwind}/tooltip-state.js +1 -1
- package/dist/default/skins/dist/default/shared/tailwind/tooltip-state.js.map +1 -0
- package/dist/default/store/container-mixin.js +22 -10
- package/dist/default/store/container-mixin.js.map +1 -1
- package/dist/default/ui/tooltip/tooltip-group-element.js +4 -1
- package/dist/default/ui/tooltip/tooltip-group-element.js.map +1 -1
- package/dist/dev/_virtual/inline-css_src/define/audio/minimal-skin.js +1 -1
- package/dist/dev/_virtual/inline-css_src/define/audio/minimal-skin.js.map +1 -1
- package/dist/dev/_virtual/inline-css_src/define/audio/skin.js +1 -1
- package/dist/dev/_virtual/inline-css_src/define/audio/skin.js.map +1 -1
- package/dist/dev/_virtual/inline-css_src/define/base.js +6 -0
- package/dist/dev/_virtual/inline-css_src/define/base.js.map +1 -0
- package/dist/dev/_virtual/inline-css_src/define/video/minimal-skin.js +1 -1
- package/dist/dev/_virtual/inline-css_src/define/video/minimal-skin.js.map +1 -1
- package/dist/dev/_virtual/inline-css_src/define/video/skin.js +1 -1
- package/dist/dev/_virtual/inline-css_src/define/video/skin.js.map +1 -1
- package/dist/dev/define/audio/minimal-skin.css +8 -2
- package/dist/dev/define/audio/minimal-skin.d.ts.map +1 -1
- package/dist/dev/define/audio/minimal-skin.js +67 -64
- package/dist/dev/define/audio/minimal-skin.js.map +1 -1
- package/dist/dev/define/audio/minimal-skin.tailwind.d.ts.map +1 -1
- package/dist/dev/define/audio/minimal-skin.tailwind.js +71 -66
- package/dist/dev/define/audio/minimal-skin.tailwind.js.map +1 -1
- package/dist/dev/define/audio/skin.css +7 -5
- package/dist/dev/define/audio/skin.d.ts.map +1 -1
- package/dist/dev/define/audio/skin.js +59 -56
- package/dist/dev/define/audio/skin.js.map +1 -1
- package/dist/dev/define/audio/skin.tailwind.d.ts.map +1 -1
- package/dist/dev/define/audio/skin.tailwind.js +64 -59
- package/dist/dev/define/audio/skin.tailwind.js.map +1 -1
- package/dist/dev/define/base.css +25 -0
- package/dist/dev/define/shared.css +3 -0
- package/dist/dev/define/skin-mixin.d.ts +2 -2
- package/dist/dev/define/skin-mixin.d.ts.map +1 -1
- package/dist/dev/define/skin-mixin.js +10 -32
- package/dist/dev/define/skin-mixin.js.map +1 -1
- package/dist/dev/define/video/minimal-skin.css +35 -73
- package/dist/dev/define/video/minimal-skin.d.ts.map +1 -1
- package/dist/dev/define/video/minimal-skin.js +92 -101
- package/dist/dev/define/video/minimal-skin.js.map +1 -1
- package/dist/dev/define/video/minimal-skin.tailwind.d.ts.map +1 -1
- package/dist/dev/define/video/minimal-skin.tailwind.js +98 -108
- package/dist/dev/define/video/minimal-skin.tailwind.js.map +1 -1
- package/dist/dev/define/video/skin.css +32 -71
- package/dist/dev/define/video/skin.d.ts.map +1 -1
- package/dist/dev/define/video/skin.js +82 -91
- package/dist/dev/define/video/skin.js.map +1 -1
- package/dist/dev/define/video/skin.tailwind.d.ts.map +1 -1
- package/dist/dev/define/video/skin.tailwind.js +93 -102
- package/dist/dev/define/video/skin.tailwind.js.map +1 -1
- package/dist/dev/skins/dist/default/default/tailwind/audio.tailwind.js +3 -21
- package/dist/dev/skins/dist/default/default/tailwind/audio.tailwind.js.map +1 -1
- package/dist/dev/skins/dist/default/default/tailwind/components/overlay.js +1 -1
- package/dist/dev/skins/dist/default/default/tailwind/components/overlay.js.map +1 -1
- package/dist/dev/skins/dist/default/default/tailwind/components/root.js +1 -1
- package/dist/dev/skins/dist/default/default/tailwind/components/root.js.map +1 -1
- package/dist/dev/skins/dist/default/default/tailwind/video.tailwind.js +8 -5
- package/dist/dev/skins/dist/default/default/tailwind/video.tailwind.js.map +1 -1
- package/dist/dev/skins/dist/default/minimal/tailwind/audio.tailwind.js +3 -22
- package/dist/dev/skins/dist/default/minimal/tailwind/audio.tailwind.js.map +1 -1
- package/dist/dev/skins/dist/default/minimal/tailwind/components/overlay.js +1 -1
- package/dist/dev/skins/dist/default/minimal/tailwind/components/overlay.js.map +1 -1
- package/dist/dev/skins/dist/default/minimal/tailwind/components/popup.js +1 -1
- package/dist/dev/skins/dist/default/minimal/tailwind/components/popup.js.map +1 -1
- package/dist/dev/skins/dist/default/minimal/tailwind/video.tailwind.js +6 -4
- package/dist/dev/skins/dist/default/minimal/tailwind/video.tailwind.js.map +1 -1
- package/dist/dev/skins/dist/default/{default/tailwind/components → shared/tailwind}/icon-state.js +1 -1
- package/dist/dev/skins/dist/default/shared/tailwind/icon-state.js.map +1 -0
- package/dist/{default/skins/dist/default/minimal/tailwind/components → dev/skins/dist/default/shared/tailwind}/tooltip-state.js +1 -1
- package/dist/dev/skins/dist/default/shared/tailwind/tooltip-state.js.map +1 -0
- package/dist/dev/store/container-mixin.js +22 -10
- package/dist/dev/store/container-mixin.js.map +1 -1
- package/dist/dev/ui/tooltip/tooltip-group-element.js +4 -1
- package/dist/dev/ui/tooltip/tooltip-group-element.js.map +1 -1
- package/package.json +7 -7
- package/dist/default/skins/dist/default/default/tailwind/components/icon-state.js.map +0 -1
- package/dist/default/skins/dist/default/default/tailwind/components/tooltip-state.js +0 -28
- package/dist/default/skins/dist/default/default/tailwind/components/tooltip-state.js.map +0 -1
- package/dist/default/skins/dist/default/minimal/tailwind/components/error.js +0 -15
- package/dist/default/skins/dist/default/minimal/tailwind/components/error.js.map +0 -1
- package/dist/default/skins/dist/default/minimal/tailwind/components/icon-state.js +0 -29
- package/dist/default/skins/dist/default/minimal/tailwind/components/icon-state.js.map +0 -1
- package/dist/default/skins/dist/default/minimal/tailwind/components/tooltip-state.js.map +0 -1
- package/dist/dev/skins/dist/default/default/tailwind/components/icon-state.js.map +0 -1
- package/dist/dev/skins/dist/default/default/tailwind/components/tooltip-state.js.map +0 -1
- package/dist/dev/skins/dist/default/minimal/tailwind/components/error.js +0 -15
- package/dist/dev/skins/dist/default/minimal/tailwind/components/error.js.map +0 -1
- package/dist/dev/skins/dist/default/minimal/tailwind/components/icon-state.js +0 -29
- package/dist/dev/skins/dist/default/minimal/tailwind/components/icon-state.js.map +0 -1
- package/dist/dev/skins/dist/default/minimal/tailwind/components/tooltip-state.js +0 -28
- package/dist/dev/skins/dist/default/minimal/tailwind/components/tooltip-state.js.map +0 -1
package/cdn/audio-minimal.css
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
.media-button--play .media-icon--restart,.media-button--play .media-icon--play,.media-button--play .media-icon--pause,.media-button--mute .media-icon--volume-off,.media-button--mute .media-icon--volume-low,.media-button--mute .media-icon--volume-high{opacity:0;display:none}.media-button--play[data-ended] .media-icon--restart,.media-button--play:not([data-ended])[data-paused] .media-icon--play,.media-button--play:not([data-paused]):not([data-ended]) .media-icon--pause,.media-button--mute[data-muted] .media-icon--volume-off,.media-button--mute:not([data-muted])[data-volume-level=low] .media-icon--volume-low,.media-button--mute:not([data-muted]):not([data-volume-level=low]) .media-icon--volume-high{opacity:1;display:block}.media-tooltip-label{display:none}.media-button--play[data-ended]+.media-tooltip .media-tooltip-label--replay,.media-button--play:not([data-ended])[data-paused]+.media-tooltip .media-tooltip-label--play,.media-button--play:not([data-paused]):not([data-ended])+.media-tooltip .media-tooltip-label--pause{display:block}.media-minimal-skin *,.media-minimal-skin :before,.media-minimal-skin :after{box-sizing:border-box;margin:0}.media-minimal-skin img,.media-minimal-skin video,.media-minimal-skin svg{max-width:100%;display:block}.media-minimal-skin button{font:inherit}@media (prefers-reduced-motion:no-preference){.media-minimal-skin{interpolate-size:allow-keywords}}.media-minimal-skin{isolation:isolate;border-radius:var(--media-border-radius,.75rem);letter-spacing:normal;-webkit-font-smoothing:auto;-moz-osx-font-smoothing:auto;font-family:Inter Variable,Inter,ui-sans-serif,system-ui,sans-serif;font-size:.8125rem;line-height:1.5;display:block;position:relative;container:media-root/inline-size}.media-minimal-skin .media-buffering-indicator{color:oklch(100% 0 0);pointer-events:none;justify-content:center;align-items:center;display:none;position:absolute;inset:0;&[data-visible]{display:flex}}.media-minimal-skin .media-error{z-index:20;pointer-events:none;justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.media-minimal-skin .media-error__dialog{color:oklch(100% 0 0);text-shadow:0 1px oklch(0% 0 0/.5);max-width:16rem;transition-property:opacity,transform;transition-duration:.5s;transition-delay:.1s;transition-timing-function:linear(0, .034 1.5%, .763 9.7%, 1.066 13.9%, 1.198 19.9%, 1.184 21.8%, .963 37.5%, .997 50.9%, 1);flex-direction:column;gap:.75rem;padding:1rem;font-size:.875rem;display:flex;@media (prefers-reduced-motion:reduce){transition-duration:.1s;transition-delay:0s;transition-timing-function:ease-out}}.media-minimal-skin .media-error[data-starting-style] .media-error__dialog,.media-minimal-skin .media-error[data-ending-style] .media-error__dialog{opacity:0;transform:scale(.5)}.media-minimal-skin .media-error__content{flex-direction:column;gap:.5rem;padding:.375rem 0;display:flex}.media-minimal-skin .media-error__title{font-weight:600;line-height:1.25}.media-minimal-skin .media-error__description{opacity:.7}.media-minimal-skin .media-error__actions{gap:.5rem;display:flex;&>*{flex:1}}.media-minimal-skin .media-controls{--media-controls-current-shadow-color:oklch(from currentColor 0 0 0 / clamp(0, calc((l - .5) * .5), .25));--media-controls-current-shadow-color-subtle:oklch(from var(--media-controls-current-shadow-color) l c h / calc(alpha * .4));text-shadow:0 0 1px var(--media-controls-current-shadow-color);align-items:center;display:flex;container:media-controls/inline-size}.media-minimal-skin .media-time-controls{flex-direction:row-reverse;flex:1;align-items:center;gap:.75rem;display:flex}.media-minimal-skin .media-time{align-items:center;gap:.25rem;display:flex}.media-minimal-skin .media-time__value{font-variant-numeric:tabular-nums}.media-minimal-skin .media-time__value--current,.media-minimal-skin .media-time__separator{display:none}@container media-controls (width>28rem){.media-minimal-skin .media-time-controls{flex-direction:row}.media-minimal-skin .media-time__value--duration,.media-minimal-skin .media-time__separator{color:oklch(from currentColor l c h / .6)}.media-minimal-skin .media-time__value--current,.media-minimal-skin .media-time__separator{display:inline}}.media-minimal-skin .media-button-group{align-items:center;gap:.075rem;display:flex;@container media-root (width>40rem){gap:.125rem}}.media-minimal-skin .media-button{outline-offset:-2px;color:oklch(0% 0 0);text-align:center;text-shadow:inherit;cursor:pointer;user-select:none;background:oklch(100% 0 0);border:none;border-radius:.5rem;outline:2px solid #0000;flex-shrink:0;justify-content:center;align-items:center;padding:.5rem 1rem;font-weight:500;transition-property:background-color,color,outline-offset,transform;transition-duration:.15s;transition-timing-function:ease-out;display:flex;&:focus-visible{outline-offset:2px;outline-color:currentColor}&[disabled]{opacity:.5;filter:grayscale();cursor:not-allowed}&[data-availability=unavailable]{display:none}}.media-minimal-skin .media-button--icon{aspect-ratio:1;width:2.375rem;color:inherit;background:0 0;padding:0;display:grid;&:hover,&:focus-visible,&[aria-expanded=true]{color:oklch(from currentColor l c h / .8);text-decoration:none}&:active{transform:scale(.9)}& .media-icon{filter:drop-shadow(0 1px 0 var(--media-controls-current-shadow-color,oklch(0% 0 0/.25)))}}.media-minimal-skin .media-button--seek{& .media-icon__label{font-variant-numeric:tabular-nums;font-size:.75em;font-weight:480;position:absolute;bottom:-3px;right:-1px}&:has(.media-icon--flipped) .media-icon__label{right:unset;left:-1px}@container media-controls (width<28rem){display:none}}.media-minimal-skin .media-button--playback-rate{padding:0;&:after{content:attr(data-rate) "×";font-variant-numeric:tabular-nums;width:4ch}}.media-minimal-skin .media-icon__container{position:relative}.media-minimal-skin .media-icon{transition-behavior:allow-discrete;flex-shrink:0;grid-area:1/1;width:18px;height:18px;transition-property:display,opacity;transition-duration:.15s;transition-timing-function:ease-out;display:block}.media-minimal-skin .media-icon--flipped{scale:-1 1}.media-minimal-skin .media-slider{border-radius:3.40282e38px;outline:none;flex:1;justify-content:center;align-items:center;display:flex;position:relative;&[data-orientation=horizontal]{width:100%;min-width:5rem;height:1.25rem}&[data-orientation=vertical]{width:1.25rem;height:4.5rem}}.media-minimal-skin .media-slider__track{isolation:isolate;border-radius:inherit;user-select:none;background-color:oklch(from currentColor l c h / .2);position:relative;overflow:hidden;&[data-orientation=horizontal]{width:100%;height:.1875rem}&[data-orientation=vertical]{width:.1875rem;height:100%}}.media-minimal-skin .media-slider__thumb{z-index:10;width:.75rem;height:.75rem;box-shadow:0 0 0 1px var(--media-controls-current-shadow-color-subtle,oklch(0% 0 0/.1)), 0 1px 3px 0 oklch(0% 0 0/.15), 0 1px 2px -1px oklch(0% 0 0/.15);opacity:0;transform-origin:50%;user-select:none;outline-offset:-2px;background-color:currentColor;border-radius:3.40282e38px;outline:2px solid #0000;transition-property:opacity,scale,outline-offset;transition-duration:.15s;transition-timing-function:ease-out;position:absolute;transform:translate(-50%,-50%)scale(.7);&[data-orientation=horizontal]{top:50%;left:var(--media-slider-fill)}&[data-orientation=vertical]{left:50%;top:calc(100% - var(--media-slider-fill))}&:focus-visible{outline-offset:2px;outline-color:currentColor}}.media-minimal-skin .media-slider:hover .media-slider__thumb,.media-minimal-skin .media-slider:focus-within .media-slider__thumb,.media-minimal-skin .media-slider__thumb--persistent{opacity:1;scale:1}.media-minimal-skin .media-slider__buffer,.media-minimal-skin .media-slider__fill{border-radius:inherit;pointer-events:none;position:absolute}.media-minimal-skin .media-slider__buffer[data-orientation=horizontal],.media-minimal-skin .media-slider__fill[data-orientation=horizontal]{inset-block:0;left:0}.media-minimal-skin .media-slider__buffer[data-orientation=vertical],.media-minimal-skin .media-slider__fill[data-orientation=vertical]{inset-inline:0;bottom:0}.media-minimal-skin .media-slider__buffer{background-color:oklch(from currentColor l c h / .2);transition-duration:.25s;transition-timing-function:ease-out;&[data-orientation=horizontal]{width:var(--media-slider-buffer);transition-property:width}&[data-orientation=vertical]{height:var(--media-slider-buffer);transition-property:height}}.media-minimal-skin .media-slider__fill{background-color:currentColor;&[data-orientation=horizontal]{width:var(--media-slider-fill)}&[data-orientation=vertical]{height:var(--media-slider-fill)}}.media-minimal-skin .media-slider__time-display{font-variant-numeric:tabular-nums}.media-minimal-skin .media-popover,.media-minimal-skin .media-tooltip{color:inherit;border:0;margin:0;transition-property:transform,scale,opacity,filter;transition-duration:.2s;overflow:visible;&[data-starting-style],&[data-ending-style]{opacity:0;filter:blur(8px);transform:scale(0)}&[data-instant]{transition-duration:0s}&[data-side=top]{transform-origin:bottom}&[data-side=bottom]{transform-origin:top}&[data-side=left]{transform-origin:100%}&[data-side=right]{transform-origin:0}}.media-minimal-skin .media-tooltip{backdrop-filter:blur(64px)brightness(.9)saturate(1.5);white-space:nowrap;--media-tooltip-side-offset:.5rem;background-color:oklch(100% 0 0/.1);border-radius:.25rem;padding:.25rem .5rem;font-size:.75rem;box-shadow:0 4px 6px -1px oklch(0% 0 0/.1),0 2px 4px -2px oklch(0% 0 0/.1);@media (prefers-reduced-transparency:reduce){background-color:oklch(0% 0 0/.7)}@media (prefers-contrast:more){background-color:oklch(0% 0 0/.9)}}.media-minimal-skin--audio{--media-controls-background-color:oklch(100% 0 0);--media-controls-border-color:oklch(0% 0 0/.1);--media-controls-text-color:oklch(0% 0 0);@media (prefers-color-scheme:dark){--media-controls-background-color:oklch(0% 0 0);--media-controls-border-color:oklch(100% 0 0/.1);--media-controls-text-color:oklch(100% 0 0)}}.media-minimal-skin--audio .media-controls{background-color:var(--media-controls-background-color);backdrop-filter:blur(8px)brightness(.98)saturate(1.2);border-radius:var(--media-border-radius,.75rem);color:var(--media-controls-text-color);box-shadow:0 0 0 1px var(--media-controls-border-color);gap:.5rem;padding:.375rem}.media-minimal-skin--audio .media-popover--volume{background:linear-gradient(to left, var(--media-controls-background-color) 80%, transparent 100%);--media-popover-side-offset:.75rem;padding:.5rem 0 .5rem 4rem}
|
|
1
|
+
.media-button--play .media-icon--restart,.media-button--play .media-icon--play,.media-button--play .media-icon--pause,.media-button--mute .media-icon--volume-off,.media-button--mute .media-icon--volume-low,.media-button--mute .media-icon--volume-high{opacity:0;display:none}.media-button--play[data-ended] .media-icon--restart,.media-button--play:not([data-ended])[data-paused] .media-icon--play,.media-button--play:not([data-paused]):not([data-ended]) .media-icon--pause,.media-button--mute[data-muted] .media-icon--volume-off,.media-button--mute:not([data-muted])[data-volume-level=low] .media-icon--volume-low,.media-button--mute:not([data-muted]):not([data-volume-level=low]) .media-icon--volume-high{opacity:1;display:block}.media-tooltip-label{display:none}.media-button--play[data-ended]+.media-tooltip .media-tooltip-label--replay,.media-button--play:not([data-ended])[data-paused]+.media-tooltip .media-tooltip-label--play,.media-button--play:not([data-paused]):not([data-ended])+.media-tooltip .media-tooltip-label--pause{display:block}.media-minimal-skin *,.media-minimal-skin :before,.media-minimal-skin :after{box-sizing:border-box;margin:0}.media-minimal-skin img,.media-minimal-skin video,.media-minimal-skin svg{max-width:100%;display:block}.media-minimal-skin button{font:inherit}@media (prefers-reduced-motion:no-preference){.media-minimal-skin{interpolate-size:allow-keywords}}.media-minimal-skin{isolation:isolate;border-radius:var(--media-border-radius,.75rem);letter-spacing:normal;-webkit-font-smoothing:auto;-moz-osx-font-smoothing:auto;width:100%;height:100%;font-family:Inter Variable,Inter,ui-sans-serif,system-ui,sans-serif;font-size:.8125rem;line-height:1.5;display:block;position:relative;container:media-root/inline-size}.media-minimal-skin .media-buffering-indicator{color:oklch(100% 0 0);pointer-events:none;justify-content:center;align-items:center;display:none;position:absolute;inset:0;&[data-visible]{display:flex}}.media-minimal-skin .media-error{z-index:20;pointer-events:none;justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.media-minimal-skin .media-error__dialog{color:oklch(100% 0 0);text-shadow:0 1px oklch(0% 0 0/.5);max-width:16rem;transition-property:opacity,transform;transition-duration:.5s;transition-delay:.1s;transition-timing-function:linear(0, .034 1.5%, .763 9.7%, 1.066 13.9%, 1.198 19.9%, 1.184 21.8%, .963 37.5%, .997 50.9%, 1);flex-direction:column;gap:.75rem;padding:1rem;font-size:.875rem;display:flex;@media (prefers-reduced-motion:reduce){transition-duration:.1s;transition-delay:0s;transition-timing-function:ease-out}}.media-minimal-skin .media-error[data-starting-style] .media-error__dialog,.media-minimal-skin .media-error[data-ending-style] .media-error__dialog{opacity:0;transform:scale(.5)}.media-minimal-skin .media-error__content{flex-direction:column;gap:.5rem;padding:.375rem 0;display:flex}.media-minimal-skin .media-error__title{font-weight:600;line-height:1.25}.media-minimal-skin .media-error__description{opacity:.7}.media-minimal-skin .media-error__actions{gap:.5rem;display:flex;&>*{flex:1}}.media-minimal-skin .media-controls{--media-controls-current-shadow-color:oklch(from currentColor 0 0 0 / clamp(0, calc((l - .5) * .5), .25));--media-controls-current-shadow-color-subtle:oklch(from var(--media-controls-current-shadow-color) l c h / calc(alpha * .4));text-shadow:0 0 1px var(--media-controls-current-shadow-color);align-items:center;display:flex;container:media-controls/inline-size}.media-minimal-skin .media-time-controls{flex-direction:row-reverse;flex:1;align-items:center;gap:.75rem;display:flex}.media-minimal-skin .media-time{align-items:center;gap:.25rem;display:flex}.media-minimal-skin .media-time__value{font-variant-numeric:tabular-nums}.media-minimal-skin .media-time__value--current,.media-minimal-skin .media-time__separator{display:none}@container media-controls (width>28rem){.media-minimal-skin .media-time-controls{flex-direction:row}.media-minimal-skin .media-time__value--duration,.media-minimal-skin .media-time__separator{color:oklch(from currentColor l c h / .6)}.media-minimal-skin .media-time__value--current,.media-minimal-skin .media-time__separator{display:inline}}.media-minimal-skin .media-button-group{align-items:center;gap:.075rem;display:flex;@container media-root (width>40rem){gap:.125rem}}.media-minimal-skin .media-button{outline-offset:-2px;color:oklch(0% 0 0);text-align:center;text-shadow:inherit;cursor:pointer;user-select:none;background:oklch(100% 0 0);border:none;border-radius:.5rem;outline:2px solid #0000;flex-shrink:0;justify-content:center;align-items:center;padding:.5rem 1rem;font-weight:500;transition-property:background-color,color,outline-offset,transform;transition-duration:.15s;transition-timing-function:ease-out;display:flex;&:focus-visible{outline-offset:2px;outline-color:currentColor}&[disabled]{opacity:.5;filter:grayscale();cursor:not-allowed}&[data-availability=unavailable]{display:none}}.media-minimal-skin .media-button--icon{aspect-ratio:1;width:2.375rem;color:inherit;background:0 0;padding:0;display:grid;&:hover,&:focus-visible,&[aria-expanded=true]{color:oklch(from currentColor l c h / .8);text-decoration:none}&:active{transform:scale(.9)}& .media-icon{filter:drop-shadow(0 1px 0 var(--media-controls-current-shadow-color,oklch(0% 0 0/.25)))}}.media-minimal-skin .media-button--seek{& .media-icon__label{font-variant-numeric:tabular-nums;font-size:.75em;font-weight:480;position:absolute;bottom:-3px;right:-1px}&:has(.media-icon--flipped) .media-icon__label{right:unset;left:-1px}@container media-controls (width<28rem){display:none}}.media-minimal-skin .media-button--playback-rate{padding:0;&:after{content:attr(data-rate) "×";font-variant-numeric:tabular-nums;width:4ch}}.media-minimal-skin .media-icon__container{position:relative}.media-minimal-skin .media-icon{transition-behavior:allow-discrete;flex-shrink:0;grid-area:1/1;width:18px;height:18px;transition-property:display,opacity;transition-duration:.15s;transition-timing-function:ease-out;display:block}.media-minimal-skin .media-icon--flipped{scale:-1 1}.media-minimal-skin .media-slider{border-radius:3.40282e38px;outline:none;flex:1;justify-content:center;align-items:center;display:flex;position:relative;&[data-orientation=horizontal]{width:100%;min-width:5rem;height:1.25rem}&[data-orientation=vertical]{width:1.25rem;height:4.5rem}}.media-minimal-skin .media-slider__track{isolation:isolate;border-radius:inherit;user-select:none;background-color:oklch(from currentColor l c h / .2);position:relative;overflow:hidden;&[data-orientation=horizontal]{width:100%;height:.1875rem}&[data-orientation=vertical]{width:.1875rem;height:100%}}.media-minimal-skin .media-slider__thumb{z-index:10;width:.75rem;height:.75rem;box-shadow:0 0 0 1px var(--media-controls-current-shadow-color-subtle,oklch(0% 0 0/.1)), 0 1px 3px 0 oklch(0% 0 0/.15), 0 1px 2px -1px oklch(0% 0 0/.15);opacity:0;transform-origin:50%;user-select:none;outline-offset:-2px;background-color:currentColor;border-radius:3.40282e38px;outline:2px solid #0000;transition-property:opacity,scale,outline-offset;transition-duration:.15s;transition-timing-function:ease-out;position:absolute;transform:translate(-50%,-50%)scale(.7);&[data-orientation=horizontal]{top:50%;left:var(--media-slider-fill)}&[data-orientation=vertical]{left:50%;top:calc(100% - var(--media-slider-fill))}&:focus-visible{outline-offset:2px;outline-color:currentColor}}.media-minimal-skin .media-slider:hover .media-slider__thumb,.media-minimal-skin .media-slider:focus-within .media-slider__thumb,.media-minimal-skin .media-slider__thumb--persistent{opacity:1;scale:1}.media-minimal-skin .media-slider__buffer,.media-minimal-skin .media-slider__fill{border-radius:inherit;pointer-events:none;position:absolute}.media-minimal-skin .media-slider__buffer[data-orientation=horizontal],.media-minimal-skin .media-slider__fill[data-orientation=horizontal]{inset-block:0;left:0}.media-minimal-skin .media-slider__buffer[data-orientation=vertical],.media-minimal-skin .media-slider__fill[data-orientation=vertical]{inset-inline:0;bottom:0}.media-minimal-skin .media-slider__buffer{background-color:oklch(from currentColor l c h / .2);transition-duration:.25s;transition-timing-function:ease-out;&[data-orientation=horizontal]{width:var(--media-slider-buffer);transition-property:width}&[data-orientation=vertical]{height:var(--media-slider-buffer);transition-property:height}}.media-minimal-skin .media-slider__fill{background-color:currentColor;&[data-orientation=horizontal]{width:var(--media-slider-fill)}&[data-orientation=vertical]{height:var(--media-slider-fill)}}.media-minimal-skin .media-slider__time-display{font-variant-numeric:tabular-nums}.media-minimal-skin .media-popover,.media-minimal-skin .media-tooltip{color:inherit;border:0;margin:0;transition-property:transform,scale,opacity,filter;transition-duration:.2s;overflow:visible;&[data-starting-style],&[data-ending-style]{opacity:0;filter:blur(8px);transform:scale(0)}&[data-instant]{transition-duration:0s}&[data-side=top]{transform-origin:bottom}&[data-side=bottom]{transform-origin:top}&[data-side=left]{transform-origin:100%}&[data-side=right]{transform-origin:0}}.media-minimal-skin .media-tooltip{backdrop-filter:blur(16px)saturate(1.5);white-space:nowrap;--media-tooltip-side-offset:.5rem;background-color:oklch(100% 0 0/.1);border-radius:.25rem;padding:.25rem .5rem;font-size:.75rem;box-shadow:0 4px 6px -1px oklch(0% 0 0/.1),0 2px 4px -2px oklch(0% 0 0/.1);@media (prefers-reduced-transparency:reduce){background-color:oklch(0% 0 0/.7)}@media (prefers-contrast:more){background-color:oklch(0% 0 0/.9)}}.media-minimal-skin--audio{--media-controls-background-color:oklch(100% 0 0);--media-controls-border-color:oklch(0% 0 0/.1);--media-controls-text-color:oklch(0% 0 0);@media (prefers-color-scheme:dark){--media-controls-background-color:oklch(0% 0 0);--media-controls-border-color:oklch(100% 0 0/.1);--media-controls-text-color:oklch(100% 0 0)}}.media-minimal-skin--audio .media-controls{background-color:var(--media-controls-background-color);backdrop-filter:blur(16px)saturate(1.5);border-radius:var(--media-border-radius,.75rem);color:var(--media-controls-text-color);box-shadow:0 0 0 1px var(--media-controls-border-color);gap:.5rem;padding:.375rem}.media-minimal-skin--audio .media-popover--volume{background:linear-gradient(to left, var(--media-controls-background-color) 80%, transparent 100%);--media-popover-side-offset:.75rem;padding:.5rem 0 .5rem 4rem}media-tooltip-group{display:contents}
|
package/cdn/audio-minimal.dev.js
CHANGED
|
@@ -556,14 +556,11 @@ const controlsFeature = definePlayerFeature({
|
|
|
556
556
|
pointerDownTime = Date.now();
|
|
557
557
|
}
|
|
558
558
|
function onPointerUp(event) {
|
|
559
|
-
if (event.pointerType === "touch" && Date.now() - pointerDownTime < TAP_THRESHOLD)
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
controlsVisible: computeVisible(false)
|
|
564
|
-
});
|
|
559
|
+
if (event.pointerType === "touch" && Date.now() - pointerDownTime < TAP_THRESHOLD) {
|
|
560
|
+
const isMediaOrContainer = [media, container].includes(event.target);
|
|
561
|
+
if (get().controlsVisible && isMediaOrContainer) setInactive();
|
|
562
|
+
else setActive();
|
|
565
563
|
} else setActive();
|
|
566
|
-
else setActive();
|
|
567
564
|
}
|
|
568
565
|
function onPlaybackChange() {
|
|
569
566
|
const { userActive } = get();
|
|
@@ -575,7 +572,7 @@ const controlsFeature = definePlayerFeature({
|
|
|
575
572
|
listen(container, "pointerup", onPointerUp, { signal });
|
|
576
573
|
listen(container, "keyup", setActive, { signal });
|
|
577
574
|
listen(container, "focusin", setActive, { signal });
|
|
578
|
-
listen(container, "
|
|
575
|
+
listen(container, "mouseleave", setInactive, { signal });
|
|
579
576
|
listen(media, "play", onPlaybackChange, { signal });
|
|
580
577
|
listen(media, "pause", onPlaybackChange, { signal });
|
|
581
578
|
listen(media, "ended", onPlaybackChange, { signal });
|
|
@@ -667,6 +664,10 @@ async function exitFullscreen() {
|
|
|
667
664
|
|
|
668
665
|
//#endregion
|
|
669
666
|
//#region ../core/dist/dev/dom/presentation/pip.js
|
|
667
|
+
function resolveMediaTarget(media) {
|
|
668
|
+
const target = media.target;
|
|
669
|
+
return target instanceof HTMLMediaElement ? target : media;
|
|
670
|
+
}
|
|
670
671
|
/**
|
|
671
672
|
* Check if Picture-in-Picture is supported on this platform.
|
|
672
673
|
*
|
|
@@ -684,8 +685,9 @@ function isPictureInPictureEnabled() {
|
|
|
684
685
|
* Check if Picture-in-Picture is currently active for a media element.
|
|
685
686
|
*/
|
|
686
687
|
function isPictureInPictureElement(media) {
|
|
687
|
-
|
|
688
|
-
|
|
688
|
+
const target = resolveMediaTarget(media);
|
|
689
|
+
if (document.pictureInPictureElement === target) return true;
|
|
690
|
+
return target.webkitPresentationMode === "picture-in-picture";
|
|
689
691
|
}
|
|
690
692
|
/**
|
|
691
693
|
* Request Picture-in-Picture mode.
|
|
@@ -694,7 +696,7 @@ function isPictureInPictureElement(media) {
|
|
|
694
696
|
* WebKit presentation mode.
|
|
695
697
|
*/
|
|
696
698
|
async function requestPictureInPicture(media) {
|
|
697
|
-
const video = media;
|
|
699
|
+
const video = resolveMediaTarget(media);
|
|
698
700
|
if (isFunction(video.requestPictureInPicture)) {
|
|
699
701
|
await video.requestPictureInPicture();
|
|
700
702
|
return;
|
|
@@ -712,13 +714,14 @@ async function requestPictureInPicture(media) {
|
|
|
712
714
|
* WebKit presentation mode.
|
|
713
715
|
*/
|
|
714
716
|
async function exitPictureInPicture(media) {
|
|
715
|
-
if (
|
|
717
|
+
if (isFunction(document.exitPictureInPicture)) try {
|
|
716
718
|
await document.exitPictureInPicture();
|
|
717
719
|
return;
|
|
718
|
-
}
|
|
720
|
+
} catch {}
|
|
719
721
|
if (media) {
|
|
720
|
-
const video = media;
|
|
721
|
-
|
|
722
|
+
const video = resolveMediaTarget(media);
|
|
723
|
+
const mode = video.webkitPresentationMode;
|
|
724
|
+
if (isFunction(video.webkitSetPresentationMode) && (!mode || mode === "picture-in-picture")) {
|
|
722
725
|
video.webkitSetPresentationMode("inline");
|
|
723
726
|
return;
|
|
724
727
|
}
|
|
@@ -2488,13 +2491,13 @@ function createContainerMixin(context) {
|
|
|
2488
2491
|
connectedCallback() {
|
|
2489
2492
|
super.connectedCallback();
|
|
2490
2493
|
this.#observer = new MutationObserver((records) => {
|
|
2491
|
-
if (records.some(
|
|
2494
|
+
if (records.some(hasMediaElement)) this.#attachMedia();
|
|
2492
2495
|
});
|
|
2493
2496
|
this.#observer.observe(this, {
|
|
2494
2497
|
childList: true,
|
|
2495
2498
|
subtree: true,
|
|
2496
2499
|
attributes: true,
|
|
2497
|
-
attributeFilter: ["
|
|
2500
|
+
attributeFilter: ["name"]
|
|
2498
2501
|
});
|
|
2499
2502
|
this.addEventListener("slotchange", this.#onSlotChange);
|
|
2500
2503
|
this.#attachMedia();
|
|
@@ -2512,18 +2515,24 @@ function createContainerMixin(context) {
|
|
|
2512
2515
|
#getSlottedMedia() {
|
|
2513
2516
|
const slot = this.querySelector("slot[name=\"media\"]");
|
|
2514
2517
|
if (!slot) return null;
|
|
2515
|
-
for (const el of slot.assignedElements({ flatten: true })) if (el
|
|
2518
|
+
for (const el of slot.assignedElements({ flatten: true })) if (isMediaElement(el)) return el;
|
|
2519
|
+
return null;
|
|
2520
|
+
}
|
|
2521
|
+
#findMediaElement() {
|
|
2522
|
+
const media = Array.from(this.children).find(isMediaElement);
|
|
2523
|
+
if (media) return media;
|
|
2516
2524
|
return null;
|
|
2517
2525
|
}
|
|
2518
2526
|
#attachMedia() {
|
|
2519
2527
|
const store = this.#contextStore ?? this.store;
|
|
2520
2528
|
if (!store) return;
|
|
2521
|
-
const media = this.querySelector("video, audio
|
|
2529
|
+
const media = this.querySelector("video, audio") ?? this.#findMediaElement() ?? this.#getSlottedMedia();
|
|
2522
2530
|
if (!media) {
|
|
2523
2531
|
this.#detach();
|
|
2524
2532
|
this.#detach = noop;
|
|
2525
2533
|
return;
|
|
2526
2534
|
}
|
|
2535
|
+
if (isCustomMediaElement(media)) globalThis.customElements?.upgrade?.(media);
|
|
2527
2536
|
const target = {
|
|
2528
2537
|
media,
|
|
2529
2538
|
container: this
|
|
@@ -2538,13 +2547,19 @@ function createContainerMixin(context) {
|
|
|
2538
2547
|
return PlayerContainerElement;
|
|
2539
2548
|
};
|
|
2540
2549
|
}
|
|
2541
|
-
function
|
|
2542
|
-
return node instanceof HTMLMediaElement || node
|
|
2550
|
+
function isMediaElement(node) {
|
|
2551
|
+
return node instanceof HTMLMediaElement || isCustomMediaElement(node);
|
|
2552
|
+
}
|
|
2553
|
+
function isCustomMediaElement(node) {
|
|
2554
|
+
return node instanceof HTMLElement && (node.localName.endsWith("-audio") || node.localName.endsWith("-video"));
|
|
2543
2555
|
}
|
|
2544
|
-
function
|
|
2545
|
-
|
|
2546
|
-
|
|
2547
|
-
|
|
2556
|
+
function isMediaSlotElement(node) {
|
|
2557
|
+
return node instanceof HTMLSlotElement && node.name === "media";
|
|
2558
|
+
}
|
|
2559
|
+
function hasMediaElement(record) {
|
|
2560
|
+
if (isMediaSlotElement(record.target)) return true;
|
|
2561
|
+
for (const node of record.addedNodes) if (isMediaElement(node) || isMediaSlotElement(node)) return true;
|
|
2562
|
+
for (const node of record.removedNodes) if (isMediaElement(node) || isMediaSlotElement(node)) return true;
|
|
2548
2563
|
return false;
|
|
2549
2564
|
}
|
|
2550
2565
|
|
|
@@ -3243,36 +3258,17 @@ function renderIcon(name, attrs) {
|
|
|
3243
3258
|
}
|
|
3244
3259
|
|
|
3245
3260
|
//#endregion
|
|
3246
|
-
//#region src/define/
|
|
3247
|
-
|
|
3248
|
-
* Light DOM stylesheet that bridges CSS custom properties set by skins
|
|
3249
|
-
* to native WebKit text track pseudo-elements on the slotted `<video>`.
|
|
3250
|
-
*
|
|
3251
|
-
* `::slotted(video)::-webkit-media-text-track-container` is invalid per
|
|
3252
|
-
* CSS spec, so this bridge lives in light DOM where it can directly
|
|
3253
|
-
* target the video element's pseudo-elements.
|
|
3254
|
-
*/
|
|
3255
|
-
const NATIVE_CAPTION_BRIDGE_CSS = `
|
|
3256
|
-
.media-skin > video::-webkit-media-text-track-container {
|
|
3257
|
-
transition: transform var(--media-caption-track-duration, 150ms) ease-out;
|
|
3258
|
-
transition-delay: var(--media-caption-track-delay, 600ms);
|
|
3259
|
-
transform: translateY(var(--media-caption-track-y, 0)) scale(0.98);
|
|
3260
|
-
z-index: var(--media-caption-track-z, 1);
|
|
3261
|
-
font-family: inherit;
|
|
3262
|
-
}
|
|
3261
|
+
//#region inline-css:src/define/base.js
|
|
3262
|
+
var base_default = "video-player {\n display: contents;\n}\n\nvideo-player video,\nvideo-player hls-video,\nvideo-player simple-hls-video {\n display: block;\n width: 100%;\n height: 100%;\n}\n\nvideo-player video::-webkit-media-text-track-container {\n transition: transform var(--media-caption-track-duration, 150ms) ease-out;\n transition-delay: var(--media-caption-track-delay, 600ms);\n transform: translateY(var(--media-caption-track-y, 0)) scale(0.98);\n z-index: var(--media-caption-track-z, 1);\n font-family: inherit;\n}\n\n@media (prefers-reduced-motion: reduce) {\n video-player video::-webkit-media-text-track-container {\n transition-duration: 50ms;\n }\n}\n";
|
|
3263
3263
|
|
|
3264
|
-
|
|
3265
|
-
|
|
3266
|
-
|
|
3267
|
-
|
|
3268
|
-
|
|
3269
|
-
`;
|
|
3270
|
-
const BRIDGE_ID = "media-caption-bridge";
|
|
3271
|
-
function ensureCaptionBridge() {
|
|
3272
|
-
if (document.getElementById(BRIDGE_ID)) return;
|
|
3264
|
+
//#endregion
|
|
3265
|
+
//#region src/define/skin-mixin.ts
|
|
3266
|
+
const STYLES_ID = "__media-styles";
|
|
3267
|
+
function ensureStyles() {
|
|
3268
|
+
if (document.getElementById(STYLES_ID)) return;
|
|
3273
3269
|
const style = document.createElement("style");
|
|
3274
|
-
style.id =
|
|
3275
|
-
style.textContent =
|
|
3270
|
+
style.id = STYLES_ID;
|
|
3271
|
+
style.textContent = base_default;
|
|
3276
3272
|
document.head.appendChild(style);
|
|
3277
3273
|
}
|
|
3278
3274
|
/**
|
|
@@ -3280,8 +3276,8 @@ function ensureCaptionBridge() {
|
|
|
3280
3276
|
* `getTemplateHTML` method into a shadow root. Native `<slot>` elements
|
|
3281
3277
|
* handle light DOM projection automatically.
|
|
3282
3278
|
*
|
|
3283
|
-
* When `static styles` is set, the stylesheet is adopted into the
|
|
3284
|
-
* root via `adoptedStyleSheets`.
|
|
3279
|
+
* When `static styles` is set, the stylesheet is adopted into the
|
|
3280
|
+
* shadow root via `adoptedStyleSheets`.
|
|
3285
3281
|
*/
|
|
3286
3282
|
function SkinMixin(BaseClass) {
|
|
3287
3283
|
class SkinElement extends BaseClass {
|
|
@@ -3290,8 +3286,7 @@ function SkinMixin(BaseClass) {
|
|
|
3290
3286
|
}
|
|
3291
3287
|
constructor(...args) {
|
|
3292
3288
|
super(...args);
|
|
3293
|
-
|
|
3294
|
-
ensureCaptionBridge();
|
|
3289
|
+
ensureStyles();
|
|
3295
3290
|
if (!this.shadowRoot) {
|
|
3296
3291
|
const ctor = this.constructor;
|
|
3297
3292
|
this.attachShadow(ctor.shadowRootOptions);
|
|
@@ -3311,7 +3306,7 @@ function createStyles(css) {
|
|
|
3311
3306
|
|
|
3312
3307
|
//#endregion
|
|
3313
3308
|
//#region inline-css:src/define/audio/minimal-skin.js
|
|
3314
|
-
var minimal_skin_default = "/* ==========================================================================\n Icon State Visibility for Audio 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 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 display: block;\n opacity: 1;\n}\n\n/* ==========================================================================\n Tooltip Label State Visibility for Audio 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 display: block;\n}\n\n/* ==========================================================================\n Reset\n ========================================================================== */\n\n.media-minimal-skin *,\n.media-minimal-skin *::before,\n.media-minimal-skin *::after {\n box-sizing: border-box;\n margin: 0;\n}\n.media-minimal-skin img,\n.media-minimal-skin video,\n.media-minimal-skin svg {\n display: block;\n max-width: 100%;\n}\n.media-minimal-skin button {\n font: inherit;\n}\n@media (prefers-reduced-motion: no-preference) {\n .media-minimal-skin {\n interpolate-size: allow-keywords;\n }\n}\n\n/* ==========================================================================\n Root Container\n ========================================================================== */\n\n.media-minimal-skin {\n position: relative;\n isolation: isolate;\n display: block;\n container: media-root / inline-size;\n border-radius: var(--media-border-radius, 0.75rem);\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 Buffering Indicator\n ========================================================================== */\n\n.media-minimal-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\n/* ==========================================================================\n Error Dialog\n ========================================================================== */\n\n.media-minimal-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 pointer-events: none;\n}\n\n.media-minimal-skin .media-error__dialog {\n display: flex;\n flex-direction: column;\n gap: 0.75rem;\n max-width: 16rem;\n padding: 1rem;\n color: oklch(1 0 0);\n font-size: 0.875rem;\n text-shadow: 0 1px 0 oklch(0 0 0 / 0.5);\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-minimal-skin .media-error[data-starting-style] .media-error__dialog,\n.media-minimal-skin .media-error[data-ending-style] .media-error__dialog {\n opacity: 0;\n transform: scale(0.5);\n}\n\n.media-minimal-skin .media-error__content {\n display: flex;\n flex-direction: column;\n gap: 0.5rem;\n padding: 0.375rem 0;\n}\n\n.media-minimal-skin .media-error__title {\n font-weight: 600;\n line-height: 1.25;\n}\n\n.media-minimal-skin .media-error__description {\n opacity: 0.7;\n}\n\n.media-minimal-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-minimal-skin .media-controls {\n container: media-controls / inline-size;\n display: flex;\n align-items: center;\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\n/* ==========================================================================\n Time Controls & Display\n ========================================================================== */\n\n.media-minimal-skin .media-time-controls {\n display: flex;\n flex-direction: row-reverse;\n align-items: center;\n flex: 1;\n gap: 0.75rem;\n}\n.media-minimal-skin .media-time {\n display: flex;\n align-items: center;\n gap: 0.25rem;\n}\n.media-minimal-skin .media-time__value {\n font-variant-numeric: tabular-nums;\n}\n.media-minimal-skin .media-time__value--current,\n.media-minimal-skin .media-time__separator {\n display: none;\n}\n@container media-controls (width > 28rem) {\n .media-minimal-skin .media-time-controls {\n flex-direction: row;\n }\n .media-minimal-skin .media-time__value--duration,\n .media-minimal-skin .media-time__separator {\n color: oklch(from currentColor l c h / 0.6);\n }\n .media-minimal-skin .media-time__value--current,\n .media-minimal-skin .media-time__separator {\n display: inline;\n }\n}\n\n/* ==========================================================================\n Button Groups\n ========================================================================== */\n\n.media-minimal-skin .media-button-group {\n display: flex;\n align-items: center;\n gap: 0.075rem;\n\n @container media-root (width > 40rem) {\n gap: 0.125rem;\n }\n}\n\n/* ==========================================================================\n Buttons\n ========================================================================== */\n\n/* Base button */\n.media-minimal-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: 0.5rem;\n outline: 2px solid transparent;\n outline-offset: -2px;\n color: oklch(0 0 0);\n font-weight: 500;\n text-align: center;\n text-shadow: inherit;\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: currentColor;\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-minimal-skin .media-button--icon {\n display: grid;\n width: 2.375rem;\n padding: 0;\n aspect-ratio: 1;\n background: transparent;\n color: inherit;\n\n &:hover,\n &:focus-visible,\n &[aria-expanded=\"true\"] {\n color: oklch(from currentColor l c h / 0.8);\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-minimal-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-minimal-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-minimal-skin .media-icon__container {\n position: relative;\n}\n.media-minimal-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-minimal-skin .media-icon--flipped {\n scale: -1 1;\n}\n\n/* ==========================================================================\n Slider\n ========================================================================== */\n\n.media-minimal-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: 4.5rem;\n }\n}\n\n/* Track */\n.media-minimal-skin .media-slider__track {\n position: relative;\n isolation: isolate;\n overflow: hidden;\n border-radius: inherit;\n user-select: none;\n background-color: oklch(from currentColor l c h / 0.2);\n\n &[data-orientation=\"horizontal\"] {\n width: 100%;\n height: 0.1875rem;\n }\n\n &[data-orientation=\"vertical\"] {\n width: 0.1875rem;\n height: 100%;\n }\n}\n\n/* Thumb */\n.media-minimal-skin .media-slider__thumb {\n position: absolute;\n transform: translate(-50%, -50%);\n z-index: 10;\n width: 0.75rem;\n height: 0.75rem;\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 scale: 0.7;\n transform-origin: center;\n transition-property: opacity, scale, outline-offset;\n transition-duration: 150ms;\n transition-timing-function: ease-out;\n user-select: none;\n outline: 2px solid transparent;\n outline-offset: -2px;\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 &:focus-visible {\n outline-color: currentColor;\n outline-offset: 2px;\n }\n}\n\n.media-minimal-skin .media-slider:hover .media-slider__thumb,\n.media-minimal-skin .media-slider:focus-within .media-slider__thumb,\n.media-minimal-skin .media-slider__thumb--persistent {\n opacity: 1;\n scale: 1;\n}\n\n/* Shared track fills */\n.media-minimal-skin .media-slider__buffer,\n.media-minimal-skin .media-slider__fill {\n position: absolute;\n border-radius: inherit;\n pointer-events: none;\n}\n\n.media-minimal-skin .media-slider__buffer[data-orientation=\"horizontal\"],\n.media-minimal-skin .media-slider__fill[data-orientation=\"horizontal\"] {\n inset-block: 0;\n left: 0;\n}\n\n.media-minimal-skin .media-slider__buffer[data-orientation=\"vertical\"],\n.media-minimal-skin .media-slider__fill[data-orientation=\"vertical\"] {\n inset-inline: 0;\n bottom: 0;\n}\n\n/* Buffer */\n.media-minimal-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-minimal-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-minimal-skin .media-slider__time-display {\n font-variant-numeric: tabular-nums;\n}\n\n/* ==========================================================================\n Popups & Animations\n ========================================================================== */\n\n.media-minimal-skin .media-popover,\n.media-minimal-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-minimal-skin .media-tooltip {\n padding: 0.25rem 0.5rem;\n border-radius: 0.25rem;\n background-color: oklch(1 0 0 / 0.1);\n backdrop-filter: blur(64px) brightness(0.9) saturate(1.5);\n box-shadow:\n 0 4px 6px -1px oklch(0 0 0 / 0.1),\n 0 2px 4px -2px oklch(0 0 0 / 0.1);\n font-size: 0.75rem;\n white-space: nowrap;\n --media-tooltip-side-offset: 0.5rem;\n\n @media (prefers-reduced-transparency: reduce) {\n background-color: oklch(0 0 0 / 0.7);\n }\n\n @media (prefers-contrast: more) {\n background-color: oklch(0 0 0 / 0.9);\n }\n}\n\n\n/* ==========================================================================\n Controls\n ========================================================================== */\n\n.media-minimal-skin--audio {\n --media-controls-background-color: oklch(1 0 0);\n --media-controls-border-color: oklch(0 0 0 / 0.1);\n --media-controls-text-color: oklch(0 0 0);\n\n @media (prefers-color-scheme: dark) {\n --media-controls-background-color: oklch(0 0 0);\n --media-controls-border-color: oklch(1 0 0 / 0.1);\n --media-controls-text-color: oklch(1 0 0);\n }\n}\n.media-minimal-skin--audio .media-controls {\n gap: 0.5rem;\n padding: 0.375rem;\n background-color: var(--media-controls-background-color);\n backdrop-filter: blur(8px) brightness(0.98) saturate(1.2);\n border-radius: var(--media-border-radius, 0.75rem);\n color: var(--media-controls-text-color);\n box-shadow: 0 0 0 1px var(--media-controls-border-color);\n}\n\n/* ==========================================================================\n Popups & Animations\n ========================================================================== */\n\n.media-minimal-skin--audio .media-popover--volume {\n background: linear-gradient(to left, var(--media-controls-background-color) 80%, transparent 100%);\n padding: 0.5rem 0 0.5rem 4rem;\n --media-popover-side-offset: 0.75rem;\n}\n\n";
|
|
3309
|
+
var minimal_skin_default = "/* ==========================================================================\n Icon State Visibility for Audio 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 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 display: block;\n opacity: 1;\n}\n\n/* ==========================================================================\n Tooltip Label State Visibility for Audio 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 display: block;\n}\n\n/* ==========================================================================\n Reset\n ========================================================================== */\n\n.media-minimal-skin *,\n.media-minimal-skin *::before,\n.media-minimal-skin *::after {\n box-sizing: border-box;\n margin: 0;\n}\n.media-minimal-skin img,\n.media-minimal-skin video,\n.media-minimal-skin svg {\n display: block;\n max-width: 100%;\n}\n.media-minimal-skin button {\n font: inherit;\n}\n@media (prefers-reduced-motion: no-preference) {\n .media-minimal-skin {\n interpolate-size: allow-keywords;\n }\n}\n\n/* ==========================================================================\n Root Container\n ========================================================================== */\n\n.media-minimal-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, 0.75rem);\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 Buffering Indicator\n ========================================================================== */\n\n.media-minimal-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\n/* ==========================================================================\n Error Dialog\n ========================================================================== */\n\n.media-minimal-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 pointer-events: none;\n}\n\n.media-minimal-skin .media-error__dialog {\n display: flex;\n flex-direction: column;\n gap: 0.75rem;\n max-width: 16rem;\n padding: 1rem;\n color: oklch(1 0 0);\n font-size: 0.875rem;\n text-shadow: 0 1px 0 oklch(0 0 0 / 0.5);\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-minimal-skin .media-error[data-starting-style] .media-error__dialog,\n.media-minimal-skin .media-error[data-ending-style] .media-error__dialog {\n opacity: 0;\n transform: scale(0.5);\n}\n\n.media-minimal-skin .media-error__content {\n display: flex;\n flex-direction: column;\n gap: 0.5rem;\n padding: 0.375rem 0;\n}\n\n.media-minimal-skin .media-error__title {\n font-weight: 600;\n line-height: 1.25;\n}\n\n.media-minimal-skin .media-error__description {\n opacity: 0.7;\n}\n\n.media-minimal-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-minimal-skin .media-controls {\n container: media-controls / inline-size;\n display: flex;\n align-items: center;\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\n/* ==========================================================================\n Time Controls & Display\n ========================================================================== */\n\n.media-minimal-skin .media-time-controls {\n display: flex;\n flex-direction: row-reverse;\n align-items: center;\n flex: 1;\n gap: 0.75rem;\n}\n.media-minimal-skin .media-time {\n display: flex;\n align-items: center;\n gap: 0.25rem;\n}\n.media-minimal-skin .media-time__value {\n font-variant-numeric: tabular-nums;\n}\n.media-minimal-skin .media-time__value--current,\n.media-minimal-skin .media-time__separator {\n display: none;\n}\n@container media-controls (width > 28rem) {\n .media-minimal-skin .media-time-controls {\n flex-direction: row;\n }\n .media-minimal-skin .media-time__value--duration,\n .media-minimal-skin .media-time__separator {\n color: oklch(from currentColor l c h / 0.6);\n }\n .media-minimal-skin .media-time__value--current,\n .media-minimal-skin .media-time__separator {\n display: inline;\n }\n}\n\n/* ==========================================================================\n Button Groups\n ========================================================================== */\n\n.media-minimal-skin .media-button-group {\n display: flex;\n align-items: center;\n gap: 0.075rem;\n\n @container media-root (width > 40rem) {\n gap: 0.125rem;\n }\n}\n\n/* ==========================================================================\n Buttons\n ========================================================================== */\n\n/* Base button */\n.media-minimal-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: 0.5rem;\n outline: 2px solid transparent;\n outline-offset: -2px;\n color: oklch(0 0 0);\n font-weight: 500;\n text-align: center;\n text-shadow: inherit;\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: currentColor;\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-minimal-skin .media-button--icon {\n display: grid;\n width: 2.375rem;\n padding: 0;\n aspect-ratio: 1;\n background: transparent;\n color: inherit;\n\n &:hover,\n &:focus-visible,\n &[aria-expanded=\"true\"] {\n color: oklch(from currentColor l c h / 0.8);\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-minimal-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-minimal-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-minimal-skin .media-icon__container {\n position: relative;\n}\n.media-minimal-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-minimal-skin .media-icon--flipped {\n scale: -1 1;\n}\n\n/* ==========================================================================\n Slider\n ========================================================================== */\n\n.media-minimal-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: 4.5rem;\n }\n}\n\n/* Track */\n.media-minimal-skin .media-slider__track {\n position: relative;\n isolation: isolate;\n overflow: hidden;\n border-radius: inherit;\n user-select: none;\n background-color: oklch(from currentColor l c h / 0.2);\n\n &[data-orientation=\"horizontal\"] {\n width: 100%;\n height: 0.1875rem;\n }\n\n &[data-orientation=\"vertical\"] {\n width: 0.1875rem;\n height: 100%;\n }\n}\n\n/* Thumb */\n.media-minimal-skin .media-slider__thumb {\n position: absolute;\n transform: translate(-50%, -50%);\n z-index: 10;\n width: 0.75rem;\n height: 0.75rem;\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 scale: 0.7;\n transform-origin: center;\n transition-property: opacity, scale, outline-offset;\n transition-duration: 150ms;\n transition-timing-function: ease-out;\n user-select: none;\n outline: 2px solid transparent;\n outline-offset: -2px;\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 &:focus-visible {\n outline-color: currentColor;\n outline-offset: 2px;\n }\n}\n\n.media-minimal-skin .media-slider:hover .media-slider__thumb,\n.media-minimal-skin .media-slider:focus-within .media-slider__thumb,\n.media-minimal-skin .media-slider__thumb--persistent {\n opacity: 1;\n scale: 1;\n}\n\n/* Shared track fills */\n.media-minimal-skin .media-slider__buffer,\n.media-minimal-skin .media-slider__fill {\n position: absolute;\n border-radius: inherit;\n pointer-events: none;\n}\n\n.media-minimal-skin .media-slider__buffer[data-orientation=\"horizontal\"],\n.media-minimal-skin .media-slider__fill[data-orientation=\"horizontal\"] {\n inset-block: 0;\n left: 0;\n}\n\n.media-minimal-skin .media-slider__buffer[data-orientation=\"vertical\"],\n.media-minimal-skin .media-slider__fill[data-orientation=\"vertical\"] {\n inset-inline: 0;\n bottom: 0;\n}\n\n/* Buffer */\n.media-minimal-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-minimal-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-minimal-skin .media-slider__time-display {\n font-variant-numeric: tabular-nums;\n}\n\n/* ==========================================================================\n Popups & Animations\n ========================================================================== */\n\n.media-minimal-skin .media-popover,\n.media-minimal-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-minimal-skin .media-tooltip {\n padding: 0.25rem 0.5rem;\n border-radius: 0.25rem;\n background-color: oklch(1 0 0 / 0.1);\n backdrop-filter: blur(16px) saturate(1.5);\n box-shadow:\n 0 4px 6px -1px oklch(0 0 0 / 0.1),\n 0 2px 4px -2px oklch(0 0 0 / 0.1);\n font-size: 0.75rem;\n white-space: nowrap;\n --media-tooltip-side-offset: 0.5rem;\n\n @media (prefers-reduced-transparency: reduce) {\n background-color: oklch(0 0 0 / 0.7);\n }\n\n @media (prefers-contrast: more) {\n background-color: oklch(0 0 0 / 0.9);\n }\n}\n\n\n/* ==========================================================================\n Controls\n ========================================================================== */\n\n.media-minimal-skin--audio {\n --media-controls-background-color: oklch(1 0 0);\n --media-controls-border-color: oklch(0 0 0 / 0.1);\n --media-controls-text-color: oklch(0 0 0);\n\n @media (prefers-color-scheme: dark) {\n --media-controls-background-color: oklch(0 0 0);\n --media-controls-border-color: oklch(1 0 0 / 0.1);\n --media-controls-text-color: oklch(1 0 0);\n }\n}\n.media-minimal-skin--audio .media-controls {\n gap: 0.5rem;\n padding: 0.375rem;\n background-color: var(--media-controls-background-color);\n backdrop-filter: blur(16px) saturate(1.5);\n border-radius: var(--media-border-radius, 0.75rem);\n color: var(--media-controls-text-color);\n box-shadow: 0 0 0 1px var(--media-controls-border-color);\n}\n\n/* ==========================================================================\n Popups & Animations\n ========================================================================== */\n\n.media-minimal-skin--audio .media-popover--volume {\n background: linear-gradient(to left, var(--media-controls-background-color) 80%, transparent 100%);\n padding: 0.5rem 0 0.5rem 4rem;\n --media-popover-side-offset: 0.75rem;\n}\n\nmedia-tooltip-group {\n display: contents;\n}\n\n";
|
|
3315
3310
|
|
|
3316
3311
|
//#endregion
|
|
3317
3312
|
//#region src/define/media/container.ts
|
|
@@ -4091,6 +4086,42 @@ const TooltipDataAttrs = {
|
|
|
4091
4086
|
transitionEnding: "data-ending-style"
|
|
4092
4087
|
};
|
|
4093
4088
|
|
|
4089
|
+
//#endregion
|
|
4090
|
+
//#region ../core/dist/dev/core/ui/tooltip/tooltip-group-core.js
|
|
4091
|
+
var TooltipGroupCore = class TooltipGroupCore {
|
|
4092
|
+
static defaultProps = {
|
|
4093
|
+
delay: 600,
|
|
4094
|
+
closeDelay: 0,
|
|
4095
|
+
timeout: 400
|
|
4096
|
+
};
|
|
4097
|
+
#props = { ...TooltipGroupCore.defaultProps };
|
|
4098
|
+
#lastCloseTime = 0;
|
|
4099
|
+
#isOpen = false;
|
|
4100
|
+
constructor(props) {
|
|
4101
|
+
if (props) this.setProps(props);
|
|
4102
|
+
}
|
|
4103
|
+
setProps(props) {
|
|
4104
|
+
this.#props = defaults(props, TooltipGroupCore.defaultProps);
|
|
4105
|
+
}
|
|
4106
|
+
get delay() {
|
|
4107
|
+
return this.#props.delay;
|
|
4108
|
+
}
|
|
4109
|
+
get closeDelay() {
|
|
4110
|
+
return this.#props.closeDelay;
|
|
4111
|
+
}
|
|
4112
|
+
shouldSkipDelay() {
|
|
4113
|
+
if (this.#isOpen) return true;
|
|
4114
|
+
return Date.now() - this.#lastCloseTime < this.#props.timeout;
|
|
4115
|
+
}
|
|
4116
|
+
notifyOpen() {
|
|
4117
|
+
this.#isOpen = true;
|
|
4118
|
+
}
|
|
4119
|
+
notifyClose() {
|
|
4120
|
+
this.#isOpen = false;
|
|
4121
|
+
this.#lastCloseTime = Date.now();
|
|
4122
|
+
}
|
|
4123
|
+
};
|
|
4124
|
+
|
|
4094
4125
|
//#endregion
|
|
4095
4126
|
//#region ../core/dist/dev/core/ui/volume-slider/volume-slider-core.js
|
|
4096
4127
|
/** Volume-domain slider: maps media volume/mute state to slider state. */
|
|
@@ -5138,6 +5169,44 @@ var TooltipElement = class extends MediaElement {
|
|
|
5138
5169
|
//#region src/define/ui/tooltip.ts
|
|
5139
5170
|
safeDefine(TooltipElement);
|
|
5140
5171
|
|
|
5172
|
+
//#endregion
|
|
5173
|
+
//#region src/ui/tooltip/tooltip-group-element.ts
|
|
5174
|
+
var TooltipGroupElement = class extends MediaElement {
|
|
5175
|
+
constructor(..._args) {
|
|
5176
|
+
super(..._args);
|
|
5177
|
+
this.delay = TooltipGroupCore.defaultProps.delay;
|
|
5178
|
+
this.closeDelay = TooltipGroupCore.defaultProps.closeDelay;
|
|
5179
|
+
this.timeout = TooltipGroupCore.defaultProps.timeout;
|
|
5180
|
+
}
|
|
5181
|
+
static {
|
|
5182
|
+
this.tagName = "media-tooltip-group";
|
|
5183
|
+
}
|
|
5184
|
+
static {
|
|
5185
|
+
this.properties = {
|
|
5186
|
+
delay: { type: Number },
|
|
5187
|
+
closeDelay: {
|
|
5188
|
+
type: Number,
|
|
5189
|
+
attribute: "close-delay"
|
|
5190
|
+
},
|
|
5191
|
+
timeout: { type: Number }
|
|
5192
|
+
};
|
|
5193
|
+
}
|
|
5194
|
+
#core = new TooltipGroupCore();
|
|
5195
|
+
#provider = new ContextProvider(this, {
|
|
5196
|
+
context: tooltipGroupContext,
|
|
5197
|
+
initialValue: this.#core
|
|
5198
|
+
});
|
|
5199
|
+
update(_changed) {
|
|
5200
|
+
super.update(_changed);
|
|
5201
|
+
this.#core.setProps(this);
|
|
5202
|
+
this.#provider.setValue(this.#core);
|
|
5203
|
+
}
|
|
5204
|
+
};
|
|
5205
|
+
|
|
5206
|
+
//#endregion
|
|
5207
|
+
//#region src/define/ui/tooltip-group.ts
|
|
5208
|
+
safeDefine(TooltipGroupElement);
|
|
5209
|
+
|
|
5141
5210
|
//#endregion
|
|
5142
5211
|
//#region src/ui/volume-slider/volume-slider-element.ts
|
|
5143
5212
|
var VolumeSliderElement = class extends MediaElement {
|
|
@@ -5268,77 +5337,79 @@ function getTemplateHTML() {
|
|
|
5268
5337
|
<slot name="media"></slot>
|
|
5269
5338
|
|
|
5270
5339
|
<div class="media-controls">
|
|
5271
|
-
<
|
|
5272
|
-
<
|
|
5273
|
-
|
|
5274
|
-
|
|
5275
|
-
|
|
5276
|
-
|
|
5277
|
-
|
|
5278
|
-
<
|
|
5279
|
-
|
|
5280
|
-
|
|
5281
|
-
|
|
5282
|
-
|
|
5283
|
-
|
|
5284
|
-
<
|
|
5285
|
-
|
|
5286
|
-
|
|
5287
|
-
|
|
5288
|
-
|
|
5289
|
-
|
|
5290
|
-
|
|
5291
|
-
|
|
5292
|
-
|
|
5293
|
-
|
|
5294
|
-
<
|
|
5295
|
-
|
|
5296
|
-
|
|
5297
|
-
|
|
5298
|
-
|
|
5299
|
-
|
|
5300
|
-
|
|
5301
|
-
|
|
5302
|
-
|
|
5303
|
-
|
|
5304
|
-
|
|
5305
|
-
<
|
|
5306
|
-
<media-time
|
|
5307
|
-
|
|
5308
|
-
|
|
5309
|
-
|
|
5310
|
-
|
|
5311
|
-
|
|
5312
|
-
<media-slider
|
|
5313
|
-
<media-slider-fill class="media-slider__fill"></media-slider-fill>
|
|
5314
|
-
<media-slider-buffer class="media-slider__buffer"></media-slider-buffer>
|
|
5315
|
-
</media-slider-track>
|
|
5316
|
-
<media-slider-thumb class="media-slider__thumb"></media-slider-thumb>
|
|
5317
|
-
</media-time-slider>
|
|
5318
|
-
</span>
|
|
5319
|
-
|
|
5320
|
-
<span class="media-button-group">
|
|
5321
|
-
<media-playback-rate-button commandfor="playback-rate-tooltip" class="media-button media-button--icon media-button--playback-rate">
|
|
5322
|
-
</media-playback-rate-button>
|
|
5323
|
-
<media-tooltip id="playback-rate-tooltip" side="top" class="media-tooltip">
|
|
5324
|
-
Toggle playback rate
|
|
5325
|
-
</media-tooltip>
|
|
5326
|
-
|
|
5327
|
-
<media-mute-button commandfor="audio-volume-popover" class="media-button media-button--icon media-button--mute">
|
|
5328
|
-
${renderIcon("volume-off", { class: "media-icon media-icon--volume-off" })}
|
|
5329
|
-
${renderIcon("volume-low", { class: "media-icon media-icon--volume-low" })}
|
|
5330
|
-
${renderIcon("volume-high", { class: "media-icon media-icon--volume-high" })}
|
|
5331
|
-
</media-mute-button>
|
|
5332
|
-
|
|
5333
|
-
<media-popover id="audio-volume-popover" open-on-hover delay="200" close-delay="100" side="left" class="media-popover media-popover--volume">
|
|
5334
|
-
<media-volume-slider class="media-slider" orientation="horizontal" thumb-alignment="edge">
|
|
5340
|
+
<media-tooltip-group>
|
|
5341
|
+
<div class="media-button-group">
|
|
5342
|
+
<media-play-button commandfor="play-tooltip" class="media-button media-button--icon media-button--play">
|
|
5343
|
+
${renderIcon("restart", { class: "media-icon media-icon--restart" })}
|
|
5344
|
+
${renderIcon("play", { class: "media-icon media-icon--play" })}
|
|
5345
|
+
${renderIcon("pause", { class: "media-icon media-icon--pause" })}
|
|
5346
|
+
</media-play-button>
|
|
5347
|
+
<media-tooltip id="play-tooltip" side="top" class="media-tooltip">
|
|
5348
|
+
<span class="media-tooltip-label media-tooltip-label--replay">Replay</span>
|
|
5349
|
+
<span class="media-tooltip-label media-tooltip-label--play">Play</span>
|
|
5350
|
+
<span class="media-tooltip-label media-tooltip-label--pause">Pause</span>
|
|
5351
|
+
</media-tooltip>
|
|
5352
|
+
|
|
5353
|
+
<media-seek-button commandfor="seek-backward-tooltip" seconds="${-SEEK_TIME}" class="media-button media-button--icon media-button--seek">
|
|
5354
|
+
<span class="media-icon__container">
|
|
5355
|
+
${renderIcon("seek", { class: "media-icon media-icon--seek media-icon--flipped" })}
|
|
5356
|
+
<span class="media-icon__label">${SEEK_TIME}</span>
|
|
5357
|
+
</span>
|
|
5358
|
+
</media-seek-button>
|
|
5359
|
+
<media-tooltip id="seek-backward-tooltip" side="top" class="media-tooltip">
|
|
5360
|
+
Seek backward ${SEEK_TIME} seconds
|
|
5361
|
+
</media-tooltip>
|
|
5362
|
+
|
|
5363
|
+
<media-seek-button commandfor="seek-forward-tooltip" seconds="${SEEK_TIME}" class="media-button media-button--icon media-button--seek">
|
|
5364
|
+
<span class="media-icon__container">
|
|
5365
|
+
${renderIcon("seek", { class: "media-icon media-icon--seek" })}
|
|
5366
|
+
<span class="media-icon__label">${SEEK_TIME}</span>
|
|
5367
|
+
</span>
|
|
5368
|
+
</media-seek-button>
|
|
5369
|
+
<media-tooltip id="seek-forward-tooltip" side="top" class="media-tooltip">
|
|
5370
|
+
Seek forward ${SEEK_TIME} seconds
|
|
5371
|
+
</media-tooltip>
|
|
5372
|
+
</div>
|
|
5373
|
+
|
|
5374
|
+
<div class="media-time-controls">
|
|
5375
|
+
<media-time-group class="media-time">
|
|
5376
|
+
<media-time type="current" class="media-time__value media-time__value--current"></media-time>
|
|
5377
|
+
<media-time-separator class="media-time__separator"></media-time-separator>
|
|
5378
|
+
<media-time type="duration" class="media-time__value media-time__value--duration"></media-time>
|
|
5379
|
+
</media-time-group>
|
|
5380
|
+
|
|
5381
|
+
<media-time-slider class="media-slider">
|
|
5335
5382
|
<media-slider-track class="media-slider__track">
|
|
5336
5383
|
<media-slider-fill class="media-slider__fill"></media-slider-fill>
|
|
5384
|
+
<media-slider-buffer class="media-slider__buffer"></media-slider-buffer>
|
|
5337
5385
|
</media-slider-track>
|
|
5338
|
-
<media-slider-thumb class="media-slider__thumb
|
|
5339
|
-
</media-
|
|
5340
|
-
</
|
|
5341
|
-
|
|
5386
|
+
<media-slider-thumb class="media-slider__thumb"></media-slider-thumb>
|
|
5387
|
+
</media-time-slider>
|
|
5388
|
+
</div>
|
|
5389
|
+
|
|
5390
|
+
<div class="media-button-group">
|
|
5391
|
+
<media-playback-rate-button commandfor="playback-rate-tooltip" class="media-button media-button--icon media-button--playback-rate">
|
|
5392
|
+
</media-playback-rate-button>
|
|
5393
|
+
<media-tooltip id="playback-rate-tooltip" side="top" class="media-tooltip">
|
|
5394
|
+
Toggle playback rate
|
|
5395
|
+
</media-tooltip>
|
|
5396
|
+
|
|
5397
|
+
<media-mute-button commandfor="audio-volume-popover" class="media-button media-button--icon media-button--mute">
|
|
5398
|
+
${renderIcon("volume-off", { class: "media-icon media-icon--volume-off" })}
|
|
5399
|
+
${renderIcon("volume-low", { class: "media-icon media-icon--volume-low" })}
|
|
5400
|
+
${renderIcon("volume-high", { class: "media-icon media-icon--volume-high" })}
|
|
5401
|
+
</media-mute-button>
|
|
5402
|
+
|
|
5403
|
+
<media-popover id="audio-volume-popover" open-on-hover delay="200" close-delay="100" side="left" class="media-popover media-popover--volume">
|
|
5404
|
+
<media-volume-slider class="media-slider" orientation="horizontal" thumb-alignment="edge">
|
|
5405
|
+
<media-slider-track class="media-slider__track">
|
|
5406
|
+
<media-slider-fill class="media-slider__fill"></media-slider-fill>
|
|
5407
|
+
</media-slider-track>
|
|
5408
|
+
<media-slider-thumb class="media-slider__thumb media-slider__thumb--persistent"></media-slider-thumb>
|
|
5409
|
+
</media-volume-slider>
|
|
5410
|
+
</media-popover>
|
|
5411
|
+
</div>
|
|
5412
|
+
</media-tooltip-group>
|
|
5342
5413
|
</div>
|
|
5343
5414
|
</media-container>
|
|
5344
5415
|
`;
|