export default function formatSource(source, panelId) { source = (source ?? "").trim(); if (!source || !panelId) return; const sourceSplit = source.split(/\r?\n/); const spaceCount = sourceSplit[sourceSplit.length - 1].search(/\S/); if (spaceCount <= 0) return; // empty string const trimRE = new RegExp(`^\\s{${spaceCount}}`); const preDom = document.createElement("pre"); preDom.append(sourceSplit.map((val) => val.replace(trimRE, "")).join("\n")); preDom.innerHTML = preDom.innerHTML // strRegEx must be applied first to prevent false positives .replace(/\"[^"]+\"/g, (val) => val !== '"module"' ? `${val}` : val, ) .replace(/\/\/.*/g, (val) => `${val}`) .replace(/\`[^`]+\`/g, (val) => `${val}`) .replace(/\.\w+/g, (val) => val !== ".js" ? `${val}` : val, ) .replace( /<\/?script[^&]*>/g, (val) => `${val}`, ); const sourceHTML = `
Source
${preDom.outerHTML}
`.trim(); document .getElementById(panelId) .insertAdjacentHTML("beforeend", sourceHTML); }