void 0===window.MapLoader&&(window.MapLoader={apiLoadingPromise:null,loadedScripts:new Set,async load(e,o=document){const a=o.getElementById?o.getElementById(e):o.querySelector(`#${e}`);if(!a)return null;let i={};try{i=JSON.parse(a.dataset.config||"{}")}catch(e){return null}"undefined"!=typeof GMapConfig&&GMapConfig.debug;const n=i.apiKey||i.key,t=i.mode||"locations",r="undefined"!=typeof GMapConfig?GMapConfig.lang:(document.documentElement.lang||"de").slice(0,2),s=(i.uri||"").replace(/\/$/,"");if(!n)return i;const d=[];if("geojson"!==t&&d.push(`${s}/js/maps/markerclusterer.min.js`),"locations"!==t&&"stories"!==t||d.push(`${s}/js/maps/togeojson.min.js`),await Promise.all(d.map(e=>this.loadScript(e))),window.google&&window.google.maps)return i;if(!window.google&&window.parent&&window.parent.google&&window.parent.google.maps)return window.google=window.parent.google,i;if(this.apiLoadingPromise)return await this.apiLoadingPromise,i;const l=`https://maps.googleapis.com/maps/api/js?key=${n}&libraries=geometry,places&language=${r}`;return this.apiLoadingPromise=this.loadScript(l).then(()=>new Promise(e=>{const o=setInterval(()=>{window.google&&window.google.maps&&(clearInterval(o),e())},50)})).catch(e=>{throw this.apiLoadingPromise=null,e}),await this.apiLoadingPromise,i},loadScript(e){return this.loadedScripts.has(e)||document.querySelector(`script[src="${e}"]`)?Promise.resolve():new Promise((o,a)=>{const i=document.createElement("script");i.type="text/javascript",i.src=e,i.async=!0,i.onload=()=>{this.loadedScripts.add(e),o()},i.onerror=e=>{a(e)},document.head.appendChild(i)})}});var MapLoader=window.MapLoader;