import { Button } from 'antd'; import Redo from '@/images/redo.svg?react'; import Undo from '@/images/undo.svg?react'; import { usePicexCtx } from '@/core/context'; import { useEffect, useState } from 'react'; import { cn } from '@/utils/cn'; const events = [ 'history:append', 'history:undo', 'history:redo', 'history:clear', ] as const; export function HistoryBtns({ maxport }: { maxport?: Size }) { const [count, setCount] = useState(0); const { fcanvas } = usePicexCtx(); const { historyUndo = [], historyRedo = [] } = fcanvas?.history ?? {}; useEffect(() => { const canvas = fcanvas; const handler = () => { // 避免 // Cannot update a component (`HistoryBtns`) while rendering a different component (`PicexEditor`) requestIdleCallback(() => { setCount((prev) => prev + 1); }); }; events.forEach((event) => { canvas?.on(event, handler); }); return () => { events.forEach((event) => { canvas?.off(event, handler); }); }; }, [fcanvas]); const btnCls = 'w-[3.125rem] h-[3.125rem] p-0 flex items-center justify-center border-none rounded-lg'; return ( ); }