import{h as a}from"./vendors-DM5rI9ar-v01.js";import{a as d}from"./master-Blhiy3Sk-v01.js";import{d as l,o as r,j as t,g as c,m as s,l as o,w as u,c as b,n as p,T as y}from"./vendors-vue-framework-bRted2Dh-v01.js";import{a as g}from"./getyourguide-compass-D_dAT6Ws-v01.js";const i={VISIBILITY:"visibility",MOUNT:"mount",PAGE_LOAD:"page_load"};function m(){return"IntersectionObserver"in window&&"IntersectionObserverEntry"in window&&"intersectionRatio"in window.IntersectionObserverEntry.prototype&&"isIntersecting"in window.IntersectionObserverEntry.prototype}const h=l({name:"LazyLoadedComponent",props:{componentFactory:{type:[Object],required:!0},componentProps:{type:Object,required:!1,default:()=>({})},observerOptions:{type:Object,required:!1,default:()=>{}},lazyLoadingTrigger:{type:String,default:i.VISIBILITY,validator:e=>Object.values(i).includes(e)},disableLazyLoading:{type:Boolean,required:!1,default:!1},enableLoadingTreatment:{type:Boolean,required:!1,default:!1}},data(){return{shouldRender:!1}},mounted(){if(!this.disableLazyLoading)switch(this.lazyLoadingTrigger){case i.VISIBILITY:this.triggerVisibilityRendering();break;case i.MOUNT:this.triggerMountRendering();break;case i.PAGE_LOAD:this.triggerPageLoadRendering();break;default:this.triggerVisibilityRendering();break}},methods:{triggerMountRendering(){this.shouldRender=!0},triggerPageLoadRendering(){document.readyState==="complete"?this.shouldRender=!0:window.addEventListener("load",()=>{this.shouldRender=!0})},triggerVisibilityRendering(){m()?new IntersectionObserver(this.trackVisibilityObserver,this.observerOptions).observe(this.$el):(window.addEventListener("resize",this.debouncedTrackVisibility),window.addEventListener("scroll",this.debouncedTrackVisibility))},debouncedTrackVisibility(){return a(this.trackVisibility,400)()},trackVisibility(){d.isInViewport(this.$el,!0)&&(this.shouldRender=!0,window.removeEventListener("resize",this.debouncedTrackVisibility),window.removeEventListener("scroll",this.debouncedTrackVisibility))},trackVisibilityObserver(e,n){e&&e[0].isIntersecting&&(this.shouldRender=!0,n.unobserve(this.$el))}}});function f(e,n,L,v,w,I){return e.disableLazyLoading?(r(),t(o(e.componentFactory),c(s({key:0},e.componentProps)),null,16)):(r(),t(y,{key:1,name:"show"},{default:u(()=>[e.shouldRender?(r(),t(o(e.componentFactory),s({key:0},e.componentProps,{class:"lazy-loaded-component"}),null,16)):(r(),b("div",{key:1,class:p({fallback:e.enableLoadingTreatment})},null,2))]),_:1}))}const T=g(h,[["render",f]]);export{T as L};
//# sourceMappingURL=lazy-loaded-component-Cz3o8jfP-v01.js.map
