import { useStore } from '@nanostores/react'; import { fileMetadata, modifiedFileData, pushToUndoStack, undo, canUndo, isCompiling, hasModifications, compileImage } from '../stores/imageStore'; import { allGlitchEffects } from '../utils/glitchEffects'; export default function GlitchControls() { const metadata = useStore(fileMetadata); const compiling = useStore(isCompiling); const undoAvailable = useStore(canUndo); const applyGlitchEffect = async (effectApply: (data: Uint8Array) => void) => { const currentData = modifiedFileData.get(); if (!currentData) return; pushToUndoStack(currentData); const newData = new Uint8Array(currentData); effectApply(newData); modifiedFileData.set(newData); hasModifications.set(true); await compileImage(); }; const handleUndo = async () => { undo(); await compileImage(); }; if (!metadata) return null; return (

Quick Effects

{allGlitchEffects.slice(0, 3).map((effect) => ( ))}

Advanced Effects

{allGlitchEffects.slice(3).filter(effect => effect.name !== "Color Shift" && effect.name !== "Blocks" ).map((effect) => ( ))} {allGlitchEffects.filter(effect => effect.name === "Color Shift" || effect.name === "Blocks" ).map((effect) => ( ))}
); }