feat: keyboard shortcuts for primary actions (#2030)

This commit is contained in:
Mo
2022-11-18 09:01:48 -06:00
committed by GitHub
parent 0309912f98
commit f49ba6bd4d
67 changed files with 1296 additions and 555 deletions

View File

@@ -0,0 +1,27 @@
import { KeyboardShortcut } from './KeyboardShortcut'
import { modifiersForEvent } from './modifiersForEvent'
export function eventMatchesKeyAndModifiers(event: KeyboardEvent, shortcut: KeyboardShortcut): boolean {
const eventModifiers = modifiersForEvent(event)
const shortcutModifiers = shortcut.modifiers ?? []
if (eventModifiers.length !== shortcutModifiers.length) {
return false
}
for (const modifier of shortcutModifiers) {
if (!eventModifiers.includes(modifier)) {
return false
}
}
if (!shortcut.key && !shortcut.code) {
return true
}
if (shortcut.key) {
return shortcut.key.toLowerCase() === event.key.toLowerCase()
} else {
return shortcut.code === event.code
}
}