1"use strict";(globalThis.webpackChunkModern=globalThis.webpackChunkModern||[]).push([[847],{8508(e,t,i){i.r(t),i.d(t,{default:()=>l});const s=(0,i(7674).h)({prefix:"YouTubeVideo"}),n=["show","in"];class l{constructor(e){this.requiresConsent=!1,this.wasOpen=!1,this.player=null,this.creating=null,this.acceptButton=null,this.observer=null,this.lifecycleVersion=0,this.active=!1,this.handleMutation=()=>{const e=this.isOpen();e!==this.wasOpen&&(this.wasOpen=e,e?this.onOpen():this.onClose())},this.handleAccept=()=>{this.play(this.lifecycleVersion,this.signal)},this.element=e;const t=e.matches(".youtube-frame-js")?e:e.querySelector(".youtube-frame-js");if(!t)throw new Error("YouTubeVideo requires a .youtube-frame-js modal");this.modalElement=t}async init(e){const t=++this.lifecycleVersion;this.active=!0,this.signal=e?.signal,this.requiresConsent=!this.modalElement.classList.contains("no-show"),this.appendToBody(),this.acceptButton=this.modalElement.querySelector(".acceptBtn"),this.acceptButton?.addEventListener("click",this.handleAccept),this.observer=new MutationObserver(this.handleMutation),this.observer.observe(this.modalElement,{attributes:!0,attributeFilter:["class"]});const i=this.requiresConsent?Promise.resolve(null):this.ensurePlayer(t,e?.signal);this.wasOpen=this.isOpen(),this.wasOpen&&this.onOpen(),await i}async destroy(){this.active=!1,this.lifecycleVersion++,this.observer?.disconnect(),this.observer=null,this.acceptButton?.removeEventListener("click",this.handleAccept),this.acceptButton=null,await(this.player?.destroy()),this.player=null,this.creating=null,this.wasOpen=!1,this.signal=void 0,this.modalElement!==this.element&&this.modalElement.parentElement===document.body&&this.element.appendChild(this.modalElement)}isOpen(){return n.some(e=>this.modalElement.classList.contains(e))}onOpen(){this.active&&(!this.requiresConsent||this.player||this.creating)&&this.play(this.lifecycleVersion,this.signal)}onClose(){this.player?.stopVideo()}async play(e,t){const i=await this.ensurePlayer(e,t);i&&this.isActive(e,t)&&this.isOpen()&&i.playVideo()}ensurePlayer(e,t){if(!this.isActive(e,t))return Promise.resolve(null);if(this.player)return Promise.resolve(this.player);if(this.creating)return this.creating;const n=this.modalElement.querySelector("[data-video-id]");if(!n?.id)return s.warn("No video container with an id found; cannot create player"),Promise.resolve(null);const l=n.getAttribute("data-video-id")??void 0;let o;return o=(async()=>{try{const{default:s}=await i.e(540).then(i.t.bind(i,3517,23));if(!this.isActive(e,t))return null;const o=s(n.id,{host:"https://www.youtube-nocookie.com",videoId:l,playerVars:{autoplay:0,controls:2,rel:0}});return this.isActive(e,t)?(this.player=o,o):(o.destroy(),null)}catch(e){return s.error("Failed to load the YouTube player",e),null}finally{this.creating===o&&(this.creating=null)}})(),this.creating=o,o}appendToBody(){const e=this.modalElement.id;if(e){const t=document.getElementById(e);t&&t!==this.modalElement&&t.remove()}this.modalElement.parentElement!==document.body&&document.body.appendChild(this.modalElement)}isActive(e,t){return this.active&&this.lifecycleVersion===e&&!t?.aborted}}}}]); 2//# sourceMappingURL=component.youtube-video.603b50e0.js.map
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.