|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
import React from 'react'; |
|
|
import MessageContent from './MessageContent'; |
|
|
import MessageActions from './MessageActions'; |
|
|
import SettingsPanel from './SettingsPanel'; |
|
|
import DebugPanel from './DebugPanel'; |
|
|
|
|
|
|
|
|
export const OptimizedMessageContent = React.memo( |
|
|
MessageContent, |
|
|
(prevProps, nextProps) => { |
|
|
|
|
|
return ( |
|
|
prevProps.message.id === nextProps.message.id && |
|
|
prevProps.message.content === nextProps.message.content && |
|
|
prevProps.message.status === nextProps.message.status && |
|
|
prevProps.message.role === nextProps.message.role && |
|
|
prevProps.message.reasoningContent === |
|
|
nextProps.message.reasoningContent && |
|
|
prevProps.message.isReasoningExpanded === |
|
|
nextProps.message.isReasoningExpanded && |
|
|
prevProps.isEditing === nextProps.isEditing && |
|
|
prevProps.editValue === nextProps.editValue && |
|
|
prevProps.styleState.isMobile === nextProps.styleState.isMobile |
|
|
); |
|
|
}, |
|
|
); |
|
|
|
|
|
|
|
|
export const OptimizedMessageActions = React.memo( |
|
|
MessageActions, |
|
|
(prevProps, nextProps) => { |
|
|
return ( |
|
|
prevProps.message.id === nextProps.message.id && |
|
|
prevProps.message.role === nextProps.message.role && |
|
|
prevProps.isAnyMessageGenerating === nextProps.isAnyMessageGenerating && |
|
|
prevProps.isEditing === nextProps.isEditing && |
|
|
prevProps.onMessageReset === nextProps.onMessageReset |
|
|
); |
|
|
}, |
|
|
); |
|
|
|
|
|
|
|
|
export const OptimizedSettingsPanel = React.memo( |
|
|
SettingsPanel, |
|
|
(prevProps, nextProps) => { |
|
|
return ( |
|
|
JSON.stringify(prevProps.inputs) === JSON.stringify(nextProps.inputs) && |
|
|
JSON.stringify(prevProps.parameterEnabled) === |
|
|
JSON.stringify(nextProps.parameterEnabled) && |
|
|
JSON.stringify(prevProps.models) === JSON.stringify(nextProps.models) && |
|
|
JSON.stringify(prevProps.groups) === JSON.stringify(nextProps.groups) && |
|
|
prevProps.customRequestMode === nextProps.customRequestMode && |
|
|
prevProps.customRequestBody === nextProps.customRequestBody && |
|
|
prevProps.showDebugPanel === nextProps.showDebugPanel && |
|
|
prevProps.showSettings === nextProps.showSettings && |
|
|
JSON.stringify(prevProps.previewPayload) === |
|
|
JSON.stringify(nextProps.previewPayload) && |
|
|
JSON.stringify(prevProps.messages) === JSON.stringify(nextProps.messages) |
|
|
); |
|
|
}, |
|
|
); |
|
|
|
|
|
|
|
|
export const OptimizedDebugPanel = React.memo( |
|
|
DebugPanel, |
|
|
(prevProps, nextProps) => { |
|
|
return ( |
|
|
prevProps.show === nextProps.show && |
|
|
prevProps.activeTab === nextProps.activeTab && |
|
|
JSON.stringify(prevProps.debugData) === |
|
|
JSON.stringify(nextProps.debugData) && |
|
|
JSON.stringify(prevProps.previewPayload) === |
|
|
JSON.stringify(nextProps.previewPayload) && |
|
|
prevProps.customRequestMode === nextProps.customRequestMode && |
|
|
prevProps.showDebugPanel === nextProps.showDebugPanel |
|
|
); |
|
|
}, |
|
|
); |
|
|
|