PageSourceSearch

https://tastebuds.com.au/cdn/shop/t/379/assets/tb-menu-drilldown.js?v=81150847116326359831790920888

js tastebuds.com.au collected 2026-10-03 21:35:12 UTC 6,529 bytes, 2 lines download raw bytes

1(()=>{if(customElements.get("tb-menu-nav"))return;class TbMenuNav extends HTMLElement{connectedCallback(){this.stack=[this.querySelector(".tb-menu-panel[data-panel]")?.dataset.panel||"root"],this.templates=new Map,this.querySelectorAll("template[data-panel-template]").forEach(tpl=>{this.templates.set(tpl.dataset.panelTemplate,tpl)}),this.addEventListener("click",this._onClick),this._dialog=this.closest("dialog"),this._dialog&&(this._dialog.addEventListener("close",()=>{this.reset(),this._releaseSearchResults()}),this._dialogOpenObserver=new MutationObserver(()=>{if(this._dialog.open){this._claimSearchResults();const searchInput=this.querySelector("[data-input-search]");searchInput&&document.activeElement===searchInput&&searchInput.blur()}}),this._dialogOpenObserver.observe(this._dialog,{attributes:!0,attributeFilter:["open"]})),this._watchSearchResults()}disconnectedCallback(){this.removeEventListener("click",this._onClick),this._searchObserver?.disconnect(),this._dialogOpenObserver?.disconnect()}_onClick=event=>{const openBtn=event.target.closest("[data-menu-open]");if(openBtn){event.preventDefault(),this.open(openBtn.dataset.menuOpen);return}if(event.target.closest("[data-menu-back]")){event.preventDefault(),this.back();return}const crumbBtn=event.target.closest("[data-menu-jump]");crumbBtn&&(event.preventDefault(),this.jumpTo(crumbBtn.dataset.menuJump))};getPanel(id){return this.querySelector(`.tb-menu-panel[data-panel="${CSS.escape(id)}"]`)}hydrate(id){let panel=this.getPanel(id);if(panel)return panel;const tpl=this.templates.get(id);return tpl?(this.appendChild(tpl.content.cloneNode(!0)),this.querySelectorAll("template[data-panel-template]").forEach(t=>{this.templates.has(t.dataset.panelTemplate)||this.templates.set(t.dataset.panelTemplate,t)}),this.getPanel(id)):null}open(id){if(!id||this.stack[this.stack.length-1]===id)return;const target=this.hydrate(id);if(!target)return;const current=this.getPanel(this.stack[this.stack.length-1]);this.stack.push(id),this._transition(current,target,"forward"),this._renderBreadcrumb()}back(){if(this.stack.length<=1)return;const fromId=this.stack.pop(),toId=this.stack[this.stack.length-1];this._transition(this.getPanel(fromId),this.getPanel(toId),"back"),this._renderBreadcrumb()}jumpTo(id){const idx=this.stack.indexOf(id);if(idx===-1||idx===this.stack.length-1)return;const fromId=this.stack[this.stack.length-1];this.stack=this.stack.slice(0,idx+1),this._transition(this.getPanel(fromId),this.getPanel(id),"back"),this._renderBreadcrumb()}reset(){if(this.stack.length<=1)return;const rootId=this.stack[0];this.stack.slice(1).forEach(id=>{this.getPanel(id)?.classList.remove("is-active","is-incoming-forward","is-incoming-back","is-outgoing-forward","is-outgoing-back")}),this.getPanel(rootId)?.classList.add("is-active"),this.stack=[rootId]}_renderBreadcrumb(){const currentId=this.stack[this.stack.length-1],holder=this.getPanel(currentId)?.querySelector("[data-menu-breadcrumb]");if(!holder)return;const crumbIds=this.stack.slice(1);if(crumbIds.length<1){holder.innerHTML="";return}const esc=str=>String(str).replace(/[&<>"']/g,c=>({"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;"})[c]),rootId=this.stack[0],parts=[`<button type="button" class="tb-menu-breadcrumb__link" data-menu-jump="${esc(rootId)}">Home</button><span class="tb-menu-breadcrumb__sep" aria-hidden="true">\u276F</span>`];crumbIds.forEach((id,i)=>{const title=this.getPanel(id)?.querySelector(".tb-menu-panel__banner-title")?.textContent?.trim()||"";i===crumbIds.length-1?parts.push(`<span class="tb-menu-breadcrumb__current">${esc(title)}</span>`):parts.push(`<button type="button" class="tb-menu-breadcrumb__link" data-menu-jump="${esc(id)}">${esc(title)}</button><span class="tb-menu-breadcrumb__sep" aria-hidden="true">\u276F</span>`)}),holder.innerHTML=parts.join("")}_watchSearchResults(){this._searchObserver=new MutationObserver(()=>this._claimSearchResults()),this._searchObserver.observe(document.body,{childList:!0,subtree:!0})}_findSearchResultsEl(){return document.getElementById("snize-instant-search-results")||document.querySelector(".snize-ac-results")}_claimSearchResults(){if(!this._dialog?.open)return;
1const searchWrap=this.querySelector(".tb-menu-search"),el=this._findSearchResultsEl();!searchWrap||!el||searchWrap.contains(el)||(searchWrap.appendChild(el),el.classList.add("tb-menu-search__portal-results"))}_releaseSearchResults(){const searchWrap=this.querySelector(".tb-menu-search"),el=this._findSearchResultsEl();!searchWrap||!el||!searchWrap.contains(el)||(el.classList.remove("tb-menu-search__portal-results"),document.body.appendChild(el))}_transition(fromEl,toEl,direction){if(!toEl||toEl===fromEl)return;this.classList.add("is-animating"),toEl.classList.add(direction==="forward"?"is-incoming-forward":"is-incoming-back"),toEl.classList.add("is-active");const body=toEl.querySelector(".tb-menu-panel__body");body&&(body.scrollTop=0),requestAnimationFrame(()=>{toEl.classList.remove("is-incoming-forward","is-incoming-back"),fromEl&&(fromEl.classList.remove("is-active"),fromEl.classList.add(direction==="forward"?"is-outgoing-forward":"is-outgoing-back"))});const cleanup=()=>{fromEl?.classList.remove("is-outgoing-forward","is-outgoing-back"),this.classList.remove("is-animating"),toEl.removeEventListener("transitionend",cleanup)};toEl.addEventListener("transitionend",cleanup),setTimeout(cleanup,400)}}
1customElements.define("tb-menu-nav",TbMenuNav);function copyKspDiscount(text){navigator.clipboard&&window.isSecureContext?navigator.clipboard.writeText(text).catch(()=>fallbackKspCopy(text)):fallbackKspCopy(text)}function fallbackKspCopy(text){try{const ta=document.createElement("textarea");ta.value=text,ta.style.position="fixed",ta.style.left="-9999px",ta.style.top="-9999px",document.body.appendChild(ta),ta.focus(),ta.select(),document.execCommand("copy"),document.body.removeChild(ta)}catch(e){console.warn("KSP copy error:",e)}}document.addEventListener("click",event=>{const item=event.target.closest(".tb-menu-ksp__item");if(!item)return;event.preventDefault();const code=item.dataset.code;if(code){if(copyKspDiscount(code),navigator.vibrate)try{navigator.vibrate(25)}catch{}document.querySelectorAll(".tb-menu-ksp__item").forEach(btn=>btn.classList.remove("is-copied")),item.classList.add("is-copied"),clearTimeout(item._copyTimeout),item._copyTimeout=setTimeout(()=>{item.classList.remove("is-copied")},1800)}})})();
2//# sourceMappingURL=/cdn/shop/t/379/assets/tb-menu-drilldown.js.map?v=81150847116326359831790920888

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.