dp-widgets-framework 1.1.1 → 1.1.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.esm.js +93 -15
- package/dist/index.js +93 -15
- package/package.json +1 -1
package/dist/index.esm.js
CHANGED
|
@@ -36578,13 +36578,17 @@ function SummaryComponent({ summaryState, styles, appendMessage, query, isFirstL
|
|
|
36578
36578
|
return (jsxRuntimeExports.jsx(SummaryWidget, { title: title, data: data, metadata: metadata, className: "" }));
|
|
36579
36579
|
}
|
|
36580
36580
|
function CopilotKitAgent({ widget, showHeader, styles, onResetReady, widgetIds, widgetBackendUrl, datasetId }) {
|
|
36581
|
-
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31;
|
|
36581
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32;
|
|
36582
36582
|
const agentType = (_a = widget.config) === null || _a === void 0 ? void 0 : _a.agentType;
|
|
36583
36583
|
const orientation = (_b = widget.config) === null || _b === void 0 ? void 0 : _b.orientation;
|
|
36584
36584
|
const isFirstLoad = (_c = widget.config) === null || _c === void 0 ? void 0 : _c.isFirstLoad;
|
|
36585
36585
|
const { threadId, setThreadId } = useCopilotContext();
|
|
36586
36586
|
const timeoutRef = useRef(null);
|
|
36587
36587
|
const [isTimeoutTriggered, setIsTimeoutTriggered] = useState(false);
|
|
36588
|
+
const [apiCallCount, setApiCallCount] = useState(0);
|
|
36589
|
+
const [hasTimeoutError, setHasTimeoutError] = useState(false);
|
|
36590
|
+
const [isAgentTriggered, setIsAgentTriggered] = useState(false);
|
|
36591
|
+
const pollingIntervalRef = useRef(null);
|
|
36588
36592
|
useEffect(() => {
|
|
36589
36593
|
setThreadId(widget.id);
|
|
36590
36594
|
}, [widget.id, setThreadId]);
|
|
@@ -36595,16 +36599,25 @@ function CopilotKitAgent({ widget, showHeader, styles, onResetReady, widgetIds,
|
|
|
36595
36599
|
// Function to handle timeout and call loadAgentState API
|
|
36596
36600
|
const handleLoadingTimeout = useCallback(async () => {
|
|
36597
36601
|
var _a;
|
|
36598
|
-
if (!widgetBackendUrl || !widget.id || isTimeoutTriggered || (chartState === null || chartState === void 0 ? void 0 : chartState.agent_message))
|
|
36602
|
+
if (!widgetBackendUrl || !widget.id || isTimeoutTriggered || (chartState === null || chartState === void 0 ? void 0 : chartState.agent_message) || hasTimeoutError)
|
|
36599
36603
|
return;
|
|
36600
36604
|
console.log('Loading timeout triggered for widget:', widget.id);
|
|
36601
36605
|
setIsTimeoutTriggered(true);
|
|
36606
|
+
// Check if we've reached the 10 call limit
|
|
36607
|
+
if (apiCallCount >= 10) {
|
|
36608
|
+
console.log('API call limit reached for widget:', widget.id);
|
|
36609
|
+
setHasTimeoutError(true);
|
|
36610
|
+
setChartState(prevState => (Object.assign(Object.assign({}, prevState), { agent_message: "Timeout: Unable to load data after multiple attempts. Please try refreshing the widget." })));
|
|
36611
|
+
return;
|
|
36612
|
+
}
|
|
36613
|
+
// Increment the API call counter
|
|
36614
|
+
setApiCallCount(prev => prev + 1);
|
|
36602
36615
|
const agentName = ((_a = widget.config) === null || _a === void 0 ? void 0 : _a.agentName) || "adk-construction-project-agent";
|
|
36603
36616
|
const apiResponse = await loadAgentState(widgetBackendUrl, widget.id, agentName);
|
|
36604
36617
|
if (apiResponse && !(chartState === null || chartState === void 0 ? void 0 : chartState.agent_message)) {
|
|
36605
36618
|
parseAndUpdateChartState(apiResponse, setChartState);
|
|
36606
36619
|
}
|
|
36607
|
-
}, [widgetBackendUrl, widget.id, isTimeoutTriggered, setChartState, (_e = widget.config) === null || _e === void 0 ? void 0 : _e.agentName, chartState]);
|
|
36620
|
+
}, [widgetBackendUrl, widget.id, isTimeoutTriggered, setChartState, (_e = widget.config) === null || _e === void 0 ? void 0 : _e.agentName, chartState, apiCallCount, hasTimeoutError]);
|
|
36608
36621
|
// Function to start timeout
|
|
36609
36622
|
const startLoadingTimeout = useCallback(() => {
|
|
36610
36623
|
if (timeoutRef.current) {
|
|
@@ -36622,6 +36635,58 @@ function CopilotKitAgent({ widget, showHeader, styles, onResetReady, widgetIds,
|
|
|
36622
36635
|
timeoutRef.current = null;
|
|
36623
36636
|
}
|
|
36624
36637
|
}, []);
|
|
36638
|
+
// Function to start polling for data availability
|
|
36639
|
+
const startPollingForData = useCallback(() => {
|
|
36640
|
+
var _a;
|
|
36641
|
+
if (!widgetBackendUrl || !((_a = widget.config) === null || _a === void 0 ? void 0 : _a.agentName))
|
|
36642
|
+
return;
|
|
36643
|
+
setIsAgentTriggered(true);
|
|
36644
|
+
setApiCallCount(0);
|
|
36645
|
+
setHasTimeoutError(false);
|
|
36646
|
+
// Clear any existing polling interval
|
|
36647
|
+
if (pollingIntervalRef.current) {
|
|
36648
|
+
clearInterval(pollingIntervalRef.current);
|
|
36649
|
+
}
|
|
36650
|
+
// Start polling immediately, then every CHART_REFRESH_TIMEOUT
|
|
36651
|
+
const pollForData = async () => {
|
|
36652
|
+
var _a, _b, _c;
|
|
36653
|
+
if (apiCallCount >= 10) {
|
|
36654
|
+
setHasTimeoutError(true);
|
|
36655
|
+
setIsAgentTriggered(false);
|
|
36656
|
+
if (pollingIntervalRef.current) {
|
|
36657
|
+
clearInterval(pollingIntervalRef.current);
|
|
36658
|
+
pollingIntervalRef.current = null;
|
|
36659
|
+
}
|
|
36660
|
+
return;
|
|
36661
|
+
}
|
|
36662
|
+
setApiCallCount(prev => prev + 1);
|
|
36663
|
+
const agentName = ((_a = widget.config) === null || _a === void 0 ? void 0 : _a.agentName) || "adk-construction-project-agent";
|
|
36664
|
+
const apiResponse = await loadAgentState(widgetBackendUrl, widget.id, agentName);
|
|
36665
|
+
if (apiResponse && ((_c = (_b = apiResponse.data) === null || _b === void 0 ? void 0 : _b.loadAgentState) === null || _c === void 0 ? void 0 : _c.state)) {
|
|
36666
|
+
parseAndUpdateChartState(apiResponse, setChartState);
|
|
36667
|
+
setIsAgentTriggered(false);
|
|
36668
|
+
if (pollingIntervalRef.current) {
|
|
36669
|
+
clearInterval(pollingIntervalRef.current);
|
|
36670
|
+
pollingIntervalRef.current = null;
|
|
36671
|
+
}
|
|
36672
|
+
}
|
|
36673
|
+
};
|
|
36674
|
+
// Poll immediately
|
|
36675
|
+
pollForData();
|
|
36676
|
+
// Then poll every CHART_REFRESH_TIMEOUT
|
|
36677
|
+
pollingIntervalRef.current = setInterval(pollForData, CHART_REFRESH_TIMEOUT);
|
|
36678
|
+
// Set a maximum timeout to stop polling after 10 attempts
|
|
36679
|
+
setTimeout(() => {
|
|
36680
|
+
if (pollingIntervalRef.current) {
|
|
36681
|
+
clearInterval(pollingIntervalRef.current);
|
|
36682
|
+
pollingIntervalRef.current = null;
|
|
36683
|
+
setIsAgentTriggered(false);
|
|
36684
|
+
if (apiCallCount >= 10) {
|
|
36685
|
+
setHasTimeoutError(true);
|
|
36686
|
+
}
|
|
36687
|
+
}
|
|
36688
|
+
}, CHART_REFRESH_TIMEOUT * 10);
|
|
36689
|
+
}, [widgetBackendUrl, (_f = widget.config) === null || _f === void 0 ? void 0 : _f.agentName, widget.id, apiCallCount, setChartState]);
|
|
36625
36690
|
// Function to clear chat and reset chart state
|
|
36626
36691
|
useCallback(async (widgetId) => {
|
|
36627
36692
|
if (!widgetBackendUrl)
|
|
@@ -36638,20 +36703,30 @@ function CopilotKitAgent({ widget, showHeader, styles, onResetReady, widgetIds,
|
|
|
36638
36703
|
}),
|
|
36639
36704
|
});
|
|
36640
36705
|
setChartState(createInitialChartState(agentType || '', widgetIds, datasetId));
|
|
36706
|
+
setApiCallCount(0);
|
|
36707
|
+
setHasTimeoutError(false);
|
|
36641
36708
|
}
|
|
36642
36709
|
catch (error) {
|
|
36643
36710
|
console.error('Failed to clear chat and state:', error);
|
|
36644
36711
|
}
|
|
36645
36712
|
}, [widgetBackendUrl, setChartState, agentType, widgetIds]);
|
|
36646
|
-
// Clean up timeout on unmount
|
|
36713
|
+
// Clean up timeout and polling on unmount
|
|
36647
36714
|
useEffect(() => {
|
|
36648
36715
|
return () => {
|
|
36649
36716
|
if (timeoutRef.current) {
|
|
36650
36717
|
clearTimeout(timeoutRef.current);
|
|
36651
36718
|
}
|
|
36719
|
+
if (pollingIntervalRef.current) {
|
|
36720
|
+
clearInterval(pollingIntervalRef.current);
|
|
36721
|
+
}
|
|
36652
36722
|
};
|
|
36653
36723
|
}, []);
|
|
36654
|
-
const { appendMessage, reset } = useCopilotChat();
|
|
36724
|
+
const { appendMessage: originalAppendMessage, reset } = useCopilotChat();
|
|
36725
|
+
// Wrapper function for appendMessage that triggers polling
|
|
36726
|
+
const appendMessage = useCallback((message) => {
|
|
36727
|
+
startPollingForData();
|
|
36728
|
+
return originalAppendMessage(message);
|
|
36729
|
+
}, [originalAppendMessage, startPollingForData]);
|
|
36655
36730
|
// Register the reset function with the parent component
|
|
36656
36731
|
useEffect(() => {
|
|
36657
36732
|
if (onResetReady && reset && widget.id) {
|
|
@@ -36700,6 +36775,8 @@ function CopilotKitAgent({ widget, showHeader, styles, onResetReady, widgetIds,
|
|
|
36700
36775
|
const { widgetId } = event.detail;
|
|
36701
36776
|
if (widgetId === widget.id) {
|
|
36702
36777
|
setChartState(createInitialChartState(agentType || '', widgetIds, datasetId));
|
|
36778
|
+
setApiCallCount(0);
|
|
36779
|
+
setHasTimeoutError(false);
|
|
36703
36780
|
}
|
|
36704
36781
|
};
|
|
36705
36782
|
window.addEventListener('triggerAgent', handleTriggerAgent);
|
|
@@ -36711,17 +36788,18 @@ function CopilotKitAgent({ widget, showHeader, styles, onResetReady, widgetIds,
|
|
|
36711
36788
|
}, [widget.id, appendMessage, agentType, setChartState]);
|
|
36712
36789
|
return (jsxRuntimeExports.jsxs("div", { className: cn("flex flex-col h-full"), children: [showHeader && (jsxRuntimeExports.jsx("div", { className: "flex items-center justify-between pb-2 border-b", children: jsxRuntimeExports.jsxs("div", { className: "flex items-center gap-2", children: [jsxRuntimeExports.jsx(Bot, { className: "h-4 w-4" }), jsxRuntimeExports.jsx("h3", { className: "text-sm font-medium", children: widget.title })] }) })), jsxRuntimeExports.jsx("div", { className: "flex-1 h-full", children: (chartState === null || chartState === void 0 ? void 0 : chartState.agent_message) && agentType !== "chatbot" && (
|
|
36713
36790
|
// Check if data is empty based on agent type
|
|
36714
|
-
(agentType === "Bar Chart Agent" && (!((
|
|
36715
|
-
(agentType === "Series Bar Chart Agent" && (!((
|
|
36716
|
-
(agentType === "Series Line Chart Agent" && (!((
|
|
36717
|
-
(agentType === "Pie Chart Agent" && (!((
|
|
36718
|
-
(agentType === "Line Chart Agent" && (!((
|
|
36719
|
-
(agentType === "Data Grid Agent" && (!((
|
|
36720
|
-
(agentType === "Summary Agent" && (!((
|
|
36721
|
-
title: ((
|
|
36722
|
-
initial: ((
|
|
36791
|
+
(agentType === "Bar Chart Agent" && (!((_j = (_h = (_g = chartState.bar_chart_data) === null || _g === void 0 ? void 0 : _g.data) === null || _h === void 0 ? void 0 : _h.labels) === null || _j === void 0 ? void 0 : _j.length) || !((_m = (_l = (_k = chartState.bar_chart_data) === null || _k === void 0 ? void 0 : _k.data) === null || _l === void 0 ? void 0 : _l.values) === null || _m === void 0 ? void 0 : _m.length))) ||
|
|
36792
|
+
(agentType === "Series Bar Chart Agent" && (!((_q = (_p = (_o = chartState.series_bar_chart_data) === null || _o === void 0 ? void 0 : _o.data) === null || _p === void 0 ? void 0 : _p.labels) === null || _q === void 0 ? void 0 : _q.length) || !((_t = (_s = (_r = chartState.series_bar_chart_data) === null || _r === void 0 ? void 0 : _r.data) === null || _s === void 0 ? void 0 : _s.series) === null || _t === void 0 ? void 0 : _t.length))) ||
|
|
36793
|
+
(agentType === "Series Line Chart Agent" && (!((_w = (_v = (_u = chartState.series_bar_chart_data) === null || _u === void 0 ? void 0 : _u.data) === null || _v === void 0 ? void 0 : _v.labels) === null || _w === void 0 ? void 0 : _w.length) || !((_z = (_y = (_x = chartState.series_bar_chart_data) === null || _x === void 0 ? void 0 : _x.data) === null || _y === void 0 ? void 0 : _y.series) === null || _z === void 0 ? void 0 : _z.length))) ||
|
|
36794
|
+
(agentType === "Pie Chart Agent" && (!((_2 = (_1 = (_0 = chartState.pie_chart_data) === null || _0 === void 0 ? void 0 : _0.data) === null || _1 === void 0 ? void 0 : _1.labels) === null || _2 === void 0 ? void 0 : _2.length) || !((_5 = (_4 = (_3 = chartState.pie_chart_data) === null || _3 === void 0 ? void 0 : _3.data) === null || _4 === void 0 ? void 0 : _4.values) === null || _5 === void 0 ? void 0 : _5.length))) ||
|
|
36795
|
+
(agentType === "Line Chart Agent" && (!((_8 = (_7 = (_6 = chartState.bar_chart_data) === null || _6 === void 0 ? void 0 : _6.data) === null || _7 === void 0 ? void 0 : _7.labels) === null || _8 === void 0 ? void 0 : _8.length) || !((_11 = (_10 = (_9 = chartState.bar_chart_data) === null || _9 === void 0 ? void 0 : _9.data) === null || _10 === void 0 ? void 0 : _10.values) === null || _11 === void 0 ? void 0 : _11.length))) ||
|
|
36796
|
+
(agentType === "Data Grid Agent" && (!((_14 = (_13 = (_12 = chartState.matrix_grid_data) === null || _12 === void 0 ? void 0 : _12.data) === null || _13 === void 0 ? void 0 : _13.headers) === null || _14 === void 0 ? void 0 : _14.length) || !((_17 = (_16 = (_15 = chartState.matrix_grid_data) === null || _15 === void 0 ? void 0 : _15.data) === null || _16 === void 0 ? void 0 : _16.rows) === null || _17 === void 0 ? void 0 : _17.length))) ||
|
|
36797
|
+
(agentType === "Summary Agent" && (!((_19 = (_18 = chartState.summary_data) === null || _18 === void 0 ? void 0 : _18.data) === null || _19 === void 0 ? void 0 : _19.content) || ((_22 = (_21 = (_20 = chartState.summary_data) === null || _20 === void 0 ? void 0 : _20.data) === null || _21 === void 0 ? void 0 : _21.content) === null || _22 === void 0 ? void 0 : _22.trim()) === ""))) ? (jsxRuntimeExports.jsx("div", { className: "flex items-center justify-center h-full p-4", children: jsxRuntimeExports.jsx("div", { className: "text-center max-w-md", children: jsxRuntimeExports.jsx("p", { className: "text-sm text-gray-700", children: chartState.agent_message }) }) })) : isAgentTriggered ? (createLoadingComponent("Agent processing your request...")) : agentType === "Bar Chart Agent" ? (jsxRuntimeExports.jsx(BarChartComponent, { barChartState: chartState, styles: styles, orientation: orientation, appendMessage: appendMessage, query: (_23 = widget.config) === null || _23 === void 0 ? void 0 : _23.query, isFirstLoad: isFirstLoad, widgetBackendUrl: widgetBackendUrl, widgetId: widget.id, startLoadingTimeout: startLoadingTimeout, clearLoadingTimeout: clearLoadingTimeout })) : agentType === "Series Bar Chart Agent" ? (jsxRuntimeExports.jsx(SeriesBarChartComponent, { seriesBarChartState: chartState, styles: styles, orientation: orientation, appendMessage: appendMessage, query: (_24 = widget.config) === null || _24 === void 0 ? void 0 : _24.query, isFirstLoad: isFirstLoad, widgetBackendUrl: widgetBackendUrl, widgetId: widget.id, startLoadingTimeout: startLoadingTimeout, clearLoadingTimeout: clearLoadingTimeout })) : agentType === "Series Line Chart Agent" ? (jsxRuntimeExports.jsx(SeriesLineChartComponent, { seriesLineChartState: chartState, styles: styles, orientation: orientation, appendMessage: appendMessage, query: (_25 = widget.config) === null || _25 === void 0 ? void 0 : _25.query, isFirstLoad: isFirstLoad, widgetBackendUrl: widgetBackendUrl, widgetId: widget.id, startLoadingTimeout: startLoadingTimeout, clearLoadingTimeout: clearLoadingTimeout })) : agentType === "Pie Chart Agent" ? (jsxRuntimeExports.jsx(PieChartComponent, { pieChartState: chartState, styles: styles, appendMessage: appendMessage, query: (_26 = widget.config) === null || _26 === void 0 ? void 0 : _26.query, isFirstLoad: isFirstLoad, widgetBackendUrl: widgetBackendUrl, widgetId: widget.id, startLoadingTimeout: startLoadingTimeout, clearLoadingTimeout: clearLoadingTimeout })) : agentType === "Line Chart Agent" ? (jsxRuntimeExports.jsx(LineChartComponent, { lineChartState: chartState, styles: styles, appendMessage: appendMessage, query: (_27 = widget.config) === null || _27 === void 0 ? void 0 : _27.query, isFirstLoad: isFirstLoad, widgetBackendUrl: widgetBackendUrl, widgetId: widget.id, startLoadingTimeout: startLoadingTimeout, clearLoadingTimeout: clearLoadingTimeout })) : agentType === "Data Grid Agent" ? (jsxRuntimeExports.jsx(DataGridComponent, { dataGridState: chartState, styles: styles, appendMessage: appendMessage, query: (_28 = widget.config) === null || _28 === void 0 ? void 0 : _28.query, isFirstLoad: isFirstLoad, widgetBackendUrl: widgetBackendUrl, widgetId: widget.id, startLoadingTimeout: startLoadingTimeout, clearLoadingTimeout: clearLoadingTimeout })) : agentType === "Summary Agent" ? (jsxRuntimeExports.jsx(SummaryComponent, { summaryState: chartState, styles: styles, appendMessage: appendMessage, query: (_29 = widget.config) === null || _29 === void 0 ? void 0 : _29.query, isFirstLoad: isFirstLoad, widgetBackendUrl: widgetBackendUrl, widgetId: widget.id, widget_ids: widgetIds, startLoadingTimeout: startLoadingTimeout, clearLoadingTimeout: clearLoadingTimeout, setChartState: setChartState })) : (jsxRuntimeExports.jsx(CopilotChat, { className: "h-full text-xs [&_.copilot-chat-message]:text-xs [&_.copilot-chat-input]:text-xs", labels: {
|
|
36798
|
+
title: ((_30 = widget.config) === null || _30 === void 0 ? void 0 : _30.copilotTitle) || widget.title,
|
|
36799
|
+
initial: ((_31 = widget.config) === null || _31 === void 0 ? void 0 : _31.copilotInitialMessage) || ((_32 = widget.config) === null || _32 === void 0 ? void 0 : _32.placeholder) || "How can I help you today?"
|
|
36723
36800
|
}, onSubmitMessage: () => {
|
|
36724
36801
|
setChartState(prevState => (Object.assign(Object.assign({}, prevState), { widget_ids: widgetIds, dataset_id: datasetId })));
|
|
36802
|
+
startPollingForData();
|
|
36725
36803
|
} })) })] }));
|
|
36726
36804
|
}
|
|
36727
36805
|
function AgentWidget({ widget, showHeader = true, widgetBackendUrl, onResetReady, widgetIds, datasetId, }) {
|
|
@@ -37467,7 +37545,7 @@ function WidgetDashboard({ pageId, isEditing, selectedWidget = null, onWidgetSel
|
|
|
37467
37545
|
return (jsxRuntimeExports.jsxs("div", { className: "w-full max-w-full p-4 bg-accent/5", children: [jsxRuntimeExports.jsx(AddWidgetDialog, { isOpen: openWidgetPallete, onClose: onCloseWidgetPallete, addWidgetFn: (widgetType, config) => {
|
|
37468
37546
|
addWidget(widgetType, config);
|
|
37469
37547
|
onCloseWidgetPallete === null || onCloseWidgetPallete === void 0 ? void 0 : onCloseWidgetPallete();
|
|
37470
|
-
}, defaultAgentName: defaultAgentName }), jsxRuntimeExports.jsx(EditWidgetDialog, { initialText: editInitialQuery, isOpen: showEditModal, onClose: () => setShowEditModal(false), onSubmit: handleEditSubmit }), jsxRuntimeExports.jsx("div", { className: "min-h-full", onDragOver: (e) => e.preventDefault(), onDrop: handleDrop, onClick: () => setSelectedWidget(null), children: isLoading ? (jsxRuntimeExports.jsx("div", { className: "flex items-center justify-center h-full", children: jsxRuntimeExports.jsx(Loader2, { className: "h-8 w-8 animate-spin" }) })) : (jsxRuntimeExports.jsx(RGL, { className: "layout m-0 p-0", layouts: { lg: getLayoutFromWidgets() }, breakpoints: { lg: 1200, md: 996, sm: 768, xs: 480 }, cols: { lg: 12, md: 8, sm: 6, xs: 2 }, rowHeight: 100, isDraggable: isEditing, isResizable: isEditing, draggableHandle: ".drag-icon", onLayoutChange: handleLayoutChange, compactType: "vertical", containerPadding: [0, 0], resizeHandles: ["sw", "nw", "se", "ne"], children: widgets.map((w) => (jsxRuntimeExports.jsxs("div", {
|
|
37548
|
+
}, defaultAgentName: defaultAgentName }), jsxRuntimeExports.jsx(EditWidgetDialog, { initialText: editInitialQuery, isOpen: showEditModal, onClose: () => setShowEditModal(false), onSubmit: handleEditSubmit }), jsxRuntimeExports.jsx("div", { className: "min-h-full", onDragOver: (e) => e.preventDefault(), onDrop: handleDrop, onClick: () => setSelectedWidget(null), children: isLoading ? (jsxRuntimeExports.jsx("div", { className: "flex items-center justify-center h-full", children: jsxRuntimeExports.jsx(Loader2, { className: "h-8 w-8 animate-spin" }) })) : (jsxRuntimeExports.jsx(RGL, { className: "layout m-0 p-0", layouts: { lg: getLayoutFromWidgets() }, breakpoints: { lg: 1200, md: 996, sm: 768, xs: 480 }, cols: { lg: 12, md: 8, sm: 6, xs: 2 }, rowHeight: 100, isDraggable: isEditing, isResizable: isEditing, draggableHandle: ".drag-icon", onLayoutChange: handleLayoutChange, compactType: "vertical", containerPadding: [0, 0], resizeHandles: ["sw", "nw", "se", "ne"], children: widgets.map((w) => (jsxRuntimeExports.jsxs("div", { className: `border border-primary-300 rounded-xl p-4 shadow-lg overflow-hidden ${isEditing ? 'pb-20' : 'pb-14'}`, children: [isEditing &&
|
|
37471
37549
|
jsxRuntimeExports.jsxs("div", { className: "flex items-center justify-end mb-4 relative", children: [jsxRuntimeExports.jsxs("div", { className: "flex items-center drag-icon cursor-grab absolute left-1/2 -translate-x-1/2", children: [jsxRuntimeExports.jsx(GripHorizontal, { className: "" }), jsxRuntimeExports.jsx(GripHorizontal, { className: "-ml-[3px]" }), jsxRuntimeExports.jsx(GripHorizontal, { className: "-ml-[3px]" })] }), jsxRuntimeExports.jsxs("div", { className: "flex items-center gap-2 cursor-pointer justify-end", children: [jsxRuntimeExports.jsx(Trash2, { onClick: () => removeWidget(w.id), className: "w-5 h-5 text-red-700" }), jsxRuntimeExports.jsx(Edit, { onClick: () => onClickSettings && onClickSettings(w), className: "w-5 h-5 text-gray-600" })] })] }), jsxRuntimeExports.jsxs("div", { className: "w-full h-full relative", children: [(w === null || w === void 0 ? void 0 : w.type) === "chatbot" &&
|
|
37472
37550
|
jsxRuntimeExports.jsxs("div", { className: "relative z-50", children: [jsxRuntimeExports.jsx("div", { onClick: () => handleClearChat(w.id), onMouseOver: () => setVisibleClearButton(true), onMouseLeave: () => setVisibleClearButton(false), className: "absolute z-40 flex align-middle justify-center gap-2 text-sm px-4 py-2 border-blue-300 rounded-sm dark:bg-white w-fit bg-gray-900 text-white dark:text-gray-900 cursor-pointer shadow-md transition-all", style: { top: "12px", right: "0", borderTopLeftRadius: "4px", borderBottomLeftRadius: "4px" }, children: jsxRuntimeExports.jsx(MessageCircleX, { className: "w-5 h-5" }) }), jsxRuntimeExports.jsx("span", { className: `absolute z-50 w-max py-1 text-xs px-2 rounded-sm dark:text-gray-900 dark:bg-white text-white bg-gray-900 ${visibleClearButton ? "block" : "hidden"}`, style: { top: "56px", right: "16px", borderRadius: "3px" }, children: "Clear Chat" })] }), jsxRuntimeExports.jsx(WidgetRenderer, { widget: w, widgetBackendUrl: widgetBackendUrl, onResetReady: handleResetReady, widgetIds: widgets.filter(widget => widget.type !== 'chatbot').map(widget => widget.id), datasetId: datasetId })] })] }, w.id))) })) })] }));
|
|
37473
37551
|
}
|
package/dist/index.js
CHANGED
|
@@ -36605,13 +36605,17 @@ function SummaryComponent({ summaryState, styles, appendMessage, query, isFirstL
|
|
|
36605
36605
|
return (jsxRuntimeExports.jsx(SummaryWidget, { title: title, data: data, metadata: metadata, className: "" }));
|
|
36606
36606
|
}
|
|
36607
36607
|
function CopilotKitAgent({ widget, showHeader, styles, onResetReady, widgetIds, widgetBackendUrl, datasetId }) {
|
|
36608
|
-
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31;
|
|
36608
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32;
|
|
36609
36609
|
const agentType = (_a = widget.config) === null || _a === void 0 ? void 0 : _a.agentType;
|
|
36610
36610
|
const orientation = (_b = widget.config) === null || _b === void 0 ? void 0 : _b.orientation;
|
|
36611
36611
|
const isFirstLoad = (_c = widget.config) === null || _c === void 0 ? void 0 : _c.isFirstLoad;
|
|
36612
36612
|
const { threadId, setThreadId } = reactCore.useCopilotContext();
|
|
36613
36613
|
const timeoutRef = React.useRef(null);
|
|
36614
36614
|
const [isTimeoutTriggered, setIsTimeoutTriggered] = React.useState(false);
|
|
36615
|
+
const [apiCallCount, setApiCallCount] = React.useState(0);
|
|
36616
|
+
const [hasTimeoutError, setHasTimeoutError] = React.useState(false);
|
|
36617
|
+
const [isAgentTriggered, setIsAgentTriggered] = React.useState(false);
|
|
36618
|
+
const pollingIntervalRef = React.useRef(null);
|
|
36615
36619
|
React.useEffect(() => {
|
|
36616
36620
|
setThreadId(widget.id);
|
|
36617
36621
|
}, [widget.id, setThreadId]);
|
|
@@ -36622,16 +36626,25 @@ function CopilotKitAgent({ widget, showHeader, styles, onResetReady, widgetIds,
|
|
|
36622
36626
|
// Function to handle timeout and call loadAgentState API
|
|
36623
36627
|
const handleLoadingTimeout = React.useCallback(async () => {
|
|
36624
36628
|
var _a;
|
|
36625
|
-
if (!widgetBackendUrl || !widget.id || isTimeoutTriggered || (chartState === null || chartState === void 0 ? void 0 : chartState.agent_message))
|
|
36629
|
+
if (!widgetBackendUrl || !widget.id || isTimeoutTriggered || (chartState === null || chartState === void 0 ? void 0 : chartState.agent_message) || hasTimeoutError)
|
|
36626
36630
|
return;
|
|
36627
36631
|
console.log('Loading timeout triggered for widget:', widget.id);
|
|
36628
36632
|
setIsTimeoutTriggered(true);
|
|
36633
|
+
// Check if we've reached the 10 call limit
|
|
36634
|
+
if (apiCallCount >= 10) {
|
|
36635
|
+
console.log('API call limit reached for widget:', widget.id);
|
|
36636
|
+
setHasTimeoutError(true);
|
|
36637
|
+
setChartState(prevState => (Object.assign(Object.assign({}, prevState), { agent_message: "Timeout: Unable to load data after multiple attempts. Please try refreshing the widget." })));
|
|
36638
|
+
return;
|
|
36639
|
+
}
|
|
36640
|
+
// Increment the API call counter
|
|
36641
|
+
setApiCallCount(prev => prev + 1);
|
|
36629
36642
|
const agentName = ((_a = widget.config) === null || _a === void 0 ? void 0 : _a.agentName) || "adk-construction-project-agent";
|
|
36630
36643
|
const apiResponse = await loadAgentState(widgetBackendUrl, widget.id, agentName);
|
|
36631
36644
|
if (apiResponse && !(chartState === null || chartState === void 0 ? void 0 : chartState.agent_message)) {
|
|
36632
36645
|
parseAndUpdateChartState(apiResponse, setChartState);
|
|
36633
36646
|
}
|
|
36634
|
-
}, [widgetBackendUrl, widget.id, isTimeoutTriggered, setChartState, (_e = widget.config) === null || _e === void 0 ? void 0 : _e.agentName, chartState]);
|
|
36647
|
+
}, [widgetBackendUrl, widget.id, isTimeoutTriggered, setChartState, (_e = widget.config) === null || _e === void 0 ? void 0 : _e.agentName, chartState, apiCallCount, hasTimeoutError]);
|
|
36635
36648
|
// Function to start timeout
|
|
36636
36649
|
const startLoadingTimeout = React.useCallback(() => {
|
|
36637
36650
|
if (timeoutRef.current) {
|
|
@@ -36649,6 +36662,58 @@ function CopilotKitAgent({ widget, showHeader, styles, onResetReady, widgetIds,
|
|
|
36649
36662
|
timeoutRef.current = null;
|
|
36650
36663
|
}
|
|
36651
36664
|
}, []);
|
|
36665
|
+
// Function to start polling for data availability
|
|
36666
|
+
const startPollingForData = React.useCallback(() => {
|
|
36667
|
+
var _a;
|
|
36668
|
+
if (!widgetBackendUrl || !((_a = widget.config) === null || _a === void 0 ? void 0 : _a.agentName))
|
|
36669
|
+
return;
|
|
36670
|
+
setIsAgentTriggered(true);
|
|
36671
|
+
setApiCallCount(0);
|
|
36672
|
+
setHasTimeoutError(false);
|
|
36673
|
+
// Clear any existing polling interval
|
|
36674
|
+
if (pollingIntervalRef.current) {
|
|
36675
|
+
clearInterval(pollingIntervalRef.current);
|
|
36676
|
+
}
|
|
36677
|
+
// Start polling immediately, then every CHART_REFRESH_TIMEOUT
|
|
36678
|
+
const pollForData = async () => {
|
|
36679
|
+
var _a, _b, _c;
|
|
36680
|
+
if (apiCallCount >= 10) {
|
|
36681
|
+
setHasTimeoutError(true);
|
|
36682
|
+
setIsAgentTriggered(false);
|
|
36683
|
+
if (pollingIntervalRef.current) {
|
|
36684
|
+
clearInterval(pollingIntervalRef.current);
|
|
36685
|
+
pollingIntervalRef.current = null;
|
|
36686
|
+
}
|
|
36687
|
+
return;
|
|
36688
|
+
}
|
|
36689
|
+
setApiCallCount(prev => prev + 1);
|
|
36690
|
+
const agentName = ((_a = widget.config) === null || _a === void 0 ? void 0 : _a.agentName) || "adk-construction-project-agent";
|
|
36691
|
+
const apiResponse = await loadAgentState(widgetBackendUrl, widget.id, agentName);
|
|
36692
|
+
if (apiResponse && ((_c = (_b = apiResponse.data) === null || _b === void 0 ? void 0 : _b.loadAgentState) === null || _c === void 0 ? void 0 : _c.state)) {
|
|
36693
|
+
parseAndUpdateChartState(apiResponse, setChartState);
|
|
36694
|
+
setIsAgentTriggered(false);
|
|
36695
|
+
if (pollingIntervalRef.current) {
|
|
36696
|
+
clearInterval(pollingIntervalRef.current);
|
|
36697
|
+
pollingIntervalRef.current = null;
|
|
36698
|
+
}
|
|
36699
|
+
}
|
|
36700
|
+
};
|
|
36701
|
+
// Poll immediately
|
|
36702
|
+
pollForData();
|
|
36703
|
+
// Then poll every CHART_REFRESH_TIMEOUT
|
|
36704
|
+
pollingIntervalRef.current = setInterval(pollForData, CHART_REFRESH_TIMEOUT);
|
|
36705
|
+
// Set a maximum timeout to stop polling after 10 attempts
|
|
36706
|
+
setTimeout(() => {
|
|
36707
|
+
if (pollingIntervalRef.current) {
|
|
36708
|
+
clearInterval(pollingIntervalRef.current);
|
|
36709
|
+
pollingIntervalRef.current = null;
|
|
36710
|
+
setIsAgentTriggered(false);
|
|
36711
|
+
if (apiCallCount >= 10) {
|
|
36712
|
+
setHasTimeoutError(true);
|
|
36713
|
+
}
|
|
36714
|
+
}
|
|
36715
|
+
}, CHART_REFRESH_TIMEOUT * 10);
|
|
36716
|
+
}, [widgetBackendUrl, (_f = widget.config) === null || _f === void 0 ? void 0 : _f.agentName, widget.id, apiCallCount, setChartState]);
|
|
36652
36717
|
// Function to clear chat and reset chart state
|
|
36653
36718
|
React.useCallback(async (widgetId) => {
|
|
36654
36719
|
if (!widgetBackendUrl)
|
|
@@ -36665,20 +36730,30 @@ function CopilotKitAgent({ widget, showHeader, styles, onResetReady, widgetIds,
|
|
|
36665
36730
|
}),
|
|
36666
36731
|
});
|
|
36667
36732
|
setChartState(createInitialChartState(agentType || '', widgetIds, datasetId));
|
|
36733
|
+
setApiCallCount(0);
|
|
36734
|
+
setHasTimeoutError(false);
|
|
36668
36735
|
}
|
|
36669
36736
|
catch (error) {
|
|
36670
36737
|
console.error('Failed to clear chat and state:', error);
|
|
36671
36738
|
}
|
|
36672
36739
|
}, [widgetBackendUrl, setChartState, agentType, widgetIds]);
|
|
36673
|
-
// Clean up timeout on unmount
|
|
36740
|
+
// Clean up timeout and polling on unmount
|
|
36674
36741
|
React.useEffect(() => {
|
|
36675
36742
|
return () => {
|
|
36676
36743
|
if (timeoutRef.current) {
|
|
36677
36744
|
clearTimeout(timeoutRef.current);
|
|
36678
36745
|
}
|
|
36746
|
+
if (pollingIntervalRef.current) {
|
|
36747
|
+
clearInterval(pollingIntervalRef.current);
|
|
36748
|
+
}
|
|
36679
36749
|
};
|
|
36680
36750
|
}, []);
|
|
36681
|
-
const { appendMessage, reset } = reactCore.useCopilotChat();
|
|
36751
|
+
const { appendMessage: originalAppendMessage, reset } = reactCore.useCopilotChat();
|
|
36752
|
+
// Wrapper function for appendMessage that triggers polling
|
|
36753
|
+
const appendMessage = React.useCallback((message) => {
|
|
36754
|
+
startPollingForData();
|
|
36755
|
+
return originalAppendMessage(message);
|
|
36756
|
+
}, [originalAppendMessage, startPollingForData]);
|
|
36682
36757
|
// Register the reset function with the parent component
|
|
36683
36758
|
React.useEffect(() => {
|
|
36684
36759
|
if (onResetReady && reset && widget.id) {
|
|
@@ -36727,6 +36802,8 @@ function CopilotKitAgent({ widget, showHeader, styles, onResetReady, widgetIds,
|
|
|
36727
36802
|
const { widgetId } = event.detail;
|
|
36728
36803
|
if (widgetId === widget.id) {
|
|
36729
36804
|
setChartState(createInitialChartState(agentType || '', widgetIds, datasetId));
|
|
36805
|
+
setApiCallCount(0);
|
|
36806
|
+
setHasTimeoutError(false);
|
|
36730
36807
|
}
|
|
36731
36808
|
};
|
|
36732
36809
|
window.addEventListener('triggerAgent', handleTriggerAgent);
|
|
@@ -36738,17 +36815,18 @@ function CopilotKitAgent({ widget, showHeader, styles, onResetReady, widgetIds,
|
|
|
36738
36815
|
}, [widget.id, appendMessage, agentType, setChartState]);
|
|
36739
36816
|
return (jsxRuntimeExports.jsxs("div", { className: cn("flex flex-col h-full"), children: [showHeader && (jsxRuntimeExports.jsx("div", { className: "flex items-center justify-between pb-2 border-b", children: jsxRuntimeExports.jsxs("div", { className: "flex items-center gap-2", children: [jsxRuntimeExports.jsx(lucideReact.Bot, { className: "h-4 w-4" }), jsxRuntimeExports.jsx("h3", { className: "text-sm font-medium", children: widget.title })] }) })), jsxRuntimeExports.jsx("div", { className: "flex-1 h-full", children: (chartState === null || chartState === void 0 ? void 0 : chartState.agent_message) && agentType !== "chatbot" && (
|
|
36740
36817
|
// Check if data is empty based on agent type
|
|
36741
|
-
(agentType === "Bar Chart Agent" && (!((
|
|
36742
|
-
(agentType === "Series Bar Chart Agent" && (!((
|
|
36743
|
-
(agentType === "Series Line Chart Agent" && (!((
|
|
36744
|
-
(agentType === "Pie Chart Agent" && (!((
|
|
36745
|
-
(agentType === "Line Chart Agent" && (!((
|
|
36746
|
-
(agentType === "Data Grid Agent" && (!((
|
|
36747
|
-
(agentType === "Summary Agent" && (!((
|
|
36748
|
-
title: ((
|
|
36749
|
-
initial: ((
|
|
36818
|
+
(agentType === "Bar Chart Agent" && (!((_j = (_h = (_g = chartState.bar_chart_data) === null || _g === void 0 ? void 0 : _g.data) === null || _h === void 0 ? void 0 : _h.labels) === null || _j === void 0 ? void 0 : _j.length) || !((_m = (_l = (_k = chartState.bar_chart_data) === null || _k === void 0 ? void 0 : _k.data) === null || _l === void 0 ? void 0 : _l.values) === null || _m === void 0 ? void 0 : _m.length))) ||
|
|
36819
|
+
(agentType === "Series Bar Chart Agent" && (!((_q = (_p = (_o = chartState.series_bar_chart_data) === null || _o === void 0 ? void 0 : _o.data) === null || _p === void 0 ? void 0 : _p.labels) === null || _q === void 0 ? void 0 : _q.length) || !((_t = (_s = (_r = chartState.series_bar_chart_data) === null || _r === void 0 ? void 0 : _r.data) === null || _s === void 0 ? void 0 : _s.series) === null || _t === void 0 ? void 0 : _t.length))) ||
|
|
36820
|
+
(agentType === "Series Line Chart Agent" && (!((_w = (_v = (_u = chartState.series_bar_chart_data) === null || _u === void 0 ? void 0 : _u.data) === null || _v === void 0 ? void 0 : _v.labels) === null || _w === void 0 ? void 0 : _w.length) || !((_z = (_y = (_x = chartState.series_bar_chart_data) === null || _x === void 0 ? void 0 : _x.data) === null || _y === void 0 ? void 0 : _y.series) === null || _z === void 0 ? void 0 : _z.length))) ||
|
|
36821
|
+
(agentType === "Pie Chart Agent" && (!((_2 = (_1 = (_0 = chartState.pie_chart_data) === null || _0 === void 0 ? void 0 : _0.data) === null || _1 === void 0 ? void 0 : _1.labels) === null || _2 === void 0 ? void 0 : _2.length) || !((_5 = (_4 = (_3 = chartState.pie_chart_data) === null || _3 === void 0 ? void 0 : _3.data) === null || _4 === void 0 ? void 0 : _4.values) === null || _5 === void 0 ? void 0 : _5.length))) ||
|
|
36822
|
+
(agentType === "Line Chart Agent" && (!((_8 = (_7 = (_6 = chartState.bar_chart_data) === null || _6 === void 0 ? void 0 : _6.data) === null || _7 === void 0 ? void 0 : _7.labels) === null || _8 === void 0 ? void 0 : _8.length) || !((_11 = (_10 = (_9 = chartState.bar_chart_data) === null || _9 === void 0 ? void 0 : _9.data) === null || _10 === void 0 ? void 0 : _10.values) === null || _11 === void 0 ? void 0 : _11.length))) ||
|
|
36823
|
+
(agentType === "Data Grid Agent" && (!((_14 = (_13 = (_12 = chartState.matrix_grid_data) === null || _12 === void 0 ? void 0 : _12.data) === null || _13 === void 0 ? void 0 : _13.headers) === null || _14 === void 0 ? void 0 : _14.length) || !((_17 = (_16 = (_15 = chartState.matrix_grid_data) === null || _15 === void 0 ? void 0 : _15.data) === null || _16 === void 0 ? void 0 : _16.rows) === null || _17 === void 0 ? void 0 : _17.length))) ||
|
|
36824
|
+
(agentType === "Summary Agent" && (!((_19 = (_18 = chartState.summary_data) === null || _18 === void 0 ? void 0 : _18.data) === null || _19 === void 0 ? void 0 : _19.content) || ((_22 = (_21 = (_20 = chartState.summary_data) === null || _20 === void 0 ? void 0 : _20.data) === null || _21 === void 0 ? void 0 : _21.content) === null || _22 === void 0 ? void 0 : _22.trim()) === ""))) ? (jsxRuntimeExports.jsx("div", { className: "flex items-center justify-center h-full p-4", children: jsxRuntimeExports.jsx("div", { className: "text-center max-w-md", children: jsxRuntimeExports.jsx("p", { className: "text-sm text-gray-700", children: chartState.agent_message }) }) })) : isAgentTriggered ? (createLoadingComponent("Agent processing your request...")) : agentType === "Bar Chart Agent" ? (jsxRuntimeExports.jsx(BarChartComponent, { barChartState: chartState, styles: styles, orientation: orientation, appendMessage: appendMessage, query: (_23 = widget.config) === null || _23 === void 0 ? void 0 : _23.query, isFirstLoad: isFirstLoad, widgetBackendUrl: widgetBackendUrl, widgetId: widget.id, startLoadingTimeout: startLoadingTimeout, clearLoadingTimeout: clearLoadingTimeout })) : agentType === "Series Bar Chart Agent" ? (jsxRuntimeExports.jsx(SeriesBarChartComponent, { seriesBarChartState: chartState, styles: styles, orientation: orientation, appendMessage: appendMessage, query: (_24 = widget.config) === null || _24 === void 0 ? void 0 : _24.query, isFirstLoad: isFirstLoad, widgetBackendUrl: widgetBackendUrl, widgetId: widget.id, startLoadingTimeout: startLoadingTimeout, clearLoadingTimeout: clearLoadingTimeout })) : agentType === "Series Line Chart Agent" ? (jsxRuntimeExports.jsx(SeriesLineChartComponent, { seriesLineChartState: chartState, styles: styles, orientation: orientation, appendMessage: appendMessage, query: (_25 = widget.config) === null || _25 === void 0 ? void 0 : _25.query, isFirstLoad: isFirstLoad, widgetBackendUrl: widgetBackendUrl, widgetId: widget.id, startLoadingTimeout: startLoadingTimeout, clearLoadingTimeout: clearLoadingTimeout })) : agentType === "Pie Chart Agent" ? (jsxRuntimeExports.jsx(PieChartComponent, { pieChartState: chartState, styles: styles, appendMessage: appendMessage, query: (_26 = widget.config) === null || _26 === void 0 ? void 0 : _26.query, isFirstLoad: isFirstLoad, widgetBackendUrl: widgetBackendUrl, widgetId: widget.id, startLoadingTimeout: startLoadingTimeout, clearLoadingTimeout: clearLoadingTimeout })) : agentType === "Line Chart Agent" ? (jsxRuntimeExports.jsx(LineChartComponent, { lineChartState: chartState, styles: styles, appendMessage: appendMessage, query: (_27 = widget.config) === null || _27 === void 0 ? void 0 : _27.query, isFirstLoad: isFirstLoad, widgetBackendUrl: widgetBackendUrl, widgetId: widget.id, startLoadingTimeout: startLoadingTimeout, clearLoadingTimeout: clearLoadingTimeout })) : agentType === "Data Grid Agent" ? (jsxRuntimeExports.jsx(DataGridComponent, { dataGridState: chartState, styles: styles, appendMessage: appendMessage, query: (_28 = widget.config) === null || _28 === void 0 ? void 0 : _28.query, isFirstLoad: isFirstLoad, widgetBackendUrl: widgetBackendUrl, widgetId: widget.id, startLoadingTimeout: startLoadingTimeout, clearLoadingTimeout: clearLoadingTimeout })) : agentType === "Summary Agent" ? (jsxRuntimeExports.jsx(SummaryComponent, { summaryState: chartState, styles: styles, appendMessage: appendMessage, query: (_29 = widget.config) === null || _29 === void 0 ? void 0 : _29.query, isFirstLoad: isFirstLoad, widgetBackendUrl: widgetBackendUrl, widgetId: widget.id, widget_ids: widgetIds, startLoadingTimeout: startLoadingTimeout, clearLoadingTimeout: clearLoadingTimeout, setChartState: setChartState })) : (jsxRuntimeExports.jsx(reactUi.CopilotChat, { className: "h-full text-xs [&_.copilot-chat-message]:text-xs [&_.copilot-chat-input]:text-xs", labels: {
|
|
36825
|
+
title: ((_30 = widget.config) === null || _30 === void 0 ? void 0 : _30.copilotTitle) || widget.title,
|
|
36826
|
+
initial: ((_31 = widget.config) === null || _31 === void 0 ? void 0 : _31.copilotInitialMessage) || ((_32 = widget.config) === null || _32 === void 0 ? void 0 : _32.placeholder) || "How can I help you today?"
|
|
36750
36827
|
}, onSubmitMessage: () => {
|
|
36751
36828
|
setChartState(prevState => (Object.assign(Object.assign({}, prevState), { widget_ids: widgetIds, dataset_id: datasetId })));
|
|
36829
|
+
startPollingForData();
|
|
36752
36830
|
} })) })] }));
|
|
36753
36831
|
}
|
|
36754
36832
|
function AgentWidget({ widget, showHeader = true, widgetBackendUrl, onResetReady, widgetIds, datasetId, }) {
|
|
@@ -37494,7 +37572,7 @@ function WidgetDashboard({ pageId, isEditing, selectedWidget = null, onWidgetSel
|
|
|
37494
37572
|
return (jsxRuntimeExports.jsxs("div", { className: "w-full max-w-full p-4 bg-accent/5", children: [jsxRuntimeExports.jsx(AddWidgetDialog, { isOpen: openWidgetPallete, onClose: onCloseWidgetPallete, addWidgetFn: (widgetType, config) => {
|
|
37495
37573
|
addWidget(widgetType, config);
|
|
37496
37574
|
onCloseWidgetPallete === null || onCloseWidgetPallete === void 0 ? void 0 : onCloseWidgetPallete();
|
|
37497
|
-
}, defaultAgentName: defaultAgentName }), jsxRuntimeExports.jsx(EditWidgetDialog, { initialText: editInitialQuery, isOpen: showEditModal, onClose: () => setShowEditModal(false), onSubmit: handleEditSubmit }), jsxRuntimeExports.jsx("div", { className: "min-h-full", onDragOver: (e) => e.preventDefault(), onDrop: handleDrop, onClick: () => setSelectedWidget(null), children: isLoading ? (jsxRuntimeExports.jsx("div", { className: "flex items-center justify-center h-full", children: jsxRuntimeExports.jsx(lucideReact.Loader2, { className: "h-8 w-8 animate-spin" }) })) : (jsxRuntimeExports.jsx(RGL, { className: "layout m-0 p-0", layouts: { lg: getLayoutFromWidgets() }, breakpoints: { lg: 1200, md: 996, sm: 768, xs: 480 }, cols: { lg: 12, md: 8, sm: 6, xs: 2 }, rowHeight: 100, isDraggable: isEditing, isResizable: isEditing, draggableHandle: ".drag-icon", onLayoutChange: handleLayoutChange, compactType: "vertical", containerPadding: [0, 0], resizeHandles: ["sw", "nw", "se", "ne"], children: widgets.map((w) => (jsxRuntimeExports.jsxs("div", {
|
|
37575
|
+
}, defaultAgentName: defaultAgentName }), jsxRuntimeExports.jsx(EditWidgetDialog, { initialText: editInitialQuery, isOpen: showEditModal, onClose: () => setShowEditModal(false), onSubmit: handleEditSubmit }), jsxRuntimeExports.jsx("div", { className: "min-h-full", onDragOver: (e) => e.preventDefault(), onDrop: handleDrop, onClick: () => setSelectedWidget(null), children: isLoading ? (jsxRuntimeExports.jsx("div", { className: "flex items-center justify-center h-full", children: jsxRuntimeExports.jsx(lucideReact.Loader2, { className: "h-8 w-8 animate-spin" }) })) : (jsxRuntimeExports.jsx(RGL, { className: "layout m-0 p-0", layouts: { lg: getLayoutFromWidgets() }, breakpoints: { lg: 1200, md: 996, sm: 768, xs: 480 }, cols: { lg: 12, md: 8, sm: 6, xs: 2 }, rowHeight: 100, isDraggable: isEditing, isResizable: isEditing, draggableHandle: ".drag-icon", onLayoutChange: handleLayoutChange, compactType: "vertical", containerPadding: [0, 0], resizeHandles: ["sw", "nw", "se", "ne"], children: widgets.map((w) => (jsxRuntimeExports.jsxs("div", { className: `border border-primary-300 rounded-xl p-4 shadow-lg overflow-hidden ${isEditing ? 'pb-20' : 'pb-14'}`, children: [isEditing &&
|
|
37498
37576
|
jsxRuntimeExports.jsxs("div", { className: "flex items-center justify-end mb-4 relative", children: [jsxRuntimeExports.jsxs("div", { className: "flex items-center drag-icon cursor-grab absolute left-1/2 -translate-x-1/2", children: [jsxRuntimeExports.jsx(lucideReact.GripHorizontal, { className: "" }), jsxRuntimeExports.jsx(lucideReact.GripHorizontal, { className: "-ml-[3px]" }), jsxRuntimeExports.jsx(lucideReact.GripHorizontal, { className: "-ml-[3px]" })] }), jsxRuntimeExports.jsxs("div", { className: "flex items-center gap-2 cursor-pointer justify-end", children: [jsxRuntimeExports.jsx(lucideReact.Trash2, { onClick: () => removeWidget(w.id), className: "w-5 h-5 text-red-700" }), jsxRuntimeExports.jsx(lucideReact.Edit, { onClick: () => onClickSettings && onClickSettings(w), className: "w-5 h-5 text-gray-600" })] })] }), jsxRuntimeExports.jsxs("div", { className: "w-full h-full relative", children: [(w === null || w === void 0 ? void 0 : w.type) === "chatbot" &&
|
|
37499
37577
|
jsxRuntimeExports.jsxs("div", { className: "relative z-50", children: [jsxRuntimeExports.jsx("div", { onClick: () => handleClearChat(w.id), onMouseOver: () => setVisibleClearButton(true), onMouseLeave: () => setVisibleClearButton(false), className: "absolute z-40 flex align-middle justify-center gap-2 text-sm px-4 py-2 border-blue-300 rounded-sm dark:bg-white w-fit bg-gray-900 text-white dark:text-gray-900 cursor-pointer shadow-md transition-all", style: { top: "12px", right: "0", borderTopLeftRadius: "4px", borderBottomLeftRadius: "4px" }, children: jsxRuntimeExports.jsx(lucideReact.MessageCircleX, { className: "w-5 h-5" }) }), jsxRuntimeExports.jsx("span", { className: `absolute z-50 w-max py-1 text-xs px-2 rounded-sm dark:text-gray-900 dark:bg-white text-white bg-gray-900 ${visibleClearButton ? "block" : "hidden"}`, style: { top: "56px", right: "16px", borderRadius: "3px" }, children: "Clear Chat" })] }), jsxRuntimeExports.jsx(WidgetRenderer, { widget: w, widgetBackendUrl: widgetBackendUrl, onResetReady: handleResetReady, widgetIds: widgets.filter(widget => widget.type !== 'chatbot').map(widget => widget.id), datasetId: datasetId })] })] }, w.id))) })) })] }));
|
|
37500
37578
|
}
|