wuepgg3-track 7.0.2 → 7.0.3

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 { w as U, g, h as c, u as S, i as _, j as m, k as I, l as p } from "./index-D2xCvxdB.mjs";
1
+ import { w as U, g, h as c, u as S, i as _, j as m, k as I, l as p } from "./index-Dst209sN.mjs";
2
2
  const x = {
3
3
  name: "local-uniform-bit",
4
4
  vertex: {
@@ -1,5 +1,5 @@
1
- import { D as O, C as ee, m as D, n as Re, o as ce, M as F, E as R, p as Xe, w as $e, c as He, q as ze, s as Je, r as Ke, F as Qe, t as Ze, v as et, A as tt, R as nt, f as he } from "./index-D2xCvxdB.mjs";
2
- import { R as at, S as st, B as ot, a as rt, b as it, c as ct, A as lt, C as ht } from "./RenderTargetSystem-B4MC9aML.mjs";
1
+ import { D as O, C as ee, m as D, n as Re, o as ce, M as F, E as R, p as Xe, w as $e, c as He, q as ze, s as Je, r as Ke, F as Qe, t as Ze, v as et, A as tt, R as nt, f as he } from "./index-Dst209sN.mjs";
2
+ import { R as at, S as st, B as ot, a as rt, b as it, c as ct, A as lt, C as ht } from "./RenderTargetSystem-bLcPlyxk.mjs";
3
3
  let Z;
4
4
  function Ae(o) {
5
5
  const e = O.get().createCanvas(6, 1), t = e.getContext("2d");
@@ -1,4 +1,4 @@
1
- import { S as n, a as u, G as o, b as f } from "./index-D2xCvxdB.mjs";
1
+ import { S as n, a as u, G as o, b as f } from "./index-Dst209sN.mjs";
2
2
  const s = class i extends n {
3
3
  /**
4
4
  * @param options - The optional parameters of this filter.
@@ -1,5 +1,5 @@
1
- import { Z as Ve, U as oe, M as m, G as Ne, b as je, a as $e, _ as le, E as l, f as W, $ as w, a0 as qe, e as z, T, R as V, a1 as de, a2 as Ke, c as f, h as g, N as D, a3 as ue, w as ce, a4 as ee, a5 as he, a6 as pe, a7 as fe, a8 as me, H as P, a9 as Ye, C as E, D as N, O as v, aa as B, ab as Je, P as Xe, ac as Ze, B as Qe, x as te, ad as re, ae as p, l as et, v as O, af as tt, ag as rt, ah as st, ai as nt } from "./index-D2xCvxdB.mjs";
2
- import { F as at } from "./Filter-W7h2GrVp.mjs";
1
+ import { Z as Ve, U as oe, M as m, G as Ne, b as je, a as $e, _ as le, E as l, f as W, $ as w, a0 as qe, e as z, T, R as V, a1 as de, a2 as Ke, c as f, h as g, N as D, a3 as ue, w as ce, a4 as ee, a5 as he, a6 as pe, a7 as fe, a8 as me, H as P, a9 as Ye, C as E, D as N, O as v, aa as B, ab as Je, P as Xe, ac as Ze, B as Qe, x as te, ad as re, ae as p, l as et, v as O, af as tt, ag as rt, ah as st, ai as nt } from "./index-Dst209sN.mjs";
2
+ import { F as at } from "./Filter-Dee9z37f.mjs";
3
3
  var it = `in vec2 vMaskCoord;
4
4
  in vec2 vTextureCoord;
5
5
 
@@ -1,6 +1,6 @@
1
- import { D as R, a as F, E as d, J as O, j as B, w as p, g as z, b as ye, S as P, c as S, d as Ne, O as q, aj as Ce, h as g, aa as V, v as y, N, U as M, M as Z, ak as J, al as De, am as Q, an as Ie, ao as Ge, A as Ue, R as Fe, f as A } from "./index-D2xCvxdB.mjs";
2
- import { e as Oe, G as Pe, c as Me, b as Le, U as we, B as ee, d as C, f as te, g as He } from "./BufferResource-PGFg9nzM.mjs";
3
- import { R as Ve, S as Xe, d as ke } from "./RenderTargetSystem-B4MC9aML.mjs";
1
+ import { D as R, a as F, E as d, J as O, j as B, w as p, g as z, b as ye, S as P, c as S, d as Ne, O as q, aj as Ce, h as g, aa as V, v as y, N, U as M, M as Z, ak as J, al as De, am as Q, an as Ie, ao as Ge, A as Ue, R as Fe, f as A } from "./index-Dst209sN.mjs";
2
+ import { e as Oe, G as Pe, c as Me, b as Le, U as we, B as ee, d as C, f as te, g as He } from "./BufferResource-DXj79gGh.mjs";
3
+ import { R as Ve, S as Xe, d as ke } from "./RenderTargetSystem-bLcPlyxk.mjs";
4
4
  function We() {
5
5
  const { userAgent: t } = R.get().getNavigator();
6
6
  return /^((?!chrome|android).)*safari/i.test(t);
@@ -1,6 +1,6 @@
1
- import { I as L, a as A, E as l, J as D, l as ce, K as de, D as B, h as C, j as T, i as he, B as k, L as w, w as v, N as y, v as pe, O as le, U as z, Q as M, M as F, V as O, W as fe, X as I, Y as ge, S as W, c as R, A as me, R as _e, f as S } from "./index-D2xCvxdB.mjs";
2
- import { c as be, u as ye, U as xe, B as Ge, G as Pe, e as Be, l as Se, a as Te, t as Ce } from "./BufferResource-PGFg9nzM.mjs";
3
- import { R as ve, S as Ue, d as we } from "./RenderTargetSystem-B4MC9aML.mjs";
1
+ import { I as L, a as A, E as l, J as D, l as ce, K as de, D as B, h as C, j as T, i as he, B as k, L as w, w as v, N as y, v as pe, O as le, U as z, Q as M, M as F, V as O, W as fe, X as I, Y as ge, S as W, c as R, A as me, R as _e, f as S } from "./index-Dst209sN.mjs";
2
+ import { c as be, u as ye, U as xe, B as Ge, G as Pe, e as Be, l as Se, a as Te, t as Ce } from "./BufferResource-DXj79gGh.mjs";
3
+ import { R as ve, S as Ue, d as we } from "./RenderTargetSystem-bLcPlyxk.mjs";
4
4
  const G = A.for2d();
5
5
  class H {
6
6
  start(e, t, r) {
@@ -1,5 +1,5 @@
1
- import { x as O, y as Z, P as _, z as Q, E as P, k as ee, w as y, f as D, H as V } from "./index-D2xCvxdB.mjs";
2
- import "./init-Cy76NrRS.mjs";
1
+ import { x as O, y as Z, P as _, z as Q, E as P, k as ee, w as y, f as D, H as V } from "./index-Dst209sN.mjs";
2
+ import "./init-C3fhQHX9.mjs";
3
3
  class te {
4
4
  constructor(e) {
5
5
  this._lastTransform = "", this._observer = null, this._tickerAttached = !1, this.updateTranslation = () => {
@@ -343141,7 +343141,7 @@ const lg = (c) => {
343141
343141
  },
343142
343142
  test: () => !0,
343143
343143
  load: async () => {
343144
- await import("./browserAll-CG7JAblE.mjs");
343144
+ await import("./browserAll-CwYcavqo.mjs");
343145
343145
  }
343146
343146
  }, iJe = {
343147
343147
  extension: {
@@ -343151,7 +343151,7 @@ const lg = (c) => {
343151
343151
  },
343152
343152
  test: () => typeof self < "u" && self.WorkerGlobalScope !== void 0,
343153
343153
  load: async () => {
343154
- await import("./webworkerAll-DtX5ptKr.mjs");
343154
+ await import("./webworkerAll-C2bXWxJT.mjs");
343155
343155
  }
343156
343156
  };
343157
343157
  class Bh {
@@ -352363,17 +352363,17 @@ async function ZVe(c) {
352363
352363
  for (let i = 0; i < e.length; i++) {
352364
352364
  const s = e[i];
352365
352365
  if (s === "webgpu" && await jVe()) {
352366
- const { WebGPURenderer: o } = await import("./WebGPURenderer-AhApp3po.mjs");
352366
+ const { WebGPURenderer: o } = await import("./WebGPURenderer-EW62UjS_.mjs");
352367
352367
  n = o, h = { ...c, ...c.webgpu };
352368
352368
  break;
352369
352369
  } else if (s === "webgl" && KVe(
352370
352370
  c.failIfMajorPerformanceCaveat ?? FG.defaultOptions.failIfMajorPerformanceCaveat
352371
352371
  )) {
352372
- const { WebGLRenderer: o } = await import("./WebGLRenderer-yx4xYIRO.mjs");
352372
+ const { WebGLRenderer: o } = await import("./WebGLRenderer-CzBvLi02.mjs");
352373
352373
  n = o, h = { ...c, ...c.webgl };
352374
352374
  break;
352375
352375
  } else if (s === "canvas") {
352376
- const { CanvasRenderer: o } = await import("./CanvasRenderer-BbiN3ivk.mjs");
352376
+ const { CanvasRenderer: o } = await import("./CanvasRenderer-BAPUkyP3.mjs");
352377
352377
  n = o, h = { ...c, ...c.canvasOptions };
352378
352378
  break;
352379
352379
  }
@@ -398968,14 +398968,14 @@ const la0 = /* @__PURE__ */ new Set([
398968
398968
  );
398969
398969
  }), JM = X3(_a0), ma0 = 3, va0 = () => new Worker(new URL(
398970
398970
  /* @vite-ignore */
398971
- "/assets/createFetchWorker-9mg_hYRk.js",
398971
+ "./assets/createFetchWorker-9mg_hYRk.js",
398972
398972
  import.meta.url
398973
398973
  ), {
398974
398974
  type: "module"
398975
398975
  }), Ua0 = () => new Worker(
398976
398976
  new URL(
398977
398977
  /* @vite-ignore */
398978
- "/assets/createFetchGenomeAlignWorker-uOhBp_Is.js",
398978
+ "./assets/createFetchGenomeAlignWorker-uOhBp_Is.js",
398979
398979
  import.meta.url
398980
398980
  ),
398981
398981
  { type: "module" }
package/dist/index.es.js CHANGED
@@ -1,4 +1,4 @@
1
- import { ap as s, aq as o, ar as r, as as t, at as n, au as i, av as b, aw as l, ax as c, ay as g, az as m, aA as p, aB as S, aC as T, aD as C, aE as d, aF as u, aG as f, aH as y, aI as k, aJ as G, aK as L, aL as M, aM as D, aN as O, aO as F, aP as I, aQ as A, aR as E, aS as _, aT as B, aU as R, aV as h, aW as v, aX as x, aY as N, aZ as P, a_ as H, a$ as w, b0 as U, b1 as q, b2 as z, b3 as J, b4 as V, b5 as X, b6 as j, b7 as K, b8 as Y, b9 as Q, ba as W, bb as Z, bc as $, bd as aa, be as ea, bf as sa, bg as oa, bh as ra, bi as ta, bj as na, bk as ia, bl as ba, bm as la, bn as ca, bo as ga, bp as ma, bq as pa, br as Sa, bs as Ta, bt as Ca, bu as da, bv as ua, bw as fa, bx as ya, by as ka, bz as Ga, bA as La, bB as Ma, bC as Da, bD as Oa, bE as Fa, bF as Ia } from "./index-D2xCvxdB.mjs";
1
+ import { ap as s, aq as o, ar as r, as as t, at as n, au as i, av as b, aw as l, ax as c, ay as g, az as m, aA as p, aB as S, aC as T, aD as C, aE as d, aF as u, aG as f, aH as y, aI as k, aJ as G, aK as L, aL as M, aM as D, aN as O, aO as F, aP as I, aQ as A, aR as E, aS as _, aT as B, aU as R, aV as h, aW as v, aX as x, aY as N, aZ as P, a_ as H, a$ as w, b0 as U, b1 as q, b2 as z, b3 as J, b4 as V, b5 as X, b6 as j, b7 as K, b8 as Y, b9 as Q, ba as W, bb as Z, bc as $, bd as aa, be as ea, bf as sa, bg as oa, bh as ra, bi as ta, bj as na, bk as ia, bl as ba, bm as la, bn as ca, bo as ga, bp as ma, bq as pa, br as Sa, bs as Ta, bt as Ca, bu as da, bv as ua, bw as fa, bx as ya, by as ka, bz as Ga, bA as La, bB as Ma, bC as Da, bD as Oa, bE as Fa, bF as Ia } from "./index-Dst209sN.mjs";
2
2
  export {
3
3
  s as ACTION_TOOLS,
4
4
  o as AppStateLoader,
package/dist/index.umd.js CHANGED
@@ -1126,7 +1126,7 @@ ${t}`);this.samples=i.slice(9)}_parseGenotypes(e,c){const h=c.split(" "),t={},i=
1126
1126
  * depending on the file.
1127
1127
  *
1128
1128
  * @license MIT
1129
- */class EY{constructor(e){rr(this,"url");rr(this,"bigWigPromise");rr(this,"usingProxy",!1);rr(this,"chromNamingCache",null);this.url=e,this.bigWigPromise=this.loadBigWig(e)}async loadBigWig(e){return new Promise((c,h)=>{iY(new N2(e),(t,i)=>{i?h(i):c(t)})})}switchToProxy(){this.usingProxy=!0,this.chromNamingCache=null,this.bigWigPromise=this.loadBigWig(iQr(this.url))}async detectChromosomeNaming(){if(this.chromNamingCache!==null)return this.chromNamingCache;try{const e=await this.bigWigPromise,c=Object.keys(e.chromsToIDs||{})[0];return c?(this.chromNamingCache=!Wh[c]&&Object.values(Wh).some(h=>h.has(c)),this.chromNamingCache):(this.chromNamingCache=!1,!1)}catch{return this.usingProxy?(console.error("Error detecting chromosome naming. Check URL and file format."),null):(this.switchToProxy(),this.detectChromosomeNaming())}}async getData(e,c,h){const t=h.ensemblStyle??await this.detectChromosomeNaming(),i=async()=>{const a=await this.bigWigPromise,l=h.zoomLevel===void 0||h.zoomLevel===pwr.AUTO?this._getMatchingZoomLevel(a,c):Number.parseInt(h.zoomLevel);return e.map(_=>{let U=t?_.chr.replace("chr",""):_.chr;return U==="M"&&(U="MT"),this._getDataForChromosome({..._,chr:U},a,l)})};let s;try{s=await Promise.all(await i())}catch(a){if(!this.usingProxy)this.switchToProxy(),s=await Promise.all(await i());else throw a}const o=s.flat();for(let a of o)a.min-=1;return t&&e.forEach((a,l)=>{s[l].forEach(_=>_.chr=a.chr)}),o}_getMatchingZoomLevel(e,c){if(!c)return-1;if(e.zoomLevels.length===1)return 0;let t=e.zoomLevels.slice().sort((i,s)=>s.reduction-i.reduction).find(i=>i.reduction<c);return e.zoomLevels.findIndex(i=>i===t)}_getDataForChromosome(e,c,h){const t=e.start+1,i=e.end;return new Promise((s,o)=>{try{h===-1?c.readWigData(e.chr,t,i,s):c.getZoomedView(h).readWigData(e.chr,t,i,s)}catch(a){o(a)}})}}function sQr(n){let e=[];for(let t of n._navContext._features){let i=new Ke(t.locus.chr,t.locus.start,t.locus.end);e.push(new on(t.name,i))}let c=new si(n._navContext._name,e);return new f0(c,n._startBase,n._endBase)}const mS={WashU:"https://lambda.epigenomegateway.org/v3"};let ph={};const uS={geneannotation:async function(e){let c,h;const t=e.trackModel;t.apiConfig&&t.apiConfig.genome?c=t.apiConfig.genome:c=e.genomeName,t.apiConfig&&t.apiConfig.format in mS?h=mS[`${t.apiConfig.format}`]:h=mS.WashU;try{const i=e.nav.map(async o=>{const a=`${h}/${c}/genes/${e.name}/queryRegion?chr=${o.chr}&start=${o.start}&end=${o.end}`;try{const l=await fetch(a,{method:"GET",mode:"cors",cache:"default",credentials:"omit"});if(!l.ok)throw new Error(`HTTP error! status: ${l.status}`);return l.json()}catch(l){throw console.error(`Error fetching data for region ${o.chr}:${o.start}-${o.end}:`,l),l}});return(await Promise.all(i)).flat()}catch(i){throw console.error("Error in refGeneFetch:",i),i}},snp:async function(e){const c={hg19:"https://grch37.rest.ensembl.org/overlap/region/human",hg38:"https://rest.ensembl.org/overlap/region/human"},h=e.genomeName in c?c[`${e.genomeName}`]:null;if(!h)return[];const t={"Content-Type":"application/json"};try{const i=e.nav.map(async o=>{if(o.end-o.start>3e4)throw new Error("Please zoom in to see content. ");const a=`${h}/${o.chr.substr(3)}:${o.start}-${o.end}?content-type=application%2Fjson&feature=variation`;try{const l=await fetch(a,{headers:t,mode:"cors",cache:"default"});if(!l.ok)throw new Error(`HTTP error! status: ${l.status}`);return l.json()}catch(l){throw o.end-o.start>3e4?new Error("Please zoom in to see content. "):(console.error(`Error fetching SNP data for region ${o.chr}:${o.start}-${o.end}: `,l),l)}});return(await Promise.all(i)).flat()}catch(i){throw console.error("Error in snpFetch:",i),i}},bed:async function(e){return rc(e,"bedOrTabix")},bedcolor:async function(e){return rc(e,"bedOrTabix")},omeroidr:async function(e){return rc(e,"bedOrTabix")},bedgraph:async function(e){return rc(e,"bedOrTabix")},qbed:async function(e){return rc(e,"bedOrTabix")},dbedgraph:async function(e){return rc(e,"bedOrTabix")},boxplot:async function(e){return rc(e,"big")},modbed:async function(e){return rc(e,"bedOrTabix")},jaspar:async function(e){return rc(e,"jaspar")},bigbed:async function(e){return rc(e,"bigbed")},bigbedcolor:async function(e){return rc(e,"bigbed")},refbed:async function(e){return rc(e,"bedOrTabix")},matplot:async function(e){return rc(e,"bedOrTabix")},bigwig:async function(e){return rc(e,"big")},categorical:async function(e){return rc(e,"bedOrTabix")},longrange:async function(e){return rc(e,"bedOrTabix")},dynseq:async function(e){return rc(e,"big")},repeatmasker:async function(e){return rc(e,"repeatmasker")},rmskv2:async function(e){return rc(e,"rmskv2")},biginteract:async function(e){return rc(e,"big")},methylc:async function(e){return rc(e,"bedOrTabix")},genomealign:function(e){return rc(e,"bedOrTabix")},vcf:function(e){return rc(e,"vcf")},hic:function(e){return rc(e,"hic")},bam:function(e){return rc(e,"bam")}};async function rc(n,e){const c=n.trackModel.indexUrl||null;let h=null;if(!ph[n.trackModel.url])if(e==="bedOrTabix")ph[n.trackModel.url]=new yYr(n.trackModel.url,c);else if(e==="vcf")ph[n.trackModel.url]=new MYr(n.trackModel.url,c);else if(e==="bigbed")ph[n.trackModel.url]=new EY(n.trackModel.url);else if(e==="big")ph[n.trackModel.url]=new aS(n.trackModel.url);else if(e==="repeatmasker")ph[n.trackModel.url]=new EY(n.trackModel.url);else if(e==="rmskv2")ph[n.trackModel.url]=new aS(n.trackModel.url);else if(e==="jaspar")ph[n.trackModel.url]=new aS(n.trackModel.url);else if(e==="hic")ph[n.trackModel.url]=new Zv(n.trackModel.url);else if(e==="bam")ph[n.trackModel.url]=new wY(n.trackModel.url);else throw new Error(`Unsupported track type: ${e}. `);h=ph[n.trackModel.url];try{if(h){if(n.trackModel.options.trackType=n.trackModel.type,e==="jaspar"&&n.basesPerPixel>2)throw new Error("Please zoom in to see content. ");if((e==="repeatmasker"||e==="rmskv2")&&n.basesPerPixel>1e3)throw new Error("Please zoom in to see content. ");return e==="bigbed"?h.getData(n.nav,n.basesPerPixel,n.trackModel.options).then(t=>(ph[n.trackModel.url]=null,t)).catch(t=>{throw ph[n.trackModel.url]=null,t}):e==="hic"?h.getData(sQr(n.visRegion),n.basesPerPixel,n.trackModel.options).then(t=>{const i=ph[n.trackModel.url].getFileInfo();return{data:t,fileInfos:i}}).catch(t=>{throw ph[n.trackModel.url]=null,t}):h.getData(n.nav,n.basesPerPixel,n.trackModel.options).then(t=>(ph[n.trackModel.url]=null,t)).catch(t=>{throw ph[n.trackModel.url]=null,t})}}catch(t){throw h=null,t}}const QU=1200,oQr=P.memo(function({genomeName:e,tracks:c,viewRegion:h,windowWidth:t}){const i=P.useRef(e),[s,o]=P.useState(null),[a,l]=P.useState(null),[_,U]=P.useState(!1),m=P.useRef({}),u=P.useRef(null);function d(){l(null)}function C(){return e?p6(e):null}function A(M){return h||(M!=null&&M.defaultRegion?M.defaultRegion:null)}function f(M){return M?!c||!Array.isArray(c)||c.length===0?"Invalid data source":null:"Invalid region"}function E(M,H){var O;const R=((O=hn[M])==null?void 0:O.defaultOptions)||{};return H?{...R,...H,packageVersion:!0,trackManagerRef:Q_.has(M)?u.current:null}:{...R,packageVersion:!0,trackManagerRef:Q_.has(M)?u.current:null}}function y(M,H){let R=[];return customElements&&M.defaultTracks&&!c?R=M.defaultTracks.map((O,q)=>{if(O.type)return O.id=`${H}-${q}`,O.options=E(O.type,O.options?O.options:{}),O}).filter(Boolean):R=c.map((O,q)=>new Tr({type:O.type,name:O.name?O.name:O.type==="ruler"?"ruler":`track ${q+1}`,url:O.url,options:E(O.type,O.options),id:ai()})),R.forEach(O=>{var q,j;O.type==="hic"?m.current[`${O.id}`]||(m.current[`${O.id}`]=new Zv(O.url)):O.type==="dynamichic"?(q=O.tracks)==null||q.map((lr,Dr)=>{m.current[`${O.id}subtrack${Dr}`]=new Zv(O.tracks[Dr].url)}):O.type in{matplot:"",dynamic:"",dynamicbed:"",dynamiclongrange:""}?(j=O.tracks)==null||j.map((lr,Dr)=>{lr.id=`${O.id}subtrack${Dr}`}):O.type==="bam"&&(m.current[`${O.id}`]=new wY(O.url))}),R}function w(M,H,R,O){var lr,Dr;const q=M.navContext,j=M.navContext.parse(H);return{genomeConfig:M,primaryGenName:((Dr=(lr=M.genome)==null?void 0:lr.getName)==null?void 0:Dr.call(lr))||e,basesByPixel:R/(j.end-j.start),genomicLoci:[Ke.parse(H)],trackModelArr:O,viewWindow:new Re(0,R),visData:{visWidth:R,visRegion:new f0(q,j.start,j.end),viewWindow:new Re(0,R),viewWindowRegion:new f0(q,j.start,j.end)}}}async function x(M,H,R){if(R)return R.map(q=>{var lr;const j={viewWindow:M.viewWindow,startWindow:0,visRegion:M.visData.visRegion,visWidth:H};return{genomeName:M.primaryGenName,genesArr:q.genesArr,trackState:j,windowWidth:H,configOptions:q.trackModel.options,basesByPixel:M.basesByPixel,trackModel:q.trackModel,getGenePadding:(lr=hn[`${q.trackModel.type}`])==null?void 0:lr.getGenePadding,ROW_HEIGHT:hn[`${q.trackModel.type}`].ROW_HEIGHT,genomeConfig:M.genomeConfig}});{const O=await wYr([M]),q=[];return O[0].fetchResults.forEach(lr=>{lr.trackModel.type==="hic"?q.push(m.current[`${lr.trackModel.id}`].getData(M.visData.visRegion,M.visData.visRegion.getWidth()/H?H:QU,lr.trackModel.options).then(Dr=>{lr.result=Dr})):lr.trackModel.type==="bam"&&q.push(m.current[`${lr.trackModel.id}`].getData(M.genomicLoci).then(Dr=>{lr.result=Dr}))}),await Promise.all(q),O[0].fetchResults.map(lr=>{var Ur;const Dr={viewWindow:M.viewWindow,startWindow:0,visRegion:M.visData.visRegion,visWidth:H};function gr(nr,Q){const X=M.genomeConfig;let J;try{J=W5[`${lr.trackModel.type}`]({gene:Q,feature:Q,snp:Q,vcf:Q,trackModel:lr.trackModel,pageX:nr.pageX,pageY:nr.pageY,name:X.genome._name,onClose:d,isThereG3dTrack:!1,setShow3dGene:null,configOptions:lr.trackModel.options})}catch(Y){J=D.jsxs("div",{style:{position:"absolute",left:nr.pageX,top:nr.pageY,background:"#fff0f0",border:"1px solid red",padding:"8px",zIndex:1001,borderRadius:4},children:[D.jsxs("span",{style:{color:"red"},children:["Tooltip error: ",String(Y)]}),D.jsx("button",{style:{marginLeft:8},onClick:d,children:"✕"})]})}U(!0),l(b0.createPortal(J,document.body))}function ir(nr,Q,X,J,Y="",V="",er=""){let _r;try{J==="norm"?_r=W5.normModbed({bs:X,pageX:nr.pageX,pageY:nr.pageY,feature:Q,onClose:d}):_r=W5.barModbed({feature:Q,pageX:nr.pageX,pageY:nr.pageY,onCount:Y,onPct:V,total:er,onClose:d})}catch(Br){_r=b0.createPortal(D.jsxs("div",{style:{position:"absolute",left:nr.pageX,top:nr.pageY,background:"#fff0f0",border:"1px solid red",padding:"8px",zIndex:1001,borderRadius:4},children:[D.jsxs("span",{style:{color:"red"},children:["Tooltip error: ",String(Br)]}),D.jsx("button",{style:{marginLeft:8},onClick:d,children:"✕"})]}),document.body)}U(!0),l(_r)}return{genomeName:M.primaryGenName,genesArr:kf(lr.result,lr.trackModel.type),trackState:Dr,windowWidth:H,configOptions:lr.trackModel.options,basesByPixel:M.basesByPixel,trackModel:lr.trackModel,getGenePadding:(Ur=hn[`${lr.trackModel.type}`])==null?void 0:Ur.getGenePadding,ROW_HEIGHT:hn[`${`${lr.trackModel.type}`}`].ROW_HEIGHT,genomeConfig:M.genomeConfig,renderTooltip:lr.trackModel.type==="modbed"?ir:gr}})}}function k(M){return M.map(H=>{const R=G7(H);return D.jsx("div",{style:{borderBottom:"1px solid #d3d3d3",width:(t||QU)+120},children:typeof R=="object"&&Object.prototype.hasOwnProperty.call(R,"numHidden")?R.component:R},H.trackModel.id)})}async function p({genomeConfig:M,region:H,width:R,genomeKey:O,prevGenomeDrawData:q}){const j=f(H);if(j){o(j);return}const lr=y(M,O),Dr=w(M,H,R,lr),gr=await x(Dr,R,q),ir=k(gr);o({element:ir,genomeDrawData:gr,genomeConfig:M,genomeKey:O})}return P.useEffect(()=>{async function M(){i.current=ai();const H=C();if(!H){o("Invalid genome");return}const R=A(H);await p({genomeConfig:H,region:R,width:t||QU,genomeKey:i.current,prevGenomeDrawData:void 0})}M()},[e,customElements]),P.useEffect(()=>{if(s&&i.current===s.genomeKey){async function M(){const H=s.genomeConfig,R=A(H);await p({genomeConfig:H,region:R,width:t||QU,genomeKey:s.genomeKey,prevGenomeDrawData:void 0})}M()}},[h,c]),P.useEffect(()=>{if(s&&i.current===s.genomeKey){async function M(){const H=s.genomeConfig,R=A(H);await p({genomeConfig:H,region:R,width:t||QU,genomeKey:s.genomeKey,prevGenomeDrawData:s.genomeDrawData})}M()}},[t]),D.jsx("div",{ref:u,style:{display:"flex",position:"relative"},children:s?typeof s=="string"?D.jsx("div",{style:{color:"red"},children:s}):D.jsxs("div",{children:[D.jsx("div",{className:_?"visible":"hidden",children:a}),s.element]}):""})}),rd=window.requestAnimationFrame,r9=window.cancelAnimationFrame,aQr=n=>({name:n.name,type:n.type,filetype:n.filetype,options:n.options,url:n.url,indexUrl:n.indexUrl,metadata:n.metadata,queryEndpoint:n.queryEndpoint,querygenome:n.querygenome,id:n.id,isSelected:n.isSelected,tracks:n.tracks}),lQr=new oqr,vS={[P0.ZoomOutOneThirdFold]:{factor:4/3,text:"⅓×",title:"Zoom out 1/3-fold"},[P0.ZoomOutOneFold]:{factor:2,text:"1×",title:"Zoom out 1-fold (Alt+O)"},[P0.ZoomOutFiveFold]:{factor:5,text:"5×",title:"Zoom out 5-fold"},[P0.ZoomInOneThirdFold]:{factor:2/3,text:"⅓×",title:"Zoom in 1/3-fold"},[P0.ZoomInOneFold]:{factor:.5,text:"1×",title:"Zoom in 1-fold (Alt+I)"},[P0.ZoomInFiveFold]:{factor:.2,text:"5×",title:"Zoom in 5-fold"}};function ed(n){let e=0;for(let c=0;c<n.length;c++)e+=n[c];return e}const yY=5;function Wo(n){if(!n)return;let e=[];for(let t of n._navContext._features){let i=new Ke(t.locus.chr,t.locus.start,t.locus.end);e.push(new on(t.name,i,t.strand,t.value))}let c=new si(n._navContext._name,e);return new f0(c,n._startBase,n._endBase)}function _Qr(n,e){let c=[];for(let h of n){let t=e.navContext.getFeaturesInInterval("start"in h?h.start:h._startBase,"end"in h?h.end:h._endBase);c.push(t.map((i,s)=>i.getLocus()))}return c}const UQr=new Set(["aggregateMethod","smooth","hiddenPixels","displayMode","height","rowHeight","maxRows","hideMinimalItems","sortItems"]),mQr=P.memo(function({windowWidth:e,legendWidth:c,genomeConfig:h,userViewRegion:t,highlights:i,tracks:s,viewRegion:o,onNewRegion:a,onNewHighlight:l,onTracksChange:_,onNewRegionSelect:U,tool:m,Toolbar:u,showGenomeNav:d,showToolBar:C,isThereG3dTrack:A,setScreenshotData:f,selectedRegionSet:E,isScreenShotOpen:y,setShow3dGene:w,infiniteScrollWorkers:x,fetchGenomeAlignWorker:k,currentState:p,darkTheme:M}){var h3,t3;const H=P.useContext(Oj),R=P.useRef({key:-0,done:{},groups:{},selected:{}}),O=P.useRef(!0),q=P.useRef(null),j=P.useRef(!1),lr=P.useRef("Drag"),Dr=P.useRef(!0),gr=P.useRef(0),ir=P.useRef(e);ir.current=e;const Ur=P.useRef(""),nr=P.useRef(0),Q=P.useRef(0),X=P.useRef(0),J=P.useRef(0),Y=P.useRef(null),V=P.useRef(0),er=P.useRef(0),_r=P.useRef(0),Br=P.useRef({}),Er=P.useRef({x:0,y:0}),Hr=P.useRef({x:0,y:0}),Mr=P.useRef(0),Gr=P.useRef(0),Rr=P.useRef(!1),me=P.useRef(null),xr=P.useRef(null),re=P.useRef(p.limit),Yr=P.useRef(p.index),_e=Math.max(8,Math.min(12,ir.current*.008)),ze=Math.max(12,Math.min(12,ir.current*.009)),wr=P.useRef({bundleId:"",customTracksPool:[],darkTheme:!1,genomeName:h.genome.getName(),highlights:[],isShowingNavigator:!0,layout:{global:{},layout:{},borders:[]},metadataTerms:[],regionSetView:null,regionSets:[],caches:{},globalConfig:{viewWindow:new Re(ir.current,ir.current*2)},viewRegion:t,trackLegendWidth:c,tracks:[]}),Pe=P.useRef({}),ge=P.useRef(0),fe=P.useRef(0),Ie=P.useRef(0),Me=P.useRef(null),Ue=P.useRef(0),Se=P.useRef(0),s0=P.useRef(!1),a0=P.useRef(!1),x0=P.useRef("right"),mr=P.useRef(!1),$=P.useRef([ir.current]),Z=P.useRef([]),Ar=P.useRef({}),Ir=P.useRef({}),jr=P.useRef(!1),Qr=P.useRef(-0),Ne=P.useRef({rightIdx:0,leftIdx:1,viewWindow:new Re(ir.current,ir.current*2),trackStates:{}}),j0=P.useRef(a8.throttle((vr,kr)=>{Mr.current.style.transform=`translateY(${kr}px)`,Gr.current.style.transform=`translate3d(${vr}px, 0, 0)`},16)).current,H0=P.useRef([]),l0=P.useRef(null),[E0,vn]=P.useState({}),[p0,Cn]=P.useState([]),[Dn,dn]=P.useState(!1),[yn,$c]=P.useState({isSelected:!1,title:"none"}),[wn,Xn]=P.useState({}),[Gn,Vn]=P.useState([]),[xn,Cc]=P.useState(null),[gc,Lc]=P.useState({suggestedMetaSets:new Set,terms:new Array,termValues:{}}),[X1,G1]=P.useState(null),Hi=P.useRef([]),Hs=P.useRef([]),Wt=P.useMemo(()=>{var vr,kr,yr,ie,Ce,De,ne,xe,ue,de,oe,ae,ye,We,He,n0,Ge,S,N,F,G;if((kr=(vr=wn==null?void 0:wn.completedFetchedRegion)==null?void 0:vr.current)!=null&&kr.key&&j.current&&((de=(ue=(xe=(ne=(De=(Ce=Ne.current.trackStates)==null?void 0:Ce[(ie=(yr=wn==null?void 0:wn.completedFetchedRegion)==null?void 0:yr.current)==null?void 0:ie.key])==null?void 0:De.trackState)==null?void 0:ne.genomicFetchCoord)==null?void 0:xe[h.genome.getName()])==null?void 0:ue.primaryVisData)!=null&&de.viewWindowRegion)){const hr=(He=(We=(ye=(ae=(oe=Ne.current.trackStates)==null?void 0:oe[wn.completedFetchedRegion.current.key])==null?void 0:ae.trackState)==null?void 0:ye.genomicFetchCoord)==null?void 0:We[h.genome.getName()])==null?void 0:He.primaryVisData,tr=Wo(hr.viewWindowRegion);return Wo(tr)}else{const hr=(G=(F=(N=(S=(Ge=Ne.current.trackStates)==null?void 0:Ge[(n0=wn.completedFetchedRegion)==null?void 0:n0.current.key])==null?void 0:S.trackState)==null?void 0:N.genomicFetchCoord)==null?void 0:F[h.genome.getName()])==null?void 0:G.primaryVisData;return hr?Wo(hr.viewWindowRegion):t}},[wn]);P.useEffect(()=>{if(i){let vr=p1(i);vr&&Vn([...vr])}},[Wt]);const Qa=(vr,kr)=>{let yr=null;return(...ie)=>{yr||(vr(...ie),yr=setTimeout(()=>{yr=null},kr))}},V1=P.useRef(U);V1.current=U;const $o=P.useRef(Qa((vr,kr,yr)=>{V1.current(vr,kr,yr)},150));function Lo(){const vr={};return Hi.current.forEach(kr=>{kr&&Array.isArray(kr)&&kr.forEach(yr=>{if(yr.trackModelArr&&Array.isArray(yr.trackModelArr)){yr.trackModelArr.forEach(ie=>{ie&&ie.id&&(vr[ie.id]||(vr[ie.id]=[]),vr[ie.id].push({missingIdx:yr.missingIdx,genomicLoci:yr.genomicLoci}))});return}})}),vr}const K1=vr=>{Hi.current.push(vr),j1()},Rt=vr=>{s0.current&&!j.current?Hs.current=[vr]:Hs.current.push(vr),wh()},j1=async()=>{if(Hi.current.length===0){vn({});return}vn(Lo());const vr=Hi.current.pop();if(x.current&&x.current.worker.length>0&&vr.length>0&&vr[0].trackDataIdx===Qr.current){for(const kr of x.current.worker)kr.hasOnMessage===!1&&(kr.fetchWorker.onmessage=Os,kr.hasOnMessage=!0);for(let kr=0;kr<vr.length;kr++){const yr=Zr.cloneDeep(vr[kr]);for(const ie of vr[kr].trackModelArr){let Ce=0,De=x.current.worker[0].processingCount;for(let ne=1;ne<x.current.worker.length;ne++)x.current.worker[ne].processingCount<De&&(De=x.current.worker[ne].processingCount,Ce=ne);x.current.worker[Ce].processingCount++,x.current.worker[Ce].fetchWorker.postMessage([{...yr,trackModelArr:[ie],_workerIdx:Ce}])}}}},wh=()=>{if(Hs.current.length===0)return;const vr=Hs.current.pop();k.current&&(k.current.hasOnMessage===!1&&(k.current.fetchWorker.onmessage=Ko,k.current.hasOnMessage=!0),k.current.fetchWorker.postMessage(vr))},J1=P.useCallback(()=>{Rr.current=!0,Y.current&&(me.current=Y.current.getBoundingClientRect())},[]),Ot=P.useCallback(()=>{Rr.current=!1,me.current=null,xr.current!==null&&(r9(xr.current),xr.current=null),Mr.current&&Gr.current&&(Mr.current.style.display="none",Gr.current.style.display="none")},[]);function qt(vr){if(Rr.current){const ie=me.current||Y.current.getBoundingClientRect(),Ce=vr.clientX-ie.left,De=vr.clientY-ie.top;Er.current={x:vr.clientX,y:vr.clientY},Hr.current={x:Ce,y:De},xr.current!==null&&r9(xr.current),xr.current=rd(()=>{Mr.current&&Gr.current&&(Mr.current.style.display="block",Gr.current.style.display="block",j0(Ce,De)),xr.current=null})}else Mr.current&&Gr.current&&(Mr.current.style.display="none",Gr.current.style.display="none");if(Dr.current===!1||!mr.current||a0.current)return;const kr=Ue.current-vr.pageX;Ue.current=vr.pageX;let yr=Se.current;yr-=kr,!(x0.current==="right"&&-yr>=Math.floor(ed($.current)+ir.current))&&(x0.current==="left"&&yr>=Math.floor(ed(Z.current)+ir.current)||(Se.current-=kr,r9(Ie.current),Ie.current=rd(()=>{Me.current&&(Me.current.style.transform=`translate3d(${Se.current}px, 0, 0)`,Me.current.querySelectorAll(".Track-border-container").forEach(ie=>{ie.style.transform=`translate3d(${-Se.current}px, 0, 0)`})),p0.forEach(ie=>{ie.legendRef.current&&(ie.legendRef.current.style.transform=`translate3d(${-Se.current}px, 0, 0)`)})})))}function Xo(vr){vr.button===0&&(mr.current=!0,Ue.current=vr.pageX,Mr.current&&Gr.current&&(Mr.current.style.display="none",Gr.current.style.display="none"),vr.preventDefault())}function Ws(vr,kr){const yr=vr.getWidth()/ir.current,ie=Math.round(-1*yr*kr),Ce=vr.getNavigationContext(),[De,ne]=vr.getContextCoordinates(),xe=Ce.toGaplessCoordinate(Math.max(0,De+ie)),ue=Ce.toGaplessCoordinate(Math.min(ne+ie,Ce.getTotalBases()-1));return new Re(xe,ue)}function r3(vr){if(vr.length===1)return vr[0].toString();{const kr=vr[0],yr=vr[vr.length-1];return kr.toStringWithOther(yr)}}function B1(){var Ce,De,ne,xe,ue,de,oe,ae,ye,We;if(mr.current=!1,Mr.current&&Gr.current&&(Mr.current.style.display="block",Gr.current.style.display="block"),ge.current===Se.current||!q.current)return;ge.current=Se.current;let vr,kr;if(j.current&&((ue=(xe=(ne=(De=(Ce=Ne.current.trackStates)==null?void 0:Ce[Qr.current])==null?void 0:De.trackState)==null?void 0:ne.genomicFetchCoord[h.genome.getName()])==null?void 0:xe.primaryVisData)!=null&&ue.viewWindowRegion)){const He=(ye=(ae=(oe=(de=Ne.current.trackStates)==null?void 0:de[Qr.current])==null?void 0:oe.trackState)==null?void 0:ae.genomicFetchCoord[h.genome.getName()])==null?void 0:ye.primaryVisData;kr=Ws(Wo(He.viewWindowRegion),Se.current%ir.current-(x0.current==="left"?ir.current:0)),vr=kr.start;const n0=h.navContext.getFeaturesInInterval(kr.start,kr.end);r3(n0)}else{if(vr=nr.current+-Se.current*fe.current,vr>q.current.navContext._totalBases||vr<=0)return;wr.current.viewRegion._startBase=vr,wr.current.viewRegion._endBase=vr+X.current,kr={start:vr,end:vr+X.current}}a(kr.start,kr.end),V.current=vr;const yr=Math.ceil(Se.current/ir.current);Se.current>0&&x0.current==="right"?x0.current="left":Se.current<=0&&x0.current==="left"&&(x0.current="right");let ie=x0.current==="right"?new Re(-(Se.current%ir.current+-ir.current),-(Se.current%ir.current+-ir.current)+ir.current):new Re(ir.current*3-(Se.current%ir.current+ir.current),ir.current*3-Se.current%ir.current);-Se.current>=ed($.current)&&Se.current<0?($.current.push(ir.current),Oi(0,"right",ie)):Se.current>=ed(Z.current)&&Se.current>0&&(Z.current.push(ir.current),Oi(0,"left",ie)),Ne.current.viewWindow=ie,Qr.current===yr?l0.current={viewWindow:ie,groupScale:null,dataIdx:yr,contextNavCoord:{start:vr,end:vr+X.current}}:(Qr.current=yr,(We=Ne.current.trackStates[yr])!=null&&We.trackState.visData&&n1(yr))}function e3(vr){const kr=wr.current.caches[vr];for(const yr in kr)Lh(yr)&&"dataCache"in wr.current.caches[vr][yr]&&delete wr.current.caches[vr][yr].dataCache;delete R.current.done[vr],n1(Qr.current)}const W2=P.useCallback(vr=>{const kr=[];for(const yr of vr)kr.push(Zr.cloneDeep(yr.trackModel));wr.current.tracks=Zr.cloneDeep(kr),_(Zr.cloneDeep(wr.current.tracks))},[_]);function $t(vr){wr.current.globalConfig||(wr.current.globalConfig={}),wr.current.globalConfig[`${vr.trackModel.id}`]=Zr.cloneDeep(vr)}function Go(vr,kr=null,yr=null){var oe;let ie=[],Ce=[];const De=[],ne=Object.keys(Br.current).length;let xe={};for(const ae in Br.current){let ye=Zr.cloneDeep(wr.current.tracks.find(We=>We.id===ae)||null);if(ye){ye.options=wr.current.globalConfig&&wr.current.globalConfig[`${ae}`]!==void 0&&wr.current.globalConfig[`${ae}`].configOptions!==void 0?Zr.cloneDeep(wr.current.globalConfig[`${ae}`].configOptions):{},yr&&kr==="displayMode"&&(ye.options.displayMode=yr),yr&&kr==="scoreScale"&&(ye.options.scoreScale=yr),yr&&kr==="yScale"&&(ye.options.yScale=yr),ye.type==="hic"&&(xe[`${ye.id}`]=(oe=wr.current.caches[`${ye.id}`])==null?void 0:oe.fileInfos),ye.options.trackId=ae;const He=ff(ye).getMenuComponents();ie.push(He),Ce.push(ye.options),De.push(ye)}}const ue=Zr.intersection(...ie);return{key:ai(),handleDelete:Rs,handleAdd:Lt,pageX:Pe.current.left,pageY:Pe.current.top,viewportX:Pe.current.viewportX,viewportY:Pe.current.viewportY,onConfigMenuClose:Uh,selectCount:ne,configOptions:Ce,items:ue,onConfigChange:Vo,blockRef:Y,tracks:De,fileInfos:xe,trackId:vr}}function Vo(vr,kr,yr=null){let ie={},Ce=!1;(vr==="displayMode"||vr==="scoreScale"||vr==="yScale")&&Cc(Go(yr,vr,kr)),vr==="label"&&yr?wr.current.tracks.map(ne=>{if(ne.id===yr){let xe=Zr.cloneDeep(ne.options),ue=Zr.cloneDeep(kr);ne.options={...xe,[vr]:String(ue)},ie[`${yr}`]={[vr]:kr}}}):wr.current.tracks.map(ne=>{if(ne.isSelected){let xe=Zr.cloneDeep(ne.options),ue=Zr.cloneDeep(kr);if(ne.options={...xe,[vr]:ue},ie[`${ne.id}`]={[vr]:kr},vr==="normalization"||vr==="binSize"){$t({configOptions:{...wr.current.globalConfig&&wr.current.globalConfig[`${ne.id}`]?wr.current.globalConfig[`${ne.id}`].configOptions:{},...ne.options},trackModel:ne,id:ne.id,usePrimaryNav:!1});const de=wr.current.caches[ne.id];for(const oe in de)Lh(oe)&&"dataCache"in wr.current.caches[ne.id][oe]&&(R.current.done[vr]=!1,wr.current.caches[ne.id][oe]={})}else if(vr==="yMax"||vr==="yMin"||vr==="yScale"){const de=wr.current.globalConfig&&wr.current.globalConfig[ne.id]&&wr.current.globalConfig[ne.id].configOptions?wr.current.globalConfig[ne.id].configOptions:null,oe=de?de.group:null;if(oe){Ce=!0;for(const ae in wr.current.globalConfig){const ye=wr.current.globalConfig[ae];if(ye&&ye.configOptions&&ye.configOptions.group===oe){ye.configOptions={...ye.configOptions,[vr]:kr};const We=wr.current.tracks.find(He=>`${He.id}`==`${ae}`);if(We){let He=Zr.cloneDeep(We.options),n0=Zr.cloneDeep(kr);We.options={...He,[vr]:n0},ie[`${ae}`]={[vr]:kr},$t({configOptions:{...wr.current.globalConfig&&wr.current.globalConfig[`${ae}`]?wr.current.globalConfig[`${ae}`].configOptions:{},...We.options},trackModel:We,id:ae,usePrimaryNav:!1})}else $t({configOptions:{...ye.configOptions},trackModel:null,id:ae,usePrimaryNav:!1})}}}else try{const ae=`${ne.id}`,ye=wr.current.tracks.find(n0=>`${n0.id}`===ae)||null;let We={};wr.current.globalConfig&&wr.current.globalConfig[ae]?We=wr.current.globalConfig[ae].configOptions||{}:ye&&(We={...hn[ye.type]?hn[`${ye.type}`].defaultOptions:{},...ye.options||{}});const He={...We,...ie[ae]};$t({configOptions:He,trackModel:ye,id:ae,trackIdx:wr.current.tracks.findIndex(n0=>`${n0.id}`===ae)})}catch{}}else{if(vr==="aggregateMethod"){const de=wr.current.caches[ne.id];for(const oe in de)Lh(oe)&&"xvalues"in wr.current.caches[ne.id][oe]&&delete wr.current.caches[ne.id][oe].xvalues}try{const de=`${ne.id}`,oe=wr.current.tracks.find(We=>`${We.id}`===de)||null;let ae={};wr.current.globalConfig&&wr.current.globalConfig[de]?ae=wr.current.globalConfig[de].configOptions||{}:oe&&(ae={...hn[oe.type]?hn[`${oe.type}`].defaultOptions:{},...oe.options||{}});const ye={...ae,...ie[de]};$t({configOptions:ye,trackModel:oe,id:de,trackIdx:wr.current.tracks.findIndex(We=>`${We.id}`===de)})}catch{}}}}),wr.current.viewRegion._startBase?wr.current.viewRegion._startBase:nr.current,wr.current.viewRegion._endBase?wr.current.viewRegion._endBase:Q.current+X.current;const De=l0.current!==null?Zr.cloneDeep(l0.current):{viewWindow:new Re(ir.current,ir.current*2),dataIdx:Qr.current};if(vr==="normalization"||vr==="binSize")n1(Qr.current);else if(vr!=="legendFontColor"&&vr!=="label"){De.tracksToDrawId=ie,(UQr.has(vr)||Ce)&&$i(De.viewWindow,Qr.current,De.tracksToDrawId);const ne=De.tracksToDrawId||{};Object.keys(ne).length>0&&G1({dataIdx:Qr.current,viewWindow:De.viewWindow,groupScale:Ne.current.trackStates[Qr.current].trackState.groupScale,trackToDrawId:ne})}_(Zr.cloneDeep(wr.current.tracks))}function Wi(vr,kr,yr,ie,Ce){Pe.current={left:vr,top:kr,viewportX:ie,viewportY:Ce},Cc(Go(yr))}function Mc(vr,kr){if(vr.shiftKey){const yr=kr;let ie;Br.current[yr]===""?ie=!1:ie=!0,ie?Br.current[yr]="":delete Br.current[yr];const Ce=wr.current.tracks.map(De=>De.id in Br.current?new Tr({...De,isSelected:!0}):new Tr({...De,isSelected:!1}));if(wr.current.tracks=Ce,O.current){const De=p0.map(ne=>({...ne,trackModel:Ce.find(xe=>xe.id===ne.trackModel.id)||ne.trackModel}));Cn(De)}_(Ce),xn&&Object.keys(Br.current).length>0?Wi(vr.pageX,vr.pageY,yr,vr.clientX,vr.clientY):Cc(null)}else{const yr=kr;yr&&Object.keys(Br.current).length>0&&!(yr in Br.current)&&(Ri(),_(Zr.cloneDeep(wr.current.tracks)),Cc(null))}}function Oh(vr,kr){if(vr.preventDefault(),kr.trackModel.id in Br.current)Wi(vr.pageX,vr.pageY,kr.trackModel.id,vr.clientX,vr.clientY);else{Ri();const yr=wr.current.tracks.map(ie=>ie.id===kr.trackModel.id?new Tr({...ie,isSelected:!0}):ie);if(wr.current.tracks=yr,O.current){const ie=p0.map(Ce=>({...Ce,trackModel:yr.find(De=>De.id===Ce.trackModel.id)||Ce.trackModel}));Cn(ie)}Br.current[`${kr.trackModel.id}`]="",_(yr),Wi(vr.pageX,vr.pageY,kr.trackModel.id,vr.clientX,vr.clientY)}}const Uh=P.useCallback(()=>{Cc(null)},[]),Ri=P.useCallback(()=>{Object.keys(Br.current).length!==0&&(wr.current.tracks.forEach(vr=>{vr.isSelected=!1}),Br.current={})},[_]),Rs=P.useCallback(vr=>{const kr=[];for(let yr=0;yr<wr.current.tracks.length;yr++){const ie=wr.current.tracks[yr];if(!vr.includes(String(ie.id))){const Ce=Zr.cloneDeep(ie);Ce.changeConfigInitial=!0,kr.push(Ce)}}wr.current.tracks=kr;for(const yr of vr)yr in Br.current&&delete Br.current[yr];_(Zr.cloneDeep(wr.current.tracks)),vr.length>0&&Uh()},[_,Uh]);function Lt(vr,kr){let yr=null;kr==="matplot"&&(yr=new Tr({id:ai(),type:"matplot",name:"matplot wrap",tracks:vr})),yr&&(wr.current.tracks=[...wr.current.tracks,yr],_(Zr.cloneDeep(wr.current.tracks)),Uh())}async function Oi(vr=0,kr,yr){if(!q.current)return;let ie,Ce=[],De=[],ne=[],xe,ue,de;if(vr===1){ne=[{start:_r.current-X.current*2,end:er.current},{start:_r.current-X.current,end:er.current+X.current},{start:_r.current,end:er.current+X.current*2}],De.push({start:_r.current-X.current,end:_r.current}),De.push({start:er.current-X.current,end:er.current}),De.push({start:er.current,end:er.current+X.current}),H0.current=[_r.current-X.current,_r.current,_r.current+X.current],ie=new f0(q.current.navContext,_r.current,er.current);const We=new f0(q.current.navContext,_r.current-X.current,er.current+X.current),He=ir.current/ie.getWidth(),n0=We.getWidth()*He,Ge=ie.getContextCoordinates(),S=We.getContextCoordinates(),N=Ge.start-S.start,F=S.end-Ge.end,G=N*He,hr=F*He;xe={visWidth:E&&X.current===q.current.navContext._totalBases?n0-hr:n0,visRegion:We,viewWindow:E&&X.current===q.current.navContext._totalBases?new Re(0,n0-hr):new Re(G,n0-hr),viewWindowRegion:ie},ue=q.current.navContext.getFeaturesInInterval(_r.current-X.current,er.current+X.current).map((ar,Nr)=>ar.getLocus()),_r.current=_r.current-X.current*2,er.current=er.current+X.current*2,de=_Qr(De,q.current)}else if(kr==="right"){ie=new f0(q.current.navContext,er.current-X.current,er.current),Ce=q.current.navContext.getFeaturesInInterval(er.current-X.current,er.current).map((Lr,Kr)=>Lr.getLocus());let He=q.current.navContext.getFeaturesInInterval(er.current-X.current*2,er.current-X.current),n0=new f0(q.current.navContext,er.current-X.current*2,er.current-X.current);de=He.map((Lr,Kr)=>Lr.getLocus());const Ge=new f0(q.current.navContext,er.current-X.current*3,er.current),S=ir.current/n0.getWidth(),N=Ge.getWidth()*S,F=n0.getContextCoordinates(),G=Ge.getContextCoordinates(),hr=F.start-G.start,tr=G.end-F.end,ar=hr*S,Nr=tr*S;xe={visWidth:E&&X.current===q.current.navContext._totalBases?Nr:N,visRegion:Ge,viewWindow:E&&X.current===q.current.navContext._totalBases?new Re(0,Nr):new Re(ar,N-Nr),viewWindowRegion:n0},ue=q.current.navContext.getFeaturesInInterval(er.current-X.current*3,er.current).map((Lr,Kr)=>Lr.getLocus()),H0.current.push(er.current-X.current),er.current=er.current+X.current}else{ie=new f0(q.current.navContext,_r.current,_r.current+X.current),Ce=q.current.navContext.getFeaturesInInterval(_r.current,_r.current+X.current).map((Lr,Kr)=>Lr.getLocus());let He=q.current.navContext.getFeaturesInInterval(_r.current+X.current,_r.current+X.current*2),n0=new f0(q.current.navContext,_r.current+X.current,_r.current+X.current*2);de=He.map((Lr,Kr)=>Lr.getLocus());const Ge=new f0(q.current.navContext,_r.current,_r.current+X.current*3),S=ir.current/n0.getWidth(),N=Ge.getWidth()*S,F=n0.getContextCoordinates(),G=Ge.getContextCoordinates(),hr=F.start-G.start,tr=G.end-F.end,ar=hr*S,Nr=tr*S;xe={visWidth:E&&X.current===q.current.navContext._totalBases?Nr:N,visRegion:Ge,viewWindow:E&&X.current===q.current.navContext._totalBases?new Re(0,Nr):new Re(ar,N-Nr),viewWindowRegion:n0},ue=q.current.navContext.getFeaturesInInterval(_r.current,_r.current+X.current*3).map((Lr,Kr)=>Lr.getLocus()),H0.current.unshift(_r.current),_r.current=_r.current-X.current}let oe={};oe[`${q.current.genome.getName()}`]={genomicLoci:Ce,regionExpandLoci:ne[1]},oe[`${q.current.genome.getName()}`].primaryVisData=xe;let ae=Se.current,ye={primaryGenName:q.current.genome.getName(),initial:vr,side:kr,xDist:ae,genomicFetchCoord:oe,regionLoci:de,visData:xe,regionExpandLoci:ue,viewWindow:yr,initVisData:vr?ne.map((We,He)=>{var pr,Lr,Kr;const n0=new f0((pr=q.current)==null?void 0:pr.navContext,De[He].start,De[He].end),Ge=new f0((Lr=q.current)==null?void 0:Lr.navContext,We.start,We.end),S=ir.current/n0.getWidth(),N=Ge.getWidth()*S,F=n0.getContextCoordinates(),G=Ge.getContextCoordinates(),hr=F.start-G.start,tr=G.end-F.end,ar=hr*S,Nr=tr*S;return{visWidth:E&&X.current===((Kr=q.current)==null?void 0:Kr.navContext._totalBases)?N-Nr:N,visRegion:Ge,viewWindow:new Re(ar,N-Nr),viewWindowRegion:n0}}):""};eqr({trackState:ye,globalTrackState:Ne})}const Os=async vr=>{await Promise.all(vr.data.map(async kr=>{var De;const yr=kr.trackToDrawId?kr.trackToDrawId:{},ie=kr.trackDataIdx;if(Ne.current.trackStates[ie]===void 0)return Promise.resolve();const Ce={...Ne.current.trackStates[ie].trackState,primaryGenName:(De=q.current)==null?void 0:De.genome.getName()};await Promise.all(kr.fetchResults.map(async ne=>{yr[`${ne.id}`]="",await qs({trackState:Ce,result:ne.result,id:ne.id,trackType:ne.trackModel.type?ne.trackModel.type:ne.name?ne.name:"",metadata:ne.metadata,trackModel:ne.trackModel,curFetchNav:ne.name==="bam"?ne.curFetchNav:"",missingIdx:kr.missingIdx,trackDataIdx:kr.trackDataIdx,fileInfos:ne.fileInfos,errorType:ne.errorType})})).then(()=>{const ne=Qr.current,xe=[ne-1,ne,ne+1],ue={};for(let de in yr){const oe=wr.current.caches[de];if(oe)if(oe.error)ue[de]=!1;else if(j.current||oe.useExpandedLoci||!oe.usePrimaryNav)(oe[ne]&&oe[ne].dataCache||!oe.usePrimaryNav)&&(ue[de]=!1);else{let ae=!0;for(let ye of xe)if(!oe[ye]||!oe[ye].dataCache){ae=!1;break}ae&&(ue[de]=!1)}}Object.keys(ue).length>0&&(R.current.key!==ne&&(R.current.key=ne,R.current.done={},R.current.groups={}),nc({trackDataIdx:kr.trackDataIdx,initial:kr.initial,trackToDrawId:ue,missingIdx:kr.missingIdx,curDataIdx:kr.trackDataIdx}),j1())})})).then(()=>{var yr,ie;const kr=(yr=x.current)==null?void 0:yr.worker;if(kr){const Ce=(ie=vr.data[0])==null?void 0:ie._workerIdx;Ce!==void 0&&kr[Ce]&&(kr[Ce].processingCount=Math.max(0,kr[Ce].processingCount-1))}}).catch(kr=>{var ie,Ce;console.error("Error in createInfiniteOnMessage:",kr);const yr=(ie=x.current)==null?void 0:ie.worker;if(yr){const De=(Ce=vr.data[0])==null?void 0:Ce._workerIdx;De!==void 0&&yr[De]&&(yr[De].processingCount=Math.max(0,yr[De].processingCount-1))}})},Ko=vr=>{var De;const kr=vr.data.navData.trackDataIdx,yr={...Ne.current.trackStates[kr].trackState,primaryGenName:(De=q.current)==null?void 0:De.genome.getName(),...vr.data.navData},ie=vr.data.navData.fetchNewRegion,Ce=vr.data.navData.dragX;Promise.all(Object.values(vr.data.fetchResults).map(ne=>qs({trackState:yr,result:ne.records,id:ne.id,trackType:ne.trackModel.type,metadata:ne.metadata,trackModel:ne.trackModel,curFetchNav:ne.name==="bam"?ne.curFetchNav:"",missingIdx:yr.missingIdx,trackDataIdx:vr.data.navData.trackDataIdx,queryGenome:ne.query,errorType:ne.errorType}))).then(()=>{var ne,xe;try{if(Ne.current.trackStates[yr.missingIdx?yr.missingIdx:yr.trackDataIdx].trackState.startWindow=vr.data.navData.regionSetStartBp!==0?yr.genomicFetchCoord[(ne=q.current)==null?void 0:ne.genome.getName()].primaryVisData.viewWindow.start:0,Ne.current.trackStates[yr.missingIdx?yr.missingIdx:yr.trackDataIdx].trackState.genomicFetchCoord=yr.genomicFetchCoord,Ne.current.trackStates[yr.missingIdx?yr.missingIdx:yr.trackDataIdx].trackState.visWidth=yr.genomicFetchCoord[(xe=q.current)==null?void 0:xe.genome.getName()].primaryVisData.visWidth,Lh(yr.missingIdx)){const ue={};for(const de of wr.current.tracks)de.type==="genomealign"&&(ue[de.id]=!1);if(yr.fetchAfterGenAlignTracks.length>0){for(const de of yr.fetchAfterGenAlignTracks)de.genomicFetchCoord=yr.genomicFetchCoord;R.current.key!==yr.trackDataIdx&&(R.current.key=yr.trackDataIdx,R.current.done={},R.current.groups={}),(ie||Ce===Se.current)&&(nc({curDataIdx:yr.trackDataIdx,isInitial:void 0,trackToDrawId:ue,missingIdx:yr.missingIdx,trackDataIdx:yr.trackDataIdx}),K1(yr.fetchAfterGenAlignTracks))}else nc({curDataIdx:yr.trackDataIdx,isInitial:0,trackToDrawId:ue,missingIdx:yr.missingIdx})}wh()}catch{R.current.key!==yr.trackDataIdx&&(R.current.key=yr.trackDataIdx,R.current.done={},R.current.groups={});const de={};for(const oe in wr.current.caches)wr.current.caches[oe].trackType==="genomealign"&&wr.current.caches[oe].error&&(de[oe]=!1);yr.fetchAfterGenAlignTracks.length>0&&(yr.genomicFetchCoord=null,K1(yr.fetchAfterGenAlignTracks)),nc({curDataIdx:yr.trackDataIdx,trackToDrawId:de})}}).catch(ne=>{console.error("Error in createGenomeAlignOnMessage:",ne),R.current.key!==yr.trackDataIdx&&(R.current.key=yr.trackDataIdx,R.current.done={},R.current.groups={});const xe={};for(const ue in wr.current.caches)wr.current.caches[ue].trackType==="genomealign"&&wr.current.caches[ue].error&&(xe[ue]=!1);yr.fetchAfterGenAlignTracks.length>0&&(yr.genomicFetchCoord=null,K1(yr.fetchAfterGenAlignTracks)),nc({curDataIdx:yr.trackDataIdx,trackToDrawId:xe})})};function n1(vr){var ne;if(!q.current)return;const kr={};let yr=!1;const ie=vr,Ce=[vr-1,vr,vr+1];let De=!1;for(const[xe,ue]of Object.entries(wr.current.caches)){let de=!0;for(const oe of Ce)if(oe in ue||(ue.useExpandedLoci||!ue.usePrimaryNav)&&oe!==ie||(wr.current.caches[xe][oe]={}),oe in ue){if((ue.useExpandedLoci||!ue.usePrimaryNav)&&oe!==ie)continue;const ae=ue.trackType==="genomealign",ye=!("dataCache"in ue[oe])||(ae||!ue.usePrimaryNav)&&!j.current;ie===oe&&ae&&ye?(De=!0,de=!1,yr=!0):ye&&(de=!1,yr=!0)}de&&(kr[xe]=!1)}if(yr){const xe=[];for(const ue of Ce){let de=[],oe=ue in Ne.current.trackStates?(ne=Ne.current.trackStates[ue])==null?void 0:ne.trackState:"";for(const ae in wr.current.caches){const ye=wr.current.caches[ae];if(!((ye.useExpandedLoci||!ye.usePrimaryNav)&&ue!==ie||ye.trackType==="genomealign")&&ue in ye&&(!("dataCache"in ye[ue])||!ye.usePrimaryNav&&!j.current)){let We=wr.current.tracks.find(He=>He.id===Number(ae)||He.id===ae);if(We){wr.current.caches[ae][ue].dataCache=null;const He=Zr.cloneDeep(We);if(He.error=ye.error,He.shouldPlaceRegion=ye.firstLoad&&ye.usePrimaryNav&&!ye.useExpandedLoci,He.shouldPlaceRegion&&ue!==ie)continue;de.push(He)}}}if(de.length>0){const ae=q.current.genome.getName();xe.push({primaryGenName:ae,trackModelArr:de,visData:oe.visData?oe.visData:oe.genomicFetchCoord?oe.genomicFetchCoord[`${ae}`].primaryVisData:"",genomicLoci:oe.regionLoci,visRegion:oe.visRegion?oe.visRegion:oe.genomicFetchCoord?oe.genomicFetchCoord[`${ae}`].primaryVisData.visRegion:"",regionExpandLoci:oe.regionExpandLoci,useFineModeNav:j.current,windowWidth:ir.current,bpRegionSize:X.current,trackDataIdx:ie,missingIdx:ue,genomicFetchCoord:oe==null?void 0:oe.genomicFetchCoord})}}for(const ue in wr.current.caches)wr.current.caches[ue].firstLoad=!1;if(s0.current&&De){const ue=wr.current.tracks.filter((ye,We)=>ye.type==="genomealign"),de=Ne.current.trackStates[ie].trackState,ae=q.current.navContext.getFeaturesInInterval(V.current,V.current+X.current).map((ye,We)=>ye.getLocus());Rt({trackToFetch:ue,visData:de.visData,genomicLoci:de.regionLoci,viewWindowGenomicLoci:ae,primaryGenName:q.current.genome.getName(),trackModelArr:ue,regionExpandLoci:de.regionExpandLoci,useFineModeNav:j.current,windowWidth:ir.current,bpRegionSize:X.current,fetchAfterGenAlignTracks:xe,trackDataIdx:ie,missingIdx:ie,fetchNewRegion:!0})}else K1(xe)}Object.keys(kr).length>0&&(!De||s0.current&&!j.current)&&!O.current&&Qr.current!==R.current.key&&(R.current.key=Qr.current,R.current.done={},R.current.groups={},nc({curDataIdx:Qr.current,trackToDrawId:{...kr}}))}function c1(){const vr=performance.memory;return vr?vr.usedJSHeapSize/(1024*1024)>2e3:!1}function nc(vr){var kr,yr,ie,Ce;for(const De in wr.current.caches){const ne=wr.current.caches[De],xe=Object.keys(ne).filter(oe=>Lh(oe)).map(Number).sort((oe,ae)=>oe-ae);let ue,de;ne.trackType in $X||!ne.usePrimaryNav?(ue=Qr.current-(c1()?1:2),de=Qr.current+(c1()?1:2)):(ue=Qr.current-(c1()?2:3),de=Qr.current+(c1()?2:3));for(const oe of xe)(oe<ue||oe>de)&&wr.current.caches[De][oe]&&(wr.current.caches[De][oe]={})}if(vr&&Object.keys(vr.trackToDrawId).length>0){let De;const ne=(kr=q.current)==null?void 0:kr.genome.getName();if(j.current&&Ne.current.trackStates[vr.curDataIdx].trackState.genomicFetchCoord){const ue={...Ne.current.trackStates[vr.curDataIdx].trackState}.genomicFetchCoord[ne].primaryVisData,de=ue.viewWindow,oe=Ne.current.viewWindow;let ae;oe?(ae=oe.start,oe.end):ae=0;let ye;const We=Wo(ue.viewWindowRegion);ye=Ws(Wo(We),Se.current%ir.current-(x0.current==="left"?ir.current:0)),a(ye.start,ye.end);const He=ae-ir.current+de.start,n0=He+ir.current;De=new Re(He,n0)}else E&&X.current===q.current.navContext._totalBases?De=new Re(0,ir.current):De=Ne.current.viewWindow;for(const xe in vr.trackToDrawId){let ue,de;if(wr.current.globalConfig&&xe in wr.current.globalConfig?ue=wr.current.globalConfig[xe].configOptions:(de=Gt(xe),de&&hn[`${wr.current.caches[xe].trackType}`]&&(ue={...hn[`${wr.current.caches[xe].trackType}`].defaultOptions,...de.options})),ue&&ue.group&&wr.current.caches[xe].trackType in jX){const oe=ue.group;R.current.groups[`${oe}`]||(R.current.groups[`${oe}`]={}),R.current.groups[`${oe}`][`${xe}`]=vr.trackToDrawId[`${xe}`]}else $i(De,vr.curDataIdx,{[xe]:!1}),R.current.done[`${xe}`]=vr.trackToDrawId[`${xe}`]}for(const xe in R.current.groups){const ue=Object.keys(R.current.groups[`${xe}`]),de=new Set(wr.current.tracks.filter(ae=>ae.options&&String(ae.options.group)===xe).map(ae=>ae.id));let oe=!0;for(let ae of ue){if(!de.has(ae)){oe=!1;break}if((Ce=(ie=(yr=R.current)==null?void 0:yr.groups)==null?void 0:ie.done)!=null&&Ce[ae]&&R.current.groups.done[ae]===!0){oe=!1;break}}oe&&($i(De,vr.curDataIdx,{...R.current.groups[`${xe}`]}),R.current.done={...R.current.done,...R.current.groups[`${xe}`]})}P.startTransition(()=>Xn({trackToDrawId:{...R.current.done},viewWindow:X.current===q.current.navContext._totalBases?{start:0,end:ir.current}:De,completedFetchedRegion:R}))}}async function qs(vr){var yr,ie,Ce,De;const kr=vr.result;if(vr.fileInfos&&(wr.current.caches[`${vr.id}`].fileInfos=vr.fileInfos),Lh(vr.missingIdx)&&wr.current.caches[`${vr.id}`][vr.missingIdx]){const ne=vr.trackDataIdx?vr.trackDataIdx:Qr.current,xe=[ne+1,ne,ne-1];let ue;try{let de=[];for(let oe of xe)if((De=(Ce=(ie=(yr=Ne.current)==null?void 0:yr.trackStates)==null?void 0:ie[oe])==null?void 0:Ce.trackState)!=null&&De.regionLoci)de.push(Ne.current.trackStates[oe].trackState.regionLoci);else{de=[];break}ue=kf(kr,vr.trackType,vr.trackModel.shouldPlaceRegion,de)}catch(de){ue=[],wr.current.caches[`${vr.id}`].error="data format error",console.error("formatDataByType failed for track",vr.id,de)}if(vr!=null&&vr.errorType)wr.current.caches[`${vr.id}`].error=vr==null?void 0:vr.errorType;else if(vr.trackModel.shouldPlaceRegion)for(let de=0;de<3;de++)wr.current.caches[`${vr.id}`][xe[de]].dataCache=ue[de];else wr.current.caches[`${vr.id}`][vr.missingIdx].dataCache=ue}}function Eh(vr,kr,yr="isJump",ie=!1){const Ce=kr-vr;if(Ce<yY){const De=.5*(yY-Ce);vr-=De,kr+=De}if(String(yr)in vS||yr===P0.Zoom||yr===P0.PanLeft||yr===P0.PanRight||yr==="isJump")wr.current.viewRegion._startBase=vr,wr.current.viewRegion._endBase=kr,$o.current(vr,kr,ie);else if(yr===P0.Highlight){let De={start:vr,end:kr,display:!0,color:"rgba(0, 123, 255, 0.25)",tag:""};const ne=[...i,De];l(ne)}}function Xt(vr,kr,yr){const ie=Zr.sortedIndexBy(kr,{contextBase:vr},"contextBase"),Ce=yr[ie]||0;return vr+Ce}function p1(vr){var Ce,De,ne,xe,ue,de,oe;let kr=[];const yr=(oe=(de=(ue=(xe=(ne=Ne.current.trackStates)==null?void 0:ne[(De=(Ce=wn==null?void 0:wn.completedFetchedRegion)==null?void 0:Ce.current)==null?void 0:De.key])==null?void 0:xe.trackState)==null?void 0:ue.genomicFetchCoord)==null?void 0:de[h.genome.getName()])==null?void 0:oe.navContextBuilder,ie=new th(Wt,ir.current);for(const ae of vr){let ye,We;yr?(We=Xt(ae.start,yr._gaps,yr._cumulativeGapBases),ye=Xt(ae.end,yr._gaps,yr._cumulativeGapBases)):(We=ae.start,ye=ae.end);const He=ie.baseSpanToXSpan(new Re(We,ye)),n0=He.start+Math.floor(-Se.current/ir.current)*ir.current,Ge=He.end+Math.floor(-Se.current/ir.current)*ir.current;let S={xPos:n0,width:Ge-n0,side:"right",start:ae.start,end:ae.end,color:ae.color,display:ae.display,tag:ae.tag};kr.push(S)}return kr}function qh(vr){var yr;const kr={};if(kr.isSelected=!1,vr===P0.PanLeft)Eh(Math.round(V.current-X.current),Math.round(V.current),vr);else if(vr===P0.PanRight)Eh(Math.round(V.current+X.current),Math.round(V.current+X.current*2),vr);else if(String(vr)in vS){let Ce=new f0((yr=q.current)==null?void 0:yr.navContext,V.current,V.current+X.current).zoom(vS[`${vr}`].factor);Eh(Ce._startBase,Ce._endBase,vr)}else m.tool===P0.Drag?kr.isSelected=!1:m.tool&&m.tool!==P0.highlightMenu&&m.tool!==P0.ReorderMany&&m.tool!==P0.History&&(kr.isSelected=!0);return kr.title=vr,a0.current=kr.isSelected,kr}function $h(vr){var De;wr.current.caches[`${vr.id}`]||(wr.current.caches[`${vr.id}`]={}),vr.type==="genomealign"&&(fe.current<10&&(j.current=!0),s0.current=!0),vr.type in{matplot:"",dynamic:"",dynamicbed:"",dynamiclongrange:"",dynamichic:""}&&((De=vr.tracks)==null||De.map((ne,xe)=>{ne.id=`${vr.id}subtrack${xe}`})),wr.current.caches[`${vr.id}`].queryGenome="querygenome"in vr&&vr.querygenome?vr.querygenome:"genome"in vr.metadata&&vr.metadata.genome?vr.metadata.genome:q.current.genome.getName();const kr=wr.current.caches[`${vr.id}`].queryGenome;wr.current.caches[`${vr.id}`].usePrimaryNav=!(kr&&kr!==q.current.genome.getName()),wr.current.caches[`${vr.id}`].useExpandedLoci=vr.type in $X,wr.current.caches[`${vr.id}`].firstLoad=!0,wr.current.caches[`${vr.id}`].trackType=vr.type,Gt(vr.id)?wr.current.tracks=wr.current.tracks.map(ne=>String(ne.id)===String(vr.id)?vr:ne):wr.current.tracks.push(vr),wr.current.caches[`${vr.id}`].error=null;const ie=vr;wr.current.globalConfig||(wr.current.globalConfig={});let Ce={};Q_.has(ie.type)&&(Ce={trackManagerRef:Y.current}),wr.current.globalConfig[`${ie.id}`]={configOptions:{...hn[ie.type]?hn[`${ie.type}`].defaultOptions:{},...ie.options||{},...Ce,usePrimaryNav:wr.current.caches[`${vr.id}`].usePrimaryNav},trackModel:ie,id:ie.id}}function Gt(vr){return wr.current.tracks.find(kr=>String(kr.id)===String(vr))||null}const Vt=()=>{O.current=!0,R.current={key:-0,done:{},groups:{}},j.current=!1,Ur.current="",nr.current=0,Q.current=0,X.current=0,J.current=0,Hi.current=[],V.current=0,er.current=0,_r.current=0,Br.current={},Er.current={x:0,y:0},wr.current={bundleId:"",customTracksPool:[],darkTheme:!1,genomeName:q.current?q.current.genome.getName():"",highlights:[],isShowingNavigator:!0,layout:{global:{},layout:{},borders:[]},metadataTerms:[],regionSetView:null,regionSets:[],viewRegion:new f0(q.current.navContext,q.current.defaultRegion.start,q.current.defaultRegion.end),trackLegendWidth:c,tracks:s&&s.length>=0?s.filter(vr=>vr.type!=="g3d"):q.current.defaultTracks},Pe.current={},ge.current=0,fe.current=0,Ie.current=0,Ue.current=0,Se.current=0,x0.current="right",mr.current=!1,$.current=[ir.current],Z.current=[],Ne.current={rightIdx:0,leftIdx:1,viewWindow:new Re(ir.current,ir.current*2),trackStates:{}},wr.current.caches={},Qr.current=-0,Cc(null)};function yh(){nr.current=q.current.defaultRegion.start,Q.current=q.current.defaultRegion.end,X.current=Q.current-nr.current,fe.current=X.current/ir.current,J.current=ir.current/X.current,V.current=nr.current,er.current=Q.current,_r.current=nr.current;const vr=[];for(let kr=0;kr<wr.current.tracks.length;kr++){const yr=P.createRef();wr.current.tracks[kr].legendWidth=c,$h(wr.current.tracks[kr]),vr.push({trackIdx:kr,id:wr.current.tracks[kr].id,component:LX,legendRef:yr,trackModel:wr.current.tracks[kr],hasAllRegionData:!1})}Ls(wr.current.tracks),Oi(1,"right",new Re(ir.current,ir.current*2)),n1(0),Cn(vr)}function jo(vr){if(jr.current&&(Ar.current[`${vr}`]="",Object.keys(Ar.current).length===p0.length)){Ar.current={},jr.current=!1,O.current=!1,$c(yr=>m.tool&&(m.tool===P0.Reorder||m.tool===P0.Highlight||m.tool===P0.Zoom)?qh(m.tool):{isSelected:!1,title:P0.Drag});const kr=[];s.map(yr=>{yr.isSelected&&kr.push(yr.id)});for(const yr in Br.current)if(!(yr in kr)&&p0&&p0)for(const ie of p0)ie.id===yr&&delete Br.current[yr];for(const yr of kr)if(!(yr in Br.current))for(const ie of p0)ie.id===yr&&(Br.current[yr]="")}}function Kt(){var ie,Ce,De,ne,xe,ue,de;let vr=[];const kr=(de=(ue=(xe=(ne=(De=Ne.current.trackStates)==null?void 0:De[(Ce=(ie=wn==null?void 0:wn.completedFetchedRegion)==null?void 0:ie.current)==null?void 0:Ce.key])==null?void 0:ne.trackState)==null?void 0:xe.genomicFetchCoord)==null?void 0:ue[h.genome.getName()])==null?void 0:de.navContextBuilder,yr=new th(Wt,ir.current);for(const oe of i){let ae,ye;kr?(ye=Xt(oe.start,kr._gaps,kr._cumulativeGapBases),ae=Xt(oe.end,kr._gaps,kr._cumulativeGapBases)):(ye=oe.start,ae=oe.end);const We=yr.baseSpanToXSpan(new Re(ye,ae)),He=We.start,n0=We.end;let Ge={xPos:He,width:n0-He,side:"right",start:oe.start,end:oe.end,color:oe.color,display:oe.display,tag:oe.tag};vr.push(Ge)}return vr}function $s(vr){var kr,yr,ie,Ce,De,ne,xe,ue,de,oe;if(Ir.current[`${vr.trackId}`]=vr,Object.keys(Ir.current).length===p0.length){const ye=wr.current.tracks.filter(N=>N.type!=="g3d").filter(N=>{if(N.type==="dynamicbed"||N.type==="dynamic"||N.type==="dynamichic")return!1;const F=Ir&&Ir.current&&Ir.current[`${N.id}`];if(F&&F.isError){try{delete Ir.current[`${N.id}`]}catch{}return!1}return!0}).map(N=>aQr(N)),We=Ne.current.viewWindow;let He=Zr.cloneDeep((ie=(yr=(kr=Ne.current)==null?void 0:kr.trackStates)==null?void 0:yr[Qr.current])==null?void 0:ie.trackState);const n0=We.start-((Ce=He==null?void 0:He.visData)==null?void 0:Ce.viewWindow.start),Ge={start:((xe=(ne=(De=He==null?void 0:He.genomicFetchCoord[He.primaryGenName])==null?void 0:De.primaryVisData)==null?void 0:ne.viewWindow)==null?void 0:xe.start)+n0,end:((oe=(de=(ue=He==null?void 0:He.genomicFetchCoord[He.primaryGenName])==null?void 0:ue.primaryVisData)==null?void 0:de.viewWindow)==null?void 0:oe.end)+n0},S=Kt();f({tracks:ye,trackData:Ir.current,highlights:S,viewWindow:Ge,windowWidth:ir.current,legendWidth:c,xOffset:n0}),Ir.current={}}}function Ls(vr){Lc(kr=>{const yr=vr.map(ne=>Object.keys(ne.metadata)),Ce=Zr.union(...yr).filter(ne=>!kr.terms.includes(ne));if(Ce.length===0)return kr;const De=new Set([...kr.suggestedMetaSets,...Ce]);return{...kr,suggestedMetaSets:De}})}function Jo(vr){Lc(kr=>{const yr=new Set([...kr.suggestedMetaSets].filter(Ce=>!vr.includes(Ce))),ie=Array.from(new Set([...kr.terms,...vr]));return{...kr,terms:ie,suggestedMetaSets:yr}})}function qi(vr){Lc(kr=>{const yr=kr.terms.filter(Ce=>!vr.includes(Ce)),ie=new Set(kr.suggestedMetaSets);return vr.forEach(Ce=>ie.add(Ce)),{...kr,terms:yr,suggestedMetaSets:ie}})}async function n3(vr,kr){await Ri(),await Uh();const yr=kr,ie={},Ce=[];for(let De in wr.current.tracks){const ne=wr.current.tracks[De];if(!ne.metadata)continue;const xe=Array.isArray(ne.metadata[`${vr}`])?ne.metadata[`${vr}`][ne.metadata[`${vr}`].length-1]:ne.metadata[`${vr}`];ne.metadata[`${vr}`]&&xe===yr?(ie[`${ne.id}`]="",Ce.push(new Tr({...ne,isSelected:!0}))):Ce.push(new Tr({...ne,isSelected:!1}))}_(Ce),Br.current=ie}P.useEffect(()=>{if(gc.terms.length===0)return;const vr=wr.current.tracks;if(!vr||vr.length===0)return;const kr={};for(const yr of gc.terms){const ie=new Set;vr.forEach(Ce=>{var ne;const De=(ne=Ce.metadata)==null?void 0:ne[yr];De!=null&&De!==""&&(Array.isArray(De)?De.forEach(xe=>ie.add(String(xe))):ie.add(String(De)))}),kr[yr]=Array.from(ie)}Lc(yr=>({...yr,termValues:kr}))},[gc.terms]),P.useEffect(()=>{const vr=Y.current,kr=()=>{me.current=null};return vr&&(vr.addEventListener("mouseenter",J1),vr.addEventListener("mouseleave",Ot),window.addEventListener("scroll",kr,!0)),h&&(q.current=Zr.cloneDeep(h),gr.current=ir.current,q.current.defaultRegion=new Re(t._startBase,t._endBase),q.current.navContext=t._navContext,wr.current.genomeName=h.genome.getName(),wr.current.tracks=s&&s.length>=0?s.filter(yr=>yr.type!=="g3d"):h.defaultTracks.filter(yr=>yr.type!=="g3d"),yh(),jr.current=!0,H.current=()=>{Object.keys(Br.current).length>0&&(Ri(),_(Zr.cloneDeep(wr.current.tracks)),Uh())}),()=>{Vt(),x.current&&x.current.worker.forEach(yr=>{yr.hasOnMessage=!1}),k.current&&(k.current.hasOnMessage=!1),vr&&(vr.removeEventListener("mouseenter",J1),vr.removeEventListener("mouseleave",Ot),window.removeEventListener("scroll",kr,!0))}},[]),P.useEffect(()=>(r9(Ie.current),Ie.current=rd(()=>{Me.current&&(Me.current.style.transform=`translate3d(${Se.current}px, 0, 0)`,Me.current.querySelectorAll(".Track-border-container").forEach(vr=>{vr.style.transform=`translate3d(${-Se.current}px, 0, 0)`})),p0.forEach(vr=>{vr.legendRef.current&&(vr.legendRef.current.style.transform=`translate3d(${-Se.current}px, 0, 0)`)})}),document.addEventListener("pointermove",qt),document.addEventListener("pointerup",B1),document.addEventListener("mousemove",qt),document.addEventListener("mouseup",B1),()=>{document.removeEventListener("pointermove",qt),document.removeEventListener("pointerup",B1)}),[p0,ir.current]),P.useEffect(()=>{if(!O.current){const vr=m.tool;m.tool==="Drag"?Dr.current=!0:lr.current==="Drag"&&vr===null&&(Dr.current=!1),vr!==null?(lr.current=vr,$c(qh(vr))):(Dr.current=!1,$c({isSelected:!1,title:null}))}},[m.tool]),P.useEffect(()=>{!O.current&&m.actionTool&&qh(m.actionTool)},[m.actionCount]);function S1(){for(const vr in wr.current.caches){const kr=wr.current.caches[vr];for(const yr in kr)Lh(yr)&&(wr.current.caches[vr][yr].xvalues&&delete wr.current.caches[vr][yr].xvalues,wr.current.caches[vr][yr].placeFeature&&delete wr.current.caches[vr][yr].placeFeature,delete wr.current.caches[vr][yr].dataCache)}fe.current<10?j.current=!0:j.current=!1}function Zo(){var yr,ie;if(!q.current)return;const vr=Qr.current,kr=[vr+1,vr,vr-1];for(let Ce of kr)if(!((ie=(yr=Ne.current)==null?void 0:yr.trackStates)!=null&&ie[Ce]))return;if(E){const Ce=Zr.cloneDeep(q.current);t?(Ce.defaultRegion=new Re(t._startBase,t._endBase),Ce.navContext=t._navContext):(Ce.defaultRegion=new Re(o._startBase,o._endBase),Ce.navContext=o._navContext),q.current=Ce,jr.current=!0,Vt(),yh()}else{const Ce={};R.current.key=Qr.current,R.current.done={},R.current.groups={};const De=gr.current,ne=ir.current;gr.current=ir.current;for(let de in Ne.current.trackStates){const oe=Zr.cloneDeep(Ne.current.trackStates[de].trackState);if(!oe.visData)continue;const ye=Ne.current.trackStates[de].trackState.xDist/De*ne,We=Ne.current.trackStates[de].trackState.visData.viewWindowRegion,He=Ne.current.trackStates[de].trackState.visData.visRegion,n0=ir.current/We.getWidth(),Ge=He.getWidth()*n0,S=We.getContextCoordinates(),N=He.getContextCoordinates(),F=S.start-N.start,G=N.end-S.end,hr=F*n0,tr=G*n0,ar={visWidth:E&&X.current===q.current.navContext._totalBases?Ge-tr:Ge,visRegion:He,viewWindow:E&&X.current===q.current.navContext._totalBases?new Re(0,Ge-tr):new Re(hr,Ge-tr),viewWindowRegion:We};oe.xDist=ye,oe.visData&&(oe.visData=ar),"genomicFetchCoord"in Ne.current.trackStates[de].trackState&&(oe.genomicFetchCoord={},oe.genomicFetchCoord[`${oe.primaryGenName}`]={},oe.genomicFetchCoord[`${oe.primaryGenName}`].primaryVisData=Zr.cloneDeep(ar)),Ne.current.trackStates[de].trackState=oe}fe.current=X.current/ir.current,J.current=ir.current/X.current,Se.current=Se.current*(ne/De),(nr.current-q.current.defaultRegion.start)*J.current;for(let de=0;de<$.current.length;de++)$.current[de]=ir.current;for(let de=0;de<Z.current.length;de++)Z.current[de]=ir.current;const xe=x0.current==="right"?new Re(-(Se.current%ir.current+-ir.current),-(Se.current%ir.current+-ir.current)+ir.current):new Re(ir.current*3-(Se.current%ir.current+ir.current),ir.current*3-Se.current%ir.current);if(Ne.current.viewWindow=xe,s0.current){fe.current<10?j.current=!0:j.current=!1,S1(),n1(Qr.current);const de=[...p0];Cn(de)}else{for(const oe in wr.current.caches){const ae=wr.current.caches[oe];Ce[oe]=!1;for(const ye in ae)Lh(ye)&&("xvalues"in wr.current.caches[oe][ye]&&delete wr.current.caches[oe][ye].xvalues,"placeFeature"in wr.current.caches[oe][ye]&&delete wr.current.caches[oe][ye].placeFeature)}const de=[...p0];Cn(de),nc({curDataIdx:Qr.current,trackToDrawId:Ce})}let ue=p1(i);Vn([...ue]),me.current=null}}function $i(vr,kr,yr=void 0){var ie,Ce,De;if(vr&&kr!==void 0&&kr!==null){const ne=[],xe=yr||Object.entries(wr.current.caches).reduce((oe,[ae,ye])=>(ye&&ye.usePrimaryNav&&(oe[ae]=!1),oe),{});let ue;for(let oe in xe){const ae=wr.current.caches[oe],ye=Gt(oe);let We;if(ae.error||!hn[`${ae.trackType}`])continue;if(ae.trackType in{hic:"",longrange:"",biginteraction:""}){xe[oe]=!1;continue}if(wr.current.globalConfig&&oe in wr.current.globalConfig?We=wr.current.globalConfig[oe].configOptions:ye&&(We={...hn[`${ae.trackType}`].defaultOptions,...ye.options}),!We)continue;let He=[],n0=!0,Ge=kr+1;if(We!=null&&We.group&&!(ae!=null&&ae.usePrimaryNav))(ie=ae[kr])!=null&&ie.dataCache?He.push(ae[kr]):n0=!1;else{for(let S=0;S<3;S++){if((Ce=ae[Ge])!=null&&Ce.dataCache)He.push(ae[Ge]);else{n0=!1;break}Ge--}ae.trackType in{matplot:"",dynamic:"",dynamicbed:""}&&((De=ae[1])!=null&&De.xvalues?He=[]:He=qX(He))}if(n0){const S={...Ne.current.trackStates[kr].trackState};let N;ae.trackType!=="genomealign"&&(ue=S.genomicFetchCoord[S.primaryGenName].primaryVisData,N=ae.usePrimaryNav?ue.visRegion:S.genomicFetchCoord[wr.current.caches[oe].queryGenome].queryRegion,typeof N=="object"&&(N=Wo(N)),ne.push({id:oe,data:He,visRegion:N,visWidth:ue.visWidth?ue.visWidth:ir.current*3,configOptions:We,usePrimaryNav:ae.usePrimaryNav,trackModel:ye})),xe[oe]=!1}}const de=lQr.getGroupScale(ne,ue&&ue.visWidth?ue.visWidth:ir.current*3,vr,kr,wr);return Ne.current.trackStates[kr].trackState.groupScale=Ne.current.trackStates[kr].trackState.groupScale?{...Ne.current.trackStates[kr].trackState.groupScale,...de}:de,xe}else return{}}P.useEffect(()=>{if(i&&O.current===!1){let vr=p1(i);Vn([...vr])}},[i]);function Lh(vr){const kr=Number(vr);return vr!==null&&!isNaN(kr)&&Number.isInteger(kr)}P.useEffect(()=>{var vr,kr,yr,ie,Ce,De,ne,xe,ue;if(!O.current&&s&&s.length===0)Cn([]);else if(!O.current&&s&&!s.every(de=>de.waitToUpdate)||O.current&&s.every(de=>de.changeConfigInitial)||O.current&&s.length>0&&wr.current.tracks.length===0){const de=s.filter(ae=>ae.type!=="g3d");for(let ae=0;ae<de.length;ae++)de[ae].changeConfigInitial=!1;const oe=[...p0.map(ae=>ae.trackModel)];if(Hm(de,oe)){Br.current={};const ae=[];let ye=!1;for(let We=0;We<de.length;We++){const He=de[We];He.id!==p0[We].trackModel.id&&(ye=!0),He.isSelected&&!(Br!=null&&Br.current[`${He.id}`])&&(Br.current[He.id]="",ye=!0);for(let n0=0;n0<p0.length;n0++){const Ge=p0[n0];Ge.trackModel.id===He.id&&((Ge.trackModel.isSelected!==He.isSelected||((Ce=(ie=Ge.trackModel)==null?void 0:ie.options)==null?void 0:Ce.legendFontColor)!==((De=He.options)==null?void 0:De.legendFontColor)||((xe=(ne=Ge.trackModel)==null?void 0:ne.options)==null?void 0:xe.label)!==((ue=He.options)==null?void 0:ue.label)||We!==n0)&&(Ge.trackModel=He,ye=!0),ae.push(Ge))}}if(ye&&(wr.current.tracks=de,Cn(ae)),de.length===0){Cn([]),wr.current.tracks=[];return}}else{const ae=de.filter(Ge=>Ge.type==="genomealign"),ye=oe.filter(Ge=>Ge.type==="genomealign");if(!Hm(ae,ye)&&(S1(),ae.length===0&&ye.length>0))for(let Ge in Ne.current.trackStates){const S=Ne.current.trackStates[Ge];for(let N in S){const F=S[N];if(F.genomicFetchCoord){F.genomicFetchCoord[`${(vr=q.current)==null?void 0:vr.genome.getName()}`].primaryVisData=Zr.cloneDeep(Ne.current.trackStates[Ge].trackState.visData);const G={[(kr=q.current)==null?void 0:kr.genome.getName()]:Zr.cloneDeep(F.genomicFetchCoord[`${(yr=q.current)==null?void 0:yr.genome.getName()}`])};F.genomicFetchCoord=G}}}const We={};for(const Ge of de)We[`${Ge.id}`]={};for(const Ge in wr.current.caches)Ge in We||delete wr.current.caches[Ge];const He=[];let n0=!1;for(let Ge=0;Ge<de.length;Ge++){const S=de[Ge];let N=!1;for(let F of p0)if(F.trackModel.id===S.id){if(S.type==="g3d")continue;F.trackModel.type==="genomealign"&&(n0=!0),He.push(F),N=!0}if(!N){S.type==="genomealign"&&(n0=!0);const F=P.createRef();S.legendWidth=c,He.push({trackIdx:Ge,id:S.id,component:LX,legendRef:F,trackModel:S}),$h(S)}}n0||(j.current=!1,s0.current=!1),wr.current.tracks=de,R.current={key:null,done:{},groups:{},selected:{}},Cn(He),n1(Qr.current),_(de)}Ls(de)}},[s]),P.useEffect(()=>{if(t&&!O.current&&q.current&&p0){const vr=Zr.cloneDeep(q.current);vr.defaultRegion=new Re(t._startBase,t._endBase),vr.navContext=t._navContext,q.current=vr,Zo(),r9(Ie.current),Ie.current=rd(()=>{Me.current&&(Me.current.style.transform=`translate3d(${Se.current}px, 0, 0)`,Me.current.querySelectorAll(".Track-border-container").forEach(kr=>{kr.style.transform=`translate3d(${-Se.current}px, 0, 0)`})),p0.forEach(kr=>{kr.legendRef.current&&(kr.legendRef.current.style.transform=`translate3d(${-Se.current}px, 0, 0)`)})}),document.addEventListener("pointermove",qt),document.addEventListener("pointerup",B1),document.addEventListener("mousemove",qt),document.addEventListener("mouseup",B1)}},[ir.current]),P.useEffect(()=>{if(!O.current){const vr=Zr.cloneDeep(h);t?(vr.defaultRegion=new Re(t._startBase,t._endBase),vr.navContext=t._navContext):(vr.defaultRegion=new Re(o._startBase,o._endBase),vr.navContext=o._navContext),q.current=vr,jr.current=!0,Vt(),yh()}},[o]),P.useEffect(()=>{if(p&&!O.current&&re.current===p.limit&&p.index!==Yr.current){const vr=Zr.cloneDeep(h);vr.defaultRegion=new Re(t._startBase,t._endBase),vr.navContext=t._navContext,q.current=vr,jr.current=!0,Vt(),yh()}re.current=p.limit,Yr.current=p.index},[p]),P.useEffect(()=>{const vr=document.getElementById("toolbar-container");vr&&(vr.style.visibility=xn?"hidden":"visible")},[xn]),P.useEffect(()=>{var vr,kr,yr;if(l0.current&&Qr.current===l0.current.dataIdx){if(s0.current&&!j.current){const De=[],ne=[],xe=[],ue=l0.current.dataIdx in Ne.current.trackStates?Ne.current.trackStates[l0.current.dataIdx].trackState:"";for(const ye in wr.current.caches){const We=wr.current.caches[ye],He=Gt(ye);We.trackType==="genomealign"?xe.push(He):We.usePrimaryNav||((vr=wr.current.caches[ye][l0.current.dataIdx])!=null&&vr.dataCache&&delete wr.current.caches[ye][l0.current.dataIdx].dataCache,De.push(He))}const oe=((kr=q.current)==null?void 0:kr.navContext.getFeaturesInInterval(l0.current.contextNavCoord.start,l0.current.contextNavCoord.end)).map((ye,We)=>ye.getLocus()),ae=(yr=q.current)==null?void 0:yr.genome.getName();ne.push({primaryGenName:ae,trackModelArr:De,visData:ue.visData?ue.visData:ue.genomicFetchCoord?ue.genomicFetchCoord[`${ae}`].primaryVisData:"",genomicLoci:oe,visRegion:ue.visRegion?ue.visRegion:ue.genomicFetchCoord?ue.genomicFetchCoord[`${ae}`].primaryVisData.visRegion:"",regionExpandLoci:ue.regionExpandLoci,useFineModeNav:j.current,windowWidth:ir.current,bpRegionSize:X.current,trackDataIdx:l0.current.dataIdx,missingIdx:l0.current.dataIdx}),Rt({trackToFetch:xe,visData:ue.visData?ue.visData:ue.genomicFetchCoord?ue.genomicFetchCoord[`${ae}`].primaryVisData:"",genomicLoci:ue.regionLoci,viewWindowGenomicLoci:oe,primaryGenName:ae,trackModelArr:xe,regionExpandLoci:ue.regionExpandLoci,useFineModeNav:j.current,windowWidth:ir.current,bpRegionSize:X.current,fetchAfterGenAlignTracks:ne,trackDataIdx:l0.current.dataIdx,missingIdx:l0.current.dataIdx,dragX:Se.current,fetchNewRegion:!1})}const ie={};let Ce={};for(let De in wr.current.caches){const ne=wr.current.globalConfig,xe=wr.current.caches[De];if(ne&&De in ne){const ue=ne[De].configOptions;ue.group&&(Ce[De]=!1),(xe.trackType==="geneannotation"||xe.trackType==="refbed"||xe.trackType in KX||ue!=null&&ue.fetchViewWindowOnly||ue!=null&&ue.bothAnchorsInView||(ue==null?void 0:ue.displayMode)==="density"||xe.trackType==="genomealign"&&!j.current||(xe.trackType==="vcf"||xe.trackType==="modbed")&&(ue==null?void 0:ue.displayMode)==="auto"&&X.current>1e5)&&(ie[De]=!1)}}Object.keys(Ce).length>0&&$i(l0.current.viewWindow,l0.current.dataIdx,Ce),Object.keys(ie).length>0&&G1({dataIdx:Qr.current,viewWindow:l0.current.viewWindow,groupScale:Ne.current.trackStates[Qr.current].trackState.groupScale,trackToDrawId:ie})}},[l0.current]);function Li(){Object.keys(Br.current).length>0&&(Ri(),_(Zr.cloneDeep(wr.current.tracks)),Cc(null))}function c3(){xn&&Cc(null)}return D.jsxs("div",{style:{backgroundColor:"var(--bg-color)",paddingLeft:"18px",marginBottom:"10px"},children:[ir.current>0&&t&&d&&D.jsx(cG,{selectedRegion:t,genomeConfig:h,windowWidth:ir.current+120,onRegionSelected:Eh}),D.jsxs(Fc,{onOutsideClick:Li,children:[C===!0?D.jsxs("div",{style:{backgroundColor:"var(--bg-color)",width:`${ir.current+120}px`,marginTop:_e/3,marginBottom:_e/3,display:"flex",flexDirection:ir.current<=600?"column":"row",alignItems:ir.current<=600?"stretch":"center",justifyContent:"end"},children:[D.jsxs("div",{style:{display:"flex",width:"100%",alignItems:"center",justifyContent:"start",flexWrap:ir.current<=1080?"wrap":"nowrap"},children:[D.jsx("div",{style:{display:"flex",position:"relative",zIndex:999},children:D.jsx("div",{style:{position:"relative"},children:u.toolbar?D.jsx(u.toolbar,{highlights:i,onNewRegionSelect:U||(()=>{}),windowWidth:ir.current,buttonPadding:_e/2}):""})}),D.jsx("span",{style:{width:"1px"},className:"self-stretch bg-gray-300 dark:bg-gray-600"}),t&&D.jsx("div",{style:{display:"flex",alignItems:"center",whiteSpace:"nowrap",flexShrink:0},children:D.jsx("div",{className:"bg tool-element",style:{display:"flex",paddingLeft:_e-2,paddingRight:6,alignItems:"center",flexShrink:0,fontStyle:"italic"},children:D.jsxs("p",{style:{backgroundColor:"var(cd --bg-color)",color:"var(--font-color)",fontSize:`${Math.max(13,ze)}px`,margin:0,whiteSpace:"nowrap"},children:[km(wr.current.viewRegion.getWidth())," ","in ",Math.round(ir.current),"px, 1px equals"," ",km(fe.current,!0)]})})}),D.jsx("div",{style:{display:"flex",alignItems:"center"},children:D.jsxs("div",{className:"MetadataHeader-button",style:{},children:[D.jsxs("button",{onClick:()=>dn(!Dn),className:"flex items-center rounded-xs px-1",style:{border:Dn?"1px solid #1e40af":"1px solid #1d4ed8",backgroundColor:"#eff6ff",color:Dn?"#1d4ed8":"#2563eb",transition:"all 0.2s"},title:"Metadata options",children:[D.jsx("span",{className:"text-xs",children:"Metadata"}),D.jsx(KKr.div,{animate:{rotate:Dn?90:0},transition:{duration:.2},children:D.jsx(SSr,{})})]}),D.jsx("div",{children:D.jsx(QKr,{terms:gc.terms,style:Dn?void 0:{display:"none"},onNewTerms:Jo,suggestedMetaSets:gc.suggestedMetaSets,onRemoveTerm:qi,tracks:wr.current.tracks,onTracksChange:vr=>{const kr=vr.map(yr=>yr instanceof Tr?yr:new Tr(yr));wr.current.tracks=kr,_(kr),Ls(kr),Cn(yr=>yr.map(ie=>({...ie,trackModel:kr.find(Ce=>Ce.id===ie.trackModel.id)??ie.trackModel})))}})})]})})]}),D.jsx("div",{style:{display:"flex",justifyContent:"flex-end",marginTop:ir.current<=1080?_e/2:0},children:D.jsx(iLr,{terms:gc.terms,onNewTerms:Jo,suggestedMetaSets:gc.suggestedMetaSets,onRemoveTerm:qi,windowWidth:ir.current,fontSize:Math.max(14,ze),padding:_e,tracks:wr.current.tracks,termValues:gc.termValues,onTermValueClick:n3})})]}):"",D.jsx("div",{style:{display:"flex",flexDirection:"row",outline:"1px solid #9AA6B2",width:`${ir.current+120}px`,overflowX:"hidden",overflowY:"hidden"},children:D.jsxs("div",{onPointerDown:Xo,ref:Y,style:{display:"flex",flexDirection:"column",position:"relative",cursor:(()=>{switch(m.tool){case P0.Reorder:return"ns-resize";case P0.Highlight:return"ew-resize";case P0.Zoom:return"zoom-in";default:return Dr.current?"pointer":""}})()},children:[D.jsx("div",{ref:Mr,className:"horizontal-line"}),D.jsx("div",{ref:Gr,className:"vertical-line"}),D.jsxs("div",{style:{display:"flex",flexDirection:"row",width:`${ir.current+120}px`},children:[p0?D.jsxs("div",{ref:Me,onClick:c3,children:[D.jsx(hB,{items:p0,onChange:W2,renderItem:vr=>D.jsx(hB.Item,{id:vr.id,onMouseDown:kr=>Mc(kr,vr.id),onContextMenu:kr=>Oh(kr,vr),selectedTool:yn,children:D.jsxs("div",{style:{width:`${ir.current+120}px`,position:"relative",paddingTop:"1px",paddingBottom:"1px"},children:[vr.trackModel.isSelected?D.jsx("div",{className:"Track-border-container Track-selected-border"}):D.jsx("div",{className:"Track-border-container"}),D.jsx(vr.component,{id:vr.trackModel.id,trackModel:vr.trackModel,legendRef:vr.legendRef,bpRegionSize:X.current,useFineModeNav:j.current,basePerPixel:fe.current,side:x0.current,windowWidth:ir.current,genomeConfig:q.current,dataIdx:Qr.current,setShow3dGene:w,isThereG3dTrack:A,dragX:Se.current,signalTrackLoadComplete:jo,sentScreenshotData:$s,newDrawData:wn,trackManagerState:wr,globalTrackState:Ne,isScreenShotOpen:y,highlightElements:Gn,viewWindowConfigChange:X1,metaSets:gc,onColorBoxClick:n3,userViewRegion:t,messageData:E0,Toolbar:u,handleRetryFetchTrack:e3,initialLoad:O,selectedRegionSet:E})]},vr.id)})}),Gn.length>0&&D.jsx("div",{style:{position:"absolute",top:0,left:c,width:ir.current,height:"100%",pointerEvents:"none",zIndex:5},children:Gn.map((vr,kr)=>vr.display?D.jsx("div",{style:{position:"absolute",backgroundColor:vr.color,top:0,height:"100%",left:0,transform:`translateX(${vr.xPos}px)`,width:vr.width,pointerEvents:"none"}},kr):null)})]}):"",D.jsx("div",{style:{display:"flex",position:"absolute",zIndex:10},children:yn&&yn.isSelected&&(yn.title===P0.Highlight||yn.title===P0.Zoom)?D.jsx(VX,{selectableRegion:Wt,dragLimits:new Re(c,ir.current+120),xOffset:-(Se.current%ir.current-(x0.current==="left"?ir.current:0)),onRegionSelected:Eh,selectedTool:yn,children:D.jsx("div",{style:{height:Y.current?(h3=Y.current)==null?void 0:h3.getBoundingClientRect().height:0,zIndex:3,width:`${ir.current+120}px`}})}):""})]})]})}),xn?D.jsx(NRr,{menuData:xn,darkTheme:M,parentBlockDimensions:(t3=Me.current)==null?void 0:t3.getBoundingClientRect()},xn.key):null]})]})}),FY=P.memo(mQr),uQr=3,vQr=()=>new Worker(new URL("/assets/createFetchWorker-9mg_hYRk.js",typeof document>"u"&&typeof location>"u"?require("url").pathToFileURL(__filename).href:typeof document>"u"?location.href:J2&&J2.tagName.toUpperCase()==="SCRIPT"&&J2.src||new URL("index.umd.js",document.baseURI).href),{type:"module"}),dQr=()=>new Worker(new URL("/assets/createFetchGenomeAlignWorker-uOhBp_Is.js",typeof document>"u"&&typeof location>"u"?require("url").pathToFileURL(__filename).href:typeof document>"u"?location.href:J2&&J2.tagName.toUpperCase()==="SCRIPT"&&J2.src||new URL("index.umd.js",document.baseURI).href),{type:"module"}),zQr=P.memo(function({tracks:e,genomeConfig:c,highlights:h,legendWidth:t,showGenomeNav:i,showToolBar:s,onNewRegion:o,onNewHighlight:a,onTracksChange:l,onNewRegionSelect:_,onSetSelected:U,currentState:m,tool:u,Toolbar:d,viewRegion:C,userViewRegion:A,setScreenshotData:f,isScreenShotOpen:E,selectedRegionSet:y,darkTheme:w,width:x,height:k}){const[p,M]=Cwr(),H=P.useRef({worker:[]}),R=P.useRef(null),O=P.useRef(Zr.cloneDeep(Q4)),[q,j]=P.useState(G9.Model.fromJson(O.current)),[lr,Dr]=P.useState(),gr=P.useRef([]),ir=P.useMemo(()=>e.some(J=>J.type==="g3d"),[e]);P.useEffect(()=>{if(e.length>0&&ir){const J=X(O.current),Y=e.filter(V=>V.type==="g3d");if(!Hm(J,Y)){O.current=Zr.cloneDeep(Q4),gr.current=Y;for(let V of Y){const er={type:"tabset",weight:100,children:[{type:"tab",name:V.getDisplayLabel(),component:"g3d",config:{trackModel:V,trackId:V.id},enableClose:!0}]};O.current=hwr(er,O.current)}j(G9.Model.fromJson(O.current))}}c.defaultTracks=e},[e]);function Ur(J){l([...J,...gr.current])}function nr(J){if(!A)return null;const Y=J.getConfig(),{x:V,y:er,width:_r,height:Br}=J.getRect(),Er=Tr.deserialize(Y.trackModel);Er.id=Y.trackId;const Hr=e.filter(Mr=>Mr.getId()===Er.id);return Er.fileObj=Hr.length?Hr[0].fileObj:null,J.setEventListener("close",()=>{l(e.filter((Mr,Gr)=>Mr.id!==Er.id))}),D.jsx(ewr,{tracks:e,g3dtrack:Er,viewRegion:A,width:_r,height:Br,x:V,y:er,genomeConfig:c,geneFor3d:lr,onSetSelected:U,onNewViewRegion:_,selectedSet:y||null},Er.id)}const Q=P.useCallback(J=>J.getComponent()==="Browser"?e?D.jsx(FY,{tracks:e,legendWidth:t,windowWidth:x||M.width-t-40,userViewRegion:A,highlights:h,genomeConfig:c,onNewRegion:o,onNewRegionSelect:_,onNewHighlight:a,onTracksChange:Ur,tool:u,Toolbar:d,viewRegion:C,showGenomeNav:i,showToolBar:s,isThereG3dTrack:!1,setScreenshotData:f,isScreenShotOpen:E,selectedRegionSet:y,setShow3dGene:Dr,infiniteScrollWorkers:H,fetchGenomeAlignWorker:R,currentState:m,darkTheme:w}):"":nr(J),[e,M.width,t,A,h,c,o,_,a,u,C,i,s,y]);function X(J){const Y=[];function V(er){er&&(er.type==="tab"&&er.config&&er.config.trackModel&&er.config.trackModel.type==="g3d"&&Y.push(er.config.trackModel),Array.isArray(er.children)&&er.children.forEach(V))}return V(J.layout),Y}if(e.some(J=>J.type==="genomealign")&&!R.current&&(R.current={fetchWorker:dQr(),hasOnMessage:!1}),e.length>0&&H.current.worker.length===0){const J=Math.min(e.length,uQr);for(let Y=0;Y<J;Y++)H.current.worker.push({fetchWorker:vQr(),hasOnMessage:!1,processingCount:0})}return P.useEffect(()=>(c.defaultTracks=e,()=>{H.current&&(H.current.worker.forEach(J=>{J.fetchWorker.terminate()}),H.current={worker:[]}),R.current&&R.current.fetchWorker.terminate(),R.current=null,O.current=Zr.cloneDeep(Q4),gr.current=[],j(G9.Model.fromJson(Zr.cloneDeep(Q4))),Dr(void 0)}),[]),D.jsx("div",{ref:p,children:!ir&&M.width>0?D.jsx("div",{style:{...k&&{height:k},overflowX:"hidden"},children:D.jsx(FY,{tracks:e,legendWidth:t,windowWidth:M.width-t-36,userViewRegion:A,highlights:h,genomeConfig:c,onNewRegion:o,onNewRegionSelect:_,onNewHighlight:a,onTracksChange:Ur,tool:u,Toolbar:d,viewRegion:C,showGenomeNav:i,showToolBar:s,isThereG3dTrack:!1,setScreenshotData:f,isScreenShotOpen:E,selectedRegionSet:y,setShow3dGene:Dr,infiniteScrollWorkers:H,fetchGenomeAlignWorker:R,currentState:m,darkTheme:w})}):M.width>0?D.jsx("div",{style:{width:M.width-20,height:M.height-45},children:D.jsx(G9.Layout,{model:q,factory:Q})}):""})});var dS={exports:{}},xY={},Ti={},gl={},e9={},Q0={},n9={};(function(n){Object.defineProperty(n,"__esModule",{value:!0}),n.regexpCode=n.getEsmExportName=n.getProperty=n.safeStringify=n.stringify=n.strConcat=n.addCodeArg=n.str=n._=n.nil=n._Code=n.Name=n.IDENTIFIER=n._CodeOrName=void 0;class e{}n._CodeOrName=e,n.IDENTIFIER=/^[a-z$_][a-z$_0-9]*$/i;class c extends e{constructor(E){if(super(),!n.IDENTIFIER.test(E))throw new Error("CodeGen: name must be a valid identifier");this.str=E}toString(){return this.str}emptyStr(){return!1}get names(){return{[this.str]:1}}}n.Name=c;class h extends e{constructor(E){super(),this._items=typeof E=="string"?[E]:E}toString(){return this.str}emptyStr(){if(this._items.length>1)return!1;const E=this._items[0];return E===""||E==='""'}get str(){var E;return(E=this._str)!==null&&E!==void 0?E:this._str=this._items.reduce((y,w)=>`${y}${w}`,"")}get names(){var E;return(E=this._names)!==null&&E!==void 0?E:this._names=this._items.reduce((y,w)=>(w instanceof c&&(y[w.str]=(y[w.str]||0)+1),y),{})}}n._Code=h,n.nil=new h("");function t(f,...E){const y=[f[0]];let w=0;for(;w<E.length;)o(y,E[w]),y.push(f[++w]);return new h(y)}n._=t;const i=new h("+");function s(f,...E){const y=[u(f[0])];let w=0;for(;w<E.length;)y.push(i),o(y,E[w]),y.push(i,u(f[++w]));return a(y),new h(y)}n.str=s;function o(f,E){E instanceof h?f.push(...E._items):E instanceof c?f.push(E):f.push(U(E))}n.addCodeArg=o;function a(f){let E=1;for(;E<f.length-1;){if(f[E]===i){const y=l(f[E-1],f[E+1]);if(y!==void 0){f.splice(E-1,3,y);continue}f[E++]="+"}E++}}function l(f,E){if(E==='""')return f;if(f==='""')return E;if(typeof f=="string")return E instanceof c||f[f.length-1]!=='"'?void 0:typeof E!="string"?`${f.slice(0,-1)}${E}"`:E[0]==='"'?f.slice(0,-1)+E.slice(1):void 0;if(typeof E=="string"&&E[0]==='"'&&!(f instanceof c))return`"${f}${E.slice(1)}`}function _(f,E){return E.emptyStr()?f:f.emptyStr()?E:s`${f}${E}`}n.strConcat=_;function U(f){return typeof f=="number"||typeof f=="boolean"||f===null?f:u(Array.isArray(f)?f.join(","):f)}function m(f){return new h(u(f))}n.stringify=m;function u(f){return JSON.stringify(f).replace(/\u2028/g,"\\u2028").replace(/\u2029/g,"\\u2029")}n.safeStringify=u;function d(f){return typeof f=="string"&&n.IDENTIFIER.test(f)?new h(`.${f}`):t`[${f}]`}n.getProperty=d;function C(f){if(typeof f=="string"&&n.IDENTIFIER.test(f))return new h(`${f}`);throw new Error(`CodeGen: invalid export name: ${f}, use explicit $id name mapping`)}n.getEsmExportName=C;function A(f){return new h(f.toString())}n.regexpCode=A})(n9);var zS={};(function(n){Object.defineProperty(n,"__esModule",{value:!0}),n.ValueScope=n.ValueScopeName=n.Scope=n.varKinds=n.UsedValueState=void 0;const e=n9;class c extends Error{constructor(l){super(`CodeGen: "code" for ${l} not defined`),this.value=l.value}}var h;(function(a){a[a.Started=0]="Started",a[a.Completed=1]="Completed"})(h||(n.UsedValueState=h={})),n.varKinds={const:new e.Name("const"),let:new e.Name("let"),var:new e.Name("var")};class t{constructor({prefixes:l,parent:_}={}){this._names={},this._prefixes=l,this._parent=_}toName(l){return l instanceof e.Name?l:this.name(l)}name(l){return new e.Name(this._newName(l))}_newName(l){const _=this._names[l]||this._nameGroup(l);return`${l}${_.index++}`}_nameGroup(l){var _,U;if(!((U=(_=this._parent)===null||_===void 0?void 0:_._prefixes)===null||U===void 0)&&U.has(l)||this._prefixes&&!this._prefixes.has(l))throw new Error(`CodeGen: prefix "${l}" is not allowed in this scope`);return this._names[l]={prefix:l,index:0}}}n.Scope=t;class i extends e.Name{constructor(l,_){super(_),this.prefix=l}setValue(l,{property:_,itemIndex:U}){this.value=l,this.scopePath=(0,e._)`.${new e.Name(_)}[${U}]`}}n.ValueScopeName=i;const s=(0,e._)`\n`;class o extends t{constructor(l){super(l),this._values={},this._scope=l.scope,this.opts={...l,_n:l.lines?s:e.nil}}get(){return this._scope}name(l){return new i(l,this._newName(l))}value(l,_){var U;if(_.ref===void 0)throw new Error("CodeGen: ref must be passed in value");const m=this.toName(l),{prefix:u}=m,d=(U=_.key)!==null&&U!==void 0?U:_.ref;let C=this._values[u];if(C){const E=C.get(d);if(E)return E}else C=this._values[u]=new Map;C.set(d,m);const A=this._scope[u]||(this._scope[u]=[]),f=A.length;return A[f]=_.ref,m.setValue(_,{property:u,itemIndex:f}),m}getValue(l,_){const U=this._values[l];if(U)return U.get(_)}scopeRefs(l,_=this._values){return this._reduceValues(_,U=>{if(U.scopePath===void 0)throw new Error(`CodeGen: name "${U}" has no value`);return(0,e._)`${l}${U.scopePath}`})}scopeCode(l=this._values,_,U){return this._reduceValues(l,m=>{if(m.value===void 0)throw new Error(`CodeGen: name "${m}" has no value`);return m.value.code},_,U)}_reduceValues(l,_,U={},m){let u=e.nil;for(const d in l){const C=l[d];if(!C)continue;const A=U[d]=U[d]||new Map;C.forEach(f=>{if(A.has(f))return;A.set(f,h.Started);let E=_(f);if(E){const y=this.opts.es5?n.varKinds.var:n.varKinds.const;u=(0,e._)`${u}${y} ${f} = ${E};${this.opts._n}`}else if(E=m==null?void 0:m(f))u=(0,e._)`${u}${E}${this.opts._n}`;else throw new c(f);A.set(f,h.Completed)})}return u}}n.ValueScope=o})(zS),function(n){Object.defineProperty(n,"__esModule",{value:!0}),n.or=n.and=n.not=n.CodeGen=n.operators=n.varKinds=n.ValueScopeName=n.ValueScope=n.Scope=n.Name=n.regexpCode=n.stringify=n.getProperty=n.nil=n.strConcat=n.str=n._=void 0;const e=n9,c=zS;var h=n9;Object.defineProperty(n,"_",{enumerable:!0,get:function(){return h._}}),Object.defineProperty(n,"str",{enumerable:!0,get:function(){return h.str}}),Object.defineProperty(n,"strConcat",{enumerable:!0,get:function(){return h.strConcat}}),Object.defineProperty(n,"nil",{enumerable:!0,get:function(){return h.nil}}),Object.defineProperty(n,"getProperty",{enumerable:!0,get:function(){return h.getProperty}}),Object.defineProperty(n,"stringify",{enumerable:!0,get:function(){return h.stringify}}),Object.defineProperty(n,"regexpCode",{enumerable:!0,get:function(){return h.regexpCode}}),Object.defineProperty(n,"Name",{enumerable:!0,get:function(){return h.Name}});var t=zS;Object.defineProperty(n,"Scope",{enumerable:!0,get:function(){return t.Scope}}),Object.defineProperty(n,"ValueScope",{enumerable:!0,get:function(){return t.ValueScope}}),Object.defineProperty(n,"ValueScopeName",{enumerable:!0,get:function(){return t.ValueScopeName}}),Object.defineProperty(n,"varKinds",{enumerable:!0,get:function(){return t.varKinds}}),n.operators={GT:new e._Code(">"),GTE:new e._Code(">="),LT:new e._Code("<"),LTE:new e._Code("<="),EQ:new e._Code("==="),NEQ:new e._Code("!=="),NOT:new e._Code("!"),OR:new e._Code("||"),AND:new e._Code("&&"),ADD:new e._Code("+")};class i{optimizeNodes(){return this}optimizeNames(V,er){return this}}class s extends i{constructor(V,er,_r){super(),this.varKind=V,this.name=er,this.rhs=_r}render({es5:V,_n:er}){const _r=V?c.varKinds.var:this.varKind,Br=this.rhs===void 0?"":` = ${this.rhs}`;return`${_r} ${this.name}${Br};`+er}optimizeNames(V,er){if(V[this.name.str])return this.rhs&&(this.rhs=lr(this.rhs,V,er)),this}get names(){return this.rhs instanceof e._CodeOrName?this.rhs.names:{}}}class o extends i{constructor(V,er,_r){super(),this.lhs=V,this.rhs=er,this.sideEffects=_r}render({_n:V}){return`${this.lhs} = ${this.rhs};`+V}optimizeNames(V,er){if(!(this.lhs instanceof e.Name&&!V[this.lhs.str]&&!this.sideEffects))return this.rhs=lr(this.rhs,V,er),this}get names(){const V=this.lhs instanceof e.Name?{}:{...this.lhs.names};return j(V,this.rhs)}}class a extends o{constructor(V,er,_r,Br){super(V,_r,Br),this.op=er}render({_n:V}){return`${this.lhs} ${this.op}= ${this.rhs};`+V}}class l extends i{constructor(V){super(),this.label=V,this.names={}}render({_n:V}){return`${this.label}:`+V}}class _ extends i{constructor(V){super(),this.label=V,this.names={}}render({_n:V}){return`break${this.label?` ${this.label}`:""};`+V}}class U extends i{constructor(V){super(),this.error=V}render({_n:V}){return`throw ${this.error};`+V}get names(){return this.error.names}}class m extends i{constructor(V){super(),this.code=V}render({_n:V}){return`${this.code};`+V}optimizeNodes(){return`${this.code}`?this:void 0}optimizeNames(V,er){return this.code=lr(this.code,V,er),this}get names(){return this.code instanceof e._CodeOrName?this.code.names:{}}}class u extends i{constructor(V=[]){super(),this.nodes=V}render(V){return this.nodes.reduce((er,_r)=>er+_r.render(V),"")}optimizeNodes(){const{nodes:V}=this;let er=V.length;for(;er--;){const _r=V[er].optimizeNodes();Array.isArray(_r)?V.splice(er,1,..._r):_r?V[er]=_r:V.splice(er,1)}return V.length>0?this:void 0}optimizeNames(V,er){const{nodes:_r}=this;let Br=_r.length;for(;Br--;){const Er=_r[Br];Er.optimizeNames(V,er)||(Dr(V,Er.names),_r.splice(Br,1))}return _r.length>0?this:void 0}get names(){return this.nodes.reduce((V,er)=>q(V,er.names),{})}}class d extends u{render(V){return"{"+V._n+super.render(V)+"}"+V._n}}class C extends u{}class A extends d{}A.kind="else";class f extends d{constructor(V,er){super(er),this.condition=V}render(V){let er=`if(${this.condition})`+super.render(V);return this.else&&(er+="else "+this.else.render(V)),er}optimizeNodes(){super.optimizeNodes();const V=this.condition;if(V===!0)return this.nodes;let er=this.else;if(er){const _r=er.optimizeNodes();er=this.else=Array.isArray(_r)?new A(_r):_r}if(er)return V===!1?er instanceof f?er:er.nodes:this.nodes.length?this:new f(gr(V),er instanceof f?[er]:er.nodes);if(!(V===!1||!this.nodes.length))return this}optimizeNames(V,er){var _r;if(this.else=(_r=this.else)===null||_r===void 0?void 0:_r.optimizeNames(V,er),!!(super.optimizeNames(V,er)||this.else))return this.condition=lr(this.condition,V,er),this}get names(){const V=super.names;return j(V,this.condition),this.else&&q(V,this.else.names),V}}f.kind="if";class E extends d{}E.kind="for";class y extends E{constructor(V){super(),this.iteration=V}render(V){return`for(${this.iteration})`+super.render(V)}optimizeNames(V,er){if(super.optimizeNames(V,er))return this.iteration=lr(this.iteration,V,er),this}get names(){return q(super.names,this.iteration.names)}}class w extends E{constructor(V,er,_r,Br){super(),this.varKind=V,this.name=er,this.from=_r,this.to=Br}render(V){const er=V.es5?c.varKinds.var:this.varKind,{name:_r,from:Br,to:Er}=this;return`for(${er} ${_r}=${Br}; ${_r}<${Er}; ${_r}++)`+super.render(V)}get names(){const V=j(super.names,this.from);return j(V,this.to)}}class x extends E{constructor(V,er,_r,Br){super(),this.loop=V,this.varKind=er,this.name=_r,this.iterable=Br}render(V){return`for(${this.varKind} ${this.name} ${this.loop} ${this.iterable})`+super.render(V)}optimizeNames(V,er){if(super.optimizeNames(V,er))return this.iterable=lr(this.iterable,V,er),this}get names(){return q(super.names,this.iterable.names)}}class k extends d{constructor(V,er,_r){super(),this.name=V,this.args=er,this.async=_r}render(V){return`${this.async?"async ":""}function ${this.name}(${this.args})`+super.render(V)}}k.kind="func";class p extends u{render(V){return"return "+super.render(V)}}p.kind="return";class M extends d{render(V){let er="try"+super.render(V);return this.catch&&(er+=this.catch.render(V)),this.finally&&(er+=this.finally.render(V)),er}optimizeNodes(){var V,er;return super.optimizeNodes(),(V=this.catch)===null||V===void 0||V.optimizeNodes(),(er=this.finally)===null||er===void 0||er.optimizeNodes(),this}optimizeNames(V,er){var _r,Br;return super.optimizeNames(V,er),(_r=this.catch)===null||_r===void 0||_r.optimizeNames(V,er),(Br=this.finally)===null||Br===void 0||Br.optimizeNames(V,er),this}get names(){const V=super.names;return this.catch&&q(V,this.catch.names),this.finally&&q(V,this.finally.names),V}}class H extends d{constructor(V){super(),this.error=V}render(V){return`catch(${this.error})`+super.render(V)}}H.kind="catch";class R extends d{render(V){return"finally"+super.render(V)}}R.kind="finally";class O{constructor(V,er={}){this._values={},this._blockStarts=[],this._constants={},this.opts={...er,_n:er.lines?`
1129
+ */class EY{constructor(e){rr(this,"url");rr(this,"bigWigPromise");rr(this,"usingProxy",!1);rr(this,"chromNamingCache",null);this.url=e,this.bigWigPromise=this.loadBigWig(e)}async loadBigWig(e){return new Promise((c,h)=>{iY(new N2(e),(t,i)=>{i?h(i):c(t)})})}switchToProxy(){this.usingProxy=!0,this.chromNamingCache=null,this.bigWigPromise=this.loadBigWig(iQr(this.url))}async detectChromosomeNaming(){if(this.chromNamingCache!==null)return this.chromNamingCache;try{const e=await this.bigWigPromise,c=Object.keys(e.chromsToIDs||{})[0];return c?(this.chromNamingCache=!Wh[c]&&Object.values(Wh).some(h=>h.has(c)),this.chromNamingCache):(this.chromNamingCache=!1,!1)}catch{return this.usingProxy?(console.error("Error detecting chromosome naming. Check URL and file format."),null):(this.switchToProxy(),this.detectChromosomeNaming())}}async getData(e,c,h){const t=h.ensemblStyle??await this.detectChromosomeNaming(),i=async()=>{const a=await this.bigWigPromise,l=h.zoomLevel===void 0||h.zoomLevel===pwr.AUTO?this._getMatchingZoomLevel(a,c):Number.parseInt(h.zoomLevel);return e.map(_=>{let U=t?_.chr.replace("chr",""):_.chr;return U==="M"&&(U="MT"),this._getDataForChromosome({..._,chr:U},a,l)})};let s;try{s=await Promise.all(await i())}catch(a){if(!this.usingProxy)this.switchToProxy(),s=await Promise.all(await i());else throw a}const o=s.flat();for(let a of o)a.min-=1;return t&&e.forEach((a,l)=>{s[l].forEach(_=>_.chr=a.chr)}),o}_getMatchingZoomLevel(e,c){if(!c)return-1;if(e.zoomLevels.length===1)return 0;let t=e.zoomLevels.slice().sort((i,s)=>s.reduction-i.reduction).find(i=>i.reduction<c);return e.zoomLevels.findIndex(i=>i===t)}_getDataForChromosome(e,c,h){const t=e.start+1,i=e.end;return new Promise((s,o)=>{try{h===-1?c.readWigData(e.chr,t,i,s):c.getZoomedView(h).readWigData(e.chr,t,i,s)}catch(a){o(a)}})}}function sQr(n){let e=[];for(let t of n._navContext._features){let i=new Ke(t.locus.chr,t.locus.start,t.locus.end);e.push(new on(t.name,i))}let c=new si(n._navContext._name,e);return new f0(c,n._startBase,n._endBase)}const mS={WashU:"https://lambda.epigenomegateway.org/v3"};let ph={};const uS={geneannotation:async function(e){let c,h;const t=e.trackModel;t.apiConfig&&t.apiConfig.genome?c=t.apiConfig.genome:c=e.genomeName,t.apiConfig&&t.apiConfig.format in mS?h=mS[`${t.apiConfig.format}`]:h=mS.WashU;try{const i=e.nav.map(async o=>{const a=`${h}/${c}/genes/${e.name}/queryRegion?chr=${o.chr}&start=${o.start}&end=${o.end}`;try{const l=await fetch(a,{method:"GET",mode:"cors",cache:"default",credentials:"omit"});if(!l.ok)throw new Error(`HTTP error! status: ${l.status}`);return l.json()}catch(l){throw console.error(`Error fetching data for region ${o.chr}:${o.start}-${o.end}:`,l),l}});return(await Promise.all(i)).flat()}catch(i){throw console.error("Error in refGeneFetch:",i),i}},snp:async function(e){const c={hg19:"https://grch37.rest.ensembl.org/overlap/region/human",hg38:"https://rest.ensembl.org/overlap/region/human"},h=e.genomeName in c?c[`${e.genomeName}`]:null;if(!h)return[];const t={"Content-Type":"application/json"};try{const i=e.nav.map(async o=>{if(o.end-o.start>3e4)throw new Error("Please zoom in to see content. ");const a=`${h}/${o.chr.substr(3)}:${o.start}-${o.end}?content-type=application%2Fjson&feature=variation`;try{const l=await fetch(a,{headers:t,mode:"cors",cache:"default"});if(!l.ok)throw new Error(`HTTP error! status: ${l.status}`);return l.json()}catch(l){throw o.end-o.start>3e4?new Error("Please zoom in to see content. "):(console.error(`Error fetching SNP data for region ${o.chr}:${o.start}-${o.end}: `,l),l)}});return(await Promise.all(i)).flat()}catch(i){throw console.error("Error in snpFetch:",i),i}},bed:async function(e){return rc(e,"bedOrTabix")},bedcolor:async function(e){return rc(e,"bedOrTabix")},omeroidr:async function(e){return rc(e,"bedOrTabix")},bedgraph:async function(e){return rc(e,"bedOrTabix")},qbed:async function(e){return rc(e,"bedOrTabix")},dbedgraph:async function(e){return rc(e,"bedOrTabix")},boxplot:async function(e){return rc(e,"big")},modbed:async function(e){return rc(e,"bedOrTabix")},jaspar:async function(e){return rc(e,"jaspar")},bigbed:async function(e){return rc(e,"bigbed")},bigbedcolor:async function(e){return rc(e,"bigbed")},refbed:async function(e){return rc(e,"bedOrTabix")},matplot:async function(e){return rc(e,"bedOrTabix")},bigwig:async function(e){return rc(e,"big")},categorical:async function(e){return rc(e,"bedOrTabix")},longrange:async function(e){return rc(e,"bedOrTabix")},dynseq:async function(e){return rc(e,"big")},repeatmasker:async function(e){return rc(e,"repeatmasker")},rmskv2:async function(e){return rc(e,"rmskv2")},biginteract:async function(e){return rc(e,"big")},methylc:async function(e){return rc(e,"bedOrTabix")},genomealign:function(e){return rc(e,"bedOrTabix")},vcf:function(e){return rc(e,"vcf")},hic:function(e){return rc(e,"hic")},bam:function(e){return rc(e,"bam")}};async function rc(n,e){const c=n.trackModel.indexUrl||null;let h=null;if(!ph[n.trackModel.url])if(e==="bedOrTabix")ph[n.trackModel.url]=new yYr(n.trackModel.url,c);else if(e==="vcf")ph[n.trackModel.url]=new MYr(n.trackModel.url,c);else if(e==="bigbed")ph[n.trackModel.url]=new EY(n.trackModel.url);else if(e==="big")ph[n.trackModel.url]=new aS(n.trackModel.url);else if(e==="repeatmasker")ph[n.trackModel.url]=new EY(n.trackModel.url);else if(e==="rmskv2")ph[n.trackModel.url]=new aS(n.trackModel.url);else if(e==="jaspar")ph[n.trackModel.url]=new aS(n.trackModel.url);else if(e==="hic")ph[n.trackModel.url]=new Zv(n.trackModel.url);else if(e==="bam")ph[n.trackModel.url]=new wY(n.trackModel.url);else throw new Error(`Unsupported track type: ${e}. `);h=ph[n.trackModel.url];try{if(h){if(n.trackModel.options.trackType=n.trackModel.type,e==="jaspar"&&n.basesPerPixel>2)throw new Error("Please zoom in to see content. ");if((e==="repeatmasker"||e==="rmskv2")&&n.basesPerPixel>1e3)throw new Error("Please zoom in to see content. ");return e==="bigbed"?h.getData(n.nav,n.basesPerPixel,n.trackModel.options).then(t=>(ph[n.trackModel.url]=null,t)).catch(t=>{throw ph[n.trackModel.url]=null,t}):e==="hic"?h.getData(sQr(n.visRegion),n.basesPerPixel,n.trackModel.options).then(t=>{const i=ph[n.trackModel.url].getFileInfo();return{data:t,fileInfos:i}}).catch(t=>{throw ph[n.trackModel.url]=null,t}):h.getData(n.nav,n.basesPerPixel,n.trackModel.options).then(t=>(ph[n.trackModel.url]=null,t)).catch(t=>{throw ph[n.trackModel.url]=null,t})}}catch(t){throw h=null,t}}const QU=1200,oQr=P.memo(function({genomeName:e,tracks:c,viewRegion:h,windowWidth:t}){const i=P.useRef(e),[s,o]=P.useState(null),[a,l]=P.useState(null),[_,U]=P.useState(!1),m=P.useRef({}),u=P.useRef(null);function d(){l(null)}function C(){return e?p6(e):null}function A(M){return h||(M!=null&&M.defaultRegion?M.defaultRegion:null)}function f(M){return M?!c||!Array.isArray(c)||c.length===0?"Invalid data source":null:"Invalid region"}function E(M,H){var O;const R=((O=hn[M])==null?void 0:O.defaultOptions)||{};return H?{...R,...H,packageVersion:!0,trackManagerRef:Q_.has(M)?u.current:null}:{...R,packageVersion:!0,trackManagerRef:Q_.has(M)?u.current:null}}function y(M,H){let R=[];return customElements&&M.defaultTracks&&!c?R=M.defaultTracks.map((O,q)=>{if(O.type)return O.id=`${H}-${q}`,O.options=E(O.type,O.options?O.options:{}),O}).filter(Boolean):R=c.map((O,q)=>new Tr({type:O.type,name:O.name?O.name:O.type==="ruler"?"ruler":`track ${q+1}`,url:O.url,options:E(O.type,O.options),id:ai()})),R.forEach(O=>{var q,j;O.type==="hic"?m.current[`${O.id}`]||(m.current[`${O.id}`]=new Zv(O.url)):O.type==="dynamichic"?(q=O.tracks)==null||q.map((lr,Dr)=>{m.current[`${O.id}subtrack${Dr}`]=new Zv(O.tracks[Dr].url)}):O.type in{matplot:"",dynamic:"",dynamicbed:"",dynamiclongrange:""}?(j=O.tracks)==null||j.map((lr,Dr)=>{lr.id=`${O.id}subtrack${Dr}`}):O.type==="bam"&&(m.current[`${O.id}`]=new wY(O.url))}),R}function w(M,H,R,O){var lr,Dr;const q=M.navContext,j=M.navContext.parse(H);return{genomeConfig:M,primaryGenName:((Dr=(lr=M.genome)==null?void 0:lr.getName)==null?void 0:Dr.call(lr))||e,basesByPixel:R/(j.end-j.start),genomicLoci:[Ke.parse(H)],trackModelArr:O,viewWindow:new Re(0,R),visData:{visWidth:R,visRegion:new f0(q,j.start,j.end),viewWindow:new Re(0,R),viewWindowRegion:new f0(q,j.start,j.end)}}}async function x(M,H,R){if(R)return R.map(q=>{var lr;const j={viewWindow:M.viewWindow,startWindow:0,visRegion:M.visData.visRegion,visWidth:H};return{genomeName:M.primaryGenName,genesArr:q.genesArr,trackState:j,windowWidth:H,configOptions:q.trackModel.options,basesByPixel:M.basesByPixel,trackModel:q.trackModel,getGenePadding:(lr=hn[`${q.trackModel.type}`])==null?void 0:lr.getGenePadding,ROW_HEIGHT:hn[`${q.trackModel.type}`].ROW_HEIGHT,genomeConfig:M.genomeConfig}});{const O=await wYr([M]),q=[];return O[0].fetchResults.forEach(lr=>{lr.trackModel.type==="hic"?q.push(m.current[`${lr.trackModel.id}`].getData(M.visData.visRegion,M.visData.visRegion.getWidth()/H?H:QU,lr.trackModel.options).then(Dr=>{lr.result=Dr})):lr.trackModel.type==="bam"&&q.push(m.current[`${lr.trackModel.id}`].getData(M.genomicLoci).then(Dr=>{lr.result=Dr}))}),await Promise.all(q),O[0].fetchResults.map(lr=>{var Ur;const Dr={viewWindow:M.viewWindow,startWindow:0,visRegion:M.visData.visRegion,visWidth:H};function gr(nr,Q){const X=M.genomeConfig;let J;try{J=W5[`${lr.trackModel.type}`]({gene:Q,feature:Q,snp:Q,vcf:Q,trackModel:lr.trackModel,pageX:nr.pageX,pageY:nr.pageY,name:X.genome._name,onClose:d,isThereG3dTrack:!1,setShow3dGene:null,configOptions:lr.trackModel.options})}catch(Y){J=D.jsxs("div",{style:{position:"absolute",left:nr.pageX,top:nr.pageY,background:"#fff0f0",border:"1px solid red",padding:"8px",zIndex:1001,borderRadius:4},children:[D.jsxs("span",{style:{color:"red"},children:["Tooltip error: ",String(Y)]}),D.jsx("button",{style:{marginLeft:8},onClick:d,children:"✕"})]})}U(!0),l(b0.createPortal(J,document.body))}function ir(nr,Q,X,J,Y="",V="",er=""){let _r;try{J==="norm"?_r=W5.normModbed({bs:X,pageX:nr.pageX,pageY:nr.pageY,feature:Q,onClose:d}):_r=W5.barModbed({feature:Q,pageX:nr.pageX,pageY:nr.pageY,onCount:Y,onPct:V,total:er,onClose:d})}catch(Br){_r=b0.createPortal(D.jsxs("div",{style:{position:"absolute",left:nr.pageX,top:nr.pageY,background:"#fff0f0",border:"1px solid red",padding:"8px",zIndex:1001,borderRadius:4},children:[D.jsxs("span",{style:{color:"red"},children:["Tooltip error: ",String(Br)]}),D.jsx("button",{style:{marginLeft:8},onClick:d,children:"✕"})]}),document.body)}U(!0),l(_r)}return{genomeName:M.primaryGenName,genesArr:kf(lr.result,lr.trackModel.type),trackState:Dr,windowWidth:H,configOptions:lr.trackModel.options,basesByPixel:M.basesByPixel,trackModel:lr.trackModel,getGenePadding:(Ur=hn[`${lr.trackModel.type}`])==null?void 0:Ur.getGenePadding,ROW_HEIGHT:hn[`${`${lr.trackModel.type}`}`].ROW_HEIGHT,genomeConfig:M.genomeConfig,renderTooltip:lr.trackModel.type==="modbed"?ir:gr}})}}function k(M){return M.map(H=>{const R=G7(H);return D.jsx("div",{style:{borderBottom:"1px solid #d3d3d3",width:(t||QU)+120},children:typeof R=="object"&&Object.prototype.hasOwnProperty.call(R,"numHidden")?R.component:R},H.trackModel.id)})}async function p({genomeConfig:M,region:H,width:R,genomeKey:O,prevGenomeDrawData:q}){const j=f(H);if(j){o(j);return}const lr=y(M,O),Dr=w(M,H,R,lr),gr=await x(Dr,R,q),ir=k(gr);o({element:ir,genomeDrawData:gr,genomeConfig:M,genomeKey:O})}return P.useEffect(()=>{async function M(){i.current=ai();const H=C();if(!H){o("Invalid genome");return}const R=A(H);await p({genomeConfig:H,region:R,width:t||QU,genomeKey:i.current,prevGenomeDrawData:void 0})}M()},[e,customElements]),P.useEffect(()=>{if(s&&i.current===s.genomeKey){async function M(){const H=s.genomeConfig,R=A(H);await p({genomeConfig:H,region:R,width:t||QU,genomeKey:s.genomeKey,prevGenomeDrawData:void 0})}M()}},[h,c]),P.useEffect(()=>{if(s&&i.current===s.genomeKey){async function M(){const H=s.genomeConfig,R=A(H);await p({genomeConfig:H,region:R,width:t||QU,genomeKey:s.genomeKey,prevGenomeDrawData:s.genomeDrawData})}M()}},[t]),D.jsx("div",{ref:u,style:{display:"flex",position:"relative"},children:s?typeof s=="string"?D.jsx("div",{style:{color:"red"},children:s}):D.jsxs("div",{children:[D.jsx("div",{className:_?"visible":"hidden",children:a}),s.element]}):""})}),rd=window.requestAnimationFrame,r9=window.cancelAnimationFrame,aQr=n=>({name:n.name,type:n.type,filetype:n.filetype,options:n.options,url:n.url,indexUrl:n.indexUrl,metadata:n.metadata,queryEndpoint:n.queryEndpoint,querygenome:n.querygenome,id:n.id,isSelected:n.isSelected,tracks:n.tracks}),lQr=new oqr,vS={[P0.ZoomOutOneThirdFold]:{factor:4/3,text:"⅓×",title:"Zoom out 1/3-fold"},[P0.ZoomOutOneFold]:{factor:2,text:"1×",title:"Zoom out 1-fold (Alt+O)"},[P0.ZoomOutFiveFold]:{factor:5,text:"5×",title:"Zoom out 5-fold"},[P0.ZoomInOneThirdFold]:{factor:2/3,text:"⅓×",title:"Zoom in 1/3-fold"},[P0.ZoomInOneFold]:{factor:.5,text:"1×",title:"Zoom in 1-fold (Alt+I)"},[P0.ZoomInFiveFold]:{factor:.2,text:"5×",title:"Zoom in 5-fold"}};function ed(n){let e=0;for(let c=0;c<n.length;c++)e+=n[c];return e}const yY=5;function Wo(n){if(!n)return;let e=[];for(let t of n._navContext._features){let i=new Ke(t.locus.chr,t.locus.start,t.locus.end);e.push(new on(t.name,i,t.strand,t.value))}let c=new si(n._navContext._name,e);return new f0(c,n._startBase,n._endBase)}function _Qr(n,e){let c=[];for(let h of n){let t=e.navContext.getFeaturesInInterval("start"in h?h.start:h._startBase,"end"in h?h.end:h._endBase);c.push(t.map((i,s)=>i.getLocus()))}return c}const UQr=new Set(["aggregateMethod","smooth","hiddenPixels","displayMode","height","rowHeight","maxRows","hideMinimalItems","sortItems"]),mQr=P.memo(function({windowWidth:e,legendWidth:c,genomeConfig:h,userViewRegion:t,highlights:i,tracks:s,viewRegion:o,onNewRegion:a,onNewHighlight:l,onTracksChange:_,onNewRegionSelect:U,tool:m,Toolbar:u,showGenomeNav:d,showToolBar:C,isThereG3dTrack:A,setScreenshotData:f,selectedRegionSet:E,isScreenShotOpen:y,setShow3dGene:w,infiniteScrollWorkers:x,fetchGenomeAlignWorker:k,currentState:p,darkTheme:M}){var h3,t3;const H=P.useContext(Oj),R=P.useRef({key:-0,done:{},groups:{},selected:{}}),O=P.useRef(!0),q=P.useRef(null),j=P.useRef(!1),lr=P.useRef("Drag"),Dr=P.useRef(!0),gr=P.useRef(0),ir=P.useRef(e);ir.current=e;const Ur=P.useRef(""),nr=P.useRef(0),Q=P.useRef(0),X=P.useRef(0),J=P.useRef(0),Y=P.useRef(null),V=P.useRef(0),er=P.useRef(0),_r=P.useRef(0),Br=P.useRef({}),Er=P.useRef({x:0,y:0}),Hr=P.useRef({x:0,y:0}),Mr=P.useRef(0),Gr=P.useRef(0),Rr=P.useRef(!1),me=P.useRef(null),xr=P.useRef(null),re=P.useRef(p.limit),Yr=P.useRef(p.index),_e=Math.max(8,Math.min(12,ir.current*.008)),ze=Math.max(12,Math.min(12,ir.current*.009)),wr=P.useRef({bundleId:"",customTracksPool:[],darkTheme:!1,genomeName:h.genome.getName(),highlights:[],isShowingNavigator:!0,layout:{global:{},layout:{},borders:[]},metadataTerms:[],regionSetView:null,regionSets:[],caches:{},globalConfig:{viewWindow:new Re(ir.current,ir.current*2)},viewRegion:t,trackLegendWidth:c,tracks:[]}),Pe=P.useRef({}),ge=P.useRef(0),fe=P.useRef(0),Ie=P.useRef(0),Me=P.useRef(null),Ue=P.useRef(0),Se=P.useRef(0),s0=P.useRef(!1),a0=P.useRef(!1),x0=P.useRef("right"),mr=P.useRef(!1),$=P.useRef([ir.current]),Z=P.useRef([]),Ar=P.useRef({}),Ir=P.useRef({}),jr=P.useRef(!1),Qr=P.useRef(-0),Ne=P.useRef({rightIdx:0,leftIdx:1,viewWindow:new Re(ir.current,ir.current*2),trackStates:{}}),j0=P.useRef(a8.throttle((vr,kr)=>{Mr.current.style.transform=`translateY(${kr}px)`,Gr.current.style.transform=`translate3d(${vr}px, 0, 0)`},16)).current,H0=P.useRef([]),l0=P.useRef(null),[E0,vn]=P.useState({}),[p0,Cn]=P.useState([]),[Dn,dn]=P.useState(!1),[yn,$c]=P.useState({isSelected:!1,title:"none"}),[wn,Xn]=P.useState({}),[Gn,Vn]=P.useState([]),[xn,Cc]=P.useState(null),[gc,Lc]=P.useState({suggestedMetaSets:new Set,terms:new Array,termValues:{}}),[X1,G1]=P.useState(null),Hi=P.useRef([]),Hs=P.useRef([]),Wt=P.useMemo(()=>{var vr,kr,yr,ie,Ce,De,ne,xe,ue,de,oe,ae,ye,We,He,n0,Ge,S,N,F,G;if((kr=(vr=wn==null?void 0:wn.completedFetchedRegion)==null?void 0:vr.current)!=null&&kr.key&&j.current&&((de=(ue=(xe=(ne=(De=(Ce=Ne.current.trackStates)==null?void 0:Ce[(ie=(yr=wn==null?void 0:wn.completedFetchedRegion)==null?void 0:yr.current)==null?void 0:ie.key])==null?void 0:De.trackState)==null?void 0:ne.genomicFetchCoord)==null?void 0:xe[h.genome.getName()])==null?void 0:ue.primaryVisData)!=null&&de.viewWindowRegion)){const hr=(He=(We=(ye=(ae=(oe=Ne.current.trackStates)==null?void 0:oe[wn.completedFetchedRegion.current.key])==null?void 0:ae.trackState)==null?void 0:ye.genomicFetchCoord)==null?void 0:We[h.genome.getName()])==null?void 0:He.primaryVisData,tr=Wo(hr.viewWindowRegion);return Wo(tr)}else{const hr=(G=(F=(N=(S=(Ge=Ne.current.trackStates)==null?void 0:Ge[(n0=wn.completedFetchedRegion)==null?void 0:n0.current.key])==null?void 0:S.trackState)==null?void 0:N.genomicFetchCoord)==null?void 0:F[h.genome.getName()])==null?void 0:G.primaryVisData;return hr?Wo(hr.viewWindowRegion):t}},[wn]);P.useEffect(()=>{if(i){let vr=p1(i);vr&&Vn([...vr])}},[Wt]);const Qa=(vr,kr)=>{let yr=null;return(...ie)=>{yr||(vr(...ie),yr=setTimeout(()=>{yr=null},kr))}},V1=P.useRef(U);V1.current=U;const $o=P.useRef(Qa((vr,kr,yr)=>{V1.current(vr,kr,yr)},150));function Lo(){const vr={};return Hi.current.forEach(kr=>{kr&&Array.isArray(kr)&&kr.forEach(yr=>{if(yr.trackModelArr&&Array.isArray(yr.trackModelArr)){yr.trackModelArr.forEach(ie=>{ie&&ie.id&&(vr[ie.id]||(vr[ie.id]=[]),vr[ie.id].push({missingIdx:yr.missingIdx,genomicLoci:yr.genomicLoci}))});return}})}),vr}const K1=vr=>{Hi.current.push(vr),j1()},Rt=vr=>{s0.current&&!j.current?Hs.current=[vr]:Hs.current.push(vr),wh()},j1=async()=>{if(Hi.current.length===0){vn({});return}vn(Lo());const vr=Hi.current.pop();if(x.current&&x.current.worker.length>0&&vr.length>0&&vr[0].trackDataIdx===Qr.current){for(const kr of x.current.worker)kr.hasOnMessage===!1&&(kr.fetchWorker.onmessage=Os,kr.hasOnMessage=!0);for(let kr=0;kr<vr.length;kr++){const yr=Zr.cloneDeep(vr[kr]);for(const ie of vr[kr].trackModelArr){let Ce=0,De=x.current.worker[0].processingCount;for(let ne=1;ne<x.current.worker.length;ne++)x.current.worker[ne].processingCount<De&&(De=x.current.worker[ne].processingCount,Ce=ne);x.current.worker[Ce].processingCount++,x.current.worker[Ce].fetchWorker.postMessage([{...yr,trackModelArr:[ie],_workerIdx:Ce}])}}}},wh=()=>{if(Hs.current.length===0)return;const vr=Hs.current.pop();k.current&&(k.current.hasOnMessage===!1&&(k.current.fetchWorker.onmessage=Ko,k.current.hasOnMessage=!0),k.current.fetchWorker.postMessage(vr))},J1=P.useCallback(()=>{Rr.current=!0,Y.current&&(me.current=Y.current.getBoundingClientRect())},[]),Ot=P.useCallback(()=>{Rr.current=!1,me.current=null,xr.current!==null&&(r9(xr.current),xr.current=null),Mr.current&&Gr.current&&(Mr.current.style.display="none",Gr.current.style.display="none")},[]);function qt(vr){if(Rr.current){const ie=me.current||Y.current.getBoundingClientRect(),Ce=vr.clientX-ie.left,De=vr.clientY-ie.top;Er.current={x:vr.clientX,y:vr.clientY},Hr.current={x:Ce,y:De},xr.current!==null&&r9(xr.current),xr.current=rd(()=>{Mr.current&&Gr.current&&(Mr.current.style.display="block",Gr.current.style.display="block",j0(Ce,De)),xr.current=null})}else Mr.current&&Gr.current&&(Mr.current.style.display="none",Gr.current.style.display="none");if(Dr.current===!1||!mr.current||a0.current)return;const kr=Ue.current-vr.pageX;Ue.current=vr.pageX;let yr=Se.current;yr-=kr,!(x0.current==="right"&&-yr>=Math.floor(ed($.current)+ir.current))&&(x0.current==="left"&&yr>=Math.floor(ed(Z.current)+ir.current)||(Se.current-=kr,r9(Ie.current),Ie.current=rd(()=>{Me.current&&(Me.current.style.transform=`translate3d(${Se.current}px, 0, 0)`,Me.current.querySelectorAll(".Track-border-container").forEach(ie=>{ie.style.transform=`translate3d(${-Se.current}px, 0, 0)`})),p0.forEach(ie=>{ie.legendRef.current&&(ie.legendRef.current.style.transform=`translate3d(${-Se.current}px, 0, 0)`)})})))}function Xo(vr){vr.button===0&&(mr.current=!0,Ue.current=vr.pageX,Mr.current&&Gr.current&&(Mr.current.style.display="none",Gr.current.style.display="none"),vr.preventDefault())}function Ws(vr,kr){const yr=vr.getWidth()/ir.current,ie=Math.round(-1*yr*kr),Ce=vr.getNavigationContext(),[De,ne]=vr.getContextCoordinates(),xe=Ce.toGaplessCoordinate(Math.max(0,De+ie)),ue=Ce.toGaplessCoordinate(Math.min(ne+ie,Ce.getTotalBases()-1));return new Re(xe,ue)}function r3(vr){if(vr.length===1)return vr[0].toString();{const kr=vr[0],yr=vr[vr.length-1];return kr.toStringWithOther(yr)}}function B1(){var Ce,De,ne,xe,ue,de,oe,ae,ye,We;if(mr.current=!1,Mr.current&&Gr.current&&(Mr.current.style.display="block",Gr.current.style.display="block"),ge.current===Se.current||!q.current)return;ge.current=Se.current;let vr,kr;if(j.current&&((ue=(xe=(ne=(De=(Ce=Ne.current.trackStates)==null?void 0:Ce[Qr.current])==null?void 0:De.trackState)==null?void 0:ne.genomicFetchCoord[h.genome.getName()])==null?void 0:xe.primaryVisData)!=null&&ue.viewWindowRegion)){const He=(ye=(ae=(oe=(de=Ne.current.trackStates)==null?void 0:de[Qr.current])==null?void 0:oe.trackState)==null?void 0:ae.genomicFetchCoord[h.genome.getName()])==null?void 0:ye.primaryVisData;kr=Ws(Wo(He.viewWindowRegion),Se.current%ir.current-(x0.current==="left"?ir.current:0)),vr=kr.start;const n0=h.navContext.getFeaturesInInterval(kr.start,kr.end);r3(n0)}else{if(vr=nr.current+-Se.current*fe.current,vr>q.current.navContext._totalBases||vr<=0)return;wr.current.viewRegion._startBase=vr,wr.current.viewRegion._endBase=vr+X.current,kr={start:vr,end:vr+X.current}}a(kr.start,kr.end),V.current=vr;const yr=Math.ceil(Se.current/ir.current);Se.current>0&&x0.current==="right"?x0.current="left":Se.current<=0&&x0.current==="left"&&(x0.current="right");let ie=x0.current==="right"?new Re(-(Se.current%ir.current+-ir.current),-(Se.current%ir.current+-ir.current)+ir.current):new Re(ir.current*3-(Se.current%ir.current+ir.current),ir.current*3-Se.current%ir.current);-Se.current>=ed($.current)&&Se.current<0?($.current.push(ir.current),Oi(0,"right",ie)):Se.current>=ed(Z.current)&&Se.current>0&&(Z.current.push(ir.current),Oi(0,"left",ie)),Ne.current.viewWindow=ie,Qr.current===yr?l0.current={viewWindow:ie,groupScale:null,dataIdx:yr,contextNavCoord:{start:vr,end:vr+X.current}}:(Qr.current=yr,(We=Ne.current.trackStates[yr])!=null&&We.trackState.visData&&n1(yr))}function e3(vr){const kr=wr.current.caches[vr];for(const yr in kr)Lh(yr)&&"dataCache"in wr.current.caches[vr][yr]&&delete wr.current.caches[vr][yr].dataCache;delete R.current.done[vr],n1(Qr.current)}const W2=P.useCallback(vr=>{const kr=[];for(const yr of vr)kr.push(Zr.cloneDeep(yr.trackModel));wr.current.tracks=Zr.cloneDeep(kr),_(Zr.cloneDeep(wr.current.tracks))},[_]);function $t(vr){wr.current.globalConfig||(wr.current.globalConfig={}),wr.current.globalConfig[`${vr.trackModel.id}`]=Zr.cloneDeep(vr)}function Go(vr,kr=null,yr=null){var oe;let ie=[],Ce=[];const De=[],ne=Object.keys(Br.current).length;let xe={};for(const ae in Br.current){let ye=Zr.cloneDeep(wr.current.tracks.find(We=>We.id===ae)||null);if(ye){ye.options=wr.current.globalConfig&&wr.current.globalConfig[`${ae}`]!==void 0&&wr.current.globalConfig[`${ae}`].configOptions!==void 0?Zr.cloneDeep(wr.current.globalConfig[`${ae}`].configOptions):{},yr&&kr==="displayMode"&&(ye.options.displayMode=yr),yr&&kr==="scoreScale"&&(ye.options.scoreScale=yr),yr&&kr==="yScale"&&(ye.options.yScale=yr),ye.type==="hic"&&(xe[`${ye.id}`]=(oe=wr.current.caches[`${ye.id}`])==null?void 0:oe.fileInfos),ye.options.trackId=ae;const He=ff(ye).getMenuComponents();ie.push(He),Ce.push(ye.options),De.push(ye)}}const ue=Zr.intersection(...ie);return{key:ai(),handleDelete:Rs,handleAdd:Lt,pageX:Pe.current.left,pageY:Pe.current.top,viewportX:Pe.current.viewportX,viewportY:Pe.current.viewportY,onConfigMenuClose:Uh,selectCount:ne,configOptions:Ce,items:ue,onConfigChange:Vo,blockRef:Y,tracks:De,fileInfos:xe,trackId:vr}}function Vo(vr,kr,yr=null){let ie={},Ce=!1;(vr==="displayMode"||vr==="scoreScale"||vr==="yScale")&&Cc(Go(yr,vr,kr)),vr==="label"&&yr?wr.current.tracks.map(ne=>{if(ne.id===yr){let xe=Zr.cloneDeep(ne.options),ue=Zr.cloneDeep(kr);ne.options={...xe,[vr]:String(ue)},ie[`${yr}`]={[vr]:kr}}}):wr.current.tracks.map(ne=>{if(ne.isSelected){let xe=Zr.cloneDeep(ne.options),ue=Zr.cloneDeep(kr);if(ne.options={...xe,[vr]:ue},ie[`${ne.id}`]={[vr]:kr},vr==="normalization"||vr==="binSize"){$t({configOptions:{...wr.current.globalConfig&&wr.current.globalConfig[`${ne.id}`]?wr.current.globalConfig[`${ne.id}`].configOptions:{},...ne.options},trackModel:ne,id:ne.id,usePrimaryNav:!1});const de=wr.current.caches[ne.id];for(const oe in de)Lh(oe)&&"dataCache"in wr.current.caches[ne.id][oe]&&(R.current.done[vr]=!1,wr.current.caches[ne.id][oe]={})}else if(vr==="yMax"||vr==="yMin"||vr==="yScale"){const de=wr.current.globalConfig&&wr.current.globalConfig[ne.id]&&wr.current.globalConfig[ne.id].configOptions?wr.current.globalConfig[ne.id].configOptions:null,oe=de?de.group:null;if(oe){Ce=!0;for(const ae in wr.current.globalConfig){const ye=wr.current.globalConfig[ae];if(ye&&ye.configOptions&&ye.configOptions.group===oe){ye.configOptions={...ye.configOptions,[vr]:kr};const We=wr.current.tracks.find(He=>`${He.id}`==`${ae}`);if(We){let He=Zr.cloneDeep(We.options),n0=Zr.cloneDeep(kr);We.options={...He,[vr]:n0},ie[`${ae}`]={[vr]:kr},$t({configOptions:{...wr.current.globalConfig&&wr.current.globalConfig[`${ae}`]?wr.current.globalConfig[`${ae}`].configOptions:{},...We.options},trackModel:We,id:ae,usePrimaryNav:!1})}else $t({configOptions:{...ye.configOptions},trackModel:null,id:ae,usePrimaryNav:!1})}}}else try{const ae=`${ne.id}`,ye=wr.current.tracks.find(n0=>`${n0.id}`===ae)||null;let We={};wr.current.globalConfig&&wr.current.globalConfig[ae]?We=wr.current.globalConfig[ae].configOptions||{}:ye&&(We={...hn[ye.type]?hn[`${ye.type}`].defaultOptions:{},...ye.options||{}});const He={...We,...ie[ae]};$t({configOptions:He,trackModel:ye,id:ae,trackIdx:wr.current.tracks.findIndex(n0=>`${n0.id}`===ae)})}catch{}}else{if(vr==="aggregateMethod"){const de=wr.current.caches[ne.id];for(const oe in de)Lh(oe)&&"xvalues"in wr.current.caches[ne.id][oe]&&delete wr.current.caches[ne.id][oe].xvalues}try{const de=`${ne.id}`,oe=wr.current.tracks.find(We=>`${We.id}`===de)||null;let ae={};wr.current.globalConfig&&wr.current.globalConfig[de]?ae=wr.current.globalConfig[de].configOptions||{}:oe&&(ae={...hn[oe.type]?hn[`${oe.type}`].defaultOptions:{},...oe.options||{}});const ye={...ae,...ie[de]};$t({configOptions:ye,trackModel:oe,id:de,trackIdx:wr.current.tracks.findIndex(We=>`${We.id}`===de)})}catch{}}}}),wr.current.viewRegion._startBase?wr.current.viewRegion._startBase:nr.current,wr.current.viewRegion._endBase?wr.current.viewRegion._endBase:Q.current+X.current;const De=l0.current!==null?Zr.cloneDeep(l0.current):{viewWindow:new Re(ir.current,ir.current*2),dataIdx:Qr.current};if(vr==="normalization"||vr==="binSize")n1(Qr.current);else if(vr!=="legendFontColor"&&vr!=="label"){De.tracksToDrawId=ie,(UQr.has(vr)||Ce)&&$i(De.viewWindow,Qr.current,De.tracksToDrawId);const ne=De.tracksToDrawId||{};Object.keys(ne).length>0&&G1({dataIdx:Qr.current,viewWindow:De.viewWindow,groupScale:Ne.current.trackStates[Qr.current].trackState.groupScale,trackToDrawId:ne})}_(Zr.cloneDeep(wr.current.tracks))}function Wi(vr,kr,yr,ie,Ce){Pe.current={left:vr,top:kr,viewportX:ie,viewportY:Ce},Cc(Go(yr))}function Mc(vr,kr){if(vr.shiftKey){const yr=kr;let ie;Br.current[yr]===""?ie=!1:ie=!0,ie?Br.current[yr]="":delete Br.current[yr];const Ce=wr.current.tracks.map(De=>De.id in Br.current?new Tr({...De,isSelected:!0}):new Tr({...De,isSelected:!1}));if(wr.current.tracks=Ce,O.current){const De=p0.map(ne=>({...ne,trackModel:Ce.find(xe=>xe.id===ne.trackModel.id)||ne.trackModel}));Cn(De)}_(Ce),xn&&Object.keys(Br.current).length>0?Wi(vr.pageX,vr.pageY,yr,vr.clientX,vr.clientY):Cc(null)}else{const yr=kr;yr&&Object.keys(Br.current).length>0&&!(yr in Br.current)&&(Ri(),_(Zr.cloneDeep(wr.current.tracks)),Cc(null))}}function Oh(vr,kr){if(vr.preventDefault(),kr.trackModel.id in Br.current)Wi(vr.pageX,vr.pageY,kr.trackModel.id,vr.clientX,vr.clientY);else{Ri();const yr=wr.current.tracks.map(ie=>ie.id===kr.trackModel.id?new Tr({...ie,isSelected:!0}):ie);if(wr.current.tracks=yr,O.current){const ie=p0.map(Ce=>({...Ce,trackModel:yr.find(De=>De.id===Ce.trackModel.id)||Ce.trackModel}));Cn(ie)}Br.current[`${kr.trackModel.id}`]="",_(yr),Wi(vr.pageX,vr.pageY,kr.trackModel.id,vr.clientX,vr.clientY)}}const Uh=P.useCallback(()=>{Cc(null)},[]),Ri=P.useCallback(()=>{Object.keys(Br.current).length!==0&&(wr.current.tracks.forEach(vr=>{vr.isSelected=!1}),Br.current={})},[_]),Rs=P.useCallback(vr=>{const kr=[];for(let yr=0;yr<wr.current.tracks.length;yr++){const ie=wr.current.tracks[yr];if(!vr.includes(String(ie.id))){const Ce=Zr.cloneDeep(ie);Ce.changeConfigInitial=!0,kr.push(Ce)}}wr.current.tracks=kr;for(const yr of vr)yr in Br.current&&delete Br.current[yr];_(Zr.cloneDeep(wr.current.tracks)),vr.length>0&&Uh()},[_,Uh]);function Lt(vr,kr){let yr=null;kr==="matplot"&&(yr=new Tr({id:ai(),type:"matplot",name:"matplot wrap",tracks:vr})),yr&&(wr.current.tracks=[...wr.current.tracks,yr],_(Zr.cloneDeep(wr.current.tracks)),Uh())}async function Oi(vr=0,kr,yr){if(!q.current)return;let ie,Ce=[],De=[],ne=[],xe,ue,de;if(vr===1){ne=[{start:_r.current-X.current*2,end:er.current},{start:_r.current-X.current,end:er.current+X.current},{start:_r.current,end:er.current+X.current*2}],De.push({start:_r.current-X.current,end:_r.current}),De.push({start:er.current-X.current,end:er.current}),De.push({start:er.current,end:er.current+X.current}),H0.current=[_r.current-X.current,_r.current,_r.current+X.current],ie=new f0(q.current.navContext,_r.current,er.current);const We=new f0(q.current.navContext,_r.current-X.current,er.current+X.current),He=ir.current/ie.getWidth(),n0=We.getWidth()*He,Ge=ie.getContextCoordinates(),S=We.getContextCoordinates(),N=Ge.start-S.start,F=S.end-Ge.end,G=N*He,hr=F*He;xe={visWidth:E&&X.current===q.current.navContext._totalBases?n0-hr:n0,visRegion:We,viewWindow:E&&X.current===q.current.navContext._totalBases?new Re(0,n0-hr):new Re(G,n0-hr),viewWindowRegion:ie},ue=q.current.navContext.getFeaturesInInterval(_r.current-X.current,er.current+X.current).map((ar,Nr)=>ar.getLocus()),_r.current=_r.current-X.current*2,er.current=er.current+X.current*2,de=_Qr(De,q.current)}else if(kr==="right"){ie=new f0(q.current.navContext,er.current-X.current,er.current),Ce=q.current.navContext.getFeaturesInInterval(er.current-X.current,er.current).map((Lr,Kr)=>Lr.getLocus());let He=q.current.navContext.getFeaturesInInterval(er.current-X.current*2,er.current-X.current),n0=new f0(q.current.navContext,er.current-X.current*2,er.current-X.current);de=He.map((Lr,Kr)=>Lr.getLocus());const Ge=new f0(q.current.navContext,er.current-X.current*3,er.current),S=ir.current/n0.getWidth(),N=Ge.getWidth()*S,F=n0.getContextCoordinates(),G=Ge.getContextCoordinates(),hr=F.start-G.start,tr=G.end-F.end,ar=hr*S,Nr=tr*S;xe={visWidth:E&&X.current===q.current.navContext._totalBases?Nr:N,visRegion:Ge,viewWindow:E&&X.current===q.current.navContext._totalBases?new Re(0,Nr):new Re(ar,N-Nr),viewWindowRegion:n0},ue=q.current.navContext.getFeaturesInInterval(er.current-X.current*3,er.current).map((Lr,Kr)=>Lr.getLocus()),H0.current.push(er.current-X.current),er.current=er.current+X.current}else{ie=new f0(q.current.navContext,_r.current,_r.current+X.current),Ce=q.current.navContext.getFeaturesInInterval(_r.current,_r.current+X.current).map((Lr,Kr)=>Lr.getLocus());let He=q.current.navContext.getFeaturesInInterval(_r.current+X.current,_r.current+X.current*2),n0=new f0(q.current.navContext,_r.current+X.current,_r.current+X.current*2);de=He.map((Lr,Kr)=>Lr.getLocus());const Ge=new f0(q.current.navContext,_r.current,_r.current+X.current*3),S=ir.current/n0.getWidth(),N=Ge.getWidth()*S,F=n0.getContextCoordinates(),G=Ge.getContextCoordinates(),hr=F.start-G.start,tr=G.end-F.end,ar=hr*S,Nr=tr*S;xe={visWidth:E&&X.current===q.current.navContext._totalBases?Nr:N,visRegion:Ge,viewWindow:E&&X.current===q.current.navContext._totalBases?new Re(0,Nr):new Re(ar,N-Nr),viewWindowRegion:n0},ue=q.current.navContext.getFeaturesInInterval(_r.current,_r.current+X.current*3).map((Lr,Kr)=>Lr.getLocus()),H0.current.unshift(_r.current),_r.current=_r.current-X.current}let oe={};oe[`${q.current.genome.getName()}`]={genomicLoci:Ce,regionExpandLoci:ne[1]},oe[`${q.current.genome.getName()}`].primaryVisData=xe;let ae=Se.current,ye={primaryGenName:q.current.genome.getName(),initial:vr,side:kr,xDist:ae,genomicFetchCoord:oe,regionLoci:de,visData:xe,regionExpandLoci:ue,viewWindow:yr,initVisData:vr?ne.map((We,He)=>{var pr,Lr,Kr;const n0=new f0((pr=q.current)==null?void 0:pr.navContext,De[He].start,De[He].end),Ge=new f0((Lr=q.current)==null?void 0:Lr.navContext,We.start,We.end),S=ir.current/n0.getWidth(),N=Ge.getWidth()*S,F=n0.getContextCoordinates(),G=Ge.getContextCoordinates(),hr=F.start-G.start,tr=G.end-F.end,ar=hr*S,Nr=tr*S;return{visWidth:E&&X.current===((Kr=q.current)==null?void 0:Kr.navContext._totalBases)?N-Nr:N,visRegion:Ge,viewWindow:new Re(ar,N-Nr),viewWindowRegion:n0}}):""};eqr({trackState:ye,globalTrackState:Ne})}const Os=async vr=>{await Promise.all(vr.data.map(async kr=>{var De;const yr=kr.trackToDrawId?kr.trackToDrawId:{},ie=kr.trackDataIdx;if(Ne.current.trackStates[ie]===void 0)return Promise.resolve();const Ce={...Ne.current.trackStates[ie].trackState,primaryGenName:(De=q.current)==null?void 0:De.genome.getName()};await Promise.all(kr.fetchResults.map(async ne=>{yr[`${ne.id}`]="",await qs({trackState:Ce,result:ne.result,id:ne.id,trackType:ne.trackModel.type?ne.trackModel.type:ne.name?ne.name:"",metadata:ne.metadata,trackModel:ne.trackModel,curFetchNav:ne.name==="bam"?ne.curFetchNav:"",missingIdx:kr.missingIdx,trackDataIdx:kr.trackDataIdx,fileInfos:ne.fileInfos,errorType:ne.errorType})})).then(()=>{const ne=Qr.current,xe=[ne-1,ne,ne+1],ue={};for(let de in yr){const oe=wr.current.caches[de];if(oe)if(oe.error)ue[de]=!1;else if(j.current||oe.useExpandedLoci||!oe.usePrimaryNav)(oe[ne]&&oe[ne].dataCache||!oe.usePrimaryNav)&&(ue[de]=!1);else{let ae=!0;for(let ye of xe)if(!oe[ye]||!oe[ye].dataCache){ae=!1;break}ae&&(ue[de]=!1)}}Object.keys(ue).length>0&&(R.current.key!==ne&&(R.current.key=ne,R.current.done={},R.current.groups={}),nc({trackDataIdx:kr.trackDataIdx,initial:kr.initial,trackToDrawId:ue,missingIdx:kr.missingIdx,curDataIdx:kr.trackDataIdx}),j1())})})).then(()=>{var yr,ie;const kr=(yr=x.current)==null?void 0:yr.worker;if(kr){const Ce=(ie=vr.data[0])==null?void 0:ie._workerIdx;Ce!==void 0&&kr[Ce]&&(kr[Ce].processingCount=Math.max(0,kr[Ce].processingCount-1))}}).catch(kr=>{var ie,Ce;console.error("Error in createInfiniteOnMessage:",kr);const yr=(ie=x.current)==null?void 0:ie.worker;if(yr){const De=(Ce=vr.data[0])==null?void 0:Ce._workerIdx;De!==void 0&&yr[De]&&(yr[De].processingCount=Math.max(0,yr[De].processingCount-1))}})},Ko=vr=>{var De;const kr=vr.data.navData.trackDataIdx,yr={...Ne.current.trackStates[kr].trackState,primaryGenName:(De=q.current)==null?void 0:De.genome.getName(),...vr.data.navData},ie=vr.data.navData.fetchNewRegion,Ce=vr.data.navData.dragX;Promise.all(Object.values(vr.data.fetchResults).map(ne=>qs({trackState:yr,result:ne.records,id:ne.id,trackType:ne.trackModel.type,metadata:ne.metadata,trackModel:ne.trackModel,curFetchNav:ne.name==="bam"?ne.curFetchNav:"",missingIdx:yr.missingIdx,trackDataIdx:vr.data.navData.trackDataIdx,queryGenome:ne.query,errorType:ne.errorType}))).then(()=>{var ne,xe;try{if(Ne.current.trackStates[yr.missingIdx?yr.missingIdx:yr.trackDataIdx].trackState.startWindow=vr.data.navData.regionSetStartBp!==0?yr.genomicFetchCoord[(ne=q.current)==null?void 0:ne.genome.getName()].primaryVisData.viewWindow.start:0,Ne.current.trackStates[yr.missingIdx?yr.missingIdx:yr.trackDataIdx].trackState.genomicFetchCoord=yr.genomicFetchCoord,Ne.current.trackStates[yr.missingIdx?yr.missingIdx:yr.trackDataIdx].trackState.visWidth=yr.genomicFetchCoord[(xe=q.current)==null?void 0:xe.genome.getName()].primaryVisData.visWidth,Lh(yr.missingIdx)){const ue={};for(const de of wr.current.tracks)de.type==="genomealign"&&(ue[de.id]=!1);if(yr.fetchAfterGenAlignTracks.length>0){for(const de of yr.fetchAfterGenAlignTracks)de.genomicFetchCoord=yr.genomicFetchCoord;R.current.key!==yr.trackDataIdx&&(R.current.key=yr.trackDataIdx,R.current.done={},R.current.groups={}),(ie||Ce===Se.current)&&(nc({curDataIdx:yr.trackDataIdx,isInitial:void 0,trackToDrawId:ue,missingIdx:yr.missingIdx,trackDataIdx:yr.trackDataIdx}),K1(yr.fetchAfterGenAlignTracks))}else nc({curDataIdx:yr.trackDataIdx,isInitial:0,trackToDrawId:ue,missingIdx:yr.missingIdx})}wh()}catch{R.current.key!==yr.trackDataIdx&&(R.current.key=yr.trackDataIdx,R.current.done={},R.current.groups={});const de={};for(const oe in wr.current.caches)wr.current.caches[oe].trackType==="genomealign"&&wr.current.caches[oe].error&&(de[oe]=!1);yr.fetchAfterGenAlignTracks.length>0&&(yr.genomicFetchCoord=null,K1(yr.fetchAfterGenAlignTracks)),nc({curDataIdx:yr.trackDataIdx,trackToDrawId:de})}}).catch(ne=>{console.error("Error in createGenomeAlignOnMessage:",ne),R.current.key!==yr.trackDataIdx&&(R.current.key=yr.trackDataIdx,R.current.done={},R.current.groups={});const xe={};for(const ue in wr.current.caches)wr.current.caches[ue].trackType==="genomealign"&&wr.current.caches[ue].error&&(xe[ue]=!1);yr.fetchAfterGenAlignTracks.length>0&&(yr.genomicFetchCoord=null,K1(yr.fetchAfterGenAlignTracks)),nc({curDataIdx:yr.trackDataIdx,trackToDrawId:xe})})};function n1(vr){var ne;if(!q.current)return;const kr={};let yr=!1;const ie=vr,Ce=[vr-1,vr,vr+1];let De=!1;for(const[xe,ue]of Object.entries(wr.current.caches)){let de=!0;for(const oe of Ce)if(oe in ue||(ue.useExpandedLoci||!ue.usePrimaryNav)&&oe!==ie||(wr.current.caches[xe][oe]={}),oe in ue){if((ue.useExpandedLoci||!ue.usePrimaryNav)&&oe!==ie)continue;const ae=ue.trackType==="genomealign",ye=!("dataCache"in ue[oe])||(ae||!ue.usePrimaryNav)&&!j.current;ie===oe&&ae&&ye?(De=!0,de=!1,yr=!0):ye&&(de=!1,yr=!0)}de&&(kr[xe]=!1)}if(yr){const xe=[];for(const ue of Ce){let de=[],oe=ue in Ne.current.trackStates?(ne=Ne.current.trackStates[ue])==null?void 0:ne.trackState:"";for(const ae in wr.current.caches){const ye=wr.current.caches[ae];if(!((ye.useExpandedLoci||!ye.usePrimaryNav)&&ue!==ie||ye.trackType==="genomealign")&&ue in ye&&(!("dataCache"in ye[ue])||!ye.usePrimaryNav&&!j.current)){let We=wr.current.tracks.find(He=>He.id===Number(ae)||He.id===ae);if(We){wr.current.caches[ae][ue].dataCache=null;const He=Zr.cloneDeep(We);if(He.error=ye.error,He.shouldPlaceRegion=ye.firstLoad&&ye.usePrimaryNav&&!ye.useExpandedLoci,He.shouldPlaceRegion&&ue!==ie)continue;de.push(He)}}}if(de.length>0){const ae=q.current.genome.getName();xe.push({primaryGenName:ae,trackModelArr:de,visData:oe.visData?oe.visData:oe.genomicFetchCoord?oe.genomicFetchCoord[`${ae}`].primaryVisData:"",genomicLoci:oe.regionLoci,visRegion:oe.visRegion?oe.visRegion:oe.genomicFetchCoord?oe.genomicFetchCoord[`${ae}`].primaryVisData.visRegion:"",regionExpandLoci:oe.regionExpandLoci,useFineModeNav:j.current,windowWidth:ir.current,bpRegionSize:X.current,trackDataIdx:ie,missingIdx:ue,genomicFetchCoord:oe==null?void 0:oe.genomicFetchCoord})}}for(const ue in wr.current.caches)wr.current.caches[ue].firstLoad=!1;if(s0.current&&De){const ue=wr.current.tracks.filter((ye,We)=>ye.type==="genomealign"),de=Ne.current.trackStates[ie].trackState,ae=q.current.navContext.getFeaturesInInterval(V.current,V.current+X.current).map((ye,We)=>ye.getLocus());Rt({trackToFetch:ue,visData:de.visData,genomicLoci:de.regionLoci,viewWindowGenomicLoci:ae,primaryGenName:q.current.genome.getName(),trackModelArr:ue,regionExpandLoci:de.regionExpandLoci,useFineModeNav:j.current,windowWidth:ir.current,bpRegionSize:X.current,fetchAfterGenAlignTracks:xe,trackDataIdx:ie,missingIdx:ie,fetchNewRegion:!0})}else K1(xe)}Object.keys(kr).length>0&&(!De||s0.current&&!j.current)&&!O.current&&Qr.current!==R.current.key&&(R.current.key=Qr.current,R.current.done={},R.current.groups={},nc({curDataIdx:Qr.current,trackToDrawId:{...kr}}))}function c1(){const vr=performance.memory;return vr?vr.usedJSHeapSize/(1024*1024)>2e3:!1}function nc(vr){var kr,yr,ie,Ce;for(const De in wr.current.caches){const ne=wr.current.caches[De],xe=Object.keys(ne).filter(oe=>Lh(oe)).map(Number).sort((oe,ae)=>oe-ae);let ue,de;ne.trackType in $X||!ne.usePrimaryNav?(ue=Qr.current-(c1()?1:2),de=Qr.current+(c1()?1:2)):(ue=Qr.current-(c1()?2:3),de=Qr.current+(c1()?2:3));for(const oe of xe)(oe<ue||oe>de)&&wr.current.caches[De][oe]&&(wr.current.caches[De][oe]={})}if(vr&&Object.keys(vr.trackToDrawId).length>0){let De;const ne=(kr=q.current)==null?void 0:kr.genome.getName();if(j.current&&Ne.current.trackStates[vr.curDataIdx].trackState.genomicFetchCoord){const ue={...Ne.current.trackStates[vr.curDataIdx].trackState}.genomicFetchCoord[ne].primaryVisData,de=ue.viewWindow,oe=Ne.current.viewWindow;let ae;oe?(ae=oe.start,oe.end):ae=0;let ye;const We=Wo(ue.viewWindowRegion);ye=Ws(Wo(We),Se.current%ir.current-(x0.current==="left"?ir.current:0)),a(ye.start,ye.end);const He=ae-ir.current+de.start,n0=He+ir.current;De=new Re(He,n0)}else E&&X.current===q.current.navContext._totalBases?De=new Re(0,ir.current):De=Ne.current.viewWindow;for(const xe in vr.trackToDrawId){let ue,de;if(wr.current.globalConfig&&xe in wr.current.globalConfig?ue=wr.current.globalConfig[xe].configOptions:(de=Gt(xe),de&&hn[`${wr.current.caches[xe].trackType}`]&&(ue={...hn[`${wr.current.caches[xe].trackType}`].defaultOptions,...de.options})),ue&&ue.group&&wr.current.caches[xe].trackType in jX){const oe=ue.group;R.current.groups[`${oe}`]||(R.current.groups[`${oe}`]={}),R.current.groups[`${oe}`][`${xe}`]=vr.trackToDrawId[`${xe}`]}else $i(De,vr.curDataIdx,{[xe]:!1}),R.current.done[`${xe}`]=vr.trackToDrawId[`${xe}`]}for(const xe in R.current.groups){const ue=Object.keys(R.current.groups[`${xe}`]),de=new Set(wr.current.tracks.filter(ae=>ae.options&&String(ae.options.group)===xe).map(ae=>ae.id));let oe=!0;for(let ae of ue){if(!de.has(ae)){oe=!1;break}if((Ce=(ie=(yr=R.current)==null?void 0:yr.groups)==null?void 0:ie.done)!=null&&Ce[ae]&&R.current.groups.done[ae]===!0){oe=!1;break}}oe&&($i(De,vr.curDataIdx,{...R.current.groups[`${xe}`]}),R.current.done={...R.current.done,...R.current.groups[`${xe}`]})}P.startTransition(()=>Xn({trackToDrawId:{...R.current.done},viewWindow:X.current===q.current.navContext._totalBases?{start:0,end:ir.current}:De,completedFetchedRegion:R}))}}async function qs(vr){var yr,ie,Ce,De;const kr=vr.result;if(vr.fileInfos&&(wr.current.caches[`${vr.id}`].fileInfos=vr.fileInfos),Lh(vr.missingIdx)&&wr.current.caches[`${vr.id}`][vr.missingIdx]){const ne=vr.trackDataIdx?vr.trackDataIdx:Qr.current,xe=[ne+1,ne,ne-1];let ue;try{let de=[];for(let oe of xe)if((De=(Ce=(ie=(yr=Ne.current)==null?void 0:yr.trackStates)==null?void 0:ie[oe])==null?void 0:Ce.trackState)!=null&&De.regionLoci)de.push(Ne.current.trackStates[oe].trackState.regionLoci);else{de=[];break}ue=kf(kr,vr.trackType,vr.trackModel.shouldPlaceRegion,de)}catch(de){ue=[],wr.current.caches[`${vr.id}`].error="data format error",console.error("formatDataByType failed for track",vr.id,de)}if(vr!=null&&vr.errorType)wr.current.caches[`${vr.id}`].error=vr==null?void 0:vr.errorType;else if(vr.trackModel.shouldPlaceRegion)for(let de=0;de<3;de++)wr.current.caches[`${vr.id}`][xe[de]].dataCache=ue[de];else wr.current.caches[`${vr.id}`][vr.missingIdx].dataCache=ue}}function Eh(vr,kr,yr="isJump",ie=!1){const Ce=kr-vr;if(Ce<yY){const De=.5*(yY-Ce);vr-=De,kr+=De}if(String(yr)in vS||yr===P0.Zoom||yr===P0.PanLeft||yr===P0.PanRight||yr==="isJump")wr.current.viewRegion._startBase=vr,wr.current.viewRegion._endBase=kr,$o.current(vr,kr,ie);else if(yr===P0.Highlight){let De={start:vr,end:kr,display:!0,color:"rgba(0, 123, 255, 0.25)",tag:""};const ne=[...i,De];l(ne)}}function Xt(vr,kr,yr){const ie=Zr.sortedIndexBy(kr,{contextBase:vr},"contextBase"),Ce=yr[ie]||0;return vr+Ce}function p1(vr){var Ce,De,ne,xe,ue,de,oe;let kr=[];const yr=(oe=(de=(ue=(xe=(ne=Ne.current.trackStates)==null?void 0:ne[(De=(Ce=wn==null?void 0:wn.completedFetchedRegion)==null?void 0:Ce.current)==null?void 0:De.key])==null?void 0:xe.trackState)==null?void 0:ue.genomicFetchCoord)==null?void 0:de[h.genome.getName()])==null?void 0:oe.navContextBuilder,ie=new th(Wt,ir.current);for(const ae of vr){let ye,We;yr?(We=Xt(ae.start,yr._gaps,yr._cumulativeGapBases),ye=Xt(ae.end,yr._gaps,yr._cumulativeGapBases)):(We=ae.start,ye=ae.end);const He=ie.baseSpanToXSpan(new Re(We,ye)),n0=He.start+Math.floor(-Se.current/ir.current)*ir.current,Ge=He.end+Math.floor(-Se.current/ir.current)*ir.current;let S={xPos:n0,width:Ge-n0,side:"right",start:ae.start,end:ae.end,color:ae.color,display:ae.display,tag:ae.tag};kr.push(S)}return kr}function qh(vr){var yr;const kr={};if(kr.isSelected=!1,vr===P0.PanLeft)Eh(Math.round(V.current-X.current),Math.round(V.current),vr);else if(vr===P0.PanRight)Eh(Math.round(V.current+X.current),Math.round(V.current+X.current*2),vr);else if(String(vr)in vS){let Ce=new f0((yr=q.current)==null?void 0:yr.navContext,V.current,V.current+X.current).zoom(vS[`${vr}`].factor);Eh(Ce._startBase,Ce._endBase,vr)}else m.tool===P0.Drag?kr.isSelected=!1:m.tool&&m.tool!==P0.highlightMenu&&m.tool!==P0.ReorderMany&&m.tool!==P0.History&&(kr.isSelected=!0);return kr.title=vr,a0.current=kr.isSelected,kr}function $h(vr){var De;wr.current.caches[`${vr.id}`]||(wr.current.caches[`${vr.id}`]={}),vr.type==="genomealign"&&(fe.current<10&&(j.current=!0),s0.current=!0),vr.type in{matplot:"",dynamic:"",dynamicbed:"",dynamiclongrange:"",dynamichic:""}&&((De=vr.tracks)==null||De.map((ne,xe)=>{ne.id=`${vr.id}subtrack${xe}`})),wr.current.caches[`${vr.id}`].queryGenome="querygenome"in vr&&vr.querygenome?vr.querygenome:"genome"in vr.metadata&&vr.metadata.genome?vr.metadata.genome:q.current.genome.getName();const kr=wr.current.caches[`${vr.id}`].queryGenome;wr.current.caches[`${vr.id}`].usePrimaryNav=!(kr&&kr!==q.current.genome.getName()),wr.current.caches[`${vr.id}`].useExpandedLoci=vr.type in $X,wr.current.caches[`${vr.id}`].firstLoad=!0,wr.current.caches[`${vr.id}`].trackType=vr.type,Gt(vr.id)?wr.current.tracks=wr.current.tracks.map(ne=>String(ne.id)===String(vr.id)?vr:ne):wr.current.tracks.push(vr),wr.current.caches[`${vr.id}`].error=null;const ie=vr;wr.current.globalConfig||(wr.current.globalConfig={});let Ce={};Q_.has(ie.type)&&(Ce={trackManagerRef:Y.current}),wr.current.globalConfig[`${ie.id}`]={configOptions:{...hn[ie.type]?hn[`${ie.type}`].defaultOptions:{},...ie.options||{},...Ce,usePrimaryNav:wr.current.caches[`${vr.id}`].usePrimaryNav},trackModel:ie,id:ie.id}}function Gt(vr){return wr.current.tracks.find(kr=>String(kr.id)===String(vr))||null}const Vt=()=>{O.current=!0,R.current={key:-0,done:{},groups:{}},j.current=!1,Ur.current="",nr.current=0,Q.current=0,X.current=0,J.current=0,Hi.current=[],V.current=0,er.current=0,_r.current=0,Br.current={},Er.current={x:0,y:0},wr.current={bundleId:"",customTracksPool:[],darkTheme:!1,genomeName:q.current?q.current.genome.getName():"",highlights:[],isShowingNavigator:!0,layout:{global:{},layout:{},borders:[]},metadataTerms:[],regionSetView:null,regionSets:[],viewRegion:new f0(q.current.navContext,q.current.defaultRegion.start,q.current.defaultRegion.end),trackLegendWidth:c,tracks:s&&s.length>=0?s.filter(vr=>vr.type!=="g3d"):q.current.defaultTracks},Pe.current={},ge.current=0,fe.current=0,Ie.current=0,Ue.current=0,Se.current=0,x0.current="right",mr.current=!1,$.current=[ir.current],Z.current=[],Ne.current={rightIdx:0,leftIdx:1,viewWindow:new Re(ir.current,ir.current*2),trackStates:{}},wr.current.caches={},Qr.current=-0,Cc(null)};function yh(){nr.current=q.current.defaultRegion.start,Q.current=q.current.defaultRegion.end,X.current=Q.current-nr.current,fe.current=X.current/ir.current,J.current=ir.current/X.current,V.current=nr.current,er.current=Q.current,_r.current=nr.current;const vr=[];for(let kr=0;kr<wr.current.tracks.length;kr++){const yr=P.createRef();wr.current.tracks[kr].legendWidth=c,$h(wr.current.tracks[kr]),vr.push({trackIdx:kr,id:wr.current.tracks[kr].id,component:LX,legendRef:yr,trackModel:wr.current.tracks[kr],hasAllRegionData:!1})}Ls(wr.current.tracks),Oi(1,"right",new Re(ir.current,ir.current*2)),n1(0),Cn(vr)}function jo(vr){if(jr.current&&(Ar.current[`${vr}`]="",Object.keys(Ar.current).length===p0.length)){Ar.current={},jr.current=!1,O.current=!1,$c(yr=>m.tool&&(m.tool===P0.Reorder||m.tool===P0.Highlight||m.tool===P0.Zoom)?qh(m.tool):{isSelected:!1,title:P0.Drag});const kr=[];s.map(yr=>{yr.isSelected&&kr.push(yr.id)});for(const yr in Br.current)if(!(yr in kr)&&p0&&p0)for(const ie of p0)ie.id===yr&&delete Br.current[yr];for(const yr of kr)if(!(yr in Br.current))for(const ie of p0)ie.id===yr&&(Br.current[yr]="")}}function Kt(){var ie,Ce,De,ne,xe,ue,de;let vr=[];const kr=(de=(ue=(xe=(ne=(De=Ne.current.trackStates)==null?void 0:De[(Ce=(ie=wn==null?void 0:wn.completedFetchedRegion)==null?void 0:ie.current)==null?void 0:Ce.key])==null?void 0:ne.trackState)==null?void 0:xe.genomicFetchCoord)==null?void 0:ue[h.genome.getName()])==null?void 0:de.navContextBuilder,yr=new th(Wt,ir.current);for(const oe of i){let ae,ye;kr?(ye=Xt(oe.start,kr._gaps,kr._cumulativeGapBases),ae=Xt(oe.end,kr._gaps,kr._cumulativeGapBases)):(ye=oe.start,ae=oe.end);const We=yr.baseSpanToXSpan(new Re(ye,ae)),He=We.start,n0=We.end;let Ge={xPos:He,width:n0-He,side:"right",start:oe.start,end:oe.end,color:oe.color,display:oe.display,tag:oe.tag};vr.push(Ge)}return vr}function $s(vr){var kr,yr,ie,Ce,De,ne,xe,ue,de,oe;if(Ir.current[`${vr.trackId}`]=vr,Object.keys(Ir.current).length===p0.length){const ye=wr.current.tracks.filter(N=>N.type!=="g3d").filter(N=>{if(N.type==="dynamicbed"||N.type==="dynamic"||N.type==="dynamichic")return!1;const F=Ir&&Ir.current&&Ir.current[`${N.id}`];if(F&&F.isError){try{delete Ir.current[`${N.id}`]}catch{}return!1}return!0}).map(N=>aQr(N)),We=Ne.current.viewWindow;let He=Zr.cloneDeep((ie=(yr=(kr=Ne.current)==null?void 0:kr.trackStates)==null?void 0:yr[Qr.current])==null?void 0:ie.trackState);const n0=We.start-((Ce=He==null?void 0:He.visData)==null?void 0:Ce.viewWindow.start),Ge={start:((xe=(ne=(De=He==null?void 0:He.genomicFetchCoord[He.primaryGenName])==null?void 0:De.primaryVisData)==null?void 0:ne.viewWindow)==null?void 0:xe.start)+n0,end:((oe=(de=(ue=He==null?void 0:He.genomicFetchCoord[He.primaryGenName])==null?void 0:ue.primaryVisData)==null?void 0:de.viewWindow)==null?void 0:oe.end)+n0},S=Kt();f({tracks:ye,trackData:Ir.current,highlights:S,viewWindow:Ge,windowWidth:ir.current,legendWidth:c,xOffset:n0}),Ir.current={}}}function Ls(vr){Lc(kr=>{const yr=vr.map(ne=>Object.keys(ne.metadata)),Ce=Zr.union(...yr).filter(ne=>!kr.terms.includes(ne));if(Ce.length===0)return kr;const De=new Set([...kr.suggestedMetaSets,...Ce]);return{...kr,suggestedMetaSets:De}})}function Jo(vr){Lc(kr=>{const yr=new Set([...kr.suggestedMetaSets].filter(Ce=>!vr.includes(Ce))),ie=Array.from(new Set([...kr.terms,...vr]));return{...kr,terms:ie,suggestedMetaSets:yr}})}function qi(vr){Lc(kr=>{const yr=kr.terms.filter(Ce=>!vr.includes(Ce)),ie=new Set(kr.suggestedMetaSets);return vr.forEach(Ce=>ie.add(Ce)),{...kr,terms:yr,suggestedMetaSets:ie}})}async function n3(vr,kr){await Ri(),await Uh();const yr=kr,ie={},Ce=[];for(let De in wr.current.tracks){const ne=wr.current.tracks[De];if(!ne.metadata)continue;const xe=Array.isArray(ne.metadata[`${vr}`])?ne.metadata[`${vr}`][ne.metadata[`${vr}`].length-1]:ne.metadata[`${vr}`];ne.metadata[`${vr}`]&&xe===yr?(ie[`${ne.id}`]="",Ce.push(new Tr({...ne,isSelected:!0}))):Ce.push(new Tr({...ne,isSelected:!1}))}_(Ce),Br.current=ie}P.useEffect(()=>{if(gc.terms.length===0)return;const vr=wr.current.tracks;if(!vr||vr.length===0)return;const kr={};for(const yr of gc.terms){const ie=new Set;vr.forEach(Ce=>{var ne;const De=(ne=Ce.metadata)==null?void 0:ne[yr];De!=null&&De!==""&&(Array.isArray(De)?De.forEach(xe=>ie.add(String(xe))):ie.add(String(De)))}),kr[yr]=Array.from(ie)}Lc(yr=>({...yr,termValues:kr}))},[gc.terms]),P.useEffect(()=>{const vr=Y.current,kr=()=>{me.current=null};return vr&&(vr.addEventListener("mouseenter",J1),vr.addEventListener("mouseleave",Ot),window.addEventListener("scroll",kr,!0)),h&&(q.current=Zr.cloneDeep(h),gr.current=ir.current,q.current.defaultRegion=new Re(t._startBase,t._endBase),q.current.navContext=t._navContext,wr.current.genomeName=h.genome.getName(),wr.current.tracks=s&&s.length>=0?s.filter(yr=>yr.type!=="g3d"):h.defaultTracks.filter(yr=>yr.type!=="g3d"),yh(),jr.current=!0,H.current=()=>{Object.keys(Br.current).length>0&&(Ri(),_(Zr.cloneDeep(wr.current.tracks)),Uh())}),()=>{Vt(),x.current&&x.current.worker.forEach(yr=>{yr.hasOnMessage=!1}),k.current&&(k.current.hasOnMessage=!1),vr&&(vr.removeEventListener("mouseenter",J1),vr.removeEventListener("mouseleave",Ot),window.removeEventListener("scroll",kr,!0))}},[]),P.useEffect(()=>(r9(Ie.current),Ie.current=rd(()=>{Me.current&&(Me.current.style.transform=`translate3d(${Se.current}px, 0, 0)`,Me.current.querySelectorAll(".Track-border-container").forEach(vr=>{vr.style.transform=`translate3d(${-Se.current}px, 0, 0)`})),p0.forEach(vr=>{vr.legendRef.current&&(vr.legendRef.current.style.transform=`translate3d(${-Se.current}px, 0, 0)`)})}),document.addEventListener("pointermove",qt),document.addEventListener("pointerup",B1),document.addEventListener("mousemove",qt),document.addEventListener("mouseup",B1),()=>{document.removeEventListener("pointermove",qt),document.removeEventListener("pointerup",B1)}),[p0,ir.current]),P.useEffect(()=>{if(!O.current){const vr=m.tool;m.tool==="Drag"?Dr.current=!0:lr.current==="Drag"&&vr===null&&(Dr.current=!1),vr!==null?(lr.current=vr,$c(qh(vr))):(Dr.current=!1,$c({isSelected:!1,title:null}))}},[m.tool]),P.useEffect(()=>{!O.current&&m.actionTool&&qh(m.actionTool)},[m.actionCount]);function S1(){for(const vr in wr.current.caches){const kr=wr.current.caches[vr];for(const yr in kr)Lh(yr)&&(wr.current.caches[vr][yr].xvalues&&delete wr.current.caches[vr][yr].xvalues,wr.current.caches[vr][yr].placeFeature&&delete wr.current.caches[vr][yr].placeFeature,delete wr.current.caches[vr][yr].dataCache)}fe.current<10?j.current=!0:j.current=!1}function Zo(){var yr,ie;if(!q.current)return;const vr=Qr.current,kr=[vr+1,vr,vr-1];for(let Ce of kr)if(!((ie=(yr=Ne.current)==null?void 0:yr.trackStates)!=null&&ie[Ce]))return;if(E){const Ce=Zr.cloneDeep(q.current);t?(Ce.defaultRegion=new Re(t._startBase,t._endBase),Ce.navContext=t._navContext):(Ce.defaultRegion=new Re(o._startBase,o._endBase),Ce.navContext=o._navContext),q.current=Ce,jr.current=!0,Vt(),yh()}else{const Ce={};R.current.key=Qr.current,R.current.done={},R.current.groups={};const De=gr.current,ne=ir.current;gr.current=ir.current;for(let de in Ne.current.trackStates){const oe=Zr.cloneDeep(Ne.current.trackStates[de].trackState);if(!oe.visData)continue;const ye=Ne.current.trackStates[de].trackState.xDist/De*ne,We=Ne.current.trackStates[de].trackState.visData.viewWindowRegion,He=Ne.current.trackStates[de].trackState.visData.visRegion,n0=ir.current/We.getWidth(),Ge=He.getWidth()*n0,S=We.getContextCoordinates(),N=He.getContextCoordinates(),F=S.start-N.start,G=N.end-S.end,hr=F*n0,tr=G*n0,ar={visWidth:E&&X.current===q.current.navContext._totalBases?Ge-tr:Ge,visRegion:He,viewWindow:E&&X.current===q.current.navContext._totalBases?new Re(0,Ge-tr):new Re(hr,Ge-tr),viewWindowRegion:We};oe.xDist=ye,oe.visData&&(oe.visData=ar),"genomicFetchCoord"in Ne.current.trackStates[de].trackState&&(oe.genomicFetchCoord={},oe.genomicFetchCoord[`${oe.primaryGenName}`]={},oe.genomicFetchCoord[`${oe.primaryGenName}`].primaryVisData=Zr.cloneDeep(ar)),Ne.current.trackStates[de].trackState=oe}fe.current=X.current/ir.current,J.current=ir.current/X.current,Se.current=Se.current*(ne/De),(nr.current-q.current.defaultRegion.start)*J.current;for(let de=0;de<$.current.length;de++)$.current[de]=ir.current;for(let de=0;de<Z.current.length;de++)Z.current[de]=ir.current;const xe=x0.current==="right"?new Re(-(Se.current%ir.current+-ir.current),-(Se.current%ir.current+-ir.current)+ir.current):new Re(ir.current*3-(Se.current%ir.current+ir.current),ir.current*3-Se.current%ir.current);if(Ne.current.viewWindow=xe,s0.current){fe.current<10?j.current=!0:j.current=!1,S1(),n1(Qr.current);const de=[...p0];Cn(de)}else{for(const oe in wr.current.caches){const ae=wr.current.caches[oe];Ce[oe]=!1;for(const ye in ae)Lh(ye)&&("xvalues"in wr.current.caches[oe][ye]&&delete wr.current.caches[oe][ye].xvalues,"placeFeature"in wr.current.caches[oe][ye]&&delete wr.current.caches[oe][ye].placeFeature)}const de=[...p0];Cn(de),nc({curDataIdx:Qr.current,trackToDrawId:Ce})}let ue=p1(i);Vn([...ue]),me.current=null}}function $i(vr,kr,yr=void 0){var ie,Ce,De;if(vr&&kr!==void 0&&kr!==null){const ne=[],xe=yr||Object.entries(wr.current.caches).reduce((oe,[ae,ye])=>(ye&&ye.usePrimaryNav&&(oe[ae]=!1),oe),{});let ue;for(let oe in xe){const ae=wr.current.caches[oe],ye=Gt(oe);let We;if(ae.error||!hn[`${ae.trackType}`])continue;if(ae.trackType in{hic:"",longrange:"",biginteraction:""}){xe[oe]=!1;continue}if(wr.current.globalConfig&&oe in wr.current.globalConfig?We=wr.current.globalConfig[oe].configOptions:ye&&(We={...hn[`${ae.trackType}`].defaultOptions,...ye.options}),!We)continue;let He=[],n0=!0,Ge=kr+1;if(We!=null&&We.group&&!(ae!=null&&ae.usePrimaryNav))(ie=ae[kr])!=null&&ie.dataCache?He.push(ae[kr]):n0=!1;else{for(let S=0;S<3;S++){if((Ce=ae[Ge])!=null&&Ce.dataCache)He.push(ae[Ge]);else{n0=!1;break}Ge--}ae.trackType in{matplot:"",dynamic:"",dynamicbed:""}&&((De=ae[1])!=null&&De.xvalues?He=[]:He=qX(He))}if(n0){const S={...Ne.current.trackStates[kr].trackState};let N;ae.trackType!=="genomealign"&&(ue=S.genomicFetchCoord[S.primaryGenName].primaryVisData,N=ae.usePrimaryNav?ue.visRegion:S.genomicFetchCoord[wr.current.caches[oe].queryGenome].queryRegion,typeof N=="object"&&(N=Wo(N)),ne.push({id:oe,data:He,visRegion:N,visWidth:ue.visWidth?ue.visWidth:ir.current*3,configOptions:We,usePrimaryNav:ae.usePrimaryNav,trackModel:ye})),xe[oe]=!1}}const de=lQr.getGroupScale(ne,ue&&ue.visWidth?ue.visWidth:ir.current*3,vr,kr,wr);return Ne.current.trackStates[kr].trackState.groupScale=Ne.current.trackStates[kr].trackState.groupScale?{...Ne.current.trackStates[kr].trackState.groupScale,...de}:de,xe}else return{}}P.useEffect(()=>{if(i&&O.current===!1){let vr=p1(i);Vn([...vr])}},[i]);function Lh(vr){const kr=Number(vr);return vr!==null&&!isNaN(kr)&&Number.isInteger(kr)}P.useEffect(()=>{var vr,kr,yr,ie,Ce,De,ne,xe,ue;if(!O.current&&s&&s.length===0)Cn([]);else if(!O.current&&s&&!s.every(de=>de.waitToUpdate)||O.current&&s.every(de=>de.changeConfigInitial)||O.current&&s.length>0&&wr.current.tracks.length===0){const de=s.filter(ae=>ae.type!=="g3d");for(let ae=0;ae<de.length;ae++)de[ae].changeConfigInitial=!1;const oe=[...p0.map(ae=>ae.trackModel)];if(Hm(de,oe)){Br.current={};const ae=[];let ye=!1;for(let We=0;We<de.length;We++){const He=de[We];He.id!==p0[We].trackModel.id&&(ye=!0),He.isSelected&&!(Br!=null&&Br.current[`${He.id}`])&&(Br.current[He.id]="",ye=!0);for(let n0=0;n0<p0.length;n0++){const Ge=p0[n0];Ge.trackModel.id===He.id&&((Ge.trackModel.isSelected!==He.isSelected||((Ce=(ie=Ge.trackModel)==null?void 0:ie.options)==null?void 0:Ce.legendFontColor)!==((De=He.options)==null?void 0:De.legendFontColor)||((xe=(ne=Ge.trackModel)==null?void 0:ne.options)==null?void 0:xe.label)!==((ue=He.options)==null?void 0:ue.label)||We!==n0)&&(Ge.trackModel=He,ye=!0),ae.push(Ge))}}if(ye&&(wr.current.tracks=de,Cn(ae)),de.length===0){Cn([]),wr.current.tracks=[];return}}else{const ae=de.filter(Ge=>Ge.type==="genomealign"),ye=oe.filter(Ge=>Ge.type==="genomealign");if(!Hm(ae,ye)&&(S1(),ae.length===0&&ye.length>0))for(let Ge in Ne.current.trackStates){const S=Ne.current.trackStates[Ge];for(let N in S){const F=S[N];if(F.genomicFetchCoord){F.genomicFetchCoord[`${(vr=q.current)==null?void 0:vr.genome.getName()}`].primaryVisData=Zr.cloneDeep(Ne.current.trackStates[Ge].trackState.visData);const G={[(kr=q.current)==null?void 0:kr.genome.getName()]:Zr.cloneDeep(F.genomicFetchCoord[`${(yr=q.current)==null?void 0:yr.genome.getName()}`])};F.genomicFetchCoord=G}}}const We={};for(const Ge of de)We[`${Ge.id}`]={};for(const Ge in wr.current.caches)Ge in We||delete wr.current.caches[Ge];const He=[];let n0=!1;for(let Ge=0;Ge<de.length;Ge++){const S=de[Ge];let N=!1;for(let F of p0)if(F.trackModel.id===S.id){if(S.type==="g3d")continue;F.trackModel.type==="genomealign"&&(n0=!0),He.push(F),N=!0}if(!N){S.type==="genomealign"&&(n0=!0);const F=P.createRef();S.legendWidth=c,He.push({trackIdx:Ge,id:S.id,component:LX,legendRef:F,trackModel:S}),$h(S)}}n0||(j.current=!1,s0.current=!1),wr.current.tracks=de,R.current={key:null,done:{},groups:{},selected:{}},Cn(He),n1(Qr.current),_(de)}Ls(de)}},[s]),P.useEffect(()=>{if(t&&!O.current&&q.current&&p0){const vr=Zr.cloneDeep(q.current);vr.defaultRegion=new Re(t._startBase,t._endBase),vr.navContext=t._navContext,q.current=vr,Zo(),r9(Ie.current),Ie.current=rd(()=>{Me.current&&(Me.current.style.transform=`translate3d(${Se.current}px, 0, 0)`,Me.current.querySelectorAll(".Track-border-container").forEach(kr=>{kr.style.transform=`translate3d(${-Se.current}px, 0, 0)`})),p0.forEach(kr=>{kr.legendRef.current&&(kr.legendRef.current.style.transform=`translate3d(${-Se.current}px, 0, 0)`)})}),document.addEventListener("pointermove",qt),document.addEventListener("pointerup",B1),document.addEventListener("mousemove",qt),document.addEventListener("mouseup",B1)}},[ir.current]),P.useEffect(()=>{if(!O.current){const vr=Zr.cloneDeep(h);t?(vr.defaultRegion=new Re(t._startBase,t._endBase),vr.navContext=t._navContext):(vr.defaultRegion=new Re(o._startBase,o._endBase),vr.navContext=o._navContext),q.current=vr,jr.current=!0,Vt(),yh()}},[o]),P.useEffect(()=>{if(p&&!O.current&&re.current===p.limit&&p.index!==Yr.current){const vr=Zr.cloneDeep(h);vr.defaultRegion=new Re(t._startBase,t._endBase),vr.navContext=t._navContext,q.current=vr,jr.current=!0,Vt(),yh()}re.current=p.limit,Yr.current=p.index},[p]),P.useEffect(()=>{const vr=document.getElementById("toolbar-container");vr&&(vr.style.visibility=xn?"hidden":"visible")},[xn]),P.useEffect(()=>{var vr,kr,yr;if(l0.current&&Qr.current===l0.current.dataIdx){if(s0.current&&!j.current){const De=[],ne=[],xe=[],ue=l0.current.dataIdx in Ne.current.trackStates?Ne.current.trackStates[l0.current.dataIdx].trackState:"";for(const ye in wr.current.caches){const We=wr.current.caches[ye],He=Gt(ye);We.trackType==="genomealign"?xe.push(He):We.usePrimaryNav||((vr=wr.current.caches[ye][l0.current.dataIdx])!=null&&vr.dataCache&&delete wr.current.caches[ye][l0.current.dataIdx].dataCache,De.push(He))}const oe=((kr=q.current)==null?void 0:kr.navContext.getFeaturesInInterval(l0.current.contextNavCoord.start,l0.current.contextNavCoord.end)).map((ye,We)=>ye.getLocus()),ae=(yr=q.current)==null?void 0:yr.genome.getName();ne.push({primaryGenName:ae,trackModelArr:De,visData:ue.visData?ue.visData:ue.genomicFetchCoord?ue.genomicFetchCoord[`${ae}`].primaryVisData:"",genomicLoci:oe,visRegion:ue.visRegion?ue.visRegion:ue.genomicFetchCoord?ue.genomicFetchCoord[`${ae}`].primaryVisData.visRegion:"",regionExpandLoci:ue.regionExpandLoci,useFineModeNav:j.current,windowWidth:ir.current,bpRegionSize:X.current,trackDataIdx:l0.current.dataIdx,missingIdx:l0.current.dataIdx}),Rt({trackToFetch:xe,visData:ue.visData?ue.visData:ue.genomicFetchCoord?ue.genomicFetchCoord[`${ae}`].primaryVisData:"",genomicLoci:ue.regionLoci,viewWindowGenomicLoci:oe,primaryGenName:ae,trackModelArr:xe,regionExpandLoci:ue.regionExpandLoci,useFineModeNav:j.current,windowWidth:ir.current,bpRegionSize:X.current,fetchAfterGenAlignTracks:ne,trackDataIdx:l0.current.dataIdx,missingIdx:l0.current.dataIdx,dragX:Se.current,fetchNewRegion:!1})}const ie={};let Ce={};for(let De in wr.current.caches){const ne=wr.current.globalConfig,xe=wr.current.caches[De];if(ne&&De in ne){const ue=ne[De].configOptions;ue.group&&(Ce[De]=!1),(xe.trackType==="geneannotation"||xe.trackType==="refbed"||xe.trackType in KX||ue!=null&&ue.fetchViewWindowOnly||ue!=null&&ue.bothAnchorsInView||(ue==null?void 0:ue.displayMode)==="density"||xe.trackType==="genomealign"&&!j.current||(xe.trackType==="vcf"||xe.trackType==="modbed")&&(ue==null?void 0:ue.displayMode)==="auto"&&X.current>1e5)&&(ie[De]=!1)}}Object.keys(Ce).length>0&&$i(l0.current.viewWindow,l0.current.dataIdx,Ce),Object.keys(ie).length>0&&G1({dataIdx:Qr.current,viewWindow:l0.current.viewWindow,groupScale:Ne.current.trackStates[Qr.current].trackState.groupScale,trackToDrawId:ie})}},[l0.current]);function Li(){Object.keys(Br.current).length>0&&(Ri(),_(Zr.cloneDeep(wr.current.tracks)),Cc(null))}function c3(){xn&&Cc(null)}return D.jsxs("div",{style:{backgroundColor:"var(--bg-color)",paddingLeft:"18px",marginBottom:"10px"},children:[ir.current>0&&t&&d&&D.jsx(cG,{selectedRegion:t,genomeConfig:h,windowWidth:ir.current+120,onRegionSelected:Eh}),D.jsxs(Fc,{onOutsideClick:Li,children:[C===!0?D.jsxs("div",{style:{backgroundColor:"var(--bg-color)",width:`${ir.current+120}px`,marginTop:_e/3,marginBottom:_e/3,display:"flex",flexDirection:ir.current<=600?"column":"row",alignItems:ir.current<=600?"stretch":"center",justifyContent:"end"},children:[D.jsxs("div",{style:{display:"flex",width:"100%",alignItems:"center",justifyContent:"start",flexWrap:ir.current<=1080?"wrap":"nowrap"},children:[D.jsx("div",{style:{display:"flex",position:"relative",zIndex:999},children:D.jsx("div",{style:{position:"relative"},children:u.toolbar?D.jsx(u.toolbar,{highlights:i,onNewRegionSelect:U||(()=>{}),windowWidth:ir.current,buttonPadding:_e/2}):""})}),D.jsx("span",{style:{width:"1px"},className:"self-stretch bg-gray-300 dark:bg-gray-600"}),t&&D.jsx("div",{style:{display:"flex",alignItems:"center",whiteSpace:"nowrap",flexShrink:0},children:D.jsx("div",{className:"bg tool-element",style:{display:"flex",paddingLeft:_e-2,paddingRight:6,alignItems:"center",flexShrink:0,fontStyle:"italic"},children:D.jsxs("p",{style:{backgroundColor:"var(cd --bg-color)",color:"var(--font-color)",fontSize:`${Math.max(13,ze)}px`,margin:0,whiteSpace:"nowrap"},children:[km(wr.current.viewRegion.getWidth())," ","in ",Math.round(ir.current),"px, 1px equals"," ",km(fe.current,!0)]})})}),D.jsx("div",{style:{display:"flex",alignItems:"center"},children:D.jsxs("div",{className:"MetadataHeader-button",style:{},children:[D.jsxs("button",{onClick:()=>dn(!Dn),className:"flex items-center rounded-xs px-1",style:{border:Dn?"1px solid #1e40af":"1px solid #1d4ed8",backgroundColor:"#eff6ff",color:Dn?"#1d4ed8":"#2563eb",transition:"all 0.2s"},title:"Metadata options",children:[D.jsx("span",{className:"text-xs",children:"Metadata"}),D.jsx(KKr.div,{animate:{rotate:Dn?90:0},transition:{duration:.2},children:D.jsx(SSr,{})})]}),D.jsx("div",{children:D.jsx(QKr,{terms:gc.terms,style:Dn?void 0:{display:"none"},onNewTerms:Jo,suggestedMetaSets:gc.suggestedMetaSets,onRemoveTerm:qi,tracks:wr.current.tracks,onTracksChange:vr=>{const kr=vr.map(yr=>yr instanceof Tr?yr:new Tr(yr));wr.current.tracks=kr,_(kr),Ls(kr),Cn(yr=>yr.map(ie=>({...ie,trackModel:kr.find(Ce=>Ce.id===ie.trackModel.id)??ie.trackModel})))}})})]})})]}),D.jsx("div",{style:{display:"flex",justifyContent:"flex-end",marginTop:ir.current<=1080?_e/2:0},children:D.jsx(iLr,{terms:gc.terms,onNewTerms:Jo,suggestedMetaSets:gc.suggestedMetaSets,onRemoveTerm:qi,windowWidth:ir.current,fontSize:Math.max(14,ze),padding:_e,tracks:wr.current.tracks,termValues:gc.termValues,onTermValueClick:n3})})]}):"",D.jsx("div",{style:{display:"flex",flexDirection:"row",outline:"1px solid #9AA6B2",width:`${ir.current+120}px`,overflowX:"hidden",overflowY:"hidden"},children:D.jsxs("div",{onPointerDown:Xo,ref:Y,style:{display:"flex",flexDirection:"column",position:"relative",cursor:(()=>{switch(m.tool){case P0.Reorder:return"ns-resize";case P0.Highlight:return"ew-resize";case P0.Zoom:return"zoom-in";default:return Dr.current?"pointer":""}})()},children:[D.jsx("div",{ref:Mr,className:"horizontal-line"}),D.jsx("div",{ref:Gr,className:"vertical-line"}),D.jsxs("div",{style:{display:"flex",flexDirection:"row",width:`${ir.current+120}px`},children:[p0?D.jsxs("div",{ref:Me,onClick:c3,children:[D.jsx(hB,{items:p0,onChange:W2,renderItem:vr=>D.jsx(hB.Item,{id:vr.id,onMouseDown:kr=>Mc(kr,vr.id),onContextMenu:kr=>Oh(kr,vr),selectedTool:yn,children:D.jsxs("div",{style:{width:`${ir.current+120}px`,position:"relative",paddingTop:"1px",paddingBottom:"1px"},children:[vr.trackModel.isSelected?D.jsx("div",{className:"Track-border-container Track-selected-border"}):D.jsx("div",{className:"Track-border-container"}),D.jsx(vr.component,{id:vr.trackModel.id,trackModel:vr.trackModel,legendRef:vr.legendRef,bpRegionSize:X.current,useFineModeNav:j.current,basePerPixel:fe.current,side:x0.current,windowWidth:ir.current,genomeConfig:q.current,dataIdx:Qr.current,setShow3dGene:w,isThereG3dTrack:A,dragX:Se.current,signalTrackLoadComplete:jo,sentScreenshotData:$s,newDrawData:wn,trackManagerState:wr,globalTrackState:Ne,isScreenShotOpen:y,highlightElements:Gn,viewWindowConfigChange:X1,metaSets:gc,onColorBoxClick:n3,userViewRegion:t,messageData:E0,Toolbar:u,handleRetryFetchTrack:e3,initialLoad:O,selectedRegionSet:E})]},vr.id)})}),Gn.length>0&&D.jsx("div",{style:{position:"absolute",top:0,left:c,width:ir.current,height:"100%",pointerEvents:"none",zIndex:5},children:Gn.map((vr,kr)=>vr.display?D.jsx("div",{style:{position:"absolute",backgroundColor:vr.color,top:0,height:"100%",left:0,transform:`translateX(${vr.xPos}px)`,width:vr.width,pointerEvents:"none"}},kr):null)})]}):"",D.jsx("div",{style:{display:"flex",position:"absolute",zIndex:10},children:yn&&yn.isSelected&&(yn.title===P0.Highlight||yn.title===P0.Zoom)?D.jsx(VX,{selectableRegion:Wt,dragLimits:new Re(c,ir.current+120),xOffset:-(Se.current%ir.current-(x0.current==="left"?ir.current:0)),onRegionSelected:Eh,selectedTool:yn,children:D.jsx("div",{style:{height:Y.current?(h3=Y.current)==null?void 0:h3.getBoundingClientRect().height:0,zIndex:3,width:`${ir.current+120}px`}})}):""})]})]})}),xn?D.jsx(NRr,{menuData:xn,darkTheme:M,parentBlockDimensions:(t3=Me.current)==null?void 0:t3.getBoundingClientRect()},xn.key):null]})]})}),FY=P.memo(mQr),uQr=3,vQr=()=>new Worker(new URL("./assets/createFetchWorker-9mg_hYRk.js",typeof document>"u"&&typeof location>"u"?require("url").pathToFileURL(__filename).href:typeof document>"u"?location.href:J2&&J2.tagName.toUpperCase()==="SCRIPT"&&J2.src||new URL("index.umd.js",document.baseURI).href),{type:"module"}),dQr=()=>new Worker(new URL("./assets/createFetchGenomeAlignWorker-uOhBp_Is.js",typeof document>"u"&&typeof location>"u"?require("url").pathToFileURL(__filename).href:typeof document>"u"?location.href:J2&&J2.tagName.toUpperCase()==="SCRIPT"&&J2.src||new URL("index.umd.js",document.baseURI).href),{type:"module"}),zQr=P.memo(function({tracks:e,genomeConfig:c,highlights:h,legendWidth:t,showGenomeNav:i,showToolBar:s,onNewRegion:o,onNewHighlight:a,onTracksChange:l,onNewRegionSelect:_,onSetSelected:U,currentState:m,tool:u,Toolbar:d,viewRegion:C,userViewRegion:A,setScreenshotData:f,isScreenShotOpen:E,selectedRegionSet:y,darkTheme:w,width:x,height:k}){const[p,M]=Cwr(),H=P.useRef({worker:[]}),R=P.useRef(null),O=P.useRef(Zr.cloneDeep(Q4)),[q,j]=P.useState(G9.Model.fromJson(O.current)),[lr,Dr]=P.useState(),gr=P.useRef([]),ir=P.useMemo(()=>e.some(J=>J.type==="g3d"),[e]);P.useEffect(()=>{if(e.length>0&&ir){const J=X(O.current),Y=e.filter(V=>V.type==="g3d");if(!Hm(J,Y)){O.current=Zr.cloneDeep(Q4),gr.current=Y;for(let V of Y){const er={type:"tabset",weight:100,children:[{type:"tab",name:V.getDisplayLabel(),component:"g3d",config:{trackModel:V,trackId:V.id},enableClose:!0}]};O.current=hwr(er,O.current)}j(G9.Model.fromJson(O.current))}}c.defaultTracks=e},[e]);function Ur(J){l([...J,...gr.current])}function nr(J){if(!A)return null;const Y=J.getConfig(),{x:V,y:er,width:_r,height:Br}=J.getRect(),Er=Tr.deserialize(Y.trackModel);Er.id=Y.trackId;const Hr=e.filter(Mr=>Mr.getId()===Er.id);return Er.fileObj=Hr.length?Hr[0].fileObj:null,J.setEventListener("close",()=>{l(e.filter((Mr,Gr)=>Mr.id!==Er.id))}),D.jsx(ewr,{tracks:e,g3dtrack:Er,viewRegion:A,width:_r,height:Br,x:V,y:er,genomeConfig:c,geneFor3d:lr,onSetSelected:U,onNewViewRegion:_,selectedSet:y||null},Er.id)}const Q=P.useCallback(J=>J.getComponent()==="Browser"?e?D.jsx(FY,{tracks:e,legendWidth:t,windowWidth:x||M.width-t-40,userViewRegion:A,highlights:h,genomeConfig:c,onNewRegion:o,onNewRegionSelect:_,onNewHighlight:a,onTracksChange:Ur,tool:u,Toolbar:d,viewRegion:C,showGenomeNav:i,showToolBar:s,isThereG3dTrack:!1,setScreenshotData:f,isScreenShotOpen:E,selectedRegionSet:y,setShow3dGene:Dr,infiniteScrollWorkers:H,fetchGenomeAlignWorker:R,currentState:m,darkTheme:w}):"":nr(J),[e,M.width,t,A,h,c,o,_,a,u,C,i,s,y]);function X(J){const Y=[];function V(er){er&&(er.type==="tab"&&er.config&&er.config.trackModel&&er.config.trackModel.type==="g3d"&&Y.push(er.config.trackModel),Array.isArray(er.children)&&er.children.forEach(V))}return V(J.layout),Y}if(e.some(J=>J.type==="genomealign")&&!R.current&&(R.current={fetchWorker:dQr(),hasOnMessage:!1}),e.length>0&&H.current.worker.length===0){const J=Math.min(e.length,uQr);for(let Y=0;Y<J;Y++)H.current.worker.push({fetchWorker:vQr(),hasOnMessage:!1,processingCount:0})}return P.useEffect(()=>(c.defaultTracks=e,()=>{H.current&&(H.current.worker.forEach(J=>{J.fetchWorker.terminate()}),H.current={worker:[]}),R.current&&R.current.fetchWorker.terminate(),R.current=null,O.current=Zr.cloneDeep(Q4),gr.current=[],j(G9.Model.fromJson(Zr.cloneDeep(Q4))),Dr(void 0)}),[]),D.jsx("div",{ref:p,children:!ir&&M.width>0?D.jsx("div",{style:{...k&&{height:k},overflowX:"hidden"},children:D.jsx(FY,{tracks:e,legendWidth:t,windowWidth:M.width-t-36,userViewRegion:A,highlights:h,genomeConfig:c,onNewRegion:o,onNewRegionSelect:_,onNewHighlight:a,onTracksChange:Ur,tool:u,Toolbar:d,viewRegion:C,showGenomeNav:i,showToolBar:s,isThereG3dTrack:!1,setScreenshotData:f,isScreenShotOpen:E,selectedRegionSet:y,setShow3dGene:Dr,infiniteScrollWorkers:H,fetchGenomeAlignWorker:R,currentState:m,darkTheme:w})}):M.width>0?D.jsx("div",{style:{width:M.width-20,height:M.height-45},children:D.jsx(G9.Layout,{model:q,factory:Q})}):""})});var dS={exports:{}},xY={},Ti={},gl={},e9={},Q0={},n9={};(function(n){Object.defineProperty(n,"__esModule",{value:!0}),n.regexpCode=n.getEsmExportName=n.getProperty=n.safeStringify=n.stringify=n.strConcat=n.addCodeArg=n.str=n._=n.nil=n._Code=n.Name=n.IDENTIFIER=n._CodeOrName=void 0;class e{}n._CodeOrName=e,n.IDENTIFIER=/^[a-z$_][a-z$_0-9]*$/i;class c extends e{constructor(E){if(super(),!n.IDENTIFIER.test(E))throw new Error("CodeGen: name must be a valid identifier");this.str=E}toString(){return this.str}emptyStr(){return!1}get names(){return{[this.str]:1}}}n.Name=c;class h extends e{constructor(E){super(),this._items=typeof E=="string"?[E]:E}toString(){return this.str}emptyStr(){if(this._items.length>1)return!1;const E=this._items[0];return E===""||E==='""'}get str(){var E;return(E=this._str)!==null&&E!==void 0?E:this._str=this._items.reduce((y,w)=>`${y}${w}`,"")}get names(){var E;return(E=this._names)!==null&&E!==void 0?E:this._names=this._items.reduce((y,w)=>(w instanceof c&&(y[w.str]=(y[w.str]||0)+1),y),{})}}n._Code=h,n.nil=new h("");function t(f,...E){const y=[f[0]];let w=0;for(;w<E.length;)o(y,E[w]),y.push(f[++w]);return new h(y)}n._=t;const i=new h("+");function s(f,...E){const y=[u(f[0])];let w=0;for(;w<E.length;)y.push(i),o(y,E[w]),y.push(i,u(f[++w]));return a(y),new h(y)}n.str=s;function o(f,E){E instanceof h?f.push(...E._items):E instanceof c?f.push(E):f.push(U(E))}n.addCodeArg=o;function a(f){let E=1;for(;E<f.length-1;){if(f[E]===i){const y=l(f[E-1],f[E+1]);if(y!==void 0){f.splice(E-1,3,y);continue}f[E++]="+"}E++}}function l(f,E){if(E==='""')return f;if(f==='""')return E;if(typeof f=="string")return E instanceof c||f[f.length-1]!=='"'?void 0:typeof E!="string"?`${f.slice(0,-1)}${E}"`:E[0]==='"'?f.slice(0,-1)+E.slice(1):void 0;if(typeof E=="string"&&E[0]==='"'&&!(f instanceof c))return`"${f}${E.slice(1)}`}function _(f,E){return E.emptyStr()?f:f.emptyStr()?E:s`${f}${E}`}n.strConcat=_;function U(f){return typeof f=="number"||typeof f=="boolean"||f===null?f:u(Array.isArray(f)?f.join(","):f)}function m(f){return new h(u(f))}n.stringify=m;function u(f){return JSON.stringify(f).replace(/\u2028/g,"\\u2028").replace(/\u2029/g,"\\u2029")}n.safeStringify=u;function d(f){return typeof f=="string"&&n.IDENTIFIER.test(f)?new h(`.${f}`):t`[${f}]`}n.getProperty=d;function C(f){if(typeof f=="string"&&n.IDENTIFIER.test(f))return new h(`${f}`);throw new Error(`CodeGen: invalid export name: ${f}, use explicit $id name mapping`)}n.getEsmExportName=C;function A(f){return new h(f.toString())}n.regexpCode=A})(n9);var zS={};(function(n){Object.defineProperty(n,"__esModule",{value:!0}),n.ValueScope=n.ValueScopeName=n.Scope=n.varKinds=n.UsedValueState=void 0;const e=n9;class c extends Error{constructor(l){super(`CodeGen: "code" for ${l} not defined`),this.value=l.value}}var h;(function(a){a[a.Started=0]="Started",a[a.Completed=1]="Completed"})(h||(n.UsedValueState=h={})),n.varKinds={const:new e.Name("const"),let:new e.Name("let"),var:new e.Name("var")};class t{constructor({prefixes:l,parent:_}={}){this._names={},this._prefixes=l,this._parent=_}toName(l){return l instanceof e.Name?l:this.name(l)}name(l){return new e.Name(this._newName(l))}_newName(l){const _=this._names[l]||this._nameGroup(l);return`${l}${_.index++}`}_nameGroup(l){var _,U;if(!((U=(_=this._parent)===null||_===void 0?void 0:_._prefixes)===null||U===void 0)&&U.has(l)||this._prefixes&&!this._prefixes.has(l))throw new Error(`CodeGen: prefix "${l}" is not allowed in this scope`);return this._names[l]={prefix:l,index:0}}}n.Scope=t;class i extends e.Name{constructor(l,_){super(_),this.prefix=l}setValue(l,{property:_,itemIndex:U}){this.value=l,this.scopePath=(0,e._)`.${new e.Name(_)}[${U}]`}}n.ValueScopeName=i;const s=(0,e._)`\n`;class o extends t{constructor(l){super(l),this._values={},this._scope=l.scope,this.opts={...l,_n:l.lines?s:e.nil}}get(){return this._scope}name(l){return new i(l,this._newName(l))}value(l,_){var U;if(_.ref===void 0)throw new Error("CodeGen: ref must be passed in value");const m=this.toName(l),{prefix:u}=m,d=(U=_.key)!==null&&U!==void 0?U:_.ref;let C=this._values[u];if(C){const E=C.get(d);if(E)return E}else C=this._values[u]=new Map;C.set(d,m);const A=this._scope[u]||(this._scope[u]=[]),f=A.length;return A[f]=_.ref,m.setValue(_,{property:u,itemIndex:f}),m}getValue(l,_){const U=this._values[l];if(U)return U.get(_)}scopeRefs(l,_=this._values){return this._reduceValues(_,U=>{if(U.scopePath===void 0)throw new Error(`CodeGen: name "${U}" has no value`);return(0,e._)`${l}${U.scopePath}`})}scopeCode(l=this._values,_,U){return this._reduceValues(l,m=>{if(m.value===void 0)throw new Error(`CodeGen: name "${m}" has no value`);return m.value.code},_,U)}_reduceValues(l,_,U={},m){let u=e.nil;for(const d in l){const C=l[d];if(!C)continue;const A=U[d]=U[d]||new Map;C.forEach(f=>{if(A.has(f))return;A.set(f,h.Started);let E=_(f);if(E){const y=this.opts.es5?n.varKinds.var:n.varKinds.const;u=(0,e._)`${u}${y} ${f} = ${E};${this.opts._n}`}else if(E=m==null?void 0:m(f))u=(0,e._)`${u}${E}${this.opts._n}`;else throw new c(f);A.set(f,h.Completed)})}return u}}n.ValueScope=o})(zS),function(n){Object.defineProperty(n,"__esModule",{value:!0}),n.or=n.and=n.not=n.CodeGen=n.operators=n.varKinds=n.ValueScopeName=n.ValueScope=n.Scope=n.Name=n.regexpCode=n.stringify=n.getProperty=n.nil=n.strConcat=n.str=n._=void 0;const e=n9,c=zS;var h=n9;Object.defineProperty(n,"_",{enumerable:!0,get:function(){return h._}}),Object.defineProperty(n,"str",{enumerable:!0,get:function(){return h.str}}),Object.defineProperty(n,"strConcat",{enumerable:!0,get:function(){return h.strConcat}}),Object.defineProperty(n,"nil",{enumerable:!0,get:function(){return h.nil}}),Object.defineProperty(n,"getProperty",{enumerable:!0,get:function(){return h.getProperty}}),Object.defineProperty(n,"stringify",{enumerable:!0,get:function(){return h.stringify}}),Object.defineProperty(n,"regexpCode",{enumerable:!0,get:function(){return h.regexpCode}}),Object.defineProperty(n,"Name",{enumerable:!0,get:function(){return h.Name}});var t=zS;Object.defineProperty(n,"Scope",{enumerable:!0,get:function(){return t.Scope}}),Object.defineProperty(n,"ValueScope",{enumerable:!0,get:function(){return t.ValueScope}}),Object.defineProperty(n,"ValueScopeName",{enumerable:!0,get:function(){return t.ValueScopeName}}),Object.defineProperty(n,"varKinds",{enumerable:!0,get:function(){return t.varKinds}}),n.operators={GT:new e._Code(">"),GTE:new e._Code(">="),LT:new e._Code("<"),LTE:new e._Code("<="),EQ:new e._Code("==="),NEQ:new e._Code("!=="),NOT:new e._Code("!"),OR:new e._Code("||"),AND:new e._Code("&&"),ADD:new e._Code("+")};class i{optimizeNodes(){return this}optimizeNames(V,er){return this}}class s extends i{constructor(V,er,_r){super(),this.varKind=V,this.name=er,this.rhs=_r}render({es5:V,_n:er}){const _r=V?c.varKinds.var:this.varKind,Br=this.rhs===void 0?"":` = ${this.rhs}`;return`${_r} ${this.name}${Br};`+er}optimizeNames(V,er){if(V[this.name.str])return this.rhs&&(this.rhs=lr(this.rhs,V,er)),this}get names(){return this.rhs instanceof e._CodeOrName?this.rhs.names:{}}}class o extends i{constructor(V,er,_r){super(),this.lhs=V,this.rhs=er,this.sideEffects=_r}render({_n:V}){return`${this.lhs} = ${this.rhs};`+V}optimizeNames(V,er){if(!(this.lhs instanceof e.Name&&!V[this.lhs.str]&&!this.sideEffects))return this.rhs=lr(this.rhs,V,er),this}get names(){const V=this.lhs instanceof e.Name?{}:{...this.lhs.names};return j(V,this.rhs)}}class a extends o{constructor(V,er,_r,Br){super(V,_r,Br),this.op=er}render({_n:V}){return`${this.lhs} ${this.op}= ${this.rhs};`+V}}class l extends i{constructor(V){super(),this.label=V,this.names={}}render({_n:V}){return`${this.label}:`+V}}class _ extends i{constructor(V){super(),this.label=V,this.names={}}render({_n:V}){return`break${this.label?` ${this.label}`:""};`+V}}class U extends i{constructor(V){super(),this.error=V}render({_n:V}){return`throw ${this.error};`+V}get names(){return this.error.names}}class m extends i{constructor(V){super(),this.code=V}render({_n:V}){return`${this.code};`+V}optimizeNodes(){return`${this.code}`?this:void 0}optimizeNames(V,er){return this.code=lr(this.code,V,er),this}get names(){return this.code instanceof e._CodeOrName?this.code.names:{}}}class u extends i{constructor(V=[]){super(),this.nodes=V}render(V){return this.nodes.reduce((er,_r)=>er+_r.render(V),"")}optimizeNodes(){const{nodes:V}=this;let er=V.length;for(;er--;){const _r=V[er].optimizeNodes();Array.isArray(_r)?V.splice(er,1,..._r):_r?V[er]=_r:V.splice(er,1)}return V.length>0?this:void 0}optimizeNames(V,er){const{nodes:_r}=this;let Br=_r.length;for(;Br--;){const Er=_r[Br];Er.optimizeNames(V,er)||(Dr(V,Er.names),_r.splice(Br,1))}return _r.length>0?this:void 0}get names(){return this.nodes.reduce((V,er)=>q(V,er.names),{})}}class d extends u{render(V){return"{"+V._n+super.render(V)+"}"+V._n}}class C extends u{}class A extends d{}A.kind="else";class f extends d{constructor(V,er){super(er),this.condition=V}render(V){let er=`if(${this.condition})`+super.render(V);return this.else&&(er+="else "+this.else.render(V)),er}optimizeNodes(){super.optimizeNodes();const V=this.condition;if(V===!0)return this.nodes;let er=this.else;if(er){const _r=er.optimizeNodes();er=this.else=Array.isArray(_r)?new A(_r):_r}if(er)return V===!1?er instanceof f?er:er.nodes:this.nodes.length?this:new f(gr(V),er instanceof f?[er]:er.nodes);if(!(V===!1||!this.nodes.length))return this}optimizeNames(V,er){var _r;if(this.else=(_r=this.else)===null||_r===void 0?void 0:_r.optimizeNames(V,er),!!(super.optimizeNames(V,er)||this.else))return this.condition=lr(this.condition,V,er),this}get names(){const V=super.names;return j(V,this.condition),this.else&&q(V,this.else.names),V}}f.kind="if";class E extends d{}E.kind="for";class y extends E{constructor(V){super(),this.iteration=V}render(V){return`for(${this.iteration})`+super.render(V)}optimizeNames(V,er){if(super.optimizeNames(V,er))return this.iteration=lr(this.iteration,V,er),this}get names(){return q(super.names,this.iteration.names)}}class w extends E{constructor(V,er,_r,Br){super(),this.varKind=V,this.name=er,this.from=_r,this.to=Br}render(V){const er=V.es5?c.varKinds.var:this.varKind,{name:_r,from:Br,to:Er}=this;return`for(${er} ${_r}=${Br}; ${_r}<${Er}; ${_r}++)`+super.render(V)}get names(){const V=j(super.names,this.from);return j(V,this.to)}}class x extends E{constructor(V,er,_r,Br){super(),this.loop=V,this.varKind=er,this.name=_r,this.iterable=Br}render(V){return`for(${this.varKind} ${this.name} ${this.loop} ${this.iterable})`+super.render(V)}optimizeNames(V,er){if(super.optimizeNames(V,er))return this.iterable=lr(this.iterable,V,er),this}get names(){return q(super.names,this.iterable.names)}}class k extends d{constructor(V,er,_r){super(),this.name=V,this.args=er,this.async=_r}render(V){return`${this.async?"async ":""}function ${this.name}(${this.args})`+super.render(V)}}k.kind="func";class p extends u{render(V){return"return "+super.render(V)}}p.kind="return";class M extends d{render(V){let er="try"+super.render(V);return this.catch&&(er+=this.catch.render(V)),this.finally&&(er+=this.finally.render(V)),er}optimizeNodes(){var V,er;return super.optimizeNodes(),(V=this.catch)===null||V===void 0||V.optimizeNodes(),(er=this.finally)===null||er===void 0||er.optimizeNodes(),this}optimizeNames(V,er){var _r,Br;return super.optimizeNames(V,er),(_r=this.catch)===null||_r===void 0||_r.optimizeNames(V,er),(Br=this.finally)===null||Br===void 0||Br.optimizeNames(V,er),this}get names(){const V=super.names;return this.catch&&q(V,this.catch.names),this.finally&&q(V,this.finally.names),V}}class H extends d{constructor(V){super(),this.error=V}render(V){return`catch(${this.error})`+super.render(V)}}H.kind="catch";class R extends d{render(V){return"finally"+super.render(V)}}R.kind="finally";class O{constructor(V,er={}){this._values={},this._blockStarts=[],this._constants={},this.opts={...er,_n:er.lines?`
1130
1130
  `:""},this._extScope=V,this._scope=new c.Scope({parent:V}),this._nodes=[new C]}toString(){return this._root.render(this.opts)}name(V){return this._scope.name(V)}scopeName(V){return this._extScope.name(V)}scopeValue(V,er){const _r=this._extScope.value(V,er);return(this._values[_r.prefix]||(this._values[_r.prefix]=new Set)).add(_r),_r}getScopeValue(V,er){return this._extScope.getValue(V,er)}scopeRefs(V){return this._extScope.scopeRefs(V,this._values)}scopeCode(){return this._extScope.scopeCode(this._values)}_def(V,er,_r,Br){const Er=this._scope.toName(er);return _r!==void 0&&Br&&(this._constants[Er.str]=_r),this._leafNode(new s(V,Er,_r)),Er}const(V,er,_r){return this._def(c.varKinds.const,V,er,_r)}let(V,er,_r){return this._def(c.varKinds.let,V,er,_r)}var(V,er,_r){return this._def(c.varKinds.var,V,er,_r)}assign(V,er,_r){return this._leafNode(new o(V,er,_r))}add(V,er){return this._leafNode(new a(V,n.operators.ADD,er))}code(V){return typeof V=="function"?V():V!==e.nil&&this._leafNode(new m(V)),this}object(...V){const er=["{"];for(const[_r,Br]of V)er.length>1&&er.push(","),er.push(_r),(_r!==Br||this.opts.es5)&&(er.push(":"),(0,e.addCodeArg)(er,Br));return er.push("}"),new e._Code(er)}if(V,er,_r){if(this._blockNode(new f(V)),er&&_r)this.code(er).else().code(_r).endIf();else if(er)this.code(er).endIf();else if(_r)throw new Error('CodeGen: "else" body without "then" body');return this}elseIf(V){return this._elseNode(new f(V))}else(){return this._elseNode(new A)}endIf(){return this._endBlockNode(f,A)}_for(V,er){return this._blockNode(V),er&&this.code(er).endFor(),this}for(V,er){return this._for(new y(V),er)}forRange(V,er,_r,Br,Er=this.opts.es5?c.varKinds.var:c.varKinds.let){const Hr=this._scope.toName(V);return this._for(new w(Er,Hr,er,_r),()=>Br(Hr))}forOf(V,er,_r,Br=c.varKinds.const){const Er=this._scope.toName(V);if(this.opts.es5){const Hr=er instanceof e.Name?er:this.var("_arr",er);return this.forRange("_i",0,(0,e._)`${Hr}.length`,Mr=>{this.var(Er,(0,e._)`${Hr}[${Mr}]`),_r(Er)})}return this._for(new x("of",Br,Er,er),()=>_r(Er))}forIn(V,er,_r,Br=this.opts.es5?c.varKinds.var:c.varKinds.const){if(this.opts.ownProperties)return this.forOf(V,(0,e._)`Object.keys(${er})`,_r);const Er=this._scope.toName(V);return this._for(new x("in",Br,Er,er),()=>_r(Er))}endFor(){return this._endBlockNode(E)}label(V){return this._leafNode(new l(V))}break(V){return this._leafNode(new _(V))}return(V){const er=new p;if(this._blockNode(er),this.code(V),er.nodes.length!==1)throw new Error('CodeGen: "return" should have one node');return this._endBlockNode(p)}try(V,er,_r){if(!er&&!_r)throw new Error('CodeGen: "try" without "catch" and "finally"');const Br=new M;if(this._blockNode(Br),this.code(V),er){const Er=this.name("e");this._currNode=Br.catch=new H(Er),er(Er)}return _r&&(this._currNode=Br.finally=new R,this.code(_r)),this._endBlockNode(H,R)}throw(V){return this._leafNode(new U(V))}block(V,er){return this._blockStarts.push(this._nodes.length),V&&this.code(V).endBlock(er),this}endBlock(V){const er=this._blockStarts.pop();if(er===void 0)throw new Error("CodeGen: not in self-balancing block");const _r=this._nodes.length-er;if(_r<0||V!==void 0&&_r!==V)throw new Error(`CodeGen: wrong number of nodes: ${_r} vs ${V} expected`);return this._nodes.length=er,this}func(V,er=e.nil,_r,Br){return this._blockNode(new k(V,er,_r)),Br&&this.code(Br).endFunc(),this}endFunc(){return this._endBlockNode(k)}optimize(V=1){for(;V-- >0;)this._root.optimizeNodes(),this._root.optimizeNames(this._root.names,this._constants)}_leafNode(V){return this._currNode.nodes.push(V),this}_blockNode(V){this._currNode.nodes.push(V),this._nodes.push(V)}_endBlockNode(V,er){const _r=this._currNode;if(_r instanceof V||er&&_r instanceof er)return this._nodes.pop(),this;throw new Error(`CodeGen: not in block "${er?`${V.kind}/${er.kind}`:V.kind}"`)}_elseNode(V){const er=this._currNode;if(!(er instanceof f))throw new Error('CodeGen: "else" without "if"');return this._currNode=er.else=V,this}get _root(){return this._nodes[0]}get _currNode(){const V=this._nodes;return V[V.length-1]}set _currNode(V){const er=this._nodes;er[er.length-1]=V}}n.CodeGen=O;function q(Y,V){for(const er in V)Y[er]=(Y[er]||0)+(V[er]||0);return Y}function j(Y,V){return V instanceof e._CodeOrName?q(Y,V.names):Y}function lr(Y,V,er){if(Y instanceof e.Name)return _r(Y);if(!Br(Y))return Y;return new e._Code(Y._items.reduce((Er,Hr)=>(Hr instanceof e.Name&&(Hr=_r(Hr)),Hr instanceof e._Code?Er.push(...Hr._items):Er.push(Hr),Er),[]));function _r(Er){const Hr=er[Er.str];return Hr===void 0||V[Er.str]!==1?Er:(delete V[Er.str],Hr)}function Br(Er){return Er instanceof e._Code&&Er._items.some(Hr=>Hr instanceof e.Name&&V[Hr.str]===1&&er[Hr.str]!==void 0)}}function Dr(Y,V){for(const er in V)Y[er]=(Y[er]||0)-(V[er]||0)}function gr(Y){return typeof Y=="boolean"||typeof Y=="number"||Y===null?!Y:(0,e._)`!${J(Y)}`}n.not=gr;const ir=X(n.operators.AND);function Ur(...Y){return Y.reduce(ir)}n.and=Ur;const nr=X(n.operators.OR);function Q(...Y){return Y.reduce(nr)}n.or=Q;function X(Y){return(V,er)=>V===e.nil?er:er===e.nil?V:(0,e._)`${J(V)} ${Y} ${J(er)}`}function J(Y){return Y instanceof e.Name?Y:(0,e._)`(${Y})`}}(Q0);var je={};Object.defineProperty(je,"__esModule",{value:!0}),je.checkStrictMode=je.getErrorPath=je.Type=je.useFunc=je.setEvaluated=je.evaluatedPropsToName=je.mergeEvaluated=je.eachItem=je.unescapeJsonPointer=je.escapeJsonPointer=je.escapeFragment=je.unescapeFragment=je.schemaRefOrVal=je.schemaHasRulesButRef=je.schemaHasRules=je.checkUnknownRules=je.alwaysValidSchema=je.toHash=void 0;const Mn=Q0,AQr=n9;function CQr(n){const e={};for(const c of n)e[c]=!0;return e}je.toHash=CQr;function gQr(n,e){return typeof e=="boolean"?e:Object.keys(e).length===0?!0:(NY(n,e),!TY(e,n.self.RULES.all))}je.alwaysValidSchema=gQr;function NY(n,e=n.schema){const{opts:c,self:h}=n;if(!c.strictSchema||typeof e=="boolean")return;const t=h.RULES.keywords;for(const i in e)t[i]||HY(n,`unknown keyword: "${i}"`)}je.checkUnknownRules=NY;function TY(n,e){if(typeof n=="boolean")return!n;for(const c in n)if(e[c])return!0;return!1}je.schemaHasRules=TY;function DQr(n,e){if(typeof n=="boolean")return!n;for(const c in n)if(c!=="$ref"&&e.all[c])return!0;return!1}je.schemaHasRulesButRef=DQr;function fQr({topSchemaRef:n,schemaPath:e},c,h,t){if(!t){if(typeof c=="number"||typeof c=="boolean")return c;if(typeof c=="string")return(0,Mn._)`${c}`}return(0,Mn._)`${n}${e}${(0,Mn.getProperty)(h)}`}je.schemaRefOrVal=fQr;function BQr(n){return kY(decodeURIComponent(n))}je.unescapeFragment=BQr;function pQr(n){return encodeURIComponent(AS(n))}je.escapeFragment=pQr;function AS(n){return typeof n=="number"?`${n}`:n.replace(/~/g,"~0").replace(/\//g,"~1")}je.escapeJsonPointer=AS;function kY(n){return n.replace(/~1/g,"/").replace(/~0/g,"~")}je.unescapeJsonPointer=kY;function SQr(n,e){if(Array.isArray(n))for(const c of n)e(c);else e(n)}je.eachItem=SQr;function IY({mergeNames:n,mergeToName:e,mergeValues:c,resultToName:h}){return(t,i,s,o)=>{const a=s===void 0?i:s instanceof Mn.Name?(i instanceof Mn.Name?n(t,i,s):e(t,i,s),s):i instanceof Mn.Name?(e(t,s,i),i):c(i,s);return o===Mn.Name&&!(a instanceof Mn.Name)?h(t,a):a}}je.mergeEvaluated={props:IY({mergeNames:(n,e,c)=>n.if((0,Mn._)`${c} !== true && ${e} !== undefined`,()=>{n.if((0,Mn._)`${e} === true`,()=>n.assign(c,!0),()=>n.assign(c,(0,Mn._)`${c} || {}`).code((0,Mn._)`Object.assign(${c}, ${e})`))}),mergeToName:(n,e,c)=>n.if((0,Mn._)`${c} !== true`,()=>{e===!0?n.assign(c,!0):(n.assign(c,(0,Mn._)`${c} || {}`),CS(n,c,e))}),mergeValues:(n,e)=>n===!0?!0:{...n,...e},resultToName:MY}),items:IY({mergeNames:(n,e,c)=>n.if((0,Mn._)`${c} !== true && ${e} !== undefined`,()=>n.assign(c,(0,Mn._)`${e} === true ? true : ${c} > ${e} ? ${c} : ${e}`)),mergeToName:(n,e,c)=>n.if((0,Mn._)`${c} !== true`,()=>n.assign(c,e===!0?!0:(0,Mn._)`${c} > ${e} ? ${c} : ${e}`)),mergeValues:(n,e)=>n===!0?!0:Math.max(n,e),resultToName:(n,e)=>n.var("items",e)})};function MY(n,e){if(e===!0)return n.var("props",!0);const c=n.var("props",(0,Mn._)`{}`);return e!==void 0&&CS(n,c,e),c}je.evaluatedPropsToName=MY;function CS(n,e,c){Object.keys(c).forEach(h=>n.assign((0,Mn._)`${e}${(0,Mn.getProperty)(h)}`,!0))}je.setEvaluated=CS;const PY={};function bQr(n,e){return n.scopeValue("func",{ref:e,code:PY[e.code]||(PY[e.code]=new AQr._Code(e.code))})}je.useFunc=bQr;var gS;(function(n){n[n.Num=0]="Num",n[n.Str=1]="Str"})(gS||(je.Type=gS={}));function wQr(n,e,c){if(n instanceof Mn.Name){const h=e===gS.Num;return c?h?(0,Mn._)`"[" + ${n} + "]"`:(0,Mn._)`"['" + ${n} + "']"`:h?(0,Mn._)`"/" + ${n}`:(0,Mn._)`"/" + ${n}.replace(/~/g, "~0").replace(/\\//g, "~1")`}return c?(0,Mn.getProperty)(n).toString():"/"+AS(n)}je.getErrorPath=wQr;function HY(n,e,c=n.opts.strictSchema){if(c){if(e=`strict mode: ${e}`,c===!0)throw new Error(e);n.self.logger.warn(e)}}je.checkStrictMode=HY;var ks={};Object.defineProperty(ks,"__esModule",{value:!0});const Rh=Q0,EQr={data:new Rh.Name("data"),valCxt:new Rh.Name("valCxt"),instancePath:new Rh.Name("instancePath"),parentData:new Rh.Name("parentData"),parentDataProperty:new Rh.Name("parentDataProperty"),rootData:new Rh.Name("rootData"),dynamicAnchors:new Rh.Name("dynamicAnchors"),vErrors:new Rh.Name("vErrors"),errors:new Rh.Name("errors"),this:new Rh.Name("this"),self:new Rh.Name("self"),scope:new Rh.Name("scope"),json:new Rh.Name("json"),jsonPos:new Rh.Name("jsonPos"),jsonLen:new Rh.Name("jsonLen"),jsonPart:new Rh.Name("jsonPart")};ks.default=EQr,function(n){Object.defineProperty(n,"__esModule",{value:!0}),n.extendErrors=n.resetErrorsCount=n.reportExtraError=n.reportError=n.keyword$DataError=n.keywordError=void 0;const e=Q0,c=je,h=ks;n.keywordError={message:({keyword:A})=>(0,e.str)`must pass "${A}" keyword validation`},n.keyword$DataError={message:({keyword:A,schemaType:f})=>f?(0,e.str)`"${A}" keyword must be ${f} ($data)`:(0,e.str)`"${A}" keyword is invalid ($data)`};function t(A,f=n.keywordError,E,y){const{it:w}=A,{gen:x,compositeRule:k,allErrors:p}=w,M=U(A,f,E);y??(k||p)?a(x,M):l(w,(0,e._)`[${M}]`)}n.reportError=t;function i(A,f=n.keywordError,E){const{it:y}=A,{gen:w,compositeRule:x,allErrors:k}=y,p=U(A,f,E);a(w,p),x||k||l(y,h.default.vErrors)}n.reportExtraError=i;function s(A,f){A.assign(h.default.errors,f),A.if((0,e._)`${h.default.vErrors} !== null`,()=>A.if(f,()=>A.assign((0,e._)`${h.default.vErrors}.length`,f),()=>A.assign(h.default.vErrors,null)))}n.resetErrorsCount=s;function o({gen:A,keyword:f,schemaValue:E,data:y,errsCount:w,it:x}){if(w===void 0)throw new Error("ajv implementation error");const k=A.name("err");A.forRange("i",w,h.default.errors,p=>{A.const(k,(0,e._)`${h.default.vErrors}[${p}]`),A.if((0,e._)`${k}.instancePath === undefined`,()=>A.assign((0,e._)`${k}.instancePath`,(0,e.strConcat)(h.default.instancePath,x.errorPath))),A.assign((0,e._)`${k}.schemaPath`,(0,e.str)`${x.errSchemaPath}/${f}`),x.opts.verbose&&(A.assign((0,e._)`${k}.schema`,E),A.assign((0,e._)`${k}.data`,y))})}n.extendErrors=o;function a(A,f){const E=A.const("err",f);A.if((0,e._)`${h.default.vErrors} === null`,()=>A.assign(h.default.vErrors,(0,e._)`[${E}]`),(0,e._)`${h.default.vErrors}.push(${E})`),A.code((0,e._)`${h.default.errors}++`)}function l(A,f){const{gen:E,validateName:y,schemaEnv:w}=A;w.$async?E.throw((0,e._)`new ${A.ValidationError}(${f})`):(E.assign((0,e._)`${y}.errors`,f),E.return(!1))}const _={keyword:new e.Name("keyword"),schemaPath:new e.Name("schemaPath"),params:new e.Name("params"),propertyName:new e.Name("propertyName"),message:new e.Name("message"),schema:new e.Name("schema"),parentSchema:new e.Name("parentSchema")};function U(A,f,E){const{createErrors:y}=A.it;return y===!1?(0,e._)`{}`:m(A,f,E)}function m(A,f,E={}){const{gen:y,it:w}=A,x=[u(w,E),d(A,E)];return C(A,f,x),y.object(...x)}function u({errorPath:A},{instancePath:f}){const E=f?(0,e.str)`${A}${(0,c.getErrorPath)(f,c.Type.Str)}`:A;return[h.default.instancePath,(0,e.strConcat)(h.default.instancePath,E)]}function d({keyword:A,it:{errSchemaPath:f}},{schemaPath:E,parentSchema:y}){let w=y?f:(0,e.str)`${f}/${A}`;return E&&(w=(0,e.str)`${w}${(0,c.getErrorPath)(E,c.Type.Str)}`),[_.schemaPath,w]}function C(A,{params:f,message:E},y){const{keyword:w,data:x,schemaValue:k,it:p}=A,{opts:M,propertyName:H,topSchemaRef:R,schemaPath:O}=p;y.push([_.keyword,w],[_.params,typeof f=="function"?f(A):f||(0,e._)`{}`]),M.messages&&y.push([_.message,typeof E=="function"?E(A):E]),M.verbose&&y.push([_.schema,k],[_.parentSchema,(0,e._)`${R}${O}`],[h.default.data,x]),H&&y.push([_.propertyName,H])}}(e9),Object.defineProperty(gl,"__esModule",{value:!0}),gl.boolOrEmptySchema=gl.topBoolOrEmptySchema=void 0;const yQr=e9,FQr=Q0,xQr=ks,NQr={message:"boolean schema is false"};function TQr(n){const{gen:e,schema:c,validateName:h}=n;c===!1?WY(n,!1):typeof c=="object"&&c.$async===!0?e.return(xQr.default.data):(e.assign((0,FQr._)`${h}.errors`,null),e.return(!0))}gl.topBoolOrEmptySchema=TQr;function kQr(n,e){const{gen:c,schema:h}=n;h===!1?(c.var(e,!1),WY(n)):c.var(e,!0)}gl.boolOrEmptySchema=kQr;function WY(n,e){const{gen:c,data:h}=n,t={gen:c,keyword:"false schema",data:h,schema:!1,schemaCode:!1,schemaValue:!1,params:{},it:n};(0,yQr.reportError)(t,NQr,void 0,e)}var Qc={},T2={};Object.defineProperty(T2,"__esModule",{value:!0}),T2.getRules=T2.isJSONType=void 0;const IQr=["string","number","integer","boolean","null","object","array"],MQr=new Set(IQr);function PQr(n){return typeof n=="string"&&MQr.has(n)}T2.isJSONType=PQr;function HQr(){const n={number:{type:"number",rules:[]},string:{type:"string",rules:[]},array:{type:"array",rules:[]},object:{type:"object",rules:[]}};return{types:{...n,integer:!0,boolean:!0,null:!0},rules:[{rules:[]},n.number,n.string,n.array,n.object],post:{rules:[]},all:{},keywords:{}}}T2.getRules=HQr;var Ro={};Object.defineProperty(Ro,"__esModule",{value:!0}),Ro.shouldUseRule=Ro.shouldUseGroup=Ro.schemaHasRulesForType=void 0;function WQr({schema:n,self:e},c){const h=e.RULES.types[c];return h&&h!==!0&&RY(n,h)}Ro.schemaHasRulesForType=WQr;function RY(n,e){return e.rules.some(c=>OY(n,c))}Ro.shouldUseGroup=RY;function OY(n,e){var c;return n[e.keyword]!==void 0||((c=e.definition.implements)===null||c===void 0?void 0:c.some(h=>n[h]!==void 0))}Ro.shouldUseRule=OY,Object.defineProperty(Qc,"__esModule",{value:!0}),Qc.reportTypeError=Qc.checkDataTypes=Qc.checkDataType=Qc.coerceAndCheckDataType=Qc.getJSONTypes=Qc.getSchemaTypes=Qc.DataType=void 0;const RQr=T2,OQr=Ro,qQr=e9,R0=Q0,qY=je;var Dl;(function(n){n[n.Correct=0]="Correct",n[n.Wrong=1]="Wrong"})(Dl||(Qc.DataType=Dl={}));function $Qr(n){const e=$Y(n.type);if(e.includes("null")){if(n.nullable===!1)throw new Error("type: null contradicts nullable: false")}else{if(!e.length&&n.nullable!==void 0)throw new Error('"nullable" cannot be used without "type"');n.nullable===!0&&e.push("null")}return e}Qc.getSchemaTypes=$Qr;function $Y(n){const e=Array.isArray(n)?n:n?[n]:[];if(e.every(RQr.isJSONType))return e;throw new Error("type must be JSONType or JSONType[]: "+e.join(","))}Qc.getJSONTypes=$Y;function LQr(n,e){const{gen:c,data:h,opts:t}=n,i=XQr(e,t.coerceTypes),s=e.length>0&&!(i.length===0&&e.length===1&&(0,OQr.schemaHasRulesForType)(n,e[0]));if(s){const o=fS(e,h,t.strictNumbers,Dl.Wrong);c.if(o,()=>{i.length?GQr(n,e,i):BS(n)})}return s}Qc.coerceAndCheckDataType=LQr;const LY=new Set(["string","number","integer","boolean","null"]);function XQr(n,e){return e?n.filter(c=>LY.has(c)||e==="array"&&c==="array"):[]}function GQr(n,e,c){const{gen:h,data:t,opts:i}=n,s=h.let("dataType",(0,R0._)`typeof ${t}`),o=h.let("coerced",(0,R0._)`undefined`);i.coerceTypes==="array"&&h.if((0,R0._)`${s} == 'object' && Array.isArray(${t}) && ${t}.length == 1`,()=>h.assign(t,(0,R0._)`${t}[0]`).assign(s,(0,R0._)`typeof ${t}`).if(fS(e,t,i.strictNumbers),()=>h.assign(o,t))),h.if((0,R0._)`${o} !== undefined`);for(const l of c)(LY.has(l)||l==="array"&&i.coerceTypes==="array")&&a(l);h.else(),BS(n),h.endIf(),h.if((0,R0._)`${o} !== undefined`,()=>{h.assign(t,o),VQr(n,o)});function a(l){switch(l){case"string":h.elseIf((0,R0._)`${s} == "number" || ${s} == "boolean"`).assign(o,(0,R0._)`"" + ${t}`).elseIf((0,R0._)`${t} === null`).assign(o,(0,R0._)`""`);return;case"number":h.elseIf((0,R0._)`${s} == "boolean" || ${t} === null
1131
1131
  || (${s} == "string" && ${t} && ${t} == +${t})`).assign(o,(0,R0._)`+${t}`);return;case"integer":h.elseIf((0,R0._)`${s} === "boolean" || ${t} === null
1132
1132
  || (${s} === "string" && ${t} && ${t} == +${t} && !(${t} % 1))`).assign(o,(0,R0._)`+${t}`);return;case"boolean":h.elseIf((0,R0._)`${t} === "false" || ${t} === 0 || ${t} === null`).assign(o,!1).elseIf((0,R0._)`${t} === "true" || ${t} === 1`).assign(o,!0);return;case"null":h.elseIf((0,R0._)`${t} === "" || ${t} === 0 || ${t} === false`),h.assign(o,null);return;case"array":h.elseIf((0,R0._)`${s} === "string" || ${s} === "number"
@@ -1,5 +1,5 @@
1
- import { G, b as I, E as _, M as k, U as B, B as O, T as m, c as v, d as A, R as C, w as E, e as U, f as w } from "./index-D2xCvxdB.mjs";
2
- import { F as z } from "./Filter-W7h2GrVp.mjs";
1
+ import { G, b as I, E as _, M as k, U as B, B as O, T as m, c as v, d as A, R as C, w as E, e as U, f as w } from "./index-Dst209sN.mjs";
2
+ import { F as z } from "./Filter-Dee9z37f.mjs";
3
3
  var M = `in vec2 aPosition;
4
4
  out vec2 vTextureCoord;
5
5
 
@@ -0,0 +1,2 @@
1
+ import "./index-Dst209sN.mjs";
2
+ import "./init-C3fhQHX9.mjs";
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "wuepgg3-track",
3
3
  "private": false,
4
- "version": "7.0.2",
4
+ "version": "7.0.3",
5
5
  "main": "dist/index.umd.js",
6
6
  "module": "dist/index.es.js",
7
7
  "types": "dist/index.d.ts",
@@ -1,2 +0,0 @@
1
- import "./index-D2xCvxdB.mjs";
2
- import "./init-Cy76NrRS.mjs";