impact-chatbot 2.3.76 → 2.3.77
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.cjs.js +87 -4
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.esm.js +87 -4
- package/dist/index.esm.js.map +1 -1
- package/package.json +1 -1
package/dist/index.cjs.js
CHANGED
|
@@ -5721,6 +5721,10 @@ const ButtonContent = ({ bodyText, isFormDisabled = false, isStepFormSubmit = fa
|
|
|
5721
5721
|
stepFormStreamControl.uniqueChatId = data?.chat_id ? data.chat_id : "";
|
|
5722
5722
|
// Clear sessionStorage so stale session_id isn't picked up by future non-init calls
|
|
5723
5723
|
sessionStorage.setItem("stepForm_sessionId", "");
|
|
5724
|
+
// Notify SmartBot to update its initValue/sessionId state
|
|
5725
|
+
window.dispatchEvent(new CustomEvent("stepFormInitStateUpdate", {
|
|
5726
|
+
detail: { initValue: true, sessionId: "", uniqueChatId: data?.chat_id || "" },
|
|
5727
|
+
}));
|
|
5724
5728
|
}
|
|
5725
5729
|
// Stream ended — dispatch all collected chunks at once
|
|
5726
5730
|
stepFormStreamControl.isStreaming = false;
|
|
@@ -8114,7 +8118,7 @@ const Steps$1 = ({ steps, setSteps, done, setTabValue, setDone, finalStepDone, s
|
|
|
8114
8118
|
}, children: jsxRuntime.jsx(ProgressBarItem$1, { question: "Thinking", questionSteps: [{ header: "", sub_header: "", step_status: "not-completed" }], isLast: true, classes: classes, formData: null, isFormDisabled: isFormDisabled }) }))] }));
|
|
8115
8119
|
};
|
|
8116
8120
|
|
|
8117
|
-
const renderWidgetItem = (item, index) => {
|
|
8121
|
+
const renderWidgetItem = (item, index, isFormDisabled) => {
|
|
8118
8122
|
try {
|
|
8119
8123
|
const parsedData = parseResponse(item, item.type, "", "", true);
|
|
8120
8124
|
if (!parsedData)
|
|
@@ -8127,6 +8131,22 @@ const renderWidgetItem = (item, index) => {
|
|
|
8127
8131
|
return jsxRuntime.jsx(TableContent, { bodyText: parsedData.bodyText }, key);
|
|
8128
8132
|
case "graph":
|
|
8129
8133
|
return jsxRuntime.jsx(GraphContent, { bodyText: parsedData.bodyText }, key);
|
|
8134
|
+
case "radio":
|
|
8135
|
+
return jsxRuntime.jsx(RadioContent, { bodyText: parsedData.bodyText, isFormDisabled: isFormDisabled }, key);
|
|
8136
|
+
case "checkbox":
|
|
8137
|
+
return jsxRuntime.jsx(CheckboxContent, { bodyText: parsedData.bodyText, isFormDisabled: isFormDisabled }, key);
|
|
8138
|
+
case "select":
|
|
8139
|
+
return jsxRuntime.jsx(SelectContent, { bodyText: parsedData.bodyText, isFormDisabled: isFormDisabled }, key);
|
|
8140
|
+
case "slider":
|
|
8141
|
+
return jsxRuntime.jsx(SliderContent, { bodyText: parsedData.bodyText, isFormDisabled: isFormDisabled }, key);
|
|
8142
|
+
case "button":
|
|
8143
|
+
return jsxRuntime.jsx(ButtonContent, { bodyText: parsedData.bodyText, isFormDisabled: isFormDisabled }, key);
|
|
8144
|
+
case "input":
|
|
8145
|
+
return jsxRuntime.jsx(InputContent, { bodyText: parsedData.bodyText, isFormDisabled: isFormDisabled }, key);
|
|
8146
|
+
case "datePicker":
|
|
8147
|
+
return jsxRuntime.jsx(DatePickerContent, { bodyText: parsedData.bodyText, isFormDisabled: isFormDisabled }, key);
|
|
8148
|
+
case "dateRangePicker":
|
|
8149
|
+
return jsxRuntime.jsx(DateRangePickerContent, { bodyText: parsedData.bodyText, isFormDisabled: isFormDisabled }, key);
|
|
8130
8150
|
default:
|
|
8131
8151
|
return null;
|
|
8132
8152
|
}
|
|
@@ -8137,11 +8157,11 @@ const renderWidgetItem = (item, index) => {
|
|
|
8137
8157
|
}
|
|
8138
8158
|
};
|
|
8139
8159
|
const AgentResponse$1 = (props) => {
|
|
8140
|
-
const { content, isStreaming, streamingWidgetData = [] } = props;
|
|
8160
|
+
const { content, isStreaming, streamingWidgetData = [], isFormDisabled = false } = props;
|
|
8141
8161
|
const classes = useStyles$6();
|
|
8142
8162
|
const chatClasses = useStyles$9();
|
|
8143
8163
|
const renderedWidgets = streamingWidgetData
|
|
8144
|
-
.map((item, index) => renderWidgetItem(item, index))
|
|
8164
|
+
.map((item, index) => renderWidgetItem(item, index, isFormDisabled))
|
|
8145
8165
|
.filter(Boolean);
|
|
8146
8166
|
return (jsxRuntime.jsxs("div", { className: chatClasses.agentResponseContainer, children: [content ? (jsxRuntime.jsxs(material.Typography, { className: chatClasses.bodyTextStyling, children: [jsxRuntime.jsx(TextRenderer, { text: content }), isStreaming && renderedWidgets.length === 0 && jsxRuntime.jsx("span", { className: classes.cursor })] })) : null, renderedWidgets.length > 0 && (jsxRuntime.jsx("div", { className: "streaming-widget-content", children: renderedWidgets })), isStreaming && (renderedWidgets.length > 0 || !content) && (jsxRuntime.jsx("span", { className: classes.cursor }))] }));
|
|
8147
8167
|
};
|
|
@@ -8212,7 +8232,7 @@ const StepsResponseTab = (props) => {
|
|
|
8212
8232
|
},
|
|
8213
8233
|
], tabPanels: [
|
|
8214
8234
|
jsxRuntime.jsx(Steps$1, { steps: steps, setSteps: setSteps, done: stepsDone, setDone: setStepsDone, setTabValue: setTabValue, finalStepDone: finalStepDone, setFinalStepDone: setFinalStepDone, stepChange: stepChange, currentMode: currentMode, questions: questions, questionsStepsMap: questionsStepsMap, stepFormDataMap: stepFormDataMap, isFormDisabled: isFormDisabled || isTimedOut }),
|
|
8215
|
-
jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx(AgentResponse$1, { content: content, isStreaming: isStreaming, streamingWidgetData: streamingWidgetData }), timeoutMessage && (jsxRuntime.jsx("div", { style: { marginTop: "8px", padding: "0 8px" }, children: jsxRuntime.jsx(TextRenderer, { text: timeoutMessage, thinking: "" }) }))] }),
|
|
8235
|
+
jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx(AgentResponse$1, { content: content, isStreaming: isStreaming, streamingWidgetData: streamingWidgetData, isFormDisabled: isFormDisabled || isTimedOut }), timeoutMessage && (jsxRuntime.jsx("div", { style: { marginTop: "8px", padding: "0 8px" }, children: jsxRuntime.jsx(TextRenderer, { text: timeoutMessage, thinking: "" }) }))] }),
|
|
8216
8236
|
], value: tabValue }) }));
|
|
8217
8237
|
};
|
|
8218
8238
|
|
|
@@ -9357,6 +9377,16 @@ const StreamedContent = ({ botData }) => {
|
|
|
9357
9377
|
];
|
|
9358
9378
|
botData.utilityObject.setInitValue(messageToStoreRef.current.initValue);
|
|
9359
9379
|
botData.utilityObject.setSessionId(messageToStoreRef.current.sessionId);
|
|
9380
|
+
// Also update currentSessionId via event so the send button uses the correct session_id
|
|
9381
|
+
if (messageToStoreRef.current.status === "completed" || messageToStoreRef.current.status === "follow-up") {
|
|
9382
|
+
window.dispatchEvent(new CustomEvent("stepFormInitStateUpdate", {
|
|
9383
|
+
detail: {
|
|
9384
|
+
initValue: messageToStoreRef.current.initValue,
|
|
9385
|
+
sessionId: messageToStoreRef.current.sessionId,
|
|
9386
|
+
uniqueChatId: messageToStoreRef.current.uniqueChatId,
|
|
9387
|
+
},
|
|
9388
|
+
}));
|
|
9389
|
+
}
|
|
9360
9390
|
botData.utilityObject.setAdditionalArgs(!isEmpty(messageToStoreRef.current.additionalArgs)
|
|
9361
9391
|
? messageToStoreRef.current.additionalArgs
|
|
9362
9392
|
: {});
|
|
@@ -10118,6 +10148,22 @@ const TabularContent = ({ steps: initialSteps, currentTabValue, children, questi
|
|
|
10118
10148
|
return jsxRuntime.jsx(TableContent, { bodyText: parsedData.bodyText }, key);
|
|
10119
10149
|
case "graph":
|
|
10120
10150
|
return jsxRuntime.jsx(GraphContent, { bodyText: parsedData.bodyText }, key);
|
|
10151
|
+
case "radio":
|
|
10152
|
+
return jsxRuntime.jsx(RadioContent, { bodyText: parsedData.bodyText, isFormDisabled: isFormDisabled }, key);
|
|
10153
|
+
case "checkbox":
|
|
10154
|
+
return jsxRuntime.jsx(CheckboxContent, { bodyText: parsedData.bodyText, isFormDisabled: isFormDisabled }, key);
|
|
10155
|
+
case "select":
|
|
10156
|
+
return jsxRuntime.jsx(SelectContent, { bodyText: parsedData.bodyText, isFormDisabled: isFormDisabled }, key);
|
|
10157
|
+
case "slider":
|
|
10158
|
+
return jsxRuntime.jsx(SliderContent, { bodyText: parsedData.bodyText, isFormDisabled: isFormDisabled }, key);
|
|
10159
|
+
case "button":
|
|
10160
|
+
return jsxRuntime.jsx(ButtonContent, { bodyText: parsedData.bodyText, isFormDisabled: isFormDisabled }, key);
|
|
10161
|
+
case "input":
|
|
10162
|
+
return jsxRuntime.jsx(InputContent, { bodyText: parsedData.bodyText, isFormDisabled: isFormDisabled }, key);
|
|
10163
|
+
case "datePicker":
|
|
10164
|
+
return jsxRuntime.jsx(DatePickerContent, { bodyText: parsedData.bodyText, isFormDisabled: isFormDisabled }, key);
|
|
10165
|
+
case "dateRangePicker":
|
|
10166
|
+
return jsxRuntime.jsx(DateRangePickerContent, { bodyText: parsedData.bodyText, isFormDisabled: isFormDisabled }, key);
|
|
10121
10167
|
default:
|
|
10122
10168
|
return null;
|
|
10123
10169
|
}
|
|
@@ -10418,6 +10464,29 @@ const TabularContent = ({ steps: initialSteps, currentTabValue, children, questi
|
|
|
10418
10464
|
setQuestionsStepsMapState(lodash.cloneDeep(newQuestionsStepsMap));
|
|
10419
10465
|
setStepFormDataMapState(lodash.cloneDeep(newStepFormDataMap));
|
|
10420
10466
|
if (newWidgets.length > 0) {
|
|
10467
|
+
// If widget data contains form components (radio, select, checkbox, etc.),
|
|
10468
|
+
// append a Submit button so the user can submit their selection
|
|
10469
|
+
const formTypes = ["radio", "select", "checkbox", "slider", "input", "datePicker", "dateRangePicker"];
|
|
10470
|
+
const hasFormWidget = newWidgets.some((item) => formTypes.includes(item?.type));
|
|
10471
|
+
const hasStepForm = chunks.some((c) => c.status === "step_form");
|
|
10472
|
+
if (hasFormWidget && !hasStepForm) {
|
|
10473
|
+
const sendButton = document.getElementById("chat-input-send-button");
|
|
10474
|
+
newWidgets.push({
|
|
10475
|
+
type: "button",
|
|
10476
|
+
data: {
|
|
10477
|
+
message: "",
|
|
10478
|
+
buttons: [
|
|
10479
|
+
{
|
|
10480
|
+
label: "Submit",
|
|
10481
|
+
variant: "primary",
|
|
10482
|
+
size: "medium",
|
|
10483
|
+
disabled: false,
|
|
10484
|
+
onClick: () => sendButton?.click(),
|
|
10485
|
+
},
|
|
10486
|
+
],
|
|
10487
|
+
},
|
|
10488
|
+
});
|
|
10489
|
+
}
|
|
10421
10490
|
// Replace (not append) to avoid duplicates from real-time widget_chunk dispatches
|
|
10422
10491
|
setWidgetContent(newWidgets);
|
|
10423
10492
|
}
|
|
@@ -14799,11 +14868,25 @@ const SmartBot = (props) => {
|
|
|
14799
14868
|
console.error("Error updating timestamp after step form stream:", e);
|
|
14800
14869
|
}
|
|
14801
14870
|
};
|
|
14871
|
+
// Update SmartBot-level initValue/sessionId when ButtonContent's stream receives completed/follow-up
|
|
14872
|
+
const handleStepFormInitStateUpdate = (e) => {
|
|
14873
|
+
const { initValue: newInitValue, sessionId: newSessionId, uniqueChatId: newChatId } = e.detail || {};
|
|
14874
|
+
if (newInitValue !== undefined)
|
|
14875
|
+
setInitValue(newInitValue);
|
|
14876
|
+
if (newSessionId !== undefined) {
|
|
14877
|
+
setSessionId(newSessionId);
|
|
14878
|
+
setCurrentSessionId(newSessionId);
|
|
14879
|
+
}
|
|
14880
|
+
if (newChatId !== undefined)
|
|
14881
|
+
setUniqueChatId(newChatId);
|
|
14882
|
+
};
|
|
14802
14883
|
window.addEventListener("stepFormStreamStart", handleStepFormStreamStart);
|
|
14803
14884
|
window.addEventListener("stepFormStreamEnd", handleStepFormStreamEnd);
|
|
14885
|
+
window.addEventListener("stepFormInitStateUpdate", handleStepFormInitStateUpdate);
|
|
14804
14886
|
return () => {
|
|
14805
14887
|
window.removeEventListener("stepFormStreamStart", handleStepFormStreamStart);
|
|
14806
14888
|
window.removeEventListener("stepFormStreamEnd", handleStepFormStreamEnd);
|
|
14889
|
+
window.removeEventListener("stepFormInitStateUpdate", handleStepFormInitStateUpdate);
|
|
14807
14890
|
};
|
|
14808
14891
|
}, []);
|
|
14809
14892
|
const fetchCustomBotConfigurations = async () => {
|