1"use strict";(globalThis.webpackChunktesa_2016=globalThis.webpackChunktesa_2016||[]).push([[6210],{2773:(e,a,l)=>{l.d(a,{_:()=>o});const o="tesaGoogleMapContext"},3855:(e,a,l)=>{l.d(a,{_:()=>n});var o=l(6696);const t="weekly";let i=null;async function n(){let{apiKey:e,libraries:a=[],version:l=t}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(!e)throw new Error("Google Maps API key is required.");return i?i.key!==e&&console.warn("Google Maps already initialized with another API key."):(i={key:e,v:l},(0,o.Ov)(i)),await(0,o.Lg)("maps"),await(0,o.Lg)("marker"),await Promise.all(a.map(e=>(0,o.Lg)(e))),globalThis.google.maps}},4270:(e,a,l)=>{l.d(a,{Z:()=>r});var o=l(5166),t=l(3855),i=l(2773);const n={class:"google-map-wrapper"},s={__name:"GoogleMap",props:{apiKey:{type:String,required:!0},libraries:{type:Array,default:()=>[]},options:{type:Object,default:()=>({})}},emits:["mounted","idle","zoomChanged","centerChanged","boundsChanged","click"],setup(e,a){let{emit:l}=a;const s=e,r=l,u=(0,o.iH)(null),p=(0,o.XI)(null),c=(0,o.XI)(null),d=[];let m=!1;return(0,o.JJ)(i._,{map:p,mapsApi:c}),(0,o.YP)(()=>s.options,e=>{var a;null===(a=p.value)||void 0===a||a.setOptions(e)},{deep:!0}),(0,o.bv)(async()=>{c.value=await(0,t._)({apiKey:s.apiKey,libraries:s.libraries}),!m&&u.value&&(p.value=new c.value.Map(u.value,s.options),r("mounted",p.value),d.push(p.value.addListener("idle",()=>r("idle",!0)),p.value.addListener("zoom_changed",()=>r("zoomChanged",p.value.getZoom())),p.value.addListener("center_changed",()=>r("centerChanged",p.value.getCenter())),p.value.addListener("bounds_changed",()=>r("boundsChanged",p.value.getBounds())),p.value.addListener("click",e=>r("click",e))))}),(0,o.Jd)(()=>{m=!0,d.forEach(e=>e.remove()),p.value&&c.value&&c.value.event.clearInstanceListeners(p.value)}),(e,a)=>((0,o.wg)(),(0,o.iD)("div",n,[(0,o.kq)(" Google Maps owns mapElement; Vue marker slots must stay outside it. "),a[0]||(a[0]=(0,o.Uk)()),(0,o._)("div",{ref_key:"mapElement",ref:u,class:"google-map"},null,512),a[1]||(a[1]=(0,o.Uk)()),(0,o.WI)(e.$slots,"default")]))}};const r=(0,l(3744).Z)(s,[["__scopeId","data-v-32fc699c"]])},1719:(e,a,l)=>{l.d(a,{Z:()=>i});var o=l(5166),t=l(2773);const i={__name:"GoogleMapMarker",props:{position:{type:Object,required:!0},icon:{type:[Object,String],default:null},title:{type:String,default:""},visible:{type:Boolean,default:!0},zIndex:{type:Number,default:null},options:{type:Object,default:()=>({})}},emits:["click"],setup(e,a){let{emit:l}=a;const i=e,n=l,s=(0,o.f3)(t._);let r=null,u=null;const p=(0,o.Fl)(()=>({...i.options,position:i.position,icon:i.icon||void 0,title:i.title||void 0,visible:i.visible,zIndex:i.zIndex??void 0}));function c(){var e,a;if(null!=s&&null!==(e=s.map)&&void 0!==e&&e.value&&null!=s&&null!==(a=s.mapsApi)&&void 0!==a&&a.value&&i.position)return r?void r.setOptions({map:s.map.value,...p.value}):(r=new s.mapsApi.value.Marker({map:s.map.value,...p.value}),void(u=r.addListener("click",e=>n("click",e))))}return(0,o.YP)(()=>{var e;return null==s||null===(e=s.map)||void 0===e?void 0:e.value},c,{immediate:!0}),(0,o.YP)(p,c,{deep:!0}),(0,o.Jd)(()=>{var e,a;null===(e=u)||void 0===e||e.remove(),r&&null!=s&&null!==(a=s.mapsApi)&&void 0!==a&&a.value&&(s.mapsApi.value.event.clearInstanceListeners(r),r.setMap(null))}),(e,a)=>(0,o.wy)(((0,o.wg)(),(0,o.iD)("span",null,null,512)),[[o.F8,!1]])}}},5248:(e,a,l)=>{l.r(a),l.d(a,{default:()=>L});var o=l(5166);const t=l.p+"images/maps-marker.b11531e2.svg";var i=l(4270),n=l(1719),s=l(3855),r=l(7105);const u={class:"locations-map",role:"presentation"},p={class:"locations-map__map-controls"},c=["aria-label"],d=["aria-label"],m={key:0,class:"locations-map__detail-layer"},v=["aria-label"],g={class:"locations-map__detail-layer-content-wrapper copy--small"},y={class:"copy t--semibold"},b=["innerHTML"],h={key:0},f={key:1},_=["href"],w={class:"navigation-link__text"},k={__name:"LocationsMap",props:{apiKey:{type:String,required:!0},locations:{type:Array,default:()=>[],required:!0},labels:{type:Object,default:()=>({})},showDetailLayer:{type:Boolean,default:!0}},setup(e){var a,l;
1const k=e,{labelStore:L}=(0,r.b)({labelsRequired:["global"]}),S=(0,o.iH)(null),z=(0,o.iH)(null),I=(0,o.iH)({zoom:16,minZoom:2,maxZoom:18,disableDefaultUI:!0,lat:0,lng:0,center:{lat:(null===(a=k.locations[0])||void 0===a?void 0:a.lat)??0,lng:(null===(l=k.locations[0])||void 0===l?void 0:l.lng)??0},styles:[{featureType:"poi",stylers:[{visibility:"off"}]}]}),T=(0,o.iH)(12),C=(0,o.iH)(null),M=(0,o.Fl)(()=>{if(!S.value)return null;let e=84;return T.value<=3?e=32:T.value<=4&&(e=64),{url:t,size:new S.value.Size(e,e),scaledSize:new S.value.Size(e,e),anchor:new S.value.Point(e/2,e/2)}}),U=(0,o.Fl)(()=>k.locations.filter(e=>e.lat&&e.lng).map(e=>({id:e.id,position:{lat:e.lat,lng:e.lng}})));function P(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:U.value,a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:e.length;if(!S.value||!z.value)return;const l=new S.value.LatLngBounds;for(let o=0;o<Math.min(a,e.length);o++)l.extend(new S.value.LatLng(e[o].position.lat,e[o].position.lng));z.value.fitBounds(l)}function A(e){var a;z.value=e,!S.value&&null!==(a=globalThis.google)&&void 0!==a&&a.maps&&(S.value=globalThis.google.maps),U.value.length>1&&P()}function Z(){z.value.setZoom(z.value.getZoom()+1)}function q(){z.value.setZoom(z.value.getZoom()-1)}return(0,o.bv)(()=>{(0,s._)({apiKey:k.apiKey}).then(e=>{S.value=e,z.value&&U.value.length>1&&P()})}),(0,o.YP)(U,e=>{C.value=null,null!=e&&e.length&&P()},{deep:!0}),(a,l)=>{const t=(0,o.up)("icon");return(0,o.wg)(),(0,o.iD)("section",u,[(0,o.Wm)(i.Z,{"api-key":e.apiKey,options:I.value,onMounted:A,onZoomChanged:l[0]||(l[0]=e=>T.value=e)},{default:(0,o.w5)(()=>[((0,o.wg)(!0),(0,o.iD)(o.HY,null,(0,o.Ko)(U.value,(e,a)=>((0,o.wg)(),(0,o.j4)(n.Z,{position:e.position,key:`location-marker-${e.id}-${a}`,icon:M.value,onClick:a=>{return l=e.id,void(k.showDetailLayer&&(C.value=k.locations.find(e=>e.id===l),C.value&&requestAnimationFrame(()=>{z.value.panTo({lat:C.value.lat,lng:C.value.lng})})));var l}},null,8,["position","icon","onClick"]))),128))]),_:1},8,["api-key","options"]),l[9]||(l[9]=(0,o.Uk)()),(0,o._)("div",p,[(0,o._)("button",{class:(0,o.C_)(["locations-map__zoom-button",{"-disabled":T.value>=I.value.maxZoom}]),"aria-label":(0,o.SU)(L)["global.plus"],onClick:Z},[(0,o.Wm)(t,{name:"plus",class:"locations-map__zoom-icon"})],10,c),l[2]||(l[2]=(0,o.Uk)()),(0,o._)("button",{class:(0,o.C_)(["locations-map__zoom-button",{"-disabled":T.value<=I.value.minZoom}]),"aria-label":(0,o.SU)(L)["global.minus"],onClick:q},[(0,o.Wm)(t,{name:"minus",class:"locations-map__zoom-icon"})],10,d)]),l[10]||(l[10]=(0,o.Uk)()),C.value?((0,o.wg)(),(0,o.iD)("article",m,[(0,o._)("button",{type:"button",class:"locations-map__detail-layer-close-button","aria-label":(0,o.SU)(L)["global.close"],onClick:l[1]||(l[1]=e=>C.value=null)},[(0,o.Wm)(t,{name:"close",class:"locations-map__detail-layer-close-icon"})],8,v),l[8]||(l[8]=(0,o.Uk)()),(0,o._)("div",g,[(0,o._)("h3",y,(0,o.zw)(C.value.title),1),l[4]||(l[4]=(0,o.Uk)()),(0,o._)("p",{innerHTML:C.value.addressLines,class:"marg-t--1"},null,8,b),l[5]||(l[5]=(0,o.Uk)()),C.value.telephone?((0,o.wg)(),(0,o.iD)("p",h,(0,o.zw)(e.labels["modules.location.phone"])+":Â "+(0,o.zw)(C.value.telephone),1)):(0,o.kq)("v-if",!0),l[6]||(l[6]=(0,o.Uk)()),C.value.telefax?((0,o.wg)(),(0,o.iD)("p",f,(0,o.zw)(e.labels["modules.location.fax"])+":Â "+(0,o.zw)(C.value.telefax),1)):(0,o.kq)("v-if",!0),l[7]||(l[7]=(0,o.Uk)()),(0,o._)("a",{href:C.value.url,target:"_blank",rel:"noreferrer nofollow noopender",class:"navigation-link locations-map__detail-layer-link"},[(0,o._)("span",w,(0,o.zw)(e.labels["modules.location.more_information"]),1),l[3]||(l[3]=(0,o.Uk)()),(0,o.Wm)(t,{name:"angle-right",class:"navigation-link__icon"})],8,_)])])):(0,o.kq)("v-if",!0)])}}};const L=(0,l(3744).Z)(k,[["__scopeId","data-v-97a681b8"]])},6696:(e,a,l)=>{l.d(a,{Lg:()=>h,Ov:()=>b});const o=e=>`The setOptions() function should only be called once. The options passed to the additional call (${JSON.stringify(e)}) will be ignored.`,t=e=>`The google.maps.importLibrary() function is already defined, and @googlemaps/js-api-loader will use the existing function instead of overwriting it. The options passed to setOptions (${JSON.stringify(e)}) will be ignored.`,i="No options were set before calling importLibrary. Make sure to configure the loader using setOptions().",n="There already is a script loading the Google Maps JavaScript API, and no google.maps.importLibrary function is defined. @googlemaps/js-api-loader will proceed to bootstrap the API with the specified options, but the existing script might cause problems using the API. Make sure to remove the script loading the API.",s="The 'apiKey' parameter was used in setOptions(), but 'key' is the correct parameter name. Please update your configuration.",r=()=>{},u=()=>{},p="@googlemaps/js-api-loader",c={createScriptURL:e=>e};let d;function m(){if(d)return d;const e=globalThis.trustedTypes;if(!e)return d=c,d;
1try{d=e.createPolicy(p,{createScriptURL:e=>e})}catch(e){r(`Failed to create Trusted Types policy "${a=p}": ${(l=e)instanceof Error?l.message:String(l)}.\n\nIf your Content Security Policy uses "require-trusted-types-for 'script'", allow this policy with "trusted-types ${a} google-maps-api-loader google-maps-api#html lit-html". The "google-maps-api-loader", "lit-html", and "google-maps-api#html" policies are required for full Maps JavaScript API execution. Falling back to a string script URL.`),d=c}var a,l;return d}const v=e=>{var a,l,o,t="The Google Maps JavaScript API",i="google",n="importLibrary",s="__ib__",r=document,u=window,p=u[i]||(u[i]={}),c=p.maps||(p.maps={}),d=new Set,v=new URLSearchParams,g=()=>a||(a=new Promise(async(n,u)=>{for(o in await(l=r.createElement("script")),v.set("libraries",[...d]+""),e)v.set(o.replace(/[A-Z]/g,e=>"_"+e[0].toLowerCase()),e[o]);v.set("callback",i+".maps."+s),function(e,a){e.src=m().createScriptURL(a)}(l,"https://maps.googleapis.com/maps/api/js?"+v),c[s]=n,l.onerror=()=>a=u(Error(t+" could not load.")),l.nonce=r.querySelector("script[nonce]")?.nonce||"",r.head.append(l)}));c[n]?console.warn(t+" only loads once. Ignoring:",e):c[n]=(e,...a)=>d.add(e)&&g().then(()=>c[n](e,...a))};const g=!1;let y=!1;function b(e){y?r(o(e)):(e.apiKey&&(r(s),e.key||(e.key=e.apiKey)),function(e){const a=Boolean(window.google?.maps?.importLibrary);if(a)u(t(e));else if(g){document.querySelector('script[src*="maps.googleapis.com/maps/api/js"]')&&r(n)}a||v(e)}(e),y=!0)}async function h(e){if(y||r(i),!window?.google?.maps?.importLibrary)throw new Error("google.maps.importLibrary is not installed.");return await google.maps.importLibrary(e)}}}]);
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.