@copilotz/chat-ui 0.1.26 → 0.1.28

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 CHANGED
@@ -2768,11 +2768,12 @@ var ChatUserContextProvider = ({ children, initial }) => {
2768
2768
  }));
2769
2769
  useEffect8(() => {
2770
2770
  if (!initial) return;
2771
- setCtx((prev) => ({
2772
- ...prev,
2773
- ...initial,
2774
- updatedAt: Date.now()
2775
- }));
2771
+ setCtx((prev) => {
2772
+ const keys = Object.keys(initial);
2773
+ const hasChanges = keys.some((k) => prev[k] !== initial[k]);
2774
+ if (!hasChanges) return prev;
2775
+ return { ...prev, ...initial, updatedAt: Date.now() };
2776
+ });
2776
2777
  }, [initial]);
2777
2778
  const setPartial = useCallback2((next) => {
2778
2779
  setCtx((prev) => {
@@ -4134,6 +4135,25 @@ var ChatUI = ({
4134
4135
  const closeSidebar = useCallback4(() => {
4135
4136
  setState((prev) => ({ ...prev, showSidebar: false }));
4136
4137
  }, []);
4138
+ const handleCustomComponentToggle = useCallback4(() => {
4139
+ setState((prev) => ({ ...prev, showSidebar: !prev.showSidebar }));
4140
+ }, []);
4141
+ const sidebarUser = useMemo4(() => user ? {
4142
+ id: user.id,
4143
+ name: user.name,
4144
+ email: user.email,
4145
+ avatar: user.avatar
4146
+ } : null, [user?.id, user?.name, user?.email, user?.avatar]);
4147
+ const handleViewProfile = useCallback4(() => {
4148
+ setIsUserProfileOpen(true);
4149
+ callbacks.onViewProfile?.();
4150
+ }, [callbacks.onViewProfile]);
4151
+ const sidebarUserMenuCallbacks = useMemo4(() => ({
4152
+ onViewProfile: handleViewProfile,
4153
+ onOpenSettings: callbacks.onOpenSettings,
4154
+ onThemeChange: callbacks.onThemeChange,
4155
+ onLogout: callbacks.onLogout
4156
+ }), [handleViewProfile, callbacks.onOpenSettings, callbacks.onThemeChange, callbacks.onLogout]);
4137
4157
  const renderCustomComponent = useCallback4(() => {
4138
4158
  const component = config?.customComponent?.component;
4139
4159
  if (!component) return null;
@@ -4269,21 +4289,8 @@ var ChatUI = ({
4269
4289
  onRenameThread: handleRenameThread,
4270
4290
  onDeleteThread: handleDeleteThread,
4271
4291
  onArchiveThread: handleArchiveThread,
4272
- user: user ? {
4273
- id: user.id,
4274
- name: user.name,
4275
- email: user.email,
4276
- avatar: user.avatar
4277
- } : null,
4278
- userMenuCallbacks: {
4279
- onViewProfile: () => {
4280
- setIsUserProfileOpen(true);
4281
- callbacks.onViewProfile?.();
4282
- },
4283
- onOpenSettings: callbacks.onOpenSettings,
4284
- onThemeChange: callbacks.onThemeChange,
4285
- onLogout: callbacks.onLogout
4286
- },
4292
+ user: sidebarUser,
4293
+ userMenuCallbacks: sidebarUserMenuCallbacks,
4287
4294
  currentTheme: config.ui.theme === "auto" ? "system" : config.ui.theme,
4288
4295
  showThemeOptions: !!callbacks.onThemeChange
4289
4296
  }
@@ -4295,7 +4302,7 @@ var ChatUI = ({
4295
4302
  config,
4296
4303
  currentThreadTitle: threads.find((t) => t.id === state.selectedThreadId)?.title,
4297
4304
  isMobile,
4298
- onCustomComponentToggle: () => setState((prev) => ({ ...prev, showSidebar: !prev.showSidebar })),
4305
+ onCustomComponentToggle: handleCustomComponentToggle,
4299
4306
  onNewThread: handleCreateThread,
4300
4307
  showCustomComponentButton: !!config?.customComponent?.component,
4301
4308
  showAgentSelector: shouldShowAgentSelector,