@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 CHANGED
@@ -781,27 +781,7 @@ var ToolCallsDisplay = (0, import_react.memo)(function ToolCallsDisplay2({ toolC
781
781
  ] });
782
782
  });
783
783
  var arePropsEqual = (prevProps, nextProps) => {
784
- if (prevProps.message.id !== nextProps.message.id) return false;
785
- if (prevProps.message.content !== nextProps.message.content) return false;
786
- if (prevProps.message.isStreaming !== nextProps.message.isStreaming) return false;
787
- if (prevProps.message.isComplete !== nextProps.message.isComplete) return false;
788
- if (prevProps.message.isEdited !== nextProps.message.isEdited) return false;
789
- if (prevProps.message.timestamp !== nextProps.message.timestamp) return false;
790
- if (prevProps.message.toolCalls !== nextProps.message.toolCalls) {
791
- const prevCalls = prevProps.message.toolCalls;
792
- const nextCalls = nextProps.message.toolCalls;
793
- if (!prevCalls || !nextCalls || prevCalls.length !== nextCalls.length) return false;
794
- for (let i = 0; i < prevCalls.length; i++) {
795
- if (prevCalls[i].id !== nextCalls[i].id || prevCalls[i].status !== nextCalls[i].status || prevCalls[i].result !== nextCalls[i].result) {
796
- return false;
797
- }
798
- }
799
- }
800
- if (prevProps.message.attachments !== nextProps.message.attachments) {
801
- const prevAtt = prevProps.message.attachments;
802
- const nextAtt = nextProps.message.attachments;
803
- if (!prevAtt || !nextAtt || prevAtt.length !== nextAtt.length) return false;
804
- }
784
+ if (prevProps.message !== nextProps.message) return false;
805
785
  if (prevProps.isUser !== nextProps.isUser) return false;
806
786
  if (prevProps.userAvatar !== nextProps.userAvatar) return false;
807
787
  if (prevProps.userName !== nextProps.userName) return false;
@@ -3731,7 +3711,10 @@ var ChatUI = ({
3731
3711
  initialInput,
3732
3712
  onInitialInputConsumed
3733
3713
  }) => {
3734
- const config = mergeConfig(defaultChatConfig, userConfig);
3714
+ const config = (0, import_react7.useMemo)(
3715
+ () => mergeConfig(defaultChatConfig, userConfig),
3716
+ [userConfig]
3717
+ );
3735
3718
  const [isMobile, setIsMobile] = (0, import_react7.useState)(false);
3736
3719
  const [isUserProfileOpen, setIsUserProfileOpen] = (0, import_react7.useState)(false);
3737
3720
  let userContext;
@@ -3956,6 +3939,62 @@ var ChatUI = ({
3956
3939
  `message-skeleton-${index}`
3957
3940
  );
3958
3941
  }) });
3942
+ const renderedMessageList = (0, import_react7.useMemo)(() => {
3943
+ if (isMessagesLoading) return renderMessageLoadingSkeleton();
3944
+ return /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)(import_jsx_runtime24.Fragment, { children: [
3945
+ renderSuggestions(),
3946
+ messages.map((message, index) => {
3947
+ const prevMessage = index > 0 ? messages[index - 1] : null;
3948
+ const isGrouped = prevMessage !== null && prevMessage.role === message.role;
3949
+ return /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)("div", { className: isGrouped ? "space-y-1 -mt-2" : "space-y-2", children: [
3950
+ /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
3951
+ Message,
3952
+ {
3953
+ message,
3954
+ userAvatar: user?.avatar,
3955
+ userName: user?.name,
3956
+ assistantAvatar: assistant?.avatar,
3957
+ assistantName: assistant?.name,
3958
+ showTimestamp: config.ui.showTimestamps,
3959
+ showAvatar: config.ui.showAvatars,
3960
+ enableCopy: config.features.enableMessageCopy,
3961
+ enableEdit: config.features.enableMessageEditing,
3962
+ enableRegenerate: config.features.enableRegeneration,
3963
+ enableToolCallsDisplay: config.features.enableToolCallsDisplay,
3964
+ compactMode: config.ui.compactMode,
3965
+ onAction: handleMessageAction,
3966
+ toolUsedLabel: config.labels.toolUsed,
3967
+ thinkingLabel: config.labels.thinking,
3968
+ isGrouped
3969
+ }
3970
+ ),
3971
+ message.role === "assistant" && renderInlineSuggestions(message.id)
3972
+ ] }, message.id);
3973
+ })
3974
+ ] });
3975
+ }, [
3976
+ isMessagesLoading,
3977
+ messages,
3978
+ handleSendMessage,
3979
+ user?.avatar,
3980
+ user?.name,
3981
+ assistant?.avatar,
3982
+ assistant?.name,
3983
+ config.branding.title,
3984
+ config.branding.subtitle,
3985
+ config.ui.showTimestamps,
3986
+ config.ui.showAvatars,
3987
+ config.ui.compactMode,
3988
+ config.features.enableMessageCopy,
3989
+ config.features.enableMessageEditing,
3990
+ config.features.enableRegeneration,
3991
+ config.features.enableToolCallsDisplay,
3992
+ config.labels.toolUsed,
3993
+ config.labels.thinking,
3994
+ handleMessageAction,
3995
+ messageSuggestions,
3996
+ suggestions
3997
+ ]);
3959
3998
  const shouldShowAgentSelector = Boolean(
3960
3999
  config.agentSelector?.enabled && onSelectAgent && agentOptions.length > 0 && (!config.agentSelector?.hideIfSingle || agentOptions.length > 1)
3961
4000
  );
@@ -4016,37 +4055,7 @@ var ChatUI = ({
4016
4055
  viewportClassName: "p-4 overscroll-contain",
4017
4056
  onScrollCapture: handleScroll,
4018
4057
  children: /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)("div", { className: "max-w-4xl mx-auto space-y-4 pb-4", children: [
4019
- isMessagesLoading ? renderMessageLoadingSkeleton() : /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)(import_jsx_runtime24.Fragment, { children: [
4020
- renderSuggestions(),
4021
- messages.map((message, index) => {
4022
- const prevMessage = index > 0 ? messages[index - 1] : null;
4023
- const isGrouped = prevMessage !== null && prevMessage.role === message.role;
4024
- return /* @__PURE__ */ (0, import_jsx_runtime24.jsxs)("div", { className: isGrouped ? "space-y-1 -mt-2" : "space-y-2", children: [
4025
- /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(
4026
- Message,
4027
- {
4028
- message,
4029
- userAvatar: user?.avatar,
4030
- userName: user?.name,
4031
- assistantAvatar: assistant?.avatar,
4032
- assistantName: assistant?.name,
4033
- showTimestamp: config.ui.showTimestamps,
4034
- showAvatar: config.ui.showAvatars,
4035
- enableCopy: config.features.enableMessageCopy,
4036
- enableEdit: config.features.enableMessageEditing,
4037
- enableRegenerate: config.features.enableRegeneration,
4038
- enableToolCallsDisplay: config.features.enableToolCallsDisplay,
4039
- compactMode: config.ui.compactMode,
4040
- onAction: handleMessageAction,
4041
- toolUsedLabel: config.labels.toolUsed,
4042
- thinkingLabel: config.labels.thinking,
4043
- isGrouped
4044
- }
4045
- ),
4046
- message.role === "assistant" && renderInlineSuggestions(message.id)
4047
- ] }, message.id);
4048
- })
4049
- ] }),
4058
+ renderedMessageList,
4050
4059
  /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("div", { ref: messagesEndRef })
4051
4060
  ] })
4052
4061
  }