import { Tab, TabPanel, TabPanels, Tabs, Tooltip } from '@chakra-ui/react'; import _ from 'lodash'; import React, { ReactElement } from 'react'; import { useHotkeys } from 'react-hotkeys-hook'; import { RootState, useAppDispatch, useAppSelector } from '../../app/store'; import NodesWIP from '../../common/components/WorkInProgress/NodesWIP'; import OutpaintingWIP from '../../common/components/WorkInProgress/OutpaintingWIP'; import { PostProcessingWIP } from '../../common/components/WorkInProgress/PostProcessingWIP'; import ImageToImageIcon from '../../common/icons/ImageToImageIcon'; import InpaintIcon from '../../common/icons/InpaintIcon'; import NodesIcon from '../../common/icons/NodesIcon'; import OutpaintIcon from '../../common/icons/OutpaintIcon'; import PostprocessingIcon from '../../common/icons/PostprocessingIcon'; import TextToImageIcon from '../../common/icons/TextToImageIcon'; import { setActiveTab } from '../options/optionsSlice'; import ImageToImageWorkarea from './ImageToImage'; import InpaintingWorkarea from './Inpainting'; import TextToImageWorkarea from './TextToImage'; export const tab_dict = { txt2img: { title: , workarea: , tooltip: 'Text To Image', }, img2img: { title: , workarea: , tooltip: 'Image To Image', }, inpainting: { title: , workarea: , tooltip: 'Inpainting', }, outpainting: { title: , workarea: , tooltip: 'Outpainting', }, nodes: { title: , workarea: , tooltip: 'Nodes', }, postprocess: { title: , workarea: , tooltip: 'Post Processing', }, }; // Array where index maps to the key of tab_dict export const tabMap = _.map(tab_dict, (tab, key) => key); // Use tabMap to generate a union type of tab names const tabMapTypes = [...tabMap] as const; export type InvokeTabName = typeof tabMapTypes[number]; export default function InvokeTabs() { const activeTab = useAppSelector( (state: RootState) => state.options.activeTab ); const dispatch = useAppDispatch(); useHotkeys('1', () => { dispatch(setActiveTab(0)); }); useHotkeys('2', () => { dispatch(setActiveTab(1)); }); useHotkeys('3', () => { dispatch(setActiveTab(2)); }); useHotkeys('4', () => { dispatch(setActiveTab(3)); }); useHotkeys('5', () => { dispatch(setActiveTab(4)); }); useHotkeys('6', () => { dispatch(setActiveTab(5)); }); const renderTabs = () => { const tabsToRender: ReactElement[] = []; Object.keys(tab_dict).forEach((key) => { tabsToRender.push( {tab_dict[key as keyof typeof tab_dict].title} ); }); return tabsToRender; }; const renderTabPanels = () => { const tabPanelsToRender: ReactElement[] = []; Object.keys(tab_dict).forEach((key) => { tabPanelsToRender.push( {tab_dict[key as keyof typeof tab_dict].workarea} ); }); return tabPanelsToRender; }; return ( { dispatch(setActiveTab(index)); }} >
{renderTabs()}
{renderTabPanels()}
); }