carbon-react
Version:
A library of reusable React components for easily building user interfaces.
2 lines (1 loc) • 1.67 kB
JavaScript
;var e=require("react/jsx-runtime"),t=require("react");function r(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function n(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{},s=Object.keys(n);"function"==typeof Object.getOwnPropertySymbols&&(s=s.concat(Object.getOwnPropertySymbols(n).filter((function(e){return Object.getOwnPropertyDescriptor(n,e).enumerable})))),s.forEach((function(t){r(e,t,n[t])}))}return e}const s={activeTab:"",currentTabId:"",focusIndex:"",isInTab:!1,labelledBy:"",orientation:"horizontal",selectedTabId:"",setActiveTab:()=>{},setFocusIndex:()=>{},setCurrentTabId:()=>{},setErrors:()=>{},setWarnings:()=>{},size:"medium",errors:{},warnings:{},infos:{},setInfos:()=>{}},a=t.createContext(s);exports.TabsContext=a,exports.TabsProvider=({children:r,isInTab:s=!0,labelledBy:o,orientation:i,selectedTabId:c="",size:u})=>{const[b,l]=t.useState(c),[d,f]=t.useState(c),[T,I]=t.useState(""),[x,v]=t.useState({}),[y,g]=t.useState({}),[p,C]=t.useState({}),O=t.useCallback(((e,t,r)=>{const s={[t]:{[e]:r}};v((a=>(a[t]||(a[t]={}),a[t][e]!==r?n({},a,s):a)))}),[]),S=t.useCallback(((e,t,r)=>{const s={[t]:{[e]:r}};g((a=>(a[t]||(a[t]={}),a[t][e]!==r?n({},a,s):a)))}),[]),j=t.useCallback(((e,t,r)=>{const s={[t]:{[e]:r}};C((a=>(a[t]||(a[t]={}),a[t][e]!==r?n({},a,s):a)))}),[]);return e.jsx(a.Provider,{value:{activeTab:b,currentTabId:d,focusIndex:T,isInTab:s,labelledBy:o,orientation:i,setActiveTab:l,setCurrentTabId:f,setFocusIndex:I,setErrors:O,setWarnings:S,size:u,errors:x,warnings:y,infos:p,setInfos:j},children:r})},exports.useTabs=()=>t.useContext(a);