import { cn } from '@/lib/utils'; import { ClockRewind, CopyIcon, RedoIcon, UndoIcon } from './icons'; import { Button } from './ui/button'; import { Tooltip, TooltipContent, TooltipTrigger } from './ui/tooltip'; import { useCopyToClipboard } from 'usehooks-ts'; import { toast } from 'sonner'; import { ConsoleOutput, UIBlock } from './block'; import { Dispatch, memo, SetStateAction } from 'react'; import { RunCodeButton } from './run-code-button'; interface BlockActionsProps { block: UIBlock; handleVersionChange: (type: 'next' | 'prev' | 'toggle' | 'latest') => void; currentVersionIndex: number; isCurrentVersion: boolean; mode: 'read-only' | 'edit' | 'diff'; setConsoleOutputs: Dispatch>>; } function PureBlockActions({ block, handleVersionChange, currentVersionIndex, isCurrentVersion, mode, setConsoleOutputs, }: BlockActionsProps) { const [_, copyToClipboard] = useCopyToClipboard(); return (
{block.kind === 'code' && ( )} {block.kind === 'text' && ( View changes )} View Previous version View Next version Copy to clipboard
); } export const BlockActions = memo(PureBlockActions, (prevProps, nextProps) => { if (prevProps.block.status !== nextProps.block.status) return false; if (prevProps.currentVersionIndex !== nextProps.currentVersionIndex) return false; if (prevProps.isCurrentVersion !== nextProps.isCurrentVersion) return false; return true; });