/** * Quick Panel Markdown Renderer * * Simple markdown renderer for Quick Panel. * Currently uses plain text rendering - markdown support to be added later * when proper Vue/content-script integration is resolved. */ // ============================================================ // Types // ============================================================ export interface MarkdownRendererInstance { /** Update the markdown content */ setContent: (content: string, isStreaming?: boolean) => void; /** Get current content */ getContent: () => string; /** Dispose resources */ dispose: () => void; } // ============================================================ // Main Factory // ============================================================ /** * Create a markdown renderer instance that mounts to a container element. * Currently renders as plain text - markdown support pending. * * @param container - The DOM element to render content into * @returns Markdown renderer instance with setContent and dispose methods */ export function createMarkdownRenderer(container: HTMLElement): MarkdownRendererInstance { let currentContent = ''; // Create a wrapper div for content const contentEl = document.createElement('div'); contentEl.className = 'qp-markdown-content'; container.appendChild(contentEl); return { setContent(newContent: string, _streaming = false) { currentContent = newContent; // For now, render as plain text with basic whitespace preservation contentEl.textContent = newContent; }, getContent() { return currentContent; }, dispose() { try { contentEl.remove(); } catch { // Best-effort cleanup } }, }; }