import { useEffect, useCallback } from 'react'; import { BiUndo, BiTrash } from 'react-icons/bi/index'; import { AnimatePresence, motion } from 'framer-motion'; import { Tooltip } from '@/components/tooltip'; import { useSoundStore } from '@/store'; import { cn } from '@/helpers/styles'; import { fade, mix, slideX } from '@/lib/motion'; import styles from './unselect.module.css'; export function UnselectButton() { const noSelected = useSoundStore(state => state.noSelected()); const restoreHistory = useSoundStore(state => state.restoreHistory); const hasHistory = useSoundStore(state => !!state.history); const unselectAll = useSoundStore(state => state.unselectAll); const locked = useSoundStore(state => state.locked); const variants = { ...mix(fade(), slideX(15)), exit: { opacity: 0 }, }; const handleToggle = useCallback(() => { if (locked) return; if (hasHistory) restoreHistory(); else if (!noSelected) unselectAll(true); }, [hasHistory, noSelected, unselectAll, restoreHistory, locked]); useEffect(() => { const listener = (e: KeyboardEvent) => { if (e.shiftKey && e.key === 'R') { handleToggle(); } }; document.addEventListener('keydown', listener); return () => document.removeEventListener('keydown', listener); }, [handleToggle]); return ( <> {(!noSelected || hasHistory) && ( )} ); }