/** * 一键优化按钮组件 */ /** * 获取一键优化按钮的 HTML 内容 */ export function getOptimizeButtonContent(): string { return `
一键优化
`; } /** * 获取一键优化按钮的样式 */ export function getOptimizeButtonStyles(): string { return ` /* 一键优化按钮样式 */ .optimize-button { padding: 8px; background: transparent; color: var(--vscode-foreground); border: none; cursor: pointer; display: flex; align-items: center; justify-content: center; transition: opacity 0.2s ease; width: 32px; height: 32px; } .optimize-button:hover { opacity: 0.7; } .optimize-button svg { width: 16px; height: 16px; } .optimize-button-wrapper { display: flex; align-items: flex-end; } `; } /** * 获取一键优化按钮的脚本 */ export function getOptimizeButtonScript(): string { return ` let isOptimized = false; // 标记是否已优化 let originalText = ''; // 保存原始文本用于撤回 let isOptimizing = false; // 标记是否正在优化中 function handleOptimize() { console.log('[Optimize] handleOptimize 被调用'); console.log('[Optimize] isOptimizing:', isOptimizing); console.log('[Optimize] isOptimized:', isOptimized); console.log('[Optimize] messageInput:', messageInput); if (isOptimizing) { console.log('[Optimize] 正在优化中,忽略点击'); return; // 正在优化中,忽略点击 } if (isOptimized) { // 撤回操作 console.log('[Optimize] 执行撤回操作'); messageInput.value = originalText; resetOptimizeButton(); } else { // 优化操作 const currentText = messageInput.value.trim(); console.log('[Optimize] 当前输入内容:', currentText); console.log('[Optimize] 内容长度:', currentText.length); if (!currentText) { console.log('[Optimize] 输入框为空,不执行优化'); return; // 输入框为空,不执行优化 } originalText = messageInput.value; // 保存原始文本 isOptimizing = true; console.log('[Optimize] 开始优化,显示加载状态'); // 显示加载状态 showOptimizeLoading(); // 发送优化请求到扩展 console.log('[Optimize] 发送 optimizePrompt 消息'); vscode.postMessage({ command: 'optimizePrompt', prompt: currentText }); console.log('[Optimize] postMessage 已发送'); } messageInput.focus(); autoResizeTextarea(); } // 处理优化结果 function handleOptimizeResult(success, optimizedPrompt, error) { isOptimizing = false; hideOptimizeLoading(); if (success && optimizedPrompt) { messageInput.value = optimizedPrompt; isOptimized = true; updateOptimizeButton(); } else { // 优化失败,恢复原始文本 messageInput.value = originalText; console.error('优化失败:', error); } messageInput.focus(); autoResizeTextarea(); } function showOptimizeLoading() { const optimizeButton = document.getElementById('optimizeButton'); const optimizeIcon = document.getElementById('optimizeIcon'); if (optimizeButton && optimizeIcon) { optimizeButton.disabled = true; optimizeButton.style.opacity = '0.5'; // 显示加载动画 optimizeIcon.innerHTML = ''; } } function hideOptimizeLoading() { const optimizeButton = document.getElementById('optimizeButton'); if (optimizeButton) { optimizeButton.disabled = false; optimizeButton.style.opacity = '1'; } // 恢复图标会在 updateOptimizeButton 或 resetOptimizeButton 中处理 if (!isOptimized) { resetOptimizeButton(); } } function updateOptimizeButton() { const optimizeIcon = document.getElementById('optimizeIcon'); const optimizeTooltip = document.getElementById('optimizeTooltip'); if (optimizeIcon && optimizeTooltip) { // 切换为撤回图标 optimizeIcon.innerHTML = ''; optimizeTooltip.textContent = '撤回'; } } function resetOptimizeButton() { const optimizeIcon = document.getElementById('optimizeIcon'); const optimizeTooltip = document.getElementById('optimizeTooltip'); if (optimizeIcon && optimizeTooltip) { // 切换回优化图标(星星图标) optimizeIcon.innerHTML = ''; optimizeTooltip.textContent = '一键优化'; } isOptimized = false; originalText = ''; } `; }