{"version":3,"file":"index.mjs","sources":["../../../../../../packages/hooks/use-composition/index.ts"],"sourcesContent":["import { nextTick, ref } from 'vue-demi'\nimport { isKorean } from '@xzx-design/utils'\n\ninterface UseCompositionOptions {\n  afterComposition: (event: CompositionEvent) => void\n  emit?: ((event: 'compositionstart', evt: CompositionEvent) => void) &\n    ((event: 'compositionupdate', evt: CompositionEvent) => void) &\n    ((event: 'compositionend', evt: CompositionEvent) => void)\n}\n\nexport function useComposition({\n  afterComposition,\n  emit,\n}: UseCompositionOptions) {\n  const isComposing = ref(false)\n\n  const handleCompositionStart = (event: CompositionEvent) => {\n    emit?.('compositionstart', event)\n    isComposing.value = true\n  }\n\n  const handleCompositionUpdate = (event: CompositionEvent) => {\n    emit?.('compositionupdate', event)\n    const text = (event.target as HTMLInputElement)?.value\n    const lastCharacter = text[text.length - 1] || ''\n    isComposing.value = !isKorean(lastCharacter)\n  }\n\n  const handleCompositionEnd = (event: CompositionEvent) => {\n    emit?.('compositionend', event)\n    if (isComposing.value) {\n      isComposing.value = false\n      nextTick(() => afterComposition(event))\n    }\n  }\n\n  const handleComposition = (event: CompositionEvent) => {\n    event.type === 'compositionend'\n      ? handleCompositionEnd(event)\n      : handleCompositionUpdate(event)\n  }\n\n  return {\n    isComposing,\n    handleComposition,\n    handleCompositionStart,\n    handleCompositionUpdate,\n    handleCompositionEnd,\n  }\n}\n"],"names":[],"mappings":";;;;;AAUO,SAAS,cAAe,CAAA;AAAA,EAC7B,gBAAA;AAAA,EACA,IAAA;AACF,CAA0B,EAAA;AACxB,EAAM,MAAA,WAAA,GAAc,IAAI,KAAK,CAAA,CAAA;AAE7B,EAAM,MAAA,sBAAA,GAAyB,CAAC,KAA4B,KAAA;AAC1D,IAAA,IAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,IAAA,CAAO,kBAAoB,EAAA,KAAA,CAAA,CAAA;AAC3B,IAAA,WAAA,CAAY,KAAQ,GAAA,IAAA,CAAA;AAAA,GACtB,CAAA;AAEA,EAAM,MAAA,uBAAA,GAA0B,CAAC,KAA4B,KAAA;AArB/D,IAAA,IAAA,EAAA,CAAA;AAsBI,IAAA,IAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,IAAA,CAAO,mBAAqB,EAAA,KAAA,CAAA,CAAA;AAC5B,IAAM,MAAA,IAAA,GAAA,CAAQ,EAAM,GAAA,KAAA,CAAA,MAAA,KAAN,IAAmC,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,KAAA,CAAA;AACjD,IAAA,MAAM,aAAgB,GAAA,IAAA,CAAK,IAAK,CAAA,MAAA,GAAS,CAAM,CAAA,IAAA,EAAA,CAAA;AAC/C,IAAY,WAAA,CAAA,KAAA,GAAQ,CAAC,QAAA,CAAS,aAAa,CAAA,CAAA;AAAA,GAC7C,CAAA;AAEA,EAAM,MAAA,oBAAA,GAAuB,CAAC,KAA4B,KAAA;AACxD,IAAA,IAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,IAAA,CAAO,gBAAkB,EAAA,KAAA,CAAA,CAAA;AACzB,IAAA,IAAI,YAAY,KAAO,EAAA;AACrB,MAAA,WAAA,CAAY,KAAQ,GAAA,KAAA,CAAA;AACpB,MAAS,QAAA,CAAA,MAAM,gBAAiB,CAAA,KAAK,CAAC,CAAA,CAAA;AAAA,KACxC;AAAA,GACF,CAAA;AAEA,EAAM,MAAA,iBAAA,GAAoB,CAAC,KAA4B,KAAA;AACrD,IAAA,KAAA,CAAM,SAAS,gBACX,GAAA,oBAAA,CAAqB,KAAK,CAAA,GAC1B,wBAAwB,KAAK,CAAA,CAAA;AAAA,GACnC,CAAA;AAEA,EAAO,OAAA;AAAA,IACL,WAAA;AAAA,IACA,iBAAA;AAAA,IACA,sBAAA;AAAA,IACA,uBAAA;AAAA,IACA,oBAAA;AAAA,GACF,CAAA;AACF;;;;"}