@mordn/chat-widget 0.4.0 → 0.4.2
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.js +29 -27
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +29 -27
- package/dist/index.mjs.map +1 -1
- package/dist/styles.css +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -1699,31 +1699,28 @@ function ChatInterface({ id, initialMessages, config, onClose, headerActions } =
|
|
|
1699
1699
|
(0, import_react9.useEffect)(() => {
|
|
1700
1700
|
if (hasInitialized.current) return;
|
|
1701
1701
|
const loadInitialTabs = () => {
|
|
1702
|
-
|
|
1703
|
-
|
|
1704
|
-
|
|
1705
|
-
|
|
1706
|
-
|
|
1707
|
-
|
|
1708
|
-
|
|
1709
|
-
|
|
1710
|
-
|
|
1711
|
-
|
|
1712
|
-
|
|
1713
|
-
|
|
1714
|
-
|
|
1715
|
-
title: "New Chat",
|
|
1716
|
-
isActive: true
|
|
1717
|
-
};
|
|
1718
|
-
setTabs([currentTab]);
|
|
1719
|
-
setActiveTabId(initialTabId);
|
|
1720
|
-
setInitialTabCreated(true);
|
|
1721
|
-
}
|
|
1722
|
-
} finally {
|
|
1702
|
+
const savedTabs = localStorage.getItem(storageKey("tabs"));
|
|
1703
|
+
const savedActiveTabId = localStorage.getItem(storageKey("active-tab-id"));
|
|
1704
|
+
if (savedTabs && savedTabs !== "[]") {
|
|
1705
|
+
const parsedTabs = JSON.parse(savedTabs);
|
|
1706
|
+
setTabs(parsedTabs);
|
|
1707
|
+
const activeId = savedActiveTabId || parsedTabs[0]?.id;
|
|
1708
|
+
setActiveTabId(activeId);
|
|
1709
|
+
setInitialTabCreated(true);
|
|
1710
|
+
} else if (!initialTabCreated && tabs.length === 0) {
|
|
1711
|
+
const initialTabId = `chat-${Date.now()}-${Math.random().toString(36).substr(2, 9)}`;
|
|
1712
|
+
setTabs([{ id: initialTabId, title: "New Chat", isActive: true }]);
|
|
1713
|
+
setActiveTabId(initialTabId);
|
|
1714
|
+
setInitialTabCreated(true);
|
|
1723
1715
|
setIsInitializing(false);
|
|
1724
1716
|
}
|
|
1725
1717
|
};
|
|
1726
|
-
|
|
1718
|
+
try {
|
|
1719
|
+
loadInitialTabs();
|
|
1720
|
+
} catch (err) {
|
|
1721
|
+
console.error("[chat-widget] init failed, falling back to clean start:", err);
|
|
1722
|
+
setIsInitializing(false);
|
|
1723
|
+
}
|
|
1727
1724
|
hasInitialized.current = true;
|
|
1728
1725
|
}, []);
|
|
1729
1726
|
const hasLoadedInitialMessages = (0, import_react9.useRef)(false);
|
|
@@ -1731,10 +1728,15 @@ function ChatInterface({ id, initialMessages, config, onClose, headerActions } =
|
|
|
1731
1728
|
if (hasLoadedInitialMessages.current) return;
|
|
1732
1729
|
if (!config?.userId) return;
|
|
1733
1730
|
if (!activeTabId) return;
|
|
1734
|
-
|
|
1735
|
-
|
|
1736
|
-
|
|
1737
|
-
|
|
1731
|
+
(async () => {
|
|
1732
|
+
try {
|
|
1733
|
+
await loadConversation(activeTabId);
|
|
1734
|
+
} finally {
|
|
1735
|
+
hasLoadedInitialMessages.current = true;
|
|
1736
|
+
setIsInitializing(false);
|
|
1737
|
+
}
|
|
1738
|
+
})();
|
|
1739
|
+
}, [config?.userId, activeTabId]);
|
|
1738
1740
|
(0, import_react9.useEffect)(() => {
|
|
1739
1741
|
if (isInitializing) return;
|
|
1740
1742
|
if (activeTabId && tabs.length > 0 && activeTabId !== lastSyncedTabId.current) {
|
|
@@ -2134,7 +2136,7 @@ function ChatInterface({ id, initialMessages, config, onClose, headerActions } =
|
|
|
2134
2136
|
] }),
|
|
2135
2137
|
/* @__PURE__ */ (0, import_jsx_runtime20.jsxs)("div", { className: "px-5 pb-5", children: [
|
|
2136
2138
|
uploadError && /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("div", { className: "mb-3 px-4 py-3 bg-red-50 dark:bg-red-900/20 border border-red-200/60 dark:border-red-800/60 rounded-2xl text-sm text-red-700 dark:text-red-400 shadow-sm", children: uploadError }),
|
|
2137
|
-
messages.length === 0 && status !== "submitted" && config?.starterPrompts && /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
|
|
2139
|
+
isInitializing ? /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("div", { className: "flex items-center justify-center py-8", role: "status", "aria-label": "Loading conversation", children: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("div", { className: "h-4 w-4 rounded-full border-2 border-current border-t-transparent animate-spin", style: { color: "hsl(var(--chat-text-muted))" } }) }) : messages.length === 0 && status !== "submitted" && config?.starterPrompts && /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
|
|
2138
2140
|
StarterMessages,
|
|
2139
2141
|
{
|
|
2140
2142
|
prompts: config.starterPrompts,
|