import { IPicexToolRenderParams } from '../../types'; import React, { useState, useEffect } from 'react'; import Colours from './Colours'; import Images from './Images'; import { Segmented } from 'antd'; import { UploadBoxProps } from '@/components/common/UploadBox'; import { BlockBackground } from '@/blocks/Background'; import locale from '@/locale'; import EventBus from '@/utils/eventBus'; import { usePicexCtx, usePicexDispatch } from '@/core/context'; function Panel({ config, ...props }: IPicexToolRenderParams & { config?: UploadBoxProps }) { const Tabs = { Colour: locale.t('background.panel.colour'), Image: locale.t('background.panel.image'), }; const dispatch = usePicexDispatch(); const [tab, setTab] = useState(Tabs.Colour); const [block, setBlock] = useState(null); useEffect(() => { const resetStateListener = () => { setBlock(null); }; const backgroundRemoveListener = (targetBlock: BlockBackground) => { if (targetBlock) { dispatch({ type: 'removeBlock', block: targetBlock, }); } setBlock(null); }; const historyOperationListener = (operation: { undoing: boolean; action: any; }) => { console.log(operation, 'operation'); }; EventBus.on('reset-state', resetStateListener); EventBus.on('background:remove', backgroundRemoveListener); EventBus.on('history:operation', historyOperationListener); return () => { EventBus.off('reset-state', resetStateListener); EventBus.off('background:remove', backgroundRemoveListener); EventBus.off('history:operation', historyOperationListener); }; }, []); let node; switch (tab) { case Tabs.Colour: node = ( ); break; case Tabs.Image: node = ( ); break; } return (
block className="rounded-lg text-base leading-10" options={Object.values(Tabs)} onChange={setTab} />
{node}
); } export default Panel;