halo/ui/console-src/composables/use-save-keybinding.ts

22 lines
530 B
TypeScript

import { isMac } from "@/utils/device";
import { useEventListener } from "@vueuse/core";
import { useDebounceFn } from "@vueuse/shared";
import { nextTick } from "vue";
export function useSaveKeybinding(fn: () => void) {
const debouncedFn = useDebounceFn(() => {
fn();
}, 300);
useEventListener(window, "keydown", (e: KeyboardEvent) => {
if (isMac ? e.metaKey : e.ctrlKey) {
if (e.key === "s") {
e.preventDefault();
nextTick(() => {
debouncedFn();
});
}
}
});
}