@oiij/use
Version:
Som Composable Functions for Vue 3
38 lines (36 loc) • 815 B
JavaScript
import { createEventHook, useEventListener } from "@vueuse/core";
import { ref } from "vue";
//#region src/composables/use-scan-code.ts
function useScanCode() {
const value = ref("");
const pending = ref(true);
let tempStr = "";
let timer;
const onScanEvent = createEventHook();
function onKeyDown(ev) {
clearTimeout(timer);
timer = setTimeout(() => {
pending.value = true;
}, 100);
const key = ev.key;
if (pending.value) {
tempStr = "";
pending.value = false;
}
if (key === "Enter") {
pending.value = true;
value.value = tempStr;
onScanEvent.trigger(value.value);
tempStr = "";
}
if (key.length === 1) tempStr += key;
}
useEventListener(window, "keydown", onKeyDown);
return {
value,
pending,
onScan: onScanEvent.on
};
}
//#endregion
export { useScanCode };