export interface Shortcut { key: string; ctrl?: boolean; meta?: boolean; shift?: boolean; alt?: boolean; action: () => void; description: string; } export const shortcuts: Shortcut[] = [ { key: "e", ctrl: true, meta: true, action: () => { import("../stores/ui").then(({ uiStore }) => { uiStore.toggleViewMode(); }); }, description: "Toggle between code and preview mode", }, ]; export function registerShortcuts(shortcuts: Shortcut[]): () => void { const handler = (e: KeyboardEvent) => { for (const shortcut of shortcuts) { const ctrlMatch = shortcut.ctrl ? e.ctrlKey : !shortcut.ctrl || !e.ctrlKey; const metaMatch = shortcut.meta ? e.metaKey : !shortcut.meta || !e.metaKey; const shiftMatch = shortcut.shift ? e.shiftKey : !shortcut.shift || !e.shiftKey; const altMatch = shortcut.alt ? e.altKey : !shortcut.alt || !e.altKey; if ( e.key === shortcut.key && (ctrlMatch || metaMatch) && shiftMatch && altMatch ) { e.preventDefault(); shortcut.action(); break; } } }; window.addEventListener("keydown", handler); return () => { window.removeEventListener("keydown", handler); }; }