1const{fetchJSON}=window.BAO.Utils;class StoreSwitcher extends window.BAO.CustomElement(){constructor(){super(),this.optionsHtml=""}connectedCallback(){if(super.connectedCallback(),window.location.href.indexOf("#geo")>-1)return this.forceRedirect();const params=new Proxy(new URLSearchParams(window.location.search),{get:(searchParams,prop)=>searchParams.get(prop)});if(this.countryParam=params.country,this.countryParam!==null&&this.setStorageFromURL(this.countryParam),this.countryParam!==null){const countryCode=this.countryParam;this.setupCountrySwitcher(countryCode)}else if(this.noLocationStored)fetchJSON("/browsing_context_suggestions.json",{method:"GET"}).then(res=>{const countryCode=res.detected_values.country.handle;this.setupCountrySwitcher(countryCode)});else{const countryCode=window.localStorage.getItem(this.userLocationName);this.setupCountrySwitcher(countryCode)}this.setupListeners()}forceRedirect(){fetchJSON("/browsing_context_suggestions.json",{method:"GET"}).then(res=>{const userCountry=res.detected_values.country.handle;let windowPathname=window.location.pathname;const subdomainFolder=windowPathname.split("/").filter(item=>item.indexOf("en-")>-1);subdomainFolder&&(windowPathname=windowPathname.replace(subdomainFolder,"").replace("//","/")),window.location.href=`${this.sites[this.countries[userCountry].site].url}${windowPathname}?country=${userCountry}`})}setupListeners(){if(super.setupListeners(),this.onOptionClick=this.onOptionClick.bind(this),this.onConfirmClick=this.onConfirmClick.bind(this),this.els?.options?.exists&&this.els.options.elements.forEach(optionEl=>{this.listeners.add(optionEl,"change",this.onOptionClick)}),this.els?.confirm?.exists&&this.els.confirm.elements.forEach(confirmEl=>{this.listeners.add(confirmEl,"click",this.onConfirmClick)}),!window.localStorage.getItem(this.userLocationName)&&this.els?.autoRedirect?.exists&&this.els.confirm?.exists&&!this.autoRedirectFired){const observer=new MutationObserver(mutationsList=>{for(const mutation of mutationsList)if(mutation.type==="attributes"&&mutation.attributeName==="data-url"&&!this.autoRedirectFired){const redirectUrl=this.els.confirm.element.dataset.url;redirectUrl&&(this.autoRedirectFired=!0,observer.disconnect(),window.location.href=redirectUrl)}});observer.observe(this.els.confirm.element,{attributes:!0,attributeFilter:["data-url"]})}}setStorageFromURL(countryCode){this.countries[countryCode].site===this.dataset.store&&window.localStorage.setItem(this.userLocationName,countryCode)}onOptionClick(e){const selectedOptionValue=e.currentTarget.value,selectedOptionCode=e.currentTarget.options[e.currentTarget.selectedIndex].dataset.code;this.els.confirm.elements.forEach(confirmEl=>{confirmEl.dataset.url=this.sites[selectedOptionValue].url,confirmEl.dataset.code=selectedOptionCode})}onConfirmClick(event){event.preventDefault();let windowPathname=window.location.pathname;const subdomainFolder=windowPathname.split("/").filter(item=>item.indexOf("en-")>-1);subdomainFolder&&(windowPathname=windowPathname.replace(subdomainFolder,"").replace("//","/")),this.countries[event.currentTarget.dataset.code].site===this.dataset.store?(window.localStorage.setItem(this.userLocationName,event.currentTarget.dataset.code),this.els["localisation-select"].element.value=event.currentTarget.dataset.code,this.els["localisation-select"].element.dispatchEvent(new Event("change"))):event.currentTarget.hasAttribute("data-url")&&(window.location.href=`${event.currentTarget.dataset.url}${this.dataset.pageUrl}?country=${event.currentTarget.dataset.code}`)}updateShippingLabel(countryCode){if(this.noLocationStored)return;const upperCountryCode=countryCode.toUpperCase();if(this.countries[upperCountryCode]!==void 0){const name=this.countries[upperCountryCode].name;this.externalEls?.country?.exists&&this.externalEls.country.elements.forEach(countryExternalEl=>{countryExternalEl.innerHTML=`${name}`}),window.setTimeout(()=>{document.querySelectorAll('[data-store-switcher-external-el="country"]').forEach(el=>{el.innerHTML=`${name}`})},1e3)}this.externalEls?.trigger?.exists&&this.externalEls.trigger.elements.forEac
1h(triggerExternalEl=>{triggerExternalEl.style.opacity=1})}setupCountrySwitcher(countryCode){this.createOptions(countryCode),this.setDefaultConfirmButtonURL(),this.countries[countryCode].site===this.dataset.store&&window.localStorage.setItem(this.userLocationName,countryCode),this.noLocationStored&&this.countryParam===null&&(this.setAttribute("aria-hidden","false"),document.body.classList.add("util-SiteOverflowed"))}createOptions(countryCode){Object.entries(this.countries).forEach(([key,value])=>{const{name,site,currency}=value,isCurrentSite=key.toLowerCase()===countryCode.toLowerCase();this.optionsHtml+=this.createModalElement(key,site,isCurrentSite,name,currency),this.els.options.element.innerHTML=this.optionsHtml,this.externalEls.drawer.element.innerHTML+=this.createDrawerElement(key,site,isCurrentSite,name,currency)})}createModalElement(code,site,isCurrentSite,country,currency){return`<option 2 data-code="${code}" 3 value="${site}" 4 ${isCurrentSite?"selected":""} 5 > 6 ${country} (${currency}) 7 </option>`}createDrawerElement(code,site,isCurrentSite,country,currency){return`<li class="str-Drawer_Item"> 8 <a 9 class="str-Drawer_Link fz-13_160" 10 href="${this.sites[site].url}${this.dataset.pageUrl}?country=${code}" 11 aria-current="${isCurrentSite?"true":"false"}" 12 > 13 ${country} (${currency}) 14 15 <span class="str-Drawer_Tick"> 16 <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 12 9"> 17 <path fill="currentColor" fill-rule="evenodd" d="M11.304 1.146a.5.5 0 0 1 0 .708l-6.3 6.3a.5.5 0 0 1-.708 0l-3.15-3.15a.5.5 0 1 1 .708-.708L4.65 7.093l5.946-5.947a.5.5 0 0 1 .708 0Z" clip-rule="evenodd"/> 18 </svg> 19 </span> 20 21 <span class="str-Drawer_Arrow"> 22 <svg xmlns="http://www.w3.org/2000/svg" width="13" height="12" viewBox="0 0 13 12" fill="none"> 23 <path d="M0.480469 6.00013H11.4358M11.4358 6.00013L5.95814 0.522461M11.4358 6.00013L5.95814 11.4778" stroke="currentColor" /> 24 </svg> 25 </span> 26 </a> 27 </li>`}setDefaultConfirmButtonURL(){const selectedOptionValue=this.els.options.element.value,selectedOptionCode=this.els.options.element.options[this.els.options.element.selectedIndex].dataset.code;this.els.confirm.elements.forEach(confirmEl=>{confirmEl.dataset.url=this.sites[selectedOptionValue].url,confirmEl.dataset.code=selectedOptionCode})}get noLocationStored(){return window.localStorage.getItem(this.userLocationName)==null||window.localStorage.getItem(this.userLocationName)===void 0&&!window.Shopify.designMode}get userLocationName(){return"BAO-localization"}get sites(){return{UK:{url:"https://www.mauvais.co.uk"},US:{url:"https://us.mauvais.co.uk"},ROW:{url:"https://row.mauvais.co.uk"}}}get countries(){return window.theme.countries}}customElements.get("store-switcher")||customElements.define("store-switcher",StoreSwitcher); 28//# sourceMappingURL=/cdn/shop/t/416/assets/store-switcher.js.map?v=51835121611049753621790864316
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.