@genome-spy/app 0.88.1 → 0.90.0

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.
Files changed (65) hide show
  1. package/dist/{agentApi-BIpg3JKh.js → agentApi-Z65dw-sD.js} +5976 -6711
  2. package/dist/agentApi.es.js +3580 -4470
  3. package/dist/agentShared.es.js +742 -683
  4. package/dist/{canvas2d-BVQ7-2eJ.js → canvas2d-DiPQvNtZ.js} +122 -109
  5. package/dist/{canvas2d-D7SZK3xv.js → canvas2d-t_N10CeW.js} +114 -101
  6. package/dist/{canvasSizeHelper-7h_8rOcx.js → canvasSizeHelper-foL2YvGL.js} +15 -8
  7. package/dist/{clipOptions-DTMcB_9z.js → clipOptions-B5PibDq3.js} +1610 -1342
  8. package/dist/{clipOptions-BWHr3aTa.js → clipOptions-Cba4I0AO.js} +1872 -1644
  9. package/dist/{componentStyles-FsNmIb22.js → componentStyles-DGtQXvwc.js} +17 -15
  10. package/dist/{debug-CVpoEOWx.js → debug-CVAlrcZt.js} +2 -2
  11. package/dist/{debug-DYAMZZKl.js → debug-DP4WzTNo.js} +2 -2
  12. package/dist/dialog.es.js +4 -3
  13. package/dist/esm-BiqrFjMh.js +443 -0
  14. package/dist/{esm-lwYrRdbg.js → esm-Bv7Frz7C.js} +142 -79
  15. package/dist/{esm-VvpZ9hsq.js → esm-C3A-AuRi.js} +1 -1
  16. package/dist/esm-CvpR1OcU.js +322 -0
  17. package/dist/esm-DFHFX1sH.js +1526 -0
  18. package/dist/esm-Dndm-NaA.js +1193 -0
  19. package/dist/{esm-CcDLRSvC.js → esm-DtNElqRr.js} +64 -63
  20. package/dist/esm-L53qjcYH.js +1155 -0
  21. package/dist/esm-VFJeyk9i.js +249 -0
  22. package/dist/{esm-BdLYkz-m.js → esm-_xCtpDwm.js} +1 -1
  23. package/dist/index.es.js +4203 -3910
  24. package/dist/index.js +971 -482
  25. package/dist/{indexer-CXjZDo2Q.js → indexer-DbFTKGlm.js} +1 -1
  26. package/dist/{indexer-DAH_ruVn.js → indexer-En7gpvLN.js} +1 -1
  27. package/dist/{lit-ByuJ0FJ4.js → lit-CoXp9NFX.js} +12 -10
  28. package/dist/order-BkYCnwD7.js +1062 -0
  29. package/dist/order-R043xTpC.js +1062 -0
  30. package/dist/{parquetRead-Cs2xRrvz.js → parquetRead-0hFIa3Cc.js} +532 -350
  31. package/dist/rasterExport-C_FcNBkC.js +52 -0
  32. package/dist/rasterExport-Z7gs5346.js +52 -0
  33. package/dist/rasterization-_-9JmSas.js +63 -0
  34. package/dist/rectangle-DE98gIxF.js +108 -0
  35. package/dist/{renderCanvas2D-DxturTEW.js → renderCanvas2D-DK1c9TFK.js} +68 -67
  36. package/dist/{renderCanvas2D-DtcJjqpB.js → renderCanvas2D-IM-A9DYG.js} +57 -56
  37. package/dist/schema.json +599 -116
  38. package/dist/{src-DjOlFqSn.js → src-DJtvThVC.js} +3 -5
  39. package/dist/style.css +1 -1
  40. package/dist/{svg-SDJMzL--.js → svg-DW3tfUmm.js} +339 -326
  41. package/dist/{svg-CyrLfa9e.js → svg-PabUdcDi.js} +365 -352
  42. package/dist/{svgRasterizer-f7DJ3UO0.js → svgRasterizer-B6YtWLJs.js} +6 -5
  43. package/dist/{svgRasterizer-mWK7HTkx.js → svgRasterizer-BEVDyyS3.js} +6 -5
  44. package/dist/{vega-scale-DLKCwWRs.js → vega-scale-Byaw1K8O.js} +823 -780
  45. package/dist/{vega-scale-CypF85iS.js → vega-scale-Ctz_wa3z.js} +963 -923
  46. package/dist/{viewIdentityRegistry-Dl-vMN9I.js → viewIdentityRegistry-BW415b3o.js} +1 -1
  47. package/dist/{viewIdentityRegistry-DIDo44XQ.js → viewIdentityRegistry-_F0E7nkA.js} +1 -1
  48. package/dist/{viewSelectors-CymbZyE6.js → viewSelectors-DYz-PhTO.js} +407 -340
  49. package/dist/{viewSelectors-DNiDip5e.js → viewSelectors-KtD-QSN0.js} +349 -282
  50. package/dist/{viewUtils-BrJLIj2o.js → viewUtils-BZGPseMx.js} +2052 -1871
  51. package/dist/{webgl-tZfZ8y3q.js → webgl-BKSGqHaz.js} +2144 -784
  52. package/dist/{webgl-CTJt7jQd.js → webgl-tdKf9SlZ.js} +2386 -1026
  53. package/package.json +5 -5
  54. package/dist/esm-80V4xF_D.js +0 -1098
  55. package/dist/esm-BA6yMcc-.js +0 -1222
  56. package/dist/esm-BdT7qUL-.js +0 -157
  57. package/dist/esm-CfYZhLHN.js +0 -1367
  58. package/dist/esm-D-iG_TIX.js +0 -441
  59. package/dist/esm-JAiZmFIS.js +0 -128
  60. package/dist/order-C5CzA37O.js +0 -918
  61. package/dist/order-DvY7KNcu.js +0 -918
  62. package/dist/rasterExport-BgZ98e6U.js +0 -44
  63. package/dist/rasterExport-DEr8fOLm.js +0 -44
  64. package/dist/rasterization-CFogVB3B.js +0 -50
  65. package/dist/rectangle-DKnrAmKs.js +0 -142
@@ -1,4 +1,4 @@
1
- import { o as e, s as t } from "./lit-ByuJ0FJ4.js";
1
+ import { o as e, s as t } from "./lit-CoXp9NFX.js";
2
2
  //#region ../../node_modules/@fortawesome/fontawesome-svg-core/index.mjs
3
3
  function n(e, t, n) {
4
4
  return (t = o(t)) in e ? Object.defineProperty(e, t, {
@@ -653,7 +653,7 @@ function lt(e) {
653
653
  }
654
654
  function ut(e) {
655
655
  let { transform: t, width: n = ke, height: r = ke, startCentered: i = !1 } = e, a = "";
656
- return i && v ? a += `translate(${t.x / A - n / 2}em, ${t.y / A - r / 2}em) ` : i ? a += `translate(calc(-50% + ${t.x / A}em), calc(-50% + ${t.y / A}em)) ` : a += `translate(${t.x / A}em, ${t.y / A}em) `, a += `scale(${t.size / A * (t.flipX ? -1 : 1)}, ${t.size / A * (t.flipY ? -1 : 1)}) `, a += `rotate(${t.rotate}deg) `, a;
656
+ return a += i && v ? `translate(${t.x / A - n / 2}em, ${t.y / A - r / 2}em) ` : i ? `translate(calc(-50% + ${t.x / A}em), calc(-50% + ${t.y / A}em)) ` : `translate(${t.x / A}em, ${t.y / A}em) `, a += `scale(${t.size / A * (t.flipX ? -1 : 1)}, ${t.size / A * (t.flipY ? -1 : 1)}) `, a += `rotate(${t.rotate}deg) `, a;
657
657
  }
658
658
  var dt = ":root, :host {\n --fa-font-solid: normal 900 1em/1 \"Font Awesome 6 Free\";\n --fa-font-regular: normal 400 1em/1 \"Font Awesome 6 Free\";\n --fa-font-light: normal 300 1em/1 \"Font Awesome 6 Pro\";\n --fa-font-thin: normal 100 1em/1 \"Font Awesome 6 Pro\";\n --fa-font-duotone: normal 900 1em/1 \"Font Awesome 6 Duotone\";\n --fa-font-duotone-regular: normal 400 1em/1 \"Font Awesome 6 Duotone\";\n --fa-font-duotone-light: normal 300 1em/1 \"Font Awesome 6 Duotone\";\n --fa-font-duotone-thin: normal 100 1em/1 \"Font Awesome 6 Duotone\";\n --fa-font-brands: normal 400 1em/1 \"Font Awesome 6 Brands\";\n --fa-font-sharp-solid: normal 900 1em/1 \"Font Awesome 6 Sharp\";\n --fa-font-sharp-regular: normal 400 1em/1 \"Font Awesome 6 Sharp\";\n --fa-font-sharp-light: normal 300 1em/1 \"Font Awesome 6 Sharp\";\n --fa-font-sharp-thin: normal 100 1em/1 \"Font Awesome 6 Sharp\";\n --fa-font-sharp-duotone-solid: normal 900 1em/1 \"Font Awesome 6 Sharp Duotone\";\n --fa-font-sharp-duotone-regular: normal 400 1em/1 \"Font Awesome 6 Sharp Duotone\";\n --fa-font-sharp-duotone-light: normal 300 1em/1 \"Font Awesome 6 Sharp Duotone\";\n --fa-font-sharp-duotone-thin: normal 100 1em/1 \"Font Awesome 6 Sharp Duotone\";\n}\n\nsvg:not(:root).svg-inline--fa, svg:not(:host).svg-inline--fa {\n overflow: visible;\n box-sizing: content-box;\n}\n\n.svg-inline--fa {\n display: var(--fa-display, inline-block);\n height: 1em;\n overflow: visible;\n vertical-align: -0.125em;\n}\n.svg-inline--fa.fa-2xs {\n vertical-align: 0.1em;\n}\n.svg-inline--fa.fa-xs {\n vertical-align: 0em;\n}\n.svg-inline--fa.fa-sm {\n vertical-align: -0.0714285705em;\n}\n.svg-inline--fa.fa-lg {\n vertical-align: -0.2em;\n}\n.svg-inline--fa.fa-xl {\n vertical-align: -0.25em;\n}\n.svg-inline--fa.fa-2xl {\n vertical-align: -0.3125em;\n}\n.svg-inline--fa.fa-pull-left {\n margin-right: var(--fa-pull-margin, 0.3em);\n width: auto;\n}\n.svg-inline--fa.fa-pull-right {\n margin-left: var(--fa-pull-margin, 0.3em);\n width: auto;\n}\n.svg-inline--fa.fa-li {\n width: var(--fa-li-width, 2em);\n top: 0.25em;\n}\n.svg-inline--fa.fa-fw {\n width: var(--fa-fw-width, 1.25em);\n}\n\n.fa-layers svg.svg-inline--fa {\n bottom: 0;\n left: 0;\n margin: auto;\n position: absolute;\n right: 0;\n top: 0;\n}\n\n.fa-layers-counter, .fa-layers-text {\n display: inline-block;\n position: absolute;\n text-align: center;\n}\n\n.fa-layers {\n display: inline-block;\n height: 1em;\n position: relative;\n text-align: center;\n vertical-align: -0.125em;\n width: 1em;\n}\n.fa-layers svg.svg-inline--fa {\n transform-origin: center center;\n}\n\n.fa-layers-text {\n left: 50%;\n top: 50%;\n transform: translate(-50%, -50%);\n transform-origin: center center;\n}\n\n.fa-layers-counter {\n background-color: var(--fa-counter-background-color, #ff253a);\n border-radius: var(--fa-counter-border-radius, 1em);\n box-sizing: border-box;\n color: var(--fa-inverse, #fff);\n line-height: var(--fa-counter-line-height, 1);\n max-width: var(--fa-counter-max-width, 5em);\n min-width: var(--fa-counter-min-width, 1.5em);\n overflow: hidden;\n padding: var(--fa-counter-padding, 0.25em 0.5em);\n right: var(--fa-right, 0);\n text-overflow: ellipsis;\n top: var(--fa-top, 0);\n transform: scale(var(--fa-counter-scale, 0.25));\n transform-origin: top right;\n}\n\n.fa-layers-bottom-right {\n bottom: var(--fa-bottom, 0);\n right: var(--fa-right, 0);\n top: auto;\n transform: scale(var(--fa-layers-scale, 0.25));\n transform-origin: bottom right;\n}\n\n.fa-layers-bottom-left {\n bottom: var(--fa-bottom, 0);\n left: var(--fa-left, 0);\n right: auto;\n top: auto;\n transform: scale(var(--fa-layers-scale, 0.25));\n transform-origin: bottom left;\n}\n\n.fa-layers-top-right {\n top: var(--fa-top, 0);\n right: var(--fa-right, 0);\n transform: scale(var(--fa-layers-scale, 0.25));\n transform-origin: top right;\n}\n\n.fa-layers-top-left {\n left: var(--fa-left, 0);\n right: auto;\n top: var(--fa-top, 0);\n transform: scale(var(--fa-layers-scale, 0.25));\n transform-origin: top left;\n}\n\n.fa-1x {\n font-size: 1em;\n}\n\n.fa-2x {\n font-size: 2em;\n}\n\n.fa-3x {\n font-size: 3em;\n}\n\n.fa-4x {\n font-size: 4em;\n}\n\n.fa-5x {\n font-size: 5em;\n}\n\n.fa-6x {\n font-size: 6em;\n}\n\n.fa-7x {\n font-size: 7em;\n}\n\n.fa-8x {\n font-size: 8em;\n}\n\n.fa-9x {\n font-size: 9em;\n}\n\n.fa-10x {\n font-size: 10em;\n}\n\n.fa-2xs {\n font-size: 0.625em;\n line-height: 0.1em;\n vertical-align: 0.225em;\n}\n\n.fa-xs {\n font-size: 0.75em;\n line-height: 0.0833333337em;\n vertical-align: 0.125em;\n}\n\n.fa-sm {\n font-size: 0.875em;\n line-height: 0.0714285718em;\n vertical-align: 0.0535714295em;\n}\n\n.fa-lg {\n font-size: 1.25em;\n line-height: 0.05em;\n vertical-align: -0.075em;\n}\n\n.fa-xl {\n font-size: 1.5em;\n line-height: 0.0416666682em;\n vertical-align: -0.125em;\n}\n\n.fa-2xl {\n font-size: 2em;\n line-height: 0.03125em;\n vertical-align: -0.1875em;\n}\n\n.fa-fw {\n text-align: center;\n width: 1.25em;\n}\n\n.fa-ul {\n list-style-type: none;\n margin-left: var(--fa-li-margin, 2.5em);\n padding-left: 0;\n}\n.fa-ul > li {\n position: relative;\n}\n\n.fa-li {\n left: calc(-1 * var(--fa-li-width, 2em));\n position: absolute;\n text-align: center;\n width: var(--fa-li-width, 2em);\n line-height: inherit;\n}\n\n.fa-border {\n border-color: var(--fa-border-color, #eee);\n border-radius: var(--fa-border-radius, 0.1em);\n border-style: var(--fa-border-style, solid);\n border-width: var(--fa-border-width, 0.08em);\n padding: var(--fa-border-padding, 0.2em 0.25em 0.15em);\n}\n\n.fa-pull-left {\n float: left;\n margin-right: var(--fa-pull-margin, 0.3em);\n}\n\n.fa-pull-right {\n float: right;\n margin-left: var(--fa-pull-margin, 0.3em);\n}\n\n.fa-beat {\n animation-name: fa-beat;\n animation-delay: var(--fa-animation-delay, 0s);\n animation-direction: var(--fa-animation-direction, normal);\n animation-duration: var(--fa-animation-duration, 1s);\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\n animation-timing-function: var(--fa-animation-timing, ease-in-out);\n}\n\n.fa-bounce {\n animation-name: fa-bounce;\n animation-delay: var(--fa-animation-delay, 0s);\n animation-direction: var(--fa-animation-direction, normal);\n animation-duration: var(--fa-animation-duration, 1s);\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\n animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.28, 0.84, 0.42, 1));\n}\n\n.fa-fade {\n animation-name: fa-fade;\n animation-delay: var(--fa-animation-delay, 0s);\n animation-direction: var(--fa-animation-direction, normal);\n animation-duration: var(--fa-animation-duration, 1s);\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\n animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1));\n}\n\n.fa-beat-fade {\n animation-name: fa-beat-fade;\n animation-delay: var(--fa-animation-delay, 0s);\n animation-direction: var(--fa-animation-direction, normal);\n animation-duration: var(--fa-animation-duration, 1s);\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\n animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1));\n}\n\n.fa-flip {\n animation-name: fa-flip;\n animation-delay: var(--fa-animation-delay, 0s);\n animation-direction: var(--fa-animation-direction, normal);\n animation-duration: var(--fa-animation-duration, 1s);\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\n animation-timing-function: var(--fa-animation-timing, ease-in-out);\n}\n\n.fa-shake {\n animation-name: fa-shake;\n animation-delay: var(--fa-animation-delay, 0s);\n animation-direction: var(--fa-animation-direction, normal);\n animation-duration: var(--fa-animation-duration, 1s);\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\n animation-timing-function: var(--fa-animation-timing, linear);\n}\n\n.fa-spin {\n animation-name: fa-spin;\n animation-delay: var(--fa-animation-delay, 0s);\n animation-direction: var(--fa-animation-direction, normal);\n animation-duration: var(--fa-animation-duration, 2s);\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\n animation-timing-function: var(--fa-animation-timing, linear);\n}\n\n.fa-spin-reverse {\n --fa-animation-direction: reverse;\n}\n\n.fa-pulse,\n.fa-spin-pulse {\n animation-name: fa-spin;\n animation-direction: var(--fa-animation-direction, normal);\n animation-duration: var(--fa-animation-duration, 1s);\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\n animation-timing-function: var(--fa-animation-timing, steps(8));\n}\n\n@media (prefers-reduced-motion: reduce) {\n .fa-beat,\n.fa-bounce,\n.fa-fade,\n.fa-beat-fade,\n.fa-flip,\n.fa-pulse,\n.fa-shake,\n.fa-spin,\n.fa-spin-pulse {\n animation-delay: -1ms;\n animation-duration: 1ms;\n animation-iteration-count: 1;\n transition-delay: 0s;\n transition-duration: 0s;\n }\n}\n@keyframes fa-beat {\n 0%, 90% {\n transform: scale(1);\n }\n 45% {\n transform: scale(var(--fa-beat-scale, 1.25));\n }\n}\n@keyframes fa-bounce {\n 0% {\n transform: scale(1, 1) translateY(0);\n }\n 10% {\n transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0);\n }\n 30% {\n transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em));\n }\n 50% {\n transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0);\n }\n 57% {\n transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em));\n }\n 64% {\n transform: scale(1, 1) translateY(0);\n }\n 100% {\n transform: scale(1, 1) translateY(0);\n }\n}\n@keyframes fa-fade {\n 50% {\n opacity: var(--fa-fade-opacity, 0.4);\n }\n}\n@keyframes fa-beat-fade {\n 0%, 100% {\n opacity: var(--fa-beat-fade-opacity, 0.4);\n transform: scale(1);\n }\n 50% {\n opacity: 1;\n transform: scale(var(--fa-beat-fade-scale, 1.125));\n }\n}\n@keyframes fa-flip {\n 50% {\n transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg));\n }\n}\n@keyframes fa-shake {\n 0% {\n transform: rotate(-15deg);\n }\n 4% {\n transform: rotate(15deg);\n }\n 8%, 24% {\n transform: rotate(-18deg);\n }\n 12%, 28% {\n transform: rotate(18deg);\n }\n 16% {\n transform: rotate(-22deg);\n }\n 20% {\n transform: rotate(22deg);\n }\n 32% {\n transform: rotate(-12deg);\n }\n 36% {\n transform: rotate(12deg);\n }\n 40%, 100% {\n transform: rotate(0deg);\n }\n}\n@keyframes fa-spin {\n 0% {\n transform: rotate(0deg);\n }\n 100% {\n transform: rotate(360deg);\n }\n}\n.fa-rotate-90 {\n transform: rotate(90deg);\n}\n\n.fa-rotate-180 {\n transform: rotate(180deg);\n}\n\n.fa-rotate-270 {\n transform: rotate(270deg);\n}\n\n.fa-flip-horizontal {\n transform: scale(-1, 1);\n}\n\n.fa-flip-vertical {\n transform: scale(1, -1);\n}\n\n.fa-flip-both,\n.fa-flip-horizontal.fa-flip-vertical {\n transform: scale(-1, -1);\n}\n\n.fa-rotate-by {\n transform: rotate(var(--fa-rotate-angle, 0));\n}\n\n.fa-stack {\n display: inline-block;\n vertical-align: middle;\n height: 2em;\n position: relative;\n width: 2.5em;\n}\n\n.fa-stack-1x,\n.fa-stack-2x {\n bottom: 0;\n left: 0;\n margin: auto;\n position: absolute;\n right: 0;\n top: 0;\n z-index: var(--fa-stack-z-index, auto);\n}\n\n.svg-inline--fa.fa-stack-1x {\n height: 1em;\n width: 1.25em;\n}\n.svg-inline--fa.fa-stack-2x {\n height: 2em;\n width: 2.5em;\n}\n\n.fa-inverse {\n color: var(--fa-inverse, #fff);\n}\n\n.sr-only,\n.fa-sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border-width: 0;\n}\n\n.sr-only-focusable:not(:focus),\n.fa-sr-only-focusable:not(:focus) {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border-width: 0;\n}\n\n.svg-inline--fa .fa-primary {\n fill: var(--fa-primary-color, currentColor);\n opacity: var(--fa-primary-opacity, 1);\n}\n\n.svg-inline--fa .fa-secondary {\n fill: var(--fa-secondary-color, currentColor);\n opacity: var(--fa-secondary-opacity, 0.4);\n}\n\n.svg-inline--fa.fa-swap-opacity .fa-primary {\n opacity: var(--fa-secondary-opacity, 0.4);\n}\n\n.svg-inline--fa.fa-swap-opacity .fa-secondary {\n opacity: var(--fa-primary-opacity, 1);\n}\n\n.svg-inline--fa mask .fa-primary,\n.svg-inline--fa mask .fa-secondary {\n fill: black;\n}";
659
659
  function ft() {
@@ -1193,12 +1193,14 @@ function On(e) {
1193
1193
  var Q = {
1194
1194
  replace: function(e) {
1195
1195
  let t = e[0];
1196
- if (t.parentNode) if (e[1].forEach((e) => {
1197
- t.parentNode.insertBefore(Dn(e), t);
1198
- }), t.getAttribute(w) === null && O.keepOriginalSource) {
1199
- let e = m.createComment(On(t));
1200
- t.parentNode.replaceChild(e, t);
1201
- } else t.remove();
1196
+ if (t.parentNode) {
1197
+ if (e[1].forEach((e) => {
1198
+ t.parentNode.insertBefore(Dn(e), t);
1199
+ }), t.getAttribute(w) === null && O.keepOriginalSource) {
1200
+ let e = m.createComment(On(t));
1201
+ t.parentNode.replaceChild(e, t);
1202
+ } else t.remove();
1203
+ }
1202
1204
  },
1203
1205
  nest: function(e) {
1204
1206
  let t = e[0], n = e[1];
@@ -1244,10 +1246,12 @@ function Pn(e) {
1244
1246
  if (jn) return;
1245
1247
  let i = V();
1246
1248
  N(e).forEach((e) => {
1247
- if (e.type === "childList" && e.addedNodes.length > 0 && !xn(e.addedNodes[0]) && (O.searchPseudoElements && r(e.target), t(e.target)), e.type === "attributes" && e.target.parentNode && O.searchPseudoElements && r(e.target.parentNode), e.type === "attributes" && xn(e.target) && ~Xe.indexOf(e.attributeName)) if (e.attributeName === "class" && Sn(e.target)) {
1248
- let { prefix: t, iconName: n } = U(at(e.target));
1249
- e.target.setAttribute(Pe, t || i), n && e.target.setAttribute(Fe, n);
1250
- } else Cn(e.target) && n(e.target);
1249
+ if (e.type === "childList" && e.addedNodes.length > 0 && !xn(e.addedNodes[0]) && (O.searchPseudoElements && r(e.target), t(e.target)), e.type === "attributes" && e.target.parentNode && O.searchPseudoElements && r(e.target.parentNode), e.type === "attributes" && xn(e.target) && ~Xe.indexOf(e.attributeName)) {
1250
+ if (e.attributeName === "class" && Sn(e.target)) {
1251
+ let { prefix: t, iconName: n } = U(at(e.target));
1252
+ e.target.setAttribute(Pe, t || i), n && e.target.setAttribute(Fe, n);
1253
+ } else Cn(e.target) && n(e.target);
1254
+ }
1251
1255
  });
1252
1256
  }), _ && $.observe(i, {
1253
1257
  childList: !0,
@@ -1655,9 +1659,7 @@ var lr = {
1655
1659
  case "down":
1656
1660
  e.y += i;
1657
1661
  break;
1658
- case "rotate":
1659
- e.rotate += i;
1660
- break;
1662
+ case "rotate": e.rotate += i;
1661
1663
  }
1662
1664
  return e;
1663
1665
  }, {
@@ -1,6 +1,6 @@
1
- import { b as e, i as t } from "./viewSelectors-CymbZyE6.js";
1
+ import { b as e, i as t } from "./viewSelectors-DYz-PhTO.js";
2
2
  import { t as n } from "./metadataChannels-DV62inJh.js";
3
- import { n as r, t as i } from "./viewIdentityRegistry-DIDo44XQ.js";
3
+ import { n as r, t as i } from "./viewIdentityRegistry-_F0E7nkA.js";
4
4
  //#region ../core/src/debug/valuePreview.js
5
5
  var a = 3, o = 12, s = 8, c = 160;
6
6
  function l(e, t = 0) {
@@ -1,5 +1,5 @@
1
- import { a as e, x as t } from "./viewSelectors-DNiDip5e.js";
2
- import { i as n, n as r, t as i } from "./viewIdentityRegistry-Dl-vMN9I.js";
1
+ import { a as e, x as t } from "./viewSelectors-KtD-QSN0.js";
2
+ import { i as n, n as r, t as i } from "./viewIdentityRegistry-BW415b3o.js";
3
3
  //#region ../core/src/debug/valuePreview.js
4
4
  var a = 3, o = 12, s = 8, c = 160;
5
5
  function l(e, t = 0) {
package/dist/dialog.es.js CHANGED
@@ -1,5 +1,5 @@
1
- import { a as e, n as t, o as n, t as r } from "./lit-ByuJ0FJ4.js";
2
- import { n as i, r as a, t as o } from "./componentStyles-FsNmIb22.js";
1
+ import { a as e, n as t, o as n, t as r } from "./lit-CoXp9NFX.js";
2
+ import { n as i, r as a, t as o } from "./componentStyles-DGtQXvwc.js";
3
3
  //#region src/components/generic/baseDialog.js
4
4
  var s = /* @__PURE__ */ new Set([
5
5
  "text",
@@ -364,7 +364,8 @@ var p = {
364
364
  ${n ? e`<div class="icon">${a(n).node[0]}</div>` : t}
365
365
  <div class="message">${this.message}</div>
366
366
  </div>`;
367
- } else return e`${this.message}`;
367
+ }
368
+ return e`${this.message}`;
368
369
  }
369
370
  };
370
371
  customElements.define("gs-message-dialog", m);
@@ -0,0 +1,443 @@
1
+ import { i as e, n as t } from "./esm-Dndm-NaA.js";
2
+ import { n } from "./esm-VFJeyk9i.js";
3
+ //#endregion
4
+ //#region ../../node_modules/@gmod/bgzf-filehandle/esm/long.js
5
+ function r(e, t = 0) {
6
+ let n = e.getUint32(t, !0);
7
+ return e.getUint32(t + 4, !0) * 4294967296 + n;
8
+ }
9
+ //#endregion
10
+ //#region ../../node_modules/@gmod/bgzf-filehandle/esm/gziIndex.js
11
+ var i = 16, a = {
12
+ compressed: /* @__PURE__ */ new Float64Array(),
13
+ uncompressed: /* @__PURE__ */ new Float64Array()
14
+ };
15
+ function o(e, t) {
16
+ let n = new Float64Array(t + 1), a = new Float64Array(t + 1), o = new DataView(e.buffer, e.byteOffset, e.byteLength);
17
+ for (let e = 0; e < t; e += 1) {
18
+ let t = e * i;
19
+ n[e + 1] = r(o, t), a[e + 1] = r(o, t + 8);
20
+ }
21
+ return {
22
+ compressed: n,
23
+ uncompressed: a
24
+ };
25
+ }
26
+ function s(e, t) {
27
+ let n = 0, r = e.length;
28
+ for (; n < r;) {
29
+ let i = n + r >>> 1;
30
+ e[i] <= t ? n = i + 1 : r = i;
31
+ }
32
+ return n;
33
+ }
34
+ var c = class {
35
+ filehandle;
36
+ index;
37
+ constructor({ filehandle: e }) {
38
+ this.filehandle = e;
39
+ }
40
+ _getIndex() {
41
+ return this.index ||= this._readIndex().catch((e) => {
42
+ throw this.index = void 0, e;
43
+ }), this.index;
44
+ }
45
+ async _readIndex() {
46
+ let e = await this.filehandle.read(8, 0), t = r(new DataView(e.buffer, e.byteOffset, e.byteLength));
47
+ if (t === 0) return o(/* @__PURE__ */ new Uint8Array(), 0);
48
+ if (t > (2 ** 53 - 1) / i) throw TypeError("integer overflow");
49
+ return o(await this.filehandle.read(i * t, 8), t);
50
+ }
51
+ async getRelevantBlocksForRead(e, t) {
52
+ if (e === 0) return {
53
+ ...a,
54
+ nextCompressedPosition: void 0
55
+ };
56
+ let { compressed: n, uncompressed: r } = await this._getIndex(), i = s(r, t) - 1, o = s(r, t + e - 1);
57
+ return {
58
+ compressed: n.subarray(i, o),
59
+ uncompressed: r.subarray(i, o),
60
+ nextCompressedPosition: o < n.length ? n[o] : void 0
61
+ };
62
+ }
63
+ }, l = 10, u = 33554432;
64
+ function d(e) {
65
+ let t = 0, n = [], r = () => {
66
+ t--, n.shift()?.();
67
+ };
68
+ return async (i) => {
69
+ t >= e && await new Promise((e) => {
70
+ n.push(e);
71
+ }), t++;
72
+ try {
73
+ return await i();
74
+ } finally {
75
+ r();
76
+ }
77
+ };
78
+ }
79
+ function f(e, t, n) {
80
+ let r = [], i = e.length, a = 0;
81
+ for (; a < i;) {
82
+ let o = a + 1;
83
+ for (; o < i && t[o] - t[a] < u;) o += 1;
84
+ r.push({
85
+ compressedStart: e[a],
86
+ compressedEnd: o < i ? e[o] : n ?? e[i - 1] + 65536,
87
+ uncompressedStart: t[a]
88
+ }), a = o;
89
+ }
90
+ return r;
91
+ }
92
+ function p(e, t, n, r) {
93
+ let i = Math.max(0, n - t), a = Math.min(r, t + e.length) - t;
94
+ return i < e.length ? e.subarray(i, a) : /* @__PURE__ */ new Uint8Array();
95
+ }
96
+ var m = class {
97
+ filehandle;
98
+ gzi;
99
+ limit;
100
+ constructor({ filehandle: e, gziFilehandle: t, blockConcurrency: n = l }) {
101
+ this.filehandle = e, this.gzi = new c({ filehandle: t }), this.limit = d(n);
102
+ }
103
+ async read(n, r) {
104
+ let { compressed: i, uncompressed: a, nextCompressedPosition: o } = await this.gzi.getRelevantBlocksForRead(n, r);
105
+ if (i.length === 0) return /* @__PURE__ */ new Uint8Array();
106
+ let s = r + n, c = f(i, a, o), l = await Promise.all(c.map((e) => this.limit(async () => {
107
+ let n = await this.filehandle.read(e.compressedEnd - e.compressedStart, e.compressedStart);
108
+ return p(await t(n), e.uncompressedStart, r, s);
109
+ })));
110
+ return e(l);
111
+ }
112
+ }, h = new TextDecoder("utf8");
113
+ function g(e) {
114
+ return e.split(">").filter((e) => /\S/.test(e)).map((e) => {
115
+ let [t, ...n] = e.split("\n"), [r, ...i] = t.split(" "), a = n.join("").replace(/\s/g, "");
116
+ return {
117
+ id: r,
118
+ description: i.join(" "),
119
+ sequence: a
120
+ };
121
+ });
122
+ }
123
+ var _ = class {
124
+ data;
125
+ indexed;
126
+ constructor({ fasta: e, path: t }) {
127
+ let r;
128
+ if (e) r = e;
129
+ else if (t) r = new n(t);
130
+ else throw Error("Need to pass fasta or path");
131
+ this.data = r.readFile().then((e) => g(h.decode(e)));
132
+ }
133
+ getIndexed() {
134
+ return this.indexed ??= this.data.then((e) => new Map(e.map((e) => [e.id, e]))), this.indexed;
135
+ }
136
+ async fetch(e, t, n) {
137
+ let r = (await this.getIndexed()).get(e);
138
+ if (!r) throw Error(`no sequence with id ${e} exists`);
139
+ return r.sequence.slice(t, n);
140
+ }
141
+ async getSequenceNames() {
142
+ return (await this.data).map((e) => e.id);
143
+ }
144
+ };
145
+ //#endregion
146
+ //#region ../../node_modules/@gmod/shared-read-cache/esm/throwIfAborted.js
147
+ function v(e) {
148
+ if (e?.aborted) throw y(e);
149
+ }
150
+ function y(e) {
151
+ let t = e.reason;
152
+ return t === void 0 ? new DOMException("This operation was aborted", "AbortError") : t;
153
+ }
154
+ //#endregion
155
+ //#region ../../node_modules/@gmod/shared-read-cache/esm/SharedReadCache.js
156
+ function b(e) {
157
+ typeof e == "object" && e && "unref" in e && typeof e.unref == "function" && e.unref();
158
+ }
159
+ var x = class {
160
+ entries = /* @__PURE__ */ new Map();
161
+ total = 0;
162
+ settledCount = 0;
163
+ limit;
164
+ budget;
165
+ membership;
166
+ fill;
167
+ sizeOf;
168
+ toCacheKey;
169
+ evictionPolicy;
170
+ pending = 0;
171
+ batch = 0;
172
+ idleTimeoutMs;
173
+ sweepTimer;
174
+ constructor({ fill: e, maxSize: t = Infinity, sizeOf: n = () => 1, cacheKey: r = (e) => String(e), evictionPolicy: i = "lru", idleTimeoutMs: a = 0, budget: o } = {}) {
175
+ this.fill = e, this.evictionPolicy = i, this.limit = t, this.budget = o, this.membership = o?.register(this), this.sizeOf = n, this.toCacheKey = r, this.idleTimeoutMs = a > 0 ? a : void 0;
176
+ }
177
+ get size() {
178
+ return this.entries.size;
179
+ }
180
+ get totalSize() {
181
+ return this.total;
182
+ }
183
+ get maxSize() {
184
+ return this.limit;
185
+ }
186
+ set maxSize(e) {
187
+ this.limit = e, this.evict();
188
+ }
189
+ waiterCount(e) {
190
+ return this.entries.get(this.toCacheKey(e))?.signals.size ?? 0;
191
+ }
192
+ async get(e, t, n) {
193
+ v(t);
194
+ let r = this.toCacheKey(e), i = this.entries.get(r);
195
+ i && (this.isDoomed(i) ? (this.deleteKey(r), i = void 0) : this.touch(r, i)), i ??= this.start(r, e, n), i.settled || this.join(i, t);
196
+ try {
197
+ let e = await this.settleFor(i, t);
198
+ return v(t), e;
199
+ } catch (e) {
200
+ throw v(t), e;
201
+ }
202
+ }
203
+ settleFor(e, t) {
204
+ if (e.settled || t === void 0 || typeof t.addEventListener != "function") return e.promise;
205
+ let n = new AbortController();
206
+ return Promise.race([e.promise, new Promise((e, r) => {
207
+ t.addEventListener("abort", () => {
208
+ r(y(t));
209
+ }, {
210
+ once: !0,
211
+ signal: n.signal
212
+ });
213
+ })]).finally(() => {
214
+ n.abort();
215
+ });
216
+ }
217
+ getIfCached(e) {
218
+ let t = this.toCacheKey(e), n = this.entries.get(t);
219
+ if (n) {
220
+ if (this.isDoomed(n)) {
221
+ this.deleteKey(t);
222
+ return;
223
+ }
224
+ return this.touch(t, n), n.promise;
225
+ }
226
+ }
227
+ has(e) {
228
+ let t = this.entries.get(this.toCacheKey(e));
229
+ return t !== void 0 && !this.isDoomed(t);
230
+ }
231
+ delete(e) {
232
+ this.deleteKey(this.toCacheKey(e));
233
+ }
234
+ clear() {
235
+ for (let e of this.entries.values()) this.detach(e);
236
+ this.entries.clear(), this.charge(-this.total), this.total = 0, this.settledCount = 0, this.stopSweep();
237
+ }
238
+ touch(e, t) {
239
+ this.entries.delete(e), this.entries.set(e, t), t.batch = this.batch, t.lastTouched = Date.now(), t.seq = this.stamp();
240
+ }
241
+ stamp() {
242
+ return this.budget ? this.budget.nextSeq() : 0;
243
+ }
244
+ isDoomed(e) {
245
+ return !e.settled && e.controller.signal.aborted;
246
+ }
247
+ sweepIdle() {
248
+ let e = this.idleTimeoutMs;
249
+ if (e === void 0) return;
250
+ let t = Date.now() - e, n = 0;
251
+ for (let [e, r] of this.entries) r.settled && (r.lastTouched <= t ? this.deleteKey(e) : n++);
252
+ n === 0 && this.stopSweep();
253
+ }
254
+ startSweep() {
255
+ let e = this.idleTimeoutMs;
256
+ if (e === void 0 || this.sweepTimer !== void 0) return;
257
+ let t = Math.max(1e3, Math.floor(e / 4));
258
+ this.sweepTimer = setInterval(() => {
259
+ this.sweepIdle();
260
+ }, t), b(this.sweepTimer);
261
+ }
262
+ stopSweep() {
263
+ this.sweepTimer !== void 0 && (clearInterval(this.sweepTimer), this.sweepTimer = void 0);
264
+ }
265
+ start(e, t, n) {
266
+ let r = n ?? (this.fill && ((e) => this.fill(t, e)));
267
+ if (!r) throw Error("SharedReadCache needs a fill, either on the cache or on the get() call");
268
+ let i = new AbortController(), a = {
269
+ promise: r(i.signal),
270
+ signals: /* @__PURE__ */ new Set(),
271
+ pinned: !1,
272
+ controller: i,
273
+ dispose: new AbortController(),
274
+ settled: !1,
275
+ counted: !0,
276
+ size: 0,
277
+ batch: this.batch,
278
+ lastTouched: Date.now(),
279
+ seq: this.stamp()
280
+ };
281
+ this.entries.set(e, a), this.pending++;
282
+ let o = () => {
283
+ a.settled = !0, this.detach(a), a.dispose.abort(), a.signals.clear();
284
+ };
285
+ return a.promise.then((t) => {
286
+ if (o(), this.entries.get(e) === a) {
287
+ let n = this.weigh(t);
288
+ n === void 0 ? this.entries.delete(e) : (a.lastTouched = Date.now(), this.settledCount++, a.size = n, this.total += n, this.charge(n), this.startSweep());
289
+ }
290
+ this.maybeEvict();
291
+ }, () => {
292
+ this.entries.get(e) === a && this.deleteKey(e), o(), this.maybeEvict();
293
+ }), a;
294
+ }
295
+ weigh(e) {
296
+ try {
297
+ let t = this.sizeOf(e);
298
+ return Number.isFinite(t) && t >= 0 ? t : void 0;
299
+ } catch {
300
+ return;
301
+ }
302
+ }
303
+ join(e, t) {
304
+ t === void 0 ? e.pinned = !0 : t.aborted ? !e.pinned && e.signals.size === 0 && e.controller.abort(t.reason) : typeof t.addEventListener == "function" ? e.signals.has(t) || (e.signals.add(t), t.addEventListener("abort", () => {
305
+ e.signals.delete(t), !e.pinned && e.signals.size === 0 && (e.controller.abort(t.reason), this.detach(e));
306
+ }, {
307
+ once: !0,
308
+ signal: e.dispose.signal
309
+ })) : e.pinned = !0;
310
+ }
311
+ deleteKey(e) {
312
+ let t = this.entries.get(e);
313
+ t && (this.entries.delete(e), this.detach(t), t.settled && this.settledCount--, this.total -= t.size, this.charge(-t.size));
314
+ }
315
+ detach(e) {
316
+ e.counted && (e.counted = !1, this.pending--);
317
+ }
318
+ charge(e) {
319
+ this.budget && this.membership && this.budget.charge(this.membership, e);
320
+ }
321
+ lruSpare() {
322
+ if (!(this.settledCount <= 1)) {
323
+ for (let [e, t] of this.entries) if (t.settled) return {
324
+ cacheKey: e,
325
+ seq: t.seq
326
+ };
327
+ }
328
+ }
329
+ release(e) {
330
+ this.deleteKey(e);
331
+ }
332
+ maybeEvict() {
333
+ (this.evictionPolicy === "lru" || this.pending === 0) && (this.evict(), this.evictionPolicy === "batch" && this.batch++, this.budget?.evict());
334
+ }
335
+ evict() {
336
+ if (this.limit !== Infinity) {
337
+ if (this.evictionPolicy === "batch") {
338
+ for (let [e, t] of this.entries) {
339
+ if (this.total <= this.limit) break;
340
+ t.batch !== this.batch && t.settled && this.deleteKey(e);
341
+ }
342
+ return;
343
+ }
344
+ if (!(this.total <= this.limit)) for (let [e, t] of this.entries) {
345
+ if (this.total <= this.limit || this.settledCount <= 1) break;
346
+ t.settled && this.deleteKey(e);
347
+ }
348
+ }
349
+ }
350
+ }, S = new TextDecoder("utf8");
351
+ function C(e, t, n, r) {
352
+ return e + t * Math.floor(r / n) + r % n;
353
+ }
354
+ async function w(e, t = {}) {
355
+ let n = S.decode(await e.readFile(t)), r = /* @__PURE__ */ new Map();
356
+ for (let e of n.split("\n")) {
357
+ let t = e.trim();
358
+ if (!t) continue;
359
+ let n = t.split(" ");
360
+ if (n.length < 5) throw Error(`Malformed FAI line (expected 5 tab-separated columns, got ${String(n.length)}): ${t}`);
361
+ let [i, a, o, s, c] = n;
362
+ if (i.startsWith(">")) throw Error("found > in sequence name, might have supplied FASTA file for the FASTA index");
363
+ let l = +a, u = +s;
364
+ if (l > 0 && u === 0) throw Error(`Invalid FAI index for "${i}": LINEBASES is 0, FASTA likely missing trailing newline; regenerate the .fai index`);
365
+ r.set(i, {
366
+ length: l,
367
+ offset: +o,
368
+ lineLength: u,
369
+ lineBytes: +c
370
+ });
371
+ }
372
+ return r;
373
+ }
374
+ async function T(e, t, n = 0, r, i) {
375
+ if (n < 0) throw TypeError("regionStart cannot be less than 0");
376
+ let a = Math.min(r ?? t.length, t.length);
377
+ if (n >= a) return "";
378
+ let o = C(t.offset, t.lineBytes, t.lineLength, n), s = C(t.offset, t.lineBytes, t.lineLength, a) - o, c = S.decode(await e.read(s, o, i)).replace(/\s+/g, "");
379
+ if (/[^\x20-\x7e]/.test(c.slice(0, 1e3))) throw Error("Non-ASCII bytes in sequence; file may be gzip — use BgzipIndexedFasta or decompress");
380
+ return c;
381
+ }
382
+ var E = class {
383
+ fasta;
384
+ fai;
385
+ indexCache = new x({});
386
+ constructor({ fasta: e, fai: t, path: r, faiPath: i }) {
387
+ if (e) this.fasta = e;
388
+ else if (r) this.fasta = new n(r);
389
+ else throw Error("Need to pass filehandle for fasta or path to localfile");
390
+ if (t) this.fai = t;
391
+ else if (i) this.fai = new n(i);
392
+ else if (r) this.fai = new n(`${r}.fai`);
393
+ else throw Error("Need to pass filehandle for fai or path to localfile");
394
+ }
395
+ getIndexes(e) {
396
+ return this.indexCache.get("fai", e?.signal, (t) => w(this.fai, {
397
+ ...e,
398
+ signal: t
399
+ }));
400
+ }
401
+ async getSequenceNames(e) {
402
+ return [...(await this.getIndexes(e)).keys()];
403
+ }
404
+ async getSequenceSizes(e) {
405
+ let t = {};
406
+ for (let [n, r] of await this.getIndexes(e)) t[n] = r.length;
407
+ return t;
408
+ }
409
+ async getSequenceSize(e, t) {
410
+ return (await this.getIndexes(t)).get(e)?.length;
411
+ }
412
+ async hasReferenceSequence(e, t) {
413
+ return (await this.getIndexes(t)).has(e);
414
+ }
415
+ async getResiduesByName(e, t, n, r) {
416
+ let i = (await this.getIndexes(r)).get(e);
417
+ if (i !== void 0) return T(this.fasta, i, t, n, r);
418
+ }
419
+ async getSequence(e, t, n, r) {
420
+ return this.getResiduesByName(e, t, n, r);
421
+ }
422
+ }, D = class extends E {
423
+ constructor({ fasta: e, path: t, fai: r, faiPath: i, gzi: a, gziPath: o }) {
424
+ let s;
425
+ if (e && a) s = new m({
426
+ filehandle: e,
427
+ gziFilehandle: a
428
+ });
429
+ else if (t && o) s = new m({
430
+ filehandle: new n(t),
431
+ gziFilehandle: new n(o)
432
+ });
433
+ else throw Error("BgzipIndexedFasta requires either {fasta, gzi} or {path, gziPath}");
434
+ super({
435
+ fasta: s,
436
+ fai: r,
437
+ faiPath: i,
438
+ path: t
439
+ });
440
+ }
441
+ };
442
+ //#endregion
443
+ export { D as BgzipIndexedFasta, _ as FetchableSmallFasta, E as IndexedFasta, g as parseSmallFasta };