PageSourceSearch

https://www.fisdom.com/wp-content/themes/theme/assets/js/tabbis.es6.min.js?1500

js fisdom.com collected 2026-10-02 15:18:28 UTC 3,304 bytes, 1 lines download raw bytes

1class tabbisClass{init(t){this.thisOptions(t),this.thisMemory(),this.setup()}setup(){const t=document.querySelectorAll(this.options.paneGroup);document.querySelectorAll(this.options.tabGroup).forEach((e,i)=>{const s=t[i],r=this.getActiveIndex(e,i);e.setAttribute("role","tablist"),this.resetTabs([...e.children]),this.resetPanes([...s.children]),[...e.children].forEach((t,e)=>{const r=s.children[e];this.addTabAttributes(t,i),this.addPaneAttributes(t,r),t.groupIndex=i,t.addEventListener(this.options.trigger,e=>{this.activate(e.currentTarget,t.groupIndex)}),this.options.keyboardNavigation&&t.addEventListener("keydown",t=>{this.eventKey(t)})}),null!==r&&(this.activateTab([...e.children][r]),this.activatePane([...s.children][r]))})}eventKey(t){[13,37,38,39,40].includes(t.keyCode)&&t.preventDefault(),13==t.keyCode?t.currentTarget.click():[39,40].includes(t.keyCode)?this.step(t,1):[37,38].includes(t.keyCode)&&this.step(t,-1)}index(t){return[...t.parentElement.children].indexOf(t)}step(t,e){const i=t.currentTarget.parentElement.children;this.resetTabindex(i);let s=i[this.pos(t.currentTarget,i,e)];s.focus(),s.setAttribute("tabindex",0)}resetTabindex(t){[...t].forEach(t=>{t.setAttribute("tabindex","-1")})}pos(t,e,i){let s=this.index(t);return s+=i,e.length<=s?s=0:-1==s&&(s=e.length-1),s}emitEvent(t,e){let i=new CustomEvent("tabbis",{bubbles:!0,detail:{tab:t,pane:e}});t.dispatchEvent(i)}getActiveIndex(t,e){const i=this.loadMemory(e);if(void 0!==i)return i;{let e=t.querySelector(this.options.tabActive);return e||(e=t.querySelector('[aria-selected="true"]')),e?this.index(e):!1!==this.options.tabActiveFallback?this.options.tabActiveFallback:null}}addTabAttributes(t,e){const i=this.index(t),s=this.options.prefix;t.setAttribute("role","tab"),t.setAttribute("aria-controls",`${s}tabpanel-${e}-${i}`),t.setAttribute("id",`${s}tab-${e}-${i}`)}addPaneAttributes(t,e){e.setAttribute("role","tabpanel"),e.setAttribute("aria-labelledby",t.getAttribute("id")),e.setAttribute("id",t.getAttribute("aria-controls")),e.setAttribute("tabindex","0")}activate(t,e){const i=document.querySelector(`#${t.getAttribute("aria-controls")}`);this.resetTabs([...t.parentNode.children]),this.resetPanes([...i.parentElement.children]),this.activateTab(t),this.activatePane(i),this.saveMemory(t,e),this.emitEvent(t,i)}activateTab(t){t.setAttribute("aria-selected","true"),t.setAttribute("tabindex","0")}activatePane(t){t.removeAttribute("hidden")}resetTabs(t){t.forEach(t=>t.setAttribute("aria-selected","false")),this.resetTabindex(t)}resetPanes(t){t.forEach(t=>t.setAttribute("hidden",""))}loadMemory(t){if(this.options.memory&&void 0!==this.memory[t]&&null!==this.memory[t])return parseInt(this.memory[t])}saveMemory(t,e){this.options.memory&&(this.memory[e]=this.index(t),localStorage.setItem(this.options.memory,JSON.stringify(this.memory)))}thisMemory(){if(!this.options.memory)return;const t=localStorage.getItem(this.options.memory);this.memory=null!==t?JSON.parse(t):[]}defaults(){return{keyboardNavigation:!0,memory:!1,paneGroup:"[data-panes]",prefix:"",tabActive:"[data-active]",tabActiveFallback:0,tabGroup:"[data-tabs]",trigger:"click"}}thisOptions(t){this.options=Object.assign(this.defaults(),t),!0===this.options.memory&&(this.options.memory="tabbis")}}function tabbis(t={}){(new tabbisClass).init(t)}

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.