PageSourceSearch

https://www.lyleandscott.com/cdn/shop/t/458/assets/lyle-market-switcher.js?v=111436349433394605061788364388

js lyleandscott.com collected 2026-09-24 23:00:06 UTC 6,874 bytes, 2 lines download raw bytes

1const GEOLOCATION_ENDPOINT="/browsing_context_suggestions.json",MARKET_SWITCHER_PREFERENCE_KEY="lyleMarketSwitcherPreference",LEGACY_PERSISTENCE_KEY="cnvs",ONETRUST_WAIT_TIMEOUT_MS=3e3,CURRENT_COUNTRY_PLACEHOLDER="__CURRENT_COUNTRY__",SUGGESTED_COUNTRY_PLACEHOLDER="__SUGGESTED_COUNTRY__";class LyleMarketSwitcher extends HTMLElement{#countries=[];#form=null;#modal=null;#modalCountryInput=null;#suggestedCountry=null;#suggestionPopup=null;#continueButton=null;#suggestedButton=null;#oneTrustTimer=null;#suggestionCheckStarted=!1;connectedCallback(){this.#oneTrustTimer=null,this.#suggestionCheckStarted=!1,this.#form=this.querySelector("form"),this.#modal=this.querySelector("[data-market-switcher-modal]"),this.#modalCountryInput=this.querySelector("[data-market-switcher-modal-country]"),this.#suggestionPopup=this.querySelector("#MarketSwitcherSuggestionPopup"),this.#continueButton=this.querySelector(".market-switcher-modal__continue"),this.#suggestedButton=this.querySelector(".market-switcher-modal__suggested"),this.#countries=this.#parseCountries(),this.addEventListener("change",this.#handleChange),this.querySelector("[data-market-switcher-search]")?.addEventListener("input",this.#handleSearch),this.#continueButton?.addEventListener("click",this.#handleContinue),this.#suggestedButton?.addEventListener("click",this.#handleSuggestedCountry),window.addEventListener("onetrust:opened",this.#handleOneTrustOpened),window.addEventListener("onetrust:closed",this.#handleOneTrustClosed),this.#waitForOneTrust()}disconnectedCallback(){this.removeEventListener("change",this.#handleChange),this.querySelector("[data-market-switcher-search]")?.removeEventListener("input",this.#handleSearch),this.#continueButton?.removeEventListener("click",this.#handleContinue),this.#suggestedButton?.removeEventListener("click",this.#handleSuggestedCountry),window.removeEventListener("onetrust:opened",this.#handleOneTrustOpened),window.removeEventListener("onetrust:closed",this.#handleOneTrustClosed),this.#oneTrustTimer&&window.clearTimeout(this.#oneTrustTimer)}#waitForOneTrust(){if(window.lyleOneTrustBannerOpen!==!0){if(window.lyleOneTrustBannerOpen===!1){this.#scheduleSuggestionCheck();return}this.#oneTrustTimer=window.setTimeout(()=>this.#scheduleSuggestionCheck(),3e3)}}#scheduleSuggestionCheck(){if(!this.#suggestionCheckStarted){if(this.#suggestionCheckStarted=!0,window.requestIdleCallback){window.requestIdleCallback(()=>this.#handleGeolocationSuggestion());return}window.setTimeout(()=>this.#handleGeolocationSuggestion(),0)}}#handleOneTrustOpened=()=>{this.#oneTrustTimer&&window.clearTimeout(this.#oneTrustTimer),this.#suggestionPopup?.hidePopover?.()};#handleOneTrustClosed=()=>{if(this.#oneTrustTimer&&window.clearTimeout(this.#oneTrustTimer),this.#suggestedCountry&&!this.#getPreference()?.code){this.#suggestionPopup?.showPopover?.();return}this.#scheduleSuggestionCheck()};#parseCountries(){const source=this.querySelector("[data-market-switcher-countries]");if(!source?.textContent)return[];try{const countries=JSON.parse(source.textContent);return Array.isArray(countries)?countries:[]}catch{return[]}}#handleChange=event=>{const input=event.target.closest("[data-market-switcher-submit]");input&&(input.dataset.marketSwitcherType==="country"&&this.#setPreference({code:input.value,name:input.dataset.marketSwitcherName||input.value}),input.closest("[popover]")?.hidePopover?.(),this.#submitForm())};#handleSearch=event=>{const query=event.target.value.trim().toLowerCase(),items=[...this.querySelectorAll("[data-market-switcher-country]")];let visibleCount=0;items.forEach(item=>{const searchValue=item.dataset.marketSwitcherSearchValue||"",isVisible=!query||searchValue.includes(query);item.hidden=!isVisible,isVisible&&(visibleCount+=1)});const emptyState=this.querySelector("[data-market-switcher-empty]");emptyState&&(emptyState.hidden=visibleCount>0)};#handleContinue=()=>{this.#setPreference({code:this.dataset.currentCountryCode,name:this.dataset.currentCountryName}),this.#suggestionPopup?.hidePopover?.()};#handleSuggestedCountry=()=>{if(!this.#suggestedCountry)return;this.#setPreference(this.#suggestedCountry);const countryInput=[...this.querySelectorAll('input[name="country_code"]')].find(input=>input.value===this.#suggestedCountry.code);countryInput?countryInput.checked=!0:this.#modalCountryInput&&(this.#modalCountryInput.disabled=!1,this.#modalCountryInput.value=this.#suggestedCountry.code),this.#submitForm(
1)};async#handleGeolocationSuggestion(){if(this.dataset.enableModal!=="true"||this.#getPreference()?.code)return;const detectedCode=(await this.#fetchGeolocation())?.detected_values?.country?.handle?.toUpperCase();if(!detectedCode)return;const suggestedCountry=this.#countries.find(country=>country.code===detectedCode)||this.#countries.find(country=>country.default)||null;suggestedCountry&&suggestedCountry.code!==this.dataset.currentCountryCode&&(this.#suggestedCountry=suggestedCountry,this.#updateModalContent(suggestedCountry),window.lyleOneTrustBannerOpen!==!0&&this.#suggestionPopup?.showPopover?.())}async#fetchGeolocation(){try{const response=await fetch(GEOLOCATION_ENDPOINT,{credentials:"same-origin",headers:{Accept:"application/json"}});return response.ok?response.json():null}catch{return null}}#updateModalContent(suggestedCountry){if(!this.#modal)return;const replacements={[CURRENT_COUNTRY_PLACEHOLDER]:this.dataset.currentCountryName||"",[SUGGESTED_COUNTRY_PLACEHOLDER]:suggestedCountry.name||suggestedCountry.code};this.#setText("[data-market-switcher-modal-title]",this.#modal.dataset.titleTemplate,replacements),this.#setText("[data-market-switcher-modal-text]",this.#modal.dataset.textTemplate,replacements),this.#setText(".market-switcher-modal__suggested .button__label",this.#modal.dataset.suggestedCtaTemplate,replacements),this.#setText(".market-switcher-modal__continue .button__label",this.#modal.dataset.continueCtaTemplate,replacements)}#setText(selector,template,replacements){const element=this.querySelector(selector);if(!element||!template)return;let text=template;Object.entries(replacements).forEach(([placeholder,value])=>{text=text.replaceAll(placeholder,value)}),element.textContent=text}#setPreference(country){if(country?.code)try{window.localStorage.setItem(MARKET_SWITCHER_PREFERENCE_KEY,JSON.stringify({code:country.code,name:country.name||country.code}))}catch{}}#getPreference(){try{const preference=window.localStorage.getItem(MARKET_SWITCHER_PREFERENCE_KEY);return preference?JSON.parse(preference):JSON.parse(window.localStorage.getItem(LEGACY_PERSISTENCE_KEY)||"{}")?.["market-switcher"]?.preference||null}catch{return null}}#submitForm(){this.#form?.submit()}}customElements.get("lyle-market-switcher")||customElements.define("lyle-market-switcher",LyleMarketSwitcher);
2//# sourceMappingURL=/cdn/shop/t/458/assets/lyle-market-switcher.js.map?v=111436349433394605061788364388

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.