{"version":3,"file":"index.mjs","names":[],"sources":["../../../../../packages/hooks/use-composition/index.ts"],"sourcesContent":["import { nextTick, ref } from 'vue'\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    isComposing.value = true\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"],"mappings":";;;AASA,SAAgB,eAAe,EAC7B,kBACA,QACwB;CACxB,MAAM,cAAc,IAAI,MAAM;CAE9B,MAAM,0BAA0B,UAA4B;AAC1D,SAAO,oBAAoB,MAAM;AACjC,cAAY,QAAQ;;CAGtB,MAAM,2BAA2B,UAA4B;AAC3D,SAAO,qBAAqB,MAAM;AAClC,cAAY,QAAQ;;CAGtB,MAAM,wBAAwB,UAA4B;AACxD,SAAO,kBAAkB,MAAM;AAC/B,MAAI,YAAY,OAAO;AACrB,eAAY,QAAQ;AACpB,kBAAe,iBAAiB,MAAM,CAAC;;;CAI3C,MAAM,qBAAqB,UAA4B;AACrD,QAAM,SAAS,mBACX,qBAAqB,MAAM,GAC3B,wBAAwB,MAAM;;AAGpC,QAAO;EACL;EACA;EACA;EACA;EACA;EACD"}