optimize ux think mode
This commit is contained in:
@@ -13,6 +13,17 @@ document.addEventListener('DOMContentLoaded', () => {
|
|||||||
return DOMPurify.sanitize(marked.parse(text));
|
return DOMPurify.sanitize(marked.parse(text));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function enhanceChatLinks(container = chatEl) {
|
||||||
|
if (!container) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
container.querySelectorAll('a[href]').forEach((link) => {
|
||||||
|
link.setAttribute('target', '_blank');
|
||||||
|
link.setAttribute('rel', 'noopener noreferrer');
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
function addMessage(role, html = '', extra = '') {
|
function addMessage(role, html = '', extra = '') {
|
||||||
const msg = document.createElement('div');
|
const msg = document.createElement('div');
|
||||||
msg.className = 'message ' + role;
|
msg.className = 'message ' + role;
|
||||||
@@ -23,6 +34,9 @@ document.addEventListener('DOMContentLoaded', () => {
|
|||||||
|
|
||||||
msg.appendChild(bubble);
|
msg.appendChild(bubble);
|
||||||
chatEl.appendChild(msg);
|
chatEl.appendChild(msg);
|
||||||
|
|
||||||
|
enhanceChatLinks(bubble);
|
||||||
|
|
||||||
chatEl.scrollTop = chatEl.scrollHeight;
|
chatEl.scrollTop = chatEl.scrollHeight;
|
||||||
|
|
||||||
return bubble;
|
return bubble;
|
||||||
@@ -182,6 +196,7 @@ document.addEventListener('DOMContentLoaded', () => {
|
|||||||
function renderBubbleContent(bubble, raw) {
|
function renderBubbleContent(bubble, raw) {
|
||||||
bubble.innerHTML = renderMarkdown(raw);
|
bubble.innerHTML = renderMarkdown(raw);
|
||||||
cleanupThinkSpans(bubble);
|
cleanupThinkSpans(bubble);
|
||||||
|
enhanceChatLinks(bubble);
|
||||||
chatEl.scrollTop = chatEl.scrollHeight;
|
chatEl.scrollTop = chatEl.scrollHeight;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -191,6 +206,7 @@ document.addEventListener('DOMContentLoaded', () => {
|
|||||||
if (!res.ok) return;
|
if (!res.ok) return;
|
||||||
const messages = await res.json();
|
const messages = await res.json();
|
||||||
messages.forEach(m => addMessage(m.role, renderMarkdown(m.text)));
|
messages.forEach(m => addMessage(m.role, renderMarkdown(m.text)));
|
||||||
|
enhanceChatLinks(chatEl);
|
||||||
} catch {}
|
} catch {}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -288,6 +304,7 @@ document.addEventListener('DOMContentLoaded', () => {
|
|||||||
}
|
}
|
||||||
} catch {
|
} catch {
|
||||||
bubble.innerHTML += '<br><em>Error occurred.</em>';
|
bubble.innerHTML += '<br><em>Error occurred.</em>';
|
||||||
|
enhanceChatLinks(bubble);
|
||||||
} finally {
|
} finally {
|
||||||
if (renderTimer) {
|
if (renderTimer) {
|
||||||
clearTimeout(renderTimer);
|
clearTimeout(renderTimer);
|
||||||
|
|||||||
Reference in New Issue
Block a user