|
1
|
|
-import{store as b,getContext as r,getElement as f,withSyncEvent as l}from"@wordpress/interactivity";function u(t){let e=new Set(["push","pop","shift","unshift","splice","sort","reverse","copyWithin","fill"]);return new Proxy(t,{get(n,s){if(Array.isArray(n)&&e.has(s))return()=>{};let a=n[s];return typeof a=="object"&&a!==null?u(a):a},set(){return!1},deleteProperty(){return!1}})}var{actions:o,state:i}=b("core/tabs/private",{state:{get tabsList(){let e=r()?.tabsId;return i[e]},get tabIndex(){let{attributes:t}=f(),e=t?.id?.replace("tab__","")||null;if(!e)return null;let{tabsList:n}=i;return n.findIndex(a=>a.id===e)},get isActiveTab(){let{activeTabIndex:t}=r(),{tabIndex:e}=i;return t===e},get tabIndexAttribute(){return i.isActiveTab?0:-1}},actions:{handleTabKeyDown:l(t=>{let e=r(),{isVertical:n}=e,{tabIndex:s}=i;s!==null&&(t.key==="ArrowRight"&&!n?(t.preventDefault(),o.moveFocus(s+1)):t.key==="ArrowLeft"&&!n?(t.preventDefault(),o.moveFocus(s-1)):t.key==="ArrowDown"&&n?(t.preventDefault(),o.moveFocus(s+1)):t.key==="ArrowUp"&&n&&(t.preventDefault(),o.moveFocus(s-1)))}),handleTabClick:l(t=>{t.preventDefault();let{tabIndex:e}=i;e!==null&&o.setActiveTab(e)}),moveFocus:t=>{let{tabsList:e}=i;if(!e||e.length===0)return;let n=t;n<0?n=e.length-1:n>=e.length&&(n=0);let s=e[n].id,a=document.getElementById("tab__"+s);a&&a.focus()},setActiveTab:(t,e=!1)=>{let{tabsList:n}=i;if(!n||n.length===0)return;let s=t;s<0?s=0:s>=n.length&&(s=n.length-1);let a=r();if(a.activeTabIndex=s,e){let d=n[s].id,c=document.getElementById(d);c&&setTimeout(()=>{c.scrollIntoView({behavior:"smooth"})},100)}}},callbacks:{onTabsInit:()=>{let{tabsList:t}=i;if(t.length===0)return;let{hash:e}=window.location,n=e.replace("#",""),s=t.findIndex(a=>a.id===n);s>=0&&o.setActiveTab(s,!0)}}},{lock:!0});b("core/tabs",{state:{get tabsList(){return u(i.tabsList)},get tabIndex(){return i.tabIndex},get isActiveTab(){return i.isActiveTab}},actions:{setActiveTab:(t,e=!1)=>{o.setActiveTab(t,e)}}}); |
|
1
|
+import{store as u,getContext as c,getElement as d,withSyncEvent as b}from"@wordpress/interactivity";var{actions:i,state:o}=u("core/tabs",{state:{get tabsList(){let e=c()?.tabsId;return o[e]},get tabIndex(){let{attributes:t}=d(),e=t?.id?.replace("tab__","")||null;if(!e)return null;let{tabsList:n}=o;return n.findIndex(a=>a===e)},get isActiveTab(){let{activeTabIndex:t}=c(),{tabIndex:e}=o;return t===e},get isHidden(){return o.isActiveTab?null:"until-found"},get tabIndexAttribute(){return o.isActiveTab?0:-1}},actions:{handleTabKeyDown:b(t=>{let{tabIndex:e,tabsList:n}=o;e!==null&&(t.key==="ArrowRight"?(t.preventDefault(),i.moveFocus(e+1)):t.key==="ArrowLeft"?(t.preventDefault(),i.moveFocus(e-1)):t.key==="Home"?(t.preventDefault(),i.moveFocus(0)):t.key==="End"&&(t.preventDefault(),i.moveFocus(n.length-1)))}),handleTabClick:b(t=>{t.preventDefault();let{tabIndex:e}=o;e!==null&&i.setActiveTab(e)}),handleBeforeMatch:()=>{let{tabIndex:t}=o;t!==null&&i.setActiveTab(t)},moveFocus:t=>{let{tabsList:e}=o;if(!e||e.length===0)return;let n=t;n<0?n=e.length-1:n>=e.length&&(n=0);let s=e[n],a=document.getElementById("tab__"+s);a&&a.focus()},setActiveTab:(t,e=!1)=>{let{tabsList:n}=o;if(!n||n.length===0)return;let s=t;s<0?s=0:s>=n.length&&(s=n.length-1);let a=c();if(a.activeTabIndex=s,e){let l=n[s],r=document.getElementById(l);r&&setTimeout(()=>{r.scrollIntoView({behavior:"smooth"})},100)}}},callbacks:{activateTabByHash:()=>{let{tabsList:t}=o;if(!t||t.length===0)return;let e=document.querySelector(":target");if(!e)return;let n=t.findIndex(l=>l===e.id);if(n>=0){i.setActiveTab(n,!0);return}let s=e.closest(".wp-block-tab-panel"),a=-1;for(;s&&a<0;)a=t.findIndex(l=>l===s.id),s=s.parentElement?.closest(".wp-block-tab-panel")??null;a<0||(i.setActiveTab(a),window.setTimeout(()=>{e.scrollIntoView()},0))}}},{lock:!0}); |