Skip to content
Source
Sign inSign up

terminalCloseShortcut.ts

36 lines1.1 KB

1import type { ResolvedKeybindingsConfig } from "@t3tools/contracts";
2​
3import { isTerminalCloseShortcut, type ShortcutEventLike } from "../keybindings";
4​
5export interface TerminalCloseShortcutEvent extends ShortcutEventLike {
6 readonly repeat?: boolean;
7 readonly preventDefault: () => void;
8}
9​
10function terminalCloseShortcutOptions(platform?: string) {
11 return {
12 ...(platform === undefined ? {} : { platform }),
13 context: { terminalFocus: true, terminalOpen: true },
14 };
16​
17export function preventTerminalCloseShortcut(
18 event: TerminalCloseShortcutEvent,
19 keybindings: ResolvedKeybindingsConfig,
20 platform?: string,
21): boolean {
22 if (!isTerminalCloseShortcut(event, keybindings, terminalCloseShortcutOptions(platform))) {
23 return false;
24 }
25 event.preventDefault();
26 return true;
28​
29export function preventRepeatedTerminalCloseShortcut(
30 event: TerminalCloseShortcutEvent,
31 keybindings: ResolvedKeybindingsConfig,
32 platform?: string,
33): boolean {
34 if (!event.repeat) return false;
35 return preventTerminalCloseShortcut(event, keybindings, platform);