PageSourceSearch

https://www.sarahraven.com/cdn/shop/t/2/assets/app.blog-tabs.js?v=126922271125091014211780048769

js sarahraven.com collected 2026-10-02 03:30:35 UTC 2,958 bytes, 2 lines download raw bytes

1(function(){var $cfcc232893745887$export$2e2bcd8739ae039=void(customElements.get("blog-tabs")||customElements.define("blog-tabs",class extends HTMLElement{constructor(){super(),this._onTabClick=this._onTabClick.bind(this),this._onKeyDown=this._onKeyDown.bind(this)}connectedCallback(){this._initializeTabs(),this.addEventListener("click",this._onTabClick),this.addEventListener("keydown",this._onKeyDown)}_initializeTabs(){const tabs=this.querySelectorAll('[role="tab"]');let foundFirst=!1;for(const tab of tabs){const panelId=tab.getAttribute("aria-controls"),panel=this.querySelector(`#${panelId}`),hasContent=panel?.querySelector(".blog-rte")?.innerText.trim().length>0;!foundFirst&&hasContent?(tab.setAttribute("aria-selected","true"),tab.tabIndex=0,panel?.classList.remove("hidden"),foundFirst=!0):(tab.setAttribute("aria-selected","false"),tab.tabIndex=-1,panel?.classList.add("hidden"))}if(!foundFirst&&tabs.length>0){const firstTab=tabs[0],firstPanelId=firstTab.getAttribute("aria-controls"),firstPanel=this.querySelector(`#${firstPanelId}`);firstTab.setAttribute("aria-selected","true"),firstTab.tabIndex=0,firstPanel?.classList.remove("hidden")}}_getTabs(){return[...this.querySelectorAll('[role="tab"]')]}async _activateTab(tab){const currentTab=this.querySelector('[role="tab"][aria-selected="true"]');if(tab===currentTab)return;const currentPanelId=currentTab?.getAttribute("aria-controls"),currentPanel=currentPanelId?this.querySelector(`#${currentPanelId}`):null,nextPanelId=tab.getAttribute("aria-controls"),nextPanel=this.querySelector(`#${nextPanelId}`);
1this._getTabs().forEach(t=>{const isSelected=t===tab;t.setAttribute("aria-selected",isSelected?"true":"false"),t.tabIndex=isSelected?0:-1});const reducedMotion=window.matchMedia("(prefers-reduced-motion: reduce)").matches;currentPanel&&(reducedMotion||await currentPanel.animate([{opacity:1,transform:"translateY(0)"},{opacity:0,transform:"translateY(4px)"}],{duration:200,easing:"ease-out"}).finished,currentPanel.classList.add("hidden")),nextPanel&&(nextPanel.classList.remove("hidden"),reducedMotion||nextPanel.animate([{opacity:0,transform:"translateY(4px)"},{opacity:1,transform:"translateY(0)"}],{duration:300,easing:"ease-in",fill:"both"}))}async _onTabClick(event){const tab=event.target.closest('[role="tab"]');tab&&(event.preventDefault(),await this._activateTab(tab))}_onKeyDown(event){const tab=event.target.closest('[role="tab"]');if(!tab)return;const tabs=this._getTabs(),currentIndex=tabs.indexOf(tab);let targetIndex=-1;if(event.key==="ArrowRight")targetIndex=(currentIndex+1)%tabs.length;else if(event.key==="ArrowLeft")targetIndex=(currentIndex-1+tabs.length)%tabs.length;else if(event.key==="Home")targetIndex=0;else if(event.key==="End")targetIndex=tabs.length-1;else return;event.preventDefault(),tabs[targetIndex].focus(),this._activateTab(tabs[targetIndex])}}))})();
2//# sourceMappingURL=/cdn/shop/t/2/assets/app.blog-tabs.js.map?v=126922271125091014211780048769

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.