32 lines
810 B
JavaScript
32 lines
810 B
JavaScript
|
import { ref } from 'vue';
|
||
|
import { isFunction } from '@vue/shared';
|
||
|
import { isKorean } from '../../../utils/isDef.mjs';
|
||
|
|
||
|
function useInput(handleInput) {
|
||
|
const isComposing = ref(false);
|
||
|
const handleCompositionStart = () => {
|
||
|
isComposing.value = true;
|
||
|
};
|
||
|
const handleCompositionUpdate = (event) => {
|
||
|
const text = event.target.value;
|
||
|
const lastCharacter = text[text.length - 1] || "";
|
||
|
isComposing.value = !isKorean(lastCharacter);
|
||
|
};
|
||
|
const handleCompositionEnd = (event) => {
|
||
|
if (isComposing.value) {
|
||
|
isComposing.value = false;
|
||
|
if (isFunction(handleInput)) {
|
||
|
handleInput(event);
|
||
|
}
|
||
|
}
|
||
|
};
|
||
|
return {
|
||
|
handleCompositionStart,
|
||
|
handleCompositionUpdate,
|
||
|
handleCompositionEnd
|
||
|
};
|
||
|
}
|
||
|
|
||
|
export { useInput };
|
||
|
//# sourceMappingURL=useInput.mjs.map
|