UNPKG

@oiij/use

Version:

Som Composable Functions for Vue 3

38 lines (36 loc) 815 B
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 };