@broadcastingplatforms/player 1.4.1 → 1.4.3

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.
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * BP Player (v1.4.1)
2
+ * BP Player (v1.4.3)
3
3
  * Universal video player web component
4
4
  */
5
5
  var Ub=Object.defineProperty;var _x=Object.getOwnPropertyDescriptor;var Fb=n=>{throw TypeError(n)};var kx=(n,e,t)=>e in n?Ub(n,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):n[e]=t;var Se=(n,e,t,i)=>{for(var s=i>1?void 0:i?_x(e,t):e,r=n.length-1,a;r>=0;r--)(a=n[r])&&(s=(i?a(e,t,s):a(s))||s);return i&&s&&Ub(e,t,s),s};var Pe=(n,e,t)=>kx(n,typeof e!="symbol"?e+"":e,t),sp=(n,e,t)=>e.has(n)||Fb("Cannot "+t);var P=(n,e,t)=>(sp(n,e,"read from private field"),t?t.call(n):e.get(n)),se=(n,e,t)=>e.has(n)?Fb("Cannot add the same private member more than once"):e instanceof WeakSet?e.add(n):e.set(n,t),F=(n,e,t,i)=>(sp(n,e,"write to private field"),i?i.call(n,t):e.set(n,t),t),pe=(n,e,t)=>(sp(n,e,"access private method"),t);var qd=globalThis,jd=qd.ShadowRoot&&(qd.ShadyCSS===void 0||qd.ShadyCSS.nativeShadow)&&"adoptedStyleSheets"in Document.prototype&&"replace"in CSSStyleSheet.prototype,rp=Symbol(),Bb=new WeakMap,Cl=class{constructor(e,t,i){if(this._$cssResult$=!0,i!==rp)throw Error("CSSResult is not constructable. Use `unsafeCSS` or `css` instead.");this.cssText=e,this.t=t}get styleSheet(){let e=this.o,t=this.t;if(jd&&e===void 0){let i=t!==void 0&&t.length===1;i&&(e=Bb.get(t)),e===void 0&&((this.o=e=new CSSStyleSheet).replaceSync(this.cssText),i&&Bb.set(t,e))}return e}toString(){return this.cssText}},$b=n=>new Cl(typeof n=="string"?n:n+"",void 0,rp),Il=(n,...e)=>{let t=n.length===1?n[0]:e.reduce((i,s,r)=>i+(a=>{if(a._$cssResult$===!0)return a.cssText;if(typeof a=="number")return a;throw Error("Value passed to 'css' function must be a 'css' function result: "+a+". Use 'unsafeCSS' to pass non-literal values, but take care to ensure page security.")})(s)+n[r+1],n[0]);return new Cl(t,n,rp)},Vb=(n,e)=>{if(jd)n.adoptedStyleSheets=e.map(t=>t instanceof CSSStyleSheet?t:t.styleSheet);else for(let t of e){let i=document.createElement("style"),s=qd.litNonce;s!==void 0&&i.setAttribute("nonce",s),i.textContent=t.cssText,n.appendChild(i)}},ap=jd?n=>n:n=>n instanceof CSSStyleSheet?(e=>{let t="";for(let i of e.cssRules)t+=i.cssText;return $b(t)})(n):n;var{is:Ax,defineProperty:Cx,getOwnPropertyDescriptor:Ix,getOwnPropertyNames:Rx,getOwnPropertySymbols:xx,getPrototypeOf:Lx}=Object,Cs=globalThis,Hb=Cs.trustedTypes,Px=Hb?Hb.emptyScript:"",op=Cs.reactiveElementPolyfillSupport,Rl=(n,e)=>n,xl={toAttribute(n,e){switch(e){case Boolean:n=n?Px:null;break;case Object:case Array:n=n==null?n:JSON.stringify(n)}return n},fromAttribute(n,e){let t=n;switch(e){case Boolean:t=n!==null;break;case Number:t=n===null?null:Number(n);break;case Object:case Array:try{t=JSON.parse(n)}catch{t=null}}return t}},Yd=(n,e)=>!Ax(n,e),Gb={attribute:!0,type:String,converter:xl,reflect:!1,useDefault:!1,hasChanged:Yd};Symbol.metadata??(Symbol.metadata=Symbol("metadata")),Cs.litPropertyMetadata??(Cs.litPropertyMetadata=new WeakMap);var is=class extends HTMLElement{static addInitializer(e){this._$Ei(),(this.l??(this.l=[])).push(e)}static get observedAttributes(){return this.finalize(),this._$Eh&&[...this._$Eh.keys()]}static createProperty(e,t=Gb){if(t.state&&(t.attribute=!1),this._$Ei(),this.prototype.hasOwnProperty(e)&&((t=Object.create(t)).wrapped=!0),this.elementProperties.set(e,t),!t.noAccessor){let i=Symbol(),s=this.getPropertyDescriptor(e,i,t);s!==void 0&&Cx(this.prototype,e,s)}}static getPropertyDescriptor(e,t,i){let{get:s,set:r}=Ix(this.prototype,e)??{get(){return this[t]},set(a){this[t]=a}};return{get:s,set(a){let o=s==null?void 0:s.call(this);r==null||r.call(this,a),this.requestUpdate(e,o,i)},configurable:!0,enumerable:!0}}static getPropertyOptions(e){return this.elementProperties.get(e)??Gb}static _$Ei(){if(this.hasOwnProperty(Rl("elementProperties")))return;let e=Lx(this);e.finalize(),e.l!==void 0&&(this.l=[...e.l]),this.elementProperties=new Map(e.elementProperties)}static finalize(){if(this.hasOwnProperty(Rl("finalized")))return;if(this.finalized=!0,this._$Ei(),this.hasOwnProperty(Rl("properties"))){let t=this.properties,i=[...Rx(t),...xx(t)];for(let s of i)this.createProperty(s,t[s])}let e=this[Symbol.metadata];if(e!==null){let t=litPropertyMetadata.get(e);if(t!==void 0)for(let[i,s]of t)this.elementProperties.set(i,s)}this._$Eh=new Map;for(let[t,i]of this.elementProperties){let s=this._$Eu(t,i);s!==void 0&&this._$Eh.set(s,t)}this.elementStyles=this.finalizeStyles(this.styles)}static finalizeStyles(e){let t=[];if(Array.isArray(e)){let i=new Set(e.flat(1/0).reverse());for(let s of i)t.unshift(ap(s))}else e!==void 0&&t.push(ap(e));return t}static _$Eu(e,t){let i=t.attribute;return i===!1?void 0:typeof i=="string"?i:typeof e=="string"?e.toLowerCase():void 0}constructor(){super(),this._$Ep=void 0,this.isUpdatePending=!1,this.hasUpdated=!1,this._$Em=null,this._$Ev()}_$Ev(){var e;this._$ES=new Promise(t=>this.enableUpdating=t),this._$AL=new Map,this._$E_(),this.requestUpdate(),(e=this.constructor.l)==null||e.forEach(t=>t(this))}addController(e){var t;(this._$EO??(this._$EO=new Set)).add(e),this.renderRoot!==void 0&&this.isConnected&&((t=e.hostConnected)==null||t.call(e))}removeController(e){var t;(t=this._$EO)==null||t.delete(e)}_$E_(){let e=new Map,t=this.constructor.elementProperties;for(let i of t.keys())this.hasOwnProperty(i)&&(e.set(i,this[i]),delete this[i]);e.size>0&&(this._$Ep=e)}createRenderRoot(){let e=this.shadowRoot??this.attachShadow(this.constructor.shadowRootOptions);return Vb(e,this.constructor.elementStyles),e}connectedCallback(){var e;this.renderRoot??(this.renderRoot=this.createRenderRoot()),this.enableUpdating(!0),(e=this._$EO)==null||e.forEach(t=>{var i;return(i=t.hostConnected)==null?void 0:i.call(t)})}enableUpdating(e){}disconnectedCallback(){var e;(e=this._$EO)==null||e.forEach(t=>{var i;return(i=t.hostDisconnected)==null?void 0:i.call(t)})}attributeChangedCallback(e,t,i){this._$AK(e,i)}_$ET(e,t){var r;let i=this.constructor.elementProperties.get(e),s=this.constructor._$Eu(e,i);if(s!==void 0&&i.reflect===!0){let a=(((r=i.converter)==null?void 0:r.toAttribute)!==void 0?i.converter:xl).toAttribute(t,i.type);this._$Em=e,a==null?this.removeAttribute(s):this.setAttribute(s,a),this._$Em=null}}_$AK(e,t){var r,a;let i=this.constructor,s=i._$Eh.get(e);if(s!==void 0&&this._$Em!==s){let o=i.getPropertyOptions(s),l=typeof o.converter=="function"?{fromAttribute:o.converter}:((r=o.converter)==null?void 0:r.fromAttribute)!==void 0?o.converter:xl;this._$Em=s;let c=l.fromAttribute(t,o.type);this[s]=c??((a=this._$Ej)==null?void 0:a.get(s))??c,this._$Em=null}}requestUpdate(e,t,i,s=!1,r){var a;if(e!==void 0){let o=this.constructor;if(s===!1&&(r=this[e]),i??(i=o.getPropertyOptions(e)),!((i.hasChanged??Yd)(r,t)||i.useDefault&&i.reflect&&r===((a=this._$Ej)==null?void 0:a.get(e))&&!this.hasAttribute(o._$Eu(e,i))))return;this.C(e,t,i)}this.isUpdatePending===!1&&(this._$ES=this._$EP())}C(e,t,{useDefault:i,reflect:s,wrapped:r},a){i&&!(this._$Ej??(this._$Ej=new Map)).has(e)&&(this._$Ej.set(e,a??t??this[e]),r!==!0||a!==void 0)||(this._$AL.has(e)||(this.hasUpdated||i||(t=void 0),this._$AL.set(e,t)),s===!0&&this._$Em!==e&&(this._$Eq??(this._$Eq=new Set)).add(e))}async _$EP(){this.isUpdatePending=!0;try{await this._$ES}catch(t){Promise.reject(t)}let e=this.scheduleUpdate();return e!=null&&await e,!this.isUpdatePending}scheduleUpdate(){return this.performUpdate()}performUpdate(){var i;if(!this.isUpdatePending)return;if(!this.hasUpdated){if(this.renderRoot??(this.renderRoot=this.createRenderRoot()),this._$Ep){for(let[r,a]of this._$Ep)this[r]=a;this._$Ep=void 0}let s=this.constructor.elementProperties;if(s.size>0)for(let[r,a]of s){let{wrapped:o}=a,l=this[r];o!==!0||this._$AL.has(r)||l===void 0||this.C(r,void 0,a,l)}}let e=!1,t=this._$AL;try{e=this.shouldUpdate(t),e?(this.willUpdate(t),(i=this._$EO)==null||i.forEach(s=>{var r;return(r=s.hostUpdate)==null?void 0:r.call(s)}),this.update(t)):this._$EM()}catch(s){throw e=!1,this._$EM(),s}e&&this._$AE(t)}willUpdate(e){}_$AE(e){var t;(t=this._$EO)==null||t.forEach(i=>{var s;return(s=i.hostUpdated)==null?void 0:s.call(i)}),this.hasUpdated||(this.hasUpdated=!0,this.firstUpdated(e)),this.updated(e)}_$EM(){this._$AL=new Map,this.isUpdatePending=!1}get updateComplete(){return this.getUpdateComplete()}getUpdateComplete(){return this._$ES}shouldUpdate(e){return!0}update(e){this._$Eq&&(this._$Eq=this._$Eq.forEach(t=>this._$ET(t,this[t]))),this._$EM()}updated(e){}firstUpdated(e){}};is.elementStyles=[],is.shadowRootOptions={mode:"open"},is[Rl("elementProperties")]=new Map,is[Rl("finalized")]=new Map,op==null||op({ReactiveElement:is}),(Cs.reactiveElementVersions??(Cs.reactiveElementVersions=[])).push("2.1.2");var Pl=globalThis,Kb=n=>n,zd=Pl.trustedTypes,Wb=zd?zd.createPolicy("lit-html",{createHTML:n=>n}):void 0,Xb="$lit$",Is=`lit$${Math.random().toFixed(9).slice(2)}$`,Jb="?"+Is,wx=`<${Jb}>`,Lr=document,wl=()=>Lr.createComment(""),Dl=n=>n===null||typeof n!="object"&&typeof n!="function",pp=Array.isArray,Dx=n=>pp(n)||typeof(n==null?void 0:n[Symbol.iterator])=="function",lp=`[
@@ -227,7 +227,7 @@ bp-player[waiting] {
227
227
  bp-player[has-error] {
228
228
  /* Styles when player has an error */
229
229
  }
230
- `;var cT=!1;function jx(){if(cT||(cT=!0,document.getElementById("bp-player-styles")))return;Bl();let n=document.createElement("style");n.id="bp-player-styles",n.textContent=lT,document.head.appendChild(n)}var Yx=["emptied","loadstart","play","playing","pause","waiting","seeking","seeked","timeupdate","durationchange","volumechange","ratechange","ended","loadedmetadata","loadeddata","canplay","canplaythrough","progress","error","resize"],ci=class extends li{constructor(){super(...arguments);this.autoplay=!1;this.defaultMuted=!1;this.loop=!1;this.scaling="letterbox";this.debug=!1;this._playerCore=null;this.containerRef=null;this.providerContainer=null;this.eventCleanup=[];this.stateReceivers=[];this._mutationObserver=null;this._videoRenditions=null;this._hasDispatchedReady=!1;this.handleMutation=t=>{for(let i of t)if(i.type==="childList"){for(let s of i.addedNodes)s.nodeType===Node.ELEMENT_NODE&&Ua(s,this.providerContainer,this.registerStateReceiver);for(let s of i.removedNodes)s.nodeType===Node.ELEMENT_NODE&&Ua(s,this.providerContainer,this.unregisterStateReceiver)}};this.registerStateReceiver=t=>{this.stateReceivers.includes(t)||(this.stateReceivers.push(t),this._playerCore&&eu(t,this._playerCore,this._playerCore.state))};this.unregisterStateReceiver=t=>{let i=this.stateReceivers.indexOf(t);i>=0&&(this.stateReceivers.splice(i,1),tu(t))}}createRenderRoot(){return this}connectedCallback(){super.connectedCallback(),jx(),this._mutationObserver=new MutationObserver(this.handleMutation),this._mutationObserver.observe(this,{childList:!0,subtree:!0})}get player(){return this._playerCore}get playerState(){var t;return((t=this._playerCore)==null?void 0:t.state)??null}get bpLive(){var t;return((t=this._playerCore)==null?void 0:t.bpLive)??null}async play(){var t;this.debug&&console.log("[BPPlayer] play() called"),await((t=this._playerCore)==null?void 0:t.play())}pause(){var t;this.debug&&console.log("[BPPlayer] pause() called"),(t=this._playerCore)==null||t.pause()}get paused(){var i;let t=((i=this._playerCore)==null?void 0:i.state.paused)??!0;return this.debug&&console.log("[BPPlayer] paused getter:",t),t}get ended(){var t;return((t=this._playerCore)==null?void 0:t.state.ended)??!1}get seeking(){var t;return((t=this._playerCore)==null?void 0:t.state.seeking)??!1}get waiting(){var t;return((t=this._playerCore)==null?void 0:t.state.waiting)??!1}get currentTime(){var t;return((t=this._playerCore)==null?void 0:t.state.currentTime)??0}set currentTime(t){var i;(i=this._playerCore)==null||i.seek(t)}get duration(){var t;return((t=this._playerCore)==null?void 0:t.state.duration)??NaN}get volume(){var t;return((t=this._playerCore)==null?void 0:t.state.volume)??1}set volume(t){var i;(i=this._playerCore)==null||i.setVolume(t)}get muted(){var t;return((t=this._playerCore)==null?void 0:t.state.muted)??this.defaultMuted}set muted(t){var i;(i=this._playerCore)==null||i.setMuted(t)}get playbackRate(){var t;return((t=this._playerCore)==null?void 0:t.state.playbackRate)??1}set playbackRate(t){var i;(i=this._playerCore)==null||i.setPlaybackRate(t)}get readyState(){var t;return((t=this._playerCore)==null?void 0:t.state.readyState)??0}get buffered(){var i;let t=(i=this._playerCore)==null?void 0:i.state.buffered;return t||{length:0,start:s=>{throw new DOMException(`Index ${s} is out of bounds`,"IndexSizeError")},end:s=>{throw new DOMException(`Index ${s} is out of bounds`,"IndexSizeError")}}}get videoWidth(){var s,r,a;let t=(s=this._playerCore)==null?void 0:s.videoElement;if(t!=null&&t.videoWidth)return t.videoWidth;let i=(r=this._playerCore)==null?void 0:r.state.currentQuality;return i!=null&&i.width?i.width:((a=this._playerCore)==null?void 0:a.state.videoWidth)??0}get videoHeight(){var s,r,a;let t=(s=this._playerCore)==null?void 0:s.videoElement;if(t!=null&&t.videoHeight)return t.videoHeight;let i=(r=this._playerCore)==null?void 0:r.state.currentQuality;return i!=null&&i.height?i.height:((a=this._playerCore)==null?void 0:a.state.videoHeight)??0}get videoElement(){var t;return((t=this._playerCore)==null?void 0:t.videoElement)??null}get providerType(){var t;return((t=this._playerCore)==null?void 0:t.state.providerType)??null}get videoRenditions(){return this._videoRenditions}disconnectedCallback(){var t;super.disconnectedCallback(),(t=this._mutationObserver)==null||t.disconnect(),this.destroyPlayer()}firstUpdated(t){super.firstUpdated(t),this.containerRef=this.renderRoot.querySelector(".bp-player-container"),this.containerRef&&!this.providerContainer&&(this.providerContainer=document.createElement("div"),this.providerContainer.className="bp-player-provider",this.providerContainer.style.cssText="width: 100%; height: 100%; position: absolute; top: 0; left: 0;",this.containerRef.appendChild(this.providerContainer)),this.initPlayerCore()}updated(t){super.updated(t),t.has("source")&&this.loadSource(),t.has("defaultMuted")&&this._playerCore&&this._playerCore.setMuted(this.defaultMuted),t.has("loop")&&this._playerCore&&this._playerCore.setLoop(this.loop)}initPlayerCore(){if(!(this._playerCore||!this.providerContainer))try{this._playerCore=kp(),this.defaultMuted&&this._playerCore.setMuted(!0),this.loop&&this._playerCore.setLoop(!0),this._playerCore.attach(this.providerContainer,this.config),this.setupEventForwarding(),this._videoRenditions=new ru(this)}catch(t){console.error("[BPPlayer] Failed to initialize player:",t),this.dispatchEvent(Yi(t instanceof Error?t:new Error(String(t))))}}async loadSource(){var i,s,r,a,o,l,c;let t=(s=(i=this.source)==null?void 0:i.sources)==null?void 0:s[0];if(!t){(r=this._playerCore)!=null&&r.ready&&this._playerCore.unloadSource();return}if(!this._playerCore||!this.providerContainer){this.debug&&console.log("[BPPlayer] loadSource skipped - player not initialized");return}this.debug&&console.log("[BPPlayer] loadSource:",t);try{let d=await this._playerCore.loadSource(t);if(!this._playerCore)return;if(d!=null&&d.videoWidth&&(d!=null&&d.videoHeight)&&(this.updateVideoDimensions(d.videoWidth,d.videoHeight),this.debug&&console.log("[BPPlayer] Source video dimensions:",{width:d.videoWidth,height:d.videoHeight})),(a=this._videoRenditions)==null||a._setupListeners(),this._hasDispatchedReady||(this._hasDispatchedReady=!0,Ua(this,this.providerContainer,this.registerStateReceiver),this.dispatchEvent(Dr(Wl,{detail:this._playerCore})),this.debug&&console.log("[BPPlayer] Player ready",(o=this._playerCore)==null?void 0:o.state)),this.propagateStateToAllReceivers(),this.updateStateAttributes(),(c=(l=this._playerCore)==null?void 0:l.state)!=null&&c.paused&&this.dispatchEvent($e(Mr)),this.autoplay&&this._playerCore)try{await this._playerCore.play()}catch{}}catch(d){console.error("[BPPlayer] Failed to load source:",d),this.dispatchEvent(Yi(d instanceof Error?d:new Error(String(d))))}}propagateStateToAllReceivers(){if(!this._playerCore)return;let t=this._playerCore.state;for(let i of this.stateReceivers)eu(i,this._playerCore,t)}setupEventForwarding(){if(!this._playerCore)return;let t=this._playerCore;for(let a of Yx){let o=()=>{this.debug&&!["durationchange","timeupdate"].includes(a)&&console.log(`[BPPlayer] Forwarding event: ${a}`,t.state),this.dispatchEvent($e(a))};t.addEventListener(a,o),this.eventCleanup.push(()=>t.removeEventListener(a,o))}let i=()=>{let a=t.videoElement;a&&this.updateVideoDimensions(a.videoWidth,a.videoHeight)};t.addEventListener("resize",i),t.addEventListener("loadedmetadata",i),this.eventCleanup.push(()=>t.removeEventListener("resize",i)),this.eventCleanup.push(()=>t.removeEventListener("loadedmetadata",i)),i();let s=()=>{this.dispatchEvent($e(Ps))};t.addEventListener("qualitychange",s),this.eventCleanup.push(()=>t.removeEventListener("qualitychange",s));let r=()=>{this.propagateStateToAllReceivers(),this.updateStateAttributes()};t.addEventListener("statechange",r),this.eventCleanup.push(()=>t.removeEventListener("statechange",r))}updateStateAttributes(){if(!this._playerCore)return;let t=this._playerCore.state;Mt(this,"paused",t.paused),Mt(this,"playing",t.playing),Mt(this,"ended",t.ended),Mt(this,"seeking",t.seeking),Mt(this,"waiting",t.waiting),Mt(this,"has-error",t.error!==null),Mt(this,"ready",this._playerCore.ready),this.setAttribute("stream-type",t.streamType),this.setAttribute("content-type",t.contentType),t.providerType&&this.setAttribute("provider-type",t.providerType)}destroyPlayer(){var t;this.eventCleanup.forEach(i=>i()),this.eventCleanup=[],(t=this._videoRenditions)==null||t._destroy(),this._videoRenditions=null;for(let i of this.stateReceivers)tu(i);if(this.stateReceivers=[],this._playerCore&&(this._playerCore.destroy(),this._playerCore=null),this.providerContainer)for(;this.providerContainer.firstChild;)this.providerContainer.removeChild(this.providerContainer.firstChild);this.clearVideoDimensions(),this._hasDispatchedReady=!1}updateVideoDimensions(t,i){t>0&&i>0?(this.style.setProperty("--bp-video-width",String(t)),this.style.setProperty("--bp-video-height",String(i)),this.debug&&console.log("[BPPlayer] Set video dimensions:",{width:t,height:i})):(this.style.removeProperty("--bp-video-width"),this.style.removeProperty("--bp-video-height"),this.debug&&console.log("[BPPlayer] Cleared video dimensions"))}clearVideoDimensions(){this.style.removeProperty("--bp-video-width"),this.style.removeProperty("--bp-video-height")}getContainerClasses(){return["bp-player-container",`bp-player-container--${this.scaling}`].join(" ")}getContainerStyle(){return this.aspectRatio?`aspect-ratio: ${this.aspectRatio}`:""}render(){return Ni`
230
+ `;var cT=!1;function jx(){if(cT||(cT=!0,document.getElementById("bp-player-styles")))return;Bl();let n=document.createElement("style");n.id="bp-player-styles",n.textContent=lT,document.head.appendChild(n)}var Yx=["emptied","loadstart","play","playing","pause","waiting","seeking","seeked","timeupdate","durationchange","volumechange","ratechange","ended","loadedmetadata","loadeddata","canplay","canplaythrough","progress","error","resize"],ci=class extends li{constructor(){super(...arguments);this.autoplay=!1;this.defaultMuted=!1;this.loop=!1;this.scaling="letterbox";this.debug=!1;this._playerCore=null;this.containerRef=null;this.providerContainer=null;this.eventCleanup=[];this.stateReceivers=[];this._mutationObserver=null;this._videoRenditions=null;this._hasDispatchedReady=!1;this.handleMutation=t=>{for(let i of t)if(i.type==="childList"){for(let s of i.addedNodes)s.nodeType===Node.ELEMENT_NODE&&Ua(s,this.providerContainer,this.registerStateReceiver);for(let s of i.removedNodes)s.nodeType===Node.ELEMENT_NODE&&Ua(s,this.providerContainer,this.unregisterStateReceiver)}};this.registerStateReceiver=t=>{this.stateReceivers.includes(t)||(this.stateReceivers.push(t),this._playerCore&&eu(t,this._playerCore,this._playerCore.state))};this.unregisterStateReceiver=t=>{let i=this.stateReceivers.indexOf(t);i>=0&&(this.stateReceivers.splice(i,1),tu(t))}}createRenderRoot(){return this}connectedCallback(){super.connectedCallback(),jx(),this._mutationObserver=new MutationObserver(this.handleMutation),this._mutationObserver.observe(this,{childList:!0,subtree:!0})}get player(){return this._playerCore}get playerState(){var t;return((t=this._playerCore)==null?void 0:t.state)??null}get bpLive(){var t;return((t=this._playerCore)==null?void 0:t.bpLive)??null}async play(){var t;this.debug&&console.log("[BPPlayer] play() called"),await((t=this._playerCore)==null?void 0:t.play())}pause(){var t;this.debug&&console.log("[BPPlayer] pause() called"),(t=this._playerCore)==null||t.pause()}get paused(){var i;let t=((i=this._playerCore)==null?void 0:i.state.paused)??!0;return this.debug&&console.log("[BPPlayer] paused getter:",t),t}get ended(){var t;return((t=this._playerCore)==null?void 0:t.state.ended)??!1}get seeking(){var t;return((t=this._playerCore)==null?void 0:t.state.seeking)??!1}get waiting(){var t;return((t=this._playerCore)==null?void 0:t.state.waiting)??!1}get currentTime(){var t;return((t=this._playerCore)==null?void 0:t.state.currentTime)??0}set currentTime(t){var i;(i=this._playerCore)==null||i.seek(t)}get duration(){var t;return((t=this._playerCore)==null?void 0:t.state.duration)??NaN}get volume(){var t;return((t=this._playerCore)==null?void 0:t.state.volume)??1}set volume(t){var i;(i=this._playerCore)==null||i.setVolume(t)}get muted(){var t;return((t=this._playerCore)==null?void 0:t.state.muted)??this.defaultMuted}set muted(t){var i;(i=this._playerCore)==null||i.setMuted(t)}get playbackRate(){var t;return((t=this._playerCore)==null?void 0:t.state.playbackRate)??1}set playbackRate(t){var i;(i=this._playerCore)==null||i.setPlaybackRate(t)}get readyState(){var t;return((t=this._playerCore)==null?void 0:t.state.readyState)??0}get buffered(){var i;let t=(i=this._playerCore)==null?void 0:i.state.buffered;return t||{length:0,start:s=>{throw new DOMException(`Index ${s} is out of bounds`,"IndexSizeError")},end:s=>{throw new DOMException(`Index ${s} is out of bounds`,"IndexSizeError")}}}get videoWidth(){var s,r,a;let t=(s=this._playerCore)==null?void 0:s.videoElement;if(t!=null&&t.videoWidth)return t.videoWidth;let i=(r=this._playerCore)==null?void 0:r.state.currentQuality;return i!=null&&i.width?i.width:((a=this._playerCore)==null?void 0:a.state.videoWidth)??0}get videoHeight(){var s,r,a;let t=(s=this._playerCore)==null?void 0:s.videoElement;if(t!=null&&t.videoHeight)return t.videoHeight;let i=(r=this._playerCore)==null?void 0:r.state.currentQuality;return i!=null&&i.height?i.height:((a=this._playerCore)==null?void 0:a.state.videoHeight)??0}get videoElement(){var t;return((t=this._playerCore)==null?void 0:t.videoElement)??null}get providerType(){var t;return((t=this._playerCore)==null?void 0:t.state.providerType)??null}get videoRenditions(){return this._videoRenditions}disconnectedCallback(){var t;super.disconnectedCallback(),(t=this._mutationObserver)==null||t.disconnect(),this.destroyPlayer()}firstUpdated(t){super.firstUpdated(t),this.containerRef=this.renderRoot.querySelector(".bp-player-container"),this.containerRef&&!this.providerContainer&&(this.providerContainer=document.createElement("div"),this.providerContainer.className="bp-player-provider",this.providerContainer.style.cssText="width: 100%; height: 100%; position: absolute; top: 0; left: 0;",this.containerRef.appendChild(this.providerContainer)),this.initPlayerCore()}updated(t){super.updated(t),t.has("source")&&this.loadSource(),t.has("defaultMuted")&&this._playerCore&&this._playerCore.setMuted(this.defaultMuted),t.has("loop")&&this._playerCore&&this._playerCore.setLoop(this.loop)}initPlayerCore(){var t;if(!(this._playerCore||!this.providerContainer))try{this._playerCore=kp(),this.defaultMuted&&this._playerCore.setMuted(!0),this.loop&&this._playerCore.setLoop(!0),this._playerCore.attach(this.providerContainer,this.config),this.setupEventForwarding(),this._videoRenditions=new ru(this),this._hasDispatchedReady||(this._hasDispatchedReady=!0,Ua(this,this.providerContainer,this.registerStateReceiver),this.dispatchEvent(Dr(Wl,{detail:this._playerCore})),this.debug&&console.log("[BPPlayer] Player ready",(t=this._playerCore)==null?void 0:t.state))}catch(i){console.error("[BPPlayer] Failed to initialize player:",i),this.dispatchEvent(Yi(i instanceof Error?i:new Error(String(i))))}}async loadSource(){var i,s,r,a,o,l;let t=(s=(i=this.source)==null?void 0:i.sources)==null?void 0:s[0];if(!t){(r=this._playerCore)!=null&&r.ready&&this._playerCore.unloadSource();return}if(!this._playerCore||!this.providerContainer){this.debug&&console.log("[BPPlayer] loadSource skipped - player not initialized");return}this.debug&&console.log("[BPPlayer] loadSource:",t);try{let c=await this._playerCore.loadSource(t);if(!this._playerCore)return;if(c!=null&&c.videoWidth&&(c!=null&&c.videoHeight)&&(this.updateVideoDimensions(c.videoWidth,c.videoHeight),this.debug&&console.log("[BPPlayer] Source video dimensions:",{width:c.videoWidth,height:c.videoHeight})),(a=this._videoRenditions)==null||a._setupListeners(),this.propagateStateToAllReceivers(),this.updateStateAttributes(),(l=(o=this._playerCore)==null?void 0:o.state)!=null&&l.paused&&this.dispatchEvent($e(Mr)),this.autoplay&&this._playerCore)try{await this._playerCore.play()}catch{}}catch(c){console.error("[BPPlayer] Failed to load source:",c),this.dispatchEvent(Yi(c instanceof Error?c:new Error(String(c))))}}propagateStateToAllReceivers(){if(!this._playerCore)return;let t=this._playerCore.state;for(let i of this.stateReceivers)eu(i,this._playerCore,t)}setupEventForwarding(){if(!this._playerCore)return;let t=this._playerCore;for(let a of Yx){let o=()=>{this.debug&&!["durationchange","timeupdate"].includes(a)&&console.log(`[BPPlayer] Forwarding event: ${a}`,t.state),this.dispatchEvent($e(a))};t.addEventListener(a,o),this.eventCleanup.push(()=>t.removeEventListener(a,o))}let i=()=>{let a=t.videoElement;a&&this.updateVideoDimensions(a.videoWidth,a.videoHeight)};t.addEventListener("resize",i),t.addEventListener("loadedmetadata",i),this.eventCleanup.push(()=>t.removeEventListener("resize",i)),this.eventCleanup.push(()=>t.removeEventListener("loadedmetadata",i)),i();let s=()=>{this.dispatchEvent($e(Ps))};t.addEventListener("qualitychange",s),this.eventCleanup.push(()=>t.removeEventListener("qualitychange",s));let r=()=>{this.propagateStateToAllReceivers(),this.updateStateAttributes()};t.addEventListener("statechange",r),this.eventCleanup.push(()=>t.removeEventListener("statechange",r))}updateStateAttributes(){if(!this._playerCore)return;let t=this._playerCore.state;Mt(this,"paused",t.paused),Mt(this,"playing",t.playing),Mt(this,"ended",t.ended),Mt(this,"seeking",t.seeking),Mt(this,"waiting",t.waiting),Mt(this,"has-error",t.error!==null),Mt(this,"ready",this._playerCore.ready),this.setAttribute("stream-type",t.streamType),this.setAttribute("content-type",t.contentType),t.providerType&&this.setAttribute("provider-type",t.providerType)}destroyPlayer(){var t;this.eventCleanup.forEach(i=>i()),this.eventCleanup=[],(t=this._videoRenditions)==null||t._destroy(),this._videoRenditions=null;for(let i of this.stateReceivers)tu(i);if(this.stateReceivers=[],this._playerCore&&(this._playerCore.destroy(),this._playerCore=null),this.providerContainer)for(;this.providerContainer.firstChild;)this.providerContainer.removeChild(this.providerContainer.firstChild);this.clearVideoDimensions(),this._hasDispatchedReady=!1}updateVideoDimensions(t,i){t>0&&i>0?(this.style.setProperty("--bp-video-width",String(t)),this.style.setProperty("--bp-video-height",String(i)),this.debug&&console.log("[BPPlayer] Set video dimensions:",{width:t,height:i})):(this.style.removeProperty("--bp-video-width"),this.style.removeProperty("--bp-video-height"),this.debug&&console.log("[BPPlayer] Cleared video dimensions"))}clearVideoDimensions(){this.style.removeProperty("--bp-video-width"),this.style.removeProperty("--bp-video-height")}getContainerClasses(){return["bp-player-container",`bp-player-container--${this.scaling}`].join(" ")}getContainerStyle(){return this.aspectRatio?`aspect-ratio: ${this.aspectRatio}`:""}render(){return Ni`
231
231
  <div
232
232
  class="${this.getContainerClasses()}"
233
233
  style="${this.getContainerStyle()}"
@@ -2689,7 +2689,7 @@ bp-default-ui[debug-hitboxes] media-controller *:hover {
2689
2689
  outline: 2px solid rgba(0, 255, 0, 1) !important;
2690
2690
  background: rgba(0, 255, 0, 0.3) !important;
2691
2691
  }
2692
- `;var I_=!1;function lD(){if(I_||(I_=!0,document.getElementById("bp-default-ui-styles")))return;Bl();let n=document.createElement("style");n.id="bp-default-ui-styles",n.textContent=C_,document.head.appendChild(n)}var st=class extends li{constructor(){super(...arguments);this.autoplay=!1;this.muted=!1;this.loop=!1;this.scaling="letterbox";this.debug=!1;this.autohide=2;this.hotkeys=!0;this.mobile=!1;this.live=!1;this.fluid=!1;this._player=null;this._providerType=null;this._error=null;this._connectionState="idle";this._showEndedOverlay=!1;this._cleanupListeners=[]}createRenderRoot(){return this}connectedCallback(){super.connectedCallback(),lD(),this.detectMobile()}disconnectedCallback(){super.disconnectedCallback(),this._cleanupListeners.forEach(t=>t()),this._cleanupListeners=[]}get player(){return this._player}get mediaController(){return this.querySelector("media-controller")}get bpLive(){var t;return((t=this._player)==null?void 0:t.bpLive)??null}detectMobile(){let t=/Android|iPhone|iPad|iPod|webOS|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);this.mobile=t}_getPoster(){var t;return((t=this.source)==null?void 0:t.poster)??this.poster??null}firstUpdated(t){super.firstUpdated(t),this.setupPlayer(),this._moveSlottedContent()}willUpdate(t){super.willUpdate(t),t.has("source")&&(this._applySourceHints(),this._error=null,this._showEndedOverlay=!1,Mt(this,"has-error",!1))}updated(t){super.updated(t),this._moveSlottedContent(),t.has("debug")&&this.toggleAttribute("debug-hitboxes",this.debug)}_applySourceHints(){var i;let t=(i=this.source)==null?void 0:i.sources;if(t){for(let s of t)if(bp(s)){if("clipId"in s){if(this.setAttribute("content-type","clip"),this.fluid&&s.preferredOrientation){let r=s.preferredOrientation==="portrait";this.style.setProperty("--bp-video-width",r?"9":"16"),this.style.setProperty("--bp-video-height",r?"16":"9")}}else this.setAttribute("content-type","stream");return}this.setAttribute("content-type","video")}}_updateVideoDimensions(t,i){t>0&&i>0?(this.style.setProperty("--bp-video-width",String(t)),this.style.setProperty("--bp-video-height",String(i))):(this.style.removeProperty("--bp-video-width"),this.style.removeProperty("--bp-video-height"))}_clearVideoDimensions(){this.style.removeProperty("--bp-video-width"),this.style.removeProperty("--bp-video-height")}_moveSlottedContent(){let t=this.querySelector("media-controller");if(!t)return;let i=[{from:"top-chrome",to:"top-chrome",marker:"has-custom-top-chrome"},{from:"centered-chrome",to:"centered-chrome",marker:"has-custom-centered-chrome"},{from:"middle-chrome",to:"middle-chrome",marker:"has-custom-middle-chrome"},{from:"bottom-chrome",to:null,marker:"has-custom-bottom-chrome"}];for(let{from:s,to:r,marker:a}of i){let o=this.querySelectorAll(`:scope > [slot="${s}"]`);o.length>0&&this.setAttribute(a,""),o.forEach(l=>{l.parentElement!==t&&(r?l.setAttribute("slot",r):l.removeAttribute("slot"),t.appendChild(l))})}}setupPlayer(){let t=this.querySelector("bp-player");if(!t)return;let i=s=>{s.stopPropagation(),this._player=s.detail,this._providerType=t.providerType,this.live=this._player.state.streamType==="live",this.setupPlayerListeners(),this.dispatchEvent(Dr(Wl,{detail:this._player})),this.requestUpdate()};t.addEventListener("ready",i),this._cleanupListeners.push(()=>t.removeEventListener("ready",i))}setupPlayerListeners(){if(!this._player)return;let t=()=>{var h;let d=((h=this._player)==null?void 0:h.state.error)??null;this._error=d;let u=d!==null&&d.fatal&&d.category!=="offline";Mt(this,"has-error",u)},i=()=>{var u;let d=(u=this._player)==null?void 0:u.state;if(d&&(this._connectionState=d.connectionState,this.live=d.streamType==="live",this.setAttribute("content-type",d.contentType),this.setAttribute("stream-type",d.streamType),Mt(this,"paused",d.paused),Mt(this,"ended",d.ended),Mt(this,"waiting",d.waiting),d.error!==this._error)){this._error=d.error;let h=d.error!==null&&d.error.fatal&&d.error.category!=="offline";Mt(this,"has-error",h)}},s=()=>{this._error=null,this._showEndedOverlay=!1,Mt(this,"has-error",!1)},r=()=>{this.live&&(this._showEndedOverlay=!0)},a=()=>{this._error=null,this._showEndedOverlay=!1,Mt(this,"has-error",!1)},o=d=>{this.debug&&console.log("[BPDefaultUI] updateVideoDimensions called",{fluid:this.fluid,...d}),this.fluid&&(this._updateVideoDimensions(d.videoWidth,d.videoHeight),this.debug&&console.log("[BPDefaultUI] Set video dimensions:",{width:d.videoWidth,height:d.videoHeight}))};this._player.addEventListener("error",t),this._player.addEventListener("statechange",i),this._player.addEventListener("playing",s),this._player.addEventListener("ended",r),this._player.addEventListener("sourcechange",a),this._player.addEventListener("resize",o),this._player.addEventListener("loadedmetadata",o);let{videoWidth:l,videoHeight:c}=this._player.state;this.debug&&console.log("[BPDefaultUI] Initial dimensions check",{videoWidth:l,videoHeight:c,fluid:this.fluid}),l>0&&c>0&&o({videoWidth:l,videoHeight:c}),this._cleanupListeners.push(()=>{var d;return(d=this._player)==null?void 0:d.removeEventListener("error",t)},()=>{var d;return(d=this._player)==null?void 0:d.removeEventListener("statechange",i)},()=>{var d;return(d=this._player)==null?void 0:d.removeEventListener("playing",s)},()=>{var d;return(d=this._player)==null?void 0:d.removeEventListener("ended",r)},()=>{var d;return(d=this._player)==null?void 0:d.removeEventListener("sourcechange",a)},()=>{var d;return(d=this._player)==null?void 0:d.removeEventListener("resize",o)},()=>{var d;return(d=this._player)==null?void 0:d.removeEventListener("loadedmetadata",o)})}renderDefaultControls(){return this._providerType==="nano"||this._providerType==="livekit"?Ni`
2692
+ `;var I_=!1;function lD(){if(I_||(I_=!0,document.getElementById("bp-default-ui-styles")))return;Bl();let n=document.createElement("style");n.id="bp-default-ui-styles",n.textContent=C_,document.head.appendChild(n)}var st=class extends li{constructor(){super(...arguments);this.autoplay=!1;this.muted=!1;this.loop=!1;this.scaling="letterbox";this.debug=!1;this.autohide=2;this.hotkeys=!0;this.mobile=!1;this.live=!1;this.fluid=!1;this._player=null;this._providerType=null;this._error=null;this._connectionState="idle";this._showEndedOverlay=!1;this._cleanupListeners=[]}createRenderRoot(){return this}connectedCallback(){super.connectedCallback(),lD(),this.detectMobile()}disconnectedCallback(){super.disconnectedCallback(),this._cleanupListeners.forEach(t=>t()),this._cleanupListeners=[]}get player(){return this._player}get mediaController(){return this.querySelector("media-controller")}get bpLive(){var t;return((t=this._player)==null?void 0:t.bpLive)??null}detectMobile(){let t=/Android|iPhone|iPad|iPod|webOS|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);this.mobile=t}_getPoster(){var t;return((t=this.source)==null?void 0:t.poster)??this.poster??null}firstUpdated(t){super.firstUpdated(t),this.setupPlayer(),this._moveSlottedContent()}willUpdate(t){super.willUpdate(t),t.has("source")&&(this._applySourceHints(),this._error=null,this._showEndedOverlay=!1,Mt(this,"has-error",!1))}updated(t){super.updated(t),this._moveSlottedContent(),t.has("debug")&&this.toggleAttribute("debug-hitboxes",this.debug)}_applySourceHints(){var i;let t=(i=this.source)==null?void 0:i.sources;if(t){for(let s of t)if(bp(s)){if("clipId"in s){if(this.setAttribute("content-type","clip"),this.fluid&&s.preferredOrientation){let r=s.preferredOrientation==="portrait";this.style.setProperty("--bp-video-width",r?"9":"16"),this.style.setProperty("--bp-video-height",r?"16":"9")}}else this.setAttribute("content-type","stream");return}this.setAttribute("content-type","video")}}_updateVideoDimensions(t,i){t>0&&i>0?(this.style.setProperty("--bp-video-width",String(t)),this.style.setProperty("--bp-video-height",String(i))):(this.style.removeProperty("--bp-video-width"),this.style.removeProperty("--bp-video-height"))}_clearVideoDimensions(){this.style.removeProperty("--bp-video-width"),this.style.removeProperty("--bp-video-height")}_moveSlottedContent(){let t=this.querySelector("media-controller");if(!t)return;let i=[{from:"top-chrome",to:"top-chrome",marker:"has-custom-top-chrome"},{from:"centered-chrome",to:"centered-chrome",marker:"has-custom-centered-chrome"},{from:"middle-chrome",to:"middle-chrome",marker:"has-custom-middle-chrome"},{from:"bottom-chrome",to:null,marker:"has-custom-bottom-chrome"}];for(let{from:s,to:r,marker:a}of i){let o=this.querySelectorAll(`:scope > [slot="${s}"]`);o.length>0&&this.setAttribute(a,""),o.forEach(l=>{l.parentElement!==t&&(r?l.setAttribute("slot",r):l.removeAttribute("slot"),t.appendChild(l))})}}setupPlayer(){let t=this.querySelector("bp-player");if(!t)return;let i=s=>{s.stopPropagation(),this._player=s.detail,this.setupPlayerListeners(),this.dispatchEvent(Dr(Wl,{detail:this._player})),this.requestUpdate()};t.addEventListener("ready",i),this._cleanupListeners.push(()=>t.removeEventListener("ready",i))}setupPlayerListeners(){if(!this._player)return;let t=()=>{var h;let d=((h=this._player)==null?void 0:h.state.error)??null;this._error=d;let u=d!==null&&d.fatal&&d.category!=="offline";Mt(this,"has-error",u)},i=()=>{var u;let d=(u=this._player)==null?void 0:u.state;if(d&&(this._connectionState=d.connectionState,this._providerType=d.providerType,this.live=d.streamType==="live",this.setAttribute("content-type",d.contentType),this.setAttribute("stream-type",d.streamType),Mt(this,"paused",d.paused),Mt(this,"ended",d.ended),Mt(this,"waiting",d.waiting),d.error!==this._error)){this._error=d.error;let h=d.error!==null&&d.error.fatal&&d.error.category!=="offline";Mt(this,"has-error",h)}},s=()=>{this._error=null,this._showEndedOverlay=!1,Mt(this,"has-error",!1)},r=()=>{this.live&&(this._showEndedOverlay=!0)},a=()=>{this._error=null,this._showEndedOverlay=!1,Mt(this,"has-error",!1)},o=d=>{this.debug&&console.log("[BPDefaultUI] updateVideoDimensions called",{fluid:this.fluid,...d}),this.fluid&&(this._updateVideoDimensions(d.videoWidth,d.videoHeight),this.debug&&console.log("[BPDefaultUI] Set video dimensions:",{width:d.videoWidth,height:d.videoHeight}))};this._player.addEventListener("error",t),this._player.addEventListener("statechange",i),this._player.addEventListener("playing",s),this._player.addEventListener("ended",r),this._player.addEventListener("sourcechange",a),this._player.addEventListener("resize",o),this._player.addEventListener("loadedmetadata",o);let{videoWidth:l,videoHeight:c}=this._player.state;this.debug&&console.log("[BPDefaultUI] Initial dimensions check",{videoWidth:l,videoHeight:c,fluid:this.fluid}),l>0&&c>0&&o({videoWidth:l,videoHeight:c}),this._cleanupListeners.push(()=>{var d;return(d=this._player)==null?void 0:d.removeEventListener("error",t)},()=>{var d;return(d=this._player)==null?void 0:d.removeEventListener("statechange",i)},()=>{var d;return(d=this._player)==null?void 0:d.removeEventListener("playing",s)},()=>{var d;return(d=this._player)==null?void 0:d.removeEventListener("ended",r)},()=>{var d;return(d=this._player)==null?void 0:d.removeEventListener("sourcechange",a)},()=>{var d;return(d=this._player)==null?void 0:d.removeEventListener("resize",o)},()=>{var d;return(d=this._player)==null?void 0:d.removeEventListener("loadedmetadata",o)})}renderDefaultControls(){return this._providerType==="nano"||this._providerType==="livekit"?Ni`
2693
2693
  <media-control-bar>
2694
2694
  <media-play-button notooltip clip-hidden></media-play-button>
2695
2695
  <media-live-button notooltip vod-hidden clip-hidden></media-live-button>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@broadcastingplatforms/player",
3
- "version": "1.4.1",
3
+ "version": "1.4.3",
4
4
  "description": "Universal video player web component built with Lit",
5
5
  "type": "module",
6
6
  "main": "dist/bp-player.js",