@@ -64,6 +64,7 @@ type ChatSlotMessageProps = ChatMessageProps & {
6464 slots? : {
6565 [K in keyof ChatMessageSlots ]? : ExtendSlotWithVersion <K >
6666 }
67+ [key : string ]: any
6768}
6869
6970type ExtendSlotWithVersion <K extends keyof ChatMessageSlots >
@@ -124,6 +125,8 @@ function registerMessageRef(id: string, element: ComponentPublicInstance | null)
124125 const elInstance = element ?.$el
125126 if (elInstance ) {
126127 messagesRefs .value .set (id , elInstance )
128+ } else {
129+ console .warn (' message id' , id , ' unregistered dom instance may cause the failure of rolling to the message' )
127130 }
128131}
129132
@@ -299,21 +302,33 @@ onMounted(() => {
299302 :style =" { '--last-message-height': `${lastMessageHeight}px` }"
300303 >
301304 <slot >
302- <template v-for =" message in messages " :key =" message .id " >
303- <component
304- :is =" $slots.message ? $slots.message : UChatMessage"
305+ <template
306+ v-for =" messageData in messages "
307+ :key =" messageData .id "
308+ >
309+ <slot
310+ v-if =" $slots.message"
311+ :ref =" (el: ComponentPublicInstance) => registerMessageRef(messageData.id, el)"
312+ name =" message"
313+ :compact =" compact"
314+ v-bind =" {
315+ ...messageData,
316+ ...(messageData.role === 'user' ? userProps : assistantProps)
317+ }"
318+ />
319+ <UChatMessage
320+ v-else
321+ :ref =" (el) => registerMessageRef(messageData.id, el as ComponentPublicInstance)"
322+ :compact =" compact"
305323 v-bind =" {
306- ...message,
307- ...(message.role === 'user' ? userProps : assistantProps),
308- ...($slots.message ? { message, slots: getProxySlots() } : {}),
309- compact
324+ ...messageData,
325+ ...(messageData.role === 'user' ? userProps : assistantProps)
310326 }"
311- :ref =" (el: ComponentPublicInstance) => registerMessageRef(message.id, el)"
312327 >
313328 <template v-for =" (_ , name ) in getProxySlots () " #[name ]=" slotData " >
314- <slot :name =" name" v-bind =" slotData" :message =" message " />
329+ <slot :name =" name" v-bind =" ( slotData as any) " :message =" messageData " />
315330 </template >
316- </component >
331+ </UChatMessage >
317332 </template >
318333 </slot >
319334 <UChatMessage
0 commit comments