(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 =
'
' +
'' +
'' +
'
' +
'' +
'' +
'0 / 0' +
'' +
"
";
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);
})();