@genome-spy/app 0.51.0 → 0.53.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.
@@ -1,4 +1,4 @@
1
- import { b as Pi } from "./index-C8lYPtq_.js";
1
+ import { b as Pi } from "./index-B5cesONJ.js";
2
2
  import { g as Da } from "./_commonjsHelpers-BIiJCwQW.js";
3
3
  var re = {};
4
4
  (function(e) {
@@ -177,7 +177,7 @@ function aa(e) {
177
177
  e.bi_valid > 8 ? Ye(e, e.bi_buf) : e.bi_valid > 0 && (e.pending_buf[e.pending++] = e.bi_buf), e.bi_buf = 0, e.bi_valid = 0;
178
178
  }
179
179
  function Wa(e, i, t, a) {
180
- aa(e), a && (Ye(e, t), Ye(e, ~t)), Ra.arraySet(e.pending_buf, e.window, i, t, e.pending), e.pending += t;
180
+ aa(e), Ye(e, t), Ye(e, ~t), Ra.arraySet(e.pending_buf, e.window, i, t, e.pending), e.pending += t;
181
181
  }
182
182
  function Jt(e, i, t, a) {
183
183
  var r = i * 2, n = t * 2;
@@ -282,7 +282,7 @@ function Qa(e) {
282
282
  ii || (Ga(), ii = !0), e.l_desc = new xt(e.dyn_ltree, ji), e.d_desc = new xt(e.dyn_dtree, Vi), e.bl_desc = new xt(e.bl_tree, Ji), e.bi_buf = 0, e.bi_valid = 0, ia(e);
283
283
  }
284
284
  function na(e, i, t, a) {
285
- C(e, (Ua << 1) + (a ? 1 : 0), 3), Wa(e, i, t, !0);
285
+ C(e, (Ua << 1) + (a ? 1 : 0), 3), Wa(e, i, t);
286
286
  }
287
287
  function en(e) {
288
288
  C(e, Ki << 1, 3), ee(e, Ht, ne), Xa(e);
@@ -560,7 +560,7 @@ function ua(e, i, t, a, r, n) {
560
560
  return ue(e, X);
561
561
  a === 8 && (a = 9);
562
562
  var f = new Ln();
563
- return e.state = f, f.strm = e, f.wrap = h, f.gzhead = null, f.w_bits = a, f.w_size = 1 << f.w_bits, f.w_mask = f.w_size - 1, f.hash_bits = r + 7, f.hash_size = 1 << f.hash_bits, f.hash_mask = f.hash_size - 1, f.hash_shift = ~~((f.hash_bits + S - 1) / S), f.window = new B.Buf8(f.w_size * 2), f.head = new B.Buf16(f.hash_size), f.prev = new B.Buf16(f.w_size), f.lit_bufsize = 1 << r + 6, f.pending_buf_size = f.lit_bufsize * 4, f.pending_buf = new B.Buf8(f.pending_buf_size), f.d_buf = 1 * f.lit_bufsize, f.l_buf = (1 + 2) * f.lit_bufsize, f.level = i, f.strategy = n, f.method = t, _a(e);
563
+ return e.state = f, f.strm = e, f.wrap = h, f.gzhead = null, f.w_bits = a, f.w_size = 1 << f.w_bits, f.w_mask = f.w_size - 1, f.hash_bits = r + 7, f.hash_size = 1 << f.hash_bits, f.hash_mask = f.hash_size - 1, f.hash_shift = ~~((f.hash_bits + S - 1) / S), f.window = new B.Buf8(f.w_size * 2), f.head = new B.Buf16(f.hash_size), f.prev = new B.Buf16(f.w_size), f.lit_bufsize = 1 << r + 6, f.pending_buf_size = f.lit_bufsize * 4, f.pending_buf = new B.Buf8(f.pending_buf_size), f.d_buf = 1 * f.lit_bufsize, f.l_buf = 3 * f.lit_bufsize, f.level = i, f.strategy = n, f.method = t, _a(e);
564
564
  }
565
565
  function Rn(e, i) {
566
566
  return ua(e, i, vt, pn, xn, gn);
@@ -1036,7 +1036,7 @@ var je = {}, j = {}, it = 30, Gn = 12, Wn = function(i, t) {
1036
1036
  if (i === ui ? (m = Je = f, x = 19) : i === mt ? (m = jn, I -= 257, Je = Vn, Gt -= 257, x = 256) : (m = Jn, Je = Qn, x = -1), z = 0, v = 0, o = d, p = h, w = g, k = 0, T = -1, N = 1 << g, y = N - 1, i === mt && N > oi || i === di && N > _i)
1037
1037
  return 1;
1038
1038
  for (; ; ) {
1039
- Wt = o - k, f[v] < x ? (Qe = 0, et = f[v]) : f[v] > x ? (Qe = Je[Gt + f[v]], et = m[I + f[v]]) : (Qe = 32 + 64, et = 0), E = 1 << o - k, c = 1 << w, d = c;
1039
+ Wt = o - k, f[v] < x ? (Qe = 0, et = f[v]) : f[v] > x ? (Qe = Je[Gt + f[v]], et = m[I + f[v]]) : (Qe = 96, et = 0), E = 1 << o - k, c = 1 << w, d = c;
1040
1040
  do
1041
1041
  c -= E, n[p + (z >> k) + c] = Wt << 24 | Qe << 16 | et | 0;
1042
1042
  while (c !== 0);
@@ -0,0 +1,90 @@
1
+ import { b as d } from "./index-B5cesONJ.js";
2
+ class b {
3
+ async getBufferFromResponse(e) {
4
+ const t = await e.arrayBuffer();
5
+ return d.Buffer.from(t);
6
+ }
7
+ constructor(e, t = {}) {
8
+ this.baseOverrides = {}, this.url = e;
9
+ const r = t.fetch || globalThis.fetch.bind(globalThis);
10
+ if (!r)
11
+ throw new TypeError("no fetch function supplied, and none found in global environment");
12
+ t.overrides && (this.baseOverrides = t.overrides), this.fetchImplementation = r;
13
+ }
14
+ async fetch(e, t) {
15
+ let r;
16
+ try {
17
+ r = await this.fetchImplementation(e, t);
18
+ } catch (s) {
19
+ if (`${s}`.includes("Failed to fetch"))
20
+ console.warn(`generic-filehandle: refetching ${e} to attempt to work around chrome CORS header caching bug`), r = await this.fetchImplementation(e, {
21
+ ...t,
22
+ cache: "reload"
23
+ });
24
+ else
25
+ throw s;
26
+ }
27
+ return r;
28
+ }
29
+ async read(e, t = 0, r, s = 0, h = {}) {
30
+ const { headers: n = {}, signal: c, overrides: a = {} } = h;
31
+ r < 1 / 0 ? n.range = `bytes=${s}-${s + r}` : r === 1 / 0 && s !== 0 && (n.range = `bytes=${s}-`);
32
+ const l = {
33
+ ...this.baseOverrides,
34
+ ...a,
35
+ headers: {
36
+ ...n,
37
+ ...a.headers,
38
+ ...this.baseOverrides.headers
39
+ },
40
+ method: "GET",
41
+ redirect: "follow",
42
+ mode: "cors",
43
+ signal: c
44
+ }, i = await this.fetch(this.url, l);
45
+ if (!i.ok)
46
+ throw new Error(`HTTP ${i.status} ${i.statusText} ${this.url}`);
47
+ if (i.status === 200 && s === 0 || i.status === 206) {
48
+ const f = await this.getBufferFromResponse(i), u = f.copy(e, t, 0, Math.min(r, f.length)), w = i.headers.get("content-range"), o = /\/(\d+)$/.exec(w || "");
49
+ return o != null && o[1] && (this._stat = { size: parseInt(o[1], 10) }), { bytesRead: u, buffer: e };
50
+ }
51
+ throw i.status === 200 ? new Error("${this.url} fetch returned status 200, expected 206") : new Error(`HTTP ${i.status} fetching ${this.url}`);
52
+ }
53
+ async readFile(e = {}) {
54
+ let t, r;
55
+ typeof e == "string" ? (t = e, r = {}) : (t = e.encoding, r = e, delete r.encoding);
56
+ const { headers: s = {}, signal: h, overrides: n = {} } = r, c = {
57
+ headers: s,
58
+ method: "GET",
59
+ redirect: "follow",
60
+ mode: "cors",
61
+ signal: h,
62
+ ...this.baseOverrides,
63
+ ...n
64
+ }, a = await this.fetch(this.url, c);
65
+ if (!a)
66
+ throw new Error("generic-filehandle failed to fetch");
67
+ if (a.status !== 200)
68
+ throw Object.assign(new Error(`HTTP ${a.status} fetching ${this.url}`), {
69
+ status: a.status
70
+ });
71
+ if (t === "utf8")
72
+ return a.text();
73
+ if (t)
74
+ throw new Error(`unsupported encoding: ${t}`);
75
+ return this.getBufferFromResponse(a);
76
+ }
77
+ async stat() {
78
+ if (!this._stat) {
79
+ const e = d.Buffer.allocUnsafe(10);
80
+ if (await this.read(e, 0, 10, 0), !this._stat)
81
+ throw new Error(`unable to determine size of file at ${this.url}`);
82
+ }
83
+ return this._stat;
84
+ }
85
+ async close() {
86
+ }
87
+ }
88
+ export {
89
+ b as R
90
+ };
package/dist/style.css CHANGED
@@ -1 +1 @@
1
- .genome-spy-app{position:absolute;top:0;bottom:0;left:0;right:0;display:flex;flex-direction:column;font-family:system-ui,Segoe UI,Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol;font-size:14px}body>.genome-spy-app{background-color:#fff}.genome-spy-app .genome-spy-container{position:relative;flex-grow:1;overflow:hidden}.gs-toolbar,.gs-toolbar .btn-group{display:flex;flex-direction:row;align-items:center}.gs-toolbar{height:38px;background-color:#6c82ab;box-shadow:0 0 3px #00000080;border-top:1px solid #9dabc7;border-bottom:1px solid #4a5d81}.gs-toolbar .spacer{flex-grow:1}.gs-toolbar .logo{display:block}.gs-toolbar .logo img{vertical-align:middle;width:34px}.gs-toolbar .vis-title,.gs-toolbar .version{color:#fff;font-weight:400;text-shadow:0 1px 2px rgba(0,0,0,.2)}.gs-toolbar .version{text-decoration:none;font-size:80%;opacity:50%}.gs-toolbar .version:visited{color:#fff}.gs-toolbar .search-input{font-size:1em;background-color:#5c74a1;color:#fff;border:1px solid #536991;width:260px;padding:3px 6px;outline:none;position:relative;box-shadow:0 1px 3px #0000001a inset,1px 1px #798db2;text-shadow:0 1px 2px rgba(0,0,0,.3)}.gs-toolbar .search-help{box-sizing:border-box;position:absolute;border:none;background:#f6f6f6;padding:10px;z-index:1000;visibility:hidden;box-shadow:0 3px 14px #00000026;font-size:90%;opacity:0;transition:opacity .2s,transform .2s ease-in-out,visibility .2s;transform:translateY(13px)}.gs-toolbar .search-help>:first-child{margin-top:0}.gs-toolbar .search-help>:last-child{margin-bottom:0}.gs-toolbar .search-help p{margin-bottom:.5em}.gs-toolbar .search-help ul{margin-top:.5em;padding-left:2.5em}.gs-toolbar .search-help li{cursor:pointer}.gs-toolbar .search:focus-within .search-help{opacity:1;visibility:visible;transform:translateY(3px)}.gs-toolbar>*{padding-left:10px}.gs-toolbar>*:last-child{margin-right:10px}.gs-toolbar .tool-btn{padding:0;font-size:1.15em;transition:color .15s;background-color:#7c90b4;background-image:linear-gradient(to bottom,#8698ba,#7288af);color:#fff;height:26px;width:30px;border:1px solid;border-top-color:#9dabc7;border-left-color:#8395b8;border-right-color:#5c74a1;border-bottom-color:#4a5d81;box-shadow:0 1px 1px #00000026;border-radius:2px;margin-left:10px;display:flex;align-items:center;justify-content:center}.gs-toolbar .tool-btn>svg{filter:drop-shadow(0 0 1px rgba(0,0,0,.3))}.gs-toolbar .tool-btn:active>*{position:relative;top:1px}.gs-toolbar .tool-btn:disabled{color:#b6c1d5}.gs-toolbar .tool-btn:hover:not(:disabled){background-image:linear-gradient(to bottom,#8c9ebe,#7c90b4)}.gs-toolbar .tool-btn:hover:not(:disabled)>svg{filter:drop-shadow(0 0 3px rgb(150,200,255))}.gs-toolbar .tool-btn:focus{outline:none}.gs-toolbar .btn-group .tool-btn,.gs-toolbar .dropdown .tool-btn{margin-left:0}.gs-toolbar .dropdown{position:relative}.gs-toolbar .dropdown.show .gs-dropdown-menu{display:block}.gs-toolbar .dropdown.show>button{background-image:linear-gradient(to bottom,#93a3c1,#8698ba)}:is(.gs-menu,.gs-context-menu,.gs-dropdown-menu){margin:0;padding:7px 0;background:#f6f6f6;border:#e0e0e0;border-radius:2px;max-height:calc(100vh - 60px);overflow-y:auto;z-index:100;box-shadow:0 3px 15px #00000036;cursor:default;line-height:22px;font-size:13px;font-family:system-ui,Segoe UI,Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol}:is(.gs-menu,.gs-context-menu,.gs-dropdown-menu) li{display:block;list-style:none;position:relative;padding:0}:is(.gs-menu,.gs-context-menu,.gs-dropdown-menu) li.active>:is(a:first-child,.submenu-item){background-color:#e8e8e8}:is(.gs-menu,.gs-context-menu,.gs-dropdown-menu) li>:is(a:first-child,label,.submenu-item):hover{background-color:#e0e0e0}:is(.gs-menu,.gs-context-menu,.gs-dropdown-menu) li>span.disabled-item,:is(.gs-menu,.gs-context-menu,.gs-dropdown-menu) li>a:first-child{display:block}:is(.gs-menu,.gs-context-menu,.gs-dropdown-menu) li>span.disabled-item svg:first-child,:is(.gs-menu,.gs-context-menu,.gs-dropdown-menu) li>a:first-child svg:first-child{width:1em;margin-right:.2em}:is(.gs-menu,.gs-context-menu,.gs-dropdown-menu) .context{font-size:.9em;color:#666}:is(.gs-menu,.gs-context-menu,.gs-dropdown-menu) .context:before{content:"("}:is(.gs-menu,.gs-context-menu,.gs-dropdown-menu) .context:after{content:")"}:is(.gs-menu,.gs-context-menu,.gs-dropdown-menu) .menu-divider{margin:5px 0;border-top:1px solid #e0e0e0}:is(.gs-menu,.gs-context-menu,.gs-dropdown-menu) .menu-header,:is(.gs-menu,.gs-context-menu,.gs-dropdown-menu) li>:is(span.disabled-item,a:first-child,.submenu-item,label){padding-left:15px;padding-right:15px}:is(.gs-menu,.gs-context-menu,.gs-dropdown-menu) .menu-header{font-size:12px;color:#666}:is(.gs-menu,.gs-context-menu,.gs-dropdown-menu) li>:is(div.submenu-item,.choice-item){display:flex;justify-content:space-between;align-items:center}:is(.gs-menu,.gs-context-menu,.gs-dropdown-menu) li>:is(div.submenu-item,.choice-item)>:first-child{flex-grow:1}:is(.gs-menu,.gs-context-menu,.gs-dropdown-menu) li>.submenu-item:after{content:"";width:0;height:0;border-top:.4em solid transparent;border-bottom:.4em solid transparent;border-left:.4em solid black;margin-left:1em}:is(.gs-menu,.gs-context-menu,.gs-dropdown-menu) li .kbd-shortcut{color:#666;background-color:#ffffff80;font-size:.9em;border:1px solid #aaa;border-bottom-width:2px;border-radius:3px;padding:3px;line-height:.7em;margin-left:.5em}:is(.gs-menu,.gs-context-menu,.gs-dropdown-menu) li>.disabled-item{color:#999}:is(.gs-menu,.gs-context-menu,.gs-dropdown-menu) a.menu-ellipsis{padding:0;display:flex;align-items:center;position:absolute;top:0;right:7.5px;height:22px;background-color:#e0e0e0;border-radius:3em;color:#707070}:is(.gs-menu,.gs-context-menu,.gs-dropdown-menu) a.menu-ellipsis svg{margin:0;width:22px}:is(.gs-menu,.gs-context-menu,.gs-dropdown-menu) a.menu-ellipsis:hover{background-color:#e9e9e9}:is(.gs-menu,.gs-context-menu,.gs-dropdown-menu) li:not(:hover) a.menu-ellipsis{display:none}:is(.gs-menu,.gs-context-menu,.gs-dropdown-menu) .gs-input-binding{margin:0 15px;line-height:normal}:is(.gs-menu,.gs-context-menu,.gs-dropdown-menu) .gs-input-binding .description{margin-bottom:.2em}.provenance-menu .operator{font-size:125%;line-height:.8}.gs-context-menu-backdrop{position:fixed;z-index:100;top:0;right:0;bottom:0;left:0}.gs-context-menu{position:fixed;z-index:100}.gs-dropdown-menu{overflow:auto;position:absolute;display:none;z-index:1;width:max-content}.gs-dropdown-menu ul{padding-left:1.5em;list-style:none}.gs-dropdown-menu>li>ul{padding-left:0}.gs-dropdown-menu.provenance-menu .active-state{background-color:#e0e0e0;border-left:5px solid #c0c0c0;padding-left:10px}.gs-modal{z-index:101;font-family:system-ui,Segoe UI,Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol;font-size:14px;position:fixed;top:0;right:0;bottom:0;left:0;display:grid;justify-content:center;align-content:center}.gs-modal *{box-sizing:border-box}.gs-modal .backdrop{position:absolute;top:0;right:0;bottom:0;left:0;background-color:#4b4b4b;opacity:0;transition:opacity .3s ease-in-out}.gs-modal .content{z-index:1;box-shadow:0 3px 15px #00000036;background:white;border-radius:3px;min-width:300px;opacity:0;transform:translateY(-15px);transition:opacity .2s ease-in-out,transform .2s ease-in-out}.gs-modal.visible .backdrop{opacity:.4}.gs-modal.visible .content{transform:translate(0);opacity:1}.gs-modal .modal-body,.gs-modal .modal-title,.gs-modal .modal-buttons{padding:10px}.gs-modal .modal-title{font-weight:700;padding-bottom:0}.gs-modal .modal-body>:first-child{margin-top:0}.gs-modal .modal-body>:last-child{margin-bottom:0}.gs-modal .modal-buttons{display:flex;justify-content:flex-end;gap:10px;border-top:1px solid #d0d0d0}.gs-modal .btn{display:inline-block;padding:4px 12px;margin:0;font-size:1em;line-height:20px;color:#333;text-align:center;text-shadow:0 1px 1px rgba(255,255,255,.75);vertical-align:middle;background-image:linear-gradient(to bottom,#ffffff,#e6e6e6);border:1px solid #cccccc;border-color:rgba(0,0,0,.1) rgba(0,0,0,.1) rgba(0,0,0,.25);border-bottom-color:#b3b3b3;border-radius:4px;box-shadow:inset 0 1px #fff3,0 1px 2px #0000000d;transition:color .15s}.gs-modal .btn:hover:not(:disabled){background-image:linear-gradient(to bottom,#f8f8f8,#d8d8d8)}.gs-modal .btn:active{border-color:rgba(0,0,0,.2) rgba(0,0,0,.2) rgba(0,0,0,.5)}.gs-modal .btn:disabled{color:#a0a0a0}.gs-modal .btn:not(:disabled){cursor:pointer}.gs-modal .btn svg:first-child:not(:last-child){font-size:85%;margin-right:.3em}.gs-modal .btn svg:last-child:not(:first-child){font-size:85%;margin-left:.3em}.gs-modal .btn-group{display:flex;font-size:1.3em;margin-bottom:10px}.gs-modal .btn-group .btn{flex-grow:1}.gs-modal .btn-group .btn:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0;margin-left:-1px}.gs-modal .btn-group .btn:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.gs-modal .btn-group .btn.chosen{background-image:linear-gradient(to bottom,#f0f0f0,#d8d8d8);box-shadow:inset 0 2px 3px #0000004d}.gs-modal.tour{pointer-events:none;justify-content:right;align-content:end}.gs-modal.tour.visible .backdrop{opacity:1}.gs-modal.tour .backdrop{pointer-events:none;background:linear-gradient(160deg,transparent 70%,rgba(0,0,0,.2))}.gs-modal.tour .content{pointer-events:all;margin:10px;box-shadow:0 3px 15px #00000036,0 2px 5px #00000036}.gs-modal.tour .modal-title{padding-right:3em}.gs-modal.tour .modal-body.markdown img{max-width:350px;display:block;margin:1em auto}.gs-modal .collapse{position:absolute;right:10px;top:10px;background:none;border:none;font-size:1.1em;border-radius:2px;cursor:pointer}.gs-modal .collapse svg{transition:transform .5s}.gs-modal .collapse:hover{background-color:#e8e8e8}.gs-modal:not(.collapsed) .content:not(:hover) .collapse{animation:move .25s .5s 3 linear}@keyframes move{0%{transform:translateY(0)}25%{transform:translateY(-2px)}75%{transform:translateY(2px)}to{transform:translateY(0)}}.gs-modal.collapsed>.content>:not(:is(.modal-title,.collapse)){display:none}.gs-modal.collapsed .modal-title{padding-bottom:10px}.gs-modal.collapsed .collapse svg{transform:rotate(180deg)}.gs-modal a{color:#5570a2;text-decoration:none}.gs-modal a:hover{text-decoration:underline}.gs-checkbox-list-wrapper{position:relative}.gs-checkbox-list-wrapper .search-note{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;justify-content:center;align-content:center;color:gray;font-size:85%;pointer-events:none}.gs-checkbox-list-wrapper .search-note>*{position:relative;top:.7em}.gs-checkbox-list{color:#212529;border:1px solid #ced4da;border-radius:.25em;overflow:auto;max-height:200px;padding:.375em .75em;margin:0}.gs-checkbox-list .color{width:.5em;height:1em;margin-right:.4em}.gs-checkbox-list li{list-style:none}.gs-checkbox-list label.checkbox{margin-bottom:0}.gs-checkbox-list label.checkbox:hover{background-color:#f4f4f4}.gs-checkbox-list .hidden{display:none}.gs-form-group>p:first-child{margin-top:0}.gs-form-group:not(:first-child){margin-top:.5em}.gs-form-group label{display:inline-block;margin-bottom:.5em}.gs-form-group input[type=text],.gs-form-group input[type=number],.gs-form-group select,.gs-form-group textarea{display:block;width:100%;padding:.375em .75em;font-size:1em;font-family:system-ui,Segoe UI,Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol;line-height:1.5;color:#212529;background-color:#fff;background-clip:padding-box;border:1px solid #ced4da;border-radius:.25em;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}.gs-form-group input[type=text]:not(:last-child),.gs-form-group input[type=number]:not(:last-child),.gs-form-group select:not(:last-child),.gs-form-group textarea:not(:last-child){margin-bottom:10px}.gs-form-group input[type=text]::placeholder,.gs-form-group input[type=number]::placeholder,.gs-form-group select::placeholder,.gs-form-group textarea::placeholder{color:#a0a0a0}.gs-form-group select{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right .75rem center;background-size:16px 12px;-webkit-appearance:none;-moz-appearance:none;appearance:none}.gs-form-group small{display:block;margin-top:.25rem;color:#606060}.gs-form-group .threshold-flex{display:flex;gap:10px}.gs-form-group .threshold-flex:not(:last-child){margin-bottom:10px}.gs-form-group .threshold-flex *{margin-bottom:0!important}.gs-form-group .threshold-flex>:first-child{width:5em}.gs-form-group .threshold-flex>:last-child{padding:0 10px}.group-by-thresholds-form{width:25em}.group-by-thresholds-form .group-color{display:inline-block;width:.7em;height:.7em}.group-by-thresholds-form .threshold-groups{margin-top:10px;text-align:left;font-size:90%}.group-by-thresholds-form .threshold-groups :is(th,td){padding-right:1em}.group-by-thresholds-form .threshold-groups :is(th,td):nth-child(2){min-width:9em}.group-arbitrarily-form span.na{color:gray;font-style:italic;font-size:90%}.group-arbitrarily-form div.table{color:#212529;border:1px solid #ced4da;border-radius:.25em;overflow-x:auto;max-height:20em;padding:.375em .75em;margin:0}.group-arbitrarily-form.gs-form-group select{padding-top:.1em;padding-bottom:.1em}.gs-alert{display:flex;align-items:center;position:relative;padding:.8em;margin-bottom:1em;border:1px solid transparent;border-radius:.25rem}.gs-alert>svg:first-child{width:2em;height:2em;margin-right:.8em}.gs-alert.warning{color:#664d03;background-color:#fff3cd;border-color:#ffecb5}.gs-alert.info{color:#055160;background-color:#cff4fc;border-color:#b6effb}.gs-tabs{margin:0}.gs-tabs .tabs{display:flex;list-style:none;padding:0;margin-top:0}.gs-tabs .tabs:after{flex-grow:1;content:"";display:block;border-bottom:1px solid #d0d0d0}.gs-tabs .tabs button{font-size:1em;background-color:transparent;align-items:center;padding:.6em 10px;border:1px solid #d0d0d0;border-radius:5px 5px 0 0;cursor:pointer}.gs-tabs .tabs>li:not(:first-child)>button{margin-left:-1px}.gs-tabs .tabs .active-tab button{border-bottom-color:transparent}.gs-tabs .tabs :not(.active-tab) button{border-color:transparent;border-bottom-color:#d0d0d0}.gs-tabs .panes>:not(.active-tab){display:none}.snarkdown br{content:"A";display:block;margin-bottom:.5em}.copy-url{position:relative}.copy-url button{position:absolute;right:.4em;top:.4em;bottom:.4em;box-shadow:0 0 .2em .2em #fff;border:1px solid rgb(66,127,240);border-radius:3px;color:#427ff0;background-color:#fff}.copy-url button:hover{color:#fff;background-color:#427ff0}label.checkbox{display:flex;align-items:center}label.checkbox input[type=checkbox]{flex:none;margin-right:.5em}.gs-suppress-tooltip .genome-spy .tooltip{display:none}.histogram-widget,.histogram-widget .histogram-plot{position:relative}.histogram-widget .histogram-bars{position:relative;height:4em;background-color:#f0f0f0;border-top-left-radius:.25em;border-top-right-radius:.25em;overflow:hidden}.histogram-widget .histogram-bars>div{position:absolute;background-color:gray}.histogram-widget .histogram-thresholds{position:absolute;height:100%;width:100%;top:0}.histogram-widget .histogram-thresholds .histogram-threshold{position:absolute;width:1px;height:100%;background-color:#000}.histogram-widget .histogram-thresholds .histogram-knob{position:absolute;top:-.6em;left:calc(.5px - .6em);width:1.2em;height:1.2em;border-radius:1.2em;background:black;color:#fff;font-size:80%;text-align:center;vertical-align:middle;cursor:col-resize}.histogram-widget .histogram-domain{position:absolute;width:100%;height:.5em;border:1px solid #333;border-bottom-style:none}.histogram-widget .histogram-extent{display:flex;justify-content:space-between;font-size:90%}.histogram-widget .histogram-extent>div{margin:.1em .3em 0}.histogram-widget .histogram-hint{position:absolute;top:0;right:0;bottom:0;left:0;font-size:85%;display:flex;align-items:center;justify-content:center;pointer-events:none;opacity:0;transition:opacity .3s}.histogram-widget .histogram-hint.visible{opacity:1}.histogram-widget .histogram-hint span{position:relative;top:-30%;background-color:#f0f0f0b3;color:#333;cursor:default}
1
+ .genome-spy-app{position:absolute;top:0;bottom:0;left:0;right:0;display:flex;flex-direction:column;font-family:system-ui,Segoe UI,Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol;font-size:14px}body>.genome-spy-app{background-color:#fff}.genome-spy-app .genome-spy-container{position:relative;flex-grow:1;overflow:hidden}.gs-toolbar,.gs-toolbar .btn-group{display:flex;flex-direction:row;align-items:center}.gs-toolbar{height:38px;background-color:#6c82ab;box-shadow:0 0 3px #00000080;border-top:1px solid #9dabc7;border-bottom:1px solid #4a5d81}.gs-toolbar .spacer{flex-grow:1}.gs-toolbar .logo{display:block}.gs-toolbar .logo img{vertical-align:middle;width:34px}.gs-toolbar .vis-title,.gs-toolbar .version{color:#fff;font-weight:400;text-shadow:0 1px 2px rgba(0,0,0,.2)}.gs-toolbar .version{text-decoration:none;font-size:80%;opacity:50%}.gs-toolbar .version:visited{color:#fff}.gs-toolbar .search-input{font-size:1em;background-color:#5c74a1;color:#fff;border:1px solid #536991;width:260px;padding:3px 6px;outline:none;position:relative;box-shadow:0 1px 3px #0000001a inset,1px 1px #798db2;text-shadow:0 1px 2px rgba(0,0,0,.3)}.gs-toolbar .search-help{box-sizing:border-box;position:absolute;border:none;background:#f6f6f6;padding:10px;z-index:1000;visibility:hidden;box-shadow:0 3px 14px #00000026;font-size:90%;opacity:0;transition:opacity .2s,transform .2s ease-in-out,visibility .2s;transform:translateY(13px)}.gs-toolbar .search-help>:first-child{margin-top:0}.gs-toolbar .search-help>:last-child{margin-bottom:0}.gs-toolbar .search-help p{margin-bottom:.5em}.gs-toolbar .search-help ul{margin-top:.5em;padding-left:2.5em}.gs-toolbar .search-help li{cursor:pointer}.gs-toolbar .search:focus-within .search-help{opacity:1;visibility:visible;transform:translateY(3px)}.gs-toolbar>*{padding-left:10px}.gs-toolbar>*:last-child{margin-right:10px}.gs-toolbar .tool-btn{padding:0;font-size:1.15em;transition:color .15s;background-color:#7c90b4;background-image:linear-gradient(to bottom,#8698ba,#7288af);color:#fff;height:26px;width:30px;border:1px solid;border-top-color:#9dabc7;border-left-color:#8395b8;border-right-color:#5c74a1;border-bottom-color:#4a5d81;box-shadow:0 1px 1px #00000026;border-radius:2px;margin-left:10px;display:flex;align-items:center;justify-content:center}.gs-toolbar .tool-btn>svg{filter:drop-shadow(0 0 1px rgba(0,0,0,.3))}.gs-toolbar .tool-btn:active>*{position:relative;top:1px}.gs-toolbar .tool-btn:disabled{color:#b6c1d5}.gs-toolbar .tool-btn:hover:not(:disabled){background-image:linear-gradient(to bottom,#8c9ebe,#7c90b4)}.gs-toolbar .tool-btn:hover:not(:disabled)>svg{filter:drop-shadow(0 0 3px rgb(150,200,255))}.gs-toolbar .tool-btn:focus{outline:none}.gs-toolbar .btn-group .tool-btn,.gs-toolbar .dropdown .tool-btn{margin-left:0}.gs-toolbar .dropdown{position:relative}.gs-toolbar .dropdown.show .gs-dropdown-menu{display:block}.gs-toolbar .dropdown.show>button{background-image:linear-gradient(to bottom,#93a3c1,#8698ba)}:is(.gs-menu,.gs-context-menu,.gs-dropdown-menu){margin:0;padding:7px 0;background:#f6f6f6;border:#e0e0e0;border-radius:2px;max-height:calc(100vh - 60px);overflow-y:auto;z-index:100;box-shadow:0 3px 15px #00000036;cursor:default;line-height:22px;font-size:13px;font-family:system-ui,Segoe UI,Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol}:is(.gs-menu,.gs-context-menu,.gs-dropdown-menu) li{display:block;list-style:none;position:relative;padding:0}:is(.gs-menu,.gs-context-menu,.gs-dropdown-menu) li.active>:is(a:first-child,.submenu-item){background-color:#e8e8e8}:is(.gs-menu,.gs-context-menu,.gs-dropdown-menu) li>:is(a:first-child,label,.submenu-item):hover{background-color:#e0e0e0}:is(.gs-menu,.gs-context-menu,.gs-dropdown-menu) li>span.disabled-item,:is(.gs-menu,.gs-context-menu,.gs-dropdown-menu) li>a:first-child{display:block}:is(.gs-menu,.gs-context-menu,.gs-dropdown-menu) li>span.disabled-item svg:first-child,:is(.gs-menu,.gs-context-menu,.gs-dropdown-menu) li>a:first-child svg:first-child{width:1em;margin-right:.2em}:is(.gs-menu,.gs-context-menu,.gs-dropdown-menu) .context{font-size:.9em;color:#666}:is(.gs-menu,.gs-context-menu,.gs-dropdown-menu) .context:before{content:"("}:is(.gs-menu,.gs-context-menu,.gs-dropdown-menu) .context:after{content:")"}:is(.gs-menu,.gs-context-menu,.gs-dropdown-menu) .menu-divider{margin:5px 0;border-top:1px solid #e0e0e0}:is(.gs-menu,.gs-context-menu,.gs-dropdown-menu) .menu-header,:is(.gs-menu,.gs-context-menu,.gs-dropdown-menu) li>:is(span.disabled-item,a:first-child,.submenu-item,label){padding-left:15px;padding-right:15px}:is(.gs-menu,.gs-context-menu,.gs-dropdown-menu) .menu-header{font-size:12px;color:#666}:is(.gs-menu,.gs-context-menu,.gs-dropdown-menu) li>:is(div.submenu-item,.choice-item){display:flex;justify-content:space-between;align-items:center}:is(.gs-menu,.gs-context-menu,.gs-dropdown-menu) li>:is(div.submenu-item,.choice-item)>:first-child{flex-grow:1}:is(.gs-menu,.gs-context-menu,.gs-dropdown-menu) li>.submenu-item:after{content:"";width:0;height:0;border-top:.4em solid transparent;border-bottom:.4em solid transparent;border-left:.4em solid black;margin-left:1em}:is(.gs-menu,.gs-context-menu,.gs-dropdown-menu) li .kbd-shortcut{color:#666;background-color:#ffffff80;font-size:.9em;border:1px solid #aaa;border-bottom-width:2px;border-radius:3px;padding:3px;line-height:.7em;margin-left:.5em}:is(.gs-menu,.gs-context-menu,.gs-dropdown-menu) li>.disabled-item{color:#999}:is(.gs-menu,.gs-context-menu,.gs-dropdown-menu) a.menu-ellipsis{padding:0;display:flex;align-items:center;position:absolute;top:0;right:7.5px;height:22px;background-color:#e0e0e0;border-radius:3em;color:#707070}:is(.gs-menu,.gs-context-menu,.gs-dropdown-menu) a.menu-ellipsis svg{margin:0;width:22px}:is(.gs-menu,.gs-context-menu,.gs-dropdown-menu) a.menu-ellipsis:hover{background-color:#e9e9e9}:is(.gs-menu,.gs-context-menu,.gs-dropdown-menu) li:not(:hover) a.menu-ellipsis{display:none}:is(.gs-menu,.gs-context-menu,.gs-dropdown-menu) .gs-input-binding{margin:0 15px;line-height:normal}:is(.gs-menu,.gs-context-menu,.gs-dropdown-menu) .gs-input-binding .description{margin-bottom:.2em}.provenance-menu .operator{font-size:125%;line-height:.8}.gs-context-menu-backdrop{position:fixed;z-index:100;top:0;right:0;bottom:0;left:0}.gs-context-menu{position:fixed;z-index:100}.gs-dropdown-menu{overflow:auto;position:absolute;display:none;z-index:1;width:max-content}.gs-dropdown-menu ul{padding-left:1.5em;list-style:none}.gs-dropdown-menu>li>ul{padding-left:0}.gs-dropdown-menu.provenance-menu .active-state{background-color:#e0e0e0;border-left:5px solid #c0c0c0;padding-left:10px}.gs-modal{z-index:101;font-family:system-ui,Segoe UI,Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol;font-size:14px;position:fixed;top:0;right:0;bottom:0;left:0;display:grid;justify-content:center;align-content:center}.gs-modal *{box-sizing:border-box}.gs-modal .backdrop{position:absolute;top:0;right:0;bottom:0;left:0;background-color:#4b4b4b;opacity:0;transition:opacity .3s ease-in-out}.gs-modal .content{z-index:1;box-shadow:0 3px 15px #00000036;background:#fff;border-radius:3px;min-width:300px;opacity:0;transform:translateY(-15px);transition:opacity .2s ease-in-out,transform .2s ease-in-out}.gs-modal.visible .backdrop{opacity:.4}.gs-modal.visible .content{transform:translate(0);opacity:1}.gs-modal .modal-body,.gs-modal .modal-title,.gs-modal .modal-buttons{padding:10px}.gs-modal .modal-title{font-weight:700;padding-bottom:0}.gs-modal .modal-body>:first-child{margin-top:0}.gs-modal .modal-body>:last-child{margin-bottom:0}.gs-modal .modal-buttons{display:flex;justify-content:flex-end;gap:10px;border-top:1px solid #d0d0d0}.gs-modal .btn{display:inline-block;padding:4px 12px;margin:0;font-size:1em;line-height:20px;color:#333;text-align:center;text-shadow:0 1px 1px rgba(255,255,255,.75);vertical-align:middle;background-image:linear-gradient(to bottom,#fff,#e6e6e6);border:1px solid #cccccc;border-color:rgba(0,0,0,.1) rgba(0,0,0,.1) rgba(0,0,0,.25);border-bottom-color:#b3b3b3;border-radius:4px;box-shadow:inset 0 1px #fff3,0 1px 2px #0000000d;transition:color .15s}.gs-modal .btn:hover:not(:disabled){background-image:linear-gradient(to bottom,#f8f8f8,#d8d8d8)}.gs-modal .btn:active{border-color:rgba(0,0,0,.2) rgba(0,0,0,.2) rgba(0,0,0,.5)}.gs-modal .btn:disabled{color:#a0a0a0}.gs-modal .btn:not(:disabled){cursor:pointer}.gs-modal .btn svg:first-child:not(:last-child){font-size:85%;margin-right:.3em}.gs-modal .btn svg:last-child:not(:first-child){font-size:85%;margin-left:.3em}.gs-modal .btn-group{display:flex;font-size:1.3em;margin-bottom:10px}.gs-modal .btn-group .btn{flex-grow:1}.gs-modal .btn-group .btn:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0;margin-left:-1px}.gs-modal .btn-group .btn:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.gs-modal .btn-group .btn.chosen{background-image:linear-gradient(to bottom,#f0f0f0,#d8d8d8);box-shadow:inset 0 2px 3px #0000004d}.gs-modal.tour{pointer-events:none;justify-content:right;align-content:end}.gs-modal.tour.visible .backdrop{opacity:1}.gs-modal.tour .backdrop{pointer-events:none;background:linear-gradient(160deg,transparent 70%,rgba(0,0,0,.2))}.gs-modal.tour .content{pointer-events:all;margin:10px;box-shadow:0 3px 15px #00000036,0 2px 5px #00000036}.gs-modal.tour .modal-title{padding-right:3em}.gs-modal.tour .markdown img{max-width:350px;display:block;margin:1em auto}.gs-modal.tour .markdown p:first-child{margin-top:0}.gs-modal.tour .markdown p:last-child{margin-bottom:0}.gs-modal .collapse{all:unset;position:absolute;right:10px;top:10px;background:none;border:none;font-size:1.1em;border-radius:2px;padding:0 .2em;cursor:pointer}.gs-modal .collapse:focus{outline:revert}.gs-modal .collapse svg{transition:transform .5s}.gs-modal .collapse:hover{background-color:#e8e8e8}.gs-modal:not(.collapsed) .content:not(:hover) .collapse{animation:move .25s .5s 3 linear}@keyframes move{0%{transform:translateY(0)}25%{transform:translateY(-2px)}75%{transform:translateY(2px)}to{transform:translateY(0)}}.gs-modal.collapsed>.content>:not(:is(.modal-title,.collapse)){display:none}.gs-modal.collapsed .modal-title{padding-bottom:10px}.gs-modal.collapsed .collapse svg{transform:rotate(180deg)}.gs-modal a{color:#5570a2;text-decoration:none}.gs-modal a:hover{text-decoration:underline}.gs-checkbox-list-wrapper{position:relative}.gs-checkbox-list-wrapper .search-note{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;justify-content:center;align-content:center;color:gray;font-size:85%;pointer-events:none}.gs-checkbox-list-wrapper .search-note>*{position:relative;top:.7em}.gs-checkbox-list{color:#212529;border:1px solid #ced4da;border-radius:.25em;overflow:auto;max-height:200px;padding:.375em .75em;margin:0}.gs-checkbox-list .color{width:.5em;height:1em;margin-right:.4em}.gs-checkbox-list li{list-style:none}.gs-checkbox-list label.checkbox{margin-bottom:0}.gs-checkbox-list label.checkbox:hover{background-color:#f4f4f4}.gs-checkbox-list .hidden{display:none}.gs-form-group>p:first-child{margin-top:0}.gs-form-group:not(:first-child){margin-top:.5em}.gs-form-group label{display:inline-block;margin-bottom:.5em}.gs-form-group input[type=text],.gs-form-group input[type=number],.gs-form-group select,.gs-form-group textarea{display:block;width:100%;padding:.375em .75em;font-size:1em;font-family:system-ui,Segoe UI,Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol;line-height:1.5;color:#212529;background-color:#fff;background-clip:padding-box;border:1px solid #ced4da;border-radius:.25em;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}.gs-form-group input[type=text]:not(:last-child),.gs-form-group input[type=number]:not(:last-child),.gs-form-group select:not(:last-child),.gs-form-group textarea:not(:last-child){margin-bottom:10px}.gs-form-group input[type=text]::placeholder,.gs-form-group input[type=number]::placeholder,.gs-form-group select::placeholder,.gs-form-group textarea::placeholder{color:#a0a0a0}.gs-form-group select{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right .75rem center;background-size:16px 12px;-webkit-appearance:none;-moz-appearance:none;appearance:none}.gs-form-group small{display:block;margin-top:.25rem;color:#606060}.gs-form-group .threshold-flex{display:flex;gap:10px}.gs-form-group .threshold-flex:not(:last-child){margin-bottom:10px}.gs-form-group .threshold-flex *{margin-bottom:0!important}.gs-form-group .threshold-flex>:first-child{width:5em}.gs-form-group .threshold-flex>:last-child{padding:0 10px}.group-by-thresholds-form{width:25em}.group-by-thresholds-form .group-color{display:inline-block;width:.7em;height:.7em}.group-by-thresholds-form .threshold-groups{margin-top:10px;text-align:left;font-size:90%}.group-by-thresholds-form .threshold-groups :is(th,td){padding-right:1em}.group-by-thresholds-form .threshold-groups :is(th,td):nth-child(2){min-width:9em}.group-arbitrarily-form span.na{color:gray;font-style:italic;font-size:90%}.group-arbitrarily-form span.color{display:inline-block;width:.7em;height:1em;margin-right:.7em}.group-arbitrarily-form div.table{color:#212529;border:1px solid #ced4da;border-radius:.25em;overflow-x:auto;max-height:20em;padding:0 .75em .375em;margin:0}.group-arbitrarily-form div.table table{position:relative;border-collapse:collapse}.group-arbitrarily-form div.table td:first-child{padding-right:.7em}.group-arbitrarily-form div.table th{text-align:left;background:#fff;background:linear-gradient(#fff,#fdfdff 90%,#fff0);position:sticky;top:0;padding-top:.55em;padding-bottom:.375em}.group-arbitrarily-form.gs-form-group select{padding-top:.1em;padding-bottom:.1em}.gs-alert{display:flex;align-items:center;position:relative;padding:.8em;margin-bottom:1em;border:1px solid transparent;border-radius:.25rem}.gs-alert>svg:first-child{width:2em;height:2em;margin-right:.8em}.gs-alert.warning{color:#664d03;background-color:#fff3cd;border-color:#ffecb5}.gs-alert.info{color:#055160;background-color:#cff4fc;border-color:#b6effb}.gs-tabs{margin:0}.gs-tabs .tabs{display:flex;list-style:none;padding:0;margin-top:0}.gs-tabs .tabs:after{flex-grow:1;content:"";display:block;border-bottom:1px solid #d0d0d0}.gs-tabs .tabs button{font-size:1em;background-color:transparent;align-items:center;padding:.6em 10px;border:1px solid #d0d0d0;border-radius:5px 5px 0 0;cursor:pointer}.gs-tabs .tabs>li:not(:first-child)>button{margin-left:-1px}.gs-tabs .tabs .active-tab button{border-bottom-color:transparent}.gs-tabs .tabs :not(.active-tab) button{border-color:transparent;border-bottom-color:#d0d0d0}.gs-tabs .panes>:not(.active-tab){display:none}.copy-url{position:relative}.copy-url button{position:absolute;right:.4em;top:.4em;bottom:.4em;box-shadow:0 0 .2em .2em #fff;border:1px solid rgb(66,127,240);border-radius:3px;color:#427ff0;background-color:#fff}.copy-url button:hover{color:#fff;background-color:#427ff0}label.checkbox{display:flex;align-items:center}label.checkbox input[type=checkbox]{flex:none;margin-right:.5em}.gs-suppress-tooltip .genome-spy .tooltip{display:none}.histogram-widget,.histogram-widget .histogram-plot{position:relative}.histogram-widget .histogram-bars{position:relative;height:4em;background-color:#f0f0f0;border-top-left-radius:.25em;border-top-right-radius:.25em;overflow:hidden}.histogram-widget .histogram-bars>div{position:absolute;background-color:gray}.histogram-widget .histogram-thresholds{position:absolute;height:100%;width:100%;top:0}.histogram-widget .histogram-thresholds .histogram-threshold{position:absolute;width:1px;height:100%;background-color:#000}.histogram-widget .histogram-thresholds .histogram-knob{position:absolute;top:-.6em;left:calc(.5px - .6em);width:1.2em;height:1.2em;border-radius:1.2em;background:#000;color:#fff;font-size:80%;text-align:center;vertical-align:middle;cursor:col-resize}.histogram-widget .histogram-domain{position:absolute;width:100%;height:.5em;border:1px solid #333;border-bottom-style:none}.histogram-widget .histogram-extent{display:flex;justify-content:space-between;font-size:90%}.histogram-widget .histogram-extent>div{margin:.1em .3em 0}.histogram-widget .histogram-hint{position:absolute;top:0;right:0;bottom:0;left:0;font-size:85%;display:flex;align-items:center;justify-content:center;pointer-events:none;opacity:0;transition:opacity .3s}.histogram-widget .histogram-hint.visible{opacity:1}.histogram-widget .histogram-hint span{position:relative;top:-30%;background-color:#f0f0f0b3;color:#333;cursor:default}
package/package.json CHANGED
@@ -7,7 +7,7 @@
7
7
  },
8
8
  "contributors": [],
9
9
  "license": "MIT",
10
- "version": "0.51.0",
10
+ "version": "0.53.0",
11
11
  "main": "dist/index.js",
12
12
  "type": "module",
13
13
  "files": [
@@ -29,15 +29,14 @@
29
29
  "@fortawesome/fontawesome-free": "^6.4.2",
30
30
  "@fortawesome/fontawesome-svg-core": "^6.4.2",
31
31
  "@fortawesome/free-solid-svg-icons": "^6.4.2",
32
- "@genome-spy/core": "^0.51.0",
32
+ "@genome-spy/core": "^0.53.0",
33
33
  "@reduxjs/toolkit": "^1.8.4",
34
34
  "idb": "^7.1.1",
35
35
  "lit": "^3.1.2",
36
36
  "lz-string": "^1.4.4",
37
37
  "mapsort": "^1.0.5",
38
+ "micromark": "^4.0.0",
38
39
  "redux-batched-actions": "^0.5.0",
39
- "redux-undo": "^1.0.1",
40
- "snarkdown": "^2.0.0"
41
- },
42
- "gitHead": "c2522b73298c0cc4cf38cca795b35e97c5c292d4"
40
+ "redux-undo": "^1.0.1"
41
+ }
43
42
  }
package/LICENSE DELETED
@@ -1,21 +0,0 @@
1
- MIT License
2
-
3
- Copyright (c) 2018-2023 Kari Lavikka
4
-
5
- Permission is hereby granted, free of charge, to any person obtaining a copy
6
- of this software and associated documentation files (the "Software"), to deal
7
- in the Software without restriction, including without limitation the rights
8
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
- copies of the Software, and to permit persons to whom the Software is
10
- furnished to do so, subject to the following conditions:
11
-
12
- The above copyright notice and this permission notice shall be included in all
13
- copies or substantial portions of the Software.
14
-
15
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
- SOFTWARE.
@@ -1,279 +0,0 @@
1
- import { L as g } from "./__vite-browser-external-C--ziKoh.js";
2
- import { b as w } from "./index-C8lYPtq_.js";
3
- import { L as x, u as E } from "./long-CYrAUkxh.js";
4
- import "./_commonjsHelpers-BIiJCwQW.js";
5
- const m = 1;
6
- class _ {
7
- constructor({ filehandle: e, path: t }) {
8
- if (e)
9
- this.filehandle = e;
10
- else if (t)
11
- this.filehandle = new g(t);
12
- else
13
- throw new TypeError("either filehandle or path must be defined");
14
- }
15
- _readLongWithOverflow(e, t = 0, i = !0) {
16
- const n = x.fromBytesLE(e.slice(t, t + 8), i);
17
- if (n.greaterThan(Number.MAX_SAFE_INTEGER) || n.lessThan(Number.MIN_SAFE_INTEGER))
18
- throw new TypeError("integer overflow");
19
- return n.toNumber();
20
- }
21
- _getIndex() {
22
- return this.index || (this.index = this._readIndex()), this.index;
23
- }
24
- async _readIndex() {
25
- let e = w.Buffer.allocUnsafe(8);
26
- await this.filehandle.read(e, 0, 8, 0);
27
- const t = this._readLongWithOverflow(e, 0, !0);
28
- if (!t)
29
- return [[0, 0]];
30
- const i = new Array(t + 1);
31
- i[0] = [0, 0];
32
- const n = 8 * 2 * t;
33
- if (n > Number.MAX_SAFE_INTEGER)
34
- throw new TypeError("integer overflow");
35
- e = w.Buffer.allocUnsafe(n), await this.filehandle.read(e, 0, n, 8);
36
- for (let s = 0; s < t; s += 1) {
37
- const r = this._readLongWithOverflow(e, s * 16), a = this._readLongWithOverflow(e, s * 16 + 8);
38
- i[s + 1] = [r, a];
39
- }
40
- return i;
41
- }
42
- async getLastBlock() {
43
- const e = await this._getIndex();
44
- if (e.length)
45
- return e[e.length - 1];
46
- }
47
- async getRelevantBlocksForRead(e, t) {
48
- const i = t + e;
49
- if (e === 0)
50
- return [];
51
- const n = await this._getIndex(), s = [], r = (h, u) => {
52
- const p = h[m], b = u ? u[m] : 1 / 0;
53
- return p <= t && b > t ? 0 : p < t ? -1 : 1;
54
- };
55
- let a = 0, f = n.length - 1, o = Math.floor(n.length / 2), d = r(n[o], n[o + 1]);
56
- for (; d !== 0; )
57
- d > 0 ? f = o - 1 : d < 0 && (a = o + 1), o = Math.ceil((f - a) / 2) + a, d = r(n[o], n[o + 1]);
58
- s.push(n[o]);
59
- let c = o + 1;
60
- for (; c < n.length && (s.push(n[c]), !(n[c][m] >= i)); c += 1)
61
- ;
62
- return s[s.length - 1][m] < i && s.push([]), s;
63
- }
64
- }
65
- class y {
66
- constructor({ filehandle: e, path: t, gziFilehandle: i, gziPath: n }) {
67
- if (e)
68
- this.filehandle = e;
69
- else if (t)
70
- this.filehandle = new g(t);
71
- else
72
- throw new TypeError("either filehandle or path must be defined");
73
- if (!i && !n && !t)
74
- throw new TypeError("either gziFilehandle or gziPath must be defined");
75
- this.gzi = new _({
76
- filehandle: i,
77
- path: !i && !n && t ? n : `${t}.gzi`
78
- });
79
- }
80
- async stat() {
81
- const e = await this.filehandle.stat();
82
- return Object.assign(e, {
83
- size: await this.getUncompressedFileSize(),
84
- blocks: void 0,
85
- blksize: void 0
86
- });
87
- }
88
- async getUncompressedFileSize() {
89
- const [, e] = await this.gzi.getLastBlock(), { size: t } = await this.filehandle.stat(), i = w.Buffer.allocUnsafe(4), { bytesRead: n } = await this.filehandle.read(i, 0, 4, t - 28 - 4);
90
- if (n !== 4)
91
- throw new Error("read error");
92
- const s = i.readUInt32LE(0);
93
- return e + s;
94
- }
95
- async _readAndUncompressBlock(e, [t], [i]) {
96
- let n = i;
97
- n || (n = (await this.filehandle.stat()).size);
98
- const s = n - t;
99
- return await this.filehandle.read(e, 0, s, t), await E(e.slice(0, s));
100
- }
101
- async read(e, t, i, n) {
102
- const s = await this.gzi.getRelevantBlocksForRead(i, n), r = w.Buffer.allocUnsafe(32768 * 2);
103
- let a = t, f = 0;
104
- for (let o = 0; o < s.length - 1; o += 1) {
105
- const d = await this._readAndUncompressBlock(r, s[o], s[o + 1]), [, c] = s[o], h = c >= n ? 0 : n - c, u = Math.min(n + i, c + d.length) - c;
106
- h >= 0 && h < d.length && (d.copy(e, a, h, u), a += u - h, f += u - h);
107
- }
108
- return { bytesRead: f, buffer: e };
109
- }
110
- }
111
- function S(l, e) {
112
- return l.offset + l.lineBytes * Math.floor(e / l.lineLength) + e % l.lineLength;
113
- }
114
- async function I(l, e) {
115
- const t = await l.readFile(e);
116
- if (!(t && t.length))
117
- throw new Error("No data read from FASTA index (FAI) file");
118
- let i = 0, n;
119
- const s = t.toString("utf8").split(/\r?\n/).filter((r) => /\S/.test(r)).map((r) => r.split(" ")).filter((r) => r[0] !== "").map((r) => ((!n || n.name !== r[0]) && (n = { name: r[0], id: i }, i += 1), {
120
- id: n.id,
121
- name: r[0],
122
- length: +r[1],
123
- start: 0,
124
- end: +r[1],
125
- offset: +r[2],
126
- lineLength: +r[3],
127
- lineBytes: +r[4]
128
- }));
129
- return {
130
- name: Object.fromEntries(s.map((r) => [r.name, r])),
131
- id: Object.fromEntries(s.map((r) => [r.id, r]))
132
- };
133
- }
134
- class B {
135
- constructor({ fasta: e, fai: t, path: i, faiPath: n, chunkSizeLimit: s = 1e6 }) {
136
- if (e)
137
- this.fasta = e;
138
- else if (i)
139
- this.fasta = new g(i);
140
- else
141
- throw new Error("Need to pass filehandle for fasta or path to localfile");
142
- if (t)
143
- this.fai = t;
144
- else if (n)
145
- this.fai = new g(n);
146
- else if (i)
147
- this.fai = new g(`${i}.fai`);
148
- else
149
- throw new Error("Need to pass filehandle for or path to localfile");
150
- this.chunkSizeLimit = s;
151
- }
152
- async _getIndexes(e) {
153
- return this.indexes || (this.indexes = I(this.fai, e)), this.indexes;
154
- }
155
- /**
156
- * @returns {array[string]} array of string sequence
157
- * names that are present in the index, in which the
158
- * array index indicates the sequence ID, and the value
159
- * is the sequence name
160
- */
161
- async getSequenceNames(e) {
162
- return Object.keys((await this._getIndexes(e)).name);
163
- }
164
- /**
165
- * @returns {array[string]} array of string sequence
166
- * names that are present in the index, in which the
167
- * array index indicates the sequence ID, and the value
168
- * is the sequence name
169
- */
170
- async getSequenceSizes(e) {
171
- const t = {}, i = await this._getIndexes(e), n = Object.values(i.id);
172
- for (let s = 0; s < n.length; s += 1)
173
- t[n[s].name] = n[s].length;
174
- return t;
175
- }
176
- /**
177
- * @returns {array[string]} array of string sequence
178
- * names that are present in the index, in which the
179
- * array index indicates the sequence ID, and the value
180
- * is the sequence name
181
- */
182
- async getSequenceSize(e, t) {
183
- var i;
184
- return (i = (await this._getIndexes(t)).name[e]) === null || i === void 0 ? void 0 : i.length;
185
- }
186
- /**
187
- *
188
- * @param {string} name
189
- * @returns {Promise[boolean]} true if the file contains the given reference sequence name
190
- */
191
- async hasReferenceSequence(e, t) {
192
- return !!(await this._getIndexes(t)).name[e];
193
- }
194
- /**
195
- *
196
- * @param {number} seqId
197
- * @param {number} min
198
- * @param {number} max
199
- */
200
- async getResiduesById(e, t, i, n) {
201
- const s = (await this._getIndexes(n)).id[e];
202
- if (s)
203
- return this._fetchFromIndexEntry(s, t, i, n);
204
- }
205
- /**
206
- * @param {string} seqName
207
- * @param {number} min
208
- * @param {number} max
209
- */
210
- async getResiduesByName(e, t, i, n) {
211
- const s = (await this._getIndexes(n)).name[e];
212
- if (s)
213
- return this._fetchFromIndexEntry(s, t, i, n);
214
- }
215
- //alias for getResiduesByName
216
- async getSequence(e, t, i, n) {
217
- return this.getResiduesByName(e, t, i, n);
218
- }
219
- async _fetchFromIndexEntry(e, t = 0, i, n) {
220
- let s = i;
221
- if (t < 0)
222
- throw new TypeError("regionStart cannot be less than 0");
223
- if ((s === void 0 || s > e.length) && (s = e.length), t >= s)
224
- return "";
225
- const r = S(e, t), a = S(e, s) - r;
226
- if (a > this.chunkSizeLimit)
227
- throw new Error(`data size of ${a.toLocaleString()} bytes exceeded chunk size limit of ${this.chunkSizeLimit.toLocaleString()} bytes`);
228
- const f = Buffer.allocUnsafe(a);
229
- return await this.fasta.read(f, 0, a, r, n), f.toString("utf8").replace(/\s+/g, "");
230
- }
231
- }
232
- class O extends B {
233
- constructor({ fasta: e, path: t, fai: i, faiPath: n, gzi: s, gziPath: r, chunkSizeLimit: a }) {
234
- super({ fasta: e, path: t, fai: i, faiPath: n, chunkSizeLimit: a }), e && s ? this.fasta = new y({
235
- filehandle: e,
236
- gziFilehandle: s
237
- }) : t && r && (this.fasta = new y({ path: t, gziPath: r }));
238
- }
239
- }
240
- function L(l) {
241
- return l.split(">").filter((e) => /\S/.test(e)).map((e) => {
242
- const [t, ...i] = e.split(`
243
- `), [n, ...s] = t.split(" "), r = i.join("").replace(/\s/g, "");
244
- return {
245
- id: n,
246
- description: s.join(" "),
247
- sequence: r
248
- };
249
- });
250
- }
251
- class v {
252
- constructor({ fasta: e, path: t }) {
253
- if (e)
254
- this.fasta = e;
255
- else if (t)
256
- this.fasta = new g(t);
257
- else
258
- throw new Error("Need to pass fasta or path");
259
- this.data = this.fasta.readFile().then((i) => {
260
- const n = i.toString("utf8");
261
- return L(n);
262
- });
263
- }
264
- async fetch(e, t, i) {
265
- const s = (await this.data).find((a) => a.id === e), r = i - t;
266
- if (!s)
267
- throw new Error(`no sequence with id ${e} exists`);
268
- return s.sequence.substr(t, r);
269
- }
270
- async getSequenceNames() {
271
- return (await this.data).map((t) => t.id);
272
- }
273
- }
274
- export {
275
- O as BgzipIndexedFasta,
276
- v as FetchableSmallFasta,
277
- B as IndexedFasta,
278
- L as parseSmallFasta
279
- };
@@ -1,96 +0,0 @@
1
- import { b as u } from "./index-C8lYPtq_.js";
2
- const h = typeof window < "u" ? window : typeof self < "u" ? self : { fetch: void 0 };
3
- class b {
4
- async getBufferFromResponse(e) {
5
- if (typeof e.buffer == "function")
6
- return e.buffer();
7
- if (typeof e.arrayBuffer == "function") {
8
- const t = await e.arrayBuffer();
9
- return u.Buffer.from(t);
10
- } else
11
- throw new TypeError("invalid HTTP response object, has no buffer method, and no arrayBuffer method");
12
- }
13
- constructor(e, t = {}) {
14
- this.baseOverrides = {}, this.url = e;
15
- const r = t.fetch || h.fetch && h.fetch.bind(h);
16
- if (!r)
17
- throw new TypeError("no fetch function supplied, and none found in global environment");
18
- t.overrides && (this.baseOverrides = t.overrides), this.fetchImplementation = r;
19
- }
20
- async fetch(e, t) {
21
- let r;
22
- try {
23
- r = await this.fetchImplementation(e, t);
24
- } catch (s) {
25
- if (`${s}`.includes("Failed to fetch"))
26
- console.warn(`generic-filehandle: refetching ${e} to attempt to work around chrome CORS header caching bug`), r = await this.fetchImplementation(e, {
27
- ...t,
28
- cache: "reload"
29
- });
30
- else
31
- throw s;
32
- }
33
- return r;
34
- }
35
- async read(e, t = 0, r, s = 0, o = {}) {
36
- const { headers: i = {}, signal: f, overrides: n = {} } = o;
37
- r < 1 / 0 ? i.range = `bytes=${s}-${s + r}` : r === 1 / 0 && s !== 0 && (i.range = `bytes=${s}-`);
38
- const l = {
39
- ...this.baseOverrides,
40
- ...n,
41
- headers: {
42
- ...i,
43
- ...n.headers,
44
- ...this.baseOverrides.headers
45
- },
46
- method: "GET",
47
- redirect: "follow",
48
- mode: "cors",
49
- signal: f
50
- }, a = await this.fetch(this.url, l);
51
- if (!a.ok)
52
- throw new Error(`HTTP ${a.status} ${a.statusText} ${this.url}`);
53
- if (a.status === 200 && s === 0 || a.status === 206) {
54
- const d = await this.getBufferFromResponse(a), w = d.copy(e, t, 0, Math.min(r, d.length)), m = a.headers.get("content-range"), c = /\/(\d+)$/.exec(m || "");
55
- return c && c[1] && (this._stat = { size: parseInt(c[1], 10) }), { bytesRead: w, buffer: e };
56
- }
57
- throw a.status === 200 ? new Error("${this.url} fetch returned status 200, expected 206") : new Error(`HTTP ${a.status} fetching ${this.url}`);
58
- }
59
- async readFile(e = {}) {
60
- let t, r;
61
- typeof e == "string" ? (t = e, r = {}) : (t = e.encoding, r = e, delete r.encoding);
62
- const { headers: s = {}, signal: o, overrides: i = {} } = r, f = {
63
- headers: s,
64
- method: "GET",
65
- redirect: "follow",
66
- mode: "cors",
67
- signal: o,
68
- ...this.baseOverrides,
69
- ...i
70
- }, n = await this.fetch(this.url, f);
71
- if (!n)
72
- throw new Error("generic-filehandle failed to fetch");
73
- if (n.status !== 200)
74
- throw Object.assign(new Error(`HTTP ${n.status} fetching ${this.url}`), {
75
- status: n.status
76
- });
77
- if (t === "utf8")
78
- return n.text();
79
- if (t)
80
- throw new Error(`unsupported encoding: ${t}`);
81
- return this.getBufferFromResponse(n);
82
- }
83
- async stat() {
84
- if (!this._stat) {
85
- const e = u.Buffer.allocUnsafe(10);
86
- if (await this.read(e, 0, 10, 0), !this._stat)
87
- throw new Error(`unable to determine size of file at ${this.url}`);
88
- }
89
- return this._stat;
90
- }
91
- async close() {
92
- }
93
- }
94
- export {
95
- b as R
96
- };