{"version":3,"sources":["../../src/use-input-composition/index.ts"],"sourcesContent":["import { useEventListener } from '../use-event-listener'\nimport { useSafeState } from '../use-safe-state'\nimport { useTargetElement } from '../use-target-element'\n\nimport type { ElementTarget } from '../use-target-element'\n\nexport interface UseInputCompositionState {\n  /**\n   * Whether the input is in the composition state.\n   */\n  isComposing: boolean\n  /**\n   * The composition data.\n   */\n  data: string\n}\n\nexport interface UseInputCompositionReturns extends UseInputCompositionState {}\n\n/**\n * A hook to get the composition state of an input element.\n *\n * @since 1.4.0\n */\nexport function useInputComposition<T extends HTMLElement>(target: ElementTarget<T>): UseInputCompositionReturns {\n  const [state, setState] = useSafeState<UseInputCompositionState>({ isComposing: false, data: '' })\n\n  const inputEl = useTargetElement(target)\n\n  useEventListener(inputEl, ['compositionstart', 'compositionupdate'], (event: CompositionEvent) =>\n    setState({ isComposing: true, data: event.data }),\n  )\n\n  useEventListener(inputEl, 'compositionend', () => setState({ isComposing: false, data: '' }))\n\n  return state\n}\n"],"names":["useInputComposition","target","useSafeState","isComposing","data","state","setState","inputEl","useTargetElement","useEventListener","event"],"mappings":";;;;+BAwBgBA;;;eAAAA;;;gCAxBiB;4BACJ;gCACI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAsB1B,SAASA,oBAA2CC,MAAwB;IACjF,IAA0BC,iCAAAA,IAAAA,0BAAY,EAA2B;QAAEC,aAAa;QAAOC,MAAM;IAAG,QAAzFC,QAAmBH,kBAAZI,WAAYJ;IAE1B,IAAMK,UAAUC,IAAAA,kCAAgB,EAACP;IAEjCQ,IAAAA,kCAAgB,EAACF,SAAS;QAAC;QAAoB;KAAoB,EAAE,SAACG;eACpEJ,SAAS;YAAEH,aAAa;YAAMC,MAAMM,MAAMN,IAAI;QAAC;;IAGjDK,IAAAA,kCAAgB,EAACF,SAAS,kBAAkB;eAAMD,SAAS;YAAEH,aAAa;YAAOC,MAAM;QAAG;;IAE1F,OAAOC;AACT"}