Spaces:
Sleeping
Sleeping
| "use client"; | |
| export type Shortcut = { | |
| description?: string; | |
| shortcut: { | |
| key?: string; | |
| shift?: boolean; | |
| command?: boolean; | |
| backspace?: boolean; | |
| }; | |
| }; | |
| const openNewChatShortcut: Shortcut = { | |
| description: "newChat", | |
| shortcut: { | |
| key: "O", | |
| shift: true, | |
| command: true, | |
| }, | |
| }; | |
| const toggleTemporaryChatShortcut: Shortcut = { | |
| description: "toggleTemporaryChat", | |
| shortcut: { | |
| key: "K", | |
| command: true, | |
| }, | |
| }; | |
| const toggleVoiceChatShortcut: Shortcut = { | |
| description: "toggleVoiceChat", | |
| shortcut: { | |
| key: "I", | |
| command: true, | |
| shift: true, | |
| }, | |
| }; | |
| const toggleSidebarShortcut: Shortcut = { | |
| description: "toggleSidebar", | |
| shortcut: { | |
| key: "S", | |
| command: true, | |
| shift: true, | |
| }, | |
| }; | |
| const toolModeShortcut: Shortcut = { | |
| description: "toolMode", | |
| shortcut: { | |
| key: "P", | |
| command: true, | |
| }, | |
| }; | |
| const lastMessageCopyShortcut: Shortcut = { | |
| description: "lastMessageCopy", | |
| shortcut: { | |
| key: "C", | |
| command: true, | |
| shift: true, | |
| }, | |
| }; | |
| const openChatPreferencesShortcut: Shortcut = { | |
| description: "openChatPreferences", | |
| shortcut: { | |
| key: "L", | |
| command: true, | |
| shift: true, | |
| }, | |
| }; | |
| const deleteThreadShortcut: Shortcut = { | |
| description: "deleteThread", | |
| shortcut: { | |
| backspace: true, | |
| shift: true, | |
| }, | |
| }; | |
| const openShortcutsPopupShortcut: Shortcut = { | |
| description: "openShortcutsPopup", | |
| shortcut: { | |
| key: "/", | |
| command: true, | |
| }, | |
| }; | |
| export const Shortcuts = { | |
| openNewChat: openNewChatShortcut, | |
| openChatPreferences: openChatPreferencesShortcut, | |
| toggleTemporaryChat: toggleTemporaryChatShortcut, | |
| toggleVoiceChat: toggleVoiceChatShortcut, | |
| toggleSidebar: toggleSidebarShortcut, | |
| lastMessageCopy: lastMessageCopyShortcut, | |
| deleteThread: deleteThreadShortcut, | |
| toolMode: toolModeShortcut, | |
| openShortcutsPopup: openShortcutsPopupShortcut, | |
| }; | |
| export const isShortcutEvent = ( | |
| event: KeyboardEvent, | |
| { shortcut }: Shortcut, | |
| ) => { | |
| if (shortcut.command && !event.metaKey && !event.ctrlKey) return false; | |
| if (shortcut.shift && !event.shiftKey) return false; | |
| if (shortcut.key && shortcut.key?.toLowerCase() !== event.key?.toLowerCase()) | |
| return false; | |
| if (shortcut.backspace && event.key?.toLowerCase() !== "backspace") | |
| return false; | |
| return true; | |
| }; | |
| export const getShortcutKeyList = ({ shortcut }: Shortcut): string[] => { | |
| const keys: string[] = []; | |
| if (shortcut.command) { | |
| keys.push("⌘"); | |
| } | |
| if (shortcut.shift) { | |
| keys.push("⇧"); | |
| } | |
| if (shortcut.key) { | |
| keys.push(shortcut.key); | |
| } | |
| if (shortcut.backspace) { | |
| keys.push("⌫"); | |
| } | |
| return keys; | |
| }; | |