blob: 12f90ecbf86f97ae943e0545c06be2b4508c1456 [file] [log] [blame]
import { TimelineMessage } from "../types";
/**
* Adds collapsible functionality to long content elements.
* This creates a toggle button that allows users to expand/collapse long text content.
*
* @param message - The timeline message containing the content
* @param textEl - The DOM element containing the text content
* @param containerEl - The container element for the text and copy button
* @param contentEl - The outer content element that will contain everything
*/
export function addCollapsibleFunctionality(
message: TimelineMessage,
textEl: HTMLElement,
containerEl: HTMLElement,
contentEl: HTMLElement
): void {
// Don't collapse end_of_turn messages (final output) regardless of length
if (message.content.length > 1000 && !message.end_of_turn) {
textEl.classList.add("collapsed");
const toggleButton = document.createElement("button");
toggleButton.className = "collapsible";
toggleButton.textContent = "Show more...";
toggleButton.addEventListener("click", () => {
textEl.classList.toggle("collapsed");
toggleButton.textContent = textEl.classList.contains("collapsed")
? "Show more..."
: "Show less";
});
contentEl.appendChild(containerEl);
contentEl.appendChild(toggleButton);
} else {
contentEl.appendChild(containerEl);
}
}