PluginProbe
Gutenberg / trunk
Gutenberg vtrunk
24.1.0 24.0.0 23.9.1 23.9.0 23.8.0 23.7.2 23.7.1 23.7.0 23.6.1 23.6.2 23.6.0 23.5.3 23.5.2 23.5.1 23.5.0 23.4.0 23.3.2 23.3.1 23.3.0 23.2.0 23.2.1 23.2.2 23.1.1 23.1.0 23.0.1 All 404 releases
gutenberg / build / modules / block-library / tabs / view.min.js

view.min.js in Gutenberg trunk, at build/modules/block-library/tabs/view.min.js

3 lines 1.8 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
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});
2 //# sourceMappingURL=view.min.js.map
3