PageSourceSearch

https://ritual.com/cdn/shop/t/577/assets/predictive-search.DLta8SBk.min.js

js ritual.com collected 2026-09-24 08:30:09 UTC 7,119 bytes, 1 lines download raw bytes

1var e=Object.defineProperty,t=(t,i,s)=>((t,i,s)=>i in t?e(t,i,{enumerable:!0,configurable:!0,writable:!0,value:s}):t[i]=s)(t,"symbol"!=typeof i?i+"":i,s);import{B as i}from"./BaseElement.DAzHg0T6.min.js";import{L as s}from"./LiveRegionUtility.B3_F1E5Z.min.js";import"./vendor-lit.Cg17OMaX.min.js";import"./aria-live-region-context.BL8qyJKc.min.js";window.customElements.define("predictive-search",class extends i{constructor(){super(...arguments),t(this,"$liveRegionUtility",new s(this)),t(this,"resultsMaxHeight"),t(this,"searchTerm",""),t(this,"input"),t(this,"clearButton"),t(this,"predictiveSearchResults"),t(this,"predictiveSearchResultsMount"),t(this,"cachedResults",{}),t(this,"abortController",new AbortController),t(this,"allPredictiveSearchInstances",[])}connectedCallback(){super.connectedCallback(),this.input=this.querySelector('input[type="search"]'),this.clearButton=this.querySelector("[data-search-clear]"),this.predictiveSearchResults=this.querySelector("[data-predictive-search]"),this.predictiveSearchResultsMount=this.querySelector("[data-predictive-search-results-mount]"),this.allPredictiveSearchInstances=document.querySelectorAll("predictive-search"),this.setupEventListeners(),this.syncClearButtonVisibility(),this.syncDefaultPanel()}setupEventListeners(){var e;this.input.form.addEventListener("submit",this.onFormSubmit.bind(this)),this.input.addEventListener("focus",this.onFocus.bind(this)),this.input.addEventListener("input",this.onChange.bind(this)),this.addEventListener("focusout",this.onFocusOut.bind(this)),this.addEventListener("keyup",this.onKeyup.bind(this)),this.addEventListener("keydown",this.onKeydown.bind(this)),null==(e=this.clearButton)||e.addEventListener("click",this.onClearClick.bind(this))}syncDefaultPanel(){const e=this.querySelector("[data-predictive-search-default]"),t=this.predictiveSearchResultsMount;e&&t&&(t.querySelector("#predictive-search-results-groups-wrapper")?(e.classList.add("hidden"),e.setAttribute("aria-hidden","true")):(e.classList.remove("hidden"),e.setAttribute("aria-hidden","false")))}syncClearButtonVisibility(){if(!this.clearButton)return;const e=this.input.value.trim().length>0;this.clearButton.classList.toggle("hidden",!e)}onClearClick(e){e.preventDefault(),this.input.value="",this.onChange(),this.input.focus()}get query(){return this.input.value.trim()}onChange(){var e;const t=this.query;if(this.searchTerm&&t.startsWith(this.searchTerm)||null==(e=this.querySelector("#predictive-search-results-groups-wrapper"))||e.remove(),this.updateSearchForTerm(this.searchTerm,t),this.searchTerm=t,!this.searchTerm.length)return this.close(!0),void this.syncClearButtonVisibility();this.syncClearButtonVisibility(),this.getSearchResults(this.searchTerm)}onFormSubmit(e){this.query.length&&!this.querySelector('[aria-selected="true"] a')||e.preventDefault()}onFocus(){const e=this.query;if(!e.length)return this.predictiveSearchResultsMount&&(this.predictiveSearchResultsMount.innerHTML=""),this.removeAttribute("results"),void this.open();this.searchTerm!==e?this.onChange():"true"===this.getAttribute("results")?this.open():this.getSearchResults(this.searchTerm)}onFocusOut(){setTimeout(()=>{this.contains(document.activeElement)||this.close()})}onKeyup(e){switch(this.query.length||this.close(!0),e.preventDefault(),e.code){case"ArrowUp":this.switchOption("up");break;case"ArrowDown":this.switchOption("down");break;case"Enter":this.selectOption()}}onKeydown(e){"ArrowUp"!==e.code&&"ArrowDown"!==e.code||e.preventDefault()}updateSearchForTerm(e,t){var i;const s=null==(i=this.searchForTextElement)?void 0:i.innerText;if(s){if(s.match(new RegExp(e,"g")).length>1)return;const i=s.replace(e,t);this.searchForTextElement.innerText=i}}switchOption(e){if(!this.getAttribute("open"))return;const t="up"===e;this.selectedElement=this.querySelector('[aria-selected="true"]');const i=Array.from(this.querySelectorAll("li, [data-predictive-search-item]")).filter(e=>null!==e.offsetParent);let s=0;if(t&&!this.selectedElement)return;let r=-1,n=0;for(;-1===r&&n<i.length;)i[n]===this.selectedElement&&(r=n),n++;if(!t&&this.selectedElement?s=r===i.length-1?0:r+1:t&&(s=0===r?i.length-1:r-1),s===r)return;const h=i[s];h.setAttribute("aria-selected",!0),this.selectedElement&&this.selectedElement.setAttribute("aria-selected",!1),this.input.setAttribute("aria-activedescendant",h.id)}selectOption(){const e=this.querySelector('[aria-selected="true"] a, button[aria-selected="true"]');e&&e.click()}getSearchResults(e){const t=e.replace(" ","-").toLowerCase();this.setLiveRegionLoadingState(),this.cachedResults[t]?this.renderSearchResults(this.cachedResults[t]):fetch(`${window.routes.predictive_search_url}?q=${encodeURIComponent(e)}&section_id=predictive-search`,{signal:this.abortController.signal}).then(e=>{if(!e.ok){var t=new Error(e.status);throw this.close(),t}return e.text()}).then(e=>{const i=(new DOMParser).parseFromString(e,"text/html").querySelector("#shopify-section-predictive-search").innerHTML;
1this.allPredictiveSearchInstances.forEach(e=>{e.cachedResults[t]=i}),this.renderSearchResults(i)}).catch(e=>{if(20!==(null==e?void 0:e.code))throw this.close(),e})}setLiveRegionLoadingState(){this.loadingText=this.loadingText||this.getAttribute("data-loading-text"),this.$liveRegionUtility.announce({message:this.loadingText}),this.setAttribute("loading",!0),this.syncDefaultPanel()}renderSearchResults(e){const t=this.predictiveSearchResultsMount||this.predictiveSearchResults,i=(new DOMParser).parseFromString(e,"text/html"),s=i.querySelector("#predictive-search-results"),r=i.querySelector("[data-predictive-search-live-region-count-value]");if(s&&(null==t?void 0:t.hasAttribute("data-predictive-search-results-mount"))){t.innerHTML=s.innerHTML,t.setAttribute("role",s.getAttribute("role")||"listbox");const e=this.querySelector("[data-predictive-search-live-region-count-value]");r&&(e?e.replaceWith(r):t.after(r))}else t.innerHTML=e;this.setAttribute("results",!0),this.setLiveRegionResults(),this.open()}setLiveRegionResults(){var e;this.removeAttribute("loading"),this.$liveRegionUtility.announce({message:(null==(e=this.querySelector("[data-predictive-search-live-region-count-value]"))?void 0:e.textContent)??""})}getResultsMaxHeight(){return this.resultsMaxHeight=window.innerHeight-document.querySelector(".section-header").getBoundingClientRect().bottom,this.resultsMaxHeight}open(){this.predictiveSearchResults.style.maxHeight=this.resultsMaxHeight||`${this.getResultsMaxHeight()}px`,this.setAttribute("open",!0),this.input.setAttribute("aria-expanded",!0),this.syncDefaultPanel()}close(e=!1){this.closeResults(e)}closeResults(e=!1){e&&(this.input.value="",this.removeAttribute("results"),this.predictiveSearchResultsMount&&(this.predictiveSearchResultsMount.innerHTML=""));const t=this.querySelector('[aria-selected="true"]');t&&t.setAttribute("aria-selected",!1),this.input.setAttribute("aria-activedescendant",""),this.removeAttribute("loading"),this.removeAttribute("open"),this.input.setAttribute("aria-expanded",!1),this.resultsMaxHeight=!1,this.predictiveSearchResults.removeAttribute("style"),this.syncDefaultPanel()}});

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.