1if(!customElements.get("tabs-container")){class TabsContainer extends HTMLElement{constructor(){super(),this._initialized=!1}connectedCallback(){this._initialized||(this._initialized=!0,document.readyState==="loading"?document.addEventListener("DOMContentLoaded",()=>this.init()):this.init())}init(){this.triggersContainer=this.querySelector(".tabs__triggers"),this.panels=this.querySelectorAll("tab-panel"),this.generateTriggers(),this.triggers=this.querySelectorAll(".tabs__trigger"),this.triggers.forEach((trigger,index)=>{trigger.addEventListener("click",()=>this.activateTab(index)),trigger.addEventListener("keydown",e=>this.handleKeydown(e,index))}),this.triggers.length>0&&this.panels.length>0&&this.activateTab(0),window.Shopify?.designMode&&this.addEventListener("shopify:block:select",event=>{const panel=event.target.closest("tab-panel");if(panel){const index=Array.from(this.panels).indexOf(panel);index!==-1&&this.activateTab(index)}})}generateTriggers(){!this.triggersContainer||this.panels.length===0||(this.triggersContainer.innerHTML="",this.panels.forEach((panel,index)=>{const label=panel.dataset.label||`Tab ${index+1}`,panelId=panel.id||`tab-panel-${index}`,triggerId=`tab-trigger-${panelId}`;panel.setAttribute("aria-labelledby",triggerId);const trigger=document.createElement("button");trigger.className="tabs__trigger",trigger.type="button",trigger.role="tab",trigger.id=triggerId,trigger.setAttribute("aria-controls",panelId),trigger.setAttribute("aria-selected","false"),trigger.setAttribute("tabindex",index===0?"0":"-1"),(this.dataset.triggerStyle||"foreground")==="indicator"?trigger.innerHTML=` 2 <span class="tabs__trigger-text">${label}</span> 3 <span class="tabs__trigger-indicator" aria-hidden="true"></span> 4 `:trigger.textContent=label,this.triggersContainer.appendChild(trigger)}))}activateTab(index){this.triggers.forEach(trigger=>{trigger.classList.remove("is-active"),trigger.setAttribute("aria-selected","false"),trigger.setAttribute("tabindex","-1")}),this.panels.forEach(panel=>{panel.classList.remove("is-active"),panel.setAttribute("hidden","")});const selectedTrigger=this.triggers[index],selectedPanel=this.panels[index];selectedTrigger&&(selectedTrigger.classList.add("is-active"),selectedTrigger.setAttribute("aria-selected","true"),selectedTrigger.setAttribute("tabindex","0")),selectedPanel&&(selectedPanel.classList.add("is-active"),selectedPanel.removeAttribute("hidden")),this.dispatchEvent(new CustomEvent("tab-change",{bubbles:!0,detail:{index,trigger:selectedTrigger,panel:selectedPanel}}))}handleKeydown(event,currentIndex){const totalTabs=this.triggers.length;let newIndex=currentIndex;switch(event.key){case"ArrowRight":case"ArrowDown":event.preventDefault(),newIndex=(currentIndex+1)%totalTabs;break;case"ArrowLeft":case"ArrowUp":event.preventDefault(),newIndex=(currentIndex-1+totalTabs)%totalTabs;break;case"Home":event.preventDefault(),newIndex=0;break;case"End":event.preventDefault(),newIndex=totalTabs-1;break;default:return}this.triggers[newIndex]?.focus(),this.activateTab(newIndex)}}customElements.define("tabs-container",TabsContainer)}if(!customElements.get("tab-panel")){class TabPanel extends HTMLElement{constructor(){super()}connectedCallback(){}}customElements.define("tab-panel",TabPanel)} 5//# sourceMappingURL=/cdn/shop/t/34/assets/tabs.js.map?v=128825151637515804591784622044
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.