(()=>{"use strict";function e(t){return e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},e(t)}function t(t){var s=function(t,s){if("object"!==e(t)||null===t)return t;var r=t[Symbol.toPrimitive];if(void 0!==r){var i=r.call(t,s||"default");if("object"!==e(i))return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===s?String:Number)(t)}(t,"string");return"symbol"===e(s)?s:String(s)}class s extends HTMLElement{constructor(){var e,s,r;super(),e=this,r=()=>{const{popularSearchItems:e}=this.domNodes;e.forEach((e=>e.href=createSearchLink(e.dataset.psQuery)))},(s=t(s="setPopularSearchesLink"))in e?Object.defineProperty(e,s,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[s]=r,this.selectors={searchQuery:"[data-query]",searchMessage:"[data-message]",input:"[data-search-input]",submit:'button[type="submit"]',loading:"[data-spinner]",clear:"[data-clear-search]",popularSearchItems:["[data-ps-item]"]},this.container=document.querySelector("[data-search-popup]"),this.domNodes=queryDomNodes(this.selectors,this.container),this.cachedResults={},this.transitionDuration=300,this.input=this.querySelector('input[type="search"]'),this.predictiveSearchResults=this.querySelector("[data-predictive-search]"),this.popularSearches=this.querySelector("[data-popular-searches]"),this.searchCount=this.querySelector("[data-search-count]"),this.setupEventListeners()}setupEventListeners(){const{clear:e}=this.domNodes;this.querySelector("form.m-search-form").addEventListener("submit",this.onFormSubmit.bind(this)),this.input.addEventListener("input",debounce((e=>{this.onChange(e)}),300).bind(this)),e.addEventListener("click",this.onClearSearch.bind(this))}getQuery(){return this.input.value.trim()}onChange(){const e=this.getQuery();e.length?this.getSearchResults(e):this.close(!0)}onFormSubmit(e){this.getQuery().length&&!this.querySelector('[aria-selected="true"] a')||e.preventDefault()}onClearSearch(e){e.preventDefault(),this.input.value="",this.onChange()}getSearchResults(e){const t=e.replace(" ","-").toLowerCase();this.toggleSpinnerLoading(!0),this.toggleClearSearch(!1);const s="true"===this.dataset.searchByTag,r="true"===this.dataset.searchByBody,i=this.dataset.unavailableProductsOption;let a="title,product_type,vendor,variants.sku,variants.title";if(s&&(a+=",body"),r&&(a+=",tag"),this.cachedResults[t])return void this.renderSearchResults(this.cachedResults[t]);let n=`${window.MinimogSettings.routes.predictive_search_url}?q=${encodeURIComponent(e)}&resources[type]=product&resources[options][unavailable_products]=${i}&resources[options][fields]=${a}§ion_id=predictive-search`;fetch(`${n}`).then((e=>{if(!e.ok){var t=new Error(e.status);throw this.close(),t}return e.text()})).then((e=>{const s=(new DOMParser).parseFromString(e,"text/html").querySelector("#shopify-section-predictive-search").innerHTML;this.cachedResults[t]=s,this.renderSearchResults(s)})).catch((e=>{throw this.close(),e}))}renderSearchResults(e){this.predictiveSearchResults.innerHTML=e,this.setAttribute("results",!0);this.querySelector("[data-search-items-wrapper]").childElementCount>0?this.renderSearchQueryAndMessage(!0):this.renderSearchQueryAndMessage(!1),this.toggleSpinnerLoading(!1),this.toggleClearSearch(!0),this.open()}renderSearchQueryAndMessage(e){const{input:t,searchQuery:s,searchMessage:r}=this.domNodes,i=t.value,{resultsTitle:a}=r.dataset;s.textContent=i,r.textContent=e?a:r.dataset.noResults}toggleSpinnerLoading(e){const{loading:t,submit:s}=this.domNodes;s.style.visibility=e?"hidden":"visible",t.style.visibility=e?"visible":"hidden"}toggleClearSearch(e){const{clear:t}=this.domNodes;t.style.visibility=e?"visible":"hidden"}open(){var e;this.setAttribute("open",!0),this.input.setAttribute("aria-expanded",!0),this.isOpen=!0,this.predictiveSearchResults.classList.remove("hidden"),null===(e=this.popularSearches)||void 0===e||e.classList.add("hidden"),this.searchCount.classList.remove("hidden")}close(){var e;arguments.length>0&&void 0!==arguments[0]&&arguments[0]&&(this.input.value="",this.removeAttribute("results"),this.toggleClearSearch(!1)),this.removeAttribute("open"),this.predictiveSearchResults.classList.add("hidden"),null===(e=this.popularSearches)||void 0===e||e.classList.remove("hidden"),this.searchCount.classList.add("hidden")}}customElements.define("predictive-search",s)})();