jbrowse-plugin-mafviewer 1.4.2 → 1.4.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.
- package/dist/LinearMafRenderer/components/LinearMafRendering.d.ts +1 -1
- package/dist/LinearMafRenderer/components/LinearMafRendering.js.map +1 -1
- package/dist/LinearMafRenderer/makeImageData.js +8 -3
- package/dist/LinearMafRenderer/makeImageData.js.map +1 -1
- package/dist/jbrowse-plugin-mafviewer.umd.production.min.js +1 -1
- package/dist/jbrowse-plugin-mafviewer.umd.production.min.js.map +3 -3
- package/package.json +3 -3
- package/src/LinearMafRenderer/components/LinearMafRendering.tsx +2 -1
- package/src/LinearMafRenderer/makeImageData.ts +16 -13
- package/dist/BgzipTaffyAdapter/BgzipTaffyAdapter.d.ts +0 -30
- package/dist/BgzipTaffyAdapter/BgzipTaffyAdapter.js +0 -253
- package/dist/BgzipTaffyAdapter/BgzipTaffyAdapter.js.map +0 -1
- package/dist/BgzipTaffyAdapter/configSchema.d.ts +0 -44
- package/dist/BgzipTaffyAdapter/configSchema.js +0 -53
- package/dist/BgzipTaffyAdapter/configSchema.js.map +0 -1
- package/dist/BgzipTaffyAdapter/index.d.ts +0 -2
- package/dist/BgzipTaffyAdapter/index.js +0 -11
- package/dist/BgzipTaffyAdapter/index.js.map +0 -1
- package/dist/BgzipTaffyAdapter/rowInstructions.d.ts +0 -35
- package/dist/BgzipTaffyAdapter/rowInstructions.js +0 -55
- package/dist/BgzipTaffyAdapter/rowInstructions.js.map +0 -1
- package/dist/BgzipTaffyAdapter/types.d.ts +0 -13
- package/dist/BgzipTaffyAdapter/types.js +0 -2
- package/dist/BgzipTaffyAdapter/types.js.map +0 -1
- package/dist/BgzipTaffyAdapter/util.d.ts +0 -1
- package/dist/BgzipTaffyAdapter/util.js +0 -22
- package/dist/BgzipTaffyAdapter/util.js.map +0 -1
- package/dist/BgzipTaffyAdapter/virtualOffset.d.ts +0 -8
- package/dist/BgzipTaffyAdapter/virtualOffset.js +0 -23
- package/dist/BgzipTaffyAdapter/virtualOffset.js.map +0 -1
- package/dist/LinearMafRenderer/components/ReactComponent.d.ts +0 -9
- package/dist/LinearMafRenderer/components/ReactComponent.js +0 -47
- package/dist/LinearMafRenderer/components/ReactComponent.js.map +0 -1
- package/dist/out.js +0 -32303
- package/dist/out.js.map +0 -7
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import { RenderedBase } from '../rendering';
|
|
3
2
|
import { Sample } from '../../LinearMafDisplay/types';
|
|
3
|
+
import { RenderedBase } from '../rendering';
|
|
4
4
|
type SerializedRBush = any;
|
|
5
5
|
declare const LinearMafRendering: (props: {
|
|
6
6
|
width: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LinearMafRendering.js","sourceRoot":"","sources":["../../../src/LinearMafRenderer/components/LinearMafRendering.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,OAAO,CAAA;AAE9C,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AACpD,OAAO,QAAQ,MAAM,UAAU,CAAA;AAC/B,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;
|
|
1
|
+
{"version":3,"file":"LinearMafRendering.js","sourceRoot":"","sources":["../../../src/LinearMafRenderer/components/LinearMafRendering.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,OAAO,CAAA;AAE9C,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AACpD,OAAO,QAAQ,MAAM,UAAU,CAAA;AAC/B,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAOrC,MAAM,kBAAkB,GAAG,QAAQ,CAAC,UAAU,KAO7C;IACC,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAA;IAChE,MAAM,GAAG,GAAG,MAAM,CAAiB,IAAI,CAAC,CAAA;IACxC,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAA;IAEjE,SAAS,oBAAoB,CAAC,YAAoB,EAAE,YAAoB;QACtE,IAAI,OAAO,GAAG,CAAC,CAAA;QACf,IAAI,OAAO,GAAG,CAAC,CAAA;QACf,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;YAChB,MAAM,CAAC,GAAG,GAAG,CAAC,OAAO,CAAC,qBAAqB,EAAE,CAAA;YAC7C,OAAO,GAAG,YAAY,GAAG,CAAC,CAAC,IAAI,CAAA;YAC/B,OAAO,GAAG,YAAY,GAAG,CAAC,CAAC,GAAG,CAAA;QAChC,CAAC;QAED,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,GAAG,CAAC,EAAE,OAAO,GAAG,CAAC,CAAC,CAAA;QACnE,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC;YACb,MAAM,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,WAAW,CAAC,CAAA;YAClD,MAAM,CAAC,GAAG,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAE,CAAE,CAAA;YACzD,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAA;YAC7B,OAAO;gBACL,GAAG,CAAC;gBACJ,QAAQ,EAAE,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,EAAE,IAAI,SAAS;aACzC,CAAA;QACH,CAAC;aAAM,CAAC;YACN,OAAO,SAAS,CAAA;QAClB,CAAC;IACH,CAAC;IACD,OAAO,CACL,6BACE,GAAG,EAAE,GAAG,EACR,WAAW,EAAE,CAAC,CAAC,EAAE,CACf,YAAY,CAAC,cAAc,EAAE,CAC3B,oBAAoB,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,CAC3C,EAEH,YAAY,EAAE,GAAG,EAAE;YACjB,YAAY,CAAC,cAAc,EAAE,CAAC,SAAS,CAAC,CAAA;QAC1C,CAAC,EACD,UAAU,EAAE,GAAG,EAAE;YACf,YAAY,CAAC,cAAc,EAAE,CAAC,SAAS,CAAC,CAAA;QAC1C,CAAC,EACD,KAAK,EAAE;YACL,QAAQ,EAAE,SAAS;YACnB,QAAQ,EAAE,UAAU;YACpB,MAAM;SACP;QAED,oBAAC,iBAAiB,OACZ,KAAK,EACT,KAAK,EAAE;gBACL,QAAQ,EAAE,UAAU;gBACpB,IAAI,EAAE,CAAC;aACR,GACD,CACE,CACP,CAAA;AACH,CAAC,CAAC,CAAA;AAEF,eAAe,kBAAkB,CAAA"}
|
|
@@ -40,9 +40,14 @@ export function makeImageData({ ctx, renderArgs, }) {
|
|
|
40
40
|
for (const feature of features.values()) {
|
|
41
41
|
processFeatureInsertions(feature, region, bpPerPx, sampleToRowMap, renderingContext);
|
|
42
42
|
}
|
|
43
|
-
const flatbush = new Flatbush(renderingContext.spatialIndex.length);
|
|
44
|
-
|
|
45
|
-
flatbush.add(
|
|
43
|
+
const flatbush = new Flatbush(renderingContext.spatialIndex.length || 1);
|
|
44
|
+
if (renderingContext.spatialIndex.length === 0) {
|
|
45
|
+
flatbush.add(0, 0, 1, 1);
|
|
46
|
+
}
|
|
47
|
+
else {
|
|
48
|
+
for (let i = 0, l = renderingContext.spatialIndexCoords.length; i < l; i += 4) {
|
|
49
|
+
flatbush.add(renderingContext.spatialIndexCoords[i], renderingContext.spatialIndexCoords[i + 1], renderingContext.spatialIndexCoords[i + 2], renderingContext.spatialIndexCoords[i + 3]);
|
|
50
|
+
}
|
|
46
51
|
}
|
|
47
52
|
flatbush.finish();
|
|
48
53
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"makeImageData.js","sourceRoot":"","sources":["../../src/LinearMafRenderer/makeImageData.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAA;AAErD,OAAO,QAAQ,MAAM,UAAU,CAAA;AAE/B,OAAO,EACL,WAAW,EAGX,uBAAuB,EACvB,wBAAwB,GACzB,MAAM,aAAa,CAAA;AACpB,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,QAAQ,CAAA;AAa5D,MAAM,UAAU,aAAa,CAAC,EAC5B,GAAG,EACH,UAAU,GAIX;IACC,MAAM,EACJ,OAAO,EACP,OAAO,EACP,SAAS,EACT,cAAc,EACd,KAAK,EAAE,WAAW,EAClB,iBAAiB,EACjB,OAAO,EACP,aAAa,EACb,QAAQ,EACR,eAAe,GAChB,GAAG,UAAU,CAAA;IAEd,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAE,CAAA;IAC1B,MAAM,WAAW,GAAG,CAAC,MAAM,CAAC,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,OAAO,CAAA;IACzD,MAAM,CAAC,GAAG,SAAS,GAAG,aAAa,CAAA;IACnC,MAAM,KAAK,GAAG,kBAAkB,CAAC,WAAW,CAAC,CAAA;IAC7C,MAAM,YAAY,GAAG,eAAe,CAAC,KAAK,CAAC,CAAA;IAC3C,MAAM,eAAe,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAA;IACjD,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;IAChE,MAAM,KAAK,GAAG,CAAC,GAAG,OAAO,CAAA;IACzB,MAAM,GAAG,GAAG,CAAC,GAAG,CAAC,CAAA;IACjB,MAAM,MAAM,GAAG,CAAC,SAAS,GAAG,CAAC,CAAC,GAAG,CAAC,CAAA;IAElC,GAAG,CAAC,IAAI,GAAG,WAAW,CAAA;IAEtB,MAAM,gBAAgB,GAAqB;QACzC,GAAG;QACH,KAAK;QACL,WAAW;QACX,SAAS;QACT,CAAC;QACD,GAAG;QACH,MAAM;QACN,YAAY;QACZ,eAAe;QACf,cAAc;QACd,iBAAiB;QACjB,eAAe;QACf,YAAY,EAAE,EAAE;QAChB,kBAAkB,EAAE,EAAE;QACtB,aAAa,EAAE,CAAC,QAAQ,EAAE,wDAAwD;KACnF,CAAA;IAED,kEAAkE;IAClE,KAAK,MAAM,OAAO,IAAI,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC;QACxC,uBAAuB,CACrB,OAAO,EACP,MAAM,EACN,OAAO,EACP,cAAc,EACd,gBAAgB,CACjB,CAAA;IACH,CAAC;IAED,wCAAwC;IACxC,KAAK,MAAM,OAAO,IAAI,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC;QACxC,wBAAwB,CACtB,OAAO,EACP,MAAM,EACN,OAAO,EACP,cAAc,EACd,gBAAgB,CACjB,CAAA;IACH,CAAC;
|
|
1
|
+
{"version":3,"file":"makeImageData.js","sourceRoot":"","sources":["../../src/LinearMafRenderer/makeImageData.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAA;AAErD,OAAO,QAAQ,MAAM,UAAU,CAAA;AAE/B,OAAO,EACL,WAAW,EAGX,uBAAuB,EACvB,wBAAwB,GACzB,MAAM,aAAa,CAAA;AACpB,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,QAAQ,CAAA;AAa5D,MAAM,UAAU,aAAa,CAAC,EAC5B,GAAG,EACH,UAAU,GAIX;IACC,MAAM,EACJ,OAAO,EACP,OAAO,EACP,SAAS,EACT,cAAc,EACd,KAAK,EAAE,WAAW,EAClB,iBAAiB,EACjB,OAAO,EACP,aAAa,EACb,QAAQ,EACR,eAAe,GAChB,GAAG,UAAU,CAAA;IAEd,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAE,CAAA;IAC1B,MAAM,WAAW,GAAG,CAAC,MAAM,CAAC,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,OAAO,CAAA;IACzD,MAAM,CAAC,GAAG,SAAS,GAAG,aAAa,CAAA;IACnC,MAAM,KAAK,GAAG,kBAAkB,CAAC,WAAW,CAAC,CAAA;IAC7C,MAAM,YAAY,GAAG,eAAe,CAAC,KAAK,CAAC,CAAA;IAC3C,MAAM,eAAe,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAA;IACjD,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;IAChE,MAAM,KAAK,GAAG,CAAC,GAAG,OAAO,CAAA;IACzB,MAAM,GAAG,GAAG,CAAC,GAAG,CAAC,CAAA;IACjB,MAAM,MAAM,GAAG,CAAC,SAAS,GAAG,CAAC,CAAC,GAAG,CAAC,CAAA;IAElC,GAAG,CAAC,IAAI,GAAG,WAAW,CAAA;IAEtB,MAAM,gBAAgB,GAAqB;QACzC,GAAG;QACH,KAAK;QACL,WAAW;QACX,SAAS;QACT,CAAC;QACD,GAAG;QACH,MAAM;QACN,YAAY;QACZ,eAAe;QACf,cAAc;QACd,iBAAiB;QACjB,eAAe;QACf,YAAY,EAAE,EAAE;QAChB,kBAAkB,EAAE,EAAE;QACtB,aAAa,EAAE,CAAC,QAAQ,EAAE,wDAAwD;KACnF,CAAA;IAED,kEAAkE;IAClE,KAAK,MAAM,OAAO,IAAI,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC;QACxC,uBAAuB,CACrB,OAAO,EACP,MAAM,EACN,OAAO,EACP,cAAc,EACd,gBAAgB,CACjB,CAAA;IACH,CAAC;IAED,wCAAwC;IACxC,KAAK,MAAM,OAAO,IAAI,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC;QACxC,wBAAwB,CACtB,OAAO,EACP,MAAM,EACN,OAAO,EACP,cAAc,EACd,gBAAgB,CACjB,CAAA;IACH,CAAC;IACD,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAAC,gBAAgB,CAAC,YAAY,CAAC,MAAM,IAAI,CAAC,CAAC,CAAA;IACxE,IAAI,gBAAgB,CAAC,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC/C,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;IAC1B,CAAC;SAAM,CAAC;QACN,KACE,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,gBAAgB,CAAC,kBAAkB,CAAC,MAAM,EACzD,CAAC,GAAG,CAAC,EACL,CAAC,IAAI,CAAC,EACN,CAAC;YACD,QAAQ,CAAC,GAAG,CACV,gBAAgB,CAAC,kBAAkB,CAAC,CAAC,CAAE,EACvC,gBAAgB,CAAC,kBAAkB,CAAC,CAAC,GAAG,CAAC,CAAE,EAC3C,gBAAgB,CAAC,kBAAkB,CAAC,CAAC,GAAG,CAAC,CAAC,EAC1C,gBAAgB,CAAC,kBAAkB,CAAC,CAAC,GAAG,CAAC,CAAC,CAC3C,CAAA;QACH,CAAC;IACH,CAAC;IACD,QAAQ,CAAC,MAAM,EAAE,CAAA;IACjB,OAAO;QACL,QAAQ,EAAE,QAAQ,CAAC,IAAI;QACvB,KAAK,EAAE,gBAAgB,CAAC,YAAY;QACpC,OAAO;KACR,CAAA;AACH,CAAC"}
|
|
@@ -5,7 +5,7 @@ In order to be iterable, non-array objects must have a [Symbol.iterator]() metho
|
|
|
5
5
|
`+r.map(function(n,i){return i+1+") "+n.toString()}).join(`
|
|
6
6
|
`):"",this.name="UnsubscriptionError",this.errors=r}});function Ud(e,t){if(e){var r=e.indexOf(t);0<=r&&e.splice(r,1)}}var Ju=function(){function e(t){this.initialTeardown=t,this.closed=!1,this._parentage=null,this._finalizers=null}return e.prototype.unsubscribe=function(){var t,r,n,i,o;if(!this.closed){this.closed=!0;var a=this._parentage;if(a)if(this._parentage=null,Array.isArray(a))try{for(var u=Wd(a),l=u.next();!l.done;l=u.next()){var s=l.value;s.remove(this)}}catch(h){t={error:h}}finally{try{l&&!l.done&&(r=u.return)&&r.call(u)}finally{if(t)throw t.error}}else a.remove(this);var c=this.initialTeardown;if(sr(c))try{c()}catch(h){o=h instanceof Zu?h.errors:[h]}var f=this._finalizers;if(f){this._finalizers=null;try{for(var d=Wd(f),p=d.next();!p.done;p=d.next()){var m=p.value;try{Fb(m)}catch(h){o=o??[],h instanceof Zu?o=Di(Di([],Ni(o)),Ni(h.errors)):o.push(h)}}}catch(h){n={error:h}}finally{try{p&&!p.done&&(i=d.return)&&i.call(d)}finally{if(n)throw n.error}}}if(o)throw new Zu(o)}},e.prototype.add=function(t){var r;if(t&&t!==this)if(this.closed)Fb(t);else{if(t instanceof e){if(t.closed||t._hasParent(this))return;t._addParent(this)}(this._finalizers=(r=this._finalizers)!==null&&r!==void 0?r:[]).push(t)}},e.prototype._hasParent=function(t){var r=this._parentage;return r===t||Array.isArray(r)&&r.includes(t)},e.prototype._addParent=function(t){var r=this._parentage;this._parentage=Array.isArray(r)?(r.push(t),r):r?[r,t]:t},e.prototype._removeParent=function(t){var r=this._parentage;r===t?this._parentage=null:Array.isArray(r)&&Ud(r,t)},e.prototype.remove=function(t){var r=this._finalizers;r&&Ud(r,t),t instanceof e&&t._removeParent(this)},e.EMPTY=function(){var t=new e;return t.closed=!0,t}(),e}();var QK=Ju.EMPTY;function Lb(e){return e instanceof Ju||e&&"closed"in e&&sr(e.remove)&&sr(e.add)&&sr(e.unsubscribe)}function Fb(e){sr(e)?e():e.unsubscribe()}var $r={onUnhandledError:null,onStoppedNotification:null,Promise:void 0,useDeprecatedSynchronousErrorHandling:!1,useDeprecatedNextContext:!1};var Bi={setTimeout:function(e,t){for(var r=[],n=2;n<arguments.length;n++)r[n-2]=arguments[n];var i=Bi.delegate;return i?.setTimeout?i.setTimeout.apply(i,Di([e,t],Ni(r))):setTimeout.apply(void 0,Di([e,t],Ni(r)))},clearTimeout:function(e){var t=Bi.delegate;return(t?.clearTimeout||clearTimeout)(e)},delegate:void 0};function Nb(e){Bi.setTimeout(function(){var t=$r.onUnhandledError;if(t)t(e);else throw e})}function Hd(){}var Db=function(){return Vd("C",void 0,void 0)}();function Bb(e){return Vd("E",void 0,e)}function zb(e){return Vd("N",e,void 0)}function Vd(e,t,r){return{kind:e,value:t,error:r}}var Gd=null;function Wb(e){$r.useDeprecatedSynchronousErrorHandling&&Gd&&(Gd.errorThrown=!0,Gd.error=e)}var Yd=function(e){va(t,e);function t(r){var n=e.call(this)||this;return n.isStopped=!1,r?(n.destination=r,Lb(r)&&r.add(n)):n.destination=SP,n}return t.create=function(r,n,i){return new Xd(r,n,i)},t.prototype.next=function(r){this.isStopped?Kd(zb(r),this):this._next(r)},t.prototype.error=function(r){this.isStopped?Kd(Bb(r),this):(this.isStopped=!0,this._error(r))},t.prototype.complete=function(){this.isStopped?Kd(Db,this):(this.isStopped=!0,this._complete())},t.prototype.unsubscribe=function(){this.closed||(this.isStopped=!0,e.prototype.unsubscribe.call(this),this.destination=null)},t.prototype._next=function(r){this.destination.next(r)},t.prototype._error=function(r){try{this.destination.error(r)}finally{this.unsubscribe()}},t.prototype._complete=function(){try{this.destination.complete()}finally{this.unsubscribe()}},t}(Ju);var _P=Function.prototype.bind;function $d(e,t){return _P.call(e,t)}var wP=function(){function e(t){this.partialObserver=t}return e.prototype.next=function(t){var r=this.partialObserver;if(r.next)try{r.next(t)}catch(n){Qu(n)}},e.prototype.error=function(t){var r=this.partialObserver;if(r.error)try{r.error(t)}catch(n){Qu(n)}else Qu(t)},e.prototype.complete=function(){var t=this.partialObserver;if(t.complete)try{t.complete()}catch(r){Qu(r)}},e}(),Xd=function(e){va(t,e);function t(r,n,i){var o=e.call(this)||this,a;if(sr(r)||!r)a={next:r??void 0,error:n??void 0,complete:i??void 0};else{var u;o&&$r.useDeprecatedNextContext?(u=Object.create(r),u.unsubscribe=function(){return o.unsubscribe()},a={next:r.next&&$d(r.next,u),error:r.error&&$d(r.error,u),complete:r.complete&&$d(r.complete,u)}):a=r}return o.destination=new wP(a),o}return t}(Yd);function Qu(e){$r.useDeprecatedSynchronousErrorHandling?Wb(e):Nb(e)}function xP(e){throw e}function Kd(e,t){var r=$r.onStoppedNotification;r&&Bi.setTimeout(function(){return r(e,t)})}var SP={closed:!0,next:Hd,error:xP,complete:Hd};function OP(e){return sr(e?.lift)}function es(e){return function(t){if(OP(t))return t.lift(function(r){try{return e(r,this)}catch(n){this.error(n)}});throw new TypeError("Unable to lift unknown Observable type")}}function Ub(e,t,r,n,i){return new EP(e,t,r,n,i)}var EP=function(e){va(t,e);function t(r,n,i,o,a,u){var l=e.call(this,r)||this;return l.onFinalize=a,l.shouldUnsubscribe=u,l._next=n?function(s){try{n(s)}catch(c){r.error(c)}}:e.prototype._next,l._error=o?function(s){try{o(s)}catch(c){r.error(c)}finally{this.unsubscribe()}}:e.prototype._error,l._complete=i?function(){try{i()}catch(s){r.error(s)}finally{this.unsubscribe()}}:e.prototype._complete,l}return t.prototype.unsubscribe=function(){var r;if(!this.shouldUnsubscribe||this.shouldUnsubscribe()){var n=this.closed;e.prototype.unsubscribe.call(this),!n&&((r=this.onFinalize)===null||r===void 0||r.call(this))}},t}(Yd);var Hb=Xu(function(e){return function(){e(this),this.name="EmptyError",this.message="no elements in sequence"}});function Gn(e,t){var r=typeof t=="object";return new Promise(function(n,i){var o=new Xd({next:function(a){n(a),o.unsubscribe()},error:i,complete:function(){r?n(t.defaultValue):i(new Hb)}});e.subscribe(o)})}function Vb(e,t,r,n,i){return function(o,a){var u=r,l=t,s=0;o.subscribe(Ub(a,function(c){var f=s++;l=u?e(l,c,f):(u=!0,c),n&&a.next(l)},i&&function(){u&&a.next(l),a.complete()}))}}function Gb(e,t){return es(Vb(e,t,arguments.length>=2,!1,!0))}var AP=function(e,t){return e.push(t),e};function $n(){return es(function(e,t){Gb(AP,[])(e).subscribe(t)})}function ba(e){let t=[],r={},n=e.split(/\s*(;|\(|\)|,|:)\s*/);for(let i=0;i<n.length;i++){let o=n[i],a={};switch(o){case"(":r.children=[a],t.push(r),r=a;break;case",":t.at(-1)?.children.push(a),r=a;break;case")":r=t.pop();break;case":":break;default:{let u=n[i-1];u===")"||u==="("||u===","?r.name=o:u===":"&&(r.length=Number.parseFloat(o))}}}return r}function TP(e){return typeof e[0]=="string"}function zi(e){return TP(e)?e.map(t=>({id:t,label:t,color:void 0})):e}var ya=class extends $b.BaseFeatureDataAdapter{setupP;async setup(){if(!this.getSubAdapter)throw new Error("no getSubAdapter available");return{adapter:(await this.getSubAdapter({...(0,Xb.getSnapshot)(this.config),type:"BigBedAdapter"})).dataAdapter}}async setupPre(){return this.setupP||(this.setupP=this.setup().catch(t=>{throw this.setupP=void 0,t})),this.setupP}async getRefNames(){let{adapter:t}=await this.setup();return t.getRefNames()}async getHeader(){let{adapter:t}=await this.setup();return t.getHeader()}getFeatures(t,r){let{statusCallback:n=()=>{}}=r||{},i=/ +/;return(0,Yb.ObservableCreate)(async o=>{let{adapter:a}=await this.setup(),u=await(0,ga.updateStatus)("Downloading alignments",n,()=>Gn(a.getFeatures(t).pipe($n())));await(0,ga.updateStatus)("Processing alignments",n,()=>{for(let l of u){let c=l.get("mafBlock").split(";"),f=0;for(let v of c)v.startsWith("s")&&f++;let d=new Array(f),p={},m=0,h;for(let v of c)if(v.startsWith("s")){let y=v.split(i),w=y[6],_=y[1];d[m]=w,h===void 0&&(h=w);let x=_.indexOf("."),S=_.slice(0,Math.max(0,x)),E=_.slice(Math.max(0,x+1));p[S]={chr:E,start:+y[2],srcSize:+y[3],strand:y[4]==="+"?1:-1,unknown:+y[5],seq:w},m++}o.next(new ga.SimpleFeature({id:l.id(),data:{start:l.get("start"),end:l.get("end"),refName:l.get("refName"),seq:h,alignments:p}}))}}),o.complete()})}async getSamples(t){let r=this.getConf("nhLocation"),n=r.uri==="/path/to/my.nh"?void 0:await(0,Kb.openLocation)(r).readFile("utf8");return{samples:zi(this.getConf("samples")),tree:n?ba(n):void 0}}freeResources(){}};var Jb=L(Kn());var RP=(0,Jb.ConfigurationSchema)("BigMafAdapter",{samples:{type:"frozen",description:"string[] or {id:string,label:string,color?:string}[]",defaultValue:[]},bigBedLocation:{type:"fileLocation",defaultValue:{uri:"/path/to/my.bb",locationType:"UriLocation"}},nhLocation:{type:"fileLocation",description:"newick tree",defaultValue:{uri:"/path/to/my.nh",locationType:"UriLocation"}}},{explicitlyTyped:!0}),Qb=RP;function Zd(e){return e.addAdapterType(()=>new eg.AdapterType({name:"BigMafAdapter",AdapterClass:ya,configSchema:Qb}))}var E0=L(Gr());var je=L(qe()),$_=L(Kr()),Bs=L(ct()),K_=L(Wi()),Y_=L(cr());var ts=L(qe()),ag=L(Ui()),PP=(0,ag.makeStyles)()({cursor:{pointerEvents:"none"}}),MP=({width:e,height:t,scrollTop:r,mouseX:n,mouseY:i})=>{let{classes:o}=PP();return ts.default.createElement("svg",{className:o.cursor,width:e,height:t,style:{position:"absolute",top:r}},ts.default.createElement("line",{x1:0,x2:e,y1:i,y2:i,stroke:"black"}),ts.default.createElement("line",{x1:n,x2:n,y1:0,y2:t,stroke:"black"}))},ug=MP;var $e=L(qe()),Vi=L(Kr()),_a=L(ct()),mt=L(Wi()),fg=L(cr()),dg=L(Ui());var Hi=L(qe()),rs=L(ct()),cg=L(Jd());function lg({model:e,selectionCoords:t,showAllLetters:r}){let[n,i]=(0,Hi.useState)(""),[o,a]=(0,Hi.useState)(!0),[u,l]=(0,Hi.useState)();return(0,Hi.useEffect)(()=>{t&&(async()=>{try{a(!0),l(void 0);let{samples:s,adapterConfig:c}=e,{rpcManager:f}=(0,rs.getSession)(e),d=(0,cg.getRpcSessionId)(e),p=(0,rs.getContainingView)(e),{refName:m,assemblyName:h}=p.displayedRegions[0],{dragStartX:v,dragEndX:y}=t,[w,_]=[Math.min(v,y),Math.max(v,y)],S=(await f.call(d,"MafGetSequences",{sessionId:d,adapterConfig:c,samples:s,showAllLetters:r,regions:[{refName:m,start:p.pxToBp(w).coord-1,end:p.pxToBp(_).coord,assemblyName:h}]})).map((E,R)=>`>${s[R].label}
|
|
7
7
|
${E}`).join(`
|
|
8
|
-
`);i(S)}catch(s){console.error(s),l(s)}finally{a(!1)}})()},[e,t,r]),{sequence:n,loading:o,error:u}}var CP=(0,dg.makeStyles)()({dialogContent:{width:"80em"},textAreaInput:{fontFamily:"monospace",whiteSpace:"pre",overflowX:"auto"},ml:{marginLeft:10}}),kP=(0,fg.observer)(function({onClose:e,model:t,selectionCoords:r}){let[n,i]=(0,$e.useState)(!0),{classes:o}=CP(),{sequence:a,loading:u,error:l}=lg({model:t,selectionCoords:r,showAllLetters:n}),s=a?a.length>1e6:!1;return $e.default.createElement(Vi.Dialog,{open:!0,onClose:e,title:"Subsequence Data",maxWidth:"xl"},$e.default.createElement(mt.DialogContent,null,$e.default.createElement("div",{style:{display:"flex",alignItems:"center",marginBottom:"16px"}},$e.default.createElement(mt.ToggleButtonGroup,{value:n,exclusive:!0,size:"small",onChange:(c,f)=>{f!==null&&i(f)}},$e.default.createElement(mt.ToggleButton,{value:!0},"Show All Letters"),$e.default.createElement(mt.ToggleButton,{value:!1},"Show Only Differences")),$e.default.createElement("div",{style:{flexGrow:1}}),$e.default.createElement(mt.Button,{variant:"contained",color:"primary",disabled:u||!a,onClick:()=>{(async()=>{try{await navigator.clipboard.writeText(a),(0,_a.getSession)(t).notify("Sequence copied to clipboard","info")}catch(c){console.error(c),(0,_a.getSession)(t).notifyError(`${c}`,c)}})()}},"Copy to Clipboard"),$e.default.createElement(mt.Button,{variant:"contained",color:"secondary",disabled:u||!a,onClick:()=>{try{let c=URL.createObjectURL(new Blob([a],{type:"text/plain"})),f=document.createElement("a");f.href=c,f.download="sequence.fasta",document.body.append(f),f.click(),f.remove(),URL.revokeObjectURL(c),(0,_a.getSession)(t).notify("Sequence downloaded","info")}catch(c){console.error(c),(0,_a.getSession)(t).notifyError(`${c}`,c)}}},"Download")),l?$e.default.createElement(Vi.ErrorMessage,{error:l}):$e.default.createElement($e.default.Fragment,null,u?$e.default.createElement(Vi.LoadingEllipses,null):null,$e.default.createElement(mt.TextField,{variant:"outlined",multiline:!0,minRows:5,maxRows:10,disabled:s,className:o.dialogContent,fullWidth:!0,value:u?"Loading...":s?"Reference sequence too large to display, use the download FASTA button":a,slotProps:{input:{readOnly:!0,classes:{input:o.textAreaInput}}}}))),$e.default.createElement(mt.DialogActions,null,$e.default.createElement(mt.Button,{color:"primary",variant:"outlined",onClick:e},"Close")))}),pg=kP;var zp=L(qe()),P_=L(Kr()),M_=L(T_()),C_=L(ct()),k_=L(cr());var oo=L(ct());function Fs(e,t){return e==null||t==null?NaN:e<t?-1:e>t?1:e>=t?0:NaN}function Ls(e,t){let r;if(t===void 0)for(let n of e)n!=null&&(r<n||r===void 0&&n>=n)&&(r=n);else{let n=-1;for(let i of e)(i=t(i,++n,e))!=null&&(r<i||r===void 0&&i>=i)&&(r=i)}return r}function R_(e,t,r){let n=[];if(t)n.push(`Start: ${t.refName}:${(0,oo.toLocale)(t.coord)}`,`End: ${r.refName}:${(0,oo.toLocale)(r.coord)}`,`Length: ${(0,oo.getBpDisplayStr)(Math.abs(t.coord-r.coord))}`);else if(n.push(`Ref: ${r.refName}:${(0,oo.toLocale)(r.coord)}`),e){let{base:i,sampleId:o,pos:a,chr:u}=e,l=20,s=i.length,c=s>1?` ${s}bp`:"",f=i.length>l?i.slice(0,l)+"...":i;n.push(`Alt ${o}: ${u}:${a.toLocaleString("en-US")} (${f}${c})`)}return n.filter(i=>!!i).join("<br/>")}function Dp(e){return(e.data.length||0)+(e.children&&Ls(e.children,Dp)||0)}function Bp(e,t,r){e.len=(t+=Math.max(e.data.length||0,0))*r,e.children&&e.children.forEach(n=>{Bp(n,t,r)})}var NC=(0,k_.observer)(function({model:e,mouseX:t,origMouseX:r}){let{hoveredInfo:n}=e,i=(0,C_.getContainingView)(e),o=r?i.pxToBp(r):void 0,a=i.pxToBp(t);return n?zp.default.createElement(M_.default,null,zp.default.createElement(P_.SanitizedHTML,{html:R_(n,o,a)})):null}),q_=NC;Hp();var HC=(0,Y_.observer)(function(e){let{model:t}=e,{pluginManager:r}=(0,Bs.getEnv)(t),{rowHeight:n,height:i,scrollTop:o,samples:a}=t,u=(0,je.useRef)(null),l=(0,K_.useTheme)(),s=r.getPlugin("LinearGenomeViewPlugin"),{BaseLinearDisplayComponent:c}=s.exports,[f,d]=(0,je.useState)(),[p,m]=(0,je.useState)(),[h,v]=(0,je.useState)(!1),[y,w]=(0,je.useState)(),[_,x]=(0,je.useState)(),[S,E]=(0,je.useState)(!1),[R,T]=(0,je.useState)(),[C,M]=(0,je.useState)(!1),[q,z]=(0,je.useState)(),{width:D}=(0,Bs.getContainingView)(t),A=P=>{let U=u.current?.getBoundingClientRect()?.left||0,ye=P.clientX-U;E(!1),v(!0),w(ye),x(ye),P.stopPropagation()},I=P=>{let F=u.current?.getBoundingClientRect(),U=F?.top||0,ye=F?.left||0,J=P.clientX-ye,G=P.clientY-U;d(G),m(J),h&&x(J)},W=P=>{h&&y!==void 0&&_!==void 0&&(Math.abs(_-y)>=2?(T({coord:[P.clientX,P.clientY],dragEndX:P.clientX,dragStartX:y}),E(!0)):j()),v(!1)},j=()=>{E(!1),w(void 0),x(void 0)};return(0,je.useEffect)(()=>{let P=U=>{U.key==="Escape"&&S&&j()},F=U=>{u.current&&!u.current.contains(U.target)&&S&&j()};return document.addEventListener("keydown",P),document.addEventListener("click",F),()=>{document.removeEventListener("keydown",P),document.removeEventListener("click",F)}},[S,j]),je.default.createElement("div",{ref:u,onMouseDown:A,onMouseMove:I,onMouseUp:W,onDoubleClick:()=>{S&&j()},onMouseLeave:()=>{d(void 0),m(void 0),v(!1)}},je.default.createElement(c,{...e}),je.default.createElement(Ds,{model:t}),f&&p&&a&&!R&&!C?je.default.createElement("div",{style:{position:"relative"}},je.default.createElement(ug,{width:D,height:i,scrollTop:o,mouseX:p,mouseY:f}),je.default.createElement(q_,{model:t,mouseX:p,mouseY:f,origMouseX:y,rowHeight:n,sources:a})):null,(h||S)&&y!==void 0&&_!==void 0?je.default.createElement("div",{style:{position:"absolute",left:Math.min(y,_),top:0,width:Math.abs(_-y),height:i,backgroundColor:"rgba(0, 0, 255, 0.2)",border:"1px solid rgba(0, 0, 255, 0.5)",pointerEvents:"none"}}):null,je.default.createElement($_.Menu,{open:!!R,onMenuItemClick:(P,F)=>{F(),T(void 0)},onClose:()=>{T(void 0)},slotProps:{transition:{onExit:()=>{T(void 0)}}},anchorReference:"anchorPosition",anchorPosition:R?{top:R.coord[1],left:R.coord[0]}:void 0,style:{zIndex:l.zIndex.tooltip},menuItems:[{label:"View subsequence",onClick:()=>{R&&(z({dragStartX:R.dragStartX,dragEndX:R.dragEndX}),M(!0),T(void 0))}}]}),C?je.default.createElement(pg,{model:t,selectionCoords:q,onClose:()=>{M(!1),z(void 0)}}):null)}),X_=HC;var Z_=L(Kn());function Vp(e){let t=e.getPlugin("LinearGenomeViewPlugin"),{baseLinearDisplayConfigSchema:r}=t.exports;return(0,Z_.ConfigurationSchema)("LinearMafDisplay",{renderer:e.pluggableConfigSchemaType("renderer")},{baseConfiguration:r,explicitlyTyped:!0})}var x0=L(qe()),Ws=L(Kn()),dr=L(ct()),S0=L(Jd());function VC(e,t){return e.parent===t.parent?1:2}function GC(e){return e.reduce($C,0)/e.length}function $C(e,t){return e+t.x}function KC(e){return 1+e.reduce(YC,0)}function YC(e,t){return Math.max(e,t.y)}function XC(e){for(var t;t=e.children;)e=t[0];return e}function ZC(e){for(var t;t=e.children;)e=t[t.length-1];return e}function Gp(){var e=VC,t=1,r=1,n=!1;function i(o){var a,u=0;o.eachAfter(function(d){var p=d.children;p?(d.x=GC(p),d.y=KC(p)):(d.x=a?u+=e(d,a):0,d.y=0,a=d)});var l=XC(o),s=ZC(o),c=l.x-e(l,s)/2,f=s.x+e(s,l)/2;return o.eachAfter(n?function(d){d.x=(d.x-o.x)*t,d.y=(o.y-d.y)*r}:function(d){d.x=(d.x-c)/(f-c)*t,d.y=(1-(o.y?d.y/o.y:1))*r})}return i.separation=function(o){return arguments.length?(e=o,i):e},i.size=function(o){return arguments.length?(n=!1,t=+o[0],r=+o[1],i):n?null:[t,r]},i.nodeSize=function(o){return arguments.length?(n=!0,t=+o[0],r=+o[1],i):n?[t,r]:null},i}function JC(e){var t=0,r=e.children,n=r&&r.length;if(!n)t=1;else for(;--n>=0;)t+=r[n].value;e.value=t}function J_(){return this.eachAfter(JC)}function Q_(e,t){let r=-1;for(let n of this)e.call(t,n,++r,this);return this}function e0(e,t){for(var r=this,n=[r],i,o,a=-1;r=n.pop();)if(e.call(t,r,++a,this),i=r.children)for(o=i.length-1;o>=0;--o)n.push(i[o]);return this}function t0(e,t){for(var r=this,n=[r],i=[],o,a,u,l=-1;r=n.pop();)if(i.push(r),o=r.children)for(a=0,u=o.length;a<u;++a)n.push(o[a]);for(;r=i.pop();)e.call(t,r,++l,this);return this}function r0(e,t){let r=-1;for(let n of this)if(e.call(t,n,++r,this))return n}function n0(e){return this.eachAfter(function(t){for(var r=+e(t.data)||0,n=t.children,i=n&&n.length;--i>=0;)r+=n[i].value;t.value=r})}function i0(e){return this.eachBefore(function(t){t.children&&t.children.sort(e)})}function o0(e){for(var t=this,r=QC(t,e),n=[t];t!==r;)t=t.parent,n.push(t);for(var i=n.length;e!==r;)n.splice(i,0,e),e=e.parent;return n}function QC(e,t){if(e===t)return e;var r=e.ancestors(),n=t.ancestors(),i=null;for(e=r.pop(),t=n.pop();e===t;)i=e,e=r.pop(),t=n.pop();return i}function a0(){for(var e=this,t=[e];e=e.parent;)t.push(e);return t}function u0(){return Array.from(this)}function s0(){var e=[];return this.eachBefore(function(t){t.children||e.push(t)}),e}function c0(){var e=this,t=[];return e.each(function(r){r!==e&&t.push({source:r.parent,target:r})}),t}function*l0(){var e=this,t,r=[e],n,i,o;do for(t=r.reverse(),r=[];e=t.pop();)if(yield e,n=e.children)for(i=0,o=n.length;i<o;++i)r.push(n[i]);while(r.length)}function ao(e,t){e instanceof Map?(e=[void 0,e],t===void 0&&(t=rk)):t===void 0&&(t=tk);for(var r=new Ca(e),n,i=[r],o,a,u,l;n=i.pop();)if((a=t(n.data))&&(l=(a=Array.from(a)).length))for(n.children=a,u=l-1;u>=0;--u)i.push(o=a[u]=new Ca(a[u])),o.parent=n,o.depth=n.depth+1;return r.eachBefore(ik)}function ek(){return ao(this).eachBefore(nk)}function tk(e){return e.children}function rk(e){return Array.isArray(e)?e[1]:null}function nk(e){e.data.value!==void 0&&(e.value=e.data.value),e.data=e.data.data}function ik(e){var t=0;do e.height=t;while((e=e.parent)&&e.height<++t)}function Ca(e){this.data=e,this.depth=this.height=0,this.parent=null}Ca.prototype=ao.prototype={constructor:Ca,count:J_,each:Q_,eachAfter:t0,eachBefore:e0,find:r0,sum:n0,sort:i0,path:o0,ancestors:a0,descendants:u0,leaves:s0,links:c0,copy:ek,[Symbol.iterator]:l0};var $p=L(d0()),O0=L(zs()),on=L(ht());var ck=(0,x0.lazy)(()=>Promise.resolve().then(()=>(g0(),b0)));function Kp(e,t){let r=t.getPlugin("LinearGenomeViewPlugin"),{BaseLinearDisplay:n}=r.exports;return on.types.compose("LinearMafDisplay",n,on.types.model({type:on.types.literal("LinearMafDisplay"),configuration:(0,Ws.ConfigurationReference)(e),rowHeight:15,rowProportion:.8,showAllLetters:!1,mismatchRendering:!0,showBranchLen:!1,treeAreaWidth:80,showAsUpperCase:!0})).volatile(()=>({hoveredInfo:void 0,prefersOffset:!0,volatileSamples:void 0,volatileTree:void 0})).actions(i=>({setHoveredInfo(o){i.hoveredInfo=o},setRowHeight(o){i.rowHeight=o},setRowProportion(o){i.rowProportion=o},setShowAllLetters(o){i.showAllLetters=o},setMismatchRendering(o){i.mismatchRendering=o},setSamples({samples:o,tree:a}){(0,$p.default)(o,i.volatileSamples)||(i.volatileSamples=o),(0,$p.default)(a,i.volatileTree)||(i.volatileTree=a)},setShowAsUpperCase(o){i.showAsUpperCase=o}})).views(i=>({get rendererTypeName(){return"LinearMafRenderer"},get rendererConfig(){let a=(0,Ws.getConf)(i,["renderer"])||{};return i.rendererType.configSchema.create({...a,type:"LinearMafRenderer"},(0,dr.getEnv)(i))}})).views(i=>({get root(){return i.volatileTree?ao(i.volatileTree,o=>o.children).sum(o=>o.children?0:1).sort((o,a)=>Fs(o.data.length||1,a.data.length||1)):void 0}})).views(i=>({get hierarchy(){let o=i.root;if(o){let a=i.treeAreaWidth;return Gp().size([this.totalHeight,a]).separation(()=>1)(o),Bp(o,o.data.length=0,a/Dp(o)),o}else return},get samples(){if(this.rowNames){let o=i.volatileSamples?Object.fromEntries(i.volatileSamples.map(a=>[a.id,a])):void 0;return zi(this.rowNames).map(a=>({...a,label:o?.[a.id]?.label||a.label,color:o?.[a.id]?.color||a.color}))}else return i.volatileSamples},get totalHeight(){return this.samples?this.samples.length*i.rowHeight:1},get leaves(){return i.root?.leaves()},get rowNames(){return this.leaves?.map(o=>o.data.name)}})).views(i=>{let{trackMenuItems:o,renderProps:a}=i;return{get treeWidth(){return i.hierarchy?i.treeAreaWidth:0},renderProps(){let{showAllLetters:u,rendererConfig:l,samples:s,rowHeight:c,rowProportion:f,mismatchRendering:d,showAsUpperCase:p}=i;return{...a(),notReady:!i.volatileSamples&&!i.volatileTree||super.notReady,config:l,samples:s,rowHeight:c,rowProportion:f,showAllLetters:u,mismatchRendering:d,showAsUpperCase:p}},trackMenuItems(){return[...o(),{label:"Set feature height",type:"subMenu",subMenu:[{label:"Normal",onClick:()=>{i.setRowHeight(15),i.setRowProportion(.8)}},{label:"Compact",onClick:()=>{i.setRowHeight(8),i.setRowProportion(.9)}},{label:"Manually set height",onClick:()=>{(0,dr.getSession)(i).queueDialog(u=>[ck,{model:i,handleClose:u}])}}]},{label:"Use upper-case",type:"checkbox",checked:i.showAsUpperCase,onClick:()=>{i.setShowAsUpperCase(!i.showAsUpperCase)}},{label:"Show all letters",type:"checkbox",checked:i.showAllLetters,onClick:()=>{i.setShowAllLetters(!i.showAllLetters)}},{label:"Draw mismatches as single color",type:"checkbox",checked:!i.mismatchRendering,onClick:()=>{i.setMismatchRendering(!i.mismatchRendering)}}]}}}).views(i=>({get svgFontSize(){return Math.min(Math.max(i.rowHeight,8),14)},get canDisplayLabel(){return i.rowHeight>=7},get labelWidth(){return(0,dr.max)(i.samples?.map(a=>(0,dr.measureText)(a.label,this.svgFontSize)).map(a=>this.canDisplayLabel?a:20)||[],0)}})).actions(i=>({afterCreate(){(0,on.addDisposer)(i,(0,O0.autorun)(async()=>{try{let{rpcManager:o}=(0,dr.getSession)(i),a=(0,S0.getRpcSessionId)(i);i.setSamples(await o.call(a,"MafGetSamples",{sessionId:a,adapterConfig:i.adapterConfig,statusCallback:u=>{(0,on.isAlive)(i)&&i.setMessage(u)}}))}catch(o){console.error(o),(0,dr.getSession)(i).notifyError(`${o}`,o)}}))}})).actions(i=>{let{renderSvg:o}=i;return{async renderSvg(a){let{renderSvg:u}=await Promise.resolve().then(()=>(w0(),_0));return u(i,a,o)}}})}function Yp(e){e.addDisplayType(()=>{let t=Vp(e),r=Kp(t,e);return new E0.DisplayType({name:"LinearMafDisplay",configSchema:t,stateModel:r,ReactComponent:X_,viewType:"LinearGenomeView",trackType:"MafTrack",displayName:"MAF display"})})}var z0=L(Gr()),Gs=L(ct());var D0=L(Kr());var ka=class{constructor(){this.ids=[],this.values=[],this.length=0}clear(){this.length=0}push(t,r){let n=this.length++;for(;n>0;){let i=n-1>>1,o=this.values[i];if(r>=o)break;this.ids[n]=this.ids[i],this.values[n]=o,n=i}this.ids[n]=t,this.values[n]=r}pop(){if(this.length===0)return;let t=this.ids[0];if(this.length--,this.length>0){let r=this.ids[0]=this.ids[this.length],n=this.values[0]=this.values[this.length],i=this.length>>1,o=0;for(;o<i;){let a=(o<<1)+1,u=a+1,l=this.ids[a],s=this.values[a],c=this.values[u];if(u<this.length&&c<s&&(a=u,l=this.ids[u],s=c),s>=n)break;this.ids[o]=l,this.values[o]=s,o=a}this.ids[o]=r,this.values[o]=n}return t}peek(){if(this.length!==0)return this.ids[0]}peekValue(){if(this.length!==0)return this.values[0]}shrink(){this.ids.length=this.values.length=this.length}};var A0=[Int8Array,Uint8Array,Uint8ClampedArray,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array],Xp=3,ai=class e{static from(t,r=0){if(r%8!==0)throw new Error("byteOffset must be 8-byte aligned.");if(!t||t.byteLength===void 0||t.buffer)throw new Error("Data must be an instance of ArrayBuffer or SharedArrayBuffer.");let[n,i]=new Uint8Array(t,r+0,2);if(n!==251)throw new Error("Data does not appear to be in a Flatbush format.");let o=i>>4;if(o!==Xp)throw new Error(`Got v${o} data when expected v${Xp}.`);let a=A0[i&15];if(!a)throw new Error("Unrecognized array type.");let[u]=new Uint16Array(t,r+2,1),[l]=new Uint32Array(t,r+4,1);return new e(l,u,a,void 0,t,r)}constructor(t,r=16,n=Float64Array,i=ArrayBuffer,o,a=0){if(t===void 0)throw new Error("Missing required argument: numItems.");if(isNaN(t)||t<=0)throw new Error(`Unexpected numItems value: ${t}.`);this.numItems=+t,this.nodeSize=Math.min(Math.max(+r,2),65535),this.byteOffset=a;let u=t,l=u;this._levelBounds=[u*4];do u=Math.ceil(u/this.nodeSize),l+=u,this._levelBounds.push(l*4);while(u!==1);this.ArrayType=n,this.IndexArrayType=l<16384?Uint16Array:Uint32Array;let s=A0.indexOf(n),c=l*4*n.BYTES_PER_ELEMENT;if(s<0)throw new Error(`Unexpected typed array class: ${n}.`);if(o)this.data=o,this._boxes=new n(o,a+8,l*4),this._indices=new this.IndexArrayType(o,a+8+c,l),this._pos=l*4,this.minX=this._boxes[this._pos-4],this.minY=this._boxes[this._pos-3],this.maxX=this._boxes[this._pos-2],this.maxY=this._boxes[this._pos-1];else{let f=this.data=new i(8+c+l*this.IndexArrayType.BYTES_PER_ELEMENT);this._boxes=new n(f,8,l*4),this._indices=new this.IndexArrayType(f,8+c,l),this._pos=0,this.minX=1/0,this.minY=1/0,this.maxX=-1/0,this.maxY=-1/0,new Uint8Array(f,0,2).set([251,(Xp<<4)+s]),new Uint16Array(f,2,1)[0]=r,new Uint32Array(f,4,1)[0]=t}this._queue=new ka}add(t,r,n=t,i=r){let o=this._pos>>2,a=this._boxes;return this._indices[o]=o,a[this._pos++]=t,a[this._pos++]=r,a[this._pos++]=n,a[this._pos++]=i,t<this.minX&&(this.minX=t),r<this.minY&&(this.minY=r),n>this.maxX&&(this.maxX=n),i>this.maxY&&(this.maxY=i),o}finish(){if(this._pos>>2!==this.numItems)throw new Error(`Added ${this._pos>>2} items when expected ${this.numItems}.`);let t=this._boxes;if(this.numItems<=this.nodeSize){t[this._pos++]=this.minX,t[this._pos++]=this.minY,t[this._pos++]=this.maxX,t[this._pos++]=this.maxY;return}let r=this.maxX-this.minX||1,n=this.maxY-this.minY||1,i=new Uint32Array(this.numItems),o=65535;for(let a=0,u=0;a<this.numItems;a++){let l=t[u++],s=t[u++],c=t[u++],f=t[u++],d=Math.floor(o*((l+c)/2-this.minX)/r),p=Math.floor(o*((s+f)/2-this.minY)/n);i[a]=fk(d,p)}Zp(i,t,this._indices,0,this.numItems-1,this.nodeSize);for(let a=0,u=0;a<this._levelBounds.length-1;a++){let l=this._levelBounds[a];for(;u<l;){let s=u,c=t[u++],f=t[u++],d=t[u++],p=t[u++];for(let m=1;m<this.nodeSize&&u<l;m++)c=Math.min(c,t[u++]),f=Math.min(f,t[u++]),d=Math.max(d,t[u++]),p=Math.max(p,t[u++]);this._indices[this._pos>>2]=s,t[this._pos++]=c,t[this._pos++]=f,t[this._pos++]=d,t[this._pos++]=p}}}search(t,r,n,i,o){if(this._pos!==this._boxes.length)throw new Error("Data not yet indexed - call index.finish().");let a=this._boxes.length-4,u=[],l=[];for(;a!==void 0;){let s=Math.min(a+this.nodeSize*4,T0(a,this._levelBounds));for(let c=a;c<s;c+=4){if(n<this._boxes[c]||i<this._boxes[c+1]||t>this._boxes[c+2]||r>this._boxes[c+3])continue;let f=this._indices[c>>2]|0;a>=this.numItems*4?u.push(f):(o===void 0||o(f))&&l.push(f)}a=u.pop()}return l}neighbors(t,r,n=1/0,i=1/0,o){if(this._pos!==this._boxes.length)throw new Error("Data not yet indexed - call index.finish().");let a=this._boxes.length-4,u=this._queue,l=[],s=i*i;e:for(;a!==void 0;){let c=Math.min(a+this.nodeSize*4,T0(a,this._levelBounds));for(let f=a;f<c;f+=4){let d=this._indices[f>>2]|0,p=this._boxes[f],m=this._boxes[f+1],h=this._boxes[f+2],v=this._boxes[f+3],y=t<p?p-t:t>h?t-h:0,w=r<m?m-r:r>v?r-v:0,_=y*y+w*w;_>s||(a>=this.numItems*4?u.push(d<<1,_):(o===void 0||o(d))&&u.push((d<<1)+1,_))}for(;u.length&&u.peek()&1;)if(u.peekValue()>s||(l.push(u.pop()>>1),l.length===n))break e;a=u.length?u.pop()>>1:void 0}return u.clear(),l}};function T0(e,t){let r=0,n=t.length-1;for(;r<n;){let i=r+n>>1;t[i]>e?n=i:r=i+1}return t[r]}function Zp(e,t,r,n,i,o){if(Math.floor(n/o)>=Math.floor(i/o))return;let a=e[n],u=e[n+i>>1],l=e[i],s=l,c=Math.max(a,u);l>c?s=c:c===a?s=Math.max(u,l):c===u&&(s=Math.max(a,l));let f=n-1,d=i+1;for(;;){do f++;while(e[f]<s);do d--;while(e[d]>s);if(f>=d)break;lk(e,t,r,f,d)}Zp(e,t,r,n,d,o),Zp(e,t,r,d+1,i,o)}function lk(e,t,r,n,i){let o=e[n];e[n]=e[i],e[i]=o;let a=4*n,u=4*i,l=t[a],s=t[a+1],c=t[a+2],f=t[a+3];t[a]=t[u],t[a+1]=t[u+1],t[a+2]=t[u+2],t[a+3]=t[u+3],t[u]=l,t[u+1]=s,t[u+2]=c,t[u+3]=f;let d=r[n];r[n]=r[i],r[i]=d}function fk(e,t){let r=e^t,n=65535^r,i=65535^(e|t),o=e&(t^65535),a=r|n>>1,u=r>>1^r,l=i>>1^n&o>>1^i,s=r&i>>1^o>>1^o;r=a,n=u,i=l,o=s,a=r&r>>2^n&n>>2,u=r&n>>2^n&(r^n)>>2,l^=r&i>>2^n&o>>2,s^=n&i>>2^(r^n)&o>>2,r=a,n=u,i=l,o=s,a=r&r>>4^n&n>>4,u=r&n>>4^n&(r^n)>>4,l^=r&i>>4^n&o>>4,s^=n&i>>4^(r^n)&o>>4,r=a,n=u,i=l,o=s,l^=r&i>>8^n&o>>8,s^=n&i>>8^(r^n)&o>>8,r=l^l>>1,n=s^s>>1;let c=e^t,f=n|65535^(c|r);return c=(c|c<<8)&16711935,c=(c|c<<4)&252645135,c=(c|c<<2)&858993459,c=(c|c<<1)&1431655765,f=(f|f<<8)&16711935,f=(f|f<<4)&252645135,f=(f|f<<2)&858993459,f=(f|f<<1)&1431655765,(f<<1|c)>>>0}var R0="bold 10px Courier New,monospace";function ui(e,t,r=!1){return r||Math.abs(e-t.lastInsertedX)>.5}function si(e,t,r,n,i,o){e.spatialIndex.push(o),e.spatialIndexCoords.push(t,r,n,i),e.lastInsertedX=t}function P0(e,t,r,n,i){let{ctx:o,scale:a}=e,u=e.rowHeight/2;o.beginPath(),o.fillStyle="black";for(let l=0,s=0,c=t.length;l<c;l++)if(r[l]!=="-"){if(t[l]==="-"){let f=n+a*s;o.moveTo(f,i+u),o.lineTo(f+a+.4,i+u)}s++}o.stroke()}var Jp=L(ct());function M0(e){return Object.fromEntries(Object.entries(Qp(e)).map(([t,r])=>[t,e.palette.getContrastText(r)]))}function Qp(e){let{bases:t}=e.palette;return{a:t.A.main,c:t.C.main,g:t.G.main,t:t.T.main}}function Bt(e,t,r,n,i,o,a){t+n<0||t>o||(a&&(e.fillStyle=a),e.fillRect(t,r,n,i))}function Us(){let e=(0,Jp.measureText)("A"),t=(0,Jp.measureText)("M")-2;return{charWidth:e,charHeight:t}}function C0(e,t,r,n,i,o,a,u){if(e.showAllLetters)return;let{ctx:l,scale:s,h:c,canvasWidth:f}=e;l.fillStyle="lightgrey";for(let d=0,p=0,m=t.length;d<m;d++)if(r[d]!=="-"){let h=t[d],v=n+s*p;r[d]===h&&h!=="-"&&h!==" "&&(Bt(l,v,i,s+.4,c,f),ui(v,e)&&si(e,v,i,v+e.scale+.4,i+e.h,{pos:p+a,chr:u,base:h||"",sampleId:o})),p++}}function k0(e,t,r,n,i,o,a,u){let{ctx:l,scale:s,h:c,canvasWidth:f,showAllLetters:d,mismatchRendering:p,colorForBase:m}=e;for(let h=0,v=0,y=t.length;h<y;h++){let w=t[h];if(r[h]!=="-"){if(w!=="-"){let _=n+s*v;r[h]!==w&&w!==" "?(Bt(l,_,i,s+.4,c,f,p?m[w]??"black":"orange"),ui(_,e)&&si(e,_,i,_+e.scale+.4,i+e.h,{pos:v+a,chr:u,base:w,sampleId:o})):d&&(Bt(l,_,i,s+.4,c,f,p?m[w]??"black":"lightblue"),ui(_,e)&&si(e,_,i,_+e.scale+.4,i+e.h,{pos:v+a,chr:u,base:w,sampleId:o}))}v++}}}function hk(e,t){return t?e.toUpperCase():e}function q0(e,t,r,n,i,o){let{ctx:a,scale:u,hp2:l,rowHeight:s,showAllLetters:c,mismatchRendering:f,contrastForBase:d,showAsUpperCase:p}=e,{charHeight:m}=Us();if(u>=10){for(let h=0,v=0,y=t.length;h<y;h++)if(n[h]!=="-"){let w=i+u*v,_=(u-10)/2+1,x=t[h];(c||n[h]!==x)&&x!=="-"&&(a.fillStyle=f?d[x]??"white":"black",s>m&&a.fillText(hk(r[h]||"",p),w+_,l+o+3)),v++}}}var j0=L(ct());function F0(e,t,r,n,i,o,a,u,l){let{ctx:s,scale:c,h:f,canvasWidth:d,rowHeight:p}=e,{charHeight:m}=Us();for(let h=0,v=0,y=t.length;h<y;h++){let w="";for(;r[h]==="-";)t[h]!=="-"&&t[h]!==" "&&(w+=t[h]),h++;if(w.length>0){let _=n+c*v-1,x,S;if(w.length>10){let E=`${w.length}`;if(o>10)x=_-1,S=2,Bt(s,x,i,S,f,d,"purple");else if(f>m){let R=(0,j0.measureText)(E,10),T=2;x=_-R/2-T,S=R+2*T,Bt(s,x,i,S,f,d,"purple"),s.fillStyle="white",s.fillText(E,_-R/2,i+f*7/8)}else{let R=2;x=_-R,S=2*R,Bt(s,x,i,S,f,d,"purple")}}else x=_,S=1,Bt(s,x,i,S,f,d,"purple"),o<.2&&p>5&&(x=_-2,S=5,Bt(s,_-2,i,5,1,d),Bt(s,_-2,i+f-1,5,1,d));ui(x,e,!0)&&si(e,x,i,x+S,i+e.h,{pos:v+u,chr:l,base:w,sampleId:a,isInsertion:!0})}v++}}var th=L(ct());function L0(e,t,r,n,i){let[o]=(0,th.featureSpanPx)(e,t,r),a=e.get("alignments"),u=e.get("seq").toLowerCase();for(let[l,s]of Object.entries(a)){let c=n.get(l);if(c===void 0)continue;let f=s.seq,d=f.toLowerCase(),p=i.offset+i.rowHeight*c;P0(i,d,u,o,p),C0(i,d,u,o,p,c,s.start,s.chr),k0(i,d,u,o,p,c,s.start,s.chr),q0(i,d,f,u,o,p)}}function N0(e,t,r,n,i){let[o]=(0,th.featureSpanPx)(e,t,r),a=e.get("alignments"),u=e.get("seq").toLowerCase();for(let[l,s]of Object.entries(a)){let c=n.get(l);if(c===void 0)continue;let f=s.seq.toLowerCase(),d=i.offset+i.rowHeight*c;F0(i,f,u,o,d,r,c,s.start,s.chr)}}function B0({ctx:e,renderArgs:t}){let{regions:r,bpPerPx:n,rowHeight:i,showAllLetters:o,theme:a,mismatchRendering:u,samples:l,rowProportion:s,features:c,showAsUpperCase:f}=t,d=r[0],p=(d.end-d.start)/n,m=i*s,h=(0,D0.createJBrowseTheme)(a),v=Qp(h),y=M0(h),w=new Map(l.map((T,C)=>[T.id,C])),_=1/n,x=m/2,S=(i-m)/2;e.font=R0;let E={ctx:e,scale:_,canvasWidth:p,rowHeight:i,h:m,hp2:x,offset:S,colorForBase:v,contrastForBase:y,showAllLetters:o,mismatchRendering:u,showAsUpperCase:f,spatialIndex:[],spatialIndexCoords:[],lastInsertedX:-1/0};for(let T of c.values())L0(T,d,n,w,E);for(let T of c.values())N0(T,d,n,w,E);let R=new ai(E.spatialIndex.length);for(let T=0,C=E.spatialIndexCoords.length;T<C;T+=4)R.add(E.spatialIndexCoords[T],E.spatialIndexCoords[T+1],E.spatialIndexCoords[T+2],E.spatialIndexCoords[T+3]);return R.finish(),{flatbush:R.data,items:E.spatialIndex,samples:l}}var qa=class extends z0.FeatureRendererType{getExpandedRegion(t){let{start:r,end:n}=t,i=1;return{...t,start:Math.floor(Math.max(r-i,0)),end:Math.ceil(n+i)}}async render(t){let{statusCallback:r=()=>{},regions:n,bpPerPx:i,samples:o,rowHeight:a}=t,u=n[0],l=o.length*a+100,s=(u.end-u.start)/i,c=await this.getFeatures(t),f=await(0,Gs.updateStatus)("Rendering alignment",r,()=>(0,Gs.renderToAbstractCanvas)(s,l,t,p=>B0({ctx:p,renderArgs:{...t,features:c}})));return{...await super.render({...t,...f,width:s,height:l}),...f,features:new Map,width:s,height:l,containsNoTransferables:!0}}};var ci=L(qe()),W0=L(Kr());var U0=L(cr()),yk=(0,U0.observer)(function(e){let{items:t,displayModel:r,height:n,samples:i,flatbush:o}=e,a=(0,ci.useRef)(null),u=(0,ci.useMemo)(()=>ai.from(o),[o]);function l(s,c){let f=0,d=0;if(a.current){let m=a.current.getBoundingClientRect();f=s-m.left,d=c-m.top}let p=u.search(f,d,f+1,d+1);if(p.length){let m=p.find(y=>t[y]?.isInsertion),h=m!==void 0?t[m]:t[p[0]],v=i[h.sampleId];return{...h,sampleId:v?.label||v?.id||"unknown"}}else return}return ci.default.createElement("div",{ref:a,onMouseMove:s=>r.setHoveredInfo?.(l(s.clientX,s.clientY)),onMouseLeave:()=>{r.setHoveredInfo?.(void 0)},onMouseOut:()=>{r.setHoveredInfo?.(void 0)},style:{overflow:"visible",position:"relative",height:n}},ci.default.createElement(W0.PrerenderedCanvas,{...e,style:{position:"absolute",left:0}}))}),H0=yk;var V0=L(Kn());var _k=(0,V0.ConfigurationSchema)("LinearMafRenderer",{baseColor:{type:"color",defaultValue:"lightgrey"}},{explicitlyTyped:!0}),G0=_k;function rh(e){e.addRendererType(()=>new qa({name:"LinearMafRenderer",ReactComponent:H0,configSchema:G0,pluginManager:e}))}var Y0=L(Gr()),X0=L(ht());var ve=L(qe()),qr=L(Kr()),so=L(ct()),De=L(Wi()),$0=L(ht()),K0=L(Ui()),wk=(0,K0.makeStyles)()(e=>({textbox:{width:"100%"},paper:{margin:e.spacing(),padding:e.spacing()},submit:{marginTop:25,marginBottom:100,display:"block"}}));function nh({model:e}){let{classes:t}=wk(),[r,n]=(0,ve.useState)(""),[i,o]=(0,ve.useState)(),[a,u]=(0,ve.useState)(),[l,s]=(0,ve.useState)(),[c,f]=(0,ve.useState)(),[d,p]=(0,ve.useState)("MAF track"),[m,h]=(0,ve.useState)("BigMafAdapter"),[v,y]=(0,ve.useState)("TBI"),w=(0,$0.getRoot)(e);return ve.default.createElement(De.Paper,{className:t.paper},ve.default.createElement(De.Paper,null,c?ve.default.createElement(qr.ErrorMessage,{error:c}):null,ve.default.createElement(De.FormControl,null,ve.default.createElement(De.FormLabel,null,"File type"),ve.default.createElement(De.RadioGroup,{value:m,onChange:_=>{h(_.target.value)}},["BigMafAdapter","MafTabixAdapter"].map(_=>ve.default.createElement(De.FormControlLabel,{key:_,value:_,control:ve.default.createElement(De.Radio,null),checked:m===_,label:_})))),m==="BigMafAdapter"?ve.default.createElement(qr.FileSelector,{location:i,name:"Path to bigMaf",rootModel:w,setLocation:_=>{o(_)}}):m==="MafTabixAdapter"?ve.default.createElement(ve.default.Fragment,null,ve.default.createElement(De.FormControl,null,ve.default.createElement(De.FormLabel,null,"Index type"),ve.default.createElement(De.RadioGroup,{value:m,onChange:_=>{y(_.target.value)}},["TBI","CSI"].map(_=>ve.default.createElement(De.FormControlLabel,{key:_,value:_,control:ve.default.createElement(De.Radio,null),checked:v===_,label:_})))),ve.default.createElement(qr.FileSelector,{location:i,name:"Path to MAF tabix",rootModel:w,setLocation:_=>{o(_)}}),ve.default.createElement(qr.FileSelector,{location:a,name:"Path to MAF tabix index",rootModel:w,setLocation:_=>{u(_)}})):ve.default.createElement(ve.default.Fragment,null,ve.default.createElement(qr.FileSelector,{location:i,name:"Path to TAF.gz (Bgzipped TAF)",rootModel:w,setLocation:_=>{o(_)}}),ve.default.createElement(qr.FileSelector,{location:a,name:"Path to TAF.gz.tai (TAF index)",rootModel:w,setLocation:_=>{u(_)}}))),ve.default.createElement("div",null,ve.default.createElement(qr.FileSelector,{location:l,name:"Path to newick tree (.nh)",rootModel:w,setLocation:_=>{s(_)}}),ve.default.createElement(De.TextField,{multiline:!0,rows:10,value:r,onChange:_=>{n(_.target.value)},helperText:"Sample names (optional if .nh supplied, required if not)",placeholder:"Enter sample names from the MAF file, one per line, or JSON formatted array of samples",variant:"outlined",fullWidth:!0})),ve.default.createElement(De.TextField,{value:d,helperText:"Track name",onChange:_=>{p(_.target.value)}}),ve.default.createElement(De.Button,{variant:"contained",className:t.submit,onClick:()=>{try{let _=(0,so.getSession)(e),x=[];try{x=JSON.parse(r)}catch{x=r.split(/\n|\r\n|\r/)}let S=[`${d.toLowerCase().replaceAll(" ","_")}-${Date.now()}`,_.adminMode?"":"-sessionTrack"].join("");(0,so.isSessionWithAddTracks)(_)&&(_.addTrackConf({trackId:S,type:"MafTrack",name:d,assemblyNames:[e.assembly],adapter:m==="BigMafAdapter"?{type:m,bigBedLocation:i,samples:x,nhLocation:l}:m==="MafTabixAdapter"?{type:m,bedGzLocation:i,nhLocation:l,index:{indexType:v,location:a},samples:x}:{type:m,tafGzLocation:i,taiLocation:a,nhLocation:l,samples:x}}),e.view?.showTrack(S)),e.clearData(),(0,so.isSessionModelWithWidgets)(_)&&_.hideWidget(e)}catch(_){f(_)}}},"Submit"))}function ih(e){e.addAddTrackWorkflowType(()=>new Y0.AddTrackWorkflowType({name:"MAF track",ReactComponent:nh,stateModel:X0.types.model({})}))}var QR=L(ub()),eP=L(vb()),Hu=class extends eP.default{name="MafGetSamples";async execute(t,r){let n=this.pluginManager,i=await this.deserializeArguments(t,r),{regions:o,adapterConfig:a,sessionId:u}=i,{dataAdapter:l}=await(0,QR.getAdapter)(n,u,a);return l.getSamples(o,i)}};function bb(e){e.addRpcMethod(()=>new Hu(e))}var rP=L(ub()),nP=L(vb());function tP({regions:e,showAllLetters:t,samples:r,features:n}){let i=e[0],o=new Map(r.map((l,s)=>[l.id,s])),a=i.end-i.start,u=r.map(()=>"-".repeat(a));for(let l of n.values()){let s=l.get("start"),c=l.get("alignments"),f=l.get("seq");for(let[d,p]of Object.entries(c)){let h=p.seq,v=o.get(d);if(v!==void 0){for(let y=0,w=0,_=h.length;y<_;y++)if(f[y]!=="-"){if(h[y]==="-"){let x=s+w-i.start;x>=0&&x<a&&(u[v]=u[v].slice(0,x)+"-"+u[v].slice(x+1))}w++}if(!t){for(let y=0,w=0,_=h.length;y<_;y++)if(f[y]!=="-"){let x=h[y],S=s+w-i.start;S>=0&&S<a&&f[y]===x&&x!=="-"&&x!==" "&&(u[v]=u[v].slice(0,S)+"."+u[v].slice(S+1)),w++}}for(let y=0,w=0,_=h.length;y<_;y++){let x=h[y];if(f[y]!=="-"){if(x!=="-"){let S=s+w-i.start;S>=0&&S<a&&(f[y]!==x&&x!==" "||t)&&(u[v]=u[v].slice(0,S)+x+u[v].slice(S+1))}w++}}}}}return u}var Vu=class extends nP.default{name="MafGetSequences";async execute(t,r){let n=await this.deserializeArguments(t,r),{samples:i,regions:o,adapterConfig:a,sessionId:u,showAllLetters:l}=n,s=(await(0,rP.getAdapter)(this.pluginManager,u,a)).dataAdapter,c=await Gn(s.getFeatures(o[0],n).pipe($n()));return tP({features:new Map(c.map(f=>[f.id(),f])),samples:i,regions:o,showAllLetters:l})}};function gb(e){e.addRpcMethod(()=>new Vu(e))}var cP=L(Gr());var iP=L(Nd()),da=L(ct()),oP=L(Dd()),aP=L(Bd()),uP=L(ht());var Gu=class extends iP.BaseFeatureDataAdapter{setupP;async setupPre(){if(!this.getSubAdapter)throw new Error("no getSubAdapter available");return{adapter:(await this.getSubAdapter({...(0,uP.getSnapshot)(this.config),type:"BedTabixAdapter"})).dataAdapter}}async setupPre2(){return this.setupP||(this.setupP=this.setupPre().catch(t=>{throw this.setupP=void 0,t})),this.setupP}async setup(t){let{statusCallback:r=()=>{}}=t||{};return(0,da.updateStatus)("Downloading index",r,()=>this.setupPre2())}async getRefNames(t){let{adapter:r}=await this.setup(t);return r.getRefNames()}async getHeader(t){let{adapter:r}=await this.setup(t);return r.getHeader()}getFeatures(t,r){let{statusCallback:n=()=>{}}=r||{};return(0,aP.ObservableCreate)(async i=>{let{adapter:o}=await this.setup(r),a=await(0,da.updateStatus)("Downloading alignments",n,()=>Gn(o.getFeatures(t).pipe($n())));await(0,da.updateStatus)("Processing alignments",n,()=>{let u="",l=this.getConf("refAssemblyName");for(let s of a){let c=s.get("field5").split(","),f={},d=c.length;for(let p=0;p<d;p++){let h=c[p].split(":"),[v,y,w,_,x,S]=h;if(!v||!S)continue;let E,R,T=v.indexOf(".");if(T===-1)E=v,R="";else{let C=v.indexOf(".",T+1);if(C===-1)E=v.slice(0,Math.max(0,T)),R=v.slice(Math.max(0,T+1));else{let M=v.slice(T+1,C);M.length>0&&!Number.isNaN(+M)?(E=v.slice(0,Math.max(0,C)),R=v.slice(Math.max(0,C+1))):(E=v.slice(0,Math.max(0,T)),R=v.slice(Math.max(0,T+1)))}}E&&(u||(u=E),f[E]={chr:R,start:+y,srcSize:+w,strand:_==="-"?-1:1,unknown:+x,seq:S})}i.next(new da.SimpleFeature({id:s.id(),data:{start:s.get("start"),end:s.get("end"),refName:s.get("refName"),name:s.get("name"),score:s.get("score"),alignments:f,seq:f[l||t.assemblyName]?.seq||f[u]?.seq}}))}}),i.complete()})}async getSamples(t){let r=this.getConf("nhLocation"),n=r.uri==="/path/to/my.nh"?void 0:await(0,oP.openLocation)(r).readFile("utf8");return{samples:zi(this.getConf("samples")),tree:n?ba(n):void 0}}freeResources(){}};var yb=L(Kn());var kK=(0,yb.ConfigurationSchema)("MafTabixAdapter",{samples:{type:"frozen",description:"string[] or {id:string,label:string,color?:string}[]",defaultValue:[]},bedGzLocation:{type:"fileLocation",defaultValue:{uri:"/path/to/my.bed.gz.tbi",locationType:"UriLocation"}},refAssemblyName:{type:"string",defaultValue:""},index:(0,yb.ConfigurationSchema)("Index",{location:{type:"fileLocation",defaultValue:{uri:"/path/to/my.bed.gz.tbi"}},indexType:{type:"string",defaultValue:"TBI"}}),nhLocation:{type:"fileLocation",description:"newick tree",defaultValue:{uri:"/path/to/my.nh",locationType:"UriLocation"}}},{explicitlyTyped:!0,preProcessSnapshot:e=>e.uri?{...e,...e.nhUri?{nhLocation:{uri:e.nhUri,baseUri:e.baseUri}}:{},bedGzLocation:{uri:e.uri,baseUri:e.baseUri},index:{location:{uri:`${e.uri}.tbi`,baseUri:e.baseUri}}}:e}),sP=kK;function _b(e){return e.addAdapterType(()=>new cP.AdapterType({name:"MafTabixAdapter",AdapterClass:Gu,configSchema:sP}))}var jd=L(Gr());var lP=L(Kn()),fP=L(Gr());function wb(e){return(0,lP.ConfigurationSchema)("MafTrack",{},{baseConfiguration:(0,fP.createBaseTrackConfig)(e),explicitIdentifier:"trackId"})}function xb(e){return e.addTrackType(()=>{let t=wb(e);return new jd.TrackType({name:"MafTrack",configSchema:t,displayName:"MAF track",stateModel:(0,jd.createBaseTrackModel)(e,"MafTrack",t)})})}var Fd=class extends dP.default{name="MafViewerPlugin";version=Pb;install(t){Zd(t),xb(t),Yp(t),rh(t),_b(t),ih(t),gb(t),bb(t)}configure(t){}};return Ab(qK);})();
|
|
8
|
+
`);i(S)}catch(s){console.error(s),l(s)}finally{a(!1)}})()},[e,t,r]),{sequence:n,loading:o,error:u}}var CP=(0,dg.makeStyles)()({dialogContent:{width:"80em"},textAreaInput:{fontFamily:"monospace",whiteSpace:"pre",overflowX:"auto"},ml:{marginLeft:10}}),kP=(0,fg.observer)(function({onClose:e,model:t,selectionCoords:r}){let[n,i]=(0,$e.useState)(!0),{classes:o}=CP(),{sequence:a,loading:u,error:l}=lg({model:t,selectionCoords:r,showAllLetters:n}),s=a?a.length>1e6:!1;return $e.default.createElement(Vi.Dialog,{open:!0,onClose:e,title:"Subsequence Data",maxWidth:"xl"},$e.default.createElement(mt.DialogContent,null,$e.default.createElement("div",{style:{display:"flex",alignItems:"center",marginBottom:"16px"}},$e.default.createElement(mt.ToggleButtonGroup,{value:n,exclusive:!0,size:"small",onChange:(c,f)=>{f!==null&&i(f)}},$e.default.createElement(mt.ToggleButton,{value:!0},"Show All Letters"),$e.default.createElement(mt.ToggleButton,{value:!1},"Show Only Differences")),$e.default.createElement("div",{style:{flexGrow:1}}),$e.default.createElement(mt.Button,{variant:"contained",color:"primary",disabled:u||!a,onClick:()=>{(async()=>{try{await navigator.clipboard.writeText(a),(0,_a.getSession)(t).notify("Sequence copied to clipboard","info")}catch(c){console.error(c),(0,_a.getSession)(t).notifyError(`${c}`,c)}})()}},"Copy to Clipboard"),$e.default.createElement(mt.Button,{variant:"contained",color:"secondary",disabled:u||!a,onClick:()=>{try{let c=URL.createObjectURL(new Blob([a],{type:"text/plain"})),f=document.createElement("a");f.href=c,f.download="sequence.fasta",document.body.append(f),f.click(),f.remove(),URL.revokeObjectURL(c),(0,_a.getSession)(t).notify("Sequence downloaded","info")}catch(c){console.error(c),(0,_a.getSession)(t).notifyError(`${c}`,c)}}},"Download")),l?$e.default.createElement(Vi.ErrorMessage,{error:l}):$e.default.createElement($e.default.Fragment,null,u?$e.default.createElement(Vi.LoadingEllipses,null):null,$e.default.createElement(mt.TextField,{variant:"outlined",multiline:!0,minRows:5,maxRows:10,disabled:s,className:o.dialogContent,fullWidth:!0,value:u?"Loading...":s?"Reference sequence too large to display, use the download FASTA button":a,slotProps:{input:{readOnly:!0,classes:{input:o.textAreaInput}}}}))),$e.default.createElement(mt.DialogActions,null,$e.default.createElement(mt.Button,{color:"primary",variant:"outlined",onClick:e},"Close")))}),pg=kP;var zp=L(qe()),P_=L(Kr()),M_=L(T_()),C_=L(ct()),k_=L(cr());var oo=L(ct());function Fs(e,t){return e==null||t==null?NaN:e<t?-1:e>t?1:e>=t?0:NaN}function Ls(e,t){let r;if(t===void 0)for(let n of e)n!=null&&(r<n||r===void 0&&n>=n)&&(r=n);else{let n=-1;for(let i of e)(i=t(i,++n,e))!=null&&(r<i||r===void 0&&i>=i)&&(r=i)}return r}function R_(e,t,r){let n=[];if(t)n.push(`Start: ${t.refName}:${(0,oo.toLocale)(t.coord)}`,`End: ${r.refName}:${(0,oo.toLocale)(r.coord)}`,`Length: ${(0,oo.getBpDisplayStr)(Math.abs(t.coord-r.coord))}`);else if(n.push(`Ref: ${r.refName}:${(0,oo.toLocale)(r.coord)}`),e){let{base:i,sampleId:o,pos:a,chr:u}=e,l=20,s=i.length,c=s>1?` ${s}bp`:"",f=i.length>l?i.slice(0,l)+"...":i;n.push(`Alt ${o}: ${u}:${a.toLocaleString("en-US")} (${f}${c})`)}return n.filter(i=>!!i).join("<br/>")}function Dp(e){return(e.data.length||0)+(e.children&&Ls(e.children,Dp)||0)}function Bp(e,t,r){e.len=(t+=Math.max(e.data.length||0,0))*r,e.children&&e.children.forEach(n=>{Bp(n,t,r)})}var NC=(0,k_.observer)(function({model:e,mouseX:t,origMouseX:r}){let{hoveredInfo:n}=e,i=(0,C_.getContainingView)(e),o=r?i.pxToBp(r):void 0,a=i.pxToBp(t);return n?zp.default.createElement(M_.default,null,zp.default.createElement(P_.SanitizedHTML,{html:R_(n,o,a)})):null}),q_=NC;Hp();var HC=(0,Y_.observer)(function(e){let{model:t}=e,{pluginManager:r}=(0,Bs.getEnv)(t),{rowHeight:n,height:i,scrollTop:o,samples:a}=t,u=(0,je.useRef)(null),l=(0,K_.useTheme)(),s=r.getPlugin("LinearGenomeViewPlugin"),{BaseLinearDisplayComponent:c}=s.exports,[f,d]=(0,je.useState)(),[p,m]=(0,je.useState)(),[h,v]=(0,je.useState)(!1),[y,w]=(0,je.useState)(),[_,x]=(0,je.useState)(),[S,E]=(0,je.useState)(!1),[R,T]=(0,je.useState)(),[C,M]=(0,je.useState)(!1),[q,z]=(0,je.useState)(),{width:D}=(0,Bs.getContainingView)(t),A=P=>{let U=u.current?.getBoundingClientRect()?.left||0,ye=P.clientX-U;E(!1),v(!0),w(ye),x(ye),P.stopPropagation()},I=P=>{let F=u.current?.getBoundingClientRect(),U=F?.top||0,ye=F?.left||0,J=P.clientX-ye,G=P.clientY-U;d(G),m(J),h&&x(J)},W=P=>{h&&y!==void 0&&_!==void 0&&(Math.abs(_-y)>=2?(T({coord:[P.clientX,P.clientY],dragEndX:P.clientX,dragStartX:y}),E(!0)):j()),v(!1)},j=()=>{E(!1),w(void 0),x(void 0)};return(0,je.useEffect)(()=>{let P=U=>{U.key==="Escape"&&S&&j()},F=U=>{u.current&&!u.current.contains(U.target)&&S&&j()};return document.addEventListener("keydown",P),document.addEventListener("click",F),()=>{document.removeEventListener("keydown",P),document.removeEventListener("click",F)}},[S,j]),je.default.createElement("div",{ref:u,onMouseDown:A,onMouseMove:I,onMouseUp:W,onDoubleClick:()=>{S&&j()},onMouseLeave:()=>{d(void 0),m(void 0),v(!1)}},je.default.createElement(c,{...e}),je.default.createElement(Ds,{model:t}),f&&p&&a&&!R&&!C?je.default.createElement("div",{style:{position:"relative"}},je.default.createElement(ug,{width:D,height:i,scrollTop:o,mouseX:p,mouseY:f}),je.default.createElement(q_,{model:t,mouseX:p,mouseY:f,origMouseX:y,rowHeight:n,sources:a})):null,(h||S)&&y!==void 0&&_!==void 0?je.default.createElement("div",{style:{position:"absolute",left:Math.min(y,_),top:0,width:Math.abs(_-y),height:i,backgroundColor:"rgba(0, 0, 255, 0.2)",border:"1px solid rgba(0, 0, 255, 0.5)",pointerEvents:"none"}}):null,je.default.createElement($_.Menu,{open:!!R,onMenuItemClick:(P,F)=>{F(),T(void 0)},onClose:()=>{T(void 0)},slotProps:{transition:{onExit:()=>{T(void 0)}}},anchorReference:"anchorPosition",anchorPosition:R?{top:R.coord[1],left:R.coord[0]}:void 0,style:{zIndex:l.zIndex.tooltip},menuItems:[{label:"View subsequence",onClick:()=>{R&&(z({dragStartX:R.dragStartX,dragEndX:R.dragEndX}),M(!0),T(void 0))}}]}),C?je.default.createElement(pg,{model:t,selectionCoords:q,onClose:()=>{M(!1),z(void 0)}}):null)}),X_=HC;var Z_=L(Kn());function Vp(e){let t=e.getPlugin("LinearGenomeViewPlugin"),{baseLinearDisplayConfigSchema:r}=t.exports;return(0,Z_.ConfigurationSchema)("LinearMafDisplay",{renderer:e.pluggableConfigSchemaType("renderer")},{baseConfiguration:r,explicitlyTyped:!0})}var x0=L(qe()),Ws=L(Kn()),dr=L(ct()),S0=L(Jd());function VC(e,t){return e.parent===t.parent?1:2}function GC(e){return e.reduce($C,0)/e.length}function $C(e,t){return e+t.x}function KC(e){return 1+e.reduce(YC,0)}function YC(e,t){return Math.max(e,t.y)}function XC(e){for(var t;t=e.children;)e=t[0];return e}function ZC(e){for(var t;t=e.children;)e=t[t.length-1];return e}function Gp(){var e=VC,t=1,r=1,n=!1;function i(o){var a,u=0;o.eachAfter(function(d){var p=d.children;p?(d.x=GC(p),d.y=KC(p)):(d.x=a?u+=e(d,a):0,d.y=0,a=d)});var l=XC(o),s=ZC(o),c=l.x-e(l,s)/2,f=s.x+e(s,l)/2;return o.eachAfter(n?function(d){d.x=(d.x-o.x)*t,d.y=(o.y-d.y)*r}:function(d){d.x=(d.x-c)/(f-c)*t,d.y=(1-(o.y?d.y/o.y:1))*r})}return i.separation=function(o){return arguments.length?(e=o,i):e},i.size=function(o){return arguments.length?(n=!1,t=+o[0],r=+o[1],i):n?null:[t,r]},i.nodeSize=function(o){return arguments.length?(n=!0,t=+o[0],r=+o[1],i):n?[t,r]:null},i}function JC(e){var t=0,r=e.children,n=r&&r.length;if(!n)t=1;else for(;--n>=0;)t+=r[n].value;e.value=t}function J_(){return this.eachAfter(JC)}function Q_(e,t){let r=-1;for(let n of this)e.call(t,n,++r,this);return this}function e0(e,t){for(var r=this,n=[r],i,o,a=-1;r=n.pop();)if(e.call(t,r,++a,this),i=r.children)for(o=i.length-1;o>=0;--o)n.push(i[o]);return this}function t0(e,t){for(var r=this,n=[r],i=[],o,a,u,l=-1;r=n.pop();)if(i.push(r),o=r.children)for(a=0,u=o.length;a<u;++a)n.push(o[a]);for(;r=i.pop();)e.call(t,r,++l,this);return this}function r0(e,t){let r=-1;for(let n of this)if(e.call(t,n,++r,this))return n}function n0(e){return this.eachAfter(function(t){for(var r=+e(t.data)||0,n=t.children,i=n&&n.length;--i>=0;)r+=n[i].value;t.value=r})}function i0(e){return this.eachBefore(function(t){t.children&&t.children.sort(e)})}function o0(e){for(var t=this,r=QC(t,e),n=[t];t!==r;)t=t.parent,n.push(t);for(var i=n.length;e!==r;)n.splice(i,0,e),e=e.parent;return n}function QC(e,t){if(e===t)return e;var r=e.ancestors(),n=t.ancestors(),i=null;for(e=r.pop(),t=n.pop();e===t;)i=e,e=r.pop(),t=n.pop();return i}function a0(){for(var e=this,t=[e];e=e.parent;)t.push(e);return t}function u0(){return Array.from(this)}function s0(){var e=[];return this.eachBefore(function(t){t.children||e.push(t)}),e}function c0(){var e=this,t=[];return e.each(function(r){r!==e&&t.push({source:r.parent,target:r})}),t}function*l0(){var e=this,t,r=[e],n,i,o;do for(t=r.reverse(),r=[];e=t.pop();)if(yield e,n=e.children)for(i=0,o=n.length;i<o;++i)r.push(n[i]);while(r.length)}function ao(e,t){e instanceof Map?(e=[void 0,e],t===void 0&&(t=rk)):t===void 0&&(t=tk);for(var r=new Ca(e),n,i=[r],o,a,u,l;n=i.pop();)if((a=t(n.data))&&(l=(a=Array.from(a)).length))for(n.children=a,u=l-1;u>=0;--u)i.push(o=a[u]=new Ca(a[u])),o.parent=n,o.depth=n.depth+1;return r.eachBefore(ik)}function ek(){return ao(this).eachBefore(nk)}function tk(e){return e.children}function rk(e){return Array.isArray(e)?e[1]:null}function nk(e){e.data.value!==void 0&&(e.value=e.data.value),e.data=e.data.data}function ik(e){var t=0;do e.height=t;while((e=e.parent)&&e.height<++t)}function Ca(e){this.data=e,this.depth=this.height=0,this.parent=null}Ca.prototype=ao.prototype={constructor:Ca,count:J_,each:Q_,eachAfter:t0,eachBefore:e0,find:r0,sum:n0,sort:i0,path:o0,ancestors:a0,descendants:u0,leaves:s0,links:c0,copy:ek,[Symbol.iterator]:l0};var $p=L(d0()),O0=L(zs()),on=L(ht());var ck=(0,x0.lazy)(()=>Promise.resolve().then(()=>(g0(),b0)));function Kp(e,t){let r=t.getPlugin("LinearGenomeViewPlugin"),{BaseLinearDisplay:n}=r.exports;return on.types.compose("LinearMafDisplay",n,on.types.model({type:on.types.literal("LinearMafDisplay"),configuration:(0,Ws.ConfigurationReference)(e),rowHeight:15,rowProportion:.8,showAllLetters:!1,mismatchRendering:!0,showBranchLen:!1,treeAreaWidth:80,showAsUpperCase:!0})).volatile(()=>({hoveredInfo:void 0,prefersOffset:!0,volatileSamples:void 0,volatileTree:void 0})).actions(i=>({setHoveredInfo(o){i.hoveredInfo=o},setRowHeight(o){i.rowHeight=o},setRowProportion(o){i.rowProportion=o},setShowAllLetters(o){i.showAllLetters=o},setMismatchRendering(o){i.mismatchRendering=o},setSamples({samples:o,tree:a}){(0,$p.default)(o,i.volatileSamples)||(i.volatileSamples=o),(0,$p.default)(a,i.volatileTree)||(i.volatileTree=a)},setShowAsUpperCase(o){i.showAsUpperCase=o}})).views(i=>({get rendererTypeName(){return"LinearMafRenderer"},get rendererConfig(){let a=(0,Ws.getConf)(i,["renderer"])||{};return i.rendererType.configSchema.create({...a,type:"LinearMafRenderer"},(0,dr.getEnv)(i))}})).views(i=>({get root(){return i.volatileTree?ao(i.volatileTree,o=>o.children).sum(o=>o.children?0:1).sort((o,a)=>Fs(o.data.length||1,a.data.length||1)):void 0}})).views(i=>({get hierarchy(){let o=i.root;if(o){let a=i.treeAreaWidth;return Gp().size([this.totalHeight,a]).separation(()=>1)(o),Bp(o,o.data.length=0,a/Dp(o)),o}else return},get samples(){if(this.rowNames){let o=i.volatileSamples?Object.fromEntries(i.volatileSamples.map(a=>[a.id,a])):void 0;return zi(this.rowNames).map(a=>({...a,label:o?.[a.id]?.label||a.label,color:o?.[a.id]?.color||a.color}))}else return i.volatileSamples},get totalHeight(){return this.samples?this.samples.length*i.rowHeight:1},get leaves(){return i.root?.leaves()},get rowNames(){return this.leaves?.map(o=>o.data.name)}})).views(i=>{let{trackMenuItems:o,renderProps:a}=i;return{get treeWidth(){return i.hierarchy?i.treeAreaWidth:0},renderProps(){let{showAllLetters:u,rendererConfig:l,samples:s,rowHeight:c,rowProportion:f,mismatchRendering:d,showAsUpperCase:p}=i;return{...a(),notReady:!i.volatileSamples&&!i.volatileTree||super.notReady,config:l,samples:s,rowHeight:c,rowProportion:f,showAllLetters:u,mismatchRendering:d,showAsUpperCase:p}},trackMenuItems(){return[...o(),{label:"Set feature height",type:"subMenu",subMenu:[{label:"Normal",onClick:()=>{i.setRowHeight(15),i.setRowProportion(.8)}},{label:"Compact",onClick:()=>{i.setRowHeight(8),i.setRowProportion(.9)}},{label:"Manually set height",onClick:()=>{(0,dr.getSession)(i).queueDialog(u=>[ck,{model:i,handleClose:u}])}}]},{label:"Use upper-case",type:"checkbox",checked:i.showAsUpperCase,onClick:()=>{i.setShowAsUpperCase(!i.showAsUpperCase)}},{label:"Show all letters",type:"checkbox",checked:i.showAllLetters,onClick:()=>{i.setShowAllLetters(!i.showAllLetters)}},{label:"Draw mismatches as single color",type:"checkbox",checked:!i.mismatchRendering,onClick:()=>{i.setMismatchRendering(!i.mismatchRendering)}}]}}}).views(i=>({get svgFontSize(){return Math.min(Math.max(i.rowHeight,8),14)},get canDisplayLabel(){return i.rowHeight>=7},get labelWidth(){return(0,dr.max)(i.samples?.map(a=>(0,dr.measureText)(a.label,this.svgFontSize)).map(a=>this.canDisplayLabel?a:20)||[],0)}})).actions(i=>({afterCreate(){(0,on.addDisposer)(i,(0,O0.autorun)(async()=>{try{let{rpcManager:o}=(0,dr.getSession)(i),a=(0,S0.getRpcSessionId)(i);i.setSamples(await o.call(a,"MafGetSamples",{sessionId:a,adapterConfig:i.adapterConfig,statusCallback:u=>{(0,on.isAlive)(i)&&i.setMessage(u)}}))}catch(o){console.error(o),(0,dr.getSession)(i).notifyError(`${o}`,o)}}))}})).actions(i=>{let{renderSvg:o}=i;return{async renderSvg(a){let{renderSvg:u}=await Promise.resolve().then(()=>(w0(),_0));return u(i,a,o)}}})}function Yp(e){e.addDisplayType(()=>{let t=Vp(e),r=Kp(t,e);return new E0.DisplayType({name:"LinearMafDisplay",configSchema:t,stateModel:r,ReactComponent:X_,viewType:"LinearGenomeView",trackType:"MafTrack",displayName:"MAF display"})})}var z0=L(Gr()),Gs=L(ct());var D0=L(Kr());var ka=class{constructor(){this.ids=[],this.values=[],this.length=0}clear(){this.length=0}push(t,r){let n=this.length++;for(;n>0;){let i=n-1>>1,o=this.values[i];if(r>=o)break;this.ids[n]=this.ids[i],this.values[n]=o,n=i}this.ids[n]=t,this.values[n]=r}pop(){if(this.length===0)return;let t=this.ids,r=this.values,n=t[0],i=--this.length;if(i>0){let o=t[i],a=r[i],u=0,l=i>>1;for(;u<l;){let s=(u<<1)+1,c=s+1,f=s+(+(c<i)&+(r[c]<r[s]));if(r[f]>=a)break;t[u]=t[f],r[u]=r[f],u=f}t[u]=o,r[u]=a}return n}peek(){return this.length>0?this.ids[0]:void 0}peekValue(){return this.length>0?this.values[0]:void 0}shrink(){this.ids.length=this.values.length=this.length}};var A0=[Int8Array,Uint8Array,Uint8ClampedArray,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array],Xp=3,ai=class e{static from(t,r=0){if(r%8!==0)throw new Error("byteOffset must be 8-byte aligned.");if(!t||t.byteLength===void 0||t.buffer)throw new Error("Data must be an instance of ArrayBuffer or SharedArrayBuffer.");let[n,i]=new Uint8Array(t,r+0,2);if(n!==251)throw new Error("Data does not appear to be in a Flatbush format.");let o=i>>4;if(o!==Xp)throw new Error(`Got v${o} data when expected v${Xp}.`);let a=A0[i&15];if(!a)throw new Error("Unrecognized array type.");let[u]=new Uint16Array(t,r+2,1),[l]=new Uint32Array(t,r+4,1);return new e(l,u,a,void 0,t,r)}constructor(t,r=16,n=Float64Array,i=ArrayBuffer,o,a=0){if(t===void 0)throw new Error("Missing required argument: numItems.");if(isNaN(t)||t<=0)throw new Error(`Unexpected numItems value: ${t}.`);this.numItems=+t,this.nodeSize=Math.min(Math.max(+r,2),65535),this.byteOffset=a;let u=t,l=u;this._levelBounds=[u*4];do u=Math.ceil(u/this.nodeSize),l+=u,this._levelBounds.push(l*4);while(u!==1);this.ArrayType=n,this.IndexArrayType=l<16384?Uint16Array:Uint32Array;let s=A0.indexOf(n),c=l*4*n.BYTES_PER_ELEMENT;if(s<0)throw new Error(`Unexpected typed array class: ${n}.`);if(o)this.data=o,this._boxes=new n(o,a+8,l*4),this._indices=new this.IndexArrayType(o,a+8+c,l),this._pos=l*4,this.minX=this._boxes[this._pos-4],this.minY=this._boxes[this._pos-3],this.maxX=this._boxes[this._pos-2],this.maxY=this._boxes[this._pos-1];else{let f=this.data=new i(8+c+l*this.IndexArrayType.BYTES_PER_ELEMENT);this._boxes=new n(f,8,l*4),this._indices=new this.IndexArrayType(f,8+c,l),this._pos=0,this.minX=1/0,this.minY=1/0,this.maxX=-1/0,this.maxY=-1/0,new Uint8Array(f,0,2).set([251,(Xp<<4)+s]),new Uint16Array(f,2,1)[0]=r,new Uint32Array(f,4,1)[0]=t}this._queue=new ka}add(t,r,n=t,i=r){let o=this._pos>>2,a=this._boxes;return this._indices[o]=o,a[this._pos++]=t,a[this._pos++]=r,a[this._pos++]=n,a[this._pos++]=i,t<this.minX&&(this.minX=t),r<this.minY&&(this.minY=r),n>this.maxX&&(this.maxX=n),i>this.maxY&&(this.maxY=i),o}finish(){if(this._pos>>2!==this.numItems)throw new Error(`Added ${this._pos>>2} items when expected ${this.numItems}.`);let t=this._boxes;if(this.numItems<=this.nodeSize){t[this._pos++]=this.minX,t[this._pos++]=this.minY,t[this._pos++]=this.maxX,t[this._pos++]=this.maxY;return}let r=this.maxX-this.minX||1,n=this.maxY-this.minY||1,i=new Uint32Array(this.numItems),o=65535;for(let a=0,u=0;a<this.numItems;a++){let l=t[u++],s=t[u++],c=t[u++],f=t[u++],d=Math.floor(o*((l+c)/2-this.minX)/r),p=Math.floor(o*((s+f)/2-this.minY)/n);i[a]=fk(d,p)}Zp(i,t,this._indices,0,this.numItems-1,this.nodeSize);for(let a=0,u=0;a<this._levelBounds.length-1;a++){let l=this._levelBounds[a];for(;u<l;){let s=u,c=t[u++],f=t[u++],d=t[u++],p=t[u++];for(let m=1;m<this.nodeSize&&u<l;m++)c=Math.min(c,t[u++]),f=Math.min(f,t[u++]),d=Math.max(d,t[u++]),p=Math.max(p,t[u++]);this._indices[this._pos>>2]=s,t[this._pos++]=c,t[this._pos++]=f,t[this._pos++]=d,t[this._pos++]=p}}}search(t,r,n,i,o){if(this._pos!==this._boxes.length)throw new Error("Data not yet indexed - call index.finish().");let a=this._boxes.length-4,u=[],l=[];for(;a!==void 0;){let s=Math.min(a+this.nodeSize*4,T0(a,this._levelBounds));for(let c=a;c<s;c+=4){let f=this._boxes[c];if(n<f)continue;let d=this._boxes[c+1];if(i<d)continue;let p=this._boxes[c+2];if(t>p)continue;let m=this._boxes[c+3];if(r>m)continue;let h=this._indices[c>>2]|0;a>=this.numItems*4?u.push(h):(o===void 0||o(h,f,d,p,m))&&l.push(h)}a=u.pop()}return l}neighbors(t,r,n=1/0,i=1/0,o){if(this._pos!==this._boxes.length)throw new Error("Data not yet indexed - call index.finish().");let a=this._boxes.length-4,u=this._queue,l=[],s=i*i;e:for(;a!==void 0;){let c=Math.min(a+this.nodeSize*4,T0(a,this._levelBounds));for(let f=a;f<c;f+=4){let d=this._indices[f>>2]|0,p=this._boxes[f],m=this._boxes[f+1],h=this._boxes[f+2],v=this._boxes[f+3],y=t<p?p-t:t>h?t-h:0,w=r<m?m-r:r>v?r-v:0,_=y*y+w*w;_>s||(a>=this.numItems*4?u.push(d<<1,_):(o===void 0||o(d))&&u.push((d<<1)+1,_))}for(;u.length&&u.peek()&1;)if(u.peekValue()>s||(l.push(u.pop()>>1),l.length===n))break e;a=u.length?u.pop()>>1:void 0}return u.clear(),l}};function T0(e,t){let r=0,n=t.length-1;for(;r<n;){let i=r+n>>1;t[i]>e?n=i:r=i+1}return t[r]}function Zp(e,t,r,n,i,o){if(Math.floor(n/o)>=Math.floor(i/o))return;let a=e[n],u=e[n+i>>1],l=e[i],s=l,c=Math.max(a,u);l>c?s=c:c===a?s=Math.max(u,l):c===u&&(s=Math.max(a,l));let f=n-1,d=i+1;for(;;){do f++;while(e[f]<s);do d--;while(e[d]>s);if(f>=d)break;lk(e,t,r,f,d)}Zp(e,t,r,n,d,o),Zp(e,t,r,d+1,i,o)}function lk(e,t,r,n,i){let o=e[n];e[n]=e[i],e[i]=o;let a=4*n,u=4*i,l=t[a],s=t[a+1],c=t[a+2],f=t[a+3];t[a]=t[u],t[a+1]=t[u+1],t[a+2]=t[u+2],t[a+3]=t[u+3],t[u]=l,t[u+1]=s,t[u+2]=c,t[u+3]=f;let d=r[n];r[n]=r[i],r[i]=d}function fk(e,t){let r=e^t,n=65535^r,i=65535^(e|t),o=e&(t^65535),a=r|n>>1,u=r>>1^r,l=i>>1^n&o>>1^i,s=r&i>>1^o>>1^o;r=a,n=u,i=l,o=s,a=r&r>>2^n&n>>2,u=r&n>>2^n&(r^n)>>2,l^=r&i>>2^n&o>>2,s^=n&i>>2^(r^n)&o>>2,r=a,n=u,i=l,o=s,a=r&r>>4^n&n>>4,u=r&n>>4^n&(r^n)>>4,l^=r&i>>4^n&o>>4,s^=n&i>>4^(r^n)&o>>4,r=a,n=u,i=l,o=s,l^=r&i>>8^n&o>>8,s^=n&i>>8^(r^n)&o>>8,r=l^l>>1,n=s^s>>1;let c=e^t,f=n|65535^(c|r);return c=(c|c<<8)&16711935,c=(c|c<<4)&252645135,c=(c|c<<2)&858993459,c=(c|c<<1)&1431655765,f=(f|f<<8)&16711935,f=(f|f<<4)&252645135,f=(f|f<<2)&858993459,f=(f|f<<1)&1431655765,(f<<1|c)>>>0}var R0="bold 10px Courier New,monospace";function ui(e,t,r=!1){return r||Math.abs(e-t.lastInsertedX)>.5}function si(e,t,r,n,i,o){e.spatialIndex.push(o),e.spatialIndexCoords.push(t,r,n,i),e.lastInsertedX=t}function P0(e,t,r,n,i){let{ctx:o,scale:a}=e,u=e.rowHeight/2;o.beginPath(),o.fillStyle="black";for(let l=0,s=0,c=t.length;l<c;l++)if(r[l]!=="-"){if(t[l]==="-"){let f=n+a*s;o.moveTo(f,i+u),o.lineTo(f+a+.4,i+u)}s++}o.stroke()}var Jp=L(ct());function M0(e){return Object.fromEntries(Object.entries(Qp(e)).map(([t,r])=>[t,e.palette.getContrastText(r)]))}function Qp(e){let{bases:t}=e.palette;return{a:t.A.main,c:t.C.main,g:t.G.main,t:t.T.main}}function Bt(e,t,r,n,i,o,a){t+n<0||t>o||(a&&(e.fillStyle=a),e.fillRect(t,r,n,i))}function Us(){let e=(0,Jp.measureText)("A"),t=(0,Jp.measureText)("M")-2;return{charWidth:e,charHeight:t}}function C0(e,t,r,n,i,o,a,u){if(e.showAllLetters)return;let{ctx:l,scale:s,h:c,canvasWidth:f}=e;l.fillStyle="lightgrey";for(let d=0,p=0,m=t.length;d<m;d++)if(r[d]!=="-"){let h=t[d],v=n+s*p;r[d]===h&&h!=="-"&&h!==" "&&(Bt(l,v,i,s+.4,c,f),ui(v,e)&&si(e,v,i,v+e.scale+.4,i+e.h,{pos:p+a,chr:u,base:h||"",sampleId:o})),p++}}function k0(e,t,r,n,i,o,a,u){let{ctx:l,scale:s,h:c,canvasWidth:f,showAllLetters:d,mismatchRendering:p,colorForBase:m}=e;for(let h=0,v=0,y=t.length;h<y;h++){let w=t[h];if(r[h]!=="-"){if(w!=="-"){let _=n+s*v;r[h]!==w&&w!==" "?(Bt(l,_,i,s+.4,c,f,p?m[w]??"black":"orange"),ui(_,e)&&si(e,_,i,_+e.scale+.4,i+e.h,{pos:v+a,chr:u,base:w,sampleId:o})):d&&(Bt(l,_,i,s+.4,c,f,p?m[w]??"black":"lightblue"),ui(_,e)&&si(e,_,i,_+e.scale+.4,i+e.h,{pos:v+a,chr:u,base:w,sampleId:o}))}v++}}}function hk(e,t){return t?e.toUpperCase():e}function q0(e,t,r,n,i,o){let{ctx:a,scale:u,hp2:l,rowHeight:s,showAllLetters:c,mismatchRendering:f,contrastForBase:d,showAsUpperCase:p}=e,{charHeight:m}=Us();if(u>=10){for(let h=0,v=0,y=t.length;h<y;h++)if(n[h]!=="-"){let w=i+u*v,_=(u-10)/2+1,x=t[h];(c||n[h]!==x)&&x!=="-"&&(a.fillStyle=f?d[x]??"white":"black",s>m&&a.fillText(hk(r[h]||"",p),w+_,l+o+3)),v++}}}var j0=L(ct());function F0(e,t,r,n,i,o,a,u,l){let{ctx:s,scale:c,h:f,canvasWidth:d,rowHeight:p}=e,{charHeight:m}=Us();for(let h=0,v=0,y=t.length;h<y;h++){let w="";for(;r[h]==="-";)t[h]!=="-"&&t[h]!==" "&&(w+=t[h]),h++;if(w.length>0){let _=n+c*v-1,x,S;if(w.length>10){let E=`${w.length}`;if(o>10)x=_-1,S=2,Bt(s,x,i,S,f,d,"purple");else if(f>m){let R=(0,j0.measureText)(E,10),T=2;x=_-R/2-T,S=R+2*T,Bt(s,x,i,S,f,d,"purple"),s.fillStyle="white",s.fillText(E,_-R/2,i+f*7/8)}else{let R=2;x=_-R,S=2*R,Bt(s,x,i,S,f,d,"purple")}}else x=_,S=1,Bt(s,x,i,S,f,d,"purple"),o<.2&&p>5&&(x=_-2,S=5,Bt(s,_-2,i,5,1,d),Bt(s,_-2,i+f-1,5,1,d));ui(x,e,!0)&&si(e,x,i,x+S,i+e.h,{pos:v+u,chr:l,base:w,sampleId:a,isInsertion:!0})}v++}}var th=L(ct());function L0(e,t,r,n,i){let[o]=(0,th.featureSpanPx)(e,t,r),a=e.get("alignments"),u=e.get("seq").toLowerCase();for(let[l,s]of Object.entries(a)){let c=n.get(l);if(c===void 0)continue;let f=s.seq,d=f.toLowerCase(),p=i.offset+i.rowHeight*c;P0(i,d,u,o,p),C0(i,d,u,o,p,c,s.start,s.chr),k0(i,d,u,o,p,c,s.start,s.chr),q0(i,d,f,u,o,p)}}function N0(e,t,r,n,i){let[o]=(0,th.featureSpanPx)(e,t,r),a=e.get("alignments"),u=e.get("seq").toLowerCase();for(let[l,s]of Object.entries(a)){let c=n.get(l);if(c===void 0)continue;let f=s.seq.toLowerCase(),d=i.offset+i.rowHeight*c;F0(i,f,u,o,d,r,c,s.start,s.chr)}}function B0({ctx:e,renderArgs:t}){let{regions:r,bpPerPx:n,rowHeight:i,showAllLetters:o,theme:a,mismatchRendering:u,samples:l,rowProportion:s,features:c,showAsUpperCase:f}=t,d=r[0],p=(d.end-d.start)/n,m=i*s,h=(0,D0.createJBrowseTheme)(a),v=Qp(h),y=M0(h),w=new Map(l.map((T,C)=>[T.id,C])),_=1/n,x=m/2,S=(i-m)/2;e.font=R0;let E={ctx:e,scale:_,canvasWidth:p,rowHeight:i,h:m,hp2:x,offset:S,colorForBase:v,contrastForBase:y,showAllLetters:o,mismatchRendering:u,showAsUpperCase:f,spatialIndex:[],spatialIndexCoords:[],lastInsertedX:-1/0};for(let T of c.values())L0(T,d,n,w,E);for(let T of c.values())N0(T,d,n,w,E);let R=new ai(E.spatialIndex.length||1);if(E.spatialIndex.length===0)R.add(0,0,1,1);else for(let T=0,C=E.spatialIndexCoords.length;T<C;T+=4)R.add(E.spatialIndexCoords[T],E.spatialIndexCoords[T+1],E.spatialIndexCoords[T+2],E.spatialIndexCoords[T+3]);return R.finish(),{flatbush:R.data,items:E.spatialIndex,samples:l}}var qa=class extends z0.FeatureRendererType{getExpandedRegion(t){let{start:r,end:n}=t,i=1;return{...t,start:Math.floor(Math.max(r-i,0)),end:Math.ceil(n+i)}}async render(t){let{statusCallback:r=()=>{},regions:n,bpPerPx:i,samples:o,rowHeight:a}=t,u=n[0],l=o.length*a+100,s=(u.end-u.start)/i,c=await this.getFeatures(t),f=await(0,Gs.updateStatus)("Rendering alignment",r,()=>(0,Gs.renderToAbstractCanvas)(s,l,t,p=>B0({ctx:p,renderArgs:{...t,features:c}})));return{...await super.render({...t,...f,width:s,height:l}),...f,features:new Map,width:s,height:l,containsNoTransferables:!0}}};var ci=L(qe()),W0=L(Kr());var U0=L(cr()),yk=(0,U0.observer)(function(e){let{items:t,displayModel:r,height:n,samples:i,flatbush:o}=e,a=(0,ci.useRef)(null),u=(0,ci.useMemo)(()=>ai.from(o),[o]);function l(s,c){let f=0,d=0;if(a.current){let m=a.current.getBoundingClientRect();f=s-m.left,d=c-m.top}let p=u.search(f,d,f+1,d+1);if(p.length){let m=p.find(y=>t[y]?.isInsertion),h=m!==void 0?t[m]:t[p[0]],v=i[h.sampleId];return{...h,sampleId:v?.label||v?.id||"unknown"}}else return}return ci.default.createElement("div",{ref:a,onMouseMove:s=>r.setHoveredInfo?.(l(s.clientX,s.clientY)),onMouseLeave:()=>{r.setHoveredInfo?.(void 0)},onMouseOut:()=>{r.setHoveredInfo?.(void 0)},style:{overflow:"visible",position:"relative",height:n}},ci.default.createElement(W0.PrerenderedCanvas,{...e,style:{position:"absolute",left:0}}))}),H0=yk;var V0=L(Kn());var _k=(0,V0.ConfigurationSchema)("LinearMafRenderer",{baseColor:{type:"color",defaultValue:"lightgrey"}},{explicitlyTyped:!0}),G0=_k;function rh(e){e.addRendererType(()=>new qa({name:"LinearMafRenderer",ReactComponent:H0,configSchema:G0,pluginManager:e}))}var Y0=L(Gr()),X0=L(ht());var ve=L(qe()),qr=L(Kr()),so=L(ct()),De=L(Wi()),$0=L(ht()),K0=L(Ui()),wk=(0,K0.makeStyles)()(e=>({textbox:{width:"100%"},paper:{margin:e.spacing(),padding:e.spacing()},submit:{marginTop:25,marginBottom:100,display:"block"}}));function nh({model:e}){let{classes:t}=wk(),[r,n]=(0,ve.useState)(""),[i,o]=(0,ve.useState)(),[a,u]=(0,ve.useState)(),[l,s]=(0,ve.useState)(),[c,f]=(0,ve.useState)(),[d,p]=(0,ve.useState)("MAF track"),[m,h]=(0,ve.useState)("BigMafAdapter"),[v,y]=(0,ve.useState)("TBI"),w=(0,$0.getRoot)(e);return ve.default.createElement(De.Paper,{className:t.paper},ve.default.createElement(De.Paper,null,c?ve.default.createElement(qr.ErrorMessage,{error:c}):null,ve.default.createElement(De.FormControl,null,ve.default.createElement(De.FormLabel,null,"File type"),ve.default.createElement(De.RadioGroup,{value:m,onChange:_=>{h(_.target.value)}},["BigMafAdapter","MafTabixAdapter"].map(_=>ve.default.createElement(De.FormControlLabel,{key:_,value:_,control:ve.default.createElement(De.Radio,null),checked:m===_,label:_})))),m==="BigMafAdapter"?ve.default.createElement(qr.FileSelector,{location:i,name:"Path to bigMaf",rootModel:w,setLocation:_=>{o(_)}}):m==="MafTabixAdapter"?ve.default.createElement(ve.default.Fragment,null,ve.default.createElement(De.FormControl,null,ve.default.createElement(De.FormLabel,null,"Index type"),ve.default.createElement(De.RadioGroup,{value:m,onChange:_=>{y(_.target.value)}},["TBI","CSI"].map(_=>ve.default.createElement(De.FormControlLabel,{key:_,value:_,control:ve.default.createElement(De.Radio,null),checked:v===_,label:_})))),ve.default.createElement(qr.FileSelector,{location:i,name:"Path to MAF tabix",rootModel:w,setLocation:_=>{o(_)}}),ve.default.createElement(qr.FileSelector,{location:a,name:"Path to MAF tabix index",rootModel:w,setLocation:_=>{u(_)}})):ve.default.createElement(ve.default.Fragment,null,ve.default.createElement(qr.FileSelector,{location:i,name:"Path to TAF.gz (Bgzipped TAF)",rootModel:w,setLocation:_=>{o(_)}}),ve.default.createElement(qr.FileSelector,{location:a,name:"Path to TAF.gz.tai (TAF index)",rootModel:w,setLocation:_=>{u(_)}}))),ve.default.createElement("div",null,ve.default.createElement(qr.FileSelector,{location:l,name:"Path to newick tree (.nh)",rootModel:w,setLocation:_=>{s(_)}}),ve.default.createElement(De.TextField,{multiline:!0,rows:10,value:r,onChange:_=>{n(_.target.value)},helperText:"Sample names (optional if .nh supplied, required if not)",placeholder:"Enter sample names from the MAF file, one per line, or JSON formatted array of samples",variant:"outlined",fullWidth:!0})),ve.default.createElement(De.TextField,{value:d,helperText:"Track name",onChange:_=>{p(_.target.value)}}),ve.default.createElement(De.Button,{variant:"contained",className:t.submit,onClick:()=>{try{let _=(0,so.getSession)(e),x=[];try{x=JSON.parse(r)}catch{x=r.split(/\n|\r\n|\r/)}let S=[`${d.toLowerCase().replaceAll(" ","_")}-${Date.now()}`,_.adminMode?"":"-sessionTrack"].join("");(0,so.isSessionWithAddTracks)(_)&&(_.addTrackConf({trackId:S,type:"MafTrack",name:d,assemblyNames:[e.assembly],adapter:m==="BigMafAdapter"?{type:m,bigBedLocation:i,samples:x,nhLocation:l}:m==="MafTabixAdapter"?{type:m,bedGzLocation:i,nhLocation:l,index:{indexType:v,location:a},samples:x}:{type:m,tafGzLocation:i,taiLocation:a,nhLocation:l,samples:x}}),e.view?.showTrack(S)),e.clearData(),(0,so.isSessionModelWithWidgets)(_)&&_.hideWidget(e)}catch(_){f(_)}}},"Submit"))}function ih(e){e.addAddTrackWorkflowType(()=>new Y0.AddTrackWorkflowType({name:"MAF track",ReactComponent:nh,stateModel:X0.types.model({})}))}var QR=L(ub()),eP=L(vb()),Hu=class extends eP.default{name="MafGetSamples";async execute(t,r){let n=this.pluginManager,i=await this.deserializeArguments(t,r),{regions:o,adapterConfig:a,sessionId:u}=i,{dataAdapter:l}=await(0,QR.getAdapter)(n,u,a);return l.getSamples(o,i)}};function bb(e){e.addRpcMethod(()=>new Hu(e))}var rP=L(ub()),nP=L(vb());function tP({regions:e,showAllLetters:t,samples:r,features:n}){let i=e[0],o=new Map(r.map((l,s)=>[l.id,s])),a=i.end-i.start,u=r.map(()=>"-".repeat(a));for(let l of n.values()){let s=l.get("start"),c=l.get("alignments"),f=l.get("seq");for(let[d,p]of Object.entries(c)){let h=p.seq,v=o.get(d);if(v!==void 0){for(let y=0,w=0,_=h.length;y<_;y++)if(f[y]!=="-"){if(h[y]==="-"){let x=s+w-i.start;x>=0&&x<a&&(u[v]=u[v].slice(0,x)+"-"+u[v].slice(x+1))}w++}if(!t){for(let y=0,w=0,_=h.length;y<_;y++)if(f[y]!=="-"){let x=h[y],S=s+w-i.start;S>=0&&S<a&&f[y]===x&&x!=="-"&&x!==" "&&(u[v]=u[v].slice(0,S)+"."+u[v].slice(S+1)),w++}}for(let y=0,w=0,_=h.length;y<_;y++){let x=h[y];if(f[y]!=="-"){if(x!=="-"){let S=s+w-i.start;S>=0&&S<a&&(f[y]!==x&&x!==" "||t)&&(u[v]=u[v].slice(0,S)+x+u[v].slice(S+1))}w++}}}}}return u}var Vu=class extends nP.default{name="MafGetSequences";async execute(t,r){let n=await this.deserializeArguments(t,r),{samples:i,regions:o,adapterConfig:a,sessionId:u,showAllLetters:l}=n,s=(await(0,rP.getAdapter)(this.pluginManager,u,a)).dataAdapter,c=await Gn(s.getFeatures(o[0],n).pipe($n()));return tP({features:new Map(c.map(f=>[f.id(),f])),samples:i,regions:o,showAllLetters:l})}};function gb(e){e.addRpcMethod(()=>new Vu(e))}var cP=L(Gr());var iP=L(Nd()),da=L(ct()),oP=L(Dd()),aP=L(Bd()),uP=L(ht());var Gu=class extends iP.BaseFeatureDataAdapter{setupP;async setupPre(){if(!this.getSubAdapter)throw new Error("no getSubAdapter available");return{adapter:(await this.getSubAdapter({...(0,uP.getSnapshot)(this.config),type:"BedTabixAdapter"})).dataAdapter}}async setupPre2(){return this.setupP||(this.setupP=this.setupPre().catch(t=>{throw this.setupP=void 0,t})),this.setupP}async setup(t){let{statusCallback:r=()=>{}}=t||{};return(0,da.updateStatus)("Downloading index",r,()=>this.setupPre2())}async getRefNames(t){let{adapter:r}=await this.setup(t);return r.getRefNames()}async getHeader(t){let{adapter:r}=await this.setup(t);return r.getHeader()}getFeatures(t,r){let{statusCallback:n=()=>{}}=r||{};return(0,aP.ObservableCreate)(async i=>{let{adapter:o}=await this.setup(r),a=await(0,da.updateStatus)("Downloading alignments",n,()=>Gn(o.getFeatures(t).pipe($n())));await(0,da.updateStatus)("Processing alignments",n,()=>{let u="",l=this.getConf("refAssemblyName");for(let s of a){let c=s.get("field5").split(","),f={},d=c.length;for(let p=0;p<d;p++){let h=c[p].split(":"),[v,y,w,_,x,S]=h;if(!v||!S)continue;let E,R,T=v.indexOf(".");if(T===-1)E=v,R="";else{let C=v.indexOf(".",T+1);if(C===-1)E=v.slice(0,Math.max(0,T)),R=v.slice(Math.max(0,T+1));else{let M=v.slice(T+1,C);M.length>0&&!Number.isNaN(+M)?(E=v.slice(0,Math.max(0,C)),R=v.slice(Math.max(0,C+1))):(E=v.slice(0,Math.max(0,T)),R=v.slice(Math.max(0,T+1)))}}E&&(u||(u=E),f[E]={chr:R,start:+y,srcSize:+w,strand:_==="-"?-1:1,unknown:+x,seq:S})}i.next(new da.SimpleFeature({id:s.id(),data:{start:s.get("start"),end:s.get("end"),refName:s.get("refName"),name:s.get("name"),score:s.get("score"),alignments:f,seq:f[l||t.assemblyName]?.seq||f[u]?.seq}}))}}),i.complete()})}async getSamples(t){let r=this.getConf("nhLocation"),n=r.uri==="/path/to/my.nh"?void 0:await(0,oP.openLocation)(r).readFile("utf8");return{samples:zi(this.getConf("samples")),tree:n?ba(n):void 0}}freeResources(){}};var yb=L(Kn());var kK=(0,yb.ConfigurationSchema)("MafTabixAdapter",{samples:{type:"frozen",description:"string[] or {id:string,label:string,color?:string}[]",defaultValue:[]},bedGzLocation:{type:"fileLocation",defaultValue:{uri:"/path/to/my.bed.gz.tbi",locationType:"UriLocation"}},refAssemblyName:{type:"string",defaultValue:""},index:(0,yb.ConfigurationSchema)("Index",{location:{type:"fileLocation",defaultValue:{uri:"/path/to/my.bed.gz.tbi"}},indexType:{type:"string",defaultValue:"TBI"}}),nhLocation:{type:"fileLocation",description:"newick tree",defaultValue:{uri:"/path/to/my.nh",locationType:"UriLocation"}}},{explicitlyTyped:!0,preProcessSnapshot:e=>e.uri?{...e,...e.nhUri?{nhLocation:{uri:e.nhUri,baseUri:e.baseUri}}:{},bedGzLocation:{uri:e.uri,baseUri:e.baseUri},index:{location:{uri:`${e.uri}.tbi`,baseUri:e.baseUri}}}:e}),sP=kK;function _b(e){return e.addAdapterType(()=>new cP.AdapterType({name:"MafTabixAdapter",AdapterClass:Gu,configSchema:sP}))}var jd=L(Gr());var lP=L(Kn()),fP=L(Gr());function wb(e){return(0,lP.ConfigurationSchema)("MafTrack",{},{baseConfiguration:(0,fP.createBaseTrackConfig)(e),explicitIdentifier:"trackId"})}function xb(e){return e.addTrackType(()=>{let t=wb(e);return new jd.TrackType({name:"MafTrack",configSchema:t,displayName:"MAF track",stateModel:(0,jd.createBaseTrackModel)(e,"MafTrack",t)})})}var Fd=class extends dP.default{name="MafViewerPlugin";version=Pb;install(t){Zd(t),xb(t),Yp(t),rh(t),_b(t),ih(t),gb(t),bb(t)}configure(t){}};return Ab(qK);})();
|
|
9
9
|
/*! Bundled license information:
|
|
10
10
|
|
|
11
11
|
tabbable/dist/index.esm.js:
|