1import{a0 as u,R as _,e as y,m as r,c}from"./app-shared.bundle-CXDHG74p.js";const n=[.1,.25,.5,.75],p=1e3;let m=1;class l extends u{constructor(t){super(t),this.udid=this.el.id?this.el.id:null,this.player=null,this.udid||(this.udid=`youtube-player--${m++}`,this.el.id=this.udid);const s=new URLSearchParams(this.el.src);this._autoplay=s.get("autoplay")==="1",this._currentProgress=0,this._playerReady=!1,this._playerStatus=null,this._startEventTriggered=!1,this._tick=null,this._onReady=this._onReady.bind(this),this._onStateChange=this._onStateChange.bind(this),this._onProgress=this._onProgress.bind(this)}destroy(){super.destroy(),this._tick&&clearInterval(this._tick),this.player&&this.player.destroy(),this.player=null,this.udid=null,this._autoplay=null,this._currentProgress=null,this._playerReady=null,this._playerStatus=null,this._startEventTriggered=null,this._tick=null,this._onReady=null,this._onStateChange=null,this._onProgress=null}start(){this._started||(super.start(),this._autoplay&&(this._onClick(),this._onStateChange({data:YT.PlayerState.PLAYING})))}stop(){this._started&&(super.stop(),this.player&&(this.player.removeEventListener("onReady",this._onReady),this.player.removeEventListener("onStateChange",this._onStateChange)),this._unbindProgress())}_bindProgress(){this._tick||(this._tick=setInterval(this._onProgress,p))}_unbindProgress(){this._tick&&(clearInterval(this._tick),this._tick=null)}_trackEvent(t,s=0){!window.dataLayer||!window.dataLayer.push||!this.player||window.dataLayer.push({event:`video_${t}`,video_current_time:this.player.getCurrentTime(),video_duration:this.player.getDuration(),video_percent:s,video_provider:"youtube",video_title:this.player.videoTitle,video_url:this.player.getVideoUrl(),visible:!0})}_onClick(t){t&&(t.stopPropagation(),t.preventDefault()),this.player?this._playerReady===!0&&this.player.playVideo():(this.player=new YT.Player(this.udid),this.player.addEventListener("onReady",this._onReady),this.player.addEventListener("onStateChange",this._onStateChange))}_onReady(){this._playerReady=!0,this.player.playVideo(),this._unbindEvents()}_onStateChange(t){this._playerReady=!0,t.data===YT.PlayerState.PLAYING&!this._startEventTriggered&&(this._startEventTriggered=!0,this._trackEvent("start",0)),t.data===YT.PlayerState.PAUSED||t.data===YT.PlayerState.ENDED?(this._bindEvents(),this._unbindProgress()):t.data===YT.PlayerState.PLAYING&&(this._unbindEvents(),this._bindProgress()),t.data===YT.PlayerState.ENDED&&(this._trackEvent("complete",100),this._startEventTriggered=!1,this._currentProgress=0)}_onProgress(){if(!this.player||this._currentProgress===null||this._currentProgress>=n.length)return;const t=this.player.getCurrentTime(),s=this.player.getDuration();_(0,1,s>0?t/s:0)<n[this._currentProgress]||(this._trackEvent("progress",n[this._currentProgress]*100),this._currentProgress++)}}class f{constructor(){this._script=null,this._ready=!1,this._promises=[],window.onYouTubeIframeAPIReady=()=>{this._ready=!0,this._promises.forEach(t=>t()),this._promises=null,window.onYouTubeIframeAPIReady=null}}load(){if(this._ready)return Promise.resolve();const t=new Promise(s=>this._promises.push(s));return this._script||(this._script=document.createElement("script"),this._script.onerror=s=>{console.error("Error loading Youtube iFrame API :",s)},this._script.src="https://www.youtube.com/iframe_api",y.appendChild(this._script)),t}get ready(){return this._ready}}const o=new f,g='.wysiwyg iframe[src*="youtube.com"]',d=0,i=1,E=2,a=3;class S{constructor(t,s){this.el=t,this.emitter=s,this.items=null,this._elements=null,this._status=d,this._initChildren=this._initChildren.bind(this),this._onAdd=this._onAdd.bind(this)}init(){r||(this._bindEvents(),this._elements=[...c(g,this.el)],!(!this._elements||this._elements.length===0)&&(this._status=i,o.load().then(()=>{this._status<i||(this._initChildren(),this._status===a&&this.start())})))}destroy(){this._unbindEvents(),this.items&&this.items.forEach(t=>t.destroy()),this.el=null,this.emitter=null,this.items=null,this._elements=null,this._status=d,this._initChildren=null,this._onAdd=null}
1start(){this._status=a,this.items&&this.items.forEach(t=>t.start())}stop(){this.items&&this.items.forEach(t=>t.stop()),this._status=E}add(t){r||(this._status<i&&(this._status=i),o.load().then(()=>{if(this._status<i)return;const s=new l(t);this.items||(this.items=[]),this.items.push(s),this._status===a&&s.start()}))}remove(t){if(this._elements&&(this._elements=this._elements.filter(s=>s!==t)),this.items){const s=this.items.findIndex(e=>e.el===t);if(s>-1){const e=this.items.splice(s,1)[0];e.stop(),e.destroy()}}}_initChildren(){this.items=this._elements.map(t=>new l(t)),this._elements=null}_bindEvents(){this.emitter.on("oEmbed.add",this._onAdd)}_unbindEvents(){this.emitter.off("oEmbed.add",this._onAdd)}_onAdd(t){r||!t.src.includes("youtube.com")||this.add(t)}}export{g as SELECTOR,S as default};
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.