rapida-react
Version:
An easy to use react client for building generative ai application using Rapida platform.
1 lines • 2.72 kB
Source Map (JSON)
{"version":3,"sources":["../../src/components/connection-status.tsx"],"sourcesContent":["/*\n * Copyright (c) 2024. Rapida\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n *\n * Author: Prashant <prashant@rapida.ai>\n *\n */\nimport { agentConnectionStateObservable } from \"@/rapida/hooks/observables/voice-agent\";\nimport { useMaybeVoiceAgent } from \"@/rapida/hooks/use-voice-agent\";\nimport { cn } from \"@/rapida/styles\";\nimport React, { FC, HTMLAttributes, useState } from \"react\";\n\ninterface ConnectionStatusProps extends HTMLAttributes<HTMLSpanElement> {}\n//\nexport const ConnectionStatus: FC<ConnectionStatusProps> = ({ className }) => {\n const agentContext = useMaybeVoiceAgent();\n const [connected, setConnected] = useState<boolean>(false);\n\n React.useEffect(() => {\n const listener = agentConnectionStateObservable(agentContext!).subscribe(\n (x) => {\n setConnected(x.isConnected);\n }\n );\n return () => listener.unsubscribe();\n }, [agentContext]);\n\n return (\n <span\n className={cn(connected && \"text-green-600\", \"font-medium\", className)}\n >\n {connected ? \"Connected\" : \"Disconnected\"}\n </span>\n );\n};\n"],"mappings":";;;;;;;;;AA2BA,OAAO,SAA6B,gBAAgB;AAkBhD;AAdG,IAAM,mBAA8C,CAAC,EAAE,UAAU,MAAM;AAC5E,QAAM,eAAe,mBAAmB;AACxC,QAAM,CAAC,WAAW,YAAY,IAAI,SAAkB,KAAK;AAEzD,QAAM,UAAU,MAAM;AACpB,UAAM,WAAW,+BAA+B,YAAa,EAAE;AAAA,MAC7D,CAAC,MAAM;AACL,qBAAa,EAAE,WAAW;AAAA,MAC5B;AAAA,IACF;AACA,WAAO,MAAM,SAAS,YAAY;AAAA,EACpC,GAAG,CAAC,YAAY,CAAC;AAEjB,SACE;AAAA,IAAC;AAAA;AAAA,MACC,WAAW,GAAG,aAAa,kBAAkB,eAAe,SAAS;AAAA,MAEpE,sBAAY,cAAc;AAAA;AAAA,EAC7B;AAEJ;","names":[]}