starlight-view-modes
Version:
Starlight plugin adding view mode capabilities to your documentation website.
28 lines (25 loc) • 725 B
text/typescript
export const parseShortcut = (shortcut: string, mode: string): Shortcut => {
const keys = shortcut.toLowerCase().split("+");
return {
keys: keys.filter((k) => !["ctrl", "shift", "alt"].includes(k)),
ctrl: keys.includes("ctrl"),
shift: keys.includes("shift"),
alt: keys.includes("alt"),
mode,
};
};
export const isShortcutPressed = (e: KeyboardEvent, shortcut: Shortcut) => {
return (
(shortcut.ctrl ? e.ctrlKey || e.metaKey : true) &&
(shortcut.shift ? e.shiftKey : true) &&
(shortcut.alt ? e.altKey : true) &&
shortcut.keys.includes(e.key.toLowerCase())
);
};
export type Shortcut = {
keys: string[];
ctrl?: boolean;
shift?: boolean;
alt?: boolean;
mode: string;
};