Spaces:
Running
Running
Fix wrapper-blocked navigation: artifact links resolve to static-host origin and open in new tab
Browse files- index.html +36 -11
index.html
CHANGED
|
@@ -75,6 +75,21 @@
|
|
| 75 |
(function () {
|
| 76 |
var listEl = document.getElementById("card-list");
|
| 77 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 78 |
function escapeHtml(s) {
|
| 79 |
return String(s).replace(/[&<>"']/g, function (c) {
|
| 80 |
return {
|
|
@@ -92,17 +107,23 @@
|
|
| 92 |
return d.slice(0, 12) + "…";
|
| 93 |
}
|
| 94 |
|
|
|
|
|
|
|
| 95 |
function renderCard(item) {
|
| 96 |
-
var pdfHref =
|
| 97 |
var explorerLink = item.explorer
|
| 98 |
-
? '<a class="meta-link" href="
|
| 99 |
-
escapeHtml(item.explorer) +
|
| 100 |
-
'"
|
|
|
|
|
|
|
| 101 |
: "";
|
| 102 |
var dataLink = item.data
|
| 103 |
-
? '<a class="meta-link" href="
|
| 104 |
-
escapeHtml(item.data) +
|
| 105 |
-
'"
|
|
|
|
|
|
|
| 106 |
: "";
|
| 107 |
|
| 108 |
var statusClass =
|
|
@@ -113,8 +134,10 @@
|
|
| 113 |
return (
|
| 114 |
'<article class="card">' +
|
| 115 |
'<a class="card-link" href="' +
|
| 116 |
-
pdfHref +
|
| 117 |
-
'"
|
|
|
|
|
|
|
| 118 |
'<div class="card-head">' +
|
| 119 |
"<div>" +
|
| 120 |
'<h2 class="card-title">' +
|
|
@@ -136,8 +159,10 @@
|
|
| 136 |
"</a>" +
|
| 137 |
'<div class="card-meta">' +
|
| 138 |
'<a class="meta-link" href="' +
|
| 139 |
-
pdfHref +
|
| 140 |
-
'"
|
|
|
|
|
|
|
| 141 |
explorerLink +
|
| 142 |
dataLink +
|
| 143 |
'<span class="digest" title="' +
|
|
|
|
| 75 |
(function () {
|
| 76 |
var listEl = document.getElementById("card-list");
|
| 77 |
|
| 78 |
+
// When the catalog is viewed inside the Hugging Face wrapper iframe,
|
| 79 |
+
// relative artifact links navigate the wrapper context and are
|
| 80 |
+
// blocked by Chrome's frame-navigation policy. Build artifact hrefs
|
| 81 |
+
// against the static-host origin and open in a new top-level tab so
|
| 82 |
+
// PDFs / explorer / JSON resolve as a normal browser navigation.
|
| 83 |
+
var STATIC_ORIGIN = window.location.hostname.endsWith(
|
| 84 |
+
".static.hf.space",
|
| 85 |
+
)
|
| 86 |
+
? window.location.origin
|
| 87 |
+
: "https://vertrule-org-research.static.hf.space";
|
| 88 |
+
|
| 89 |
+
function assetHref(relPath) {
|
| 90 |
+
return STATIC_ORIGIN + "/" + String(relPath).replace(/^\.?\//, "");
|
| 91 |
+
}
|
| 92 |
+
|
| 93 |
function escapeHtml(s) {
|
| 94 |
return String(s).replace(/[&<>"']/g, function (c) {
|
| 95 |
return {
|
|
|
|
| 107 |
return d.slice(0, 12) + "…";
|
| 108 |
}
|
| 109 |
|
| 110 |
+
var LINK_ATTRS = ' target="_blank" rel="noopener noreferrer"';
|
| 111 |
+
|
| 112 |
function renderCard(item) {
|
| 113 |
+
var pdfHref = assetHref(item.pdf);
|
| 114 |
var explorerLink = item.explorer
|
| 115 |
+
? '<a class="meta-link" href="' +
|
| 116 |
+
escapeHtml(assetHref(item.explorer)) +
|
| 117 |
+
'"' +
|
| 118 |
+
LINK_ATTRS +
|
| 119 |
+
">Explorer</a>"
|
| 120 |
: "";
|
| 121 |
var dataLink = item.data
|
| 122 |
+
? '<a class="meta-link" href="' +
|
| 123 |
+
escapeHtml(assetHref(item.data)) +
|
| 124 |
+
'"' +
|
| 125 |
+
LINK_ATTRS +
|
| 126 |
+
">Data (JSON)</a>"
|
| 127 |
: "";
|
| 128 |
|
| 129 |
var statusClass =
|
|
|
|
| 134 |
return (
|
| 135 |
'<article class="card">' +
|
| 136 |
'<a class="card-link" href="' +
|
| 137 |
+
escapeHtml(pdfHref) +
|
| 138 |
+
'"' +
|
| 139 |
+
LINK_ATTRS +
|
| 140 |
+
">" +
|
| 141 |
'<div class="card-head">' +
|
| 142 |
"<div>" +
|
| 143 |
'<h2 class="card-title">' +
|
|
|
|
| 159 |
"</a>" +
|
| 160 |
'<div class="card-meta">' +
|
| 161 |
'<a class="meta-link" href="' +
|
| 162 |
+
escapeHtml(pdfHref) +
|
| 163 |
+
'"' +
|
| 164 |
+
LINK_ATTRS +
|
| 165 |
+
">PDF</a>" +
|
| 166 |
explorerLink +
|
| 167 |
dataLink +
|
| 168 |
'<span class="digest" title="' +
|