/**
* 一键优化按钮组件
*/
/**
* 获取一键优化按钮的 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 = '';
}
`;
}