const progressContent = `
`; let originalprogressContent; let turnOffProgress = false; export function toggleProgress(progressOff){ turnOffProgress = !progressOff } // export function injectProgress(clone) { // if(turnOffProgress) return // const template = document.createElement("template"); // template.innerHTML = progressContent; // const progress = clone.querySelector("#progress"); // if (progress) { // // Clone the node deeply // originalprogressContent = progress.cloneNode(true); // progress.innerHTML = ""; // Clear existing content if necessary // progress.appendChild(template.content.cloneNode(true)); // } else { // console.error("progress component not found"); // } // return progress; // } export function injectProgress(clone) { if(turnOffProgress) return null if(!clone) { console.warn('No clone element provided to injectProgress'); return null; } const template = document.createElement("template"); template.innerHTML = progressContent; // First try to find existing progress element let progress = clone.querySelector("#progress"); // If not found, create and inject it if (!progress) { progress = document.createElement("div"); progress.id = "progress"; progress.className = "w-full"; // Add any necessary classes // Find a suitable location to inject the progress element const messageContent = clone.querySelector(".message-content"); if (messageContent) { messageContent.insertBefore(progress, messageContent.firstChild); } else { // If no message-content, append to clone clone.appendChild(progress); } } // Store original content if it exists originalprogressContent = progress.cloneNode(true); // Clear and append new content progress.innerHTML = ""; progress.appendChild(template.content.cloneNode(true)); return progress; } export async function removeElementById(clone, elementId) { if (turnOffProgress) return; // Guard against null/undefined clone if (!clone) { console.warn(`No clone provided when removing ${elementId}`); return; } const elementToRemove = clone.querySelector(`#${elementId}`); if (elementToRemove) { revealSVGs(elementToRemove); setTimeout(() => { if (elementToRemove.parentNode) { elementToRemove.parentNode.removeChild(elementToRemove); } }, 500); } else { // Element not found in clone - this is often expected behavior // Only log for non-progress elements to reduce noise if (elementId !== 'progress') { console.warn(`Element with ID '${elementId}' not found in clone - skipping removal`); } } } /** * Reveals all hidden SVG elements within the provided clone. * * @param {Element} clone - The clone element to search for hidden SVGs. * @return {void} No return value. */ export function revealSVGs(clone) { if(turnOffProgress) return // Query all SVG elements within the clone const svgElements = clone.querySelectorAll("svg.hidden"); // Iterate through each SVG element and remove the 'hidden' class svgElements.forEach((svg) => { svg.classList.remove("hidden"); }); } export function injectMenu(shadowEle) { if(turnOffProgress) return const progress = clone.querySelector("#progress"); if (progress && originalprogressContent) { // Clear and append the cloned original content progress.innerHTML = ""; progress.appendChild(originalprogressContent.cloneNode(true)); } else { console.error("Button menu not found or original content not stored"); } } function addItem(shadowEle, text, index) { if(turnOffProgress) return const checklist = shadowEle.querySelector("#checklist"); if (checklist) { const item = document.createElement("div"); item.className = "flex items-center text-blue-400 dark:text-blue-400 bg-transparent p-1 rounded-lg border-b border-zinc-300 dark:border-zinc-700 animate-fadeInUp"; item.innerHTML = `