{"version":3,"file":"index.mjs","names":["ep?: string | null","Webchat","params: UseWebchatParams"],"sources":["../../src/react/useWebchat.tsx"],"sourcesContent":["import { useEffect, useMemo, useRef, useState } from \"react\";\nimport Webchat from \"../client/webchat/webchat\";\nimport type { IWebchatPublic } from \"../client/webchat/webchat\";\nimport type { IWebchatState } from \"../types/webchat\";\n\ntype Token = { token: string };\ntype TokenProvider = () => Promise<Token>;\n\ntype UseWebchatParams = {\n  agentId: string;\n  getToken: TokenProvider;\n  sampleRate?: number;\n  endpoint?: string | null;\n};\n\ntype UseWebchatReturn = {\n  state: IWebchatState;\n  start: () => Promise<void>;\n  stop: () => void;\n  webchat: IWebchatPublic;\n};\n\nfunction createWebchat(ep?: string | null): IWebchatPublic {\n  const w = new Webchat({ endpoint: ep });\n  return w;\n}\n\nexport function useWebchat(params: UseWebchatParams): UseWebchatReturn {\n  const { agentId, getToken, sampleRate, endpoint } = params;\n  const [state, setState] = useState<IWebchatState>(\"closed\");\n  const instanceRef = useRef<IWebchatPublic | null>(null);\n\n  const wc = useMemo<IWebchatPublic>(() => {\n    const w = createWebchat(endpoint);\n    return w;\n  }, [endpoint]);\n\n  useEffect((): (() => void) => {\n    instanceRef.current = wc;\n    return (): void => {\n      if (instanceRef.current) instanceRef.current.stop();\n      instanceRef.current = null;\n      setState(\"closed\");\n    };\n  }, [wc]);\n\n  const start = async (): Promise<void> => {\n    setState(\"connecting\");\n    const t = await getToken();\n    await wc.start({ agentId: agentId, sessionId: t.token, sampleRate: sampleRate });\n    setState(\"open\");\n  };\n\n  const stop = (): void => {\n    if (instanceRef.current) {\n      instanceRef.current.stop();\n      setState(\"closed\");\n    }\n  };\n\n  return { state: state, start: start, stop: stop, webchat: wc };\n}\n"],"mappings":"gKAsBA,SAAS,EAAcA,EAAoC,CACzD,IAAM,EAAI,IAAIC,EAAQ,CAAE,SAAU,CAAI,GACtC,OAAO,CACR,CAED,SAAgB,EAAWC,EAA4C,CACrE,GAAM,CAAE,UAAS,WAAU,aAAY,WAAU,CAAG,EAC9C,CAAC,EAAO,EAAS,CAAG,EAAwB,SAAS,CACrD,EAAc,EAA8B,KAAK,CAEjD,EAAK,EAAwB,IAAM,CACvC,IAAM,EAAI,EAAc,EAAS,CACjC,OAAO,CACR,EAAE,CAAC,CAAS,EAAC,CAEd,EAAU,KACR,EAAY,QAAU,EACf,IAAY,CAGjB,AAFI,EAAY,SAAS,EAAY,QAAQ,MAAM,CACnD,EAAY,QAAU,KACtB,EAAS,SAAS,AACnB,GACA,CAAC,CAAG,EAAC,CAER,IAAM,EAAQ,SAA2B,CACvC,EAAS,aAAa,CACtB,IAAM,EAAI,KAAM,IAAU,CAE1B,AADA,KAAM,GAAG,MAAM,CAAW,UAAS,UAAW,EAAE,MAAmB,YAAY,EAAC,CAChF,EAAS,OAAO,AACjB,EAEK,EAAO,IAAY,CACvB,AAAI,EAAY,UACd,EAAY,QAAQ,MAAM,CAC1B,EAAS,SAAS,CAErB,EAED,MAAO,CAAS,QAAc,QAAa,OAAM,QAAS,CAAI,CAC/D"}