@videojs/html 10.0.0-beta.14 → 10.0.0-beta.15

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 (67) hide show
  1. package/cdn/audio-minimal-ui.dev.js +3 -3
  2. package/cdn/audio-minimal-ui.js +1 -1
  3. package/cdn/audio-minimal.dev.js +4 -4
  4. package/cdn/audio-minimal.js +1 -1
  5. package/cdn/audio-ui.dev.js +3 -3
  6. package/cdn/audio-ui.js +1 -1
  7. package/cdn/audio.dev.js +4 -4
  8. package/cdn/audio.js +1 -1
  9. package/cdn/background.dev.js +1 -1
  10. package/cdn/background.js +1 -1
  11. package/cdn/{create-player-DSGjDLpM.js → create-player-BqU8r8H4.js} +2 -2
  12. package/cdn/{create-player-DSGjDLpM.js.map → create-player-BqU8r8H4.js.map} +1 -1
  13. package/cdn/{create-player-Cz5Y4DmL.js → create-player-p9xCO0yC.js} +4 -4
  14. package/cdn/{create-player-Cz5Y4DmL.js.map → create-player-p9xCO0yC.js.map} +1 -1
  15. package/cdn/{hls-A02jAc_G.js → hls-26YJVjvD.js} +3 -3
  16. package/cdn/hls-26YJVjvD.js.map +1 -0
  17. package/cdn/{hls-DwNUcXDb.js → hls-BriQI4q1.js} +45 -4
  18. package/cdn/hls-BriQI4q1.js.map +1 -0
  19. package/cdn/media/dash-video.dev.js +1 -1
  20. package/cdn/media/dash-video.js +1 -1
  21. package/cdn/media/hls-video.dev.js +3 -3
  22. package/cdn/media/hls-video.js +1 -1
  23. package/cdn/media/mux-video.dev.js +4 -4
  24. package/cdn/media/mux-video.dev.js.map +1 -1
  25. package/cdn/media/mux-video.js +1 -1
  26. package/cdn/media/mux-video.js.map +1 -1
  27. package/cdn/media/native-hls-video.dev.js +2 -2
  28. package/cdn/media/native-hls-video.js +1 -1
  29. package/cdn/media/simple-hls-video.dev.js +1 -1
  30. package/cdn/media/simple-hls-video.js +1 -1
  31. package/cdn/{media-props-mixin-CmboksUe.js → media-props-mixin-Bd_N2HWy.js} +2 -2
  32. package/cdn/media-props-mixin-Bd_N2HWy.js.map +1 -0
  33. package/cdn/{media-props-mixin-CNJVvHAH.js → media-props-mixin-Dc5dpCV4.js} +9 -2
  34. package/cdn/media-props-mixin-Dc5dpCV4.js.map +1 -0
  35. package/cdn/{native-hls-Db2TurPW.js → native-hls-CjRvSXAJ.js} +2 -2
  36. package/cdn/{native-hls-Db2TurPW.js.map → native-hls-CjRvSXAJ.js.map} +1 -1
  37. package/cdn/{native-hls-CPgjPTAQ.js → native-hls-D2rfyyyW.js} +2 -2
  38. package/cdn/{native-hls-CPgjPTAQ.js.map → native-hls-D2rfyyyW.js.map} +1 -1
  39. package/cdn/{player-DlGhe0FD.js → player-Cz9-_j7J.js} +2 -2
  40. package/cdn/{player-DlGhe0FD.js.map → player-Cz9-_j7J.js.map} +1 -1
  41. package/cdn/{player-XArb4DyB.js → player-D0bhjT8X.js} +2 -2
  42. package/cdn/{player-XArb4DyB.js.map → player-D0bhjT8X.js.map} +1 -1
  43. package/cdn/{poster-Crn2YX3_.js → poster-2FPYTjyv.js} +2 -2
  44. package/cdn/{poster-Crn2YX3_.js.map → poster-2FPYTjyv.js.map} +1 -1
  45. package/cdn/{poster-BUuGv2Va.js → poster-gVT-J1-z.js} +3 -3
  46. package/cdn/{poster-BUuGv2Va.js.map → poster-gVT-J1-z.js.map} +1 -1
  47. package/cdn/{skin-element-Dk_f7DE8.js → skin-element-DB-cKAAx.js} +2 -2
  48. package/cdn/{skin-element-Dk_f7DE8.js.map → skin-element-DB-cKAAx.js.map} +1 -1
  49. package/cdn/{skin-element-D40glySA.js → skin-element-zakTHELS.js} +2 -2
  50. package/cdn/{skin-element-D40glySA.js.map → skin-element-zakTHELS.js.map} +1 -1
  51. package/cdn/video-minimal-ui.dev.js +3 -3
  52. package/cdn/video-minimal-ui.js +1 -1
  53. package/cdn/video-minimal.dev.js +4 -4
  54. package/cdn/video-minimal.js +1 -1
  55. package/cdn/video-ui.dev.js +3 -3
  56. package/cdn/video-ui.js +1 -1
  57. package/cdn/video.dev.js +4 -4
  58. package/cdn/video.js +1 -1
  59. package/cdn/{volume-slider-CxGbFVVX.js → volume-slider-Co5X4Z1t.js} +2 -2
  60. package/cdn/{volume-slider-CxGbFVVX.js.map → volume-slider-Co5X4Z1t.js.map} +1 -1
  61. package/cdn/{volume-slider-BSbnD5gg.js → volume-slider-D18sXnIA.js} +2 -2
  62. package/cdn/{volume-slider-BSbnD5gg.js.map → volume-slider-D18sXnIA.js.map} +1 -1
  63. package/package.json +8 -8
  64. package/cdn/hls-A02jAc_G.js.map +0 -1
  65. package/cdn/hls-DwNUcXDb.js.map +0 -1
  66. package/cdn/media-props-mixin-CNJVvHAH.js.map +0 -1
  67. package/cdn/media-props-mixin-CmboksUe.js.map +0 -1
@@ -1,7 +1,7 @@
1
1
  import { s as safeDefine } from "../context-BjrbhiSk.js";
2
2
  import { t as MediaAttachMixin } from "../media-attach-mixin-DfKkofgF.js";
3
- import { t as MediaPropsMixin } from "../media-props-mixin-CNJVvHAH.js";
4
- import { n as NativeHlsMediaDelegate, t as NativeHlsCustomMedia } from "../native-hls-CPgjPTAQ.js";
3
+ import { t as MediaPropsMixin } from "../media-props-mixin-Dc5dpCV4.js";
4
+ import { n as NativeHlsMediaDelegate, t as NativeHlsCustomMedia } from "../native-hls-D2rfyyyW.js";
5
5
 
6
6
  //#region src/media/native-hls-video/index.ts
7
7
  var NativeHlsVideo = class extends MediaPropsMixin(MediaAttachMixin(NativeHlsCustomMedia), NativeHlsMediaDelegate) {
@@ -1,2 +1,2 @@
1
- import{s as e}from"../context-CdkhXQEw.js";import{t}from"../media-attach-mixin-Dv2D43tb.js";import{t as n}from"../media-props-mixin-CmboksUe.js";import{n as r,t as i}from"../native-hls-Db2TurPW.js";var a=class extends n(t(i),r){constructor(){super(),this.attach(this.target)}disconnectedCallback(){super.disconnectedCallback?.(),this.hasAttribute(`keep-alive`)||this.destroy()}};e(class extends a{static{this.tagName=`native-hls-video`}});
1
+ import{s as e}from"../context-CdkhXQEw.js";import{t}from"../media-attach-mixin-Dv2D43tb.js";import{t as n}from"../media-props-mixin-Bd_N2HWy.js";import{n as r,t as i}from"../native-hls-CjRvSXAJ.js";var a=class extends n(t(i),r){constructor(){super(),this.attach(this.target)}disconnectedCallback(){super.disconnectedCallback?.(),this.hasAttribute(`keep-alive`)||this.destroy()}};e(class extends a{static{this.tagName=`native-hls-video`}});
2
2
  //# sourceMappingURL=native-hls-video.js.map
@@ -3,7 +3,7 @@ import { s as safeDefine } from "../context-BjrbhiSk.js";
3
3
  import { t as anyAbortSignal } from "../abort-CzqmAxxH.js";
4
4
  import { t as DelegateMixin } from "../delegate-BCw-LjP_.js";
5
5
  import { t as MediaAttachMixin } from "../media-attach-mixin-DfKkofgF.js";
6
- import { n as CustomVideoElement, t as MediaPropsMixin } from "../media-props-mixin-CNJVvHAH.js";
6
+ import { n as CustomVideoElement, t as MediaPropsMixin } from "../media-props-mixin-Dc5dpCV4.js";
7
7
 
8
8
  //#region ../spf/dist/dev/core/abr/ewma.js
9
9
  /**
@@ -1,4 +1,4 @@
1
- import{t as e}from"../listen-D7fcau5d.js";import{s as t}from"../context-CdkhXQEw.js";import{t as n}from"../abort-KaHR4JO1.js";import{t as r}from"../delegate-B626t_Va.js";import{t as i}from"../media-attach-mixin-Dv2D43tb.js";import{n as a,t as o}from"../media-props-mixin-CmboksUe.js";function s(e){return Math.exp(Math.log(.5)/e)}function c(e,t,n,r){let i=s(r)**n;return t*(1-i)+i*e}function l(e,t,n){return t===0?0:e/(1-s(n)**t)}const u={fastHalfLife:2,slowHalfLife:5,minTotalBytes:128e3,minBytes:16e3,minDuration:5};function d(e,t,n,r=u){let i=e.bytesSampled+n;if(n<r.minBytes||t<r.minDuration)return{...e,bytesSampled:i};let a=8e3*n/t,o=t/1e3;return{fastEstimate:c(e.fastEstimate,a,o,r.fastHalfLife),fastTotalWeight:e.fastTotalWeight+o,slowEstimate:c(e.slowEstimate,a,o,r.slowHalfLife),slowTotalWeight:e.slowTotalWeight+o,bytesSampled:i}}function f(e,t,n=u){if(e.bytesSampled<n.minTotalBytes)return t;let r=l(e.fastEstimate,e.fastTotalWeight,n.fastHalfLife),i=l(e.slowEstimate,e.slowTotalWeight,n.slowHalfLife);return Math.min(r,i)}const p={bufferDuration:30};function m(e,t,n=p){if(e.length===0)return 1/0;let r=t+n.bufferDuration,i=e.filter(e=>e.startTime>=r);return i.length===0?1/0:Math.min(...i.map(e=>e.startTime))}function h(e,t,n,r=p){if(e.length===0)return[];let i=n+r.bufferDuration,a=new Set(t.map(e=>e.startTime));return e.filter(e=>{let t=e.startTime+e.duration,r=e.startTime<i&&t>n,o=!a.has(e.startTime);return r&&o})}var ee=Object.defineProperty,te=(e,t,n)=>t in e?ee(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,g=(e,t,n)=>(te(e,typeof t==`symbol`?t:t+``,n),n),ne=(e,t,n)=>{if(!t.has(e))throw TypeError(`Cannot `+n)},_=(e,t)=>{if(Object(t)!==t)throw TypeError(`Cannot use the "in" operator on this value`);return e.has(t)},v=(e,t,n)=>{if(t.has(e))throw TypeError(`Cannot add the same private member more than once`);t instanceof WeakSet?t.add(e):t.set(e,n)},re=(e,t,n)=>(ne(e,t,`access private method`),n);
1
+ import{t as e}from"../listen-D7fcau5d.js";import{s as t}from"../context-CdkhXQEw.js";import{t as n}from"../abort-KaHR4JO1.js";import{t as r}from"../delegate-B626t_Va.js";import{t as i}from"../media-attach-mixin-Dv2D43tb.js";import{n as a,t as o}from"../media-props-mixin-Bd_N2HWy.js";function s(e){return Math.exp(Math.log(.5)/e)}function c(e,t,n,r){let i=s(r)**n;return t*(1-i)+i*e}function l(e,t,n){return t===0?0:e/(1-s(n)**t)}const u={fastHalfLife:2,slowHalfLife:5,minTotalBytes:128e3,minBytes:16e3,minDuration:5};function d(e,t,n,r=u){let i=e.bytesSampled+n;if(n<r.minBytes||t<r.minDuration)return{...e,bytesSampled:i};let a=8e3*n/t,o=t/1e3;return{fastEstimate:c(e.fastEstimate,a,o,r.fastHalfLife),fastTotalWeight:e.fastTotalWeight+o,slowEstimate:c(e.slowEstimate,a,o,r.slowHalfLife),slowTotalWeight:e.slowTotalWeight+o,bytesSampled:i}}function f(e,t,n=u){if(e.bytesSampled<n.minTotalBytes)return t;let r=l(e.fastEstimate,e.fastTotalWeight,n.fastHalfLife),i=l(e.slowEstimate,e.slowTotalWeight,n.slowHalfLife);return Math.min(r,i)}const p={bufferDuration:30};function m(e,t,n=p){if(e.length===0)return 1/0;let r=t+n.bufferDuration,i=e.filter(e=>e.startTime>=r);return i.length===0?1/0:Math.min(...i.map(e=>e.startTime))}function h(e,t,n,r=p){if(e.length===0)return[];let i=n+r.bufferDuration,a=new Set(t.map(e=>e.startTime));return e.filter(e=>{let t=e.startTime+e.duration,r=e.startTime<i&&t>n,o=!a.has(e.startTime);return r&&o})}var ee=Object.defineProperty,te=(e,t,n)=>t in e?ee(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,g=(e,t,n)=>(te(e,typeof t==`symbol`?t:t+``,n),n),ne=(e,t,n)=>{if(!t.has(e))throw TypeError(`Cannot `+n)},_=(e,t)=>{if(Object(t)!==t)throw TypeError(`Cannot use the "in" operator on this value`);return e.has(t)},v=(e,t,n)=>{if(t.has(e))throw TypeError(`Cannot add the same private member more than once`);t instanceof WeakSet?t.add(e):t.set(e,n)},re=(e,t,n)=>(ne(e,t,`access private method`),n);
2
2
  /**
3
3
  * @license
4
4
  * Copyright Google LLC All Rights Reserved.
@@ -43,5 +43,5 @@ const e=`abort.canplay.canplaythrough.durationchange.emptied.encrypted.ended.err
43
43
  <video${o(e)}></video>
44
44
  </slot>
45
45
  <slot></slot>
46
- `}function i(i,{tag:o,is:c}){let l=globalThis.document?.createElement?.(o,{is:c}),u=l?a(l):[];return class a extends i{static getTemplateHTML=o.endsWith(`audio`)?n:r;static shadowRootOptions={mode:`open`};static Events=e;static#e=!1;static#t;static get observedAttributes(){return a.#n(),[...l?.constructor?.observedAttributes??[],...t]}static#n(){if(!a.#e){a.#e=!0,a.#t=new Set(a.observedAttributes),a.#t.delete(`muted`);for(let e of u)if(!(e in a.prototype))if(typeof l[e]==`function`)a.prototype[e]=function(...t){return this.#s(),this.call(e,...t)};else{let t={get(){return this.#s(),this.get(e)}};e!==e.toUpperCase()&&(t.set=function(t){this.#s(),this.set(e,t)}),Object.defineProperty(a.prototype,e,t)}}}#r=!1;#i=null;#a=new Map;#o;get(e){let t=e.toLowerCase();if(a.#t.has(t)){let e=this.getAttribute(t);return e===null?!1:e===``?!0:e}return this.target?.[e]}set(e,t){let n=e.toLowerCase();if(a.#t.has(n)){t===!0||t===!1||t==null?this.toggleAttribute(n,!!t):this.setAttribute(n,t);return}this.target&&(this.target[e]=t)}call(e,...t){return(this.target?.[e])?.apply(this.target,t)}get target(){return this.#s(),this.#i??this.querySelector(`:scope > [slot=media]`)??this.querySelector(o)??this.shadowRoot?.querySelector(o)??null}set target(e){this.#i=e}get defaultMuted(){return this.#s(),this.get(`muted`)}set defaultMuted(e){this.#s(),this.set(`muted`,e)}#s(){this.#r||(this.#r=!0,this.init())}init(){if(!this.shadowRoot){this.attachShadow({mode:`open`});let e=s(this.attributes);c&&(e.is=c),o&&(e.part=o),this.shadowRoot.innerHTML=this.constructor.getTemplateHTML(e)}this.target.muted=this.hasAttribute(`muted`);for(let e of u)this.#f(e);this.#o=new MutationObserver(this.#d.bind(this)),this.shadowRoot.addEventListener(`slotchange`,()=>this.#u()),this.#u();for(let e of this.constructor.Events)this.shadowRoot.addEventListener(e,this.#c,!0)}#c=e=>{this.target&&this.target===e.target&&this.target.addEventListener(e.type,this.#l,{once:!0})};#l=e=>{this.dispatchEvent(new e.constructor(e.type,e))};#u(){let e=new Map(this.#a);((this.shadowRoot?.querySelector(`slot:not([name])`))?.assignedElements({flatten:!0}).filter(e=>[`track`,`source`].includes(e.localName))).forEach(t=>{e.delete(t);let n=this.#a.get(t);n||(n=t.cloneNode(),this.#a.set(t,n),this.#o?.observe(t,{attributes:!0})),this.target?.append(n)}),e.forEach((e,t)=>{e.remove(),this.#a.delete(t)})}#d(e){for(let t of e)if(t.type===`attributes`){let{target:e,attributeName:n}=t,r=this.#a.get(e);r&&n&&r.setAttribute(n,e.getAttribute(n)??``)}}#f(e){if(Object.hasOwn(this,e)){let t=this[e];delete this[e],this[e]=t}}attributeChangedCallback(e,t,n){this.#s(),this.#p(e,t,n)}#p(e,t,n){[`id`,`class`].includes(e)||!a.observedAttributes.includes(e)&&this.constructor.observedAttributes.includes(e)||(n===null?this.target?.removeAttribute(e):this.target?.getAttribute(e)!==n&&this.target?.setAttribute(e,n))}connectedCallback(){this.#s()}}}function a(e){let t=[];for(let n=Object.getPrototypeOf(e);n&&n!==HTMLElement.prototype;n=Object.getPrototypeOf(n)){let e=Object.getOwnPropertyNames(n);t.push(...e)}return t}function o(e){let n=``;for(let r in e){if(!t.includes(r))continue;let i=e[r];i===``?n+=` ${r}`:n+=` ${r}="${i}"`}return n}function s(e){let t={};for(let n of e)t[n.name]=n.value;return t}const c=i(globalThis.HTMLElement??class{},{tag:`video`});i(globalThis.HTMLElement??class{},{tag:`audio`});function l(e){return e.replace(/[A-Z]/g,e=>`-${e.toLowerCase()}`)}function u(e){let t=new Map;for(let n=e.prototype;n&&n!==Object.prototype;n=Object.getPrototypeOf(n))for(let e of Object.getOwnPropertyNames(n))e.startsWith(`_`)||Object.getOwnPropertyDescriptor(n,e)?.set&&t.set(l(e),e);return t}function d(e,t){let n=u(t);class r extends e{static get observedAttributes(){return[...new Set([...super.observedAttributes??[],...n.keys()])]}static getTemplateHTML(e){let t={...e};for(let e of n.keys())delete t[e];return super.getTemplateHTML(t)}attributeChangedCallback(e,t,r){let i=n.get(e);if(i){t!==r&&(this[i]=typeof this[i]==`boolean`?r!==null:r??``);return}super.attributeChangedCallback?.(e,t,r)}}return r}export{c as n,d as t};
47
- //# sourceMappingURL=media-props-mixin-CmboksUe.js.map
46
+ `}function i(i,{tag:o,is:c}){let l=globalThis.document?.createElement?.(o,{is:c}),u=l?a(l):[];return class a extends i{static getTemplateHTML=o.endsWith(`audio`)?n:r;static shadowRootOptions={mode:`open`};static Events=e;static#e=!1;static#t;static get observedAttributes(){return a.#n(),[...l?.constructor?.observedAttributes??[],...t]}static#n(){if(!a.#e){a.#e=!0,a.#t=new Set(a.observedAttributes),a.#t.delete(`muted`);for(let e of u)if(!(e in a.prototype))if(typeof l[e]==`function`)a.prototype[e]=function(...t){return this.#s(),this.call(e,...t)};else{let t={get(){return this.#s(),this.get(e)}};e!==e.toUpperCase()&&(t.set=function(t){this.#s(),this.set(e,t)}),Object.defineProperty(a.prototype,e,t)}}}#r=!1;#i=null;#a=new Map;#o;get(e){let t=e.toLowerCase();if(a.#t.has(t)){let e=this.getAttribute(t);return e===null?!1:e===``?!0:e}return this.target?.[e]}set(e,t){let n=e.toLowerCase();if(a.#t.has(n)){t===!0||t===!1||t==null?this.toggleAttribute(n,!!t):this.setAttribute(n,t);return}this.target&&(this.target[e]=t)}call(e,...t){return(this.target?.[e])?.apply(this.target,t)}get target(){return this.#s(),this.#i??this.querySelector(`:scope > [slot=media]`)??this.querySelector(o)??this.shadowRoot?.querySelector(o)??null}set target(e){this.#i=e}get defaultMuted(){return this.#s(),this.get(`muted`)}set defaultMuted(e){this.#s(),this.set(`muted`,e)}#s(){this.#r||(this.#r=!0,this.init())}init(){if(!this.shadowRoot){this.attachShadow({mode:`open`});let e=s(this.attributes);c&&(e.is=c),o&&(e.part=o),this.shadowRoot.innerHTML=this.constructor.getTemplateHTML(e)}this.target.muted=this.hasAttribute(`muted`);for(let e of u)this.#p(e);this.#o=new MutationObserver(this.#d.bind(this)),this.shadowRoot.addEventListener(`slotchange`,()=>this.#u()),this.#u();for(let e of this.constructor.Events)this.shadowRoot.addEventListener(e,this.#c,!0)}#c=e=>{this.target&&this.target===e.target&&this.target.addEventListener(e.type,this.#l,{once:!0})};#l=e=>{this.dispatchEvent(new e.constructor(e.type,e))};#u(){let e=new Map(this.#a);((this.shadowRoot?.querySelector(`slot:not([name])`))?.assignedElements({flatten:!0}).filter(e=>[`track`,`source`].includes(e.localName))).forEach(t=>{e.delete(t);let n=this.#a.get(t);n||(n=t.cloneNode(),this.#a.set(t,n),this.#o?.observe(t,{attributes:!0})),this.target?.append(n),this.#f(n)}),e.forEach((e,t)=>{e.remove(),this.#a.delete(t)})}#d(e){for(let t of e)if(t.type===`attributes`){let{target:e,attributeName:n}=t,r=this.#a.get(e);r&&n&&(r.setAttribute(n,e.getAttribute(n)??``),this.#f(r))}}#f(e){e&&e.localName===`track`&&e.default&&(e.kind===`chapters`||e.kind===`metadata`)&&e.track.mode===`disabled`&&(e.track.mode=`hidden`)}#p(e){if(Object.hasOwn(this,e)){let t=this[e];delete this[e],this[e]=t}}attributeChangedCallback(e,t,n){this.#s(),this.#m(e,t,n)}#m(e,t,n){[`id`,`class`].includes(e)||!a.observedAttributes.includes(e)&&this.constructor.observedAttributes.includes(e)||(n===null?this.target?.removeAttribute(e):this.target?.getAttribute(e)!==n&&this.target?.setAttribute(e,n))}connectedCallback(){this.#s()}}}function a(e){let t=[];for(let n=Object.getPrototypeOf(e);n&&n!==HTMLElement.prototype;n=Object.getPrototypeOf(n)){let e=Object.getOwnPropertyNames(n);t.push(...e)}return t}function o(e){let n=``;for(let r in e){if(!t.includes(r))continue;let i=e[r];i===``?n+=` ${r}`:n+=` ${r}="${i}"`}return n}function s(e){let t={};for(let n of e)t[n.name]=n.value;return t}const c=i(globalThis.HTMLElement??class{},{tag:`video`});i(globalThis.HTMLElement??class{},{tag:`audio`});function l(e){return e.replace(/[A-Z]/g,e=>`-${e.toLowerCase()}`)}function u(e){let t=new Map;for(let n=e.prototype;n&&n!==Object.prototype;n=Object.getPrototypeOf(n))for(let e of Object.getOwnPropertyNames(n))e.startsWith(`_`)||Object.getOwnPropertyDescriptor(n,e)?.set&&t.set(l(e),e);return t}function d(e,t){let n=u(t);class r extends e{static get observedAttributes(){return[...new Set([...super.observedAttributes??[],...n.keys()])]}static getTemplateHTML(e){let t={...e};for(let e of n.keys())delete t[e];return super.getTemplateHTML(t)}attributeChangedCallback(e,t,r){let i=n.get(e);if(i){t!==r&&(this[i]=typeof this[i]==`boolean`?r!==null:r??``);return}super.attributeChangedCallback?.(e,t,r)}}return r}export{c as n,d as t};
47
+ //# sourceMappingURL=media-props-mixin-Bd_N2HWy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"media-props-mixin-Bd_N2HWy.js","names":["#isDefined","#propsToAttrs","#define","#init","#target","#isInit","#upgradeProperty","#childObserver","#syncMediaChildAttribute","#syncMediaChildren","#deferForwardEvent","#forwardEvent","#childMap","#enableDefaultTrack","#forwardAttribute"],"sources":["../../core/dist/default/dom/media/custom-media-element/index.js","../src/utils/media-props-mixin.ts"],"sourcesContent":["//#region src/dom/media/custom-media-element/index.ts\n/**\n* Custom Media Element\n* Based on https://github.com/muxinc/custom-video-element - Mux - MIT License\n*\n* The goal is to create an element that works just like the video element\n* but can be extended/sub-classed, because native elements cannot be\n* extended today across browsers.\n*/\nconst Events = [\n\t\"abort\",\n\t\"canplay\",\n\t\"canplaythrough\",\n\t\"durationchange\",\n\t\"emptied\",\n\t\"encrypted\",\n\t\"ended\",\n\t\"error\",\n\t\"loadeddata\",\n\t\"loadedmetadata\",\n\t\"loadstart\",\n\t\"pause\",\n\t\"play\",\n\t\"playing\",\n\t\"progress\",\n\t\"ratechange\",\n\t\"seeked\",\n\t\"seeking\",\n\t\"stalled\",\n\t\"suspend\",\n\t\"timeupdate\",\n\t\"volumechange\",\n\t\"waiting\",\n\t\"waitingforkey\",\n\t\"resize\",\n\t\"enterpictureinpicture\",\n\t\"leavepictureinpicture\",\n\t\"webkitbeginfullscreen\",\n\t\"webkitendfullscreen\",\n\t\"webkitpresentationmodechanged\"\n];\nconst Attributes = [\n\t\"autopictureinpicture\",\n\t\"disablepictureinpicture\",\n\t\"disableremoteplayback\",\n\t\"autoplay\",\n\t\"controls\",\n\t\"controlslist\",\n\t\"crossorigin\",\n\t\"loop\",\n\t\"muted\",\n\t\"playsinline\",\n\t\"poster\",\n\t\"preload\",\n\t\"src\"\n];\n/**\n* Helper function to generate the HTML template for audio elements.\n*/\nfunction getAudioTemplateHTML(attrs) {\n\treturn `\n <style>\n :host {\n display: inline-flex;\n line-height: 0;\n flex-direction: column;\n justify-content: end;\n }\n\n audio {\n width: 100%;\n }\n </style>\n <slot name=\"media\">\n <audio${serializeAttributes(attrs)}></audio>\n </slot>\n <slot></slot>\n `;\n}\n/**\n* Helper function to generate the HTML template for video elements.\n*/\nfunction getVideoTemplateHTML(attrs) {\n\treturn `\n <style>\n :host {\n display: contents;\n }\n\n video {\n display: block;\n width: 100%;\n height: 100%;\n border-radius: var(--media-video-border-radius);\n object-fit: var(--media-object-fit, contain);\n object-position: var(--media-object-position, center);\n }\n\n video::-webkit-media-text-track-container {\n transition: translate var(--media-caption-track-duration, 0) ease-out;\n transition-delay: var(--media-caption-track-delay, 0);\n translate: 0 var(--media-caption-track-y, 0);\n scale: 0.98;\n z-index: 1;\n font-family: inherit;\n }\n </style>\n <slot name=\"media\">\n <video${serializeAttributes(attrs)}></video>\n </slot>\n <slot></slot>\n `;\n}\nfunction CustomMediaMixin(superclass, { tag, is }) {\n\tconst nativeElTest = globalThis.document?.createElement?.(tag, { is });\n\tconst nativeElProps = nativeElTest ? getNativeElProps(nativeElTest) : [];\n\treturn class CustomMedia extends superclass {\n\t\tstatic getTemplateHTML = tag.endsWith(\"audio\") ? getAudioTemplateHTML : getVideoTemplateHTML;\n\t\tstatic shadowRootOptions = { mode: \"open\" };\n\t\tstatic Events = Events;\n\t\tstatic #isDefined = false;\n\t\tstatic #propsToAttrs;\n\t\tstatic get observedAttributes() {\n\t\t\tCustomMedia.#define();\n\t\t\treturn [...nativeElTest?.constructor?.observedAttributes ?? [], ...Attributes];\n\t\t}\n\t\tstatic #define() {\n\t\t\tif (CustomMedia.#isDefined) return;\n\t\t\tCustomMedia.#isDefined = true;\n\t\t\tCustomMedia.#propsToAttrs = new Set(CustomMedia.observedAttributes);\n\t\t\tCustomMedia.#propsToAttrs.delete(\"muted\");\n\t\t\tfor (const prop of nativeElProps) {\n\t\t\t\tif (prop in CustomMedia.prototype) continue;\n\t\t\t\tif (typeof nativeElTest[prop] === \"function\") CustomMedia.prototype[prop] = function(...args) {\n\t\t\t\t\tthis.#init();\n\t\t\t\t\treturn this.call(prop, ...args);\n\t\t\t\t};\n\t\t\t\telse {\n\t\t\t\t\tconst config = { get() {\n\t\t\t\t\t\tthis.#init();\n\t\t\t\t\t\treturn this.get(prop);\n\t\t\t\t\t} };\n\t\t\t\t\tif (prop !== prop.toUpperCase()) config.set = function(val) {\n\t\t\t\t\t\tthis.#init();\n\t\t\t\t\t\tthis.set(prop, val);\n\t\t\t\t\t};\n\t\t\t\t\tObject.defineProperty(CustomMedia.prototype, prop, config);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t#isInit = false;\n\t\t#target = null;\n\t\t#childMap = /* @__PURE__ */ new Map();\n\t\t#childObserver;\n\t\tget(prop) {\n\t\t\tconst attr = prop.toLowerCase();\n\t\t\tif (CustomMedia.#propsToAttrs.has(attr)) {\n\t\t\t\tconst val = this.getAttribute(attr);\n\t\t\t\treturn val === null ? false : val === \"\" ? true : val;\n\t\t\t}\n\t\t\treturn this.target?.[prop];\n\t\t}\n\t\tset(prop, val) {\n\t\t\tconst attr = prop.toLowerCase();\n\t\t\tif (CustomMedia.#propsToAttrs.has(attr)) {\n\t\t\t\tif (val === true || val === false || val == null) this.toggleAttribute(attr, Boolean(val));\n\t\t\t\telse this.setAttribute(attr, val);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (this.target) this.target[prop] = val;\n\t\t}\n\t\tcall(prop, ...args) {\n\t\t\treturn (this.target?.[prop])?.apply(this.target, args);\n\t\t}\n\t\tget target() {\n\t\t\tthis.#init();\n\t\t\treturn this.#target ?? this.querySelector(\":scope > [slot=media]\") ?? this.querySelector(tag) ?? this.shadowRoot?.querySelector(tag) ?? null;\n\t\t}\n\t\tset target(val) {\n\t\t\tthis.#target = val;\n\t\t}\n\t\tget defaultMuted() {\n\t\t\tthis.#init();\n\t\t\treturn this.get(\"muted\");\n\t\t}\n\t\tset defaultMuted(val) {\n\t\t\tthis.#init();\n\t\t\tthis.set(\"muted\", val);\n\t\t}\n\t\t#init() {\n\t\t\tif (this.#isInit) return;\n\t\t\tthis.#isInit = true;\n\t\t\tthis.init();\n\t\t}\n\t\tinit() {\n\t\t\tif (!this.shadowRoot) {\n\t\t\t\tthis.attachShadow({ mode: \"open\" });\n\t\t\t\tconst attrs = namedNodeMapToObject(this.attributes);\n\t\t\t\tif (is) attrs.is = is;\n\t\t\t\tif (tag) attrs.part = tag;\n\t\t\t\tthis.shadowRoot.innerHTML = this.constructor.getTemplateHTML(attrs);\n\t\t\t}\n\t\t\tthis.target.muted = this.hasAttribute(\"muted\");\n\t\t\tfor (const prop of nativeElProps) this.#upgradeProperty(prop);\n\t\t\tthis.#childObserver = new MutationObserver(this.#syncMediaChildAttribute.bind(this));\n\t\t\tthis.shadowRoot.addEventListener(\"slotchange\", () => this.#syncMediaChildren());\n\t\t\tthis.#syncMediaChildren();\n\t\t\tfor (const type of this.constructor.Events) this.shadowRoot.addEventListener(type, this.#deferForwardEvent, true);\n\t\t}\n\t\t#deferForwardEvent = (event) => {\n\t\t\tif (this.target && this.target === event.target) this.target.addEventListener(event.type, this.#forwardEvent, { once: true });\n\t\t};\n\t\t#forwardEvent = (event) => {\n\t\t\tthis.dispatchEvent(new event.constructor(event.type, event));\n\t\t};\n\t\t#syncMediaChildren() {\n\t\t\tconst removeNativeChildren = new Map(this.#childMap);\n\t\t\t((this.shadowRoot?.querySelector(\"slot:not([name])\"))?.assignedElements({ flatten: true }).filter((el) => [\"track\", \"source\"].includes(el.localName))).forEach((el) => {\n\t\t\t\tremoveNativeChildren.delete(el);\n\t\t\t\tlet clone = this.#childMap.get(el);\n\t\t\t\tif (!clone) {\n\t\t\t\t\tclone = el.cloneNode();\n\t\t\t\t\tthis.#childMap.set(el, clone);\n\t\t\t\t\tthis.#childObserver?.observe(el, { attributes: true });\n\t\t\t\t}\n\t\t\t\tthis.target?.append(clone);\n\t\t\t\tthis.#enableDefaultTrack(clone);\n\t\t\t});\n\t\t\tremoveNativeChildren.forEach((clone, el) => {\n\t\t\t\tclone.remove();\n\t\t\t\tthis.#childMap.delete(el);\n\t\t\t});\n\t\t}\n\t\t#syncMediaChildAttribute(mutations) {\n\t\t\tfor (const mutation of mutations) if (mutation.type === \"attributes\") {\n\t\t\t\tconst { target, attributeName } = mutation;\n\t\t\t\tconst clone = this.#childMap.get(target);\n\t\t\t\tif (clone && attributeName) {\n\t\t\t\t\tclone.setAttribute(attributeName, target.getAttribute(attributeName) ?? \"\");\n\t\t\t\t\tthis.#enableDefaultTrack(clone);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t#enableDefaultTrack(trackEl) {\n\t\t\tif (trackEl && trackEl.localName === \"track\" && trackEl.default && (trackEl.kind === \"chapters\" || trackEl.kind === \"metadata\") && trackEl.track.mode === \"disabled\") trackEl.track.mode = \"hidden\";\n\t\t}\n\t\t#upgradeProperty(prop) {\n\t\t\tif (Object.hasOwn(this, prop)) {\n\t\t\t\tconst value = this[prop];\n\t\t\t\tdelete this[prop];\n\t\t\t\tthis[prop] = value;\n\t\t\t}\n\t\t}\n\t\tattributeChangedCallback(attrName, oldValue, newValue) {\n\t\t\tthis.#init();\n\t\t\tthis.#forwardAttribute(attrName, oldValue, newValue);\n\t\t}\n\t\t#forwardAttribute(attrName, _oldValue, newValue) {\n\t\t\tif ([\"id\", \"class\"].includes(attrName)) return;\n\t\t\tif (!CustomMedia.observedAttributes.includes(attrName) && this.constructor.observedAttributes.includes(attrName)) return;\n\t\t\tif (newValue === null) this.target?.removeAttribute(attrName);\n\t\t\telse if (this.target?.getAttribute(attrName) !== newValue) this.target?.setAttribute(attrName, newValue);\n\t\t}\n\t\tconnectedCallback() {\n\t\t\tthis.#init();\n\t\t}\n\t};\n}\n/**\n* Helper function to get all properties from a native media element's prototype.\n*/\nfunction getNativeElProps(nativeElTest) {\n\tconst nativeElProps = [];\n\tfor (let proto = Object.getPrototypeOf(nativeElTest); proto && proto !== HTMLElement.prototype; proto = Object.getPrototypeOf(proto)) {\n\t\tconst props = Object.getOwnPropertyNames(proto);\n\t\tnativeElProps.push(...props);\n\t}\n\treturn nativeElProps;\n}\n/**\n* Helper function to serialize attributes into a string.\n*/\nfunction serializeAttributes(attrs) {\n\tlet html = \"\";\n\tfor (const key in attrs) {\n\t\tif (!Attributes.includes(key)) continue;\n\t\tconst value = attrs[key];\n\t\tif (value === \"\") html += ` ${key}`;\n\t\telse html += ` ${key}=\"${value}\"`;\n\t}\n\treturn html;\n}\n/**\n* Helper function to convert NamedNodeMap to a plain object.\n*/\nfunction namedNodeMapToObject(namedNodeMap) {\n\tconst obj = {};\n\tfor (const attr of namedNodeMap) obj[attr.name] = attr.value;\n\treturn obj;\n}\nconst CustomVideoElement = CustomMediaMixin(globalThis.HTMLElement ?? class {}, { tag: \"video\" });\nconst CustomAudioElement = CustomMediaMixin(globalThis.HTMLElement ?? class {}, { tag: \"audio\" });\n//#endregion\nexport { Attributes, CustomAudioElement, CustomMediaMixin, CustomVideoElement, Events };\n\n//# sourceMappingURL=index.js.map","import type { AnyConstructor } from '@videojs/utils/types';\n\ntype AnyClass = abstract new (...args: any[]) => any;\n\nfunction camelToKebab(str: string): string {\n return str.replace(/[A-Z]/g, (m) => `-${m.toLowerCase()}`);\n}\n\nfunction buildAttrPropMap(DelegateClass: AnyClass): Map<string, string> {\n const map = new Map<string, string>();\n for (let proto = DelegateClass.prototype; proto && proto !== Object.prototype; proto = Object.getPrototypeOf(proto)) {\n for (const key of Object.getOwnPropertyNames(proto)) {\n if (key.startsWith('_')) continue;\n const desc = Object.getOwnPropertyDescriptor(proto, key);\n if (desc?.set) map.set(camelToKebab(key), key);\n }\n }\n return map;\n}\n\n/**\n * Mixin that intercepts `getTemplateHTML` and `attributeChangedCallback` to\n * handle delegate-owned properties. Delegate props are stripped from template\n * HTML attrs and routed through the property setter in `attributeChangedCallback`\n * instead of being forwarded to the inner native element.\n */\nexport function MediaPropsMixin<Base extends AnyConstructor<HTMLElement>>(\n BaseClass: Base,\n DelegateClass: AnyClass\n): Base {\n const attrToProp = buildAttrPropMap(DelegateClass);\n\n class MediaPropsElement extends (BaseClass as any) {\n static get observedAttributes(): string[] {\n // biome-ignore lint/complexity/noThisInStatic: intentional use of super\n return [...new Set([...(super.observedAttributes ?? []), ...attrToProp.keys()])];\n }\n\n static getTemplateHTML(attrs: Record<string, string>): string {\n const filtered = { ...attrs };\n for (const attr of attrToProp.keys()) {\n delete filtered[attr];\n }\n // biome-ignore lint/complexity/noThisInStatic: intentional use of super\n return super.getTemplateHTML(filtered);\n }\n\n attributeChangedCallback(attrName: string, oldValue: string | null, newValue: string | null): void {\n const prop = attrToProp.get(attrName);\n if (prop) {\n if (oldValue !== newValue) {\n (this as any)[prop] = typeof (this as any)[prop] === 'boolean' ? newValue !== null : (newValue ?? '');\n }\n return;\n }\n\n super.attributeChangedCallback?.(attrName, oldValue, newValue);\n }\n }\n\n return MediaPropsElement as unknown as Base;\n}\n"],"mappings":"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"}
@@ -224,6 +224,7 @@ function CustomMediaMixin(superclass, { tag, is }) {
224
224
  this.#childObserver?.observe(el, { attributes: true });
225
225
  }
226
226
  this.target?.append(clone);
227
+ this.#enableDefaultTrack(clone);
227
228
  });
228
229
  removeNativeChildren.forEach((clone, el) => {
229
230
  clone.remove();
@@ -234,9 +235,15 @@ function CustomMediaMixin(superclass, { tag, is }) {
234
235
  for (const mutation of mutations) if (mutation.type === "attributes") {
235
236
  const { target, attributeName } = mutation;
236
237
  const clone = this.#childMap.get(target);
237
- if (clone && attributeName) clone.setAttribute(attributeName, target.getAttribute(attributeName) ?? "");
238
+ if (clone && attributeName) {
239
+ clone.setAttribute(attributeName, target.getAttribute(attributeName) ?? "");
240
+ this.#enableDefaultTrack(clone);
241
+ }
238
242
  }
239
243
  }
244
+ #enableDefaultTrack(trackEl) {
245
+ if (trackEl && trackEl.localName === "track" && trackEl.default && (trackEl.kind === "chapters" || trackEl.kind === "metadata") && trackEl.track.mode === "disabled") trackEl.track.mode = "hidden";
246
+ }
240
247
  #upgradeProperty(prop) {
241
248
  if (Object.hasOwn(this, prop)) {
242
249
  const value = this[prop];
@@ -338,4 +345,4 @@ function MediaPropsMixin(BaseClass, DelegateClass) {
338
345
 
339
346
  //#endregion
340
347
  export { CustomVideoElement as n, MediaPropsMixin as t };
341
- //# sourceMappingURL=media-props-mixin-CNJVvHAH.js.map
348
+ //# sourceMappingURL=media-props-mixin-Dc5dpCV4.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"media-props-mixin-Dc5dpCV4.js","names":["#isDefined","#propsToAttrs","#define","#init","#target","#isInit","#upgradeProperty","#childObserver","#syncMediaChildAttribute","#syncMediaChildren","#deferForwardEvent","#forwardEvent","#childMap","#enableDefaultTrack","#forwardAttribute"],"sources":["../../core/dist/dev/dom/media/custom-media-element/index.js","../src/utils/media-props-mixin.ts"],"sourcesContent":["//#region src/dom/media/custom-media-element/index.ts\n/**\n* Custom Media Element\n* Based on https://github.com/muxinc/custom-video-element - Mux - MIT License\n*\n* The goal is to create an element that works just like the video element\n* but can be extended/sub-classed, because native elements cannot be\n* extended today across browsers.\n*/\nconst Events = [\n\t\"abort\",\n\t\"canplay\",\n\t\"canplaythrough\",\n\t\"durationchange\",\n\t\"emptied\",\n\t\"encrypted\",\n\t\"ended\",\n\t\"error\",\n\t\"loadeddata\",\n\t\"loadedmetadata\",\n\t\"loadstart\",\n\t\"pause\",\n\t\"play\",\n\t\"playing\",\n\t\"progress\",\n\t\"ratechange\",\n\t\"seeked\",\n\t\"seeking\",\n\t\"stalled\",\n\t\"suspend\",\n\t\"timeupdate\",\n\t\"volumechange\",\n\t\"waiting\",\n\t\"waitingforkey\",\n\t\"resize\",\n\t\"enterpictureinpicture\",\n\t\"leavepictureinpicture\",\n\t\"webkitbeginfullscreen\",\n\t\"webkitendfullscreen\",\n\t\"webkitpresentationmodechanged\"\n];\nconst Attributes = [\n\t\"autopictureinpicture\",\n\t\"disablepictureinpicture\",\n\t\"disableremoteplayback\",\n\t\"autoplay\",\n\t\"controls\",\n\t\"controlslist\",\n\t\"crossorigin\",\n\t\"loop\",\n\t\"muted\",\n\t\"playsinline\",\n\t\"poster\",\n\t\"preload\",\n\t\"src\"\n];\n/**\n* Helper function to generate the HTML template for audio elements.\n*/\nfunction getAudioTemplateHTML(attrs) {\n\treturn `\n <style>\n :host {\n display: inline-flex;\n line-height: 0;\n flex-direction: column;\n justify-content: end;\n }\n\n audio {\n width: 100%;\n }\n </style>\n <slot name=\"media\">\n <audio${serializeAttributes(attrs)}></audio>\n </slot>\n <slot></slot>\n `;\n}\n/**\n* Helper function to generate the HTML template for video elements.\n*/\nfunction getVideoTemplateHTML(attrs) {\n\treturn `\n <style>\n :host {\n display: contents;\n }\n\n video {\n display: block;\n width: 100%;\n height: 100%;\n border-radius: var(--media-video-border-radius);\n object-fit: var(--media-object-fit, contain);\n object-position: var(--media-object-position, center);\n }\n\n video::-webkit-media-text-track-container {\n transition: translate var(--media-caption-track-duration, 0) ease-out;\n transition-delay: var(--media-caption-track-delay, 0);\n translate: 0 var(--media-caption-track-y, 0);\n scale: 0.98;\n z-index: 1;\n font-family: inherit;\n }\n </style>\n <slot name=\"media\">\n <video${serializeAttributes(attrs)}></video>\n </slot>\n <slot></slot>\n `;\n}\nfunction CustomMediaMixin(superclass, { tag, is }) {\n\tconst nativeElTest = globalThis.document?.createElement?.(tag, { is });\n\tconst nativeElProps = nativeElTest ? getNativeElProps(nativeElTest) : [];\n\treturn class CustomMedia extends superclass {\n\t\tstatic getTemplateHTML = tag.endsWith(\"audio\") ? getAudioTemplateHTML : getVideoTemplateHTML;\n\t\tstatic shadowRootOptions = { mode: \"open\" };\n\t\tstatic Events = Events;\n\t\tstatic #isDefined = false;\n\t\tstatic #propsToAttrs;\n\t\tstatic get observedAttributes() {\n\t\t\tCustomMedia.#define();\n\t\t\treturn [...nativeElTest?.constructor?.observedAttributes ?? [], ...Attributes];\n\t\t}\n\t\tstatic #define() {\n\t\t\tif (CustomMedia.#isDefined) return;\n\t\t\tCustomMedia.#isDefined = true;\n\t\t\tCustomMedia.#propsToAttrs = new Set(CustomMedia.observedAttributes);\n\t\t\tCustomMedia.#propsToAttrs.delete(\"muted\");\n\t\t\tfor (const prop of nativeElProps) {\n\t\t\t\tif (prop in CustomMedia.prototype) continue;\n\t\t\t\tif (typeof nativeElTest[prop] === \"function\") CustomMedia.prototype[prop] = function(...args) {\n\t\t\t\t\tthis.#init();\n\t\t\t\t\treturn this.call(prop, ...args);\n\t\t\t\t};\n\t\t\t\telse {\n\t\t\t\t\tconst config = { get() {\n\t\t\t\t\t\tthis.#init();\n\t\t\t\t\t\treturn this.get(prop);\n\t\t\t\t\t} };\n\t\t\t\t\tif (prop !== prop.toUpperCase()) config.set = function(val) {\n\t\t\t\t\t\tthis.#init();\n\t\t\t\t\t\tthis.set(prop, val);\n\t\t\t\t\t};\n\t\t\t\t\tObject.defineProperty(CustomMedia.prototype, prop, config);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t#isInit = false;\n\t\t#target = null;\n\t\t#childMap = /* @__PURE__ */ new Map();\n\t\t#childObserver;\n\t\tget(prop) {\n\t\t\tconst attr = prop.toLowerCase();\n\t\t\tif (CustomMedia.#propsToAttrs.has(attr)) {\n\t\t\t\tconst val = this.getAttribute(attr);\n\t\t\t\treturn val === null ? false : val === \"\" ? true : val;\n\t\t\t}\n\t\t\treturn this.target?.[prop];\n\t\t}\n\t\tset(prop, val) {\n\t\t\tconst attr = prop.toLowerCase();\n\t\t\tif (CustomMedia.#propsToAttrs.has(attr)) {\n\t\t\t\tif (val === true || val === false || val == null) this.toggleAttribute(attr, Boolean(val));\n\t\t\t\telse this.setAttribute(attr, val);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (this.target) this.target[prop] = val;\n\t\t}\n\t\tcall(prop, ...args) {\n\t\t\treturn (this.target?.[prop])?.apply(this.target, args);\n\t\t}\n\t\tget target() {\n\t\t\tthis.#init();\n\t\t\treturn this.#target ?? this.querySelector(\":scope > [slot=media]\") ?? this.querySelector(tag) ?? this.shadowRoot?.querySelector(tag) ?? null;\n\t\t}\n\t\tset target(val) {\n\t\t\tthis.#target = val;\n\t\t}\n\t\tget defaultMuted() {\n\t\t\tthis.#init();\n\t\t\treturn this.get(\"muted\");\n\t\t}\n\t\tset defaultMuted(val) {\n\t\t\tthis.#init();\n\t\t\tthis.set(\"muted\", val);\n\t\t}\n\t\t#init() {\n\t\t\tif (this.#isInit) return;\n\t\t\tthis.#isInit = true;\n\t\t\tthis.init();\n\t\t}\n\t\tinit() {\n\t\t\tif (!this.shadowRoot) {\n\t\t\t\tthis.attachShadow({ mode: \"open\" });\n\t\t\t\tconst attrs = namedNodeMapToObject(this.attributes);\n\t\t\t\tif (is) attrs.is = is;\n\t\t\t\tif (tag) attrs.part = tag;\n\t\t\t\tthis.shadowRoot.innerHTML = this.constructor.getTemplateHTML(attrs);\n\t\t\t}\n\t\t\tthis.target.muted = this.hasAttribute(\"muted\");\n\t\t\tfor (const prop of nativeElProps) this.#upgradeProperty(prop);\n\t\t\tthis.#childObserver = new MutationObserver(this.#syncMediaChildAttribute.bind(this));\n\t\t\tthis.shadowRoot.addEventListener(\"slotchange\", () => this.#syncMediaChildren());\n\t\t\tthis.#syncMediaChildren();\n\t\t\tfor (const type of this.constructor.Events) this.shadowRoot.addEventListener(type, this.#deferForwardEvent, true);\n\t\t}\n\t\t#deferForwardEvent = (event) => {\n\t\t\tif (this.target && this.target === event.target) this.target.addEventListener(event.type, this.#forwardEvent, { once: true });\n\t\t};\n\t\t#forwardEvent = (event) => {\n\t\t\tthis.dispatchEvent(new event.constructor(event.type, event));\n\t\t};\n\t\t#syncMediaChildren() {\n\t\t\tconst removeNativeChildren = new Map(this.#childMap);\n\t\t\t((this.shadowRoot?.querySelector(\"slot:not([name])\"))?.assignedElements({ flatten: true }).filter((el) => [\"track\", \"source\"].includes(el.localName))).forEach((el) => {\n\t\t\t\tremoveNativeChildren.delete(el);\n\t\t\t\tlet clone = this.#childMap.get(el);\n\t\t\t\tif (!clone) {\n\t\t\t\t\tclone = el.cloneNode();\n\t\t\t\t\tthis.#childMap.set(el, clone);\n\t\t\t\t\tthis.#childObserver?.observe(el, { attributes: true });\n\t\t\t\t}\n\t\t\t\tthis.target?.append(clone);\n\t\t\t\tthis.#enableDefaultTrack(clone);\n\t\t\t});\n\t\t\tremoveNativeChildren.forEach((clone, el) => {\n\t\t\t\tclone.remove();\n\t\t\t\tthis.#childMap.delete(el);\n\t\t\t});\n\t\t}\n\t\t#syncMediaChildAttribute(mutations) {\n\t\t\tfor (const mutation of mutations) if (mutation.type === \"attributes\") {\n\t\t\t\tconst { target, attributeName } = mutation;\n\t\t\t\tconst clone = this.#childMap.get(target);\n\t\t\t\tif (clone && attributeName) {\n\t\t\t\t\tclone.setAttribute(attributeName, target.getAttribute(attributeName) ?? \"\");\n\t\t\t\t\tthis.#enableDefaultTrack(clone);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t#enableDefaultTrack(trackEl) {\n\t\t\tif (trackEl && trackEl.localName === \"track\" && trackEl.default && (trackEl.kind === \"chapters\" || trackEl.kind === \"metadata\") && trackEl.track.mode === \"disabled\") trackEl.track.mode = \"hidden\";\n\t\t}\n\t\t#upgradeProperty(prop) {\n\t\t\tif (Object.hasOwn(this, prop)) {\n\t\t\t\tconst value = this[prop];\n\t\t\t\tdelete this[prop];\n\t\t\t\tthis[prop] = value;\n\t\t\t}\n\t\t}\n\t\tattributeChangedCallback(attrName, oldValue, newValue) {\n\t\t\tthis.#init();\n\t\t\tthis.#forwardAttribute(attrName, oldValue, newValue);\n\t\t}\n\t\t#forwardAttribute(attrName, _oldValue, newValue) {\n\t\t\tif ([\"id\", \"class\"].includes(attrName)) return;\n\t\t\tif (!CustomMedia.observedAttributes.includes(attrName) && this.constructor.observedAttributes.includes(attrName)) return;\n\t\t\tif (newValue === null) this.target?.removeAttribute(attrName);\n\t\t\telse if (this.target?.getAttribute(attrName) !== newValue) this.target?.setAttribute(attrName, newValue);\n\t\t}\n\t\tconnectedCallback() {\n\t\t\tthis.#init();\n\t\t}\n\t};\n}\n/**\n* Helper function to get all properties from a native media element's prototype.\n*/\nfunction getNativeElProps(nativeElTest) {\n\tconst nativeElProps = [];\n\tfor (let proto = Object.getPrototypeOf(nativeElTest); proto && proto !== HTMLElement.prototype; proto = Object.getPrototypeOf(proto)) {\n\t\tconst props = Object.getOwnPropertyNames(proto);\n\t\tnativeElProps.push(...props);\n\t}\n\treturn nativeElProps;\n}\n/**\n* Helper function to serialize attributes into a string.\n*/\nfunction serializeAttributes(attrs) {\n\tlet html = \"\";\n\tfor (const key in attrs) {\n\t\tif (!Attributes.includes(key)) continue;\n\t\tconst value = attrs[key];\n\t\tif (value === \"\") html += ` ${key}`;\n\t\telse html += ` ${key}=\"${value}\"`;\n\t}\n\treturn html;\n}\n/**\n* Helper function to convert NamedNodeMap to a plain object.\n*/\nfunction namedNodeMapToObject(namedNodeMap) {\n\tconst obj = {};\n\tfor (const attr of namedNodeMap) obj[attr.name] = attr.value;\n\treturn obj;\n}\nconst CustomVideoElement = CustomMediaMixin(globalThis.HTMLElement ?? class {}, { tag: \"video\" });\nconst CustomAudioElement = CustomMediaMixin(globalThis.HTMLElement ?? class {}, { tag: \"audio\" });\n//#endregion\nexport { Attributes, CustomAudioElement, CustomMediaMixin, CustomVideoElement, Events };\n\n//# sourceMappingURL=index.js.map","import type { AnyConstructor } from '@videojs/utils/types';\n\ntype AnyClass = abstract new (...args: any[]) => any;\n\nfunction camelToKebab(str: string): string {\n return str.replace(/[A-Z]/g, (m) => `-${m.toLowerCase()}`);\n}\n\nfunction buildAttrPropMap(DelegateClass: AnyClass): Map<string, string> {\n const map = new Map<string, string>();\n for (let proto = DelegateClass.prototype; proto && proto !== Object.prototype; proto = Object.getPrototypeOf(proto)) {\n for (const key of Object.getOwnPropertyNames(proto)) {\n if (key.startsWith('_')) continue;\n const desc = Object.getOwnPropertyDescriptor(proto, key);\n if (desc?.set) map.set(camelToKebab(key), key);\n }\n }\n return map;\n}\n\n/**\n * Mixin that intercepts `getTemplateHTML` and `attributeChangedCallback` to\n * handle delegate-owned properties. Delegate props are stripped from template\n * HTML attrs and routed through the property setter in `attributeChangedCallback`\n * instead of being forwarded to the inner native element.\n */\nexport function MediaPropsMixin<Base extends AnyConstructor<HTMLElement>>(\n BaseClass: Base,\n DelegateClass: AnyClass\n): Base {\n const attrToProp = buildAttrPropMap(DelegateClass);\n\n class MediaPropsElement extends (BaseClass as any) {\n static get observedAttributes(): string[] {\n // biome-ignore lint/complexity/noThisInStatic: intentional use of super\n return [...new Set([...(super.observedAttributes ?? []), ...attrToProp.keys()])];\n }\n\n static getTemplateHTML(attrs: Record<string, string>): string {\n const filtered = { ...attrs };\n for (const attr of attrToProp.keys()) {\n delete filtered[attr];\n }\n // biome-ignore lint/complexity/noThisInStatic: intentional use of super\n return super.getTemplateHTML(filtered);\n }\n\n attributeChangedCallback(attrName: string, oldValue: string | null, newValue: string | null): void {\n const prop = attrToProp.get(attrName);\n if (prop) {\n if (oldValue !== newValue) {\n (this as any)[prop] = typeof (this as any)[prop] === 'boolean' ? newValue !== null : (newValue ?? '');\n }\n return;\n }\n\n super.attributeChangedCallback?.(attrName, oldValue, newValue);\n }\n }\n\n return MediaPropsElement as unknown as Base;\n}\n"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import{t as e}from"./delegate-B626t_Va.js";import{n as t}from"./media-props-mixin-CmboksUe.js";var n=class e extends Error{static MEDIA_ERR_ABORTED=1;static MEDIA_ERR_NETWORK=2;static MEDIA_ERR_DECODE=3;static MEDIA_ERR_SRC_NOT_SUPPORTED=4;static MEDIA_ERR_ENCRYPTED=5;static MEDIA_ERR_CUSTOM=100;static defaultMessages={1:`You aborted the media playback`,2:`A network error caused the media download to fail.`,3:`A media error caused playback to be aborted. The media could be corrupt or your browser does not support this format.`,4:`An unsupported error occurred. The server or network failed, or your browser does not support this format.`,5:`The media is encrypted and there are no keys to decrypt it.`};name;code;context;fatal;data;constructor(t,n=e.MEDIA_ERR_CUSTOM,r,i){super(t),this.name=`MediaError`,this.code=n,this.context=i,this.fatal=r??(n>=e.MEDIA_ERR_NETWORK&&n<=e.MEDIA_ERR_ENCRYPTED),this.message||=e.defaultMessages[this.code]??``}};function r(e){class t extends e{#e=null;#t=null;get error(){return this.#t}attach(e){super.attach(e),this.#r(e)}detach(){this.#n(),super.detach()}destroy(){this.#n(),super.destroy()}#n(){this.#e?.abort(),this.#e=null,this.#t=null}#r(e){this.#n(),this.#e=new AbortController;let t=this.#e.signal;e.addEventListener(`error`,t=>{t.stopImmediatePropagation();let r=e.error;if(!r)return;let i=new n(r.message,r.code,!0);this.#t=i,this.dispatchEvent(new ErrorEvent(`error`,{error:i,message:i.message}))},{signal:t}),e.addEventListener(`emptied`,()=>{this.#t=null},{signal:t})}}return t}var i=class extends EventTarget{#e=null;#t=``;#n=`metadata`;get target(){return this.#e}get engine(){return null}get src(){return this.#t}set src(e){this.#t=e,this.#e&&(this.#e.src=e)}get preload(){return this.#n??`metadata`}set preload(e){this.#n=e,this.#e&&(this.#e.preload=e)}attach(e){this.#e=e,this.preload!==this.#e.preload&&(this.#e.preload=this.preload),this.src!==this.#e.src&&(this.#e.src=this.src)}detach(){this.#e=null}destroy(){this.#e=null}},a=class extends r(i){},o=class extends e(t,a){};export{a as n,n as r,o as t};
2
- //# sourceMappingURL=native-hls-Db2TurPW.js.map
1
+ import{t as e}from"./delegate-B626t_Va.js";import{n as t}from"./media-props-mixin-Bd_N2HWy.js";var n=class e extends Error{static MEDIA_ERR_ABORTED=1;static MEDIA_ERR_NETWORK=2;static MEDIA_ERR_DECODE=3;static MEDIA_ERR_SRC_NOT_SUPPORTED=4;static MEDIA_ERR_ENCRYPTED=5;static MEDIA_ERR_CUSTOM=100;static defaultMessages={1:`You aborted the media playback`,2:`A network error caused the media download to fail.`,3:`A media error caused playback to be aborted. The media could be corrupt or your browser does not support this format.`,4:`An unsupported error occurred. The server or network failed, or your browser does not support this format.`,5:`The media is encrypted and there are no keys to decrypt it.`};name;code;context;fatal;data;constructor(t,n=e.MEDIA_ERR_CUSTOM,r,i){super(t),this.name=`MediaError`,this.code=n,this.context=i,this.fatal=r??(n>=e.MEDIA_ERR_NETWORK&&n<=e.MEDIA_ERR_ENCRYPTED),this.message||=e.defaultMessages[this.code]??``}};function r(e){class t extends e{#e=null;#t=null;get error(){return this.#t}attach(e){super.attach(e),this.#r(e)}detach(){this.#n(),super.detach()}destroy(){this.#n(),super.destroy()}#n(){this.#e?.abort(),this.#e=null,this.#t=null}#r(e){this.#n(),this.#e=new AbortController;let t=this.#e.signal;e.addEventListener(`error`,t=>{t.stopImmediatePropagation();let r=e.error;if(!r)return;let i=new n(r.message,r.code,!0);this.#t=i,this.dispatchEvent(new ErrorEvent(`error`,{error:i,message:i.message}))},{signal:t}),e.addEventListener(`emptied`,()=>{this.#t=null},{signal:t})}}return t}var i=class extends EventTarget{#e=null;#t=``;#n=`metadata`;get target(){return this.#e}get engine(){return null}get src(){return this.#t}set src(e){this.#t=e,this.#e&&(this.#e.src=e)}get preload(){return this.#n??`metadata`}set preload(e){this.#n=e,this.#e&&(this.#e.preload=e)}attach(e){this.#e=e,this.preload!==this.#e.preload&&(this.#e.preload=this.preload),this.src!==this.#e.src&&(this.#e.src=this.src)}detach(){this.#e=null}destroy(){this.#e=null}},a=class extends r(i){},o=class extends e(t,a){};export{a as n,n as r,o as t};
2
+ //# sourceMappingURL=native-hls-CjRvSXAJ.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"native-hls-Db2TurPW.js","names":["#error","#init","#destroy","#disconnect","#target","#src","#preload"],"sources":["../../core/dist/default/core/media/media-error.js","../../core/dist/default/dom/media/native-hls/errors.js","../../core/dist/default/dom/media/native-hls/index.js"],"sourcesContent":["//#region src/core/media/media-error.ts\nvar MediaError = class MediaError extends Error {\n\tstatic MEDIA_ERR_ABORTED = 1;\n\tstatic MEDIA_ERR_NETWORK = 2;\n\tstatic MEDIA_ERR_DECODE = 3;\n\tstatic MEDIA_ERR_SRC_NOT_SUPPORTED = 4;\n\tstatic MEDIA_ERR_ENCRYPTED = 5;\n\tstatic MEDIA_ERR_CUSTOM = 100;\n\tstatic defaultMessages = {\n\t\t1: \"You aborted the media playback\",\n\t\t2: \"A network error caused the media download to fail.\",\n\t\t3: \"A media error caused playback to be aborted. The media could be corrupt or your browser does not support this format.\",\n\t\t4: \"An unsupported error occurred. The server or network failed, or your browser does not support this format.\",\n\t\t5: \"The media is encrypted and there are no keys to decrypt it.\"\n\t};\n\tname;\n\tcode;\n\tcontext;\n\tfatal;\n\tdata;\n\tconstructor(message, code = MediaError.MEDIA_ERR_CUSTOM, fatal, context) {\n\t\tsuper(message);\n\t\tthis.name = \"MediaError\";\n\t\tthis.code = code;\n\t\tthis.context = context;\n\t\tthis.fatal = fatal ?? (code >= MediaError.MEDIA_ERR_NETWORK && code <= MediaError.MEDIA_ERR_ENCRYPTED);\n\t\tif (!this.message) this.message = MediaError.defaultMessages[this.code] ?? \"\";\n\t}\n};\n//#endregion\nexport { MediaError };\n\n//# sourceMappingURL=media-error.js.map","import { MediaError } from \"../../../core/media/media-error.js\";\n//#region src/dom/media/native-hls/errors.ts\nfunction NativeHlsMediaErrorsMixin(BaseClass) {\n\tclass NativeHlsMediaErrors extends BaseClass {\n\t\t#disconnect = null;\n\t\t#error = null;\n\t\tget error() {\n\t\t\treturn this.#error;\n\t\t}\n\t\tattach(target) {\n\t\t\tsuper.attach(target);\n\t\t\tthis.#init(target);\n\t\t}\n\t\tdetach() {\n\t\t\tthis.#destroy();\n\t\t\tsuper.detach();\n\t\t}\n\t\tdestroy() {\n\t\t\tthis.#destroy();\n\t\t\tsuper.destroy();\n\t\t}\n\t\t#destroy() {\n\t\t\tthis.#disconnect?.abort();\n\t\t\tthis.#disconnect = null;\n\t\t\tthis.#error = null;\n\t\t}\n\t\t#init(target) {\n\t\t\tthis.#destroy();\n\t\t\tthis.#disconnect = new AbortController();\n\t\t\tconst signal = this.#disconnect.signal;\n\t\t\ttarget.addEventListener(\"error\", (event) => {\n\t\t\t\tevent.stopImmediatePropagation();\n\t\t\t\tconst native = target.error;\n\t\t\t\tif (!native) return;\n\t\t\t\tconst error = new MediaError(native.message, native.code, true);\n\t\t\t\tthis.#error = error;\n\t\t\t\tthis.dispatchEvent(new ErrorEvent(\"error\", {\n\t\t\t\t\terror,\n\t\t\t\t\tmessage: error.message\n\t\t\t\t}));\n\t\t\t}, { signal });\n\t\t\ttarget.addEventListener(\"emptied\", () => {\n\t\t\t\tthis.#error = null;\n\t\t\t}, { signal });\n\t\t}\n\t}\n\treturn NativeHlsMediaErrors;\n}\n//#endregion\nexport { NativeHlsMediaErrorsMixin };\n\n//# sourceMappingURL=errors.js.map","import { DelegateMixin } from \"../../../core/media/delegate.js\";\nimport { VideoProxy } from \"../proxy.js\";\nimport { CustomVideoElement } from \"../custom-media-element/index.js\";\nimport { NativeHlsMediaErrorsMixin } from \"./errors.js\";\n//#region src/dom/media/native-hls/index.ts\nvar NativeHlsMediaDelegateBase = class extends EventTarget {\n\t#target = null;\n\t#src = \"\";\n\t#preload = \"metadata\";\n\tget target() {\n\t\treturn this.#target;\n\t}\n\tget engine() {\n\t\treturn null;\n\t}\n\tget src() {\n\t\treturn this.#src;\n\t}\n\tset src(src) {\n\t\tthis.#src = src;\n\t\tif (this.#target) this.#target.src = src;\n\t}\n\tget preload() {\n\t\treturn this.#preload ?? \"metadata\";\n\t}\n\tset preload(value) {\n\t\tthis.#preload = value;\n\t\tif (this.#target) this.#target.preload = value;\n\t}\n\tattach(target) {\n\t\tthis.#target = target;\n\t\tif (this.preload !== this.#target.preload) this.#target.preload = this.preload;\n\t\tif (this.src !== this.#target.src) this.#target.src = this.src;\n\t}\n\tdetach() {\n\t\tthis.#target = null;\n\t}\n\tdestroy() {\n\t\tthis.#target = null;\n\t}\n};\nvar NativeHlsMediaDelegate = class extends NativeHlsMediaErrorsMixin(NativeHlsMediaDelegateBase) {};\nvar NativeHlsCustomMedia = class extends DelegateMixin(CustomVideoElement, NativeHlsMediaDelegate) {};\nvar NativeHlsMedia = class extends DelegateMixin(VideoProxy, NativeHlsMediaDelegate) {};\n//#endregion\nexport { NativeHlsCustomMedia, NativeHlsMedia, NativeHlsMediaDelegate };\n\n//# sourceMappingURL=index.js.map"],"mappings":"+FACA,IAAI,EAAa,MAAM,UAAmB,KAAM,CAC/C,OAAO,kBAAoB,EAC3B,OAAO,kBAAoB,EAC3B,OAAO,iBAAmB,EAC1B,OAAO,4BAA8B,EACrC,OAAO,oBAAsB,EAC7B,OAAO,iBAAmB,IAC1B,OAAO,gBAAkB,CACxB,EAAG,iCACH,EAAG,qDACH,EAAG,wHACH,EAAG,6GACH,EAAG,8DACH,CACD,KACA,KACA,QACA,MACA,KACA,YAAY,EAAS,EAAO,EAAW,iBAAkB,EAAO,EAAS,CACxE,MAAM,EAAQ,CACd,KAAK,KAAO,aACZ,KAAK,KAAO,EACZ,KAAK,QAAU,EACf,KAAK,MAAQ,IAAU,GAAQ,EAAW,mBAAqB,GAAQ,EAAW,qBAClF,AAAmB,KAAK,UAAU,EAAW,gBAAgB,KAAK,OAAS,KCxB7E,SAAS,EAA0B,EAAW,CAC7C,MAAM,UAA6B,CAAU,CAC5C,GAAc,KACd,GAAS,KACT,IAAI,OAAQ,CACX,OAAO,MAAA,EAER,OAAO,EAAQ,CACd,MAAM,OAAO,EAAO,CACpB,MAAA,EAAW,EAAO,CAEnB,QAAS,CACR,MAAA,GAAe,CACf,MAAM,QAAQ,CAEf,SAAU,CACT,MAAA,GAAe,CACf,MAAM,SAAS,CAEhB,IAAW,CACV,MAAA,GAAkB,OAAO,CACzB,MAAA,EAAmB,KACnB,MAAA,EAAc,KAEf,GAAM,EAAQ,CACb,MAAA,GAAe,CACf,MAAA,EAAmB,IAAI,gBACvB,IAAM,EAAS,MAAA,EAAiB,OAChC,EAAO,iBAAiB,QAAU,GAAU,CAC3C,EAAM,0BAA0B,CAChC,IAAM,EAAS,EAAO,MACtB,GAAI,CAAC,EAAQ,OACb,IAAM,EAAQ,IAAI,EAAW,EAAO,QAAS,EAAO,KAAM,GAAK,CAC/D,MAAA,EAAc,EACd,KAAK,cAAc,IAAI,WAAW,QAAS,CAC1C,QACA,QAAS,EAAM,QACf,CAAC,CAAC,EACD,CAAE,SAAQ,CAAC,CACd,EAAO,iBAAiB,cAAiB,CACxC,MAAA,EAAc,MACZ,CAAE,SAAQ,CAAC,EAGhB,OAAO,ECzCR,IAAI,EAA6B,cAAc,WAAY,CAC1D,GAAU,KACV,GAAO,GACP,GAAW,WACX,IAAI,QAAS,CACZ,OAAO,MAAA,EAER,IAAI,QAAS,CACZ,OAAO,KAER,IAAI,KAAM,CACT,OAAO,MAAA,EAER,IAAI,IAAI,EAAK,CACZ,MAAA,EAAY,EACR,MAAA,IAAc,MAAA,EAAa,IAAM,GAEtC,IAAI,SAAU,CACb,OAAO,MAAA,GAAiB,WAEzB,IAAI,QAAQ,EAAO,CAClB,MAAA,EAAgB,EACZ,MAAA,IAAc,MAAA,EAAa,QAAU,GAE1C,OAAO,EAAQ,CACd,MAAA,EAAe,EACX,KAAK,UAAY,MAAA,EAAa,UAAS,MAAA,EAAa,QAAU,KAAK,SACnE,KAAK,MAAQ,MAAA,EAAa,MAAK,MAAA,EAAa,IAAM,KAAK,KAE5D,QAAS,CACR,MAAA,EAAe,KAEhB,SAAU,CACT,MAAA,EAAe,OAGb,EAAyB,cAAc,EAA0B,EAA2B,AAAC,GAC7F,EAAuB,cAAc,EAAc,EAAoB,EAAuB,AAAC"}
1
+ {"version":3,"file":"native-hls-CjRvSXAJ.js","names":["#error","#init","#destroy","#disconnect","#target","#src","#preload"],"sources":["../../core/dist/default/core/media/media-error.js","../../core/dist/default/dom/media/native-hls/errors.js","../../core/dist/default/dom/media/native-hls/index.js"],"sourcesContent":["//#region src/core/media/media-error.ts\nvar MediaError = class MediaError extends Error {\n\tstatic MEDIA_ERR_ABORTED = 1;\n\tstatic MEDIA_ERR_NETWORK = 2;\n\tstatic MEDIA_ERR_DECODE = 3;\n\tstatic MEDIA_ERR_SRC_NOT_SUPPORTED = 4;\n\tstatic MEDIA_ERR_ENCRYPTED = 5;\n\tstatic MEDIA_ERR_CUSTOM = 100;\n\tstatic defaultMessages = {\n\t\t1: \"You aborted the media playback\",\n\t\t2: \"A network error caused the media download to fail.\",\n\t\t3: \"A media error caused playback to be aborted. The media could be corrupt or your browser does not support this format.\",\n\t\t4: \"An unsupported error occurred. The server or network failed, or your browser does not support this format.\",\n\t\t5: \"The media is encrypted and there are no keys to decrypt it.\"\n\t};\n\tname;\n\tcode;\n\tcontext;\n\tfatal;\n\tdata;\n\tconstructor(message, code = MediaError.MEDIA_ERR_CUSTOM, fatal, context) {\n\t\tsuper(message);\n\t\tthis.name = \"MediaError\";\n\t\tthis.code = code;\n\t\tthis.context = context;\n\t\tthis.fatal = fatal ?? (code >= MediaError.MEDIA_ERR_NETWORK && code <= MediaError.MEDIA_ERR_ENCRYPTED);\n\t\tif (!this.message) this.message = MediaError.defaultMessages[this.code] ?? \"\";\n\t}\n};\n//#endregion\nexport { MediaError };\n\n//# sourceMappingURL=media-error.js.map","import { MediaError } from \"../../../core/media/media-error.js\";\n//#region src/dom/media/native-hls/errors.ts\nfunction NativeHlsMediaErrorsMixin(BaseClass) {\n\tclass NativeHlsMediaErrors extends BaseClass {\n\t\t#disconnect = null;\n\t\t#error = null;\n\t\tget error() {\n\t\t\treturn this.#error;\n\t\t}\n\t\tattach(target) {\n\t\t\tsuper.attach(target);\n\t\t\tthis.#init(target);\n\t\t}\n\t\tdetach() {\n\t\t\tthis.#destroy();\n\t\t\tsuper.detach();\n\t\t}\n\t\tdestroy() {\n\t\t\tthis.#destroy();\n\t\t\tsuper.destroy();\n\t\t}\n\t\t#destroy() {\n\t\t\tthis.#disconnect?.abort();\n\t\t\tthis.#disconnect = null;\n\t\t\tthis.#error = null;\n\t\t}\n\t\t#init(target) {\n\t\t\tthis.#destroy();\n\t\t\tthis.#disconnect = new AbortController();\n\t\t\tconst signal = this.#disconnect.signal;\n\t\t\ttarget.addEventListener(\"error\", (event) => {\n\t\t\t\tevent.stopImmediatePropagation();\n\t\t\t\tconst native = target.error;\n\t\t\t\tif (!native) return;\n\t\t\t\tconst error = new MediaError(native.message, native.code, true);\n\t\t\t\tthis.#error = error;\n\t\t\t\tthis.dispatchEvent(new ErrorEvent(\"error\", {\n\t\t\t\t\terror,\n\t\t\t\t\tmessage: error.message\n\t\t\t\t}));\n\t\t\t}, { signal });\n\t\t\ttarget.addEventListener(\"emptied\", () => {\n\t\t\t\tthis.#error = null;\n\t\t\t}, { signal });\n\t\t}\n\t}\n\treturn NativeHlsMediaErrors;\n}\n//#endregion\nexport { NativeHlsMediaErrorsMixin };\n\n//# sourceMappingURL=errors.js.map","import { DelegateMixin } from \"../../../core/media/delegate.js\";\nimport { VideoProxy } from \"../proxy.js\";\nimport { CustomVideoElement } from \"../custom-media-element/index.js\";\nimport { NativeHlsMediaErrorsMixin } from \"./errors.js\";\n//#region src/dom/media/native-hls/index.ts\nvar NativeHlsMediaDelegateBase = class extends EventTarget {\n\t#target = null;\n\t#src = \"\";\n\t#preload = \"metadata\";\n\tget target() {\n\t\treturn this.#target;\n\t}\n\tget engine() {\n\t\treturn null;\n\t}\n\tget src() {\n\t\treturn this.#src;\n\t}\n\tset src(src) {\n\t\tthis.#src = src;\n\t\tif (this.#target) this.#target.src = src;\n\t}\n\tget preload() {\n\t\treturn this.#preload ?? \"metadata\";\n\t}\n\tset preload(value) {\n\t\tthis.#preload = value;\n\t\tif (this.#target) this.#target.preload = value;\n\t}\n\tattach(target) {\n\t\tthis.#target = target;\n\t\tif (this.preload !== this.#target.preload) this.#target.preload = this.preload;\n\t\tif (this.src !== this.#target.src) this.#target.src = this.src;\n\t}\n\tdetach() {\n\t\tthis.#target = null;\n\t}\n\tdestroy() {\n\t\tthis.#target = null;\n\t}\n};\nvar NativeHlsMediaDelegate = class extends NativeHlsMediaErrorsMixin(NativeHlsMediaDelegateBase) {};\nvar NativeHlsCustomMedia = class extends DelegateMixin(CustomVideoElement, NativeHlsMediaDelegate) {};\nvar NativeHlsMedia = class extends DelegateMixin(VideoProxy, NativeHlsMediaDelegate) {};\n//#endregion\nexport { NativeHlsCustomMedia, NativeHlsMedia, NativeHlsMediaDelegate };\n\n//# sourceMappingURL=index.js.map"],"mappings":"+FACA,IAAI,EAAa,MAAM,UAAmB,KAAM,CAC/C,OAAO,kBAAoB,EAC3B,OAAO,kBAAoB,EAC3B,OAAO,iBAAmB,EAC1B,OAAO,4BAA8B,EACrC,OAAO,oBAAsB,EAC7B,OAAO,iBAAmB,IAC1B,OAAO,gBAAkB,CACxB,EAAG,iCACH,EAAG,qDACH,EAAG,wHACH,EAAG,6GACH,EAAG,8DACH,CACD,KACA,KACA,QACA,MACA,KACA,YAAY,EAAS,EAAO,EAAW,iBAAkB,EAAO,EAAS,CACxE,MAAM,EAAQ,CACd,KAAK,KAAO,aACZ,KAAK,KAAO,EACZ,KAAK,QAAU,EACf,KAAK,MAAQ,IAAU,GAAQ,EAAW,mBAAqB,GAAQ,EAAW,qBAClF,AAAmB,KAAK,UAAU,EAAW,gBAAgB,KAAK,OAAS,KCxB7E,SAAS,EAA0B,EAAW,CAC7C,MAAM,UAA6B,CAAU,CAC5C,GAAc,KACd,GAAS,KACT,IAAI,OAAQ,CACX,OAAO,MAAA,EAER,OAAO,EAAQ,CACd,MAAM,OAAO,EAAO,CACpB,MAAA,EAAW,EAAO,CAEnB,QAAS,CACR,MAAA,GAAe,CACf,MAAM,QAAQ,CAEf,SAAU,CACT,MAAA,GAAe,CACf,MAAM,SAAS,CAEhB,IAAW,CACV,MAAA,GAAkB,OAAO,CACzB,MAAA,EAAmB,KACnB,MAAA,EAAc,KAEf,GAAM,EAAQ,CACb,MAAA,GAAe,CACf,MAAA,EAAmB,IAAI,gBACvB,IAAM,EAAS,MAAA,EAAiB,OAChC,EAAO,iBAAiB,QAAU,GAAU,CAC3C,EAAM,0BAA0B,CAChC,IAAM,EAAS,EAAO,MACtB,GAAI,CAAC,EAAQ,OACb,IAAM,EAAQ,IAAI,EAAW,EAAO,QAAS,EAAO,KAAM,GAAK,CAC/D,MAAA,EAAc,EACd,KAAK,cAAc,IAAI,WAAW,QAAS,CAC1C,QACA,QAAS,EAAM,QACf,CAAC,CAAC,EACD,CAAE,SAAQ,CAAC,CACd,EAAO,iBAAiB,cAAiB,CACxC,MAAA,EAAc,MACZ,CAAE,SAAQ,CAAC,EAGhB,OAAO,ECzCR,IAAI,EAA6B,cAAc,WAAY,CAC1D,GAAU,KACV,GAAO,GACP,GAAW,WACX,IAAI,QAAS,CACZ,OAAO,MAAA,EAER,IAAI,QAAS,CACZ,OAAO,KAER,IAAI,KAAM,CACT,OAAO,MAAA,EAER,IAAI,IAAI,EAAK,CACZ,MAAA,EAAY,EACR,MAAA,IAAc,MAAA,EAAa,IAAM,GAEtC,IAAI,SAAU,CACb,OAAO,MAAA,GAAiB,WAEzB,IAAI,QAAQ,EAAO,CAClB,MAAA,EAAgB,EACZ,MAAA,IAAc,MAAA,EAAa,QAAU,GAE1C,OAAO,EAAQ,CACd,MAAA,EAAe,EACX,KAAK,UAAY,MAAA,EAAa,UAAS,MAAA,EAAa,QAAU,KAAK,SACnE,KAAK,MAAQ,MAAA,EAAa,MAAK,MAAA,EAAa,IAAM,KAAK,KAE5D,QAAS,CACR,MAAA,EAAe,KAEhB,SAAU,CACT,MAAA,EAAe,OAGb,EAAyB,cAAc,EAA0B,EAA2B,AAAC,GAC7F,EAAuB,cAAc,EAAc,EAAoB,EAAuB,AAAC"}
@@ -1,5 +1,5 @@
1
1
  import { t as DelegateMixin } from "./delegate-BCw-LjP_.js";
2
- import { n as CustomVideoElement } from "./media-props-mixin-CNJVvHAH.js";
2
+ import { n as CustomVideoElement } from "./media-props-mixin-Dc5dpCV4.js";
3
3
 
4
4
  //#region ../core/dist/dev/core/media/media-error.js
5
5
  var MediaError = class MediaError extends Error {
@@ -123,4 +123,4 @@ var NativeHlsCustomMedia = class extends DelegateMixin(CustomVideoElement, Nativ
123
123
 
124
124
  //#endregion
125
125
  export { NativeHlsMediaDelegate as n, MediaError as r, NativeHlsCustomMedia as t };
126
- //# sourceMappingURL=native-hls-CPgjPTAQ.js.map
126
+ //# sourceMappingURL=native-hls-D2rfyyyW.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"native-hls-CPgjPTAQ.js","names":["#error","#init","#destroy","#disconnect","#target","#src","#preload"],"sources":["../../core/dist/dev/core/media/media-error.js","../../core/dist/dev/dom/media/native-hls/errors.js","../../core/dist/dev/dom/media/native-hls/index.js"],"sourcesContent":["//#region src/core/media/media-error.ts\nvar MediaError = class MediaError extends Error {\n\tstatic MEDIA_ERR_ABORTED = 1;\n\tstatic MEDIA_ERR_NETWORK = 2;\n\tstatic MEDIA_ERR_DECODE = 3;\n\tstatic MEDIA_ERR_SRC_NOT_SUPPORTED = 4;\n\tstatic MEDIA_ERR_ENCRYPTED = 5;\n\tstatic MEDIA_ERR_CUSTOM = 100;\n\tstatic defaultMessages = {\n\t\t1: \"You aborted the media playback\",\n\t\t2: \"A network error caused the media download to fail.\",\n\t\t3: \"A media error caused playback to be aborted. The media could be corrupt or your browser does not support this format.\",\n\t\t4: \"An unsupported error occurred. The server or network failed, or your browser does not support this format.\",\n\t\t5: \"The media is encrypted and there are no keys to decrypt it.\"\n\t};\n\tname;\n\tcode;\n\tcontext;\n\tfatal;\n\tdata;\n\tconstructor(message, code = MediaError.MEDIA_ERR_CUSTOM, fatal, context) {\n\t\tsuper(message);\n\t\tthis.name = \"MediaError\";\n\t\tthis.code = code;\n\t\tthis.context = context;\n\t\tthis.fatal = fatal ?? (code >= MediaError.MEDIA_ERR_NETWORK && code <= MediaError.MEDIA_ERR_ENCRYPTED);\n\t\tif (!this.message) this.message = MediaError.defaultMessages[this.code] ?? \"\";\n\t}\n};\n//#endregion\nexport { MediaError };\n\n//# sourceMappingURL=media-error.js.map","import { MediaError } from \"../../../core/media/media-error.js\";\n//#region src/dom/media/native-hls/errors.ts\nfunction NativeHlsMediaErrorsMixin(BaseClass) {\n\tclass NativeHlsMediaErrors extends BaseClass {\n\t\t#disconnect = null;\n\t\t#error = null;\n\t\tget error() {\n\t\t\treturn this.#error;\n\t\t}\n\t\tattach(target) {\n\t\t\tsuper.attach(target);\n\t\t\tthis.#init(target);\n\t\t}\n\t\tdetach() {\n\t\t\tthis.#destroy();\n\t\t\tsuper.detach();\n\t\t}\n\t\tdestroy() {\n\t\t\tthis.#destroy();\n\t\t\tsuper.destroy();\n\t\t}\n\t\t#destroy() {\n\t\t\tthis.#disconnect?.abort();\n\t\t\tthis.#disconnect = null;\n\t\t\tthis.#error = null;\n\t\t}\n\t\t#init(target) {\n\t\t\tthis.#destroy();\n\t\t\tthis.#disconnect = new AbortController();\n\t\t\tconst signal = this.#disconnect.signal;\n\t\t\ttarget.addEventListener(\"error\", (event) => {\n\t\t\t\tevent.stopImmediatePropagation();\n\t\t\t\tconst native = target.error;\n\t\t\t\tif (!native) return;\n\t\t\t\tconst error = new MediaError(native.message, native.code, true);\n\t\t\t\tthis.#error = error;\n\t\t\t\tthis.dispatchEvent(new ErrorEvent(\"error\", {\n\t\t\t\t\terror,\n\t\t\t\t\tmessage: error.message\n\t\t\t\t}));\n\t\t\t}, { signal });\n\t\t\ttarget.addEventListener(\"emptied\", () => {\n\t\t\t\tthis.#error = null;\n\t\t\t}, { signal });\n\t\t}\n\t}\n\treturn NativeHlsMediaErrors;\n}\n//#endregion\nexport { NativeHlsMediaErrorsMixin };\n\n//# sourceMappingURL=errors.js.map","import { DelegateMixin } from \"../../../core/media/delegate.js\";\nimport { VideoProxy } from \"../proxy.js\";\nimport { CustomVideoElement } from \"../custom-media-element/index.js\";\nimport { NativeHlsMediaErrorsMixin } from \"./errors.js\";\n//#region src/dom/media/native-hls/index.ts\nvar NativeHlsMediaDelegateBase = class extends EventTarget {\n\t#target = null;\n\t#src = \"\";\n\t#preload = \"metadata\";\n\tget target() {\n\t\treturn this.#target;\n\t}\n\tget engine() {\n\t\treturn null;\n\t}\n\tget src() {\n\t\treturn this.#src;\n\t}\n\tset src(src) {\n\t\tthis.#src = src;\n\t\tif (this.#target) this.#target.src = src;\n\t}\n\tget preload() {\n\t\treturn this.#preload ?? \"metadata\";\n\t}\n\tset preload(value) {\n\t\tthis.#preload = value;\n\t\tif (this.#target) this.#target.preload = value;\n\t}\n\tattach(target) {\n\t\tthis.#target = target;\n\t\tif (this.preload !== this.#target.preload) this.#target.preload = this.preload;\n\t\tif (this.src !== this.#target.src) this.#target.src = this.src;\n\t}\n\tdetach() {\n\t\tthis.#target = null;\n\t}\n\tdestroy() {\n\t\tthis.#target = null;\n\t}\n};\nvar NativeHlsMediaDelegate = class extends NativeHlsMediaErrorsMixin(NativeHlsMediaDelegateBase) {};\nvar NativeHlsCustomMedia = class extends DelegateMixin(CustomVideoElement, NativeHlsMediaDelegate) {};\nvar NativeHlsMedia = class extends DelegateMixin(VideoProxy, NativeHlsMediaDelegate) {};\n//#endregion\nexport { NativeHlsCustomMedia, NativeHlsMedia, NativeHlsMediaDelegate };\n\n//# sourceMappingURL=index.js.map"],"mappings":";;;;AACA,IAAI,aAAa,MAAM,mBAAmB,MAAM;CAC/C,OAAO,oBAAoB;CAC3B,OAAO,oBAAoB;CAC3B,OAAO,mBAAmB;CAC1B,OAAO,8BAA8B;CACrC,OAAO,sBAAsB;CAC7B,OAAO,mBAAmB;CAC1B,OAAO,kBAAkB;EACxB,GAAG;EACH,GAAG;EACH,GAAG;EACH,GAAG;EACH,GAAG;EACH;CACD;CACA;CACA;CACA;CACA;CACA,YAAY,SAAS,OAAO,WAAW,kBAAkB,OAAO,SAAS;AACxE,QAAM,QAAQ;AACd,OAAK,OAAO;AACZ,OAAK,OAAO;AACZ,OAAK,UAAU;AACf,OAAK,QAAQ,UAAU,QAAQ,WAAW,qBAAqB,QAAQ,WAAW;AAClF,MAAI,CAAC,KAAK,QAAS,MAAK,UAAU,WAAW,gBAAgB,KAAK,SAAS;;;;;;ACxB7E,SAAS,0BAA0B,WAAW;CAC7C,MAAM,6BAA6B,UAAU;EAC5C,cAAc;EACd,SAAS;EACT,IAAI,QAAQ;AACX,UAAO,MAAKA;;EAEb,OAAO,QAAQ;AACd,SAAM,OAAO,OAAO;AACpB,SAAKC,KAAM,OAAO;;EAEnB,SAAS;AACR,SAAKC,SAAU;AACf,SAAM,QAAQ;;EAEf,UAAU;AACT,SAAKA,SAAU;AACf,SAAM,SAAS;;EAEhB,WAAW;AACV,SAAKC,YAAa,OAAO;AACzB,SAAKA,aAAc;AACnB,SAAKH,QAAS;;EAEf,MAAM,QAAQ;AACb,SAAKE,SAAU;AACf,SAAKC,aAAc,IAAI,iBAAiB;GACxC,MAAM,SAAS,MAAKA,WAAY;AAChC,UAAO,iBAAiB,UAAU,UAAU;AAC3C,UAAM,0BAA0B;IAChC,MAAM,SAAS,OAAO;AACtB,QAAI,CAAC,OAAQ;IACb,MAAM,QAAQ,IAAI,WAAW,OAAO,SAAS,OAAO,MAAM,KAAK;AAC/D,UAAKH,QAAS;AACd,SAAK,cAAc,IAAI,WAAW,SAAS;KAC1C;KACA,SAAS,MAAM;KACf,CAAC,CAAC;MACD,EAAE,QAAQ,CAAC;AACd,UAAO,iBAAiB,iBAAiB;AACxC,UAAKA,QAAS;MACZ,EAAE,QAAQ,CAAC;;;AAGhB,QAAO;;;;;ACzCR,IAAI,6BAA6B,cAAc,YAAY;CAC1D,UAAU;CACV,OAAO;CACP,WAAW;CACX,IAAI,SAAS;AACZ,SAAO,MAAKI;;CAEb,IAAI,SAAS;AACZ,SAAO;;CAER,IAAI,MAAM;AACT,SAAO,MAAKC;;CAEb,IAAI,IAAI,KAAK;AACZ,QAAKA,MAAO;AACZ,MAAI,MAAKD,OAAS,OAAKA,OAAQ,MAAM;;CAEtC,IAAI,UAAU;AACb,SAAO,MAAKE,WAAY;;CAEzB,IAAI,QAAQ,OAAO;AAClB,QAAKA,UAAW;AAChB,MAAI,MAAKF,OAAS,OAAKA,OAAQ,UAAU;;CAE1C,OAAO,QAAQ;AACd,QAAKA,SAAU;AACf,MAAI,KAAK,YAAY,MAAKA,OAAQ,QAAS,OAAKA,OAAQ,UAAU,KAAK;AACvE,MAAI,KAAK,QAAQ,MAAKA,OAAQ,IAAK,OAAKA,OAAQ,MAAM,KAAK;;CAE5D,SAAS;AACR,QAAKA,SAAU;;CAEhB,UAAU;AACT,QAAKA,SAAU;;;AAGjB,IAAI,yBAAyB,cAAc,0BAA0B,2BAA2B,CAAC;AACjG,IAAI,uBAAuB,cAAc,cAAc,oBAAoB,uBAAuB,CAAC"}
1
+ {"version":3,"file":"native-hls-D2rfyyyW.js","names":["#error","#init","#destroy","#disconnect","#target","#src","#preload"],"sources":["../../core/dist/dev/core/media/media-error.js","../../core/dist/dev/dom/media/native-hls/errors.js","../../core/dist/dev/dom/media/native-hls/index.js"],"sourcesContent":["//#region src/core/media/media-error.ts\nvar MediaError = class MediaError extends Error {\n\tstatic MEDIA_ERR_ABORTED = 1;\n\tstatic MEDIA_ERR_NETWORK = 2;\n\tstatic MEDIA_ERR_DECODE = 3;\n\tstatic MEDIA_ERR_SRC_NOT_SUPPORTED = 4;\n\tstatic MEDIA_ERR_ENCRYPTED = 5;\n\tstatic MEDIA_ERR_CUSTOM = 100;\n\tstatic defaultMessages = {\n\t\t1: \"You aborted the media playback\",\n\t\t2: \"A network error caused the media download to fail.\",\n\t\t3: \"A media error caused playback to be aborted. The media could be corrupt or your browser does not support this format.\",\n\t\t4: \"An unsupported error occurred. The server or network failed, or your browser does not support this format.\",\n\t\t5: \"The media is encrypted and there are no keys to decrypt it.\"\n\t};\n\tname;\n\tcode;\n\tcontext;\n\tfatal;\n\tdata;\n\tconstructor(message, code = MediaError.MEDIA_ERR_CUSTOM, fatal, context) {\n\t\tsuper(message);\n\t\tthis.name = \"MediaError\";\n\t\tthis.code = code;\n\t\tthis.context = context;\n\t\tthis.fatal = fatal ?? (code >= MediaError.MEDIA_ERR_NETWORK && code <= MediaError.MEDIA_ERR_ENCRYPTED);\n\t\tif (!this.message) this.message = MediaError.defaultMessages[this.code] ?? \"\";\n\t}\n};\n//#endregion\nexport { MediaError };\n\n//# sourceMappingURL=media-error.js.map","import { MediaError } from \"../../../core/media/media-error.js\";\n//#region src/dom/media/native-hls/errors.ts\nfunction NativeHlsMediaErrorsMixin(BaseClass) {\n\tclass NativeHlsMediaErrors extends BaseClass {\n\t\t#disconnect = null;\n\t\t#error = null;\n\t\tget error() {\n\t\t\treturn this.#error;\n\t\t}\n\t\tattach(target) {\n\t\t\tsuper.attach(target);\n\t\t\tthis.#init(target);\n\t\t}\n\t\tdetach() {\n\t\t\tthis.#destroy();\n\t\t\tsuper.detach();\n\t\t}\n\t\tdestroy() {\n\t\t\tthis.#destroy();\n\t\t\tsuper.destroy();\n\t\t}\n\t\t#destroy() {\n\t\t\tthis.#disconnect?.abort();\n\t\t\tthis.#disconnect = null;\n\t\t\tthis.#error = null;\n\t\t}\n\t\t#init(target) {\n\t\t\tthis.#destroy();\n\t\t\tthis.#disconnect = new AbortController();\n\t\t\tconst signal = this.#disconnect.signal;\n\t\t\ttarget.addEventListener(\"error\", (event) => {\n\t\t\t\tevent.stopImmediatePropagation();\n\t\t\t\tconst native = target.error;\n\t\t\t\tif (!native) return;\n\t\t\t\tconst error = new MediaError(native.message, native.code, true);\n\t\t\t\tthis.#error = error;\n\t\t\t\tthis.dispatchEvent(new ErrorEvent(\"error\", {\n\t\t\t\t\terror,\n\t\t\t\t\tmessage: error.message\n\t\t\t\t}));\n\t\t\t}, { signal });\n\t\t\ttarget.addEventListener(\"emptied\", () => {\n\t\t\t\tthis.#error = null;\n\t\t\t}, { signal });\n\t\t}\n\t}\n\treturn NativeHlsMediaErrors;\n}\n//#endregion\nexport { NativeHlsMediaErrorsMixin };\n\n//# sourceMappingURL=errors.js.map","import { DelegateMixin } from \"../../../core/media/delegate.js\";\nimport { VideoProxy } from \"../proxy.js\";\nimport { CustomVideoElement } from \"../custom-media-element/index.js\";\nimport { NativeHlsMediaErrorsMixin } from \"./errors.js\";\n//#region src/dom/media/native-hls/index.ts\nvar NativeHlsMediaDelegateBase = class extends EventTarget {\n\t#target = null;\n\t#src = \"\";\n\t#preload = \"metadata\";\n\tget target() {\n\t\treturn this.#target;\n\t}\n\tget engine() {\n\t\treturn null;\n\t}\n\tget src() {\n\t\treturn this.#src;\n\t}\n\tset src(src) {\n\t\tthis.#src = src;\n\t\tif (this.#target) this.#target.src = src;\n\t}\n\tget preload() {\n\t\treturn this.#preload ?? \"metadata\";\n\t}\n\tset preload(value) {\n\t\tthis.#preload = value;\n\t\tif (this.#target) this.#target.preload = value;\n\t}\n\tattach(target) {\n\t\tthis.#target = target;\n\t\tif (this.preload !== this.#target.preload) this.#target.preload = this.preload;\n\t\tif (this.src !== this.#target.src) this.#target.src = this.src;\n\t}\n\tdetach() {\n\t\tthis.#target = null;\n\t}\n\tdestroy() {\n\t\tthis.#target = null;\n\t}\n};\nvar NativeHlsMediaDelegate = class extends NativeHlsMediaErrorsMixin(NativeHlsMediaDelegateBase) {};\nvar NativeHlsCustomMedia = class extends DelegateMixin(CustomVideoElement, NativeHlsMediaDelegate) {};\nvar NativeHlsMedia = class extends DelegateMixin(VideoProxy, NativeHlsMediaDelegate) {};\n//#endregion\nexport { NativeHlsCustomMedia, NativeHlsMedia, NativeHlsMediaDelegate };\n\n//# sourceMappingURL=index.js.map"],"mappings":";;;;AACA,IAAI,aAAa,MAAM,mBAAmB,MAAM;CAC/C,OAAO,oBAAoB;CAC3B,OAAO,oBAAoB;CAC3B,OAAO,mBAAmB;CAC1B,OAAO,8BAA8B;CACrC,OAAO,sBAAsB;CAC7B,OAAO,mBAAmB;CAC1B,OAAO,kBAAkB;EACxB,GAAG;EACH,GAAG;EACH,GAAG;EACH,GAAG;EACH,GAAG;EACH;CACD;CACA;CACA;CACA;CACA;CACA,YAAY,SAAS,OAAO,WAAW,kBAAkB,OAAO,SAAS;AACxE,QAAM,QAAQ;AACd,OAAK,OAAO;AACZ,OAAK,OAAO;AACZ,OAAK,UAAU;AACf,OAAK,QAAQ,UAAU,QAAQ,WAAW,qBAAqB,QAAQ,WAAW;AAClF,MAAI,CAAC,KAAK,QAAS,MAAK,UAAU,WAAW,gBAAgB,KAAK,SAAS;;;;;;ACxB7E,SAAS,0BAA0B,WAAW;CAC7C,MAAM,6BAA6B,UAAU;EAC5C,cAAc;EACd,SAAS;EACT,IAAI,QAAQ;AACX,UAAO,MAAKA;;EAEb,OAAO,QAAQ;AACd,SAAM,OAAO,OAAO;AACpB,SAAKC,KAAM,OAAO;;EAEnB,SAAS;AACR,SAAKC,SAAU;AACf,SAAM,QAAQ;;EAEf,UAAU;AACT,SAAKA,SAAU;AACf,SAAM,SAAS;;EAEhB,WAAW;AACV,SAAKC,YAAa,OAAO;AACzB,SAAKA,aAAc;AACnB,SAAKH,QAAS;;EAEf,MAAM,QAAQ;AACb,SAAKE,SAAU;AACf,SAAKC,aAAc,IAAI,iBAAiB;GACxC,MAAM,SAAS,MAAKA,WAAY;AAChC,UAAO,iBAAiB,UAAU,UAAU;AAC3C,UAAM,0BAA0B;IAChC,MAAM,SAAS,OAAO;AACtB,QAAI,CAAC,OAAQ;IACb,MAAM,QAAQ,IAAI,WAAW,OAAO,SAAS,OAAO,MAAM,KAAK;AAC/D,UAAKH,QAAS;AACd,SAAK,cAAc,IAAI,WAAW,SAAS;KAC1C;KACA,SAAS,MAAM;KACf,CAAC,CAAC;MACD,EAAE,QAAQ,CAAC;AACd,UAAO,iBAAiB,iBAAiB;AACxC,UAAKA,QAAS;MACZ,EAAE,QAAQ,CAAC;;;AAGhB,QAAO;;;;;ACzCR,IAAI,6BAA6B,cAAc,YAAY;CAC1D,UAAU;CACV,OAAO;CACP,WAAW;CACX,IAAI,SAAS;AACZ,SAAO,MAAKI;;CAEb,IAAI,SAAS;AACZ,SAAO;;CAER,IAAI,MAAM;AACT,SAAO,MAAKC;;CAEb,IAAI,IAAI,KAAK;AACZ,QAAKA,MAAO;AACZ,MAAI,MAAKD,OAAS,OAAKA,OAAQ,MAAM;;CAEtC,IAAI,UAAU;AACb,SAAO,MAAKE,WAAY;;CAEzB,IAAI,QAAQ,OAAO;AAClB,QAAKA,UAAW;AAChB,MAAI,MAAKF,OAAS,OAAKA,OAAQ,UAAU;;CAE1C,OAAO,QAAQ;AACd,QAAKA,SAAU;AACf,MAAI,KAAK,YAAY,MAAKA,OAAQ,QAAS,OAAKA,OAAQ,UAAU,KAAK;AACvE,MAAI,KAAK,QAAQ,MAAKA,OAAQ,IAAK,OAAKA,OAAQ,MAAM,KAAK;;CAE5D,SAAS;AACR,QAAKA,SAAU;;CAEhB,UAAU;AACT,QAAKA,SAAU;;;AAGjB,IAAI,yBAAyB,cAAc,0BAA0B,2BAA2B,CAAC;AACjG,IAAI,uBAAuB,cAAc,cAAc,oBAAoB,uBAAuB,CAAC"}
@@ -1,2 +1,2 @@
1
- import{R as e,a as t,i as n,t as r}from"./create-player-DSGjDLpM.js";import{s as i}from"./context-CdkhXQEw.js";const{ProviderMixin:a}=r({features:e});i(class extends a(t){static{this.tagName=`audio-player`}}),i(n);
2
- //# sourceMappingURL=player-DlGhe0FD.js.map
1
+ import{R as e,a as t,i as n,t as r}from"./create-player-BqU8r8H4.js";import{s as i}from"./context-CdkhXQEw.js";const{ProviderMixin:a}=r({features:e});i(class extends a(t){static{this.tagName=`audio-player`}}),i(n);
2
+ //# sourceMappingURL=player-Cz9-_j7J.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"player-DlGhe0FD.js","names":[],"sources":["../src/define/audio/player.ts"],"sourcesContent":["import { audioFeatures } from '@videojs/core/dom';\nimport { MediaContainerElement } from '../../media/container-element';\nimport { createPlayer } from '../../player/create-player';\nimport { MediaElement } from '../../ui/media-element';\nimport { safeDefine } from '../safe-define';\n\nconst { ProviderMixin } = createPlayer({\n features: audioFeatures,\n});\n\nexport class AudioPlayerElement extends ProviderMixin(MediaElement) {\n static readonly tagName = 'audio-player';\n}\n\n// Provider must be defined before consumer for context handshake during upgrade.\nsafeDefine(AudioPlayerElement);\nsafeDefine(MediaContainerElement);\n\ndeclare global {\n interface HTMLElementTagNameMap {\n [AudioPlayerElement.tagName]: AudioPlayerElement;\n }\n}\n"],"mappings":"+GAMA,KAAM,CAAE,iBAAkB,EAAa,CACrC,SAAU,EACX,CAAC,CAOF,EALA,cAAwC,EAAc,EAAa,AAAC,qBACxC,iBAIE,CAC9B,EAAW,EAAsB"}
1
+ {"version":3,"file":"player-Cz9-_j7J.js","names":[],"sources":["../src/define/audio/player.ts"],"sourcesContent":["import { audioFeatures } from '@videojs/core/dom';\nimport { MediaContainerElement } from '../../media/container-element';\nimport { createPlayer } from '../../player/create-player';\nimport { MediaElement } from '../../ui/media-element';\nimport { safeDefine } from '../safe-define';\n\nconst { ProviderMixin } = createPlayer({\n features: audioFeatures,\n});\n\nexport class AudioPlayerElement extends ProviderMixin(MediaElement) {\n static readonly tagName = 'audio-player';\n}\n\n// Provider must be defined before consumer for context handshake during upgrade.\nsafeDefine(AudioPlayerElement);\nsafeDefine(MediaContainerElement);\n\ndeclare global {\n interface HTMLElementTagNameMap {\n [AudioPlayerElement.tagName]: AudioPlayerElement;\n }\n}\n"],"mappings":"+GAMA,KAAM,CAAE,iBAAkB,EAAa,CACrC,SAAU,EACX,CAAC,CAOF,EALA,cAAwC,EAAc,EAAa,AAAC,qBACxC,iBAIE,CAC9B,EAAW,EAAsB"}
@@ -1,4 +1,4 @@
1
- import { a as MediaElement, i as MediaContainerElement, t as createPlayer, z as audioFeatures } from "./create-player-Cz5Y4DmL.js";
1
+ import { a as MediaElement, i as MediaContainerElement, t as createPlayer, z as audioFeatures } from "./create-player-p9xCO0yC.js";
2
2
  import { s as safeDefine } from "./context-BjrbhiSk.js";
3
3
 
4
4
  //#region src/define/audio/player.ts
@@ -12,4 +12,4 @@ safeDefine(AudioPlayerElement);
12
12
  safeDefine(MediaContainerElement);
13
13
 
14
14
  //#endregion
15
- //# sourceMappingURL=player-XArb4DyB.js.map
15
+ //# sourceMappingURL=player-D0bhjT8X.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"player-XArb4DyB.js","names":[],"sources":["../src/define/audio/player.ts"],"sourcesContent":["import { audioFeatures } from '@videojs/core/dom';\nimport { MediaContainerElement } from '../../media/container-element';\nimport { createPlayer } from '../../player/create-player';\nimport { MediaElement } from '../../ui/media-element';\nimport { safeDefine } from '../safe-define';\n\nconst { ProviderMixin } = createPlayer({\n features: audioFeatures,\n});\n\nexport class AudioPlayerElement extends ProviderMixin(MediaElement) {\n static readonly tagName = 'audio-player';\n}\n\n// Provider must be defined before consumer for context handshake during upgrade.\nsafeDefine(AudioPlayerElement);\nsafeDefine(MediaContainerElement);\n\ndeclare global {\n interface HTMLElementTagNameMap {\n [AudioPlayerElement.tagName]: AudioPlayerElement;\n }\n}\n"],"mappings":";;;;AAMA,MAAM,EAAE,kBAAkB,aAAa,EACrC,UAAU,eACX,CAAC;AAEF,IAAa,qBAAb,cAAwC,cAAc,aAAa,CAAC;;iBACxC;;;AAI5B,WAAW,mBAAmB;AAC9B,WAAW,sBAAsB"}
1
+ {"version":3,"file":"player-D0bhjT8X.js","names":[],"sources":["../src/define/audio/player.ts"],"sourcesContent":["import { audioFeatures } from '@videojs/core/dom';\nimport { MediaContainerElement } from '../../media/container-element';\nimport { createPlayer } from '../../player/create-player';\nimport { MediaElement } from '../../ui/media-element';\nimport { safeDefine } from '../safe-define';\n\nconst { ProviderMixin } = createPlayer({\n features: audioFeatures,\n});\n\nexport class AudioPlayerElement extends ProviderMixin(MediaElement) {\n static readonly tagName = 'audio-player';\n}\n\n// Provider must be defined before consumer for context handshake during upgrade.\nsafeDefine(AudioPlayerElement);\nsafeDefine(MediaContainerElement);\n\ndeclare global {\n interface HTMLElementTagNameMap {\n [AudioPlayerElement.tagName]: AudioPlayerElement;\n }\n}\n"],"mappings":";;;;AAMA,MAAM,EAAE,kBAAkB,aAAa,EACrC,UAAU,eACX,CAAC;AAEF,IAAa,qBAAb,cAAwC,cAAc,aAAa,CAAC;;iBACxC;;;AAI5B,WAAW,mBAAmB;AAC9B,WAAW,sBAAsB"}
@@ -1,2 +1,2 @@
1
- import{a as e,c as t,d as n,f as r,i,l as a,m as o,n as s,o as c,p as l,r as u,s as d,t as f,u as p}from"./volume-slider-BSbnD5gg.js";import{B as m,F as h,M as g,N as _,a as v,c as y,i as b,j as x,k as S,n as C,o as w,s as T,t as E}from"./create-player-DSGjDLpM.js";import{i as D,r as O,s as k}from"./context-CdkhXQEw.js";const{ProviderMixin:A}=E({features:m});k(class extends A(v){static{this.tagName=`video-player`}}),k(b),k(class extends v{constructor(...e){super(...e),this.delay=o.defaultProps.delay}static{this.tagName=`media-buffering-indicator`}static{this.properties={delay:{type:Number}}}#e=new o;#t=new C(this,O,_);#n=null;connectedCallback(){super.connectedCallback(),this.#n=new AbortController,this.#e.state.subscribe(()=>this.requestUpdate(),{signal:this.#n.signal})}disconnectedCallback(){super.disconnectedCallback(),this.#n?.abort(),this.#n=null}willUpdate(e){super.willUpdate(e),this.#e.setProps(this)}update(e){super.update(e);let t=this.#t.value;t&&(this.#e.update(t),y(this,this.#e.state.current,l))}}),k(class extends s{constructor(...e){super(...e),this.core=new r,this.stateAttrMap=n,this.mediaState=new C(this,O,h)}static{this.tagName=`media-captions-button`}activate(e){this.core.toggle(e)}});const j=D(Symbol(`@videojs/controls`));var M=class extends v{static{this.tagName=`media-controls`}#e=new p;#t=new C(this,O,S);#n=new w(this,{context:j});connectedCallback(){super.connectedCallback()}update(e){super.update(e);let t=this.#t.value;if(!t)return;this.#e.setMedia(t);let n=this.#e.getState();y(this,n,a),this.#n.setValue({state:n,stateAttrMap:a})}},N=class extends f{constructor(...e){super(...e),this.consumer=new T(this,{context:j,subscribe:!0})}static{this.tagName=`media-controls-group`}connectedCallback(){super.connectedCallback(),(this.hasAttribute(`aria-label`)||this.hasAttribute(`aria-labelledby`))&&this.setAttribute(`role`,`group`)}};k(M),k(N),k(class extends s{constructor(...e){super(...e),this.core=new t,this.stateAttrMap=d,this.mediaState=new C(this,O,x)}static{this.tagName=`media-fullscreen-button`}activate(e){this.core.toggle(e)}}),k(class extends s{constructor(...t){super(...t),this.core=new c,this.stateAttrMap=e,this.mediaState=new C(this,O,g)}static{this.tagName=`media-pip-button`}activate(e){this.core.toggle(e)}});var P=class extends v{connectedCallback(){super.connectedCallback()}update(e){super.update(e);let t=this.mediaState.value;if(!t)return;this.core.setMedia(t);let n=this.core.getState();y(this,n,this.stateAttrMap)}};k(class extends P{constructor(...e){super(...e),this.core=new i,this.stateAttrMap=u,this.mediaState=new C(this,O,_)}static{this.tagName=`media-poster`}});
2
- //# sourceMappingURL=poster-Crn2YX3_.js.map
1
+ import{a as e,c as t,d as n,f as r,i,l as a,m as o,n as s,o as c,p as l,r as u,s as d,t as f,u as p}from"./volume-slider-D18sXnIA.js";import{B as m,F as h,M as g,N as _,a as v,c as y,i as b,j as x,k as S,n as C,o as w,s as T,t as E}from"./create-player-BqU8r8H4.js";import{i as D,r as O,s as k}from"./context-CdkhXQEw.js";const{ProviderMixin:A}=E({features:m});k(class extends A(v){static{this.tagName=`video-player`}}),k(b),k(class extends v{constructor(...e){super(...e),this.delay=o.defaultProps.delay}static{this.tagName=`media-buffering-indicator`}static{this.properties={delay:{type:Number}}}#e=new o;#t=new C(this,O,_);#n=null;connectedCallback(){super.connectedCallback(),this.#n=new AbortController,this.#e.state.subscribe(()=>this.requestUpdate(),{signal:this.#n.signal})}disconnectedCallback(){super.disconnectedCallback(),this.#n?.abort(),this.#n=null}willUpdate(e){super.willUpdate(e),this.#e.setProps(this)}update(e){super.update(e);let t=this.#t.value;t&&(this.#e.update(t),y(this,this.#e.state.current,l))}}),k(class extends s{constructor(...e){super(...e),this.core=new r,this.stateAttrMap=n,this.mediaState=new C(this,O,h)}static{this.tagName=`media-captions-button`}activate(e){this.core.toggle(e)}});const j=D(Symbol(`@videojs/controls`));var M=class extends v{static{this.tagName=`media-controls`}#e=new p;#t=new C(this,O,S);#n=new w(this,{context:j});connectedCallback(){super.connectedCallback()}update(e){super.update(e);let t=this.#t.value;if(!t)return;this.#e.setMedia(t);let n=this.#e.getState();y(this,n,a),this.#n.setValue({state:n,stateAttrMap:a})}},N=class extends f{constructor(...e){super(...e),this.consumer=new T(this,{context:j,subscribe:!0})}static{this.tagName=`media-controls-group`}connectedCallback(){super.connectedCallback(),(this.hasAttribute(`aria-label`)||this.hasAttribute(`aria-labelledby`))&&this.setAttribute(`role`,`group`)}};k(M),k(N),k(class extends s{constructor(...e){super(...e),this.core=new t,this.stateAttrMap=d,this.mediaState=new C(this,O,x)}static{this.tagName=`media-fullscreen-button`}activate(e){this.core.toggle(e)}}),k(class extends s{constructor(...t){super(...t),this.core=new c,this.stateAttrMap=e,this.mediaState=new C(this,O,g)}static{this.tagName=`media-pip-button`}activate(e){this.core.toggle(e)}});var P=class extends v{connectedCallback(){super.connectedCallback()}update(e){super.update(e);let t=this.mediaState.value;if(!t)return;this.core.setMedia(t);let n=this.core.getState();y(this,n,this.stateAttrMap)}};k(class extends P{constructor(...e){super(...e),this.core=new i,this.stateAttrMap=u,this.mediaState=new C(this,O,_)}static{this.tagName=`media-poster`}});
2
+ //# sourceMappingURL=poster-2FPYTjyv.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"poster-Crn2YX3_.js","names":["#core","#state","#disconnect","createContext","#core","#mediaState","#provider","ContextProvider","ContextConsumer"],"sources":["../src/define/video/player.ts","../src/ui/buffering-indicator/buffering-indicator-element.ts","../src/define/ui/buffering-indicator.ts","../src/ui/captions-button/captions-button-element.ts","../src/define/ui/captions-button.ts","../src/ui/controls/context.ts","../src/ui/controls/controls-element.ts","../src/ui/controls/controls-group-element.ts","../src/define/ui/controls.ts","../src/ui/fullscreen-button/fullscreen-button-element.ts","../src/define/ui/fullscreen-button.ts","../src/ui/pip-button/pip-button-element.ts","../src/define/ui/pip-button.ts","../src/ui/media-ui-element.ts","../src/ui/poster/poster-element.ts","../src/define/ui/poster.ts"],"sourcesContent":["import { videoFeatures } from '@videojs/core/dom';\nimport { MediaContainerElement } from '../../media/container-element';\nimport { createPlayer } from '../../player/create-player';\nimport { MediaElement } from '../../ui/media-element';\nimport { safeDefine } from '../safe-define';\n\nconst { ProviderMixin } = createPlayer({\n features: videoFeatures,\n});\n\nexport class VideoPlayerElement extends ProviderMixin(MediaElement) {\n static readonly tagName = 'video-player';\n}\n\n// Provider must be defined before consumer for context handshake during upgrade.\nsafeDefine(VideoPlayerElement);\nsafeDefine(MediaContainerElement);\n\ndeclare global {\n interface HTMLElementTagNameMap {\n [VideoPlayerElement.tagName]: VideoPlayerElement;\n }\n}\n","import { BufferingIndicatorCore, BufferingIndicatorDataAttrs } from '@videojs/core';\nimport { applyStateDataAttrs, logMissingFeature, selectPlayback } from '@videojs/core/dom';\nimport type { PropertyDeclarationMap, PropertyValues } from '@videojs/element';\n\nimport { playerContext } from '../../player/context';\nimport { PlayerController } from '../../player/player-controller';\nimport { MediaElement } from '../media-element';\n\nexport class BufferingIndicatorElement extends MediaElement {\n static readonly tagName = 'media-buffering-indicator';\n\n static override properties = {\n delay: { type: Number },\n } satisfies PropertyDeclarationMap<keyof BufferingIndicatorCore.Props>;\n\n delay = BufferingIndicatorCore.defaultProps.delay;\n\n readonly #core = new BufferingIndicatorCore();\n readonly #state = new PlayerController(this, playerContext, selectPlayback);\n\n #disconnect: AbortController | null = null;\n\n override connectedCallback(): void {\n super.connectedCallback();\n\n this.#disconnect = new AbortController();\n\n this.#core.state.subscribe(() => this.requestUpdate(), {\n signal: this.#disconnect.signal,\n });\n\n if (__DEV__ && !this.#state.value) {\n logMissingFeature(this.localName, this.#state.displayName!);\n }\n }\n\n override disconnectedCallback(): void {\n super.disconnectedCallback();\n this.#disconnect?.abort();\n this.#disconnect = null;\n }\n\n protected override willUpdate(changed: PropertyValues): void {\n super.willUpdate(changed);\n this.#core.setProps(this);\n }\n\n protected override update(changed: PropertyValues): void {\n super.update(changed);\n\n const media = this.#state.value;\n\n if (!media) return;\n\n this.#core.update(media);\n applyStateDataAttrs(this, this.#core.state.current, BufferingIndicatorDataAttrs);\n }\n}\n","import { BufferingIndicatorElement } from '../../ui/buffering-indicator/buffering-indicator-element';\nimport { safeDefine } from '../safe-define';\n\nsafeDefine(BufferingIndicatorElement);\n\ndeclare global {\n interface HTMLElementTagNameMap {\n [BufferingIndicatorElement.tagName]: BufferingIndicatorElement;\n }\n}\n","import { CaptionsButtonCore, CaptionsButtonDataAttrs, type MediaTextTrackState } from '@videojs/core';\nimport { selectTextTrack } from '@videojs/core/dom';\n\nimport { playerContext } from '../../player/context';\nimport { PlayerController } from '../../player/player-controller';\nimport { MediaButtonElement } from '../media-button-element';\n\nexport class CaptionsButtonElement extends MediaButtonElement<CaptionsButtonCore> {\n static readonly tagName = 'media-captions-button';\n\n protected readonly core = new CaptionsButtonCore();\n protected readonly stateAttrMap = CaptionsButtonDataAttrs;\n protected readonly mediaState = new PlayerController(this, playerContext, selectTextTrack);\n\n protected activate(state: MediaTextTrackState): void {\n this.core.toggle(state);\n }\n}\n","import { CaptionsButtonElement } from '../../ui/captions-button/captions-button-element';\nimport { safeDefine } from '../safe-define';\n\nsafeDefine(CaptionsButtonElement);\n\ndeclare global {\n interface HTMLElementTagNameMap {\n [CaptionsButtonElement.tagName]: CaptionsButtonElement;\n }\n}\n","import type { ControlsState, StateAttrMap } from '@videojs/core';\nimport { createContext } from '@videojs/element/context';\n\nexport interface ControlsContextValue {\n state: ControlsState;\n stateAttrMap: StateAttrMap<ControlsState>;\n}\n\nconst CONTROLS_CONTEXT_KEY = Symbol('@videojs/controls');\n\nexport const controlsContext = createContext<ControlsContextValue>(CONTROLS_CONTEXT_KEY);\n","import { ControlsCore, ControlsDataAttrs } from '@videojs/core';\nimport { applyStateDataAttrs, logMissingFeature, selectControls } from '@videojs/core/dom';\nimport type { PropertyValues } from '@videojs/element';\nimport { ContextProvider } from '@videojs/element/context';\n\nimport { playerContext } from '../../player/context';\nimport { PlayerController } from '../../player/player-controller';\nimport { MediaElement } from '../media-element';\nimport { controlsContext } from './context';\n\nexport class ControlsElement extends MediaElement {\n static readonly tagName = 'media-controls';\n\n readonly #core = new ControlsCore();\n readonly #mediaState = new PlayerController(this, playerContext, selectControls);\n readonly #provider = new ContextProvider(this, { context: controlsContext });\n\n override connectedCallback(): void {\n super.connectedCallback();\n\n if (__DEV__ && !this.#mediaState.value && this.#mediaState.displayName) {\n logMissingFeature(this.localName, this.#mediaState.displayName);\n }\n }\n\n protected override update(_changed: PropertyValues): void {\n super.update(_changed);\n\n const media = this.#mediaState.value;\n if (!media) return;\n\n this.#core.setMedia(media);\n const state = this.#core.getState();\n\n applyStateDataAttrs(this, state, ControlsDataAttrs);\n\n this.#provider.setValue({\n state,\n stateAttrMap: ControlsDataAttrs,\n });\n }\n}\n","import type { ControlsState } from '@videojs/core';\nimport { ContextConsumer } from '@videojs/element/context';\n\nimport { ContextPartElement } from '../context-part-element';\nimport { controlsContext } from './context';\n\nexport class ControlsGroupElement extends ContextPartElement<ControlsState> {\n static readonly tagName = 'media-controls-group';\n\n protected readonly consumer = new ContextConsumer(this, { context: controlsContext, subscribe: true });\n\n override connectedCallback(): void {\n super.connectedCallback();\n\n if (this.hasAttribute('aria-label') || this.hasAttribute('aria-labelledby')) {\n this.setAttribute('role', 'group');\n }\n }\n}\n","import { ControlsElement } from '../../ui/controls/controls-element';\nimport { ControlsGroupElement } from '../../ui/controls/controls-group-element';\nimport { safeDefine } from '../safe-define';\n\nsafeDefine(ControlsElement);\nsafeDefine(ControlsGroupElement);\n\ndeclare global {\n interface HTMLElementTagNameMap {\n [ControlsElement.tagName]: ControlsElement;\n }\n}\n","import { FullscreenButtonCore, FullscreenButtonDataAttrs, type MediaFullscreenState } from '@videojs/core';\nimport { selectFullscreen } from '@videojs/core/dom';\n\nimport { playerContext } from '../../player/context';\nimport { PlayerController } from '../../player/player-controller';\nimport { MediaButtonElement } from '../media-button-element';\n\nexport class FullscreenButtonElement extends MediaButtonElement<FullscreenButtonCore> {\n static readonly tagName = 'media-fullscreen-button';\n\n protected readonly core = new FullscreenButtonCore();\n protected readonly stateAttrMap = FullscreenButtonDataAttrs;\n protected readonly mediaState = new PlayerController(this, playerContext, selectFullscreen);\n\n protected activate(state: MediaFullscreenState): void {\n this.core.toggle(state);\n }\n}\n","import { FullscreenButtonElement } from '../../ui/fullscreen-button/fullscreen-button-element';\nimport { safeDefine } from '../safe-define';\n\nsafeDefine(FullscreenButtonElement);\n\ndeclare global {\n interface HTMLElementTagNameMap {\n [FullscreenButtonElement.tagName]: FullscreenButtonElement;\n }\n}\n","import { type MediaPictureInPictureState, PiPButtonCore, PiPButtonDataAttrs } from '@videojs/core';\nimport { selectPiP } from '@videojs/core/dom';\n\nimport { playerContext } from '../../player/context';\nimport { PlayerController } from '../../player/player-controller';\nimport { MediaButtonElement } from '../media-button-element';\n\nexport class PiPButtonElement extends MediaButtonElement<PiPButtonCore> {\n static readonly tagName = 'media-pip-button';\n\n protected readonly core = new PiPButtonCore();\n protected readonly stateAttrMap = PiPButtonDataAttrs;\n protected readonly mediaState = new PlayerController(this, playerContext, selectPiP);\n\n protected activate(state: MediaPictureInPictureState): void {\n this.core.toggle(state);\n }\n}\n","import { PiPButtonElement } from '../../ui/pip-button/pip-button-element';\nimport { safeDefine } from '../safe-define';\n\nsafeDefine(PiPButtonElement);\n\ndeclare global {\n interface HTMLElementTagNameMap {\n [PiPButtonElement.tagName]: PiPButtonElement;\n }\n}\n","import type { InferComponentState, InferMediaState, MediaUIComponent, StateAttrMap } from '@videojs/core';\nimport { applyStateDataAttrs, logMissingFeature } from '@videojs/core/dom';\nimport type { PropertyValues } from '@videojs/element';\n\nimport type { PlayerController } from '../player/player-controller';\nimport { MediaElement } from './media-element';\n\n/** Abstract base for HTML custom elements that display media state with data attributes. */\nexport abstract class MediaUIElement<Core extends MediaUIComponent> extends MediaElement {\n protected abstract readonly core: Core;\n protected abstract readonly stateAttrMap: StateAttrMap<InferComponentState<Core>>;\n protected abstract readonly mediaState: PlayerController<any, InferMediaState<Core> | undefined>;\n\n override connectedCallback(): void {\n super.connectedCallback();\n\n if (__DEV__ && !this.mediaState.value && this.mediaState.displayName) {\n logMissingFeature(this.localName, this.mediaState.displayName);\n }\n }\n\n protected override update(changed: PropertyValues): void {\n super.update(changed);\n\n const media = this.mediaState.value;\n\n if (!media) return;\n\n this.core.setMedia(media);\n const state = this.core.getState();\n applyStateDataAttrs(this, state, this.stateAttrMap);\n }\n}\n","import { PosterCore, PosterDataAttrs } from '@videojs/core';\nimport { selectPlayback } from '@videojs/core/dom';\n\nimport { playerContext } from '../../player/context';\nimport { PlayerController } from '../../player/player-controller';\nimport { MediaUIElement } from '../media-ui-element';\n\nexport class PosterElement extends MediaUIElement<PosterCore> {\n static readonly tagName = 'media-poster';\n\n protected readonly core = new PosterCore();\n protected readonly stateAttrMap = PosterDataAttrs;\n protected readonly mediaState = new PlayerController(this, playerContext, selectPlayback);\n}\n","import { PosterElement } from '../../ui/poster/poster-element';\nimport { safeDefine } from '../safe-define';\n\nsafeDefine(PosterElement);\n\ndeclare global {\n interface HTMLElementTagNameMap {\n [PosterElement.tagName]: PosterElement;\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"poster-2FPYTjyv.js","names":["#core","#state","#disconnect","createContext","#core","#mediaState","#provider","ContextProvider","ContextConsumer"],"sources":["../src/define/video/player.ts","../src/ui/buffering-indicator/buffering-indicator-element.ts","../src/define/ui/buffering-indicator.ts","../src/ui/captions-button/captions-button-element.ts","../src/define/ui/captions-button.ts","../src/ui/controls/context.ts","../src/ui/controls/controls-element.ts","../src/ui/controls/controls-group-element.ts","../src/define/ui/controls.ts","../src/ui/fullscreen-button/fullscreen-button-element.ts","../src/define/ui/fullscreen-button.ts","../src/ui/pip-button/pip-button-element.ts","../src/define/ui/pip-button.ts","../src/ui/media-ui-element.ts","../src/ui/poster/poster-element.ts","../src/define/ui/poster.ts"],"sourcesContent":["import { videoFeatures } from '@videojs/core/dom';\nimport { MediaContainerElement } from '../../media/container-element';\nimport { createPlayer } from '../../player/create-player';\nimport { MediaElement } from '../../ui/media-element';\nimport { safeDefine } from '../safe-define';\n\nconst { ProviderMixin } = createPlayer({\n features: videoFeatures,\n});\n\nexport class VideoPlayerElement extends ProviderMixin(MediaElement) {\n static readonly tagName = 'video-player';\n}\n\n// Provider must be defined before consumer for context handshake during upgrade.\nsafeDefine(VideoPlayerElement);\nsafeDefine(MediaContainerElement);\n\ndeclare global {\n interface HTMLElementTagNameMap {\n [VideoPlayerElement.tagName]: VideoPlayerElement;\n }\n}\n","import { BufferingIndicatorCore, BufferingIndicatorDataAttrs } from '@videojs/core';\nimport { applyStateDataAttrs, logMissingFeature, selectPlayback } from '@videojs/core/dom';\nimport type { PropertyDeclarationMap, PropertyValues } from '@videojs/element';\n\nimport { playerContext } from '../../player/context';\nimport { PlayerController } from '../../player/player-controller';\nimport { MediaElement } from '../media-element';\n\nexport class BufferingIndicatorElement extends MediaElement {\n static readonly tagName = 'media-buffering-indicator';\n\n static override properties = {\n delay: { type: Number },\n } satisfies PropertyDeclarationMap<keyof BufferingIndicatorCore.Props>;\n\n delay = BufferingIndicatorCore.defaultProps.delay;\n\n readonly #core = new BufferingIndicatorCore();\n readonly #state = new PlayerController(this, playerContext, selectPlayback);\n\n #disconnect: AbortController | null = null;\n\n override connectedCallback(): void {\n super.connectedCallback();\n\n this.#disconnect = new AbortController();\n\n this.#core.state.subscribe(() => this.requestUpdate(), {\n signal: this.#disconnect.signal,\n });\n\n if (__DEV__ && !this.#state.value) {\n logMissingFeature(this.localName, this.#state.displayName!);\n }\n }\n\n override disconnectedCallback(): void {\n super.disconnectedCallback();\n this.#disconnect?.abort();\n this.#disconnect = null;\n }\n\n protected override willUpdate(changed: PropertyValues): void {\n super.willUpdate(changed);\n this.#core.setProps(this);\n }\n\n protected override update(changed: PropertyValues): void {\n super.update(changed);\n\n const media = this.#state.value;\n\n if (!media) return;\n\n this.#core.update(media);\n applyStateDataAttrs(this, this.#core.state.current, BufferingIndicatorDataAttrs);\n }\n}\n","import { BufferingIndicatorElement } from '../../ui/buffering-indicator/buffering-indicator-element';\nimport { safeDefine } from '../safe-define';\n\nsafeDefine(BufferingIndicatorElement);\n\ndeclare global {\n interface HTMLElementTagNameMap {\n [BufferingIndicatorElement.tagName]: BufferingIndicatorElement;\n }\n}\n","import { CaptionsButtonCore, CaptionsButtonDataAttrs, type MediaTextTrackState } from '@videojs/core';\nimport { selectTextTrack } from '@videojs/core/dom';\n\nimport { playerContext } from '../../player/context';\nimport { PlayerController } from '../../player/player-controller';\nimport { MediaButtonElement } from '../media-button-element';\n\nexport class CaptionsButtonElement extends MediaButtonElement<CaptionsButtonCore> {\n static readonly tagName = 'media-captions-button';\n\n protected readonly core = new CaptionsButtonCore();\n protected readonly stateAttrMap = CaptionsButtonDataAttrs;\n protected readonly mediaState = new PlayerController(this, playerContext, selectTextTrack);\n\n protected activate(state: MediaTextTrackState): void {\n this.core.toggle(state);\n }\n}\n","import { CaptionsButtonElement } from '../../ui/captions-button/captions-button-element';\nimport { safeDefine } from '../safe-define';\n\nsafeDefine(CaptionsButtonElement);\n\ndeclare global {\n interface HTMLElementTagNameMap {\n [CaptionsButtonElement.tagName]: CaptionsButtonElement;\n }\n}\n","import type { ControlsState, StateAttrMap } from '@videojs/core';\nimport { createContext } from '@videojs/element/context';\n\nexport interface ControlsContextValue {\n state: ControlsState;\n stateAttrMap: StateAttrMap<ControlsState>;\n}\n\nconst CONTROLS_CONTEXT_KEY = Symbol('@videojs/controls');\n\nexport const controlsContext = createContext<ControlsContextValue>(CONTROLS_CONTEXT_KEY);\n","import { ControlsCore, ControlsDataAttrs } from '@videojs/core';\nimport { applyStateDataAttrs, logMissingFeature, selectControls } from '@videojs/core/dom';\nimport type { PropertyValues } from '@videojs/element';\nimport { ContextProvider } from '@videojs/element/context';\n\nimport { playerContext } from '../../player/context';\nimport { PlayerController } from '../../player/player-controller';\nimport { MediaElement } from '../media-element';\nimport { controlsContext } from './context';\n\nexport class ControlsElement extends MediaElement {\n static readonly tagName = 'media-controls';\n\n readonly #core = new ControlsCore();\n readonly #mediaState = new PlayerController(this, playerContext, selectControls);\n readonly #provider = new ContextProvider(this, { context: controlsContext });\n\n override connectedCallback(): void {\n super.connectedCallback();\n\n if (__DEV__ && !this.#mediaState.value && this.#mediaState.displayName) {\n logMissingFeature(this.localName, this.#mediaState.displayName);\n }\n }\n\n protected override update(_changed: PropertyValues): void {\n super.update(_changed);\n\n const media = this.#mediaState.value;\n if (!media) return;\n\n this.#core.setMedia(media);\n const state = this.#core.getState();\n\n applyStateDataAttrs(this, state, ControlsDataAttrs);\n\n this.#provider.setValue({\n state,\n stateAttrMap: ControlsDataAttrs,\n });\n }\n}\n","import type { ControlsState } from '@videojs/core';\nimport { ContextConsumer } from '@videojs/element/context';\n\nimport { ContextPartElement } from '../context-part-element';\nimport { controlsContext } from './context';\n\nexport class ControlsGroupElement extends ContextPartElement<ControlsState> {\n static readonly tagName = 'media-controls-group';\n\n protected readonly consumer = new ContextConsumer(this, { context: controlsContext, subscribe: true });\n\n override connectedCallback(): void {\n super.connectedCallback();\n\n if (this.hasAttribute('aria-label') || this.hasAttribute('aria-labelledby')) {\n this.setAttribute('role', 'group');\n }\n }\n}\n","import { ControlsElement } from '../../ui/controls/controls-element';\nimport { ControlsGroupElement } from '../../ui/controls/controls-group-element';\nimport { safeDefine } from '../safe-define';\n\nsafeDefine(ControlsElement);\nsafeDefine(ControlsGroupElement);\n\ndeclare global {\n interface HTMLElementTagNameMap {\n [ControlsElement.tagName]: ControlsElement;\n }\n}\n","import { FullscreenButtonCore, FullscreenButtonDataAttrs, type MediaFullscreenState } from '@videojs/core';\nimport { selectFullscreen } from '@videojs/core/dom';\n\nimport { playerContext } from '../../player/context';\nimport { PlayerController } from '../../player/player-controller';\nimport { MediaButtonElement } from '../media-button-element';\n\nexport class FullscreenButtonElement extends MediaButtonElement<FullscreenButtonCore> {\n static readonly tagName = 'media-fullscreen-button';\n\n protected readonly core = new FullscreenButtonCore();\n protected readonly stateAttrMap = FullscreenButtonDataAttrs;\n protected readonly mediaState = new PlayerController(this, playerContext, selectFullscreen);\n\n protected activate(state: MediaFullscreenState): void {\n this.core.toggle(state);\n }\n}\n","import { FullscreenButtonElement } from '../../ui/fullscreen-button/fullscreen-button-element';\nimport { safeDefine } from '../safe-define';\n\nsafeDefine(FullscreenButtonElement);\n\ndeclare global {\n interface HTMLElementTagNameMap {\n [FullscreenButtonElement.tagName]: FullscreenButtonElement;\n }\n}\n","import { type MediaPictureInPictureState, PiPButtonCore, PiPButtonDataAttrs } from '@videojs/core';\nimport { selectPiP } from '@videojs/core/dom';\n\nimport { playerContext } from '../../player/context';\nimport { PlayerController } from '../../player/player-controller';\nimport { MediaButtonElement } from '../media-button-element';\n\nexport class PiPButtonElement extends MediaButtonElement<PiPButtonCore> {\n static readonly tagName = 'media-pip-button';\n\n protected readonly core = new PiPButtonCore();\n protected readonly stateAttrMap = PiPButtonDataAttrs;\n protected readonly mediaState = new PlayerController(this, playerContext, selectPiP);\n\n protected activate(state: MediaPictureInPictureState): void {\n this.core.toggle(state);\n }\n}\n","import { PiPButtonElement } from '../../ui/pip-button/pip-button-element';\nimport { safeDefine } from '../safe-define';\n\nsafeDefine(PiPButtonElement);\n\ndeclare global {\n interface HTMLElementTagNameMap {\n [PiPButtonElement.tagName]: PiPButtonElement;\n }\n}\n","import type { InferComponentState, InferMediaState, MediaUIComponent, StateAttrMap } from '@videojs/core';\nimport { applyStateDataAttrs, logMissingFeature } from '@videojs/core/dom';\nimport type { PropertyValues } from '@videojs/element';\n\nimport type { PlayerController } from '../player/player-controller';\nimport { MediaElement } from './media-element';\n\n/** Abstract base for HTML custom elements that display media state with data attributes. */\nexport abstract class MediaUIElement<Core extends MediaUIComponent> extends MediaElement {\n protected abstract readonly core: Core;\n protected abstract readonly stateAttrMap: StateAttrMap<InferComponentState<Core>>;\n protected abstract readonly mediaState: PlayerController<any, InferMediaState<Core> | undefined>;\n\n override connectedCallback(): void {\n super.connectedCallback();\n\n if (__DEV__ && !this.mediaState.value && this.mediaState.displayName) {\n logMissingFeature(this.localName, this.mediaState.displayName);\n }\n }\n\n protected override update(changed: PropertyValues): void {\n super.update(changed);\n\n const media = this.mediaState.value;\n\n if (!media) return;\n\n this.core.setMedia(media);\n const state = this.core.getState();\n applyStateDataAttrs(this, state, this.stateAttrMap);\n }\n}\n","import { PosterCore, PosterDataAttrs } from '@videojs/core';\nimport { selectPlayback } from '@videojs/core/dom';\n\nimport { playerContext } from '../../player/context';\nimport { PlayerController } from '../../player/player-controller';\nimport { MediaUIElement } from '../media-ui-element';\n\nexport class PosterElement extends MediaUIElement<PosterCore> {\n static readonly tagName = 'media-poster';\n\n protected readonly core = new PosterCore();\n protected readonly stateAttrMap = PosterDataAttrs;\n protected readonly mediaState = new PlayerController(this, playerContext, selectPlayback);\n}\n","import { PosterElement } from '../../ui/poster/poster-element';\nimport { safeDefine } from '../safe-define';\n\nsafeDefine(PosterElement);\n\ndeclare global {\n interface HTMLElementTagNameMap {\n [PosterElement.tagName]: PosterElement;\n }\n}\n"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
- import { a as PiPButtonDataAttrs, c as FullscreenButtonCore, d as CaptionsButtonDataAttrs, f as CaptionsButtonCore, i as PosterCore, l as ControlsDataAttrs, m as BufferingIndicatorCore, n as MediaButtonElement, o as PiPButtonCore, p as BufferingIndicatorDataAttrs, r as PosterDataAttrs, s as FullscreenButtonDataAttrs, t as ContextPartElement, u as ControlsCore } from "./volume-slider-CxGbFVVX.js";
2
- import { A as selectControls, I as selectTextTrack, M as selectFullscreen, N as selectPiP, P as selectPlayback, V as videoFeatures, a as MediaElement, c as applyStateDataAttrs, i as MediaContainerElement, l as logMissingFeature, n as PlayerController, o as ContextProvider, s as ContextConsumer, t as createPlayer } from "./create-player-Cz5Y4DmL.js";
1
+ import { a as PiPButtonDataAttrs, c as FullscreenButtonCore, d as CaptionsButtonDataAttrs, f as CaptionsButtonCore, i as PosterCore, l as ControlsDataAttrs, m as BufferingIndicatorCore, n as MediaButtonElement, o as PiPButtonCore, p as BufferingIndicatorDataAttrs, r as PosterDataAttrs, s as FullscreenButtonDataAttrs, t as ContextPartElement, u as ControlsCore } from "./volume-slider-Co5X4Z1t.js";
2
+ import { A as selectControls, I as selectTextTrack, M as selectFullscreen, N as selectPiP, P as selectPlayback, V as videoFeatures, a as MediaElement, c as applyStateDataAttrs, i as MediaContainerElement, l as logMissingFeature, n as PlayerController, o as ContextProvider, s as ContextConsumer, t as createPlayer } from "./create-player-p9xCO0yC.js";
3
3
  import { i as createContext, r as playerContext, s as safeDefine } from "./context-BjrbhiSk.js";
4
4
 
5
5
  //#region src/define/video/player.ts
@@ -212,4 +212,4 @@ var PosterElement = class extends MediaUIElement {
212
212
  safeDefine(PosterElement);
213
213
 
214
214
  //#endregion
215
- //# sourceMappingURL=poster-BUuGv2Va.js.map
215
+ //# sourceMappingURL=poster-gVT-J1-z.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"poster-BUuGv2Va.js","names":["#core","#state","#disconnect","#core","#mediaState","#provider"],"sources":["../src/define/video/player.ts","../src/ui/buffering-indicator/buffering-indicator-element.ts","../src/define/ui/buffering-indicator.ts","../src/ui/captions-button/captions-button-element.ts","../src/define/ui/captions-button.ts","../src/ui/controls/context.ts","../src/ui/controls/controls-element.ts","../src/ui/controls/controls-group-element.ts","../src/define/ui/controls.ts","../src/ui/fullscreen-button/fullscreen-button-element.ts","../src/define/ui/fullscreen-button.ts","../src/ui/pip-button/pip-button-element.ts","../src/define/ui/pip-button.ts","../src/ui/media-ui-element.ts","../src/ui/poster/poster-element.ts","../src/define/ui/poster.ts"],"sourcesContent":["import { videoFeatures } from '@videojs/core/dom';\nimport { MediaContainerElement } from '../../media/container-element';\nimport { createPlayer } from '../../player/create-player';\nimport { MediaElement } from '../../ui/media-element';\nimport { safeDefine } from '../safe-define';\n\nconst { ProviderMixin } = createPlayer({\n features: videoFeatures,\n});\n\nexport class VideoPlayerElement extends ProviderMixin(MediaElement) {\n static readonly tagName = 'video-player';\n}\n\n// Provider must be defined before consumer for context handshake during upgrade.\nsafeDefine(VideoPlayerElement);\nsafeDefine(MediaContainerElement);\n\ndeclare global {\n interface HTMLElementTagNameMap {\n [VideoPlayerElement.tagName]: VideoPlayerElement;\n }\n}\n","import { BufferingIndicatorCore, BufferingIndicatorDataAttrs } from '@videojs/core';\nimport { applyStateDataAttrs, logMissingFeature, selectPlayback } from '@videojs/core/dom';\nimport type { PropertyDeclarationMap, PropertyValues } from '@videojs/element';\n\nimport { playerContext } from '../../player/context';\nimport { PlayerController } from '../../player/player-controller';\nimport { MediaElement } from '../media-element';\n\nexport class BufferingIndicatorElement extends MediaElement {\n static readonly tagName = 'media-buffering-indicator';\n\n static override properties = {\n delay: { type: Number },\n } satisfies PropertyDeclarationMap<keyof BufferingIndicatorCore.Props>;\n\n delay = BufferingIndicatorCore.defaultProps.delay;\n\n readonly #core = new BufferingIndicatorCore();\n readonly #state = new PlayerController(this, playerContext, selectPlayback);\n\n #disconnect: AbortController | null = null;\n\n override connectedCallback(): void {\n super.connectedCallback();\n\n this.#disconnect = new AbortController();\n\n this.#core.state.subscribe(() => this.requestUpdate(), {\n signal: this.#disconnect.signal,\n });\n\n if (__DEV__ && !this.#state.value) {\n logMissingFeature(this.localName, this.#state.displayName!);\n }\n }\n\n override disconnectedCallback(): void {\n super.disconnectedCallback();\n this.#disconnect?.abort();\n this.#disconnect = null;\n }\n\n protected override willUpdate(changed: PropertyValues): void {\n super.willUpdate(changed);\n this.#core.setProps(this);\n }\n\n protected override update(changed: PropertyValues): void {\n super.update(changed);\n\n const media = this.#state.value;\n\n if (!media) return;\n\n this.#core.update(media);\n applyStateDataAttrs(this, this.#core.state.current, BufferingIndicatorDataAttrs);\n }\n}\n","import { BufferingIndicatorElement } from '../../ui/buffering-indicator/buffering-indicator-element';\nimport { safeDefine } from '../safe-define';\n\nsafeDefine(BufferingIndicatorElement);\n\ndeclare global {\n interface HTMLElementTagNameMap {\n [BufferingIndicatorElement.tagName]: BufferingIndicatorElement;\n }\n}\n","import { CaptionsButtonCore, CaptionsButtonDataAttrs, type MediaTextTrackState } from '@videojs/core';\nimport { selectTextTrack } from '@videojs/core/dom';\n\nimport { playerContext } from '../../player/context';\nimport { PlayerController } from '../../player/player-controller';\nimport { MediaButtonElement } from '../media-button-element';\n\nexport class CaptionsButtonElement extends MediaButtonElement<CaptionsButtonCore> {\n static readonly tagName = 'media-captions-button';\n\n protected readonly core = new CaptionsButtonCore();\n protected readonly stateAttrMap = CaptionsButtonDataAttrs;\n protected readonly mediaState = new PlayerController(this, playerContext, selectTextTrack);\n\n protected activate(state: MediaTextTrackState): void {\n this.core.toggle(state);\n }\n}\n","import { CaptionsButtonElement } from '../../ui/captions-button/captions-button-element';\nimport { safeDefine } from '../safe-define';\n\nsafeDefine(CaptionsButtonElement);\n\ndeclare global {\n interface HTMLElementTagNameMap {\n [CaptionsButtonElement.tagName]: CaptionsButtonElement;\n }\n}\n","import type { ControlsState, StateAttrMap } from '@videojs/core';\nimport { createContext } from '@videojs/element/context';\n\nexport interface ControlsContextValue {\n state: ControlsState;\n stateAttrMap: StateAttrMap<ControlsState>;\n}\n\nconst CONTROLS_CONTEXT_KEY = Symbol('@videojs/controls');\n\nexport const controlsContext = createContext<ControlsContextValue>(CONTROLS_CONTEXT_KEY);\n","import { ControlsCore, ControlsDataAttrs } from '@videojs/core';\nimport { applyStateDataAttrs, logMissingFeature, selectControls } from '@videojs/core/dom';\nimport type { PropertyValues } from '@videojs/element';\nimport { ContextProvider } from '@videojs/element/context';\n\nimport { playerContext } from '../../player/context';\nimport { PlayerController } from '../../player/player-controller';\nimport { MediaElement } from '../media-element';\nimport { controlsContext } from './context';\n\nexport class ControlsElement extends MediaElement {\n static readonly tagName = 'media-controls';\n\n readonly #core = new ControlsCore();\n readonly #mediaState = new PlayerController(this, playerContext, selectControls);\n readonly #provider = new ContextProvider(this, { context: controlsContext });\n\n override connectedCallback(): void {\n super.connectedCallback();\n\n if (__DEV__ && !this.#mediaState.value && this.#mediaState.displayName) {\n logMissingFeature(this.localName, this.#mediaState.displayName);\n }\n }\n\n protected override update(_changed: PropertyValues): void {\n super.update(_changed);\n\n const media = this.#mediaState.value;\n if (!media) return;\n\n this.#core.setMedia(media);\n const state = this.#core.getState();\n\n applyStateDataAttrs(this, state, ControlsDataAttrs);\n\n this.#provider.setValue({\n state,\n stateAttrMap: ControlsDataAttrs,\n });\n }\n}\n","import type { ControlsState } from '@videojs/core';\nimport { ContextConsumer } from '@videojs/element/context';\n\nimport { ContextPartElement } from '../context-part-element';\nimport { controlsContext } from './context';\n\nexport class ControlsGroupElement extends ContextPartElement<ControlsState> {\n static readonly tagName = 'media-controls-group';\n\n protected readonly consumer = new ContextConsumer(this, { context: controlsContext, subscribe: true });\n\n override connectedCallback(): void {\n super.connectedCallback();\n\n if (this.hasAttribute('aria-label') || this.hasAttribute('aria-labelledby')) {\n this.setAttribute('role', 'group');\n }\n }\n}\n","import { ControlsElement } from '../../ui/controls/controls-element';\nimport { ControlsGroupElement } from '../../ui/controls/controls-group-element';\nimport { safeDefine } from '../safe-define';\n\nsafeDefine(ControlsElement);\nsafeDefine(ControlsGroupElement);\n\ndeclare global {\n interface HTMLElementTagNameMap {\n [ControlsElement.tagName]: ControlsElement;\n }\n}\n","import { FullscreenButtonCore, FullscreenButtonDataAttrs, type MediaFullscreenState } from '@videojs/core';\nimport { selectFullscreen } from '@videojs/core/dom';\n\nimport { playerContext } from '../../player/context';\nimport { PlayerController } from '../../player/player-controller';\nimport { MediaButtonElement } from '../media-button-element';\n\nexport class FullscreenButtonElement extends MediaButtonElement<FullscreenButtonCore> {\n static readonly tagName = 'media-fullscreen-button';\n\n protected readonly core = new FullscreenButtonCore();\n protected readonly stateAttrMap = FullscreenButtonDataAttrs;\n protected readonly mediaState = new PlayerController(this, playerContext, selectFullscreen);\n\n protected activate(state: MediaFullscreenState): void {\n this.core.toggle(state);\n }\n}\n","import { FullscreenButtonElement } from '../../ui/fullscreen-button/fullscreen-button-element';\nimport { safeDefine } from '../safe-define';\n\nsafeDefine(FullscreenButtonElement);\n\ndeclare global {\n interface HTMLElementTagNameMap {\n [FullscreenButtonElement.tagName]: FullscreenButtonElement;\n }\n}\n","import { type MediaPictureInPictureState, PiPButtonCore, PiPButtonDataAttrs } from '@videojs/core';\nimport { selectPiP } from '@videojs/core/dom';\n\nimport { playerContext } from '../../player/context';\nimport { PlayerController } from '../../player/player-controller';\nimport { MediaButtonElement } from '../media-button-element';\n\nexport class PiPButtonElement extends MediaButtonElement<PiPButtonCore> {\n static readonly tagName = 'media-pip-button';\n\n protected readonly core = new PiPButtonCore();\n protected readonly stateAttrMap = PiPButtonDataAttrs;\n protected readonly mediaState = new PlayerController(this, playerContext, selectPiP);\n\n protected activate(state: MediaPictureInPictureState): void {\n this.core.toggle(state);\n }\n}\n","import { PiPButtonElement } from '../../ui/pip-button/pip-button-element';\nimport { safeDefine } from '../safe-define';\n\nsafeDefine(PiPButtonElement);\n\ndeclare global {\n interface HTMLElementTagNameMap {\n [PiPButtonElement.tagName]: PiPButtonElement;\n }\n}\n","import type { InferComponentState, InferMediaState, MediaUIComponent, StateAttrMap } from '@videojs/core';\nimport { applyStateDataAttrs, logMissingFeature } from '@videojs/core/dom';\nimport type { PropertyValues } from '@videojs/element';\n\nimport type { PlayerController } from '../player/player-controller';\nimport { MediaElement } from './media-element';\n\n/** Abstract base for HTML custom elements that display media state with data attributes. */\nexport abstract class MediaUIElement<Core extends MediaUIComponent> extends MediaElement {\n protected abstract readonly core: Core;\n protected abstract readonly stateAttrMap: StateAttrMap<InferComponentState<Core>>;\n protected abstract readonly mediaState: PlayerController<any, InferMediaState<Core> | undefined>;\n\n override connectedCallback(): void {\n super.connectedCallback();\n\n if (__DEV__ && !this.mediaState.value && this.mediaState.displayName) {\n logMissingFeature(this.localName, this.mediaState.displayName);\n }\n }\n\n protected override update(changed: PropertyValues): void {\n super.update(changed);\n\n const media = this.mediaState.value;\n\n if (!media) return;\n\n this.core.setMedia(media);\n const state = this.core.getState();\n applyStateDataAttrs(this, state, this.stateAttrMap);\n }\n}\n","import { PosterCore, PosterDataAttrs } from '@videojs/core';\nimport { selectPlayback } from '@videojs/core/dom';\n\nimport { playerContext } from '../../player/context';\nimport { PlayerController } from '../../player/player-controller';\nimport { MediaUIElement } from '../media-ui-element';\n\nexport class PosterElement extends MediaUIElement<PosterCore> {\n static readonly tagName = 'media-poster';\n\n protected readonly core = new PosterCore();\n protected readonly stateAttrMap = PosterDataAttrs;\n protected readonly mediaState = new PlayerController(this, playerContext, selectPlayback);\n}\n","import { PosterElement } from '../../ui/poster/poster-element';\nimport { safeDefine } from '../safe-define';\n\nsafeDefine(PosterElement);\n\ndeclare global {\n interface HTMLElementTagNameMap {\n [PosterElement.tagName]: PosterElement;\n }\n}\n"],"mappings":";;;;;AAMA,MAAM,EAAE,kBAAkB,aAAa,EACrC,UAAU,eACX,CAAC;AAEF,IAAa,qBAAb,cAAwC,cAAc,aAAa,CAAC;;iBACxC;;;AAI5B,WAAW,mBAAmB;AAC9B,WAAW,sBAAsB;;;;ACRjC,IAAa,4BAAb,cAA+C,aAAa;;;eAOlD,uBAAuB,aAAa;;;iBANlB;;;oBAEG,EAC3B,OAAO,EAAE,MAAM,QAAQ,EACxB;;CAID,CAASA,OAAQ,IAAI,wBAAwB;CAC7C,CAASC,QAAS,IAAI,iBAAiB,MAAM,eAAe,eAAe;CAE3E,cAAsC;CAEtC,AAAS,oBAA0B;AACjC,QAAM,mBAAmB;AAEzB,QAAKC,aAAc,IAAI,iBAAiB;AAExC,QAAKF,KAAM,MAAM,gBAAgB,KAAK,eAAe,EAAE,EACrD,QAAQ,MAAKE,WAAY,QAC1B,CAAC;AAEF,MAAe,CAAC,MAAKD,MAAO,MAC1B,mBAAkB,KAAK,WAAW,MAAKA,MAAO,YAAa;;CAI/D,AAAS,uBAA6B;AACpC,QAAM,sBAAsB;AAC5B,QAAKC,YAAa,OAAO;AACzB,QAAKA,aAAc;;CAGrB,AAAmB,WAAW,SAA+B;AAC3D,QAAM,WAAW,QAAQ;AACzB,QAAKF,KAAM,SAAS,KAAK;;CAG3B,AAAmB,OAAO,SAA+B;AACvD,QAAM,OAAO,QAAQ;EAErB,MAAM,QAAQ,MAAKC,MAAO;AAE1B,MAAI,CAAC,MAAO;AAEZ,QAAKD,KAAM,OAAO,MAAM;AACxB,sBAAoB,MAAM,MAAKA,KAAM,MAAM,SAAS,4BAA4B;;;;;;ACpDpF,WAAW,0BAA0B;;;;ACIrC,IAAa,wBAAb,cAA2C,mBAAuC;;;cAGtD,IAAI,oBAAoB;sBAChB;oBACF,IAAI,iBAAiB,MAAM,eAAe,gBAAgB;;;iBAJhE;;CAM1B,AAAU,SAAS,OAAkC;AACnD,OAAK,KAAK,OAAO,MAAM;;;;;;ACZ3B,WAAW,sBAAsB;;;;ACKjC,MAAM,uBAAuB,OAAO,oBAAoB;AAExD,MAAa,kBAAkB,cAAoC,qBAAqB;;;;ACAxF,IAAa,kBAAb,cAAqC,aAAa;;iBACtB;;CAE1B,CAASG,OAAQ,IAAI,cAAc;CACnC,CAASC,aAAc,IAAI,iBAAiB,MAAM,eAAe,eAAe;CAChF,CAASC,WAAY,IAAI,gBAAgB,MAAM,EAAE,SAAS,iBAAiB,CAAC;CAE5E,AAAS,oBAA0B;AACjC,QAAM,mBAAmB;AAEzB,MAAe,CAAC,MAAKD,WAAY,SAAS,MAAKA,WAAY,YACzD,mBAAkB,KAAK,WAAW,MAAKA,WAAY,YAAY;;CAInE,AAAmB,OAAO,UAAgC;AACxD,QAAM,OAAO,SAAS;EAEtB,MAAM,QAAQ,MAAKA,WAAY;AAC/B,MAAI,CAAC,MAAO;AAEZ,QAAKD,KAAM,SAAS,MAAM;EAC1B,MAAM,QAAQ,MAAKA,KAAM,UAAU;AAEnC,sBAAoB,MAAM,OAAO,kBAAkB;AAEnD,QAAKE,SAAU,SAAS;GACtB;GACA,cAAc;GACf,CAAC;;;;;;ACjCN,IAAa,uBAAb,cAA0C,mBAAkC;;;kBAG5C,IAAI,gBAAgB,MAAM;GAAE,SAAS;GAAiB,WAAW;GAAM,CAAC;;;iBAF5E;;CAI1B,AAAS,oBAA0B;AACjC,QAAM,mBAAmB;AAEzB,MAAI,KAAK,aAAa,aAAa,IAAI,KAAK,aAAa,kBAAkB,CACzE,MAAK,aAAa,QAAQ,QAAQ;;;;;;ACXxC,WAAW,gBAAgB;AAC3B,WAAW,qBAAqB;;;;ACEhC,IAAa,0BAAb,cAA6C,mBAAyC;;;cAG1D,IAAI,sBAAsB;sBAClB;oBACF,IAAI,iBAAiB,MAAM,eAAe,iBAAiB;;;iBAJjE;;CAM1B,AAAU,SAAS,OAAmC;AACpD,OAAK,KAAK,OAAO,MAAM;;;;;;ACZ3B,WAAW,wBAAwB;;;;ACInC,IAAa,mBAAb,cAAsC,mBAAkC;;;cAG5C,IAAI,eAAe;sBACX;oBACF,IAAI,iBAAiB,MAAM,eAAe,UAAU;;;iBAJ1D;;CAM1B,AAAU,SAAS,OAAyC;AAC1D,OAAK,KAAK,OAAO,MAAM;;;;;;ACZ3B,WAAW,iBAAiB;;;;;ACK5B,IAAsB,iBAAtB,cAA4E,aAAa;CAKvF,AAAS,oBAA0B;AACjC,QAAM,mBAAmB;AAEzB,MAAe,CAAC,KAAK,WAAW,SAAS,KAAK,WAAW,YACvD,mBAAkB,KAAK,WAAW,KAAK,WAAW,YAAY;;CAIlE,AAAmB,OAAO,SAA+B;AACvD,QAAM,OAAO,QAAQ;EAErB,MAAM,QAAQ,KAAK,WAAW;AAE9B,MAAI,CAAC,MAAO;AAEZ,OAAK,KAAK,SAAS,MAAM;EACzB,MAAM,QAAQ,KAAK,KAAK,UAAU;AAClC,sBAAoB,MAAM,OAAO,KAAK,aAAa;;;;;;ACvBvD,IAAa,gBAAb,cAAmC,eAA2B;;;cAGlC,IAAI,YAAY;sBACR;oBACF,IAAI,iBAAiB,MAAM,eAAe,eAAe;;;iBAJ/D;;;;;;ACL5B,WAAW,cAAc"}
1
+ {"version":3,"file":"poster-gVT-J1-z.js","names":["#core","#state","#disconnect","#core","#mediaState","#provider"],"sources":["../src/define/video/player.ts","../src/ui/buffering-indicator/buffering-indicator-element.ts","../src/define/ui/buffering-indicator.ts","../src/ui/captions-button/captions-button-element.ts","../src/define/ui/captions-button.ts","../src/ui/controls/context.ts","../src/ui/controls/controls-element.ts","../src/ui/controls/controls-group-element.ts","../src/define/ui/controls.ts","../src/ui/fullscreen-button/fullscreen-button-element.ts","../src/define/ui/fullscreen-button.ts","../src/ui/pip-button/pip-button-element.ts","../src/define/ui/pip-button.ts","../src/ui/media-ui-element.ts","../src/ui/poster/poster-element.ts","../src/define/ui/poster.ts"],"sourcesContent":["import { videoFeatures } from '@videojs/core/dom';\nimport { MediaContainerElement } from '../../media/container-element';\nimport { createPlayer } from '../../player/create-player';\nimport { MediaElement } from '../../ui/media-element';\nimport { safeDefine } from '../safe-define';\n\nconst { ProviderMixin } = createPlayer({\n features: videoFeatures,\n});\n\nexport class VideoPlayerElement extends ProviderMixin(MediaElement) {\n static readonly tagName = 'video-player';\n}\n\n// Provider must be defined before consumer for context handshake during upgrade.\nsafeDefine(VideoPlayerElement);\nsafeDefine(MediaContainerElement);\n\ndeclare global {\n interface HTMLElementTagNameMap {\n [VideoPlayerElement.tagName]: VideoPlayerElement;\n }\n}\n","import { BufferingIndicatorCore, BufferingIndicatorDataAttrs } from '@videojs/core';\nimport { applyStateDataAttrs, logMissingFeature, selectPlayback } from '@videojs/core/dom';\nimport type { PropertyDeclarationMap, PropertyValues } from '@videojs/element';\n\nimport { playerContext } from '../../player/context';\nimport { PlayerController } from '../../player/player-controller';\nimport { MediaElement } from '../media-element';\n\nexport class BufferingIndicatorElement extends MediaElement {\n static readonly tagName = 'media-buffering-indicator';\n\n static override properties = {\n delay: { type: Number },\n } satisfies PropertyDeclarationMap<keyof BufferingIndicatorCore.Props>;\n\n delay = BufferingIndicatorCore.defaultProps.delay;\n\n readonly #core = new BufferingIndicatorCore();\n readonly #state = new PlayerController(this, playerContext, selectPlayback);\n\n #disconnect: AbortController | null = null;\n\n override connectedCallback(): void {\n super.connectedCallback();\n\n this.#disconnect = new AbortController();\n\n this.#core.state.subscribe(() => this.requestUpdate(), {\n signal: this.#disconnect.signal,\n });\n\n if (__DEV__ && !this.#state.value) {\n logMissingFeature(this.localName, this.#state.displayName!);\n }\n }\n\n override disconnectedCallback(): void {\n super.disconnectedCallback();\n this.#disconnect?.abort();\n this.#disconnect = null;\n }\n\n protected override willUpdate(changed: PropertyValues): void {\n super.willUpdate(changed);\n this.#core.setProps(this);\n }\n\n protected override update(changed: PropertyValues): void {\n super.update(changed);\n\n const media = this.#state.value;\n\n if (!media) return;\n\n this.#core.update(media);\n applyStateDataAttrs(this, this.#core.state.current, BufferingIndicatorDataAttrs);\n }\n}\n","import { BufferingIndicatorElement } from '../../ui/buffering-indicator/buffering-indicator-element';\nimport { safeDefine } from '../safe-define';\n\nsafeDefine(BufferingIndicatorElement);\n\ndeclare global {\n interface HTMLElementTagNameMap {\n [BufferingIndicatorElement.tagName]: BufferingIndicatorElement;\n }\n}\n","import { CaptionsButtonCore, CaptionsButtonDataAttrs, type MediaTextTrackState } from '@videojs/core';\nimport { selectTextTrack } from '@videojs/core/dom';\n\nimport { playerContext } from '../../player/context';\nimport { PlayerController } from '../../player/player-controller';\nimport { MediaButtonElement } from '../media-button-element';\n\nexport class CaptionsButtonElement extends MediaButtonElement<CaptionsButtonCore> {\n static readonly tagName = 'media-captions-button';\n\n protected readonly core = new CaptionsButtonCore();\n protected readonly stateAttrMap = CaptionsButtonDataAttrs;\n protected readonly mediaState = new PlayerController(this, playerContext, selectTextTrack);\n\n protected activate(state: MediaTextTrackState): void {\n this.core.toggle(state);\n }\n}\n","import { CaptionsButtonElement } from '../../ui/captions-button/captions-button-element';\nimport { safeDefine } from '../safe-define';\n\nsafeDefine(CaptionsButtonElement);\n\ndeclare global {\n interface HTMLElementTagNameMap {\n [CaptionsButtonElement.tagName]: CaptionsButtonElement;\n }\n}\n","import type { ControlsState, StateAttrMap } from '@videojs/core';\nimport { createContext } from '@videojs/element/context';\n\nexport interface ControlsContextValue {\n state: ControlsState;\n stateAttrMap: StateAttrMap<ControlsState>;\n}\n\nconst CONTROLS_CONTEXT_KEY = Symbol('@videojs/controls');\n\nexport const controlsContext = createContext<ControlsContextValue>(CONTROLS_CONTEXT_KEY);\n","import { ControlsCore, ControlsDataAttrs } from '@videojs/core';\nimport { applyStateDataAttrs, logMissingFeature, selectControls } from '@videojs/core/dom';\nimport type { PropertyValues } from '@videojs/element';\nimport { ContextProvider } from '@videojs/element/context';\n\nimport { playerContext } from '../../player/context';\nimport { PlayerController } from '../../player/player-controller';\nimport { MediaElement } from '../media-element';\nimport { controlsContext } from './context';\n\nexport class ControlsElement extends MediaElement {\n static readonly tagName = 'media-controls';\n\n readonly #core = new ControlsCore();\n readonly #mediaState = new PlayerController(this, playerContext, selectControls);\n readonly #provider = new ContextProvider(this, { context: controlsContext });\n\n override connectedCallback(): void {\n super.connectedCallback();\n\n if (__DEV__ && !this.#mediaState.value && this.#mediaState.displayName) {\n logMissingFeature(this.localName, this.#mediaState.displayName);\n }\n }\n\n protected override update(_changed: PropertyValues): void {\n super.update(_changed);\n\n const media = this.#mediaState.value;\n if (!media) return;\n\n this.#core.setMedia(media);\n const state = this.#core.getState();\n\n applyStateDataAttrs(this, state, ControlsDataAttrs);\n\n this.#provider.setValue({\n state,\n stateAttrMap: ControlsDataAttrs,\n });\n }\n}\n","import type { ControlsState } from '@videojs/core';\nimport { ContextConsumer } from '@videojs/element/context';\n\nimport { ContextPartElement } from '../context-part-element';\nimport { controlsContext } from './context';\n\nexport class ControlsGroupElement extends ContextPartElement<ControlsState> {\n static readonly tagName = 'media-controls-group';\n\n protected readonly consumer = new ContextConsumer(this, { context: controlsContext, subscribe: true });\n\n override connectedCallback(): void {\n super.connectedCallback();\n\n if (this.hasAttribute('aria-label') || this.hasAttribute('aria-labelledby')) {\n this.setAttribute('role', 'group');\n }\n }\n}\n","import { ControlsElement } from '../../ui/controls/controls-element';\nimport { ControlsGroupElement } from '../../ui/controls/controls-group-element';\nimport { safeDefine } from '../safe-define';\n\nsafeDefine(ControlsElement);\nsafeDefine(ControlsGroupElement);\n\ndeclare global {\n interface HTMLElementTagNameMap {\n [ControlsElement.tagName]: ControlsElement;\n }\n}\n","import { FullscreenButtonCore, FullscreenButtonDataAttrs, type MediaFullscreenState } from '@videojs/core';\nimport { selectFullscreen } from '@videojs/core/dom';\n\nimport { playerContext } from '../../player/context';\nimport { PlayerController } from '../../player/player-controller';\nimport { MediaButtonElement } from '../media-button-element';\n\nexport class FullscreenButtonElement extends MediaButtonElement<FullscreenButtonCore> {\n static readonly tagName = 'media-fullscreen-button';\n\n protected readonly core = new FullscreenButtonCore();\n protected readonly stateAttrMap = FullscreenButtonDataAttrs;\n protected readonly mediaState = new PlayerController(this, playerContext, selectFullscreen);\n\n protected activate(state: MediaFullscreenState): void {\n this.core.toggle(state);\n }\n}\n","import { FullscreenButtonElement } from '../../ui/fullscreen-button/fullscreen-button-element';\nimport { safeDefine } from '../safe-define';\n\nsafeDefine(FullscreenButtonElement);\n\ndeclare global {\n interface HTMLElementTagNameMap {\n [FullscreenButtonElement.tagName]: FullscreenButtonElement;\n }\n}\n","import { type MediaPictureInPictureState, PiPButtonCore, PiPButtonDataAttrs } from '@videojs/core';\nimport { selectPiP } from '@videojs/core/dom';\n\nimport { playerContext } from '../../player/context';\nimport { PlayerController } from '../../player/player-controller';\nimport { MediaButtonElement } from '../media-button-element';\n\nexport class PiPButtonElement extends MediaButtonElement<PiPButtonCore> {\n static readonly tagName = 'media-pip-button';\n\n protected readonly core = new PiPButtonCore();\n protected readonly stateAttrMap = PiPButtonDataAttrs;\n protected readonly mediaState = new PlayerController(this, playerContext, selectPiP);\n\n protected activate(state: MediaPictureInPictureState): void {\n this.core.toggle(state);\n }\n}\n","import { PiPButtonElement } from '../../ui/pip-button/pip-button-element';\nimport { safeDefine } from '../safe-define';\n\nsafeDefine(PiPButtonElement);\n\ndeclare global {\n interface HTMLElementTagNameMap {\n [PiPButtonElement.tagName]: PiPButtonElement;\n }\n}\n","import type { InferComponentState, InferMediaState, MediaUIComponent, StateAttrMap } from '@videojs/core';\nimport { applyStateDataAttrs, logMissingFeature } from '@videojs/core/dom';\nimport type { PropertyValues } from '@videojs/element';\n\nimport type { PlayerController } from '../player/player-controller';\nimport { MediaElement } from './media-element';\n\n/** Abstract base for HTML custom elements that display media state with data attributes. */\nexport abstract class MediaUIElement<Core extends MediaUIComponent> extends MediaElement {\n protected abstract readonly core: Core;\n protected abstract readonly stateAttrMap: StateAttrMap<InferComponentState<Core>>;\n protected abstract readonly mediaState: PlayerController<any, InferMediaState<Core> | undefined>;\n\n override connectedCallback(): void {\n super.connectedCallback();\n\n if (__DEV__ && !this.mediaState.value && this.mediaState.displayName) {\n logMissingFeature(this.localName, this.mediaState.displayName);\n }\n }\n\n protected override update(changed: PropertyValues): void {\n super.update(changed);\n\n const media = this.mediaState.value;\n\n if (!media) return;\n\n this.core.setMedia(media);\n const state = this.core.getState();\n applyStateDataAttrs(this, state, this.stateAttrMap);\n }\n}\n","import { PosterCore, PosterDataAttrs } from '@videojs/core';\nimport { selectPlayback } from '@videojs/core/dom';\n\nimport { playerContext } from '../../player/context';\nimport { PlayerController } from '../../player/player-controller';\nimport { MediaUIElement } from '../media-ui-element';\n\nexport class PosterElement extends MediaUIElement<PosterCore> {\n static readonly tagName = 'media-poster';\n\n protected readonly core = new PosterCore();\n protected readonly stateAttrMap = PosterDataAttrs;\n protected readonly mediaState = new PlayerController(this, playerContext, selectPlayback);\n}\n","import { PosterElement } from '../../ui/poster/poster-element';\nimport { safeDefine } from '../safe-define';\n\nsafeDefine(PosterElement);\n\ndeclare global {\n interface HTMLElementTagNameMap {\n [PosterElement.tagName]: PosterElement;\n }\n}\n"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import{G as e}from"./create-player-DSGjDLpM.js";import{n as t,r as n,t as r}from"./shadow-styles-62Yo__Ni.js";function i(e){let t=globalThis.document;if(!t)return null;let n=t.createElement(`template`);return n.innerHTML=e,n}function a(e,t){e.appendChild(e.ownerDocument.importNode(t.content,!0))}var o=`video-player{display:contents}video-player video,video-player [slot=poster]{width:100%;height:100%;display:block}video-player video::-webkit-media-text-track-container{transition:translate var(--media-caption-track-duration,0) ease-out;transition-delay:var(--media-caption-track-delay,0);translate:0 var(--media-caption-track-y,0);z-index:1;font-family:inherit;scale:.98}`;const s=t(`media-tooltip-group{display:contents}:host{width:100%;display:grid}.media-popover--volume:has(media-volume-slider[data-availability=unsupported]){display:none}`);var c=class extends e{static{this.shadowRootOptions={mode:`open`}}constructor(){if(super(),n(`__media-styles`,o),!this.shadowRoot){let e=this.constructor;this.attachShadow(e.shadowRootOptions),e.template&&a(this.shadowRoot,e.template);let t=[s];e.styles&&t.push(e.styles),r(this.shadowRoot,t)}}};export{i as n,c as t};
2
- //# sourceMappingURL=skin-element-Dk_f7DE8.js.map
1
+ import{G as e}from"./create-player-BqU8r8H4.js";import{n as t,r as n,t as r}from"./shadow-styles-62Yo__Ni.js";function i(e){let t=globalThis.document;if(!t)return null;let n=t.createElement(`template`);return n.innerHTML=e,n}function a(e,t){e.appendChild(e.ownerDocument.importNode(t.content,!0))}var o=`video-player{display:contents}video-player video,video-player [slot=poster]{width:100%;height:100%;display:block}video-player video::-webkit-media-text-track-container{transition:translate var(--media-caption-track-duration,0) ease-out;transition-delay:var(--media-caption-track-delay,0);translate:0 var(--media-caption-track-y,0);z-index:1;font-family:inherit;scale:.98}`;const s=t(`media-tooltip-group{display:contents}:host{width:100%;display:grid}.media-popover--volume:has(media-volume-slider[data-availability=unsupported]){display:none}`);var c=class extends e{static{this.shadowRootOptions={mode:`open`}}constructor(){if(super(),n(`__media-styles`,o),!this.shadowRoot){let e=this.constructor;this.attachShadow(e.shadowRootOptions),e.template&&a(this.shadowRoot,e.template);let t=[s];e.styles&&t.push(e.styles),r(this.shadowRoot,t)}}};export{i as n,c as t};
2
+ //# sourceMappingURL=skin-element-DB-cKAAx.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"skin-element-Dk_f7DE8.js","names":["sharedStyles","rootStyles"],"sources":["../../utils/dist/dom/template.js","../inline-css:src/define/base.js","../inline-css:src/define/shared.js","../src/define/skin-element.ts"],"sourcesContent":["//#region src/dom/template.ts\n/** Create an `HTMLTemplateElement` from an HTML string, or `null` when `document` is unavailable (SSR). */\nfunction createTemplate(html) {\n\tconst doc = globalThis.document;\n\tif (!doc) return null;\n\tconst template = doc.createElement(\"template\");\n\ttemplate.innerHTML = html;\n\treturn template;\n}\n/** Deep-clone a template's content into a container. */\nfunction renderTemplate(container, template) {\n\tcontainer.appendChild(container.ownerDocument.importNode(template.content, true));\n}\n//#endregion\nexport { createTemplate, renderTemplate };\n\n//# sourceMappingURL=template.js.map","export default \"video-player{display:contents}video-player video,video-player [slot=poster]{width:100%;height:100%;display:block}video-player video::-webkit-media-text-track-container{transition:translate var(--media-caption-track-duration,0) ease-out;transition-delay:var(--media-caption-track-delay,0);translate:0 var(--media-caption-track-y,0);z-index:1;font-family:inherit;scale:.98}\";","export default \"media-tooltip-group{display:contents}:host{width:100%;display:grid}.media-popover--volume:has(media-volume-slider[data-availability=unsupported]){display:none}\";","import { ReactiveElement } from '@videojs/element';\nimport {\n applyShadowStyles,\n createShadowStyle,\n ensureGlobalStyle,\n renderTemplate,\n type ShadowStyle,\n} from '@videojs/utils/dom';\nimport rootStyles from './base.css?inline';\nimport sharedStyles from './shared.css?inline';\n\nconst STYLES_ID = '__media-styles';\nconst sharedSheet = createShadowStyle(sharedStyles);\n\n/**\n * Base element for skin definitions. Attaches a shadow root, clones\n * `static template` into it, and applies shared + per-skin styles\n * via `adoptedStyleSheets` (or `<style>` fallback).\n */\nexport class SkinElement extends ReactiveElement {\n static shadowRootOptions: ShadowRootInit = { mode: 'open' };\n static styles?: ShadowStyle;\n static template?: HTMLTemplateElement | null;\n\n constructor() {\n super();\n\n ensureGlobalStyle(STYLES_ID, rootStyles);\n\n if (!this.shadowRoot) {\n const ctor = this.constructor as typeof SkinElement;\n this.attachShadow(ctor.shadowRootOptions);\n\n if (ctor.template) {\n renderTemplate(this.shadowRoot!, ctor.template);\n }\n\n const sheets: ShadowStyle[] = [sharedSheet];\n if (ctor.styles) {\n sheets.push(ctor.styles);\n }\n applyShadowStyles(this.shadowRoot!, sheets);\n }\n }\n}\n"],"mappings":"8GAEA,SAAS,EAAe,EAAM,CAC7B,IAAM,EAAM,WAAW,SACvB,GAAI,CAAC,EAAK,OAAO,KACjB,IAAM,EAAW,EAAI,cAAc,WAAW,CAE9C,MADA,GAAS,UAAY,EACd,EAGR,SAAS,EAAe,EAAW,EAAU,CAC5C,EAAU,YAAY,EAAU,cAAc,WAAW,EAAS,QAAS,GAAK,CAAC,CCXlF,IAAA,EAAe,sXEWf,MACM,EAAc,EDZL,kKCYoC,CAOnD,IAAa,EAAb,cAAiC,CAAgB,+BACJ,CAAE,KAAM,OAAQ,CAI3D,aAAc,CAKZ,GAJA,OAAO,CAEP,EAAkB,iBAAWC,EAAW,CAEpC,CAAC,KAAK,WAAY,CACpB,IAAM,EAAO,KAAK,YAClB,KAAK,aAAa,EAAK,kBAAkB,CAErC,EAAK,UACP,EAAe,KAAK,WAAa,EAAK,SAAS,CAGjD,IAAM,EAAwB,CAAC,EAAY,CACvC,EAAK,QACP,EAAO,KAAK,EAAK,OAAO,CAE1B,EAAkB,KAAK,WAAa,EAAO"}
1
+ {"version":3,"file":"skin-element-DB-cKAAx.js","names":["sharedStyles","rootStyles"],"sources":["../../utils/dist/dom/template.js","../inline-css:src/define/base.js","../inline-css:src/define/shared.js","../src/define/skin-element.ts"],"sourcesContent":["//#region src/dom/template.ts\n/** Create an `HTMLTemplateElement` from an HTML string, or `null` when `document` is unavailable (SSR). */\nfunction createTemplate(html) {\n\tconst doc = globalThis.document;\n\tif (!doc) return null;\n\tconst template = doc.createElement(\"template\");\n\ttemplate.innerHTML = html;\n\treturn template;\n}\n/** Deep-clone a template's content into a container. */\nfunction renderTemplate(container, template) {\n\tcontainer.appendChild(container.ownerDocument.importNode(template.content, true));\n}\n//#endregion\nexport { createTemplate, renderTemplate };\n\n//# sourceMappingURL=template.js.map","export default \"video-player{display:contents}video-player video,video-player [slot=poster]{width:100%;height:100%;display:block}video-player video::-webkit-media-text-track-container{transition:translate var(--media-caption-track-duration,0) ease-out;transition-delay:var(--media-caption-track-delay,0);translate:0 var(--media-caption-track-y,0);z-index:1;font-family:inherit;scale:.98}\";","export default \"media-tooltip-group{display:contents}:host{width:100%;display:grid}.media-popover--volume:has(media-volume-slider[data-availability=unsupported]){display:none}\";","import { ReactiveElement } from '@videojs/element';\nimport {\n applyShadowStyles,\n createShadowStyle,\n ensureGlobalStyle,\n renderTemplate,\n type ShadowStyle,\n} from '@videojs/utils/dom';\nimport rootStyles from './base.css?inline';\nimport sharedStyles from './shared.css?inline';\n\nconst STYLES_ID = '__media-styles';\nconst sharedSheet = createShadowStyle(sharedStyles);\n\n/**\n * Base element for skin definitions. Attaches a shadow root, clones\n * `static template` into it, and applies shared + per-skin styles\n * via `adoptedStyleSheets` (or `<style>` fallback).\n */\nexport class SkinElement extends ReactiveElement {\n static shadowRootOptions: ShadowRootInit = { mode: 'open' };\n static styles?: ShadowStyle;\n static template?: HTMLTemplateElement | null;\n\n constructor() {\n super();\n\n ensureGlobalStyle(STYLES_ID, rootStyles);\n\n if (!this.shadowRoot) {\n const ctor = this.constructor as typeof SkinElement;\n this.attachShadow(ctor.shadowRootOptions);\n\n if (ctor.template) {\n renderTemplate(this.shadowRoot!, ctor.template);\n }\n\n const sheets: ShadowStyle[] = [sharedSheet];\n if (ctor.styles) {\n sheets.push(ctor.styles);\n }\n applyShadowStyles(this.shadowRoot!, sheets);\n }\n }\n}\n"],"mappings":"8GAEA,SAAS,EAAe,EAAM,CAC7B,IAAM,EAAM,WAAW,SACvB,GAAI,CAAC,EAAK,OAAO,KACjB,IAAM,EAAW,EAAI,cAAc,WAAW,CAE9C,MADA,GAAS,UAAY,EACd,EAGR,SAAS,EAAe,EAAW,EAAU,CAC5C,EAAU,YAAY,EAAU,cAAc,WAAW,EAAS,QAAS,GAAK,CAAC,CCXlF,IAAA,EAAe,sXEWf,MACM,EAAc,EDZL,kKCYoC,CAOnD,IAAa,EAAb,cAAiC,CAAgB,+BACJ,CAAE,KAAM,OAAQ,CAI3D,aAAc,CAKZ,GAJA,OAAO,CAEP,EAAkB,iBAAWC,EAAW,CAEpC,CAAC,KAAK,WAAY,CACpB,IAAM,EAAO,KAAK,YAClB,KAAK,aAAa,EAAK,kBAAkB,CAErC,EAAK,UACP,EAAe,KAAK,WAAa,EAAK,SAAS,CAGjD,IAAM,EAAwB,CAAC,EAAY,CACvC,EAAK,QACP,EAAO,KAAK,EAAK,OAAO,CAE1B,EAAkB,KAAK,WAAa,EAAO"}
@@ -1,4 +1,4 @@
1
- import { K as ReactiveElement } from "./create-player-Cz5Y4DmL.js";
1
+ import { K as ReactiveElement } from "./create-player-p9xCO0yC.js";
2
2
  import { n as createShadowStyle, r as ensureGlobalStyle, t as applyShadowStyles } from "./shadow-styles-I-_QR-PM.js";
3
3
 
4
4
  //#region ../utils/dist/dom/template.js
@@ -52,4 +52,4 @@ var SkinElement = class extends ReactiveElement {
52
52
 
53
53
  //#endregion
54
54
  export { createTemplate as n, SkinElement as t };
55
- //# sourceMappingURL=skin-element-D40glySA.js.map
55
+ //# sourceMappingURL=skin-element-zakTHELS.js.map