Reworking css

This commit is contained in:
tyler
2026-05-19 01:46:54 -04:00
parent 4b36a261c4
commit 7367e993be
+48 -14
View File
@@ -876,8 +876,41 @@ FRONTEND_JS_TEMPLATE = r"""
}; };
const box = document.getElementById('sxng-stream-box'); const box = document.getElementById('sxng-stream-box');
const data = document.getElementById('sxng-stream-data'); const data = document.getElementById('sxng-stream-data');
const wrapper = box.closest('.answer');
if (wrapper) wrapper.style.display = 'none'; // Move AI Overview outside #answers, place it before #results
(function relocateBox() {
const answersDiv = document.getElementById('answers');
if (!box || !answersDiv) return;
// Create our own container
const aiContainer = document.createElement('div');
aiContainer.id = 'ai-answers';
aiContainer.style.cssText = [
'background: var(--color-answer-background)',
'padding: 1rem',
'margin: 0 0 1rem 0',
'color: var(--color-answer-font)',
'border-radius: 8px',
'box-sizing: border-box',
'width: 100%'
].join('; ');
// Move our box into the new container
aiContainer.appendChild(box);
const resultsGrid = document.getElementById('results');
if (resultsGrid) {
// Insert as first child of #results grid so grid-area:answers applies
resultsGrid.insertBefore(aiContainer, resultsGrid.firstChild);
} else {
answersDiv.parentNode.insertBefore(aiContainer, answersDiv);
}
// Hide #answers entirely since our box is now elsewhere
answersDiv.style.display = 'none';
})();
let restored = false; let restored = false;
let isStreaming = false; let isStreaming = false;
@@ -947,7 +980,6 @@ FRONTEND_JS_TEMPLATE = r"""
isStreaming = true; isStreaming = true;
try { try {
const ctx = auxContext || conversation.originalContext; const ctx = auxContext || conversation.originalContext;
if (wrapper) wrapper.style.display = '';
box.style.display = 'block'; box.style.display = 'block';
const controller = new AbortController(); const controller = new AbortController();
@@ -1002,6 +1034,11 @@ FRONTEND_JS_TEMPLATE = r"""
data.appendChild(cursor); data.appendChild(cursor);
} }
const streamContainer = document.createElement('div');
streamContainer.className = 'sxng-stream-container';
if (cursor) cursor.before(streamContainer);
else data.appendChild(streamContainer);
let buffer = ''; let buffer = '';
let fullText = ''; let fullText = '';
const flushBuffer = (force = false) => { const flushBuffer = (force = false) => {
@@ -1009,8 +1046,7 @@ FRONTEND_JS_TEMPLATE = r"""
if (force) { if (force) {
const fragment = renderCitations(buffer, urls); const fragment = renderCitations(buffer, urls);
if (cursor) cursor.before(fragment); streamContainer.appendChild(fragment);
else data.appendChild(fragment);
buffer = ''; buffer = '';
return; return;
} }
@@ -1025,12 +1061,12 @@ FRONTEND_JS_TEMPLATE = r"""
const s = document.createElement('span'); const s = document.createElement('span');
s.className = 'sxng-chunk'; s.className = 'sxng-chunk';
s.textContent = preText; s.textContent = preText;
cursor.before(s); streamContainer.appendChild(s);
} }
const citationText = match[0]; const citationText = match[0];
const fragment = renderCitations(citationText, urls); const fragment = renderCitations(citationText, urls);
cursor.before(fragment); streamContainer.appendChild(fragment);
buffer = buffer.substring(match.index + match[0].length); buffer = buffer.substring(match.index + match[0].length);
} }
@@ -1041,7 +1077,7 @@ FRONTEND_JS_TEMPLATE = r"""
const s = document.createElement('span'); const s = document.createElement('span');
s.className = 'sxng-chunk'; s.className = 'sxng-chunk';
s.textContent = buffer; s.textContent = buffer;
cursor.before(s); streamContainer.appendChild(s);
buffer = ''; buffer = '';
} }
} else { } else {
@@ -1050,7 +1086,7 @@ FRONTEND_JS_TEMPLATE = r"""
const s = document.createElement('span'); const s = document.createElement('span');
s.className = 'sxng-chunk'; s.className = 'sxng-chunk';
s.textContent = safeChunk; s.textContent = safeChunk;
cursor.before(s); streamContainer.appendChild(s);
} }
buffer = buffer.substring(openIdx); buffer = buffer.substring(openIdx);
@@ -1058,7 +1094,7 @@ FRONTEND_JS_TEMPLATE = r"""
const s = document.createElement('span'); const s = document.createElement('span');
s.className = 'sxng-chunk'; s.className = 'sxng-chunk';
s.textContent = buffer[0]; s.textContent = buffer[0];
cursor.before(s); streamContainer.appendChild(s);
buffer = buffer.substring(1); buffer = buffer.substring(1);
} }
} }
@@ -1120,11 +1156,9 @@ FRONTEND_JS_TEMPLATE = r"""
} }
} }
streamContainer.remove();
if (cursor) cursor.remove(); if (cursor) cursor.remove();
// Remove only the streamed chunk spans added during this stream
Array.from(data.querySelectorAll('.sxng-chunk')).forEach(node => node.remove());
const rendered = parseMarkdown(fullText.trim()); const rendered = parseMarkdown(fullText.trim());
const mdDiv = document.createElement('div'); const mdDiv = document.createElement('div');
mdDiv.className = 'sxng-md-content'; mdDiv.className = 'sxng-md-content';
@@ -2028,7 +2062,7 @@ class SXNGPlugin(Plugin):
.replace("__JS_Q__", js_q) .replace("__JS_Q__", js_q)
html_payload = f''' html_payload = f'''
<article id="sxng-stream-box" class="answer" style="display:none; margin-top: 0; margin-bottom: 0;"> <article id="sxng-stream-box" class="answer" style="display:none; margin: 0; padding: 0;">
<style> <style>
@keyframes sxng-fade-pulse {{ @keyframes sxng-fade-pulse {{
0%, 100% {{ opacity: 0.1; }} 0%, 100% {{ opacity: 0.1; }}