diff --git a/packages/ui/src/components/message-block.tsx b/packages/ui/src/components/message-block.tsx index 7dc66e17..4f9560f7 100644 --- a/packages/ui/src/components/message-block.tsx +++ b/packages/ui/src/components/message-block.tsx @@ -199,6 +199,7 @@ interface MessageContentItemProps { onFork?: (messageId?: string) => void onContentRendered?: () => void showDeleteMessage?: boolean + deleteHover?: () => DeleteHoverState onDeleteHoverChange?: (state: DeleteHoverState) => void } @@ -287,6 +288,7 @@ function MessageContentItem(props: MessageContentItemProps) { isQueued={isQueued()} showAgentMeta={showAgentMeta()} showDeleteMessage={props.showDeleteMessage} + deleteHover={props.deleteHover} onDeleteHoverChange={props.onDeleteHoverChange} onRevert={props.onRevert} onFork={props.onFork} @@ -305,6 +307,7 @@ interface ToolCallItemProps { partId: string onContentRendered?: () => void showDeleteMessage?: boolean + deleteHover?: () => DeleteHoverState onDeleteHoverChange?: (state: DeleteHoverState) => void } @@ -401,10 +404,18 @@ function ToolCallItem(props: ToolCallItemProps) { } } + const isDeleteHoveredFromStore = () => { + const hover = props.deleteHover?.() ?? ({ kind: "none" } as DeleteHoverState) + return hover.kind === "part" && hover.messageId === props.messageId && hover.partId === props.partId + } + return ( {(resolvedToolPart) => ( -
+
{TOOL_ICON} @@ -747,6 +758,7 @@ export default function MessageBlock(props: MessageBlockProps) { messageIndex={props.messageIndex} lastAssistantIndex={props.lastAssistantIndex} showDeleteMessage={index() === 0} + deleteHover={props.deleteHover} onDeleteHoverChange={props.onDeleteHoverChange} onRevert={props.onRevert} onFork={props.onFork} @@ -765,6 +777,7 @@ export default function MessageBlock(props: MessageBlockProps) { messageId={toolItem.messageId} partId={toolItem.partId} showDeleteMessage={index() === 0} + deleteHover={props.deleteHover} onDeleteHoverChange={props.onDeleteHoverChange} onContentRendered={props.onContentRendered} /> @@ -809,6 +822,7 @@ export default function MessageBlock(props: MessageBlockProps) { messageId={(item as CompactionDisplayItem).messageId} partId={(item as CompactionDisplayItem).partId} showDeleteMessage={index() === 0} + deleteHover={props.deleteHover} onDeleteHoverChange={props.onDeleteHoverChange} /> @@ -823,6 +837,7 @@ export default function MessageBlock(props: MessageBlockProps) { showAgentMeta={(item as ReasoningDisplayItem).showAgentMeta} defaultExpanded={(item as ReasoningDisplayItem).defaultExpanded} showDeleteMessage={index() === 0} + deleteHover={props.deleteHover} onDeleteHoverChange={props.onDeleteHoverChange} /> @@ -858,6 +873,7 @@ interface CompactionCardProps { messageId: string partId: string showDeleteMessage?: boolean + deleteHover?: () => DeleteHoverState onDeleteHoverChange?: (state: DeleteHoverState) => void } @@ -914,10 +930,15 @@ function CompactionCard(props: CompactionCardProps) { } } + const isDeleteHoveredFromStore = () => { + const hover = props.deleteHover?.() ?? ({ kind: "none" } as DeleteHoverState) + return hover.kind === "part" && hover.messageId === props.messageId && hover.partId === props.partId + } + return (
DeleteHoverState onDeleteHoverChange?: (state: DeleteHoverState) => void } @@ -1130,6 +1152,11 @@ function ReasoningCard(props: ReasoningCardProps) { const [deletingMessage, setDeletingMessage] = createSignal(false) const [hoverDeletePart, setHoverDeletePart] = createSignal(false) + const isDeleteHoveredFromStore = () => { + const hover = props.deleteHover?.() ?? ({ kind: "none" } as DeleteHoverState) + return hover.kind === "part" && hover.messageId === props.messageId && hover.partId === props.partId + } + createEffect(() => { setExpanded(Boolean(props.defaultExpanded)) }) @@ -1238,7 +1265,10 @@ function ReasoningCard(props: ReasoningCardProps) { } return ( -
+
)