bettercx-widget
Version:
Professional AI-powered chat widget for BetterCX platform. Seamlessly integrate intelligent customer support into any website.
37 lines (36 loc) • 1.67 kB
JavaScript
import { jsx as _jsx } from "react/jsx-runtime";
import { useEffect, useRef, useImperativeHandle, forwardRef } from 'react';
import 'bettercx-widget';
export const BetterCXWidgetReact = forwardRef(({ publicKey, theme = 'auto', debug = false, baseUrl = 'https://dev-api.bettercx.ai', aiServiceUrl = 'https://dev-ai.bettercx.ai', autoInit = true, position = 'right', onWidgetEvent, className, }, ref) => {
// eslint-disable-next-line @typescript-eslint/no-explicit-any
const widgetRef = useRef(null);
useImperativeHandle(ref, () => ({
open: async () => {
await widgetRef.current?.open();
},
close: async () => {
await widgetRef.current?.close();
},
toggle: async () => {
await widgetRef.current?.toggle();
},
sendMessage: async (content) => {
await widgetRef.current?.sendMessage(content);
},
}));
useEffect(() => {
const widget = widgetRef.current;
if (widget && onWidgetEvent) {
const handleEvent = (event) => {
onWidgetEvent(event.detail);
};
widget.addEventListener('widgetEvent', handleEvent);
return () => {
widget.removeEventListener('widgetEvent', handleEvent);
};
}
}, [onWidgetEvent]);
return (_jsx("bettercx-widget", { ref: widgetRef, className: className, "public-key": publicKey, theme: theme, debug: debug, "base-url": baseUrl, "ai-service-url": aiServiceUrl, "auto-init": autoInit, position: position }));
});
BetterCXWidgetReact.displayName = 'BetterCXWidgetReact';
export default BetterCXWidgetReact;