MCPcopy Create free account
hub / github.com/ZenNotes/zennotes / handler

Function handler

packages/app-core/src/App.tsx:509–729  ·  view source on GitHub ↗
(e: KeyboardEvent)

Source from the content-addressed store, hash-verified

507
508 useEffect(() => {
509 const handler = (e: KeyboardEvent): void => {
510 const state = useStore.getState()
511 const overrides = state.keymapOverrides
512
513 if (isUndoShortcut(e)) {
514 const assetUndoEntry = state.assetUndoStack.at(-1)
515 if (assetUndoEntry) {
516 const recentAssetDelete =
517 Date.now() - assetUndoEntry.createdAt <= ASSET_UNDO_SHORTCUT_GRACE_MS
518 if (recentAssetDelete || !isEditableShortcutTarget(e.target)) {
519 e.preventDefault()
520 void state.undoLastAssetAction()
521 return
522 }
523 }
524 }
525
526 if (matchesShortcut(e, overrides, 'global.commandPalette')) {
527 // ⇧⌘P — command palette
528 e.preventDefault()
529 setBufferPaletteOpen(false)
530 setVaultTextSearchOpen(false)
531 setCommandPaletteOpen(!state.commandPaletteOpen)
532 return
533 }
534 if (!state.vimMode && matchesShortcut(e, overrides, 'global.searchNotesNonVim')) {
535 // ⌘F / Ctrl+F — note search when Vim mode is off
536 e.preventDefault()
537 setBufferPaletteOpen(false)
538 setVaultTextSearchOpen(false)
539 setSearchOpen(true)
540 return
541 }
542 if (matchesShortcut(e, overrides, 'global.newQuickNote')) {
543 // ⇧⌘N — new quick note
544 e.preventDefault()
545 const title = resolveQuickNoteTitle(
546 state.notes,
547 state.quickNoteDateTitle,
548 state.quickNoteTitlePrefix ?? undefined
549 )
550 void state.createAndOpen('quick', '', { title, focusTitle: true })
551 return
552 }
553 if (matchesShortcut(e, overrides, 'global.toggleWordWrap')) {
554 // ⌥Z — toggle word wrap (matches VSCode/Sublime convention)
555 e.preventDefault()
556 state.setWordWrap(!state.wordWrap)
557 return
558 }
559 if (matchesShortcut(e, overrides, 'global.exportNotePdf')) {
560 e.preventDefault()
561 void state.exportActiveNotePdf()
562 return
563 }
564 if (matchesShortcut(e, overrides, 'global.zoomIn')) {
565 e.preventDefault()
566 void window.zen.zoomInApp()

Callers 2

mainFunction · 0.50
startMethod · 0.50

Calls 12

matchesShortcutFunction · 0.90
resolveQuickNoteTitleFunction · 0.90
isMacPlatformFunction · 0.90
matchesSequenceTokenFunction · 0.90
focusEditorNormalModeFunction · 0.90
requestPaneModeFunction · 0.90
isUndoShortcutFunction · 0.85
isEditableShortcutTargetFunction · 0.85
zoomInAppMethod · 0.80
zoomOutAppMethod · 0.80
resetAppZoomMethod · 0.80
windowCloseMethod · 0.80

Tested by

no test coverage detected