@copilotz/chat-ui 0.1.2 → 0.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.cjs +62 -53
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +63 -54
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
// src/components/chat/ChatUI.tsx
|
|
2
|
-
import { useState as useState8, useEffect as useEffect10, useRef as useRef7, useCallback as useCallback4 } from "react";
|
|
2
|
+
import { useState as useState8, useEffect as useEffect10, useRef as useRef7, useCallback as useCallback4, useMemo as useMemo3 } from "react";
|
|
3
3
|
|
|
4
4
|
// src/config/chatConfig.ts
|
|
5
5
|
var defaultChatConfig = {
|
|
@@ -736,27 +736,7 @@ var ToolCallsDisplay = memo(function ToolCallsDisplay2({ toolCalls, label }) {
|
|
|
736
736
|
] });
|
|
737
737
|
});
|
|
738
738
|
var arePropsEqual = (prevProps, nextProps) => {
|
|
739
|
-
if (prevProps.message
|
|
740
|
-
if (prevProps.message.content !== nextProps.message.content) return false;
|
|
741
|
-
if (prevProps.message.isStreaming !== nextProps.message.isStreaming) return false;
|
|
742
|
-
if (prevProps.message.isComplete !== nextProps.message.isComplete) return false;
|
|
743
|
-
if (prevProps.message.isEdited !== nextProps.message.isEdited) return false;
|
|
744
|
-
if (prevProps.message.timestamp !== nextProps.message.timestamp) return false;
|
|
745
|
-
if (prevProps.message.toolCalls !== nextProps.message.toolCalls) {
|
|
746
|
-
const prevCalls = prevProps.message.toolCalls;
|
|
747
|
-
const nextCalls = nextProps.message.toolCalls;
|
|
748
|
-
if (!prevCalls || !nextCalls || prevCalls.length !== nextCalls.length) return false;
|
|
749
|
-
for (let i = 0; i < prevCalls.length; i++) {
|
|
750
|
-
if (prevCalls[i].id !== nextCalls[i].id || prevCalls[i].status !== nextCalls[i].status || prevCalls[i].result !== nextCalls[i].result) {
|
|
751
|
-
return false;
|
|
752
|
-
}
|
|
753
|
-
}
|
|
754
|
-
}
|
|
755
|
-
if (prevProps.message.attachments !== nextProps.message.attachments) {
|
|
756
|
-
const prevAtt = prevProps.message.attachments;
|
|
757
|
-
const nextAtt = nextProps.message.attachments;
|
|
758
|
-
if (!prevAtt || !nextAtt || prevAtt.length !== nextAtt.length) return false;
|
|
759
|
-
}
|
|
739
|
+
if (prevProps.message !== nextProps.message) return false;
|
|
760
740
|
if (prevProps.isUser !== nextProps.isUser) return false;
|
|
761
741
|
if (prevProps.userAvatar !== nextProps.userAvatar) return false;
|
|
762
742
|
if (prevProps.userName !== nextProps.userName) return false;
|
|
@@ -3753,7 +3733,10 @@ var ChatUI = ({
|
|
|
3753
3733
|
initialInput,
|
|
3754
3734
|
onInitialInputConsumed
|
|
3755
3735
|
}) => {
|
|
3756
|
-
const config =
|
|
3736
|
+
const config = useMemo3(
|
|
3737
|
+
() => mergeConfig(defaultChatConfig, userConfig),
|
|
3738
|
+
[userConfig]
|
|
3739
|
+
);
|
|
3757
3740
|
const [isMobile, setIsMobile] = useState8(false);
|
|
3758
3741
|
const [isUserProfileOpen, setIsUserProfileOpen] = useState8(false);
|
|
3759
3742
|
let userContext;
|
|
@@ -3978,6 +3961,62 @@ var ChatUI = ({
|
|
|
3978
3961
|
`message-skeleton-${index}`
|
|
3979
3962
|
);
|
|
3980
3963
|
}) });
|
|
3964
|
+
const renderedMessageList = useMemo3(() => {
|
|
3965
|
+
if (isMessagesLoading) return renderMessageLoadingSkeleton();
|
|
3966
|
+
return /* @__PURE__ */ jsxs14(Fragment6, { children: [
|
|
3967
|
+
renderSuggestions(),
|
|
3968
|
+
messages.map((message, index) => {
|
|
3969
|
+
const prevMessage = index > 0 ? messages[index - 1] : null;
|
|
3970
|
+
const isGrouped = prevMessage !== null && prevMessage.role === message.role;
|
|
3971
|
+
return /* @__PURE__ */ jsxs14("div", { className: isGrouped ? "space-y-1 -mt-2" : "space-y-2", children: [
|
|
3972
|
+
/* @__PURE__ */ jsx24(
|
|
3973
|
+
Message,
|
|
3974
|
+
{
|
|
3975
|
+
message,
|
|
3976
|
+
userAvatar: user?.avatar,
|
|
3977
|
+
userName: user?.name,
|
|
3978
|
+
assistantAvatar: assistant?.avatar,
|
|
3979
|
+
assistantName: assistant?.name,
|
|
3980
|
+
showTimestamp: config.ui.showTimestamps,
|
|
3981
|
+
showAvatar: config.ui.showAvatars,
|
|
3982
|
+
enableCopy: config.features.enableMessageCopy,
|
|
3983
|
+
enableEdit: config.features.enableMessageEditing,
|
|
3984
|
+
enableRegenerate: config.features.enableRegeneration,
|
|
3985
|
+
enableToolCallsDisplay: config.features.enableToolCallsDisplay,
|
|
3986
|
+
compactMode: config.ui.compactMode,
|
|
3987
|
+
onAction: handleMessageAction,
|
|
3988
|
+
toolUsedLabel: config.labels.toolUsed,
|
|
3989
|
+
thinkingLabel: config.labels.thinking,
|
|
3990
|
+
isGrouped
|
|
3991
|
+
}
|
|
3992
|
+
),
|
|
3993
|
+
message.role === "assistant" && renderInlineSuggestions(message.id)
|
|
3994
|
+
] }, message.id);
|
|
3995
|
+
})
|
|
3996
|
+
] });
|
|
3997
|
+
}, [
|
|
3998
|
+
isMessagesLoading,
|
|
3999
|
+
messages,
|
|
4000
|
+
handleSendMessage,
|
|
4001
|
+
user?.avatar,
|
|
4002
|
+
user?.name,
|
|
4003
|
+
assistant?.avatar,
|
|
4004
|
+
assistant?.name,
|
|
4005
|
+
config.branding.title,
|
|
4006
|
+
config.branding.subtitle,
|
|
4007
|
+
config.ui.showTimestamps,
|
|
4008
|
+
config.ui.showAvatars,
|
|
4009
|
+
config.ui.compactMode,
|
|
4010
|
+
config.features.enableMessageCopy,
|
|
4011
|
+
config.features.enableMessageEditing,
|
|
4012
|
+
config.features.enableRegeneration,
|
|
4013
|
+
config.features.enableToolCallsDisplay,
|
|
4014
|
+
config.labels.toolUsed,
|
|
4015
|
+
config.labels.thinking,
|
|
4016
|
+
handleMessageAction,
|
|
4017
|
+
messageSuggestions,
|
|
4018
|
+
suggestions
|
|
4019
|
+
]);
|
|
3981
4020
|
const shouldShowAgentSelector = Boolean(
|
|
3982
4021
|
config.agentSelector?.enabled && onSelectAgent && agentOptions.length > 0 && (!config.agentSelector?.hideIfSingle || agentOptions.length > 1)
|
|
3983
4022
|
);
|
|
@@ -4038,37 +4077,7 @@ var ChatUI = ({
|
|
|
4038
4077
|
viewportClassName: "p-4 overscroll-contain",
|
|
4039
4078
|
onScrollCapture: handleScroll,
|
|
4040
4079
|
children: /* @__PURE__ */ jsxs14("div", { className: "max-w-4xl mx-auto space-y-4 pb-4", children: [
|
|
4041
|
-
|
|
4042
|
-
renderSuggestions(),
|
|
4043
|
-
messages.map((message, index) => {
|
|
4044
|
-
const prevMessage = index > 0 ? messages[index - 1] : null;
|
|
4045
|
-
const isGrouped = prevMessage !== null && prevMessage.role === message.role;
|
|
4046
|
-
return /* @__PURE__ */ jsxs14("div", { className: isGrouped ? "space-y-1 -mt-2" : "space-y-2", children: [
|
|
4047
|
-
/* @__PURE__ */ jsx24(
|
|
4048
|
-
Message,
|
|
4049
|
-
{
|
|
4050
|
-
message,
|
|
4051
|
-
userAvatar: user?.avatar,
|
|
4052
|
-
userName: user?.name,
|
|
4053
|
-
assistantAvatar: assistant?.avatar,
|
|
4054
|
-
assistantName: assistant?.name,
|
|
4055
|
-
showTimestamp: config.ui.showTimestamps,
|
|
4056
|
-
showAvatar: config.ui.showAvatars,
|
|
4057
|
-
enableCopy: config.features.enableMessageCopy,
|
|
4058
|
-
enableEdit: config.features.enableMessageEditing,
|
|
4059
|
-
enableRegenerate: config.features.enableRegeneration,
|
|
4060
|
-
enableToolCallsDisplay: config.features.enableToolCallsDisplay,
|
|
4061
|
-
compactMode: config.ui.compactMode,
|
|
4062
|
-
onAction: handleMessageAction,
|
|
4063
|
-
toolUsedLabel: config.labels.toolUsed,
|
|
4064
|
-
thinkingLabel: config.labels.thinking,
|
|
4065
|
-
isGrouped
|
|
4066
|
-
}
|
|
4067
|
-
),
|
|
4068
|
-
message.role === "assistant" && renderInlineSuggestions(message.id)
|
|
4069
|
-
] }, message.id);
|
|
4070
|
-
})
|
|
4071
|
-
] }),
|
|
4080
|
+
renderedMessageList,
|
|
4072
4081
|
/* @__PURE__ */ jsx24("div", { ref: messagesEndRef })
|
|
4073
4082
|
] })
|
|
4074
4083
|
}
|