PageSourceSearch

https://www.tristanstyle.com/cdn/shop/t/109/assets/findify-autocomplete.js?v=135468858491857602421781536517

js tristanstyle.com collected 2026-09-25 23:39:47 UTC 5,479 bytes, 2 lines download raw bytes

1const initFindifyAutocompleteEvents=()=>{let selector="input[data-search-text]",rid,q,item_limit,activeInput,latestRequestId=0;const msDelay=250,getSearchDestination=query=>`${window.Shopify?.routes?.root?window.Shopify.routes.root:""}search?q=${encodeURIComponent(query)}`;if(findify){let meta=findify.autocomplete.state.meta;rid=meta.rid,q=meta.q,item_limit=meta.item_limit}const redirectionFeedback=async(query,rid2)=>{try{findify.core.analytics.sendEvent("redirect",{rid:rid2,suggestion:query})}catch(error){console.log("error",error)}},navigate=(e,query,rid2)=>{const url=getSearchDestination(query),openInNewWindow=e&&(e.ctrlKey||e.metaKey),redirections=findify.core.merchantConfig.redirections,redirectionURL=redirections&&redirections[query]?redirections[query]:url;redirections&&redirections[query]&&redirectionFeedback(query,rid2),window&&(openInNewWindow?window.open(redirectionURL,"_blank"):window.location.href=redirectionURL)},preventDefaults=e=>{e.preventDefault(),e.stopPropagation()},onSearch=e=>{preventDefaults(e);const query=e.target.value;navigate(e,query)},initSuggestionAnalytics=async(e,suggestion)=>{const{q:query,rid:rid2}=findify.autocomplete.state.meta;try{findify.core.analytics.sendEvent("click-suggestion",{rid:rid2,suggestion})}catch(error){console.log("error",error)}return navigate(e,suggestion,rid2)},initOnSuggestionEvents=()=>{document.querySelectorAll(".findify-autocomplete [data-findify-suggestion]").forEach(i=>{const clone=i.cloneNode(!0);i.parentNode.replaceChild(clone,i),clone.addEventListener("click",e=>{e.preventDefault(),e.stopPropagation();const suggestion=e.target?.innerText;initSuggestionAnalytics(e,suggestion)})})},getBottom=el=>{const{bottom}=el.getBoundingClientRect();return bottom},setAutocompletePosition=input=>{const top=getBottom(input)+2,autocomplete=document.querySelector(".findify-autocomplete");autocomplete&&(autocomplete.style.top=`${top}px`,autocomplete.style.height="max-content",autocomplete.style.maxHeight=`calc(100vh - ${top}px)`)},closeAutocomplete=(e,isEscape)=>{const ac=document.querySelector(".findify-autocomplete");ac&&((isEscape||!ac.classList.contains("findify-hidden"))&&(ac.classList.add("findify-hidden"),activeInput?.parentNode?.querySelector('button[type="submit"]')?.focus()),document.removeEventListener("keydown",initTrapFocus))},closeAutocompleteOutside=(e,input)=>{const findifyAutocomplete=document.querySelector(".findify-autocomplete");findifyAutocomplete&&!findifyAutocomplete.contains(e.target)&&!input.contains(e.target)&&(closeAutocomplete(e),document.removeEventListener("click",closeAutocompleteOutside))},initTrapFocus=e=>{if(!(e.key==="Tab"||e.keyCode===9))return;const modal=document.querySelector(".findify-autocomplete");if(!modal)return;const focusableContent=modal.querySelectorAll('a, button, [href], input:not([type="hidden"]), select, textarea, iframe, [tabindex]:not([tabindex="-1"])');if(!focusableContent.length)return;const firstFocusableElement=focusableContent[0],lastFocusableElement=focusableContent[focusableContent.length-1];if(document.activeElement===activeInput){firstFocusableElement.focus(),e.preventDefault();return}e.shiftKey?document.activeElement===firstFocusableElement&&(activeInput.focus(),e.preventDefault()):document.activeElement===lastFocusableElement&&(firstFocusableElement.focus(),e.preventDefault())},openAutocomplete=input=>{activeInput=input;const ac=document.querySelector(".findify-autocomplete");if(!ac)return;ac.classList.remove("findify-hidden");const closeBtn=document.querySelector(".findify-close-autocomplete");closeBtn&&!closeBtn.dataset.findifyAttached&&(closeBtn.addEventListener("click",e=>closeAutocomplete(e)),closeBtn.dataset.findifyAttached="1"),document.addEventListener("click",e=>closeAutocompleteOutside(e,input)),setAutocompletePosition(input),document.addEventListener("keydown",initTrapFocus)},loadFindifyAutocomplete=async event=>{if(!event||event.target.value!==q){q=event?event.target.value:"";const thisRequestId=++latestRequestId;try{const response=await findify.autocomplete.api(q);
1if(thisRequestId!==latestRequestId)return;rid=response.meta?.rid||rid,await findify.autocomplete.render(response,findify.autocomplete.liquid),initOnSuggestionEvents()}catch(err){console.log("findify autocomplete api error",err)}}if(event&&event.type==="focus")setTimeout(()=>openAutocomplete(event.target),200);else if(event&&event.target)openAutocomplete(event.target);else{const anyInput=document.querySelector(selector);anyInput&&openAutocomplete(anyInput)}},delayLoadFindifyAutocomplete=((fn,ms)=>{let timer;return{call(...args){clearTimeout(timer),timer=setTimeout(()=>fn.apply(this,args),ms||0)},cancel(){clearTimeout(timer)}}})(loadFindifyAutocomplete,msDelay),handleFindifyChange=e=>{e.code==="Enter"||e.key==="Enter"?onSearch(e):e.code==="Escape"||e.key==="Escape"?closeAutocomplete(e,!0):(delayLoadFindifyAutocomplete.cancel(),delayLoadFindifyAutocomplete.call(e))},initializeFindifyAutocomplete=()=>{document.querySelectorAll(selector).forEach(input=>{input._findifyInitialized||(input.addEventListener("focus",loadFindifyAutocomplete),input.addEventListener("keyup",handleFindifyChange),input._findifyInitialized=!0)}),initOnSuggestionEvents()};(()=>{if(item_limit&&item_limit>4){const ac=document.querySelector(".findify-autocomplete");ac&&(ac.style.height="100%")}initializeFindifyAutocomplete()})()};
2//# sourceMappingURL=/cdn/shop/t/109/assets/findify-autocomplete.js.map?v=135468858491857602421781536517

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.