(function () { "use strict"; var MODE = "e2e_structures_v3"; var RAWTEXT_MODE = "e2e_rawtext_structures"; var STRUCTURE_MODES = [MODE, RAWTEXT_MODE]; var ROOT = "e2e_structures_v3"; var active = false; var activeMode = MODE; var index = null; var rows = []; var filtered = []; var current = 0; var cache = {}; var loadSequence = 0; var shapeIcons = { tabular_records: "Table", chronology_and_timeline_indexes: "Timeline", claim_and_theme_summaries: "Claims", qa_shortcuts_and_templates: "QA", relation_graphs_and_mappings: "Graph", }; function $(id) { return document.getElementById(id); } function esc(value) { return String(value === null || value === undefined ? "" : value) .replace(/&/g, "&").replace(//g, ">").replace(/"/g, """); } function short(value, limit) { value = String(value || "").replace(/\s+/g, " ").trim(); return value.length > limit ? value.slice(0, limit - 1) + "..." : value; } function hide(id) { if ($(id)) $(id).style.display = "none"; } function show(id) { if ($(id)) $(id).style.display = ""; } function installDom() { if (!$("e2eStructuresControls")) { var controls = document.createElement("div"); controls.id = "e2eStructuresControls"; controls.style.display = "none"; controls.innerHTML = '' + '
"; var footer = $("sidebarFooter"); footer.parentNode.insertBefore(controls, footer); $("e2eStructuresSearch").addEventListener("input", filterRows); $("e2eStructuresSelect").addEventListener("change", function () { current = parseInt(this.value, 10) || 0; renderCurrent(); }); $("e2eStructuresPrev").addEventListener("click", function () { if (current > 0) { current--; renderCurrent(); } }); $("e2eStructuresNext").addEventListener("click", function () { if (current < filtered.length - 1) { current++; renderCurrent(); } }); } if (!$("e2eStructuresView")) { var section = document.createElement("section"); section.id = "e2eStructuresView"; section.style.display = "none"; section.innerHTML = '
' + '
'; document.querySelector(".app-main").appendChild(section); } } function ensureButton() { var toggle = $("viewToggle"); if (!toggle) return; var compare = toggle.querySelector('[data-mode="compare"]'); [ ["modeE2eStructuresV3Btn", MODE, "E2E Structures v3"], ["modeE2eRawtextStructuresBtn", RAWTEXT_MODE, "E2E+Rawtext Structures"], ].forEach(function (definition) { if ($(definition[0])) return; var button = document.createElement("button"); button.id = definition[0]; button.type = "button"; button.dataset.mode = definition[1]; button.className = definition[1] === RAWTEXT_MODE ? "e2e-rawtext-structures-tab" : "e2e-structures-tab"; button.textContent = definition[2]; button.addEventListener("click", activate); if (compare && compare.parentNode === toggle) toggle.insertBefore(button, compare); else toggle.appendChild(button); }); } function deactivate() { var wasActive = active; active = false; window.__e2eStructuresActive = false; if (wasActive) window.__e2eStructuresJustClosed = true; hide("e2eStructuresControls"); hide("e2eStructuresView"); var button = $("modeE2eStructuresV3Btn"); var rawtextButton = $("modeE2eRawtextStructuresBtn"); if (button) button.classList.remove("active"); if (rawtextButton) rawtextButton.classList.remove("active"); } function activate(event) { if (event) event.stopImmediatePropagation(); activeMode = event && event.currentTarget.dataset.mode || activeMode; active = true; if (index) renderSummary(); window.__e2eStructuresActive = true; window.__e2eStructuresJustClosed = false; if ($("setSelect") && $("setSelect").value !== "size5000_seed1") { $("setSelect").value = "size5000_seed1"; $("setSelect").dispatchEvent(new Event("change")); } if ($("setSelect")) $("setSelect").disabled = true; if ($("scopeNote")) $("scopeNote").style.display = ""; document.querySelectorAll("#viewToggle button").forEach(function (button) { button.classList.toggle("active", button.dataset.mode === activeMode); }); ["corpusControls", "evalControls", "runControls", "compareControls"].forEach(hide); ["corpusView", "evalView", "runView", "compareView"].forEach(hide); hide("loading"); show("e2eStructuresControls"); show("e2eStructuresView"); loadIndex().then(function () { if (!active) return; filterRows(); }).catch(function (error) { $("e2eStructuresMain").innerHTML = '
Failed to load structures: ' + esc(error) + "
"; }); } function loadIndex() { if (index) return Promise.resolve(index); $("e2eStructuresMain").innerHTML = '
Loading E2E v3 structure index...
'; return fetch(ROOT + "/index.json").then(function (response) { if (!response.ok) throw new Error("index HTTP " + response.status); return response.json(); }).then(function (value) { index = value; rows = value.rows || []; renderSummary(); return value; }); } function renderSummary() { var meta = index.meta || {}; $("e2eStructuresSummary").innerHTML = '
' + esc(activeMode === RAWTEXT_MODE ? "E2E+Rawtext Structures" : (meta.label || "E2E Structures v3")) + "
" + (activeMode === RAWTEXT_MODE ? "
The five generated shapes were reused exactly; raw universe documents were mounted as a sixth fallback overlay.
" : "") + '
' + '' + esc(meta.n_qids) + " questions" + '' + esc(meta.n_source_docs) + " supporting docs" + '' + esc(meta.n_structures_total) + " structures" + "
"; } function filterRows() { var query = $("e2eStructuresSearch").value.trim().toLowerCase(); var selected = filtered[current] && filtered[current].qid; var sharedQid = window.TrajectoryUI && window.TrajectoryUI.getQid(); filtered = rows.filter(function (row) { if (!query) return true; return [ row.qid, row.question, (row.doc_ids || []).join(" "), (row.source_doc_ids || []).join(" "), ].join(" ").toLowerCase().indexOf(query) !== -1; }); current = 0; if (sharedQid) { filtered.some(function (row, position) { if (row.qid !== sharedQid) return false; current = position; return true; }); } else if (selected) { filtered.some(function (row, position) { if (row.qid !== selected) return false; current = position; return true; }); } var select = $("e2eStructuresSelect"); select.innerHTML = ""; filtered.forEach(function (row, position) { var option = document.createElement("option"); option.value = String(position); option.textContent = row.qid + " · " + short(row.question, 72); select.appendChild(option); }); renderCurrent(); } function decodeRecord(item) { if (cache[item.qid]) return Promise.resolve(cache[item.qid]); return fetch(ROOT + "/" + item.path).then(function (response) { if (!response.ok) throw new Error(item.path + ": HTTP " + response.status); return response.text(); }).then(function (encoded) { var binary = atob(encoded.trim()); var bytes = new Uint8Array(binary.length); for (var i = 0; i < binary.length; i++) bytes[i] = binary.charCodeAt(i); if (typeof DecompressionStream === "undefined") { throw new Error("This browser does not support gzip structure shards."); } var stream = new Blob([bytes]).stream().pipeThrough(new DecompressionStream("gzip")); return new Response(stream).text(); }).then(function (text) { cache[item.qid] = JSON.parse(text); return cache[item.qid]; }); } function renderCurrent() { var host = $("e2eStructuresMain"); if (!filtered.length) { $("e2eStructuresCounter").textContent = "0 / 0"; $("e2eStructuresSelect").innerHTML = ""; host.innerHTML = '
No questions match the filter.
'; return; } var item = filtered[current]; $("e2eStructuresCounter").textContent = (current + 1) + " / " + filtered.length; $("e2eStructuresSelect").value = String(current); host.innerHTML = '
Loading ' + esc(item.qid) + "...
"; var sequence = ++loadSequence; decodeRecord(item).then(function (record) { if (!active || sequence !== loadSequence) return; renderRecord(record); }).catch(function (error) { host.innerHTML = '
Failed to load record: ' + esc(error) + "
"; }); } function renderGold(value) { if (typeof value === "string") return value; return JSON.stringify(value, null, 2); } function renderStructure(structure) { var label = shapeIcons[structure.shape_id] || structure.shape_id; var unit = structure.unit_name ? " · " + structure.unit_name : ""; return '
' + '' + esc(label) + "" + esc(structure.shape_id) + esc(unit) + "" + (structure.unit_description ? '
' + esc(structure.unit_description) + "
" : "") + '
' + esc(structure.content || "(empty artifact)") + "
"; } function renderDocument(doc, position) { var sources = (doc.source_doc_ids || []).map(function (id) { return "" + esc(id) + ""; }).join(" "); var structures = (doc.structures || []).map(renderStructure).join(""); return '
" + '' + esc(doc.doc_id) + "" + esc(doc.n_structures) + " structures" + '
Supporting source artifacts: ' + (sources || "none") + "
" + '
Supporting text
' +
      esc(doc.contents || "") + "
" + (structures || '
No structures for this extraction unit.
') + "
"; } function renderRecord(record) { if (window.TrajectoryUI) window.TrajectoryUI.setQid(record.qid); $("e2eStructuresMain").innerHTML = '
' + '
' + esc(record.qid) + "" + '' + esc(record.n_source_docs) + " source docs" + '' + esc(record.n_structures) + " structures
" + "

" + esc(record.question) + "

" + window.TrajectoryUI.gold(record.gold_answers, "Gold") + "
" + (record.docs || []).map(renderDocument).join(""); } installDom(); ensureButton(); new MutationObserver(ensureButton).observe($("viewToggle"), { childList: true, subtree: true }); document.addEventListener("click", function (event) { var button = event.target.closest && event.target.closest("#viewToggle button"); if (button && STRUCTURE_MODES.indexOf(button.dataset.mode) === -1) deactivate(); }, true); document.addEventListener("keydown", function (event) { if (!active || (event.key !== "ArrowLeft" && event.key !== "ArrowRight")) return; var tag = (event.target.tagName || "").toLowerCase(); if (tag === "input" || tag === "select" || tag === "textarea") return; event.stopImmediatePropagation(); (event.key === "ArrowLeft" ? $("e2eStructuresPrev") : $("e2eStructuresNext")).click(); }, true); })();