fix(coding-agent): prevent text selection from triggering click toggles in exported HTML (#3332)
This commit is contained in:
@@ -709,6 +709,7 @@
|
|||||||
div.appendChild(content);
|
div.appendChild(content);
|
||||||
// Navigate to the newest leaf through this node, but scroll to the clicked node
|
// Navigate to the newest leaf through this node, but scroll to the clicked node
|
||||||
div.addEventListener('click', () => {
|
div.addEventListener('click', () => {
|
||||||
|
if (window.getSelection().toString()) return;
|
||||||
const leafId = findNewestLeaf(entry.id);
|
const leafId = findNewestLeaf(entry.id);
|
||||||
navigateTo(leafId, 'target', entry.id);
|
navigateTo(leafId, 'target', entry.id);
|
||||||
});
|
});
|
||||||
@@ -827,7 +828,7 @@
|
|||||||
previewHighlighted = escapeHtml(previewCode);
|
previewHighlighted = escapeHtml(previewCode);
|
||||||
}
|
}
|
||||||
|
|
||||||
return `<div class="tool-output expandable" onclick="this.classList.toggle('expanded')">
|
return `<div class="tool-output expandable" onclick="if(window.getSelection().toString())return;this.classList.toggle('expanded')">
|
||||||
<div class="output-preview"><pre><code class="hljs">${previewHighlighted}</code></pre>
|
<div class="output-preview"><pre><code class="hljs">${previewHighlighted}</code></pre>
|
||||||
<div class="expand-hint">... (${remaining} more lines)</div></div>
|
<div class="expand-hint">... (${remaining} more lines)</div></div>
|
||||||
<div class="output-full"><pre><code class="hljs">${highlighted}</code></pre></div></div>`;
|
<div class="output-full"><pre><code class="hljs">${highlighted}</code></pre></div></div>`;
|
||||||
@@ -838,7 +839,7 @@
|
|||||||
|
|
||||||
// Plain text output
|
// Plain text output
|
||||||
if (remaining > 0) {
|
if (remaining > 0) {
|
||||||
let out = '<div class="tool-output expandable" onclick="this.classList.toggle(\'expanded\')">';
|
let out = '<div class="tool-output expandable" onclick="if(window.getSelection().toString())return;this.classList.toggle(\'expanded\')">';
|
||||||
out += '<div class="output-preview">';
|
out += '<div class="output-preview">';
|
||||||
for (const line of displayLines) {
|
for (const line of displayLines) {
|
||||||
out += `<div>${escapeHtml(replaceTabs(line))}</div>`;
|
out += `<div>${escapeHtml(replaceTabs(line))}</div>`;
|
||||||
@@ -976,7 +977,7 @@
|
|||||||
|
|
||||||
if (rendered.resultHtmlCollapsed && rendered.resultHtmlExpanded && rendered.resultHtmlCollapsed !== rendered.resultHtmlExpanded) {
|
if (rendered.resultHtmlCollapsed && rendered.resultHtmlExpanded && rendered.resultHtmlCollapsed !== rendered.resultHtmlExpanded) {
|
||||||
// Both collapsed and expanded differ - render expandable section
|
// Both collapsed and expanded differ - render expandable section
|
||||||
html += `<div class="tool-output expandable ansi-rendered" onclick="this.classList.toggle('expanded')">
|
html += `<div class="tool-output expandable ansi-rendered" onclick="if(window.getSelection().toString())return;this.classList.toggle('expanded')">
|
||||||
<div class="output-preview">${rendered.resultHtmlCollapsed}</div>
|
<div class="output-preview">${rendered.resultHtmlCollapsed}</div>
|
||||||
<div class="output-full">${rendered.resultHtmlExpanded}</div>
|
<div class="output-full">${rendered.resultHtmlExpanded}</div>
|
||||||
</div>`;
|
</div>`;
|
||||||
@@ -1198,7 +1199,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (entry.type === 'compaction') {
|
if (entry.type === 'compaction') {
|
||||||
return `<div class="compaction" id="${entryId}" onclick="this.classList.toggle('expanded')">
|
return `<div class="compaction" id="${entryId}" onclick="if(window.getSelection().toString())return;this.classList.toggle('expanded')">
|
||||||
<div class="compaction-label">[compaction]</div>
|
<div class="compaction-label">[compaction]</div>
|
||||||
<div class="compaction-collapsed">Compacted from ${entry.tokensBefore.toLocaleString()} tokens</div>
|
<div class="compaction-collapsed">Compacted from ${entry.tokensBefore.toLocaleString()} tokens</div>
|
||||||
<div class="compaction-content"><strong>Compacted from ${entry.tokensBefore.toLocaleString()} tokens</strong>\n\n${escapeHtml(entry.summary)}</div>
|
<div class="compaction-content"><strong>Compacted from ${entry.tokensBefore.toLocaleString()} tokens</strong>\n\n${escapeHtml(entry.summary)}</div>
|
||||||
@@ -1310,7 +1311,7 @@
|
|||||||
if (lines.length > previewLines) {
|
if (lines.length > previewLines) {
|
||||||
const preview = lines.slice(0, previewLines).join('\n');
|
const preview = lines.slice(0, previewLines).join('\n');
|
||||||
const remaining = lines.length - previewLines;
|
const remaining = lines.length - previewLines;
|
||||||
html += `<div class="system-prompt expandable" onclick="this.classList.toggle('expanded')">
|
html += `<div class="system-prompt expandable" onclick="if(window.getSelection().toString())return;this.classList.toggle('expanded')">
|
||||||
<div class="system-prompt-header">System Prompt</div>
|
<div class="system-prompt-header">System Prompt</div>
|
||||||
<div class="system-prompt-preview">${escapeHtml(preview)}</div>
|
<div class="system-prompt-preview">${escapeHtml(preview)}</div>
|
||||||
<div class="system-prompt-expand-hint">... (${remaining} more lines, click to expand)</div>
|
<div class="system-prompt-expand-hint">... (${remaining} more lines, click to expand)</div>
|
||||||
@@ -1347,7 +1348,7 @@
|
|||||||
}
|
}
|
||||||
paramsHtml += `</div>`;
|
paramsHtml += `</div>`;
|
||||||
}
|
}
|
||||||
return `<div class="tool-item" onclick="this.classList.toggle('params-expanded')"><span class="tool-item-name">${escapeHtml(t.name)}</span> - <span class="tool-item-desc">${escapeHtml(t.description)}</span> <span class="tool-params-hint"></span><div class="tool-params-content">${paramsHtml}</div></div>`;
|
return `<div class="tool-item" onclick="if(window.getSelection().toString())return;this.classList.toggle('params-expanded')"><span class="tool-item-name">${escapeHtml(t.name)}</span> - <span class="tool-item-desc">${escapeHtml(t.description)}</span> <span class="tool-params-hint"></span><div class="tool-params-content">${paramsHtml}</div></div>`;
|
||||||
}).join('')}
|
}).join('')}
|
||||||
</div>
|
</div>
|
||||||
</div>`;
|
</div>`;
|
||||||
|
|||||||
Reference in New Issue
Block a user