@genspectrum/dashboard-components 0.6.10 → 0.6.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -5025,7 +5025,7 @@ function P$1() {
5025
5025
  }
5026
5026
  function S$2(n3, l2, u2, t2, i3, o2, r2, f2, e3, c2, s6) {
5027
5027
  var a2, v2, y2, d2, w2, _2 = t2 && t2.__k || p$2, g2 = l2.length;
5028
- for (u2.__d = e3, $$1(u2, l2, _2), e3 = u2.__d, a2 = 0; a2 < g2; a2++) null != (y2 = u2.__k[a2]) && "boolean" != typeof y2 && "function" != typeof y2 && (v2 = -1 === y2.__i ? h$2 : _2[y2.__i] || h$2, y2.__i = a2, O$1(n3, y2, v2, i3, o2, r2, f2, e3, c2, s6), d2 = y2.__e, y2.ref && v2.ref != y2.ref && (v2.ref && N$1(v2.ref, null, y2), s6.push(y2.ref, y2.__c || d2, y2)), null == w2 && null != d2 && (w2 = d2), 65536 & y2.__u || v2.__k === y2.__k ? (e3 && "string" == typeof y2.type && !n3.contains(e3) && (e3 = x$2(v2)), e3 = I$1(y2, e3, n3)) : "function" == typeof y2.type && void 0 !== y2.__d ? e3 = y2.__d : d2 && (e3 = d2.nextSibling), y2.__d = void 0, y2.__u &= -196609);
5028
+ for (u2.__d = e3, $$1(u2, l2, _2), e3 = u2.__d, a2 = 0; a2 < g2; a2++) null != (y2 = u2.__k[a2]) && "boolean" != typeof y2 && "function" != typeof y2 && (v2 = -1 === y2.__i ? h$2 : _2[y2.__i] || h$2, y2.__i = a2, O$1(n3, y2, v2, i3, o2, r2, f2, e3, c2, s6), d2 = y2.__e, y2.ref && v2.ref != y2.ref && (v2.ref && N$1(v2.ref, null, y2), s6.push(y2.ref, y2.__c || d2, y2)), null == w2 && null != d2 && (w2 = d2), 65536 & y2.__u || v2.__k === y2.__k ? e3 = I$1(y2, e3, n3) : "function" == typeof y2.type && void 0 !== y2.__d ? e3 = y2.__d : d2 && (e3 = d2.nextSibling), y2.__d = void 0, y2.__u &= -196609);
5029
5029
  u2.__d = e3, u2.__e = w2;
5030
5030
  }
5031
5031
  function $$1(n3, l2, u2) {
@@ -5039,7 +5039,7 @@ function I$1(n3, l2, u2) {
5039
5039
  for (t2 = n3.__k, i3 = 0; t2 && i3 < t2.length; i3++) t2[i3] && (t2[i3].__ = n3, l2 = I$1(t2[i3], l2, u2));
5040
5040
  return l2;
5041
5041
  }
5042
- n3.__e != l2 && (u2.insertBefore(n3.__e, l2 || null), l2 = n3.__e);
5042
+ n3.__e != l2 && (l2 && n3.type && !u2.contains(l2) && (l2 = x$2(n3)), u2.insertBefore(n3.__e, l2 || null), l2 = n3.__e);
5043
5043
  do {
5044
5044
  l2 = l2 && l2.nextSibling;
5045
5045
  } while (null != l2 && 8 === l2.nodeType);
@@ -5117,7 +5117,11 @@ function O$1(n3, u2, t2, i3, o2, r2, f2, e3, c2, s6) {
5117
5117
  } while (h3.__d && ++I3 < 25);
5118
5118
  h3.state = h3.__s, null != h3.getChildContext && (i3 = d$2(d$2({}, i3), h3.getChildContext())), x2 && !p2 && null != h3.getSnapshotBeforeUpdate && (_2 = h3.getSnapshotBeforeUpdate(v2, w2)), S$2(n3, y$2(L3 = null != a2 && a2.type === k$1 && null == a2.key ? a2.props.children : a2) ? L3 : [L3], u2, t2, i3, o2, r2, f2, e3, c2, s6), h3.base = u2.__e, u2.__u &= -161, h3.__h.length && f2.push(h3), g2 && (h3.__E = h3.__ = null);
5119
5119
  } catch (n4) {
5120
- u2.__v = null, c2 || null != r2 ? (u2.__e = e3, u2.__u |= c2 ? 160 : 32, r2[r2.indexOf(e3)] = null) : (u2.__e = t2.__e, u2.__k = t2.__k), l$2.__e(n4, u2, t2);
5120
+ if (u2.__v = null, c2 || null != r2) {
5121
+ for (u2.__u |= c2 ? 160 : 32; e3 && 8 === e3.nodeType && e3.nextSibling; ) e3 = e3.nextSibling;
5122
+ r2[r2.indexOf(e3)] = null, u2.__e = e3;
5123
+ } else u2.__e = t2.__e, u2.__k = t2.__k;
5124
+ l$2.__e(n4, u2, t2);
5121
5125
  }
5122
5126
  else null == r2 && u2.__v === t2.__v ? (u2.__k = t2.__k, u2.__e = t2.__e) : u2.__e = z$2(t2.__e, u2, t2, i3, o2, r2, f2, c2, s6);
5123
5127
  (a2 = l$2.diffed) && a2(u2);
@@ -5165,7 +5169,10 @@ function z$2(l2, u2, t2, i3, o2, r2, f2, e3, c2) {
5165
5169
  }
5166
5170
  function N$1(n3, u2, t2) {
5167
5171
  try {
5168
- "function" == typeof n3 ? n3(u2) : n3.current = u2;
5172
+ if ("function" == typeof n3) {
5173
+ var i3 = "function" == typeof n3.__u;
5174
+ i3 && n3.__u(), i3 && null == u2 || (n3.__u = n3(u2));
5175
+ } else n3.current = u2;
5169
5176
  } catch (n4) {
5170
5177
  l$2.__e(n4, t2);
5171
5178
  }
@@ -27392,7 +27399,7 @@ const Info = ({ children }) => {
27392
27399
  return /* @__PURE__ */ u$2("div", { className: "relative", children: [
27393
27400
  /* @__PURE__ */ u$2("button", { type: "button", className: "btn btn-xs", onClick: toggleHelp, children: "?" }),
27394
27401
  /* @__PURE__ */ u$2("dialog", { ref: dialogRef, className: "modal modal-bottom sm:modal-middle", children: [
27395
- /* @__PURE__ */ u$2("div", { className: "modal-box", children: [
27402
+ /* @__PURE__ */ u$2("div", { className: "modal-box sm:max-w-5xl", children: [
27396
27403
  /* @__PURE__ */ u$2("form", { method: "dialog", children: /* @__PURE__ */ u$2("button", { className: "btn btn-sm btn-circle btn-ghost absolute right-2 top-2", children: "✕" }) }),
27397
27404
  /* @__PURE__ */ u$2("div", { className: "flex flex-col", children }),
27398
27405
  /* @__PURE__ */ u$2("div", { className: "modal-action", children: /* @__PURE__ */ u$2("form", { method: "dialog", children: /* @__PURE__ */ u$2("button", { className: "float-right underline text-sm hover:text-blue-700 mr-2", children: "Close" }) }) })
@@ -27413,6 +27420,73 @@ const InfoParagraph = ({ children }) => {
27413
27420
  const InfoLink = ({ children, href }) => {
27414
27421
  return /* @__PURE__ */ u$2("a", { className: "text-blue-600 hover:text-blue-800", href, target: "_blank", rel: "noopener noreferrer", children });
27415
27422
  };
27423
+ const InfoComponentCode = ({ componentName, params, lapisUrl }) => {
27424
+ const componentCode = componentParametersToCode(componentName, params, lapisUrl);
27425
+ const codePenData = {
27426
+ title: "GenSpectrum dashboard component",
27427
+ html: generateFullExampleCode(componentCode, componentName),
27428
+ layout: "left",
27429
+ editors: "100"
27430
+ };
27431
+ return /* @__PURE__ */ u$2(k$1, { children: [
27432
+ /* @__PURE__ */ u$2(InfoHeadline2, { children: "Use this component yourself" }),
27433
+ /* @__PURE__ */ u$2(InfoParagraph, { children: [
27434
+ "This component was created using the following parameters:",
27435
+ /* @__PURE__ */ u$2("div", { className: "p-4 border border-gray-200 rounded-lg overflow-x-auto", children: /* @__PURE__ */ u$2("pre", { children: /* @__PURE__ */ u$2("code", { children: componentCode }) }) })
27436
+ ] }),
27437
+ /* @__PURE__ */ u$2(InfoParagraph, { children: [
27438
+ "You can add this component to your own website using the",
27439
+ " ",
27440
+ /* @__PURE__ */ u$2(InfoLink, { href: "https://github.com/GenSpectrum/dashboard-components", children: "GenSpectrum dashboard components library" }),
27441
+ " ",
27442
+ "and the code from above."
27443
+ ] }),
27444
+ /* @__PURE__ */ u$2(InfoParagraph, { children: /* @__PURE__ */ u$2("form", { action: "https://codepen.io/pen/define", method: "POST", target: "_blank", children: [
27445
+ /* @__PURE__ */ u$2(
27446
+ "input",
27447
+ {
27448
+ type: "hidden",
27449
+ name: "data",
27450
+ value: JSON.stringify(codePenData).replace(/"/g, "&quot;").replace(/'/g, "&apos;")
27451
+ }
27452
+ ),
27453
+ /* @__PURE__ */ u$2("button", { className: "text-blue-600 hover:text-blue-800", type: "submit", children: "Click here to try it out on CodePen." })
27454
+ ] }) })
27455
+ ] });
27456
+ };
27457
+ function componentParametersToCode(componentName, params, lapisUrl) {
27458
+ const stringifyIfNeeded = (value) => {
27459
+ return typeof value === "object" ? JSON.stringify(value) : value;
27460
+ };
27461
+ const attributes = indentLines(
27462
+ Object.entries(params).map(([key, value]) => `${key}='${stringifyIfNeeded(value)}'`).join("\n"),
27463
+ 4
27464
+ );
27465
+ return `<gs-app lapis="${lapisUrl}">
27466
+ <gs-${componentName}
27467
+ ${attributes}
27468
+ />
27469
+ </gs-app>`;
27470
+ }
27471
+ function generateFullExampleCode(componentCode, componentName) {
27472
+ const storyBookPath = `/docs/visualization-${componentName}--docs`;
27473
+ return `<html>
27474
+ <head>
27475
+ <script type="module" src="https://unpkg.com/@genspectrum/dashboard-components@latest/dist/dashboard-components.js"><\/script>
27476
+ <link rel="stylesheet" href="https://unpkg.com/@genspectrum/dashboard-components@latest/dist/style.css" />
27477
+ </head>
27478
+
27479
+ <body>
27480
+ <!-- Component documentation: https://genspectrum.github.io/dashboard-components/?path=${storyBookPath} -->
27481
+ ${indentLines(componentCode, 2)}
27482
+ </body>
27483
+ </html>
27484
+ `;
27485
+ }
27486
+ function indentLines(text, numberSpaces) {
27487
+ const spaces = " ".repeat(numberSpaces);
27488
+ return text.split("\n").map((line) => spaces + line).join("\n");
27489
+ }
27416
27490
  const LoadingDisplay = () => {
27417
27491
  return /* @__PURE__ */ u$2("div", { "aria-label": "Loading", className: "h-full w-full skeleton" });
27418
27492
  };
@@ -27798,7 +27872,7 @@ const Toolbar$5 = ({
27798
27872
  const gridJsStyle = '.gridjs-head button, .gridjs-footer button {\n cursor: pointer;\n background-color: transparent;\n background-image: none;\n padding: 0;\n margin: 0;\n border: none;\n outline: none;\n}\n\n.gridjs-temp {\n position: relative;\n}\n\n.gridjs-head {\n width: 100%;\n margin-bottom: 5px;\n padding: 5px 1px;\n}\n.gridjs-head::after {\n content: "";\n display: block;\n clear: both;\n}\n.gridjs-head:empty {\n padding: 0;\n border: none;\n}\n\n.gridjs-container {\n overflow: hidden;\n display: inline-block;\n padding: 2px;\n color: #000;\n position: relative;\n z-index: 0;\n}\n\n.gridjs-footer {\n display: block;\n position: relative;\n width: 100%;\n z-index: 5;\n padding: 12px 24px;\n border-top: 1px solid #e5e7eb;\n background-color: #fff;\n box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px 0 rgba(0, 0, 0, 0.26);\n border-radius: 0 0 8px 8px;\n border-bottom-width: 1px;\n border-color: #e5e7eb;\n}\n.gridjs-footer:empty {\n padding: 0;\n border: none;\n}\n\ninput.gridjs-input {\n outline: none;\n background-color: #fff;\n border: 1px solid #d2d6dc;\n border-radius: 5px;\n padding: 10px 13px;\n font-size: 14px;\n line-height: 1.45;\n -webkit-appearance: none;\n -moz-appearance: none;\n appearance: none;\n}\ninput.gridjs-input:focus {\n box-shadow: 0 0 0 3px rgba(149, 189, 243, 0.5);\n border-color: #9bc2f7;\n}\n\n.gridjs-pagination {\n color: #3d4044;\n}\n.gridjs-pagination::after {\n content: "";\n display: block;\n clear: both;\n}\n.gridjs-pagination .gridjs-summary {\n float: left;\n margin-top: 5px;\n}\n.gridjs-pagination .gridjs-pages {\n float: right;\n}\n.gridjs-pagination .gridjs-pages button {\n padding: 5px 14px;\n border: 1px solid #d2d6dc;\n background-color: #fff;\n border-right: none;\n outline: none;\n -webkit-user-select: none;\n -moz-user-select: none;\n user-select: none;\n}\n.gridjs-pagination .gridjs-pages button:focus {\n box-shadow: 0 0 0 2px rgba(149, 189, 243, 0.5);\n position: relative;\n margin-right: -1px;\n border-right: 1px solid #d2d6dc;\n}\n.gridjs-pagination .gridjs-pages button:hover {\n background-color: #f7f7f7;\n color: rgb(60, 66, 87);\n outline: none;\n}\n.gridjs-pagination .gridjs-pages button:disabled,\n.gridjs-pagination .gridjs-pages button[disabled],\n.gridjs-pagination .gridjs-pages button:hover:disabled {\n cursor: default;\n background-color: #fff;\n color: #6b7280;\n}\n.gridjs-pagination .gridjs-pages button.gridjs-spread {\n cursor: default;\n box-shadow: none;\n background-color: #fff;\n}\n.gridjs-pagination .gridjs-pages button.gridjs-currentPage {\n background-color: #f7f7f7;\n font-weight: bold;\n}\n.gridjs-pagination .gridjs-pages button:last-child {\n border-bottom-right-radius: 6px;\n border-top-right-radius: 6px;\n border-right: 1px solid #d2d6dc;\n}\n.gridjs-pagination .gridjs-pages button:first-child {\n border-bottom-left-radius: 6px;\n border-top-left-radius: 6px;\n}\n.gridjs-pagination .gridjs-pages button:last-child:focus {\n margin-right: 0;\n}\n\nbutton.gridjs-sort {\n float: right;\n height: 24px;\n width: 13px;\n background-color: transparent;\n background-repeat: no-repeat;\n background-position-x: center;\n cursor: pointer;\n padding: 0;\n margin: 0;\n border: none;\n outline: none;\n background-size: contain;\n}\nbutton.gridjs-sort-neutral {\n opacity: 0.3;\n background-image: url("data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIGlkPSJDYXBhXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IgoJIHdpZHRoPSI0MDEuOTk4cHgiIGhlaWdodD0iNDAxLjk5OHB4IiB2aWV3Qm94PSIwIDAgNDAxLjk5OCA0MDEuOTk4IiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCA0MDEuOTk4IDQwMS45OTg7IgoJIHhtbDpzcGFjZT0icHJlc2VydmUiPgo8Zz4KCTxnPgoJCTxwYXRoIGQ9Ik03My4wOTIsMTY0LjQ1MmgyNTUuODEzYzQuOTQ5LDAsOS4yMzMtMS44MDcsMTIuODQ4LTUuNDI0YzMuNjEzLTMuNjE2LDUuNDI3LTcuODk4LDUuNDI3LTEyLjg0NwoJCQljMC00Ljk0OS0xLjgxMy05LjIyOS01LjQyNy0xMi44NUwyMTMuODQ2LDUuNDI0QzIxMC4yMzIsMS44MTIsMjA1Ljk1MSwwLDIwMC45OTksMHMtOS4yMzMsMS44MTItMTIuODUsNS40MjRMNjAuMjQyLDEzMy4zMzEKCQkJYy0zLjYxNywzLjYxNy01LjQyNCw3LjkwMS01LjQyNCwxMi44NWMwLDQuOTQ4LDEuODA3LDkuMjMxLDUuNDI0LDEyLjg0N0M2My44NjMsMTYyLjY0NSw2OC4xNDQsMTY0LjQ1Miw3My4wOTIsMTY0LjQ1MnoiLz4KCQk8cGF0aCBkPSJNMzI4LjkwNSwyMzcuNTQ5SDczLjA5MmMtNC45NTIsMC05LjIzMywxLjgwOC0xMi44NSw1LjQyMWMtMy42MTcsMy42MTctNS40MjQsNy44OTgtNS40MjQsMTIuODQ3CgkJCWMwLDQuOTQ5LDEuODA3LDkuMjMzLDUuNDI0LDEyLjg0OEwxODguMTQ5LDM5Ni41N2MzLjYyMSwzLjYxNyw3LjkwMiw1LjQyOCwxMi44NSw1LjQyOHM5LjIzMy0xLjgxMSwxMi44NDctNS40MjhsMTI3LjkwNy0xMjcuOTA2CgkJCWMzLjYxMy0zLjYxNCw1LjQyNy03Ljg5OCw1LjQyNy0xMi44NDhjMC00Ljk0OC0xLjgxMy05LjIyOS01LjQyNy0xMi44NDdDMzM4LjEzOSwyMzkuMzUzLDMzMy44NTQsMjM3LjU0OSwzMjguOTA1LDIzNy41NDl6Ii8+Cgk8L2c+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPC9zdmc+");\n background-position-y: center;\n}\nbutton.gridjs-sort-asc {\n background-image: url("data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIGlkPSJDYXBhXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IgoJIHdpZHRoPSIyOTIuMzYycHgiIGhlaWdodD0iMjkyLjM2MXB4IiB2aWV3Qm94PSIwIDAgMjkyLjM2MiAyOTIuMzYxIiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAyOTIuMzYyIDI5Mi4zNjE7IgoJIHhtbDpzcGFjZT0icHJlc2VydmUiPgo8Zz4KCTxwYXRoIGQ9Ik0yODYuOTM1LDE5Ny4yODdMMTU5LjAyOCw2OS4zODFjLTMuNjEzLTMuNjE3LTcuODk1LTUuNDI0LTEyLjg0Ny01LjQyNHMtOS4yMzMsMS44MDctMTIuODUsNS40MjRMNS40MjQsMTk3LjI4NwoJCUMxLjgwNywyMDAuOTA0LDAsMjA1LjE4NiwwLDIxMC4xMzRzMS44MDcsOS4yMzMsNS40MjQsMTIuODQ3YzMuNjIxLDMuNjE3LDcuOTAyLDUuNDI1LDEyLjg1LDUuNDI1aDI1NS44MTMKCQljNC45NDksMCw5LjIzMy0xLjgwOCwxMi44NDgtNS40MjVjMy42MTMtMy42MTMsNS40MjctNy44OTgsNS40MjctMTIuODQ3UzI5MC41NDgsMjAwLjkwNCwyODYuOTM1LDE5Ny4yODd6Ii8+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPC9zdmc+");\n background-position-y: 35%;\n background-size: 10px;\n}\nbutton.gridjs-sort-desc {\n background-image: url("data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIGlkPSJDYXBhXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IgoJIHdpZHRoPSIyOTIuMzYycHgiIGhlaWdodD0iMjkyLjM2MnB4IiB2aWV3Qm94PSIwIDAgMjkyLjM2MiAyOTIuMzYyIiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAyOTIuMzYyIDI5Mi4zNjI7IgoJIHhtbDpzcGFjZT0icHJlc2VydmUiPgo8Zz4KCTxwYXRoIGQ9Ik0yODYuOTM1LDY5LjM3N2MtMy42MTQtMy42MTctNy44OTgtNS40MjQtMTIuODQ4LTUuNDI0SDE4LjI3NGMtNC45NTIsMC05LjIzMywxLjgwNy0xMi44NSw1LjQyNAoJCUMxLjgwNyw3Mi45OTgsMCw3Ny4yNzksMCw4Mi4yMjhjMCw0Ljk0OCwxLjgwNyw5LjIyOSw1LjQyNCwxMi44NDdsMTI3LjkwNywxMjcuOTA3YzMuNjIxLDMuNjE3LDcuOTAyLDUuNDI4LDEyLjg1LDUuNDI4CgkJczkuMjMzLTEuODExLDEyLjg0Ny01LjQyOEwyODYuOTM1LDk1LjA3NGMzLjYxMy0zLjYxNyw1LjQyNy03Ljg5OCw1LjQyNy0xMi44NDdDMjkyLjM2Miw3Ny4yNzksMjkwLjU0OCw3Mi45OTgsMjg2LjkzNSw2OS4zNzd6Ii8+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPGc+CjwvZz4KPC9zdmc+");\n background-position-y: 65%;\n background-size: 10px;\n}\nbutton.gridjs-sort:focus {\n outline: none;\n}\n\ntable.gridjs-table {\n width: 100%;\n max-width: 100%;\n border-collapse: collapse;\n text-align: left;\n display: table;\n margin: 0;\n padding: 0;\n overflow: auto;\n table-layout: fixed;\n}\n\n.gridjs-tbody {\n background-color: #fff;\n}\n\ntd.gridjs-td {\n border: 1px solid #e5e7eb;\n padding: 12px 24px;\n background-color: #fff;\n box-sizing: content-box;\n}\ntd.gridjs-td:first-child {\n border-left: none;\n}\ntd.gridjs-td:last-child {\n border-right: none;\n}\ntd.gridjs-message {\n text-align: center;\n}\n\nth.gridjs-th {\n position: relative;\n color: #6b7280;\n background-color: #f9fafb;\n border: 1px solid #e5e7eb;\n border-top: none;\n padding: 14px 24px;\n -webkit-user-select: none;\n -moz-user-select: none;\n user-select: none;\n box-sizing: border-box;\n white-space: nowrap;\n outline: none;\n vertical-align: middle;\n}\nth.gridjs-th .gridjs-th-content {\n text-overflow: ellipsis;\n overflow: hidden;\n width: 100%;\n float: left;\n}\nth.gridjs-th-sort {\n cursor: pointer;\n}\nth.gridjs-th-sort .gridjs-th-content {\n width: calc(100% - 15px);\n}\nth.gridjs-th-sort:hover {\n background-color: #e5e7eb;\n}\nth.gridjs-th-sort:focus {\n background-color: #e5e7eb;\n}\nth.gridjs-th-fixed {\n position: sticky;\n box-shadow: 0 1px 0 0 #e5e7eb;\n}\n@supports (-moz-appearance: none) {\n th.gridjs-th-fixed {\n box-shadow: 0 0 0 1px #e5e7eb;\n }\n}\nth.gridjs-th:first-child {\n border-left: none;\n}\nth.gridjs-th:last-child {\n border-right: none;\n}\n\n.gridjs-tr {\n border: none;\n}\n.gridjs-tr-selected td {\n background-color: #ebf5ff;\n}\n.gridjs-tr:last-child td {\n border-bottom: 0;\n}\n\n.gridjs *,\n.gridjs :after,\n.gridjs :before {\n box-sizing: border-box;\n}\n\n.gridjs-wrapper {\n position: relative;\n z-index: 1;\n overflow: auto;\n width: 100%;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px 0 rgba(0, 0, 0, 0.26);\n border-radius: 8px 8px 0 0;\n display: block;\n border-top-width: 1px;\n border-color: #e5e7eb;\n}\n.gridjs-wrapper:nth-last-of-type(2) {\n border-radius: 8px;\n border-bottom-width: 1px;\n}\n\n.gridjs-search {\n float: left;\n}\n.gridjs-search-input {\n width: 250px;\n}\n\n.gridjs-loading-bar {\n z-index: 10;\n position: absolute;\n left: 0;\n right: 0;\n top: 0;\n bottom: 0;\n background-color: #fff;\n opacity: 0.5;\n}\n.gridjs-loading-bar::after {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n transform: translateX(-100%);\n background-image: linear-gradient(90deg, rgba(204, 204, 204, 0) 0, rgba(204, 204, 204, 0.2) 20%, rgba(204, 204, 204, 0.5) 60%, rgba(204, 204, 204, 0));\n animation: shimmer 2s infinite;\n content: "";\n}\n@keyframes shimmer {\n 100% {\n transform: translateX(100%);\n }\n}\n\n.gridjs-td .gridjs-checkbox {\n display: block;\n margin: auto;\n cursor: pointer;\n}\n\n.gridjs-resizable {\n position: absolute;\n top: 0;\n bottom: 0;\n right: 0;\n width: 5px;\n}\n.gridjs-resizable:hover {\n cursor: ew-resize;\n background-color: #9bc2f7;\n}\n/*# sourceMappingURL=mermaid.css?inline.map */';
27799
27873
  const minMaxPercentSliderCss = 'input[type=range]::-webkit-slider-thumb {\n -webkit-appearance: none;\n pointer-events: all;\n width: 24px;\n height: 24px;\n background-color: #fff;\n border-radius: 50%;\n box-shadow: 0 0 0 1px #C6C6C6;\n cursor: pointer;\n}\n\ninput[type=range]::-moz-range-thumb {\n -webkit-appearance: none;\n pointer-events: all;\n width: 24px;\n height: 24px;\n background-color: #fff;\n border-radius: 50%;\n box-shadow: 0 0 0 1px #C6C6C6;\n cursor: pointer;\n}\n\ninput[type=range]::-webkit-slider-thumb:hover {\n background: #f7f7f7;\n}\n\ninput[type=range]::-webkit-slider-thumb:active {\n box-shadow: inset 0 0 3px #387bbe, 0 0 9px #387bbe;\n -webkit-box-shadow: inset 0 0 3px #387bbe, 0 0 9px #387bbe;\n}\n\ninput[type="range"] {\n -webkit-appearance: none;\n -moz-appearance: none;\n appearance: none;\n height: 2px;\n width: 100%;\n position: absolute;\n background-color: #C6C6C6;\n pointer-events: none;\n}';
27800
27874
  const tailwindStyle = `/*
27801
- ! tailwindcss v3.4.6 | MIT License | https://tailwindcss.com
27875
+ ! tailwindcss v3.4.7 | MIT License | https://tailwindcss.com
27802
27876
  *//*
27803
27877
  1. Prevent padding and border from affecting element width. (https://github.com/mozdevs/cssremedy/issues/4)
27804
27878
  2. Allow adding a border to an element by just adding a border-width. (https://github.com/tailwindcss/tailwindcss/pull/116)
@@ -28784,6 +28858,10 @@ html {
28784
28858
  border-radius: inherit;
28785
28859
  }
28786
28860
  }
28861
+ .link {
28862
+ cursor: pointer;
28863
+ text-decoration-line: underline;
28864
+ }
28787
28865
  .menu li.disabled {
28788
28866
  cursor: not-allowed;
28789
28867
  -webkit-user-select: none;
@@ -29280,6 +29358,14 @@ input.tab:checked + .tab-content,
29280
29358
  .join > :where(*:not(:first-child)):is(.btn) {
29281
29359
  margin-inline-start: calc(var(--border-btn) * -1);
29282
29360
  }
29361
+ .link:focus {
29362
+ outline: 2px solid transparent;
29363
+ outline-offset: 2px;
29364
+ }
29365
+ .link:focus-visible {
29366
+ outline: 2px solid currentColor;
29367
+ outline-offset: 2px;
29368
+ }
29283
29369
  .loading {
29284
29370
  pointer-events: none;
29285
29371
  display: inline-block;
@@ -30306,6 +30392,9 @@ input.tab:checked + .tab-content,
30306
30392
  .ml-1 {
30307
30393
  margin-left: 0.25rem;
30308
30394
  }
30395
+ .ml-2 {
30396
+ margin-left: 0.5rem;
30397
+ }
30309
30398
  .ml-2\\.5 {
30310
30399
  margin-left: 0.625rem;
30311
30400
  }
@@ -30399,6 +30488,12 @@ input.tab:checked + .tab-content,
30399
30488
  .resize {
30400
30489
  resize: both;
30401
30490
  }
30491
+ .list-inside {
30492
+ list-style-position: inside;
30493
+ }
30494
+ .list-disc {
30495
+ list-style-type: disc;
30496
+ }
30402
30497
  .flex-row {
30403
30498
  flex-direction: row;
30404
30499
  }
@@ -30429,6 +30524,9 @@ input.tab:checked + .tab-content,
30429
30524
  .overflow-auto {
30430
30525
  overflow: auto;
30431
30526
  }
30527
+ .overflow-x-auto {
30528
+ overflow-x: auto;
30529
+ }
30432
30530
  .whitespace-nowrap {
30433
30531
  white-space: nowrap;
30434
30532
  }
@@ -30438,6 +30536,9 @@ input.tab:checked + .tab-content,
30438
30536
  .rounded-full {
30439
30537
  border-radius: 9999px;
30440
30538
  }
30539
+ .rounded-lg {
30540
+ border-radius: 0.5rem;
30541
+ }
30441
30542
  .rounded-md {
30442
30543
  border-radius: 0.375rem;
30443
30544
  }
@@ -30693,6 +30794,12 @@ input.tab:checked + .tab-content,
30693
30794
  }
30694
30795
  .peer:hover ~ .peer-hover\\:visible {
30695
30796
  visibility: visible;
30797
+ }
30798
+ @media (min-width: 640px) {
30799
+
30800
+ .sm\\:max-w-5xl {
30801
+ max-width: 64rem;
30802
+ }
30696
30803
  }`;
30697
30804
  var __defProp$c = Object.defineProperty;
30698
30805
  var __decorateClass$c = (decorators, target, key, kind) => {
@@ -31184,10 +31291,39 @@ const Toolbar$4 = ({
31184
31291
  filename: "insertions.csv"
31185
31292
  }
31186
31293
  ),
31187
- /* @__PURE__ */ u$2(Info, { children: "Info for mutations" }),
31294
+ /* @__PURE__ */ u$2(MutationsInfo, {}),
31188
31295
  /* @__PURE__ */ u$2(Fullscreen, {})
31189
31296
  ] });
31190
31297
  };
31298
+ const MutationsInfo = () => /* @__PURE__ */ u$2(Info, { children: [
31299
+ /* @__PURE__ */ u$2(InfoHeadline1, { children: "Mutations" }),
31300
+ /* @__PURE__ */ u$2(InfoParagraph, { children: [
31301
+ "This shows mutations of a variant. There are three types of mutations:",
31302
+ " ",
31303
+ /* @__PURE__ */ u$2(InfoLink, { href: "https://www.genome.gov/genetics-glossary/Substitution", children: "substitutions" }),
31304
+ ",",
31305
+ " ",
31306
+ /* @__PURE__ */ u$2(InfoLink, { href: "https://www.genome.gov/genetics-glossary/Deletion", children: "deletions" }),
31307
+ " and",
31308
+ " ",
31309
+ /* @__PURE__ */ u$2(InfoLink, { href: "https://www.genome.gov/genetics-glossary/Insertion", children: "insertions" }),
31310
+ "."
31311
+ ] }),
31312
+ /* @__PURE__ */ u$2(InfoHeadline2, { children: "Proportion calculation" }),
31313
+ /* @__PURE__ */ u$2(InfoParagraph, { children: "The proportion of a mutation is calculated by dividing the number of sequences with the mutation by the total number of sequences with a non-ambiguous symbol at the position." }),
31314
+ /* @__PURE__ */ u$2(InfoParagraph, { children: [
31315
+ /* @__PURE__ */ u$2("b", { children: "Example:" }),
31316
+ " Assume we look at nucleotide mutations at position 5 where the reference has a T and assume there are 10 sequences in total:",
31317
+ /* @__PURE__ */ u$2("ul", { className: "list-disc list-inside ml-2", children: [
31318
+ /* @__PURE__ */ u$2("li", { children: "3 sequences have a C," }),
31319
+ /* @__PURE__ */ u$2("li", { children: "2 sequences have a T," }),
31320
+ /* @__PURE__ */ u$2("li", { children: "1 sequence has a G," }),
31321
+ /* @__PURE__ */ u$2("li", { children: "3 sequences have an N," }),
31322
+ /* @__PURE__ */ u$2("li", { children: "1 sequence has a Y (which means T or C)," })
31323
+ ] }),
31324
+ "then the proportion of the T5C mutation is 50%. The 4 sequences that have an N or Y are excluded from the calculation."
31325
+ ] })
31326
+ ] });
31191
31327
  var __defProp$a = Object.defineProperty;
31192
31328
  var __getOwnPropDesc$a = Object.getOwnPropertyDescriptor;
31193
31329
  var __decorateClass$a = (decorators, target, key, kind) => {
@@ -33539,21 +33675,13 @@ const ScalingSelector = ({
33539
33675
  }
33540
33676
  );
33541
33677
  };
33542
- const PrevalenceOverTime = ({ width, height, ...innerProps }) => {
33678
+ const PrevalenceOverTime = (componentProps) => {
33679
+ const { width, height } = componentProps;
33543
33680
  const size = { height, width };
33544
- return /* @__PURE__ */ u$2(ErrorBoundary, { size, children: /* @__PURE__ */ u$2(ResizeContainer, { size, children: /* @__PURE__ */ u$2(PrevalenceOverTimeInner, { ...innerProps }) }) });
33681
+ return /* @__PURE__ */ u$2(ErrorBoundary, { size, children: /* @__PURE__ */ u$2(ResizeContainer, { size, children: /* @__PURE__ */ u$2(PrevalenceOverTimeInner, { ...componentProps }) }) });
33545
33682
  };
33546
- const PrevalenceOverTimeInner = ({
33547
- numeratorFilter,
33548
- denominatorFilter,
33549
- granularity,
33550
- smoothingWindow,
33551
- views,
33552
- confidenceIntervalMethods,
33553
- lapisDateField,
33554
- pageSize,
33555
- yAxisMaxConfig
33556
- }) => {
33683
+ const PrevalenceOverTimeInner = (componentProps) => {
33684
+ const { numeratorFilter, denominatorFilter, granularity, smoothingWindow, lapisDateField } = componentProps;
33557
33685
  const lapis = x$1(LapisUrlContext);
33558
33686
  const { data, error, isLoading } = useQuery(
33559
33687
  () => queryPrevalenceOverTime(
@@ -33575,30 +33703,15 @@ const PrevalenceOverTimeInner = ({
33575
33703
  if (data === null) {
33576
33704
  return /* @__PURE__ */ u$2(NoDataDisplay, {});
33577
33705
  }
33578
- return /* @__PURE__ */ u$2(
33579
- PrevalenceOverTimeTabs,
33580
- {
33581
- views,
33582
- data,
33583
- granularity,
33584
- confidenceIntervalMethods,
33585
- pageSize,
33586
- yAxisMaxConfig
33587
- }
33588
- );
33706
+ return /* @__PURE__ */ u$2(PrevalenceOverTimeTabs, { data, ...componentProps });
33589
33707
  };
33590
- const PrevalenceOverTimeTabs = ({
33591
- views,
33592
- data,
33593
- granularity,
33594
- confidenceIntervalMethods,
33595
- pageSize,
33596
- yAxisMaxConfig
33597
- }) => {
33708
+ const PrevalenceOverTimeTabs = ({ data, ...componentProps }) => {
33709
+ const { views, granularity, confidenceIntervalMethods, pageSize, yAxisMaxLinear, yAxisMaxLogarithmic } = componentProps;
33598
33710
  const [yAxisScaleType, setYAxisScaleType] = h$1("linear");
33599
33711
  const [confidenceIntervalMethod, setConfidenceIntervalMethod] = h$1(
33600
33712
  confidenceIntervalMethods.length > 0 ? confidenceIntervalMethods[0] : "none"
33601
33713
  );
33714
+ const yAxisMaxConfig = { linear: yAxisMaxLinear, logarithmic: yAxisMaxLogarithmic };
33602
33715
  const getTab = (view) => {
33603
33716
  switch (view) {
33604
33717
  case "bar":
@@ -33654,10 +33767,9 @@ const PrevalenceOverTimeTabs = ({
33654
33767
  yAxisScaleType,
33655
33768
  setYAxisScaleType,
33656
33769
  data,
33657
- granularity,
33658
- confidenceIntervalMethods,
33659
33770
  confidenceIntervalMethod,
33660
- setConfidenceIntervalMethod
33771
+ setConfidenceIntervalMethod,
33772
+ ...componentProps
33661
33773
  }
33662
33774
  );
33663
33775
  return /* @__PURE__ */ u$2(Tabs, { tabs, toolbar });
@@ -33666,12 +33778,12 @@ const Toolbar$3 = ({
33666
33778
  activeTab,
33667
33779
  yAxisScaleType,
33668
33780
  setYAxisScaleType,
33669
- confidenceIntervalMethods,
33670
33781
  confidenceIntervalMethod,
33671
33782
  setConfidenceIntervalMethod,
33672
33783
  data,
33673
- granularity
33784
+ ...componentProps
33674
33785
  }) => {
33786
+ const { confidenceIntervalMethods, granularity } = componentProps;
33675
33787
  return /* @__PURE__ */ u$2(k$1, { children: [
33676
33788
  activeTab !== "Table" && /* @__PURE__ */ u$2(ScalingSelector, { yAxisScaleType, setYAxisScaleType }),
33677
33789
  (activeTab === "Bar" || activeTab === "Line") && /* @__PURE__ */ u$2(
@@ -33690,14 +33802,34 @@ const Toolbar$3 = ({
33690
33802
  filename: "prevalence_over_time.csv"
33691
33803
  }
33692
33804
  ),
33693
- /* @__PURE__ */ u$2(PrevalenceOverTimeInfo, {}),
33805
+ /* @__PURE__ */ u$2(PrevalenceOverTimeInfo, { ...componentProps }),
33694
33806
  /* @__PURE__ */ u$2(Fullscreen, {})
33695
33807
  ] });
33696
33808
  };
33697
- const PrevalenceOverTimeInfo = () => {
33809
+ const PrevalenceOverTimeInfo = (componentProps) => {
33810
+ const { granularity, smoothingWindow, views } = componentProps;
33811
+ const lapis = x$1(LapisUrlContext);
33698
33812
  return /* @__PURE__ */ u$2(Info, { children: [
33699
33813
  /* @__PURE__ */ u$2(InfoHeadline1, { children: "Prevalence over time" }),
33700
- /* @__PURE__ */ u$2(InfoParagraph, { children: "Prevalence over time info." })
33814
+ /* @__PURE__ */ u$2(InfoParagraph, { children: [
33815
+ "This presents the proportion of one or more variants per ",
33816
+ /* @__PURE__ */ u$2("b", { children: granularity }),
33817
+ smoothingWindow > 0 && `, smoothed using a ${smoothingWindow}-${granularity} sliding window`,
33818
+ ". The proportion is calculated as the number of sequences of the variant(s) divided by the number of sequences that match the ",
33819
+ /* @__PURE__ */ u$2("code", { children: "denominatorFilter" }),
33820
+ " (see below)."
33821
+ ] }),
33822
+ /* @__PURE__ */ u$2(InfoParagraph, { children: 'Sequences that have no assigned date will not be shown in the line and bubble chart. They will show up in the bar and table view with date "unknown".' }),
33823
+ views.includes("bubble") && /* @__PURE__ */ u$2(k$1, { children: [
33824
+ /* @__PURE__ */ u$2(InfoHeadline2, { children: "Bubble chart" }),
33825
+ /* @__PURE__ */ u$2(InfoParagraph, { children: [
33826
+ "The size of the bubble scales with the total number of available sequences from the",
33827
+ " ",
33828
+ granularity,
33829
+ "."
33830
+ ] })
33831
+ ] }),
33832
+ /* @__PURE__ */ u$2(InfoComponentCode, { componentName: "prevalence-over-time", params: componentProps, lapisUrl: lapis })
33701
33833
  ] });
33702
33834
  };
33703
33835
  const maxInData = (data) => Math.max(...data.flatMap((variant) => variant.content.map((dataPoint) => dataPoint.prevalence)));
@@ -33741,10 +33873,8 @@ let PrevalenceOverTimeComponent = class extends PreactLitAdapterWithGridJsStyles
33741
33873
  height: this.height,
33742
33874
  lapisDateField: this.lapisDateField,
33743
33875
  pageSize: this.pageSize,
33744
- yAxisMaxConfig: {
33745
- linear: this.yAxisMaxLinear,
33746
- logarithmic: this.yAxisMaxLogarithmic
33747
- }
33876
+ yAxisMaxLinear: this.yAxisMaxLinear,
33877
+ yAxisMaxLogarithmic: this.yAxisMaxLogarithmic
33748
33878
  }
33749
33879
  );
33750
33880
  }
@@ -34268,12 +34398,20 @@ const AggregatedDataTabs = ({ data, views, fields, pageSize }) => {
34268
34398
  }
34269
34399
  };
34270
34400
  const tabs = views.map((view) => getTab(view));
34271
- return /* @__PURE__ */ u$2(Tabs, { tabs, toolbar: /* @__PURE__ */ u$2(Toolbar$2, { data }) });
34401
+ return /* @__PURE__ */ u$2(Tabs, { tabs, toolbar: /* @__PURE__ */ u$2(Toolbar$2, { data, fields }) });
34272
34402
  };
34273
- const Toolbar$2 = ({ data }) => {
34403
+ const Toolbar$2 = ({ data, fields }) => {
34274
34404
  return /* @__PURE__ */ u$2("div", { class: "flex flex-row", children: [
34275
34405
  /* @__PURE__ */ u$2(CsvDownloadButton, { className: "mx-1 btn btn-xs", getData: () => data, filename: "aggregate.csv" }),
34276
- /* @__PURE__ */ u$2(Info, { children: "Info for aggregate" }),
34406
+ /* @__PURE__ */ u$2(Info, { children: [
34407
+ /* @__PURE__ */ u$2(InfoHeadline1, { children: "Aggregated data" }),
34408
+ /* @__PURE__ */ u$2(InfoParagraph, { children: [
34409
+ "This table shows the number and proportion of sequences stratified by the following fields:",
34410
+ " ",
34411
+ fields.join(", "),
34412
+ ". The proportion is calculated with respect to the total count within the filtered dataset."
34413
+ ] })
34414
+ ] }),
34277
34415
  /* @__PURE__ */ u$2(Fullscreen, {})
34278
34416
  ] });
34279
34417
  };
@@ -34523,9 +34661,24 @@ const NumberSequencesOverTimeInner = ({
34523
34661
  if (data === null) {
34524
34662
  return /* @__PURE__ */ u$2(NoDataDisplay, {});
34525
34663
  }
34526
- return /* @__PURE__ */ u$2(NumberSequencesOverTimeTabs, { views, data, granularity, pageSize });
34664
+ return /* @__PURE__ */ u$2(
34665
+ NumberSequencesOverTimeTabs,
34666
+ {
34667
+ views,
34668
+ data,
34669
+ granularity,
34670
+ smoothingWindow,
34671
+ pageSize
34672
+ }
34673
+ );
34527
34674
  };
34528
- const NumberSequencesOverTimeTabs = ({ views, data, granularity, pageSize }) => {
34675
+ const NumberSequencesOverTimeTabs = ({
34676
+ views,
34677
+ data,
34678
+ granularity,
34679
+ smoothingWindow,
34680
+ pageSize
34681
+ }) => {
34529
34682
  const [yAxisScaleType, setYAxisScaleType] = h$1("linear");
34530
34683
  const getTab = (view) => {
34531
34684
  switch (view) {
@@ -34558,6 +34711,7 @@ const NumberSequencesOverTimeTabs = ({ views, data, granularity, pageSize }) =>
34558
34711
  activeTab,
34559
34712
  data,
34560
34713
  granularity,
34714
+ smoothingWindow,
34561
34715
  yAxisScaleType,
34562
34716
  setYAxisScaleType
34563
34717
  }
@@ -34565,7 +34719,14 @@ const NumberSequencesOverTimeTabs = ({ views, data, granularity, pageSize }) =>
34565
34719
  }
34566
34720
  );
34567
34721
  };
34568
- const Toolbar$1 = ({ activeTab, data, granularity, yAxisScaleType, setYAxisScaleType }) => {
34722
+ const Toolbar$1 = ({
34723
+ activeTab,
34724
+ data,
34725
+ granularity,
34726
+ yAxisScaleType,
34727
+ setYAxisScaleType,
34728
+ smoothingWindow
34729
+ }) => {
34569
34730
  return /* @__PURE__ */ u$2(k$1, { children: [
34570
34731
  activeTab !== "Table" && /* @__PURE__ */ u$2(
34571
34732
  ScalingSelector,
@@ -34583,13 +34744,21 @@ const Toolbar$1 = ({ activeTab, data, granularity, yAxisScaleType, setYAxisScale
34583
34744
  filename: "number_of_sequences_over_time.csv"
34584
34745
  }
34585
34746
  ),
34586
- /* @__PURE__ */ u$2(NumberSequencesOverTimeInfo, {}),
34747
+ /* @__PURE__ */ u$2(NumberSequencesOverTimeInfo, { granularity, smoothingWindow }),
34587
34748
  /* @__PURE__ */ u$2(Fullscreen, {})
34588
34749
  ] });
34589
34750
  };
34590
- const NumberSequencesOverTimeInfo = () => /* @__PURE__ */ u$2(Info, { children: [
34751
+ const NumberSequencesOverTimeInfo = ({
34752
+ granularity,
34753
+ smoothingWindow
34754
+ }) => /* @__PURE__ */ u$2(Info, { children: [
34591
34755
  /* @__PURE__ */ u$2(InfoHeadline1, { children: "Number of sequences over time" }),
34592
- /* @__PURE__ */ u$2(InfoParagraph, { children: /* @__PURE__ */ u$2("a", { href: "https://github.com/GenSpectrum/dashboard-components/issues/315", children: "TODO" }) })
34756
+ /* @__PURE__ */ u$2(InfoParagraph, { children: [
34757
+ "This presents the number of available sequences of a variant per ",
34758
+ /* @__PURE__ */ u$2("b", { children: granularity }),
34759
+ smoothingWindow > 0 && `, smoothed using a ${smoothingWindow}-${granularity} sliding window`,
34760
+ "."
34761
+ ] })
34593
34762
  ] });
34594
34763
  var __defProp$6 = Object.defineProperty;
34595
34764
  var __getOwnPropDesc$6 = Object.getOwnPropertyDescriptor;