@aidenlx/player
Version:
Headless web components that make integrating media on the a web a breeze.
15 lines (13 loc) • 2.96 kB
JavaScript
import{a as T}from"./chunk.D7ZQF5UY.js";import{a as w}from"./chunk.IZOPTWJO.js";import{a}from"./chunk.KCC3AAG2.js";import{L as v,T as b,a as l,f as h,g as m,h as p,i as f,ia as E,j as y,ja as C,m as g}from"./chunk.PWTX2M5C.js";var d=new Map,r=class extends C{constructor(){super(...arguments);this.i=new y;this.ms=T.consume(this);this.repeat=0;this.priority=10;this.ri=0;this.Ke=!1;this.ie=w.consume(this)}static get styles(){return[E`
:host {
display: block;
contain: content;
z-index: 0;
opacity: 0;
visibility: hidden;
pointer-events: none !important;
}
:host([hidden]) {
display: none;
}
`]}get se(){return this.ms.value.value}get We(){return this.se?d.get(this.se):void 0}get ti(){return this.We?.get(this)}connectedCallback(){super.connectedCallback(),window.requestAnimationFrame(()=>{this.se&&d.set(this.se,new Map)})}willUpdate(e){this.vs(),this.fs(),this.gs(),super.willUpdate(e)}disconnectedCallback(){this.i.empty(),this.ti?.[1].resolve(),this.We?.delete(this),super.disconnectedCallback()}performAction(e){if(!this.action)return;let s,i=this.action;this.action.startsWith("toggle:")&&(i=this.ys()),this.action.startsWith("seek:")&&(i="seek",s=this.ri+Number(this.action.split(":")[1])),this.dispatchEvent(g(`vds-${i}-request`,{bubbles:!0,composed:!0,detail:s,triggerEvent:e}))}vs(){if(this.i.empty(),!this.se||!this.type||!this.action)return;let e=0,s,i=(t=!1)=>{e+=1,window.clearTimeout(s),s=window.setTimeout(()=>{let n=this.ti?.[1];t&&this.We?.delete(this),M(this.se),e=0,n?.resolve()},250)},o=h(this.se,this.type,t=>{!this.Es(t)||(t.preventDefault(),e==0&&this.We?.set(this,[t,v()]),i(e<this.repeat))});this.i.add(o)}Es(e){if(m(e)||f(e)||p(e)){let s=p(e)?e.touches[0]:void 0,i=s?.clientX??e.clientX,o=s?.clientY??e.clientY,t=this.getBoundingClientRect(),n=o>=t.top&&o<=t.bottom&&i>=t.left&&i<=t.right;return e.type.includes("leave")?!n:n}return!0}gs(){if(!this.action?.startsWith("seek"))return;let e=this.M.currentTime.subscribe(s=>{this.ri=s});this.i.add(e)}get M(){return this.ie.value}ys(){switch(this.action?.split(":")[1]){case"paused":return this.Ke?"play":"pause";case"muted":return this.Ke?"unmute":"mute";case"fullscreen":return`${this.Ke?"exit":"enter"}-fullscreen`;default:return""}}fs(){if(!this.action?.startsWith("toggle:"))return;let e=this.action.split(":")[1],s=this.M[e]?.subscribe(i=>{this.Ke=i});s&&this.i.add(s)}};l([a()],r.prototype,"type",2),l([a({type:Number})],r.prototype,"repeat",2),l([a({type:Number})],r.prototype,"priority",2),l([a()],r.prototype,"action",2);var u=new WeakSet;async function M(c){if(u.has(c))return;let e=d.get(c);if(!e)return;u.add(c);let s=Array.from(e.values()).map(t=>t[1].promise);await Promise.all(s);let i=Array.from(e.keys()),o=Math.min(...i.map(t=>t.priority));i.filter(t=>t.priority<=o).map(t=>{let n=e.get(t)[0];t.performAction(n)}),e.clear(),u.delete(c)}b("vds-gesture",r);