Files
dbx/apps/desktop/src/lib/editor/queryEditorCompletionShortcut.ts
T

27 lines
1.2 KiB
TypeScript

import type { Command, KeyBinding } from "@codemirror/view";
import { matchesShortcut, type ShortcutLikeEvent } from "@/lib/editor/keyboardShortcuts";
import { isMacShortcutPlatform } from "@/lib/editor/shortcutDisplay";
import { shortcutToCodeMirrorKey } from "@/lib/editor/shortcutRegistry";
function matchesMacOptionSlash(event: ShortcutLikeEvent, shortcut: string, platform: string): boolean {
if (!isMacShortcutPlatform(platform) || shortcut !== "Alt+/" || event.isComposing) return false;
if (!event.altKey || event.ctrlKey || event.metaKey || event.shiftKey) return false;
return event.code === "Slash";
}
export function createQueryEditorCompletionShortcutBindings(shortcut: string, run: Command, platform = globalThis.navigator?.platform || ""): KeyBinding[] {
if (!shortcut) return [];
if (!isMacShortcutPlatform(platform) || shortcut !== "Alt+/") {
return [{ key: shortcutToCodeMirrorKey(shortcut), run }];
}
return [
{
any(view, event) {
if (event.isComposing) return false;
if (!matchesShortcut(event, shortcut, platform) && !matchesMacOptionSlash(event, shortcut, platform)) return false;
return run(view);
},
},
];
}