@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.
- package/dist/{agentApi-BIpg3JKh.js → agentApi-Z65dw-sD.js} +5976 -6711
- package/dist/agentApi.es.js +3580 -4470
- package/dist/agentShared.es.js +742 -683
- package/dist/{canvas2d-BVQ7-2eJ.js → canvas2d-DiPQvNtZ.js} +122 -109
- package/dist/{canvas2d-D7SZK3xv.js → canvas2d-t_N10CeW.js} +114 -101
- package/dist/{canvasSizeHelper-7h_8rOcx.js → canvasSizeHelper-foL2YvGL.js} +15 -8
- package/dist/{clipOptions-DTMcB_9z.js → clipOptions-B5PibDq3.js} +1610 -1342
- package/dist/{clipOptions-BWHr3aTa.js → clipOptions-Cba4I0AO.js} +1872 -1644
- package/dist/{componentStyles-FsNmIb22.js → componentStyles-DGtQXvwc.js} +17 -15
- package/dist/{debug-CVpoEOWx.js → debug-CVAlrcZt.js} +2 -2
- package/dist/{debug-DYAMZZKl.js → debug-DP4WzTNo.js} +2 -2
- package/dist/dialog.es.js +4 -3
- package/dist/esm-BiqrFjMh.js +443 -0
- package/dist/{esm-lwYrRdbg.js → esm-Bv7Frz7C.js} +142 -79
- package/dist/{esm-VvpZ9hsq.js → esm-C3A-AuRi.js} +1 -1
- package/dist/esm-CvpR1OcU.js +322 -0
- package/dist/esm-DFHFX1sH.js +1526 -0
- package/dist/esm-Dndm-NaA.js +1193 -0
- package/dist/{esm-CcDLRSvC.js → esm-DtNElqRr.js} +64 -63
- package/dist/esm-L53qjcYH.js +1155 -0
- package/dist/esm-VFJeyk9i.js +249 -0
- package/dist/{esm-BdLYkz-m.js → esm-_xCtpDwm.js} +1 -1
- package/dist/index.es.js +4203 -3910
- package/dist/index.js +971 -482
- package/dist/{indexer-CXjZDo2Q.js → indexer-DbFTKGlm.js} +1 -1
- package/dist/{indexer-DAH_ruVn.js → indexer-En7gpvLN.js} +1 -1
- package/dist/{lit-ByuJ0FJ4.js → lit-CoXp9NFX.js} +12 -10
- package/dist/order-BkYCnwD7.js +1062 -0
- package/dist/order-R043xTpC.js +1062 -0
- package/dist/{parquetRead-Cs2xRrvz.js → parquetRead-0hFIa3Cc.js} +532 -350
- package/dist/rasterExport-C_FcNBkC.js +52 -0
- package/dist/rasterExport-Z7gs5346.js +52 -0
- package/dist/rasterization-_-9JmSas.js +63 -0
- package/dist/rectangle-DE98gIxF.js +108 -0
- package/dist/{renderCanvas2D-DxturTEW.js → renderCanvas2D-DK1c9TFK.js} +68 -67
- package/dist/{renderCanvas2D-DtcJjqpB.js → renderCanvas2D-IM-A9DYG.js} +57 -56
- package/dist/schema.json +599 -116
- package/dist/{src-DjOlFqSn.js → src-DJtvThVC.js} +3 -5
- package/dist/style.css +1 -1
- package/dist/{svg-SDJMzL--.js → svg-DW3tfUmm.js} +339 -326
- package/dist/{svg-CyrLfa9e.js → svg-PabUdcDi.js} +365 -352
- package/dist/{svgRasterizer-f7DJ3UO0.js → svgRasterizer-B6YtWLJs.js} +6 -5
- package/dist/{svgRasterizer-mWK7HTkx.js → svgRasterizer-BEVDyyS3.js} +6 -5
- package/dist/{vega-scale-DLKCwWRs.js → vega-scale-Byaw1K8O.js} +823 -780
- package/dist/{vega-scale-CypF85iS.js → vega-scale-Ctz_wa3z.js} +963 -923
- package/dist/{viewIdentityRegistry-Dl-vMN9I.js → viewIdentityRegistry-BW415b3o.js} +1 -1
- package/dist/{viewIdentityRegistry-DIDo44XQ.js → viewIdentityRegistry-_F0E7nkA.js} +1 -1
- package/dist/{viewSelectors-CymbZyE6.js → viewSelectors-DYz-PhTO.js} +407 -340
- package/dist/{viewSelectors-DNiDip5e.js → viewSelectors-KtD-QSN0.js} +349 -282
- package/dist/{viewUtils-BrJLIj2o.js → viewUtils-BZGPseMx.js} +2052 -1871
- package/dist/{webgl-tZfZ8y3q.js → webgl-BKSGqHaz.js} +2144 -784
- package/dist/{webgl-CTJt7jQd.js → webgl-tdKf9SlZ.js} +2386 -1026
- package/package.json +5 -5
- package/dist/esm-80V4xF_D.js +0 -1098
- package/dist/esm-BA6yMcc-.js +0 -1222
- package/dist/esm-BdT7qUL-.js +0 -157
- package/dist/esm-CfYZhLHN.js +0 -1367
- package/dist/esm-D-iG_TIX.js +0 -441
- package/dist/esm-JAiZmFIS.js +0 -128
- package/dist/order-C5CzA37O.js +0 -918
- package/dist/order-DvY7KNcu.js +0 -918
- package/dist/rasterExport-BgZ98e6U.js +0 -44
- package/dist/rasterExport-DEr8fOLm.js +0 -44
- package/dist/rasterization-CFogVB3B.js +0 -50
- package/dist/rectangle-DKnrAmKs.js +0 -142
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { o as e, s as t } from "./lit-
|
|
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 ?
|
|
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)
|
|
1197
|
-
|
|
1198
|
-
|
|
1199
|
-
|
|
1200
|
-
|
|
1201
|
-
|
|
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))
|
|
1248
|
-
|
|
1249
|
-
|
|
1250
|
-
|
|
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-
|
|
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-
|
|
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-
|
|
2
|
-
import { i as n, n as r, t as i } from "./viewIdentityRegistry-
|
|
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-
|
|
2
|
-
import { n as i, r as a, t as o } from "./componentStyles-
|
|
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
|
-
}
|
|
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 };
|