diff --git a/js/global_scope_js.js b/js/global_scope_js.js
index 89498814..d5140c93 100644
--- a/js/global_scope_js.js
+++ b/js/global_scope_js.js
@@ -230,9 +230,22 @@ function removeLastClick() {
}
function handleMorphdomUpdate(data) {
+ // Determine target element and use it as query scope
+ var target_element, target_html;
+ if (data.last_message_only) {
+ const childNodes = document.getElementsByClassName("messages")[0].childNodes;
+ target_element = childNodes[childNodes.length - 1];
+ target_html = data.html;
+ } else {
+ target_element = document.getElementById("chat").parentNode;
+ target_html = "
" + data.html + "
";
+ }
+
+ const queryScope = target_element;
+
// Track open blocks
const openBlocks = new Set();
- document.querySelectorAll(".thinking-block").forEach(block => {
+ 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")) {
@@ -242,7 +255,7 @@ function handleMorphdomUpdate(data) {
// Store scroll positions for any open blocks
const scrollPositions = {};
- document.querySelectorAll(".thinking-block[open]").forEach(block => {
+ queryScope.querySelectorAll(".thinking-block[open]").forEach(block => {
const content = block.querySelector(".thinking-content");
const blockId = block.getAttribute("data-block-id");
if (content && blockId) {
@@ -254,16 +267,6 @@ function handleMorphdomUpdate(data) {
}
});
- var target_element, target_html;
- if (data.last_message_only) {
- const childNodes = document.getElementsByClassName("messages")[0].childNodes;
- target_element = childNodes[childNodes.length - 1];
- target_html = data.html;
- } else {
- target_element = document.getElementById("chat").parentNode;
- target_html = "" + data.html + "
";
- }
-
morphdom(
target_element,
target_html,
@@ -317,7 +320,7 @@ function handleMorphdomUpdate(data) {
);
// Add toggle listeners for new blocks
- document.querySelectorAll(".thinking-block").forEach(block => {
+ queryScope.querySelectorAll(".thinking-block").forEach(block => {
if (!block._hasToggleListener) {
block.addEventListener("toggle", function(e) {
if (this.open) {