UNPKG

@aidenlx/player

Version:

Headless web components that make integrating media on the a web a breeze.

2 lines (1 loc) 2.5 kB
import{a as r}from"./chunk.KCC3AAG2.js";import{I as h,K as l,T as c,a as i,b as n,j as a,ja as u,k as p,m as d}from"./chunk.PWTX2M5C.js";var t=class extends u{constructor(){super(...arguments);this.viewportEnterDelay=0;this.pageChangeType="state";this.pageEnterDelay=0;this.intersectionThreshold=1;this.Dt=!1;this._=new a;this.xr=p(this,"vds-media-provider-connect",e=>{let{element:s,onDisconnect:o}=e.detail;this.r=s,this._.add(()=>{this.r=void 0}),o(()=>{this._.empty()})});this.Vt=!1;this.intersectionController=new h(this,{root:this.intersectionRoot?document.querySelector(this.intersectionRoot):null,threshold:this.intersectionThreshold},e=>{window.clearTimeout(this.At);let s=e[0];this.Dt=s.isIntersecting,this.Vt&&(s.isIntersecting?this.At=window.setTimeout(()=>{this.Ir(this.enterViewport),this.At=void 0},this.viewportEnterDelay):this.exitViewport&&(this.Dt=!1,this.Br(this.exitViewport))),this.Vt=!0,this.jr()});this.pageController=new l(this,({state:e,visibility:s})=>{if(window.clearTimeout(this.qt),!this.isIntersecting)return;(this.pageChangeType==="state"?e:s)==="hidden"?this.Br(this.exitPage):this.enterViewport&&(this.qt=window.setTimeout(()=>{this.Ir(this.enterPage),this.qt=void 0},this.pageEnterDelay)),this.jr()})}get isIntersecting(){return this.Dt}disconnectedCallback(){super.disconnectedCallback(),this.Vt=!1,this._.empty()}render(){return n`<slot></slot>`}get mediaProvider(){return this.r}Ir(e){!this.r||(e==="play"?this.r.paused=!1:e==="unmute"&&(this.r.muted=!1))}Br(e){!this.r||(e==="pause"?this.r.paused=!0:e==="mute"&&(this.r.muted=!0))}jr(){!this.r||this.dispatchEvent(d("vds-media-visibility-change",{bubbles:!0,composed:!0,detail:{provider:this.r,viewport:{isIntersecting:this.isIntersecting},page:{state:this.pageController.state,visibility:this.pageController.visibility}}}))}};i([r({attribute:"enter-viewport"})],t.prototype,"enterViewport",2),i([r({attribute:"exit-viewport"})],t.prototype,"exitViewport",2),i([r({type:Number,attribute:"viewport-enter-delay"})],t.prototype,"viewportEnterDelay",2),i([r({attribute:"enter-page"})],t.prototype,"enterPage",2),i([r({attribute:"exit-page"})],t.prototype,"exitPage",2),i([r({attribute:"page-change-type"})],t.prototype,"pageChangeType",2),i([r({type:Number,attribute:"page-enter-delay"})],t.prototype,"pageEnterDelay",2),i([r({attribute:"intersection-root"})],t.prototype,"intersectionRoot",2),i([r({type:Number,attribute:"intersection-threshold"})],t.prototype,"intersectionThreshold",2);c("vds-media-visibility",t);