45 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			45 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| 'use strict';
 | |
| 
 | |
| Object.defineProperty(exports, '__esModule', { value: true });
 | |
| 
 | |
| var vue = require('vue');
 | |
| var i18n = require('../../utils/i18n.js');
 | |
| 
 | |
| function useComposition({
 | |
|   afterComposition,
 | |
|   emit
 | |
| }) {
 | |
|   const isComposing = vue.ref(false);
 | |
|   const handleCompositionStart = (event) => {
 | |
|     emit == null ? void 0 : emit("compositionstart", event);
 | |
|     isComposing.value = true;
 | |
|   };
 | |
|   const handleCompositionUpdate = (event) => {
 | |
|     var _a;
 | |
|     emit == null ? void 0 : emit("compositionupdate", event);
 | |
|     const text = (_a = event.target) == null ? void 0 : _a.value;
 | |
|     const lastCharacter = text[text.length - 1] || "";
 | |
|     isComposing.value = !i18n.isKorean(lastCharacter);
 | |
|   };
 | |
|   const handleCompositionEnd = (event) => {
 | |
|     emit == null ? void 0 : emit("compositionend", event);
 | |
|     if (isComposing.value) {
 | |
|       isComposing.value = false;
 | |
|       vue.nextTick(() => afterComposition(event));
 | |
|     }
 | |
|   };
 | |
|   const handleComposition = (event) => {
 | |
|     event.type === "compositionend" ? handleCompositionEnd(event) : handleCompositionUpdate(event);
 | |
|   };
 | |
|   return {
 | |
|     isComposing,
 | |
|     handleComposition,
 | |
|     handleCompositionStart,
 | |
|     handleCompositionUpdate,
 | |
|     handleCompositionEnd
 | |
|   };
 | |
| }
 | |
| 
 | |
| exports.useComposition = useComposition;
 | |
| //# sourceMappingURL=index.js.map
 |