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
 |