UI: Minor morphdom optimizations

This commit is contained in:
oobabooga 2026-03-14 16:07:16 -07:00
parent e11425d5f8
commit 9eacd4a207

View file

@ -325,27 +325,21 @@ function applyMorphdomUpdate(data) {
const queryScope = target_element;
// Track open blocks
// Track open blocks and store their scroll positions
const openBlocks = new Set();
const scrollPositions = {};
queryScope.querySelectorAll(".thinking-block").forEach(block => {
const blockId = block.getAttribute("data-block-id");
// If block exists and is open, add to open set
if (blockId && block.hasAttribute("open")) {
openBlocks.add(blockId);
}
});
// Store scroll positions for any open blocks
const scrollPositions = {};
queryScope.querySelectorAll(".thinking-block[open]").forEach(block => {
const content = block.querySelector(".thinking-content");
const blockId = block.getAttribute("data-block-id");
if (content && blockId) {
const isAtBottom = Math.abs((content.scrollHeight - content.scrollTop) - content.clientHeight) < 5;
scrollPositions[blockId] = {
position: content.scrollTop,
isAtBottom: isAtBottom
};
const content = block.querySelector(".thinking-content");
if (content) {
const isAtBottom = Math.abs((content.scrollHeight - content.scrollTop) - content.clientHeight) < 5;
scrollPositions[blockId] = {
position: content.scrollTop,
isAtBottom: isAtBottom
};
}
}
});
@ -355,8 +349,8 @@ function applyMorphdomUpdate(data) {
{
onBeforeElUpdated: function(fromEl, toEl) {
// Preserve code highlighting
if (fromEl.tagName === "PRE" && fromEl.querySelector("code[data-highlighted]")) {
const fromCode = fromEl.querySelector("code");
if (fromEl.tagName === "PRE") {
const fromCode = fromEl.querySelector("code[data-highlighted]");
const toCode = toEl.querySelector("code");
if (fromCode && toCode && fromCode.textContent === toCode.textContent) {