@aidenlx/player
Version:
Headless web components that make integrating media on the a web a breeze.
5 lines (4 loc) • 7.14 kB
JavaScript
import{a as f}from"./chunk.DZBVSYZM.js";import{a as y}from"./chunk.JKEN2CGY.js";import{a as n,b as g}from"./chunk.KCC3AAG2.js";import{F as c,X as l,a as r,aa as v,b as p,f as m,m as i,o as u,t as o,u as h,v as E}from"./chunk.PWTX2M5C.js";var b=/\.(m4a|mp4a|mpga|mp2|mp2a|mp3|m2a|m3a|wav|weba|aac|oga|spx)($|\?)/i,_=/\.(mp4|og[gv]|webm|mov|m4v)($|\?)/i,s=class extends y{constructor(){super(...arguments);this.__src="";this.Ze=f();this.me=void 0;this.De=!1;this.oe=!1;this.Kt=!1}get src(){return this.__src}set src(e){this.__src!==e&&(this.__src=e,this.J())}get mediaElement(){return this.Ze.value}get srcObject(){return this.mediaElement?.srcObject??void 0}set srcObject(e){!o(this.mediaElement)&&this.mediaElement.srcObject!==e&&(this.mediaElement.srcObject=e??null,this.J())}get readyState(){return this.mediaElement?.readyState??0}get networkState(){return this.mediaElement?.networkState??0}firstUpdated(e){super.firstUpdated(e),this.canLoad&&this.mi()}disconnectedCallback(){this.oe=!1,this.De=!1,super.disconnectedCallback(),this.et()}vi(){return p`
<slot ="${this.Ns}"></slot>
Your browser does not support the <code>audio</code> or <code>video</code> element.
`}et(){E(this.me)&&window.cancelAnimationFrame(this.me),this.me=void 0}Os(){!o(this.me)||this.fi()}fi(){let e=this.mediaElement?.currentTime??0;this.currentTime!==e&&this.pe(e),this.me=window.requestAnimationFrame(()=>{o(this.me)||this.fi()})}pe(e,t){this.dispatchEvent(i("vds-time-update",{detail:Math.min(e,this.duration),triggerEvent:t}))}Ns(){h(this.mediaElement)||!this.canLoad||(this.et(),this.Us(),this.gi())}Us(){this.mediaElement?.querySelectorAll("source,track")?.forEach(t=>t.remove()),this.De=!1}gi(){if(!this.canLoad||this.De)return;let e=new Set(["source","track"]),t=l(this).filter(d=>e.has(d.tagName.toLowerCase())),a=t[0]?.src;a&&(this.__src=a),t.forEach(d=>this.mediaElement?.appendChild(d.cloneNode())),window.requestAnimationFrame(async()=>{await this.J()}),this.De=!0}async handleMediaCanLoad(){await super.handleMediaCanLoad(),this.mi(),l(this).length>0&&this.gi()}mi(){if(h(this.mediaElement)||this.Kt)return;let e={abort:this.$s,canplay:this.Be,canplaythrough:this.Hr,durationchange:this.Ur,emptied:this.Is,ended:this.Or,error:this.je,loadeddata:this.Tr,loadedmetadata:this.kr,loadstart:this.Mr,pause:this.Dr,play:this._r,playing:this.Rr,progress:this.$r,ratechange:this.Bs,seeked:this.qr,seeking:this.Ar,stalled:this.js,suspend:this.Gs,volumechange:this.Vr,waiting:this.Nr};v(e).forEach(t=>{let a=e[t].bind(this);this.K.add(m(this.mediaElement,t,async d=>{await a(d),u(this,d),this.requestUpdate()}))}),this.Kt=!0,this.K.add(()=>{this.Kt=!1})}$s(e){this.dispatchEvent(i("vds-abort",{triggerEvent:e}))}Be(e){this.mediaState.canPlay||this.Qt()||this.Ut({event:e,duration:this.mediaElement.duration})}Hr(e){this.started||this.dispatchEvent(i("vds-can-play-through",{triggerEvent:e,detail:{duration:this.mediaElement.duration}}))}Mr(e){this.dispatchEvent(i("vds-load-start",{triggerEvent:e,detail:{src:this.mediaElement.currentSrc,poster:this.currentPoster,mediaType:this.Ve(),viewType:this.zs()}}))}Is(e){this.dispatchEvent(i("vds-emptied",{triggerEvent:e}))}Tr(e){this.dispatchEvent(i("vds-loaded-data",{triggerEvent:e}))}Qt(){return!1}get yi(){return!1}kr(e){this.dispatchEvent(i("vds-duration-change",{detail:this.mediaElement.duration,triggerEvent:e})),this.dispatchEvent(i("vds-loaded-metadata",{triggerEvent:e,detail:{src:this.mediaElement.currentSrc,duration:this.mediaElement.duration}})),this.Ws(e),this.yi&&this.Ut({event:e,duration:this.mediaElement.duration})}Ws(e){this.dispatchEvent(i("vds-media-type-change",{detail:this.Ve(),triggerEvent:e}))}_r(e){let t=i("vds-play",{triggerEvent:e});t.autoplay=this.re,this.dispatchEvent(t)}Dr(e){this.readyState===1&&!this.oe||(this.oe=!1,this.et(),this.dispatchEvent(i("vds-pause",{triggerEvent:e})))}Rr(e){this.oe=!1;let t=i("vds-playing",{triggerEvent:e});this.dispatchEvent(t),this.Os()}Ur(e){this.ended&&this.pe(this.mediaElement.duration,e),this.dispatchEvent(i("vds-duration-change",{detail:this.mediaElement.duration,triggerEvent:e}))}$r(e){this.dispatchEvent(i("vds-progress",{triggerEvent:e,detail:{buffered:this.mediaElement.buffered,seekable:this.mediaElement.seekable}}))}Bs(e){throw Error("Not implemented")}Ar(e){this.dispatchEvent(i("vds-seeking",{detail:this.mediaElement.currentTime,triggerEvent:e}))}qr(e){let t=i("vds-seeked",{detail:this.mediaElement.currentTime,triggerEvent:e});this.dispatchEvent(t);let a=this.mediaElement.currentTime;if(Math.trunc(a)===Math.trunc(this.duration)&&c(this.duration)>c(a)&&(this.pe(this.duration,e),!this.ended))try{this.play()}catch{}}js(e){this.dispatchEvent(i("vds-stalled",{triggerEvent:e})),this.readyState<3&&(this.oe=!0,this.dispatchEvent(i("vds-waiting",{triggerEvent:e})))}Vr(e){this.dispatchEvent(i("vds-volume-change",{detail:{volume:this.mediaElement.volume,muted:this.mediaElement.muted},triggerEvent:e}))}Nr(e){this.readyState<3&&(this.oe=!0,this.dispatchEvent(i("vds-waiting",{triggerEvent:e})))}Gs(e){let t=i("vds-suspend",{triggerEvent:e});this.dispatchEvent(t)}Or(e){this.et(),this.pe(this.duration,e);let t=i("vds-end",{triggerEvent:e});this.dispatchEvent(t),this.loop?this.Ks():this.dispatchEvent(i("vds-ended",{triggerEvent:e}))}Ks(){o(this.controls)&&(this.mediaElement.controls=!1),this.dispatchEvent(i("vds-loop-request"))}je(e){let t=this.mediaElement.error;!t||this.dispatchEvent(i("vds-error",{detail:{message:t.message,code:t.code,mediaError:t},triggerEvent:e}))}Yn(){return this.mediaElement.paused}Zn(){return this.mediaElement.volume}zr(e){this.mediaElement.volume=e}Nt(e){this.mediaElement.currentTime!==e&&(this.mediaElement.currentTime=e)}eo(){return this.mediaElement.muted}Wr(e){this.mediaElement.muted=e}async J(){this.oe=!1,await super.J(this.src),this.Qt()||(await this.updateComplete,this.canLoad&&this.mediaElement?.load())}get engine(){return this.mediaElement}get buffered(){return h(this.mediaElement)?new TimeRanges:this.mediaElement.buffered}get error(){return this.mediaElement?.error??void 0}canPlayType(e){return h(this.mediaElement)?"":this.mediaElement.canPlayType(e)}async play(){try{return this.Ot(),await this.us(),this.mediaElement?.play()}catch(e){let t=i("vds-play-fail");throw t.autoplay=this.re,t.error=e,e}}async pause(){return this.Ot(),this.mediaElement?.pause()}captureStream(){return this.Ot(),this.mediaElement?.captureStream?.()}load(){this.mediaElement?.load()}Ve(){return b.test(this.currentSrc)?"audio":_.test(this.currentSrc)?"video":"unknown"}zs(){let e=this.Ve();return e==="video"||e==="live-video"?"video":e==="audio"?"audio":"unknown"}};r([n({reflect:!0})],s.prototype,"controlsList",2),r([n({reflect:!0})],s.prototype,"crossOrigin",2),r([n({type:Boolean})],s.prototype,"defaultMuted",2),r([n({type:Number})],s.prototype,"defaultPlaybackRate",2),r([n({type:Boolean})],s.prototype,"disableRemotePlayback",2),r([n({reflect:!0})],s.prototype,"preload",2),r([n({type:Number,reflect:!0})],s.prototype,"width",2),r([n({type:Number,reflect:!0})],s.prototype,"height",2),r([g()],s.prototype,"__src",2),r([n()],s.prototype,"src",1);export{s as a};