@nuxt/ui
Version:
A UI Library for Modern Web Apps, powered by Vue & Tailwind CSS.
23 lines (22 loc) • 596 B
JavaScript
export function useIMEGuard(callback) {
let compositionJustEnded = false;
function isComposing(event) {
return event.isComposing || event.keyCode === 229;
}
function onKeydown(event) {
if (compositionJustEnded || isComposing(event)) {
return;
}
event.preventDefault();
callback(event);
}
let compositionEndTimer;
function onCompositionEnd() {
clearTimeout(compositionEndTimer);
compositionJustEnded = true;
compositionEndTimer = setTimeout(() => {
compositionJustEnded = false;
}, 50);
}
return { onKeydown, onCompositionEnd };
}