@jbrowse/plugin-data-management 1.5.0 → 1.5.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (30) hide show
  1. package/dist/AddTrackWidget/model.d.ts +1 -434
  2. package/dist/AssemblyManager/AssemblyTable.d.ts +8 -2
  3. package/dist/PluginStoreWidget/components/CustomPluginForm.d.ts +1 -1
  4. package/dist/PluginStoreWidget/components/PluginCard.d.ts +2 -2
  5. package/dist/SetDefaultSession/SetDefaultSession.d.ts +4 -6
  6. package/dist/index.d.ts +8 -12
  7. package/dist/plugin-data-management.cjs.development.js +387 -324
  8. package/dist/plugin-data-management.cjs.development.js.map +1 -1
  9. package/dist/plugin-data-management.cjs.production.min.js +1 -1
  10. package/dist/plugin-data-management.cjs.production.min.js.map +1 -1
  11. package/dist/plugin-data-management.esm.js +389 -326
  12. package/dist/plugin-data-management.esm.js.map +1 -1
  13. package/package.json +3 -2
  14. package/src/AddTrackWidget/components/AddTrackWidget.test.js +1 -1
  15. package/src/AddTrackWidget/components/AddTrackWidget.tsx +3 -1
  16. package/src/AddTrackWidget/components/ConfirmTrack.tsx +101 -32
  17. package/src/AddTrackWidget/components/TrackSourceSelect.tsx +2 -3
  18. package/src/AddTrackWidget/index.test.jsx +34 -15
  19. package/src/AddTrackWidget/model.ts +5 -14
  20. package/src/AssemblyManager/AssemblyManager.tsx +3 -1
  21. package/src/AssemblyManager/AssemblyTable.tsx +40 -39
  22. package/src/HierarchicalTrackSelectorWidget/model.js +3 -2
  23. package/src/PluginStoreWidget/components/CustomPluginForm.tsx +164 -56
  24. package/src/PluginStoreWidget/components/InstalledPlugin.tsx +16 -11
  25. package/src/PluginStoreWidget/components/PluginCard.tsx +7 -9
  26. package/src/PluginStoreWidget/components/PluginStoreWidget.test.js +8 -7
  27. package/src/PluginStoreWidget/components/PluginStoreWidget.tsx +34 -25
  28. package/src/PluginStoreWidget/components/__snapshots__/PluginStoreWidget.test.js.snap +69 -52
  29. package/src/SetDefaultSession/SetDefaultSession.test.tsx +6 -81
  30. package/src/SetDefaultSession/SetDefaultSession.tsx +51 -162
@@ -1,2 +1,2 @@
1
- "use strict";function e(e){return e&&"object"==typeof e&&"default"in e?e.default:e}function t(e){if(e&&e.__esModule)return e;var t={};return e&&Object.keys(e).forEach((function(n){var r=Object.getOwnPropertyDescriptor(e,n);Object.defineProperty(t,n,r.get?r:{enumerable:!0,get:function(){return e[n]}})})),t.default=e,t}Object.defineProperty(exports,"__esModule",{value:!0});var n=require("react"),r=e(n),a=e(require("@jbrowse/core/pluggableElementTypes/ConnectionType")),o=e(require("@jbrowse/core/pluggableElementTypes/WidgetType")),i=e(require("@jbrowse/core/Plugin")),l=require("@jbrowse/core/pluggableElementTypes/models"),c=require("@jbrowse/core/configuration"),u=require("@jbrowse/core/util"),s=require("mobx-state-tree"),m=require("@jbrowse/core/util/io"),d=require("@jbrowse/core/util/tracks"),p=require("@jbrowse/core/util/types/mst"),f=require("mobx-react"),g=require("@material-ui/core"),h=e(require("@material-ui/icons/ExpandMore")),y=e(require("@material-ui/icons/Clear")),v=e(require("@material-ui/icons/InfoOutlined")),b=require("@material-ui/core/styles"),E=e(require("@material-ui/icons/Close")),k=e(require("@material-ui/icons/Lock")),C=require("@jbrowse/core/util/types"),T=e(require("@material-ui/icons/Person")),w=e(require("@material-ui/icons/Add")),x=e(require("@material-ui/icons/Check")),S=e(require("@material-ui/core/Dialog")),L=e(require("@material-ui/core/DialogTitle")),A=e(require("@material-ui/core/TextField")),N=e(require("@material-ui/core/Button")),D=e(require("@material-ui/core/IconButton")),B=e(require("@material-ui/core/DialogContent")),I=e(require("@material-ui/core/DialogActions")),P=e(require("@material-ui/core/List")),j=e(require("@material-ui/core/ListItem")),O=e(require("@material-ui/core/ListItemIcon")),M=e(require("@material-ui/core/ListItemText")),F=e(require("@material-ui/core/ListSubheader")),q=e(require("@material-ui/core/Paper")),_=e(require("@material-ui/core/Typography")),R=e(require("@material-ui/core/Radio")),W=e(require("pluralize")),U=e(require("@material-ui/icons/ArrowBackIos")),H=e(require("@material-ui/icons/Create")),z=e(require("@material-ui/icons/Delete")),G=e(require("@jbrowse/core/ui/FileSelector")),V=require("@jbrowse/plugin-config"),J=e(require("@material-ui/icons/ArrowDropDown")),Y=e(require("@material-ui/icons/ArrowRight")),K=e(require("@material-ui/icons/Menu")),Q=e(require("@material-ui/icons/MoreHoriz")),X=e(require("@material-ui/icons/PowerOutlined")),$=e(require("react-virtualized-auto-sizer")),Z=e(require("@jbrowse/core/ui/Menu")),ee=require("react-vtree"),te=e(require("@material-ui/core/Link")),ne=e(require("@material-ui/core/MenuItem")),re=require("@jbrowse/core/ui"),ae=require("@material-ui/lab"),oe=e(require("@material-ui/core/Step")),ie=e(require("@material-ui/core/StepContent")),le=e(require("@material-ui/core/StepLabel")),ce=e(require("@material-ui/core/Stepper")),ue=e(require("@material-ui/icons/OpenInNew"));function se(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function me(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?se(Object(n),!0).forEach((function(t){he(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):se(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function de(e){return(de="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function pe(e,t,n,r,a,o,i){try{var l=e[o](i),c=l.value}catch(e){return void n(e)}l.done?t(c):Promise.resolve(c).then(r,a)}function fe(e){return function(){var t=this,n=arguments;return new Promise((function(r,a){var o=e.apply(t,n);function i(e){pe(o,r,a,i,l,"next",e)}function l(e){pe(o,r,a,i,l,"throw",e)}i(void 0)}))}}function ge(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function he(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function ye(e){return(ye=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function ve(e,t){return(ve=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function be(e,t){if(t&&("object"==typeof t||"function"==typeof t))return t;if(void 0!==t)throw new TypeError("Derived constructors may only return object or undefined");return function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e)}function Ee(e){var t=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}();return function(){var n,r=ye(e);if(t){var a=ye(this).constructor;n=Reflect.construct(r,arguments,a)}else n=r.apply(this,arguments);return be(this,n)}}function ke(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,a,o=[],i=!0,l=!1;try{for(n=n.call(e);!(i=(r=n.next()).done)&&(o.push(r.value),!t||o.length!==t);i=!0);}catch(e){l=!0,a=e}finally{try{i||null==n.return||n.return()}finally{if(l)throw a}}return o}}(e,t)||Te(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function Ce(e){return function(e){if(Array.isArray(e))return we(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||Te(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function Te(e,t){if(e){if("string"==typeof e)return we(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?we(e,t):void 0}}function we(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function xe(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=Te(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var r=0,a=function(){};return{s:a,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:a}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,i=!0,l=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return i=e.done,e},e:function(e){l=!0,o=e},f:function(){try{i||null==n.return||n.return()}finally{if(l)throw o}}}}var Se=c.ConfigurationSchema("UCSCTrackHubConnection",{hubTxtLocation:{type:"fileLocation",defaultValue:{uri:"http://mysite.com/path/to/hub.txt",locationType:"UriLocation"},description:"location of the hub file (usually called hub.txt)"},assemblyNames:{type:"stringArray",defaultValue:[],description:"optional list of genomes to import from this track hub, if empty all genomes will be imported"}},{baseConfiguration:l.baseConnectionConfig});function Le(e,t){return e(t={exports:{}},t.exports),t.exports}var Ae=Le((function(e){var t=function(e){var t=Object.prototype,n=t.hasOwnProperty,r="function"==typeof Symbol?Symbol:{},a=r.iterator||"@@iterator",o=r.asyncIterator||"@@asyncIterator",i=r.toStringTag||"@@toStringTag";function l(e,t,n){return Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{l({},"")}catch(e){l=function(e,t,n){return e[t]=n}}function c(e,t,n,r){var a=Object.create((t&&t.prototype instanceof m?t:m).prototype),o=new T(r||[]);return a._invoke=function(e,t,n){var r="suspendedStart";return function(a,o){if("executing"===r)throw new Error("Generator is already running");if("completed"===r){if("throw"===a)throw o;return{value:void 0,done:!0}}for(n.method=a,n.arg=o;;){var i=n.delegate;if(i){var l=E(i,n);if(l){if(l===s)continue;return l}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if("suspendedStart"===r)throw r="completed",n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);r="executing";var c=u(e,t,n);if("normal"===c.type){if(r=n.done?"completed":"suspendedYield",c.arg===s)continue;return{value:c.arg,done:n.done}}"throw"===c.type&&(r="completed",n.method="throw",n.arg=c.arg)}}}(e,n,o),a}function u(e,t,n){try{return{type:"normal",arg:e.call(t,n)}}catch(e){return{type:"throw",arg:e}}}e.wrap=c;var s={};function m(){}function d(){}function p(){}var f={};l(f,a,(function(){return this}));var g=Object.getPrototypeOf,h=g&&g(g(w([])));h&&h!==t&&n.call(h,a)&&(f=h);var y=p.prototype=m.prototype=Object.create(f);function v(e){["next","throw","return"].forEach((function(t){l(e,t,(function(e){return this._invoke(t,e)}))}))}function b(e,t){var r;this._invoke=function(a,o){function i(){return new t((function(r,i){!function r(a,o,i,l){var c=u(e[a],e,o);if("throw"!==c.type){var s=c.arg,m=s.value;return m&&"object"==typeof m&&n.call(m,"__await")?t.resolve(m.__await).then((function(e){r("next",e,i,l)}),(function(e){r("throw",e,i,l)})):t.resolve(m).then((function(e){s.value=e,i(s)}),(function(e){return r("throw",e,i,l)}))}l(c.arg)}(a,o,r,i)}))}return r=r?r.then(i,i):i()}}function E(e,t){var n=e.iterator[t.method];if(void 0===n){if(t.delegate=null,"throw"===t.method){if(e.iterator.return&&(t.method="return",t.arg=void 0,E(e,t),"throw"===t.method))return s;t.method="throw",t.arg=new TypeError("The iterator does not provide a 'throw' method")}return s}var r=u(n,e.iterator,t.arg);if("throw"===r.type)return t.method="throw",t.arg=r.arg,t.delegate=null,s;var a=r.arg;return a?a.done?(t[e.resultName]=a.value,t.next=e.nextLoc,"return"!==t.method&&(t.method="next",t.arg=void 0),t.delegate=null,s):a:(t.method="throw",t.arg=new TypeError("iterator result is not an object"),t.delegate=null,s)}function k(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function C(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function T(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(k,this),this.reset(!0)}function w(e){if(e){var t=e[a];if(t)return t.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var r=-1,o=function t(){for(;++r<e.length;)if(n.call(e,r))return t.value=e[r],t.done=!1,t;return t.value=void 0,t.done=!0,t};return o.next=o}}return{next:x}}function x(){return{value:void 0,done:!0}}return d.prototype=p,l(y,"constructor",p),l(p,"constructor",d),d.displayName=l(p,i,"GeneratorFunction"),e.isGeneratorFunction=function(e){var t="function"==typeof e&&e.constructor;return!!t&&(t===d||"GeneratorFunction"===(t.displayName||t.name))},e.mark=function(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,p):(e.__proto__=p,l(e,i,"GeneratorFunction")),e.prototype=Object.create(y),e},e.awrap=function(e){return{__await:e}},v(b.prototype),l(b.prototype,o,(function(){return this})),e.AsyncIterator=b,e.async=function(t,n,r,a,o){void 0===o&&(o=Promise);var i=new b(c(t,n,r,a),o);return e.isGeneratorFunction(n)?i:i.next().then((function(e){return e.done?e.value:i.next()}))},v(y),l(y,i,"Generator"),l(y,a,(function(){return this})),l(y,"toString",(function(){return"[object Generator]"})),e.keys=function(e){var t=[];for(var n in e)t.push(n);return t.reverse(),function n(){for(;t.length;){var r=t.pop();if(r in e)return n.value=r,n.done=!1,n}return n.done=!0,n}},e.values=w,T.prototype={constructor:T,reset:function(e){if(this.prev=0,this.next=0,this.sent=this._sent=void 0,this.done=!1,this.delegate=null,this.method="next",this.arg=void 0,this.tryEntries.forEach(C),!e)for(var t in this)"t"===t.charAt(0)&&n.call(this,t)&&!isNaN(+t.slice(1))&&(this[t]=void 0)},stop:function(){this.done=!0;var e=this.tryEntries[0].completion;if("throw"===e.type)throw e.arg;return this.rval},dispatchException:function(e){if(this.done)throw e;var t=this;function r(n,r){return i.type="throw",i.arg=e,t.next=n,r&&(t.method="next",t.arg=void 0),!!r}for(var a=this.tryEntries.length-1;a>=0;--a){var o=this.tryEntries[a],i=o.completion;if("root"===o.tryLoc)return r("end");if(o.tryLoc<=this.prev){var l=n.call(o,"catchLoc"),c=n.call(o,"finallyLoc");if(l&&c){if(this.prev<o.catchLoc)return r(o.catchLoc,!0);if(this.prev<o.finallyLoc)return r(o.finallyLoc)}else if(l){if(this.prev<o.catchLoc)return r(o.catchLoc,!0)}else{if(!c)throw new Error("try statement without catch or finally");if(this.prev<o.finallyLoc)return r(o.finallyLoc)}}}},abrupt:function(e,t){for(var r=this.tryEntries.length-1;r>=0;--r){var a=this.tryEntries[r];if(a.tryLoc<=this.prev&&n.call(a,"finallyLoc")&&this.prev<a.finallyLoc){var o=a;break}}o&&("break"===e||"continue"===e)&&o.tryLoc<=t&&t<=o.finallyLoc&&(o=null);var i=o?o.completion:{};return i.type=e,i.arg=t,o?(this.method="next",this.next=o.finallyLoc,s):this.complete(i)},complete:function(e,t){if("throw"===e.type)throw e.arg;return"break"===e.type||"continue"===e.type?this.next=e.arg:"return"===e.type?(this.rval=this.arg=e.arg,this.method="return",this.next="end"):"normal"===e.type&&t&&(this.next=t),s},finish:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.finallyLoc===e)return this.complete(n.completion,n.afterLoc),C(n),s}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.tryLoc===e){var r=n.completion;if("throw"===r.type){var a=r.arg;C(n)}return a}}throw new Error("illegal catch attempt")},delegateYield:function(e,t,n){return this.delegate={iterator:w(e),resultName:t,nextLoc:n},"next"===this.method&&(this.arg=void 0),s}},e}(e.exports);try{regeneratorRuntime=t}catch(e){"object"==typeof globalThis?globalThis.regeneratorRuntime=t:Function("r","regeneratorRuntime = r")(t)}}));function Ne(){return(Ne=fe(Ae.mark((function e(n){var r;return Ae.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,m.openLocation(n).readFile("utf8");case 3:return r=e.sent,e.next=6,new Promise((function(e){e(t(require("@gmod/ucsc-hub")))}));case 6:return e.abrupt("return",new(0,e.sent.HubFile)(r));case 11:throw e.prev=11,e.t0=e.catch(0),new Error("Not a valid hub.txt file, got error: '".concat(e.t0,"'"));case 14:case"end":return e.stop()}}),e,null,[[0,11]])})))).apply(this,arguments)}function De(e){return Be.apply(this,arguments)}function Be(){return(Be=fe(Ae.mark((function e(n){var r;return Ae.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,m.openLocation(n).readFile("utf8");case 2:return r=e.sent,e.next=5,new Promise((function(e){e(t(require("@gmod/ucsc-hub")))}));case 5:return e.abrupt("return",new(0,e.sent.GenomesFile)(r));case 8:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function Ie(e){return Pe.apply(this,arguments)}function Pe(){return(Pe=fe(Ae.mark((function e(n){var r;return Ae.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,m.openLocation(n).readFile("utf8");case 2:return r=e.sent,e.next=5,new Promise((function(e){e(t(require("@gmod/ucsc-hub")))}));case 5:return e.abrupt("return",new(0,e.sent.TrackDbFile)(r));case 8:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function je(e,t,n,r){var a=[];return e.forEach((function(o,i){var l=Array.from(o.keys()),c=["superTrack","compositeTrack","container","view"];if(!l.some((function(e){return c.includes(e)}))){var s=[],m=i;do{if(m=e.get(m).get("parent")){var d=ke(m.split(" "),1);s.push(e.get(m=d[0]))}}while(m);s.reverse();var p=Oe(o,s.map((function(e){return e.get("shortLabel")})),t,e,r);p.trackId="ucsc-trackhub-".concat(u.objectHash(p)),p.assemblyNames=[n],a.push(p)}})),a}function Oe(e,t,n,r,a){var o=e.get("type");o||(o=r.get(e.get("parent")).get("type"));var i,l,c=o.split(" ")[0];switch("bam"===c&&e.get("bigDataUrl").toLowerCase().endsWith("cram")&&(c="cram"),i=n.uri?{uri:new URL(e.get("bigDataUrl"),n.uri).href,locationType:"UriLocation"}:{localPath:e.get("bigDataUrl"),locationType:"LocalPathLocation"},c){case"bam":return l=n.uri?e.get("bigDataIndex")?{uri:new URL(e.get("bigDataIndex"),n.uri).href,locationType:"UriLocation"}:{uri:new URL("".concat(e.get("bigDataUrl"),".bai"),n.uri).href,locationType:"UriLocation"}:e.get("bigDataIndex")?{localPath:e.get("bigDataIndex"),locationType:"LocalPathLocation"}:{localPath:"".concat(e.get("bigDataUrl"),".bai"),locationType:"LocalPathLocation"},{type:"AlignmentsTrack",name:e.get("shortLabel"),description:e.get("longLabel"),category:t,adapter:{type:"BamAdapter",bamLocation:i,index:{location:l}}};case"bed":case"bed5FloatScore":case"bedGraph":case"bedRnaElements":return d.generateUnsupportedTrackConf(e.get("shortLabel"),c,t);case"bigBarChart":return{type:"FeatureTrack",name:e.get("shortLabel"),description:e.get("longLabel"),category:t,adapter:{type:"BigBedAdapter",bigBedLocation:i},renderer:{type:"SvgFeatureRenderer"}};case"bigBed":case"bigGenePred":return{type:"FeatureTrack",name:e.get("shortLabel"),description:e.get("longLabel"),category:t,adapter:{type:"BigBedAdapter",bigBedLocation:i}};case"bigChain":case"bigInteract":case"bigMaf":case"bigPsl":return{type:"FeatureTrack",name:e.get("shortLabel"),description:e.get("longLabel"),category:t,adapter:{type:"BigBedAdapter",bigBedLocation:i},renderer:{type:"SvgFeatureRenderer"}};case"bigWig":return{type:"QuantitativeTrack",name:e.get("shortLabel"),description:e.get("longLabel"),category:t,adapter:{type:"BigWigAdapter",bigWigLocation:i}};case"broadPeak":case"coloredExon":return d.generateUnsupportedTrackConf(e.get("shortLabel"),c,t);case"cram":return l=n.uri?e.get("bigDataIndex")?{uri:new URL(e.get("bigDataIndex"),n.uri).href,locationType:"UriLocation"}:{uri:new URL("".concat(e.get("bigDataUrl"),".crai"),n.uri).href,locationType:"UriLocation"}:e.get("bigDataIndex")?{localPath:e.get("bigDataIndex"),locationType:"LocalPathLocation"}:{localPath:"".concat(e.get("bigDataUrl"),".crai"),locationType:"LocalPathLocation"},{type:"AlignmentsTrack",name:e.get("shortLabel"),description:e.get("longLabel"),category:t,adapter:{type:"CramAdapter",cramLocation:i,craiLocation:l,sequenceAdapter:a}};case"gvf":case"ld2":case"narrowPeak":return d.generateUnsupportedTrackConf(e.get("shortLabel"),c,t);case"bigNarrowPeak":return{type:"FeatureTrack",name:e.get("shortLabel"),description:e.get("longLabel"),category:t,adapter:{type:"BigBedAdapter",bigBedLocation:i}};case"peptideMapping":return d.generateUnsupportedTrackConf(e.get("shortLabel"),c,t);case"vcfTabix":return l=n.uri?e.get("bigDataIndex")?{uri:new URL(e.get("bigDataIndex"),n.uri).href,locationType:"UriLocation"}:{uri:new URL("".concat(e.get("bigDataUrl"),".tbi"),n.uri).href,locationType:"UriLocation"}:e.get("bigDataIndex")?{localPath:e.get("bigDataIndex"),locationType:"LocalPathLocation"}:{localPath:"".concat(e.get("bigDataUrl"),".tbi"),locationType:"LocalPathLocation"},{type:"VariantTrack",name:e.get("shortLabel"),description:e.get("longLabel"),category:t,adapter:{type:"VcfTabixAdapter",vcfGzLocation:i,index:{location:l}}};case"wig":case"wigMaf":return d.generateUnsupportedTrackConf(e.get("shortLabel"),c,t);case"hic":return{type:"HicTrack",name:e.get("shortLabel"),description:e.get("longLabel"),category:t,adapter:{type:"HicAdapter",hicLocation:i}};case"halSnake":return d.generateUnsupportedTrackConf(e.get("shortLabel"),c,t);default:return d.generateUnknownTrackConf(e.get("shortLabel"),c,t)}}function Me(e){return s.types.compose("UCSCTrackHubConnection",l.BaseConnectionModelFactory(e),s.types.model({configuration:c.ConfigurationReference(Se),type:s.types.literal("UCSCTrackHubConnection")}).actions((function(e){return{connect:function(){var t=c.getConf(e,"name"),n=c.getConf(e,"hubTxtLocation"),r=u.getSession(e);(function(e){return Ne.apply(this,arguments)})(n).then((function(e){var t=n.uri?{uri:new URL(e.get("genomesFile"),n.uri).href,locationType:"UriLocation"}:{localPath:e.get("genomesFile"),locationType:"LocalPathLocation"};return Promise.all([e,De(t)])})).then((function(a){var o,i=ke(a,2),l=i[0],u=[],s=xe(i[1]);try{var m=function(){var a=ke(o.value,2),i=a[0],s=a[1],m=c.getConf(e,"assemblyNames");if(m.length>0&&!m.includes(i))return"break";var d=r.assemblies.find((function(e){return c.readConfObject(e,"name")===i}));if(!d)throw new Error('Cannot find assembly for "'.concat(i,'" from the genomes file for connection "').concat(t,'"'));var p=n.uri?{uri:new URL(s.get("trackDb"),new URL(l.get("genomesFile"),n.uri)).href,locationType:"UriLocation"}:{localPath:s.get("trackDb"),locationType:"LocalPathLocation"};u.push(Promise.all([p,Ie(p),i,d]))};for(s.s();!(o=s.n()).done&&"break"!==m(););}catch(e){s.e(e)}finally{s.f()}return Promise.all([].concat(u))})).then((function(t){var n,r=xe(t);try{for(r.s();!(n=r.n()).done;){var a=ke(n.value,4),o=je(a[1],a[0],a[2],c.readConfObject(a[3],["sequence","adapter"]));e.addTrackConfs(o)}}catch(e){r.e(e)}finally{r.f()}})).catch((function(t){console.error(t),r.notify('There was a problem connecting to the UCSC Track Hub "'.concat(e.name,'". Please make sure you have entered a valid hub.txt file. The error that was thrown is: "').concat(t,'"'),"error"),r.breakConnection(e.configuration)}))}}})))}function Fe(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";try{return new URL(e),!0}catch(t){return e.startsWith("/")}}function qe(e){var t="uri"in e?e.uri:void 0,n="localPath"in e?e.localPath:void 0,r="blobId"in e?e:void 0;return(null==r?void 0:r.name)||(null==t?void 0:t.slice(t.lastIndexOf("/")+1))||(null==n?void 0:n.slice(n.lastIndexOf("/")+1))||""}function _e(e){return s.types.model("AddTrackModel",{id:p.ElementId,type:s.types.literal("AddTrackWidget"),view:s.types.safeReference(e.pluggableMstType("view","stateModel"))}).volatile((function(){return{trackSource:"fromFile",trackData:void 0,indexTrackData:void 0,altAssemblyName:"",altTrackName:"",altTrackType:"",adapterHint:""}})).actions((function(e){return{setAdapterHint:function(t){e.adapterHint=t},setTrackSource:function(t){e.trackSource=t},setTrackData:function(t){e.trackData=t},setIndexTrackData:function(t){e.indexTrackData=t},setAssembly:function(t){e.altAssemblyName=t},setTrackName:function(t){e.altTrackName=t},setTrackType:function(t){e.altTrackType=t},clearData:function(){e.trackSource="",e.altTrackName="",e.altTrackType="",e.altAssemblyName="",e.adapterHint="",e.indexTrackData=void 0,e.trackData=void 0}}})).views((function(e){return{get trackAdapter(){var t=e.trackData;return t?d.guessAdapter(t,e.indexTrackData,qe,e.adapterHint):void 0},get trackName(){return e.altTrackName||(e.trackData?qe(e.trackData):"")},get isFtp(){var t,n,r=e.trackData,a=e.indexTrackData;return!!(null!=a&&null!==(t=a.uri)&&void 0!==t&&t.startsWith("ftp://")||null!=r&&null!==(n=r.uri)&&void 0!==n&&n.startsWith("ftp://"))},get isRelativeTrackUrl(){var t,n=null===(t=e.trackData)||void 0===t?void 0:t.uri;return!!n&&!Fe(n)},get isRelativeIndexUrl(){var t,n=null===(t=e.indexTrackData)||void 0===t?void 0:t.uri;return!!n&&!Fe(n)},get isRelativeUrl(){return this.isRelativeIndexUrl||this.isRelativeTrackUrl},get trackHttp(){var t,n;return null===(t=e.trackData)||void 0===t||null===(n=t.uri)||void 0===n?void 0:n.startsWith("http://")},get indexHttp(){var t,n;return null===(t=e.indexTrackData)||void 0===t||null===(n=t.uri)||void 0===n?void 0:n.startsWith("http://")},get wrongProtocol(){return"https:"===window.location.protocol&&(this.trackHttp||this.indexHttp)},get unsupported(){var e;return(null===(e=this.trackAdapter)||void 0===e?void 0:e.type)===d.UNSUPPORTED},get assembly(){var t;return e.altAssemblyName||(null===(t=e.view.assemblyNames)||void 0===t?void 0:t[0])},get trackType(){return e.altTrackType||(this.trackAdapter?d.guessTrackType(this.trackAdapter.type):"")}}})).views((function(e){return{get warningMessage(){return e.isFtp?"Warning: JBrowse cannot access files using the ftp protocol":e.isRelativeUrl?"Warning: one or more of your files do not provide the protocol e.g.\n https://, please provide an absolute URL unless you are sure a\n relative URL is intended.":e.wrongProtocol?"Warning: You entered a http:// resources but we cannot access HTTP\n resources from JBrowse when it is running on https. Please use an\n https URL for your track, or access the JBrowse app from the http\n protocol":""}}}))}var Re=c.ConfigurationSchema("AddTrackWidget",{}),We=s.types.model("AddConnectionModel",{id:p.ElementId,type:s.types.literal("AddConnectionWidget")}),Ue=c.ConfigurationSchema("AddConnectionWidget",{}),He=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];return!!e.find((function(e){return t.includes(e)}))};function ze(e){if(!e.trackId)throw new Error("not a track");return c.readConfObject(e,"name")||"Reference sequence (".concat(c.readConfObject(s.getParent(e),"name"),")")}function Ge(e,t,n){var r={children:[]},a=e.filterText,o=e.view;return t.filter((function(e){return t=a,r=ze(n=e),o=c.readConfObject(n,"category")||[],i=new RegExp(t,"i"),!!r.match(i)||o.filter((function(e){return!!e.match(i)})).length;var t,n,r,o,i})).forEach((function(e){var t=Ce(c.readConfObject(e,"category")||[]);e.trackId.endsWith("sessionTrack")&&t.unshift(" Session tracks");for(var a=r,i=function(e){var r=t[e],o=a.children.find((function(e){return e.name===r})),i=t.slice(0,e+1).join(",");if(o)a=o;else{var l={children:[],name:r,id:i,isOpenByDefault:!n.get(i)};a.children.push(l),a=l}},l=0;l<t.length;l++)i(l);a.children.splice(a.children.findIndex((function(e){return e.children.length})),0,{id:e.trackId,name:ze(e),conf:e,checked:!!o.tracks.find((function(t){return t.configuration===e})),children:[]})})),r.children}var Ve=function(e){return s.types.model("HierarchicalTrackSelectorWidget",{id:p.ElementId,type:s.types.literal("HierarchicalTrackSelectorWidget"),collapsed:s.types.map(s.types.boolean),filterText:"",view:s.types.safeReference(e.pluggableMstType("view","stateModel"))}).actions((function(e){return{setView:function(t){e.view=t},toggleCategory:function(t){e.collapsed.set(t,!e.collapsed.get(t))},clearFilterText:function(){e.filterText=""},setFilterText:function(t){e.filterText=t}}})).views((function(t){return{getRefSeqTrackConf:function(n){var r=u.getSession(t).assemblyManager.get(n),a=null==r?void 0:r.configuration.sequence,o=e.getViewType(t.view.type);if(a){var i,l=xe(a.displays);try{var c=function(){var e=i.value;if(o.displayTypes.find((function(t){return t.name===e.type})))return{v:a}};for(l.s();!(i=l.n()).done;){var s=c();if("object"===de(s))return s.v}}catch(e){l.e(e)}finally{l.f()}}},trackConfigurations:function(n){if(!t.view)return[];var r=u.getSession(t),a=r.tracks,o=r.assemblyManager.get(n);if(!o)return[];var i=t.getRefSeqTrackConf(n);return(i?[i]:[]).concat(Ce(a.filter((function(e){var t=c.readConfObject(e,"assemblyNames");return He(o.allAliases,t)})).filter((function(n){var r=e.getViewType(t.view.type).displayTypes.map((function(e){return e.name})),a=n.displays.map((function(e){return e.type}));return He(r,a)}))))},get assemblyNames(){return t.view?t.view.assemblyNames:[]},connectionTrackConfigurations:function(n,r){if(!t.view)return[];var a=r.tracks,o=u.getSession(t).assemblyManager.get(n);return o&&o.initialized?a.filter((function(e){var t=c.readConfObject(e,"assemblyNames");return He(o.allAliases,t)})).filter((function(n){var r=e.getViewType(t.view.type).displayTypes.map((function(e){return e.name})),a=n.displays.map((function(e){return e.type}));return He(r,a)})):[]},hierarchy:function(e){var n=this,r=Ge(t,t.trackConfigurations(e),t.collapsed),a=u.getSession(t),o=a.connectionInstances.filter((function(t){var n=c.readConfObject(t.configuration,"assemblyNames");return 0===n.length||n.includes(e)})).map((function(t,r){var o=a.connections[r];return{id:o.connectionId,name:c.readConfObject(o,"name"),children:n.connectionHierarchy(e,t),state:{expanded:!0}}}));return{name:"Root",id:"Root",children:[{name:"Tracks",id:"Tracks",children:r}].concat(Ce(o))}},connectionHierarchy:function(e,n){return Ge(t,t.connectionTrackConfigurations(e,n),t.collapsed)},allTracksInCategoryPath:function(e,n,r){var a=n?t.connectionHierarchy(n):t.hierarchy(r);e.forEach((function(e){a=a.get(e)||new Map}));var o={};return a.forEach((function(n,r){n.trackId?o[n.trackId]=n:o=Object.assign(o,t.allTracksInCategoryPath(e.concat([r])))})),o}}}))},Je=c.ConfigurationSchema("HierarchicalTrackSelectorWidget",{}),Ye=b.makeStyles((function(){return{closeDialog:{position:"absolute",right:0,top:0},dialogContainer:{margin:15}}}));function Ke(){return r.createElement(g.Tooltip,{style:{marginRight:"0.5rem"},title:"This plugin was installed by an administrator, you cannot remove it."},r.createElement(k,null))}function Qe(e){var t=e.onClose,n=e.plugin,a=Ye();return r.createElement(g.Dialog,{open:!0,onClose:function(){return t()}},r.createElement(g.DialogTitle,null,r.createElement(g.IconButton,{className:a.closeDialog,"aria-label":"close-dialog",onClick:function(){return t()}},r.createElement(E,null))),r.createElement(g.DialogContent,null,r.createElement(g.Typography,null,"Please confirm that you want to remove ",n,":"),r.createElement(g.DialogActions,null,r.createElement(g.Button,{variant:"contained",color:"primary",onClick:function(){window.setTimeout((function(){t(n)}),500)}},"Confirm"),r.createElement(g.Button,{variant:"contained",color:"secondary",onClick:function(){t()}},"Cancel"))))}function Xe(e){var t=e.plugin,a=e.model,o=e.pluginManager,i=ke(n.useState(),2),l=i[0],c=i[1],m=u.getSession(a),d=m.sessionPlugins,p=null==d?void 0:d.some((function(e){return o.pluginMetadata[t.name].url===e.url})),f=s.getParent(a,3),h=f.jbrowse,y=f.adminMode;return r.createElement(r.Fragment,null,l?r.createElement(Qe,{plugin:l,onClose:function(e){if(e){var n=o.pluginMetadata[t.name].url;y?h.removePlugin(n):C.isSessionWithSessionPlugins(m)&&m.removeSessionPlugin(n)}c(void 0)}}):null,r.createElement(g.ListItem,{key:t.name},y||p?r.createElement(g.IconButton,{"aria-label":"removePlugin","data-testid":"removePlugin-".concat(t.name),onClick:function(){return c(t.name)}},r.createElement(E,null)):r.createElement(Ke,null),r.createElement(g.Typography,null,t.name)))}var $e=f.observer(Xe);function Ze(e){var t=e.pluginManager,n=e.model,a=t.plugins,o=a.filter((function(e){var n;return null===(n=t.pluginMetadata[e.name])||void 0===n?void 0:n.isCore})).map((function(e){return e.name})),i=a.filter((function(e){return!o.includes(e.name)}));return r.createElement(g.List,null,i.length?i.filter((function(e){return e.name.toLowerCase().includes(n.filterText.toLowerCase())})).map((function(e){return r.createElement($e,{key:e.name,plugin:e,model:n,pluginManager:t})})):r.createElement(g.Typography,null,"No plugins currently installed"))}var et=f.observer(Ze),tt=b.makeStyles((function(){return{card:{margin:"1em"},icon:{marginLeft:"0.5em",marginRight:"0.5em"},bold:{fontWeight:600},dataField:{display:"flex",alignItems:"center",margin:"0.4em 0em"}}}));function nt(e){var t=e.plugin,a=e.model,o=e.adminMode,i=tt(),l=u.getSession(a),c=s.getEnv(a),m=Boolean(c.pluginManager.runtimePluginDefinitions.find((function(e){return e.url===t.url}))),d=ke(n.useState(!1),2),p=d[1],f=m||d[0],h=s.getParent(a,3).jbrowse;return r.createElement(g.Card,{variant:"outlined",key:t.name,className:i.card},r.createElement(g.CardContent,null,r.createElement("div",{className:i.dataField},r.createElement(g.Typography,{variant:"h5"},r.createElement(g.Link,{href:"".concat(t.location,"#readme"),target:"_blank",rel:"noopener"},t.name))),r.createElement("div",{className:i.dataField},r.createElement(T,{style:{marginRight:"0.5em"}}),r.createElement(g.Typography,null,t.authors.join(", "))),r.createElement(g.Typography,{className:i.bold},"Description:"),r.createElement(g.Typography,null,t.description)),r.createElement(g.CardActions,null,r.createElement(g.Button,{variant:"contained",color:"primary",disabled:f,startIcon:r.createElement(m?x:w,null),onClick:function(){o?h.addPlugin({name:t.name,url:t.url}):C.isSessionWithSessionPlugins(l)&&l.addSessionPlugin(t),p(!0)}},m?"Installed":"Install")))}var rt=f.observer(nt),at=b.makeStyles((function(){return{closeDialog:{position:"absolute",right:0,top:0},dialogContainer:{margin:15,display:"flex",flexDirection:"column"}}}));function ot(e){var t=e.open,a=e.onClose,o=e.model,i=at(),l=ke(n.useState({name:"",url:""}),2),c=l[0],u=l[1],m=function(e){u(me(me({},c),{},he({},e.target.name,e.target.value)))},d=s.getRoot(o).jbrowse;return r.createElement(S,{open:t,onClose:function(){return a(!1)}},r.createElement(L,null,r.createElement(D,{className:i.closeDialog,"aria-label":"close-dialog",onClick:function(){return a(!1)}},r.createElement(E,null))),r.createElement("div",{className:i.dialogContainer},r.createElement(A,{id:"name-input",name:"name",label:"Plugin name",variant:"outlined",value:c.name,onChange:m,multiline:!0}),r.createElement(A,{id:"url-input",name:"url",label:"Plugin URL",variant:"outlined",value:c.url,onChange:m,multiline:!0}),r.createElement(N,{variant:"contained",color:"primary",style:{marginTop:"1.5rem"},onClick:function(){d.addPlugin({name:c.name,url:c.url})}},"Add plugin")))}var it=f.observer(ot),lt=g.makeStyles((function(e){return{accordion:{marginTop:"1em"},expandIcon:{color:"#fff"},searchBox:{marginBottom:e.spacing(2)},adminBadge:{margin:"0.5em",borderRadius:3,backgroundColor:"#FFB11D",padding:"1em",display:"flex",alignContent:"center"},customPluginButton:{margin:"0.5em",display:"flex",justifyContent:"center"}}}));function ct(e){var t=e.model,a=lt(),o=ke(n.useState([]),2),i=o[0],l=o[1],c=ke(n.useState(),2),m=c[0],d=c[1],p=ke(n.useState(!1),2),f=p[0],b=p[1],E=u.getSession(t).adminMode,k=s.getEnv(t).pluginManager;return n.useEffect((function(){var e=!1;return fe(Ae.mark((function t(){var n,r;return Ae.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.prev=0,t.next=3,fetch("https://jbrowse.org/plugin-store/plugins.json");case 3:if((n=t.sent).ok){t.next=6;break}throw new Error("Failed to fetch plugin data");case 6:return t.next=8,n.json();case 8:r=t.sent,e||l(r.plugins),t.next=16;break;case 12:t.prev=12,t.t0=t.catch(0),console.error(t.t0),d(t.t0);case 16:case"end":return t.stop()}}),t,null,[[0,12]])})))(),function(){e=!0}}),[]),r.createElement("div",null,E&&r.createElement(r.Fragment,null,!u.isElectron&&r.createElement("div",{className:a.adminBadge},r.createElement(v,{style:{marginRight:"0.3em"}}),r.createElement(g.Typography,null,"You are using the ",r.createElement("code",null,"admin-server"),". Any changes you make will be saved to your configuration file. You also have the ability to add custom plugins that are not in the store.")),r.createElement("div",{className:a.customPluginButton},r.createElement(g.Button,{variant:"contained",color:"primary",onClick:function(){return b(!0)}},"Add custom plugin")),r.createElement(it,{open:f,onClose:b,model:t})),r.createElement(g.TextField,{className:a.searchBox,label:"Filter plugins",value:t.filterText,onChange:function(e){return t.setFilterText(e.target.value)},fullWidth:!0,InputProps:{endAdornment:r.createElement(g.InputAdornment,{position:"end"},r.createElement(g.IconButton,{color:"secondary",onClick:function(){return t.clearFilterText()}},r.createElement(y,null)))}}),r.createElement(g.Accordion,{defaultExpanded:!0},r.createElement(g.AccordionSummary,{expandIcon:r.createElement(h,{className:a.expandIcon})},r.createElement(g.Typography,{variant:"h5"},"Installed plugins")),r.createElement("div",{style:{margin:"1em"}},r.createElement(et,{pluginManager:k,model:t}))),r.createElement(g.Accordion,{defaultExpanded:!0},r.createElement(g.AccordionSummary,{expandIcon:r.createElement(h,{className:a.expandIcon})},r.createElement(g.Typography,{variant:"h5"},"Available plugins")),m?r.createElement(g.Typography,{color:"error"},"".concat(m)):i.length?i.filter((function(e){return e.name.toLowerCase().includes(t.filterText.toLowerCase())})).map((function(e){return r.createElement(rt,{key:e.name,plugin:e,model:t,adminMode:!!E})})):r.createElement(g.Typography,null,"Loading...")))}var ut={__proto__:null,default:f.observer(ct)};function st(e){return s.types.model("PluginStoreModel",{id:p.ElementId,type:s.types.literal("PluginStoreWidget"),filterText:"",view:s.types.safeReference(e.pluggableMstType("view","stateModel"))}).actions((function(e){return{clearFilterText:function(){e.filterText=""},setFilterText:function(t){e.filterText=t}}}))}var mt=c.ConfigurationSchema("PluginStoreWidget",{}),dt=n.lazy((function(){return Promise.resolve().then((function(){return yt}))})),pt=n.lazy((function(){return Promise.resolve().then((function(){return Lt}))})),ft=function(e){!function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&ve(e,t)}(l,i);var t,r=Ee(l);function l(){var e;return ge(this,l),(e=r.apply(this,arguments)).name="DataManagementPlugin",e.exports={AssemblyManager:pt,SetDefaultSession:dt},e}return(t=[{key:"install",value:function(e){e.addConnectionType((function(){return new a({name:"UCSCTrackHubConnection",configSchema:Se,stateModel:Me(e),displayName:"UCSC Track Hub",description:"A track or assembly hub in the Track Hub format",url:"//genome.ucsc.edu/goldenPath/help/hgTrackHubHelp.html#Intro"})})),e.addWidgetType((function(){return new o({name:"HierarchicalTrackSelectorWidget",heading:"Available tracks",configSchema:Je,stateModel:Ve(e),ReactComponent:n.lazy((function(){return Promise.resolve().then((function(){return Wt}))}))})})),e.addWidgetType((function(){return new o({name:"AddTrackWidget",heading:"Add a track",configSchema:Re,stateModel:_e(e),ReactComponent:n.lazy((function(){return Promise.resolve().then((function(){return nn}))}))})})),e.addWidgetType((function(){return new o({name:"AddConnectionWidget",heading:"Add a connection",configSchema:Ue,stateModel:We,ReactComponent:n.lazy((function(){return Promise.resolve().then((function(){return un}))}))})})),e.addWidgetType((function(){return new o({name:"PluginStoreWidget",heading:"Plugin store",configSchema:mt,stateModel:st(e),ReactComponent:n.lazy((function(){return Promise.resolve().then((function(){return ut}))}))})}))}},{key:"configure",value:function(e){}}])&&function(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}(l.prototype,t),l}(),gt=b.makeStyles((function(e){return{root:{margin:e.spacing(1)},message:{padding:e.spacing(3)},titleBox:{color:"#fff",backgroundColor:e.palette.primary.main,textAlign:"center"},dialogContent:{width:600},resetButton:{justifyContent:"center",marginBottom:"6px"}}})),ht=f.observer((function(e){var t=e.session,n=e.selectedDefault,a=e.handleRadio,o=gt();return r.createElement(q,{className:o.root},r.createElement(P,{subheader:r.createElement(F,null,"Currently open session")},r.createElement(j,null,r.createElement(O,null,r.createElement(R,{checked:t.name===n,onChange:function(){return a(t)}})),r.createElement(M,{primary:t.name}))))})),yt={__proto__:null,default:f.observer((function(e){var t=e.rootModel,a=e.open,o=e.onClose,i=e.currentDefault,l=gt(),c=t.session,u=ke(n.useState(i),2),s=u[0],m=u[1];function d(e){m(e.name),t.jbrowse.setDefaultSessionConf(e),c.notify("Set default session to ".concat(e.name),"success")}return r.createElement(S,{open:a},r.createElement(L,{className:l.titleBox},"Set Default Session"),r.createElement(B,null,r.createElement(g.Grid,{className:l.resetButton,container:!0},r.createElement(g.Grid,{item:!0},r.createElement(N,{color:"secondary",variant:"contained",onClick:function(){m("New session"),t.jbrowse.setDefaultSessionConf({name:"New session"}),c.notify("Reset default session","success")}},"Clear default session"))),r.createElement(ht,{session:c,selectedDefault:s,handleRadio:d}),r.createElement(q,{className:l.root},r.createElement(P,{subheader:r.createElement(F,null,"Saved sessions")},c.savedSessions.length?c.savedSessions.map((function(e){var t=e.views,n=void 0===t?[]:t,a=n.map((function(e){return e.tracks.length})).reduce((function(e,t){return e+t}),0);return e.name!==c.name?r.createElement(j,{key:e.name},r.createElement(O,null,r.createElement(R,{checked:e.name===s,onChange:function(){return d(e)}})),r.createElement(M,{primary:e.name,secondary:"".concat(n.length," ").concat(W("view",n.length),"; ").concat(a,"\n open ").concat(W("track",a))})):null})):r.createElement(_,{className:l.message},"No saved sessions found")))),r.createElement(I,null,r.createElement(N,{color:"secondary",variant:"contained",onClick:function(){o(!1)}},"Return")))}))},vt=g.makeStyles((function(){return{table:{minWidth:500,minHeight:150},buttonCell:{padding:3},button:{display:"inline-block",padding:3,minHeight:0,minWidth:0}}})),bt=f.observer((function(e){var t=e.rootModel,n=e.setIsAssemblyBeingEdited,a=e.setAssemblyBeingEdited,o=vt(),i=t.jbrowse.assemblies.map((function(e){var i=c.readConfObject(e,"name"),l=c.readConfObject(e,"displayName"),u=c.readConfObject(e,"aliases");return r.createElement(g.TableRow,{key:i},r.createElement(g.TableCell,null,i),r.createElement(g.TableCell,null,l),r.createElement(g.TableCell,null,u?u.toString():""),r.createElement(g.TableCell,{className:o.buttonCell},r.createElement(g.IconButton,{"data-testid":"".concat(i,"-edit"),className:o.button,onClick:function(){n(!0),a(e)}},r.createElement(H,{color:"primary"})),r.createElement(g.IconButton,{"data-testid":"".concat(i,"-delete"),className:o.button,onClick:function(){!function(e){t.jbrowse.removeAssemblyConf(e)}(i)}},r.createElement(z,{color:"error"}))))}));return r.createElement(g.TableContainer,{component:g.Paper},r.createElement(g.Table,{className:o.table},r.createElement(g.TableHead,null,r.createElement(g.TableRow,null,r.createElement(g.TableCell,null,r.createElement(g.Typography,{variant:"h5"},"Name")),r.createElement(g.TableCell,null,r.createElement(g.Typography,{variant:"h5"},"Display name")),r.createElement(g.TableCell,null,r.createElement(g.Typography,{variant:"h5"},"Aliases")),r.createElement(g.TableCell,null,r.createElement(g.Typography,{variant:"h5"},"Actions")))),r.createElement(g.TableBody,null,i)))})),Et=g.makeStyles((function(e){return{root:{flexGrow:1,overflow:"hidden",padding:e.spacing(0,3)},paper:{margin:"".concat(e.spacing(1),"px auto"),padding:e.spacing(2)},createButton:{marginTop:"1em",justifyContent:"center"},paperContent:{flex:"auto",margin:"".concat(e.spacing(1),"px auto"),padding:e.spacing(1),overflow:"auto"}}})),kt=f.observer((function(e){var t=e.setAdapterSelection;return r.createElement(g.TextField,{value:e.adapterSelection,label:"Type",select:!0,helperText:"Type of adapter to use",fullWidth:!0,onChange:function(e){t(e.target.value)}},e.adapterTypes.map((function(e){return r.createElement(g.MenuItem,{key:e,value:e},e)})))})),Ct=f.observer((function(e){var t=e.adapterSelection,n=e.setFastaLocation,a=e.faiLocation,o=e.setFaiLocation,i=e.gziLocation,l=e.setGziLocation,c=e.twoBitLocation,u=e.setTwoBitLocation,s=e.chromSizesLocation,m=e.setChromSizesLocation;return"IndexedFastaAdapter"===t||"BgzipFastaAdapter"===t?r.createElement(g.Grid,{container:!0,spacing:2},r.createElement(g.Grid,{item:!0},r.createElement(G,{name:"fastaLocation",location:e.fastaLocation,setLocation:function(e){return n(e)}})),r.createElement(g.Grid,{item:!0},r.createElement(G,{name:"faiLocation",location:a,setLocation:function(e){return o(e)}})),"BgzipFastaAdapter"===t?r.createElement(g.Grid,{item:!0},r.createElement(G,{name:"gziLocation",location:i,setLocation:function(e){return l(e)}})):null):"TwoBitAdapter"===t?r.createElement(g.Grid,{container:!0,spacing:2},r.createElement(g.Grid,{item:!0},r.createElement(G,{name:"twoBitLocation",location:c,setLocation:function(e){return u(e)}})),r.createElement(g.Grid,{item:!0},r.createElement(G,{name:"chromSizesLocation (optional, can be added to speed up loading 2bit files with many contigs)",location:s,setLocation:function(e){return m(e)}}))):null})),Tt={uri:""},wt=f.observer((function(e){var t=e.rootModel,a=e.setFormOpen,o=Et(),i=["IndexedFastaAdapter","BgzipFastaAdapter","TwoBitAdapter"],l=ke(n.useState(""),2),c=l[0],u=l[1],s=ke(n.useState(""),2),m=s[0],d=s[1],p=ke(n.useState(i[0]),2),f=p[0],h=p[1],y=ke(n.useState(Tt),2),v=y[0],b=y[1],E=ke(n.useState(Tt),2),k=E[0],C=E[1],T=ke(n.useState(Tt),2),x=T[0],S=T[1],L=ke(n.useState(Tt),2),A=L[0],N=L[1],D=ke(n.useState(Tt),2),B=D[0],I=D[1];return r.createElement("div",{className:o.root},r.createElement(g.Paper,{className:o.paper},r.createElement(g.TextField,{id:"assembly-name",inputProps:{"data-testid":"assembly-name"},label:"Assembly name",helperText:"The assembly name e.g. hg38",variant:"outlined",value:c,onChange:function(e){return u(e.target.value)}}),r.createElement(g.TextField,{id:"assembly-name",inputProps:{"data-testid":"assembly-display-name"},label:"Assembly display name",helperText:'A human readable display name for the assembly e.g. "Homo sapiens (hg38)"',variant:"outlined",value:m,onChange:function(e){return d(e.target.value)}}),r.createElement(kt,{adapterSelection:f,setAdapterSelection:h,adapterTypes:i}),r.createElement("div",{className:o.paperContent},r.createElement(Ct,{adapterSelection:f,fastaLocation:v,setFastaLocation:b,faiLocation:k,setFaiLocation:C,gziLocation:x,setGziLocation:S,twoBitLocation:A,setTwoBitLocation:N,chromSizesLocation:B,setChromSizesLocation:I}))),r.createElement(g.Grid,{container:!0,className:o.createButton},r.createElement(g.Grid,{item:!0},r.createElement(g.Button,{variant:"contained",color:"secondary",startIcon:r.createElement(w,null),onClick:function(){var e;""===c?t.session.notify("Can't create an assembly without a name"):(a(!1),"IndexedFastaAdapter"===f?e={name:c,displayName:m,sequence:{adapter:{type:"IndexedFastaAdapter",fastaLocation:v,faiLocation:k}}}:"BgzipFastaAdapter"===f?e={name:c,displayName:m,sequence:{adapter:{type:"BgzipFastaAdapter",fastaLocation:v,faiLocation:k,gziLocation:x}}}:"TwoBitAdapter"===f&&(e={name:c,displayName:m,sequence:{adapter:{type:"TwoBitAdapter",twoBitLocation:A,chromSizesLocation:B}}}),t.jbrowse.addAssemblyConf(e),t.session.notify("Successfully added ".concat(c," assembly to JBrowse 2"),"success"))}},"Create new assembly"))))})),xt=f.observer((function(e){return r.createElement(V.ConfigurationEditor,{model:{target:e.assembly}})})),St=b.makeStyles((function(e){return{titleBox:{color:"#fff",backgroundColor:e.palette.primary.main,textAlign:"center"},dialogContent:{width:"100%"},backButton:{color:"#fff",position:"absolute",left:e.spacing(4),top:e.spacing(4)},closeButton:{position:"absolute",right:e.spacing(1),top:e.spacing(1),color:e.palette.grey[500]}}})),Lt={__proto__:null,default:f.observer((function(e){var t,a=e.rootModel,o=e.onClose,i=St(),l=ke(n.useState(!1),2),c=l[0],u=l[1],s=ke(n.useState(!1),2),m=s[0],d=s[1],p=ke(n.useState(),2),f=p[0],h=p[1],y=!c&&!m;return r.createElement(g.Dialog,{open:!0,onClose:function(){return o(!1)}},r.createElement(g.DialogTitle,{className:i.titleBox},y?"Assembly manager":null,c?r.createElement(r.Fragment,null,r.createElement(g.IconButton,{"aria-label":"back",className:i.backButton,onClick:function(){return u(!1)}},r.createElement(U,null)),"Add new assembly"):null,m?r.createElement(r.Fragment,null,r.createElement(g.IconButton,{"aria-label":"back",className:i.backButton,onClick:function(){return d(!1)}},r.createElement(U,null)),void 0!==(t=f)?t.name:null):null,r.createElement(g.IconButton,{"aria-label":"close",className:i.closeButton,onClick:function(){return o(!1)}},r.createElement(E,null))),r.createElement(g.DialogContent,null,r.createElement("div",{className:i.dialogContent},y?r.createElement(bt,{rootModel:a,setIsAssemblyBeingEdited:d,setAssemblyBeingEdited:h}):null,m?r.createElement(xt,{assembly:f}):null,c?r.createElement(wt,{rootModel:a,setFormOpen:u}):null)),r.createElement(g.DialogActions,null,y?r.createElement(r.Fragment,null,r.createElement(g.Button,{color:"secondary",variant:"contained",onClick:function(){return o(!1)}},"Close"),r.createElement(g.Button,{variant:"contained",color:"secondary",startIcon:r.createElement(w,null),onClick:function(){return u(!0)}},"Add new assembly")):null))}))},At=n.lazy((function(){return Promise.resolve().then((function(){return mn}))})),Nt=n.lazy((function(){return Promise.resolve().then((function(){return pn}))})),Dt=n.lazy((function(){return Promise.resolve().then((function(){return hn}))})),Bt=n.lazy((function(){return Promise.resolve().then((function(){return bn}))})),It=g.makeStyles((function(e){var t,n;return{searchBox:{marginBottom:e.spacing(2)},menuIcon:{marginRight:e.spacing(1),marginBottom:0},fab:{position:"absolute",bottom:e.spacing(6),right:e.spacing(6)},compactCheckbox:{padding:0},checkboxLabel:{marginRight:0,"&:hover":{backgroundColor:"#eee"}},accordionBase:{display:"flex"},accordionCard:{padding:3,cursor:"pointer",display:"flex"},nestingLevelMarker:{position:"absolute",borderLeft:"1.5px solid #555"},accordionColor:{background:null===(t=e.palette.tertiary)||void 0===t?void 0:t.main,color:null===(n=e.palette.tertiary)||void 0===n?void 0:n.contrastText,width:"100%",display:"flex",paddingLeft:5},accordionText:{margin:"auto 0"}}})),Pt=function(e){var t=e.data,n=e.isOpen,a=e.style,o=e.setOpen,i=t.isLeaf,l=t.nestingLevel,u=t.checked,s=t.id,m=t.name,d=t.onChange,p=t.toggleCollapse,f=t.conf,h=t.onMoreInfo,y=t.drawerPosition,v=It(),b=10*l+(i?10:0),E=m&&(m.endsWith("(Unsupported)")||m.endsWith("(Unknown)")),k=f&&c.readConfObject(f,["description"])||"";return r.createElement("div",{style:a,className:i?void 0:v.accordionBase},new Array(l).fill(0).map((function(e,t){return r.createElement("div",{key:"mark-".concat(t),style:{left:10*t+4,height:a.height},className:v.nestingLevelMarker})})),r.createElement("div",{className:i?void 0:v.accordionCard,onClick:function(){p(s),o(!n)},style:{marginLeft:b,whiteSpace:"nowrap",width:"100%"}},r.createElement("div",{className:i?void 0:v.accordionColor},i?r.createElement(r.Fragment,null,r.createElement(g.Tooltip,{title:k,placement:"left"===y?"right":"left"},r.createElement(g.FormControlLabel,{className:v.checkboxLabel,control:r.createElement(g.Checkbox,{className:v.compactCheckbox,checked:u,onChange:function(){return d(s)},color:"primary",disabled:E,inputProps:{"data-testid":"htsTrackEntry-".concat(s)}}),label:m})),r.createElement(g.IconButton,{onClick:function(e){return h({target:e.currentTarget,id:s,conf:f})},color:"secondary","data-testid":"htsTrackEntryMenu-".concat(s)},r.createElement(Q,null))):r.createElement("div",{className:v.accordionText},r.createElement(g.Typography,null,r.createElement(n?J:Y,null),m)))))},jt=function(e,t,n){var r=!!e.conf;return{data:me(me({defaultHeight:r?22:40,isLeaf:r,isOpenByDefault:!0,nestingLevel:t},e),n),nestingLevel:t,node:e}},Ot=f.observer((function(e){var t,a=e.height,o=e.tree,i=e.model,l=i.filterText,c=i.view,s=n.useRef(null),m=ke(n.useState(),2),d=m[0],p=m[1],f=u.getSession(i),g=f.drawerPosition,h=n.useMemo((function(){return{onChange:function(e){return c.toggleTrack(e)},toggleCollapse:function(e){return i.toggleCategory(e)},onMoreInfo:p,drawerPosition:g}}),[c,i,g]),y=n.useCallback(Ae.mark((function e(){var t,n,r,a;return Ae.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:t=0;case 1:if(!(t<o.children.length)){e.next=7;break}return e.next=4,jt(o.children[t],0,h);case 4:t++,e.next=1;break;case 7:return void(e.next=10);case 10:n=e.sent,r=0;case 12:if(!(r<n.node.children.length)){e.next=19;break}return a=n.node.children[r],e.next=16,jt(a,n.nestingLevel+1,h);case 16:r++,e.next=12;break;case 19:e.next=7;break;case 21:case"end":return e.stop()}}),e)})),[o,h]),v=null==d?void 0:d.conf,b=v&&(null===(t=f.getTrackActionMenuItems)||void 0===t?void 0:t.call(f,v))||[];return n.useEffect((function(){s.current.recomputeTree({refreshNodes:!0,useDefaultHeight:!0})}),[o,l]),r.createElement(r.Fragment,null,r.createElement(ee.VariableSizeTree,{ref:s,treeWalker:y,height:a},Pt),r.createElement(Z,{anchorEl:null==d?void 0:d.target,menuItems:b,onMenuItemClick:function(e,t){t(),p(void 0)},open:Boolean(d),onClose:function(){return p(void 0)}}))})),Mt=function(e){var t=e.tree,n=e.model,a=e.offset;return"undefined"==typeof jest?r.createElement($,{disableWidth:!0},(function(e){return r.createElement(Ot,{height:e.height-a,model:n,tree:t})})):r.createElement(Ot,{height:9e3,model:n,tree:t})},Ft=function(e){var t=e.overrideDimensions,n=e.children;return t?r.createElement("div",{style:me({},t)},n):r.createElement(r.Fragment,null,n)},qt=f.observer((function(e){var t=e.model,a=e.toolbarHeight,o=e.overrideDimensions,i=It(),l=u.getSession(t),c=ke(n.useState(null),2),s=c[0],m=c[1];function d(){m(null)}return r.createElement(Ft,{overrideDimensions:o},r.createElement(Rt,{model:t,toolbarHeight:a,overrideDimensions:o}),r.createElement(g.Fab,{color:"secondary",className:i.fab,onClick:function(e){m(e.currentTarget)}},r.createElement(w,null)),r.createElement(g.Menu,{anchorEl:s,open:Boolean(s),onClose:function(){return m(null)}},r.createElement(g.MenuItem,{onClick:function(){d();var e=l.addWidget("AddConnectionWidget","addConnectionWidget");l.showWidget(e)}},"Add connection"),r.createElement(g.MenuItem,{onClick:function(){d();var e=l.addWidget("AddTrackWidget","addTrackWidget",{view:t.view.id});l.showWidget(e)}},"Add track")))})),_t=f.observer((function(e){var t=e.model,a=e.setHeaderHeight,o=e.setAssemblyIdx,i=e.assemblyIdx,l=It(),s=u.getSession(t),m=ke(n.useState(),2),d=m[0],p=m[1],f=ke(n.useState(),2),h=f[0],v=f[1],b=ke(n.useState(),2),E=b[0],k=b[1],C=ke(n.useState(),2),T=C[0],w=C[1],x=ke(n.useState(!1),2),S=x[0],L=x[1],A=ke(n.useState(!1),2),N=A[0],D=A[1],B=t.assemblyNames,I=B[i];function P(e,t){var n=c.readConfObject(e,"name"),r=s.prepareToBreakConnection(e);if(r){var a=ke(r,2),o=a[0],i=a[1];Object.keys(i).length>0?k({connectionConf:e,safelyBreakConnection:o,dereferenceTypeCount:i,name:n}):o()}t&&w({name:n,connectionConf:e})}var j=[{label:"Turn on/off connections...",onClick:function(){return D(!0)}},{label:"Delete connections...",onClick:function(){return L(!0)}}],O=B.length>1?[{label:"Select assembly...",subMenu:B.map((function(e,t){return{label:e,onClick:function(){o(t)}}}))}]:[],M=[{label:"Add track...",onClick:function(){s.showWidget(s.addWidget("AddTrackWidget","addTrackWidget",{view:t.view.id}))}}].concat(O);return r.createElement("div",{ref:function(e){return a((null==e?void 0:e.getBoundingClientRect().height)||0)},"data-testid":"hierarchical_track_selector"},r.createElement("div",{style:{display:"flex"}},r.createElement(g.IconButton,{className:l.menuIcon,onClick:function(e){v(e.currentTarget)}},r.createElement(K,null)),r.createElement(g.IconButton,{className:l.menuIcon,onClick:function(e){p(e.currentTarget)}},r.createElement(X,null)),r.createElement(g.TextField,{className:l.searchBox,label:"Filter tracks",value:t.filterText,onChange:function(e){return t.setFilterText(e.target.value)},fullWidth:!0,InputProps:{endAdornment:r.createElement(g.InputAdornment,{position:"end"},r.createElement(g.IconButton,{color:"secondary",onClick:t.clearFilterText},r.createElement(y,null)))}})),r.createElement(Z,{anchorEl:d,open:Boolean(d),onMenuItemClick:function(e,t){t(),p(void 0)},onClose:function(){p(void 0)},menuItems:[{label:"Add connection",onClick:function(){s.showWidget(s.addWidget("AddConnectionWidget","addConnectionWidget"))}}].concat(j)}),r.createElement(Z,{anchorEl:h,open:Boolean(h),onMenuItemClick:function(e,t){t(),v(void 0)},onClose:function(){v(void 0)},menuItems:M}),r.createElement(n.Suspense,{fallback:r.createElement("div",null)},E?r.createElement(At,{modalInfo:E,setModalInfo:k,session:s}):T?r.createElement(Nt,{handleClose:function(){w(void 0)},deleteDialogDetails:T,session:s}):null,S?r.createElement(Dt,{handleClose:function(){return L(!1)},breakConnection:P,session:s}):null,N?r.createElement(Bt,{handleClose:function(){return D(!1)},session:s,breakConnection:P,assemblyName:I}):null))})),Rt=f.observer((function(e){var t=e.model,a=e.toolbarHeight,o=void 0===a?0:a,i=ke(n.useState(0),2),l=i[0],c=i[1],u=ke(n.useState(0),2),s=u[0],m=t.assemblyNames[l];return m?r.createElement(r.Fragment,null,r.createElement(_t,{model:t,setHeaderHeight:u[1],setAssemblyIdx:c,assemblyIdx:l}),r.createElement(Mt,{tree:t.hierarchy(m),model:t,offset:o+s})):null})),Wt={__proto__:null,default:qt},Ut=b.makeStyles((function(e){return{spacing:{marginBottom:e.spacing(3)}}}));function Ht(e){var t,n=e.trackAdapter,a=e.trackType,o=Ut();return"SNPCoverageAdapter"===n.type?r.createElement(_,{className:o.spacing},"Selected ",r.createElement("code",null,a),". Using adapter"," ",r.createElement("code",null,n.type)," with subadapter"," ",r.createElement("code",null,null===(t=n.subadapter)||void 0===t?void 0:t.type),". Please enter a track name and, if necessary, update the track type."):r.createElement(_,{className:o.spacing},"Using adapter ",r.createElement("code",null,n.type)," and guessing track type"," ",r.createElement("code",null,a),". Please enter a track name and, if necessary, update the track type.")}var zt=f.observer((function(e){var t=e.model,n=Ut(),a=u.getSession(t),o=t.trackAdapter;return r.createElement(A,{className:n.spacing,value:null==o?void 0:o.type,label:"adapterType",helperText:"An adapter type",select:!0,fullWidth:!0,onChange:function(e){return t.setAdapterHint(e.target.value)},SelectProps:{SelectDisplayProps:{"data-testid":"adapterTypeSelect"}}},s.getEnv(a).pluginManager.getElementTypesInGroup("adapter").filter((function(e){return"SNPCoverageAdapter"!==e.name})).map((function(e){return r.createElement(ne,{key:e.name,value:e.name},e.name)})))}));function Gt(e){var t=e.model,n=Ut();return r.createElement(r.Fragment,null,r.createElement(_,{className:n.spacing},"Was not able to guess the adapter type for this data, but it may be in the list below. If not, you can"," ",r.createElement(te,{href:"https://github.com/GMOD/jbrowse-components/releases",target:"_blank",rel:"noopener noreferrer"},"check for new releases")," ","of JBrowse to see if they support this data type or"," ",r.createElement(te,{href:"https://github.com/GMOD/jbrowse-components/issues/new",target:"_blank",rel:"noopener noreferrer"},"file an issue")," ","and add a feature request for this data type."),r.createElement(zt,{model:t}))}var Vt=f.observer((function(e){var t=e.model,n=Ut(),a=u.getSession(t);return r.createElement(A,{className:n.spacing,value:t.trackType,label:"trackType",helperText:"A track type",select:!0,fullWidth:!0,onChange:function(e){t.setTrackType(e.target.value)},SelectProps:{SelectDisplayProps:{"data-testid":"trackTypeSelect"}}},s.getEnv(a).pluginManager.getElementTypesInGroup("track").map((function(e){var t=e.name;return r.createElement(ne,{key:t,value:t},t)})))})),Jt=f.observer((function(e){var t=e.model,n=u.getSession(t);return r.createElement(A,{value:t.assembly,label:"assemblyName",helperText:"Assembly to which the track will be added",select:!0,fullWidth:!0,onChange:function(e){return t.setAssembly(e.target.value)},SelectProps:{SelectDisplayProps:{"data-testid":"assemblyNameSelect"}}},n.assemblies.map((function(e){var t=c.readConfObject(e,"name");return r.createElement(ne,{key:t,value:t},t)})))}));function Yt(e){var t=e.model,n=Ut(),a=t.trackName,o=t.trackAdapter,i=t.trackType,l=t.warningMessage;return t.unsupported?r.createElement(_,{className:n.spacing},"This version of JBrowse cannot display data of this type. It is possible, however, that there is a newer version that can display them. You can"," ",r.createElement(te,{href:"https://github.com/GMOD/jbrowse-components/releases",target:"_blank",rel:"noopener noreferrer"},"check for new releases")," ","of JBrowse or"," ",r.createElement(te,{href:"https://github.com/GMOD/jbrowse-components/issues/new",target:"_blank",rel:"noopener noreferrer"},"file an issue")," ","and add a feature request for this data type."):(null==o?void 0:o.type)===d.UNKNOWN?r.createElement(Gt,{model:t}):null!=o&&o.type?r.createElement("div",null,o?r.createElement(Ht,{trackAdapter:o,trackType:i}):null,l?r.createElement(_,{style:{color:"orange"}},l):null,r.createElement(A,{className:n.spacing,label:"trackName",helperText:"A name for this track",fullWidth:!0,value:a,onChange:function(e){return t.setTrackName(e.target.value)},inputProps:{"data-testid":"trackNameInput"}}),r.createElement(zt,{model:t}),r.createElement(Vt,{model:t}),r.createElement(Jt,{model:t})):r.createElement(_,null,"Could not recognize this data type.")}var Kt=f.observer(Yt),Qt=b.makeStyles((function(e){return{paper:{display:"flex",flexDirection:"column",padding:e.spacing(1)},spacer:{height:e.spacing(8)}}}));function Xt(e){var t=e.model,n=Qt(),a=s.getRoot(t);return r.createElement(q,{className:n.paper},r.createElement(re.FileSelector,{name:"Main file",description:"",location:t.trackData,setLocation:t.setTrackData,setName:t.setTrackName,rootModel:a}),r.createElement("div",{className:n.spacer}),r.createElement(re.FileSelector,{name:"Index file",description:"(Optional) The URL of the index file is automatically inferred from the URL of the main file if it is not supplied.",location:t.indexTrackData,setLocation:t.setIndexTrackData,setName:t.setTrackName,rootModel:a}))}var $t=f.observer(Xt),Zt=g.makeStyles((function(e){return{root:{marginTop:e.spacing(1)},stepper:{backgroundColor:e.palette.background.default},button:{marginTop:e.spacing(1),marginRight:e.spacing(1)},actionsContainer:{marginBottom:e.spacing(2)},stepContent:{margin:e.spacing(1)},alertContainer:{padding:"".concat(e.spacing(2),"px 0px ").concat(e.spacing(2),"px 0px")}}})),en=["Enter track data","Confirm track type"];function tn(e){var t=e.model,a=ke(n.useState(0),2),o=a[0],i=a[1],l=Zt(),s=u.getSession(t),m=t.assembly,d=t.trackAdapter,p=t.trackData,f=t.trackName,h=t.trackType,y=ke(n.useState(),2),v=y[0],b=y[1];function E(){return k.apply(this,arguments)}function k(){return(k=fe(Ae.mark((function e(){var n,r;return Ae.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(o===en.length-1){e.next=3;break}return i(o+1),e.abrupt("return");case 3:n="".concat(f.toLowerCase().replace(/ /g,"_"),"-").concat(Date.now()).concat(s.adminMode?"":"-sessionTrack"),r=s.assemblyManager.get(m),d&&"UNKNOWN"!==d.type?(s.addTrackConf({trackId:n,type:h,name:f,assemblyNames:[m],adapter:me(me({},d),{},{sequenceAdapter:c.getConf(r,["sequence","adapter"])})}),t.view?t.view.showTrack(n):s.notify("Open a new view, or use the track selector in an existing view, to view this track","info"),t.clearData(),s.hideWidget(t)):b("Failed to add track.\nThe configuration of this file is not currently supported.");case 6:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function C(){b(void 0),i(o-1)}function T(){switch(o){case 0:return!p;case 1:return!(f&&h&&null!=d&&d.type&&m);default:return!0}}return r.createElement("div",{className:l.root},r.createElement(g.Stepper,{className:l.stepper,activeStep:o,orientation:"vertical"},en.map((function(e,n){return r.createElement(g.Step,{key:e},r.createElement(g.StepLabel,null,e),r.createElement(g.StepContent,null,function(e){switch(e){case 0:return r.createElement($t,{model:t});case 1:return r.createElement(Kt,{model:t});default:return r.createElement(g.Typography,null,"Unknown step")}}(n),r.createElement("div",{className:l.actionsContainer},r.createElement(g.Button,{disabled:0===o,onClick:C,className:l.button},"Back"),r.createElement(g.Button,{disabled:T(),variant:"contained",color:"primary",onClick:E,className:l.button,"data-testid":"addTrackNextButton"},o===en.length-1?"Add":"Next")),v?r.createElement("div",{className:l.alertContainer},r.createElement(ae.Alert,{severity:"error"},v)):null))}))))}var nn={__proto__:null,default:f.observer(tn)},rn=f.observer((function(e){var t=e.model,a=e.setModelReady,o=e.connectionType.configEditorComponent||V.ConfigurationEditor;return r.createElement(n.Suspense,{fallback:r.createElement("div",null,"Loading...")},r.createElement(o,{model:{target:t},setModelReady:a}))}));function an(e){var t=e.connectionTypeChoices,a=e.connectionType,o=e.setConnectionType;return n.useEffect((function(){a.name||o(t[0])})),a.name?r.createElement("form",{autoComplete:"off"},r.createElement(A,{value:a.name,label:"connectionType",helperText:a.description?r.createElement(r.Fragment,null,a.description,a.url?r.createElement(D,{href:a.url,rel:"noopener noreferrer",target:"_blank",color:"secondary"},r.createElement(ue,null)):null):null,select:!0,fullWidth:!0,onChange:function(e){o(t.find((function(t){return t.name===e.target.value})))},variant:"outlined"},t.map((function(e){return r.createElement(ne,{key:e.name,value:e.name},e.displayName||e.name)})))):null}var on=b.makeStyles((function(e){return{root:{marginTop:e.spacing(1)},stepper:{backgroundColor:e.palette.background.default},button:{marginTop:e.spacing(1),marginRight:e.spacing(1)},actionsContainer:{marginBottom:e.spacing(2)}}})),ln=["Select a Connection Type","Configure Connection"];function cn(e){var t=e.model,a=ke(n.useState({}),2),o=a[0],i=a[1],l=ke(n.useState({}),2),c=l[0],m=l[1],d=ke(n.useState(!0),2),p=d[0],f=d[1],g=ke(n.useState(0),2),h=g[0],y=g[1],v=on(),b=u.getSession(t),E=s.getEnv(b).pluginManager;function k(e){i(e),m(e.configSchema.create({connectionId:"".concat(e.name,"-").concat(Date.now())},s.getEnv(t)))}function C(){var e;h===ln.length-1?(e=b.addConnectionConf(c),b.makeConnection(e),b.hideWidget(t)):y(h+1)}function T(){y(h-1)}return r.createElement("div",{className:v.root},r.createElement(ce,{className:v.stepper,activeStep:h,orientation:"vertical"},ln.map((function(e){return r.createElement(oe,{key:e},r.createElement(le,null,e),r.createElement(ie,null,function(){switch(h){case 0:return r.createElement(an,{connectionTypeChoices:E.getElementTypesInGroup("connection"),connectionType:o,setConnectionType:k});case 1:return r.createElement(rn,{connectionType:o,model:c,setModelReady:f});default:return r.createElement(_,null,"Unknown step")}}(),r.createElement("div",{className:v.actionsContainer},r.createElement(N,{disabled:0===h,onClick:T,className:v.button},"Back"),r.createElement(N,{disabled:!(0===h&&o.name||1===h&&c&&p),variant:"contained",color:"primary",onClick:C,className:v.button,"data-testid":"addConnectionNext"},h===ln.length-1?"Connect":"Next"))))}))))}cn.propTypes={model:f.PropTypes.observableObject.isRequired};var un={__proto__:null,default:f.observer(cn)};function sn(e){var t=e.modalInfo,n=void 0===t?{}:t,a=e.setModalInfo,o=n.dereferenceTypeCount,i=n.safelyBreakConnection;return r.createElement(g.Dialog,{open:!0},r.createElement(g.DialogTitle,null,'Close connection "',n.name,'"'),r.createElement(g.DialogContent,null,o?r.createElement(r.Fragment,null,r.createElement(g.DialogContentText,null,"Closing this connection will close:"),r.createElement(g.List,null,Object.entries(o).map((function(e){var t=ke(e,2),n=t[0];return r.createElement(g.ListItem,{key:n},"".concat(t[1]," ").concat(n))})))):null,r.createElement(g.DialogContentText,null,"Are you sure you want to close this connection?")),r.createElement(g.DialogActions,null,r.createElement(g.Button,{onClick:function(){a()},color:"primary"},"Cancel"),r.createElement(g.Button,{variant:"contained",onClick:n?function(){i&&i(),a()}:function(){},color:"primary"},"OK")))}var mn={__proto__:null,default:f.observer(sn)};function dn(e){var t=e.deleteDialogDetails,n=e.session,a=e.handleClose,o=t.connectionConf;return r.createElement(g.Dialog,{open:!0},r.createElement(g.DialogTitle,null,'Delete connection "',t.name,'"'),r.createElement(g.DialogContent,null,r.createElement(g.DialogContentText,null,"Are you sure you want to delete this connection?")),r.createElement(g.DialogActions,null,r.createElement(g.Button,{onClick:function(){return a()},color:"primary"},"Cancel"),r.createElement(g.Button,{variant:"contained",color:"primary",onClick:function(){var e;o&&(null===(e=n.deleteConnection)||void 0===e||e.call(n,o)),a()}},"OK")))}var pn={__proto__:null,default:f.observer(dn)},fn=g.makeStyles((function(e){return{closeButton:{position:"absolute",right:e.spacing(1),top:e.spacing(1),color:e.palette.grey[500]},connectionContainer:{margin:e.spacing(4),width:500}}}));function gn(e){var t=e.session,n=e.handleClose,a=e.breakConnection,o=fn(),i=t.adminMode,l=t.connections,u=t.sessionConnections;return r.createElement(g.Dialog,{open:!0,onClose:n,maxWidth:"lg"},r.createElement(g.DialogTitle,null,"Delete connections",r.createElement(g.IconButton,{className:o.closeButton,onClick:function(){return n()}},r.createElement(E,null))),r.createElement(g.DialogContent,null,r.createElement(g.Typography,null,"Click the X icon to delete the connection from your config completely"),r.createElement("div",{className:o.connectionContainer},l.map((function(e){var t=c.readConfObject(e,"name");return r.createElement("div",{key:"conn-".concat(t)},r.createElement(g.Typography,null,i||null!=u&&u.includes(e)?r.createElement(g.IconButton,{onClick:function(){return a(e,!0)}},r.createElement(E,{color:"error"})):r.createElement(g.Tooltip,{title:"Unable to delete connection in config file as non-admin user"},r.createElement(g.IconButton,null,r.createElement(E,{color:"disabled"}))),t))})),l.length?null:r.createElement(g.Typography,null,"No connections found"))),r.createElement(g.DialogActions,null,r.createElement(g.Button,{onClick:function(){return n()},variant:"contained",color:"primary"},"Close")))}var hn={__proto__:null,default:f.observer(gn)},yn=g.makeStyles((function(e){return{closeButton:{position:"absolute",right:e.spacing(1),top:e.spacing(1),color:e.palette.grey[500]},connectionContainer:{width:500,margin:e.spacing(4)}}}));function vn(e){var t=e.session,n=e.handleClose,a=e.assemblyName,o=e.breakConnection,i=yn(),l=t.connectionInstances,u=t.connections.filter((function(e){var t=c.readConfObject(e,"assemblyNames");return 0===t.length||t.includes(a)}));return r.createElement(g.Dialog,{open:!0,onClose:n,maxWidth:"lg"},r.createElement(g.DialogTitle,null,"Turn on/off connections",r.createElement(g.IconButton,{className:i.closeButton,onClick:function(){return n()}},r.createElement(E,null))),r.createElement(g.DialogContent,null,r.createElement(g.Typography,null,"Use the checkbox to turn on/off connections"),r.createElement("div",{className:i.connectionContainer},u.map((function(e){var n=c.readConfObject(e,"name");return r.createElement("div",{key:e.connectionId},r.createElement(g.FormControlLabel,{control:r.createElement(g.Checkbox,{checked:!(null==l||!l.find((function(e){return n===e.name}))),onChange:function(){var n;null!=l&&l.find((function(t){return t.name===c.readConfObject(e,"name")}))?o(e):null===(n=t.makeConnection)||void 0===n||n.call(t,e)},color:"primary"}),label:n}))})),u.length?null:r.createElement(g.Typography,null,"No connections found for ",a))),r.createElement(g.DialogActions,null,r.createElement(g.Button,{onClick:function(){return n()},variant:"contained",color:"primary"},"Close")))}var bn={__proto__:null,default:f.observer(vn)};exports.AssemblyManager=pt,exports.SetDefaultSession=dt,exports.default=ft;
1
+ "use strict";function e(e){return e&&"object"==typeof e&&"default"in e?e.default:e}function t(e){if(e&&e.__esModule)return e;var t={};return e&&Object.keys(e).forEach((function(n){var r=Object.getOwnPropertyDescriptor(e,n);Object.defineProperty(t,n,r.get?r:{enumerable:!0,get:function(){return e[n]}})})),t.default=e,t}Object.defineProperty(exports,"__esModule",{value:!0});var n=require("react"),r=e(n),a=e(require("@jbrowse/core/pluggableElementTypes/ConnectionType")),o=e(require("@jbrowse/core/pluggableElementTypes/WidgetType")),i=e(require("@jbrowse/core/Plugin")),l=require("@jbrowse/core/pluggableElementTypes/models"),c=require("@jbrowse/core/configuration"),u=require("@jbrowse/core/util"),s=require("mobx-state-tree"),d=require("@jbrowse/core/util/io"),m=require("@jbrowse/core/util/tracks"),p=require("@jbrowse/core/util/types/mst"),f=require("mobx-react"),g=require("@material-ui/core"),h=e(require("@material-ui/icons/ExpandMore")),y=e(require("@material-ui/icons/Clear")),v=e(require("@material-ui/icons/InfoOutlined")),b=e(require("@material-ui/icons/Close")),E=e(require("@material-ui/icons/Lock")),k=require("@jbrowse/core/util/types"),C=e(require("@material-ui/icons/Person")),T=e(require("@material-ui/icons/Add")),w=e(require("@material-ui/icons/Check")),x=e(require("clsx")),S=e(require("@material-ui/core/IconButton")),L=require("@material-ui/core/styles"),N=e(require("@material-ui/icons/ArrowBackIos")),A=e(require("@material-ui/icons/Create")),D=e(require("@material-ui/icons/Delete")),I=e(require("@jbrowse/core/ui/FileSelector")),B=require("@jbrowse/plugin-config"),P=e(require("@material-ui/icons/ArrowDropDown")),j=e(require("@material-ui/icons/ArrowRight")),M=e(require("@material-ui/icons/Menu")),O=e(require("@material-ui/icons/MoreHoriz")),F=e(require("@material-ui/icons/PowerOutlined")),U=e(require("react-virtualized-auto-sizer")),_=e(require("@jbrowse/core/ui/Menu")),R=require("react-vtree"),W=require("@material-ui/lab"),q=require("@jbrowse/core/ui"),H=e(require("@material-ui/core/Button")),z=e(require("@material-ui/core/Step")),G=e(require("@material-ui/core/StepContent")),J=e(require("@material-ui/core/StepLabel")),V=e(require("@material-ui/core/Stepper")),Y=e(require("@material-ui/core/Typography")),K=e(require("@material-ui/core/MenuItem")),Q=e(require("@material-ui/core/TextField")),X=e(require("@material-ui/icons/OpenInNew"));function $(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function Z(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?$(Object(n),!0).forEach((function(t){ae(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):$(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function ee(e){return(ee="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function te(e,t,n,r,a,o,i){try{var l=e[o](i),c=l.value}catch(e){return void n(e)}l.done?t(c):Promise.resolve(c).then(r,a)}function ne(e){return function(){var t=this,n=arguments;return new Promise((function(r,a){var o=e.apply(t,n);function i(e){te(o,r,a,i,l,"next",e)}function l(e){te(o,r,a,i,l,"throw",e)}i(void 0)}))}}function re(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function ae(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function oe(e){return(oe=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function ie(e,t){return(ie=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function le(e,t){if(t&&("object"==typeof t||"function"==typeof t))return t;if(void 0!==t)throw new TypeError("Derived constructors may only return object or undefined");return function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e)}function ce(e){var t=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}();return function(){var n,r=oe(e);if(t){var a=oe(this).constructor;n=Reflect.construct(r,arguments,a)}else n=r.apply(this,arguments);return le(this,n)}}function ue(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,a,o=[],i=!0,l=!1;try{for(n=n.call(e);!(i=(r=n.next()).done)&&(o.push(r.value),!t||o.length!==t);i=!0);}catch(e){l=!0,a=e}finally{try{i||null==n.return||n.return()}finally{if(l)throw a}}return o}}(e,t)||de(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function se(e){return function(e){if(Array.isArray(e))return me(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||de(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function de(e,t){if(e){if("string"==typeof e)return me(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?me(e,t):void 0}}function me(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function pe(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=de(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var r=0,a=function(){};return{s:a,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:a}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,i=!0,l=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return i=e.done,e},e:function(e){l=!0,o=e},f:function(){try{i||null==n.return||n.return()}finally{if(l)throw o}}}}var fe=c.ConfigurationSchema("UCSCTrackHubConnection",{hubTxtLocation:{type:"fileLocation",defaultValue:{uri:"http://mysite.com/path/to/hub.txt",locationType:"UriLocation"},description:"location of the hub file (usually called hub.txt)"},assemblyNames:{type:"stringArray",defaultValue:[],description:"optional list of genomes to import from this track hub, if empty all genomes will be imported"}},{baseConfiguration:l.baseConnectionConfig});function ge(e,t){return e(t={exports:{}},t.exports),t.exports}var he=ge((function(e){var t=function(e){var t=Object.prototype,n=t.hasOwnProperty,r="function"==typeof Symbol?Symbol:{},a=r.iterator||"@@iterator",o=r.asyncIterator||"@@asyncIterator",i=r.toStringTag||"@@toStringTag";function l(e,t,n){return Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{l({},"")}catch(e){l=function(e,t,n){return e[t]=n}}function c(e,t,n,r){var a=Object.create((t&&t.prototype instanceof d?t:d).prototype),o=new T(r||[]);return a._invoke=function(e,t,n){var r="suspendedStart";return function(a,o){if("executing"===r)throw new Error("Generator is already running");if("completed"===r){if("throw"===a)throw o;return{value:void 0,done:!0}}for(n.method=a,n.arg=o;;){var i=n.delegate;if(i){var l=E(i,n);if(l){if(l===s)continue;return l}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if("suspendedStart"===r)throw r="completed",n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);r="executing";var c=u(e,t,n);if("normal"===c.type){if(r=n.done?"completed":"suspendedYield",c.arg===s)continue;return{value:c.arg,done:n.done}}"throw"===c.type&&(r="completed",n.method="throw",n.arg=c.arg)}}}(e,n,o),a}function u(e,t,n){try{return{type:"normal",arg:e.call(t,n)}}catch(e){return{type:"throw",arg:e}}}e.wrap=c;var s={};function d(){}function m(){}function p(){}var f={};l(f,a,(function(){return this}));var g=Object.getPrototypeOf,h=g&&g(g(w([])));h&&h!==t&&n.call(h,a)&&(f=h);var y=p.prototype=d.prototype=Object.create(f);function v(e){["next","throw","return"].forEach((function(t){l(e,t,(function(e){return this._invoke(t,e)}))}))}function b(e,t){var r;this._invoke=function(a,o){function i(){return new t((function(r,i){!function r(a,o,i,l){var c=u(e[a],e,o);if("throw"!==c.type){var s=c.arg,d=s.value;return d&&"object"==typeof d&&n.call(d,"__await")?t.resolve(d.__await).then((function(e){r("next",e,i,l)}),(function(e){r("throw",e,i,l)})):t.resolve(d).then((function(e){s.value=e,i(s)}),(function(e){return r("throw",e,i,l)}))}l(c.arg)}(a,o,r,i)}))}return r=r?r.then(i,i):i()}}function E(e,t){var n=e.iterator[t.method];if(void 0===n){if(t.delegate=null,"throw"===t.method){if(e.iterator.return&&(t.method="return",t.arg=void 0,E(e,t),"throw"===t.method))return s;t.method="throw",t.arg=new TypeError("The iterator does not provide a 'throw' method")}return s}var r=u(n,e.iterator,t.arg);if("throw"===r.type)return t.method="throw",t.arg=r.arg,t.delegate=null,s;var a=r.arg;return a?a.done?(t[e.resultName]=a.value,t.next=e.nextLoc,"return"!==t.method&&(t.method="next",t.arg=void 0),t.delegate=null,s):a:(t.method="throw",t.arg=new TypeError("iterator result is not an object"),t.delegate=null,s)}function k(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function C(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function T(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(k,this),this.reset(!0)}function w(e){if(e){var t=e[a];if(t)return t.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var r=-1,o=function t(){for(;++r<e.length;)if(n.call(e,r))return t.value=e[r],t.done=!1,t;return t.value=void 0,t.done=!0,t};return o.next=o}}return{next:x}}function x(){return{value:void 0,done:!0}}return m.prototype=p,l(y,"constructor",p),l(p,"constructor",m),m.displayName=l(p,i,"GeneratorFunction"),e.isGeneratorFunction=function(e){var t="function"==typeof e&&e.constructor;return!!t&&(t===m||"GeneratorFunction"===(t.displayName||t.name))},e.mark=function(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,p):(e.__proto__=p,l(e,i,"GeneratorFunction")),e.prototype=Object.create(y),e},e.awrap=function(e){return{__await:e}},v(b.prototype),l(b.prototype,o,(function(){return this})),e.AsyncIterator=b,e.async=function(t,n,r,a,o){void 0===o&&(o=Promise);var i=new b(c(t,n,r,a),o);return e.isGeneratorFunction(n)?i:i.next().then((function(e){return e.done?e.value:i.next()}))},v(y),l(y,i,"Generator"),l(y,a,(function(){return this})),l(y,"toString",(function(){return"[object Generator]"})),e.keys=function(e){var t=[];for(var n in e)t.push(n);return t.reverse(),function n(){for(;t.length;){var r=t.pop();if(r in e)return n.value=r,n.done=!1,n}return n.done=!0,n}},e.values=w,T.prototype={constructor:T,reset:function(e){if(this.prev=0,this.next=0,this.sent=this._sent=void 0,this.done=!1,this.delegate=null,this.method="next",this.arg=void 0,this.tryEntries.forEach(C),!e)for(var t in this)"t"===t.charAt(0)&&n.call(this,t)&&!isNaN(+t.slice(1))&&(this[t]=void 0)},stop:function(){this.done=!0;var e=this.tryEntries[0].completion;if("throw"===e.type)throw e.arg;return this.rval},dispatchException:function(e){if(this.done)throw e;var t=this;function r(n,r){return i.type="throw",i.arg=e,t.next=n,r&&(t.method="next",t.arg=void 0),!!r}for(var a=this.tryEntries.length-1;a>=0;--a){var o=this.tryEntries[a],i=o.completion;if("root"===o.tryLoc)return r("end");if(o.tryLoc<=this.prev){var l=n.call(o,"catchLoc"),c=n.call(o,"finallyLoc");if(l&&c){if(this.prev<o.catchLoc)return r(o.catchLoc,!0);if(this.prev<o.finallyLoc)return r(o.finallyLoc)}else if(l){if(this.prev<o.catchLoc)return r(o.catchLoc,!0)}else{if(!c)throw new Error("try statement without catch or finally");if(this.prev<o.finallyLoc)return r(o.finallyLoc)}}}},abrupt:function(e,t){for(var r=this.tryEntries.length-1;r>=0;--r){var a=this.tryEntries[r];if(a.tryLoc<=this.prev&&n.call(a,"finallyLoc")&&this.prev<a.finallyLoc){var o=a;break}}o&&("break"===e||"continue"===e)&&o.tryLoc<=t&&t<=o.finallyLoc&&(o=null);var i=o?o.completion:{};return i.type=e,i.arg=t,o?(this.method="next",this.next=o.finallyLoc,s):this.complete(i)},complete:function(e,t){if("throw"===e.type)throw e.arg;return"break"===e.type||"continue"===e.type?this.next=e.arg:"return"===e.type?(this.rval=this.arg=e.arg,this.method="return",this.next="end"):"normal"===e.type&&t&&(this.next=t),s},finish:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.finallyLoc===e)return this.complete(n.completion,n.afterLoc),C(n),s}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.tryLoc===e){var r=n.completion;if("throw"===r.type){var a=r.arg;C(n)}return a}}throw new Error("illegal catch attempt")},delegateYield:function(e,t,n){return this.delegate={iterator:w(e),resultName:t,nextLoc:n},"next"===this.method&&(this.arg=void 0),s}},e}(e.exports);try{regeneratorRuntime=t}catch(e){"object"==typeof globalThis?globalThis.regeneratorRuntime=t:Function("r","regeneratorRuntime = r")(t)}}));function ye(){return(ye=ne(he.mark((function e(n){var r;return he.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,d.openLocation(n).readFile("utf8");case 3:return r=e.sent,e.next=6,new Promise((function(e){e(t(require("@gmod/ucsc-hub")))}));case 6:return e.abrupt("return",new(0,e.sent.HubFile)(r));case 11:throw e.prev=11,e.t0=e.catch(0),new Error("Not a valid hub.txt file, got error: '".concat(e.t0,"'"));case 14:case"end":return e.stop()}}),e,null,[[0,11]])})))).apply(this,arguments)}function ve(e){return be.apply(this,arguments)}function be(){return(be=ne(he.mark((function e(n){var r;return he.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,d.openLocation(n).readFile("utf8");case 2:return r=e.sent,e.next=5,new Promise((function(e){e(t(require("@gmod/ucsc-hub")))}));case 5:return e.abrupt("return",new(0,e.sent.GenomesFile)(r));case 8:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function Ee(e){return ke.apply(this,arguments)}function ke(){return(ke=ne(he.mark((function e(n){var r;return he.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,d.openLocation(n).readFile("utf8");case 2:return r=e.sent,e.next=5,new Promise((function(e){e(t(require("@gmod/ucsc-hub")))}));case 5:return e.abrupt("return",new(0,e.sent.TrackDbFile)(r));case 8:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function Ce(e,t,n,r){var a=[];return e.forEach((function(o,i){var l=Array.from(o.keys()),c=["superTrack","compositeTrack","container","view"];if(!l.some((function(e){return c.includes(e)}))){var s=[],d=i;do{if(d=e.get(d).get("parent")){var m=ue(d.split(" "),1);s.push(e.get(d=m[0]))}}while(d);s.reverse();var p=Te(o,s.map((function(e){return e.get("shortLabel")})),t,e,r);p.trackId="ucsc-trackhub-".concat(u.objectHash(p)),p.assemblyNames=[n],a.push(p)}})),a}function Te(e,t,n,r,a){var o=e.get("type");o||(o=r.get(e.get("parent")).get("type"));var i,l,c=o.split(" ")[0];switch("bam"===c&&e.get("bigDataUrl").toLowerCase().endsWith("cram")&&(c="cram"),i=n.uri?{uri:new URL(e.get("bigDataUrl"),n.uri).href,locationType:"UriLocation"}:{localPath:e.get("bigDataUrl"),locationType:"LocalPathLocation"},c){case"bam":return l=n.uri?e.get("bigDataIndex")?{uri:new URL(e.get("bigDataIndex"),n.uri).href,locationType:"UriLocation"}:{uri:new URL("".concat(e.get("bigDataUrl"),".bai"),n.uri).href,locationType:"UriLocation"}:e.get("bigDataIndex")?{localPath:e.get("bigDataIndex"),locationType:"LocalPathLocation"}:{localPath:"".concat(e.get("bigDataUrl"),".bai"),locationType:"LocalPathLocation"},{type:"AlignmentsTrack",name:e.get("shortLabel"),description:e.get("longLabel"),category:t,adapter:{type:"BamAdapter",bamLocation:i,index:{location:l}}};case"bed":case"bed5FloatScore":case"bedGraph":case"bedRnaElements":return m.generateUnsupportedTrackConf(e.get("shortLabel"),c,t);case"bigBarChart":return{type:"FeatureTrack",name:e.get("shortLabel"),description:e.get("longLabel"),category:t,adapter:{type:"BigBedAdapter",bigBedLocation:i},renderer:{type:"SvgFeatureRenderer"}};case"bigBed":case"bigGenePred":return{type:"FeatureTrack",name:e.get("shortLabel"),description:e.get("longLabel"),category:t,adapter:{type:"BigBedAdapter",bigBedLocation:i}};case"bigChain":case"bigInteract":case"bigMaf":case"bigPsl":return{type:"FeatureTrack",name:e.get("shortLabel"),description:e.get("longLabel"),category:t,adapter:{type:"BigBedAdapter",bigBedLocation:i},renderer:{type:"SvgFeatureRenderer"}};case"bigWig":return{type:"QuantitativeTrack",name:e.get("shortLabel"),description:e.get("longLabel"),category:t,adapter:{type:"BigWigAdapter",bigWigLocation:i}};case"broadPeak":case"coloredExon":return m.generateUnsupportedTrackConf(e.get("shortLabel"),c,t);case"cram":return l=n.uri?e.get("bigDataIndex")?{uri:new URL(e.get("bigDataIndex"),n.uri).href,locationType:"UriLocation"}:{uri:new URL("".concat(e.get("bigDataUrl"),".crai"),n.uri).href,locationType:"UriLocation"}:e.get("bigDataIndex")?{localPath:e.get("bigDataIndex"),locationType:"LocalPathLocation"}:{localPath:"".concat(e.get("bigDataUrl"),".crai"),locationType:"LocalPathLocation"},{type:"AlignmentsTrack",name:e.get("shortLabel"),description:e.get("longLabel"),category:t,adapter:{type:"CramAdapter",cramLocation:i,craiLocation:l,sequenceAdapter:a}};case"gvf":case"ld2":case"narrowPeak":return m.generateUnsupportedTrackConf(e.get("shortLabel"),c,t);case"bigNarrowPeak":return{type:"FeatureTrack",name:e.get("shortLabel"),description:e.get("longLabel"),category:t,adapter:{type:"BigBedAdapter",bigBedLocation:i}};case"peptideMapping":return m.generateUnsupportedTrackConf(e.get("shortLabel"),c,t);case"vcfTabix":return l=n.uri?e.get("bigDataIndex")?{uri:new URL(e.get("bigDataIndex"),n.uri).href,locationType:"UriLocation"}:{uri:new URL("".concat(e.get("bigDataUrl"),".tbi"),n.uri).href,locationType:"UriLocation"}:e.get("bigDataIndex")?{localPath:e.get("bigDataIndex"),locationType:"LocalPathLocation"}:{localPath:"".concat(e.get("bigDataUrl"),".tbi"),locationType:"LocalPathLocation"},{type:"VariantTrack",name:e.get("shortLabel"),description:e.get("longLabel"),category:t,adapter:{type:"VcfTabixAdapter",vcfGzLocation:i,index:{location:l}}};case"wig":case"wigMaf":return m.generateUnsupportedTrackConf(e.get("shortLabel"),c,t);case"hic":return{type:"HicTrack",name:e.get("shortLabel"),description:e.get("longLabel"),category:t,adapter:{type:"HicAdapter",hicLocation:i}};case"halSnake":return m.generateUnsupportedTrackConf(e.get("shortLabel"),c,t);default:return m.generateUnknownTrackConf(e.get("shortLabel"),c,t)}}function we(e){return s.types.compose("UCSCTrackHubConnection",l.BaseConnectionModelFactory(e),s.types.model({configuration:c.ConfigurationReference(fe),type:s.types.literal("UCSCTrackHubConnection")}).actions((function(e){return{connect:function(){var t=c.getConf(e,"name"),n=c.getConf(e,"hubTxtLocation"),r=u.getSession(e);(function(e){return ye.apply(this,arguments)})(n).then((function(e){var t=n.uri?{uri:new URL(e.get("genomesFile"),n.uri).href,locationType:"UriLocation"}:{localPath:e.get("genomesFile"),locationType:"LocalPathLocation"};return Promise.all([e,ve(t)])})).then((function(a){var o,i=ue(a,2),l=i[0],u=[],s=pe(i[1]);try{var d=function(){var a=ue(o.value,2),i=a[0],s=a[1],d=c.getConf(e,"assemblyNames");if(d.length>0&&!d.includes(i))return"break";var m=r.assemblies.find((function(e){return c.readConfObject(e,"name")===i}));if(!m)throw new Error('Cannot find assembly for "'.concat(i,'" from the genomes file for connection "').concat(t,'"'));var p=n.uri?{uri:new URL(s.get("trackDb"),new URL(l.get("genomesFile"),n.uri)).href,locationType:"UriLocation"}:{localPath:s.get("trackDb"),locationType:"LocalPathLocation"};u.push(Promise.all([p,Ee(p),i,m]))};for(s.s();!(o=s.n()).done&&"break"!==d(););}catch(e){s.e(e)}finally{s.f()}return Promise.all([].concat(u))})).then((function(t){var n,r=pe(t);try{for(r.s();!(n=r.n()).done;){var a=ue(n.value,4),o=Ce(a[1],a[0],a[2],c.readConfObject(a[3],["sequence","adapter"]));e.addTrackConfs(o)}}catch(e){r.e(e)}finally{r.f()}})).catch((function(t){console.error(t),r.notify('There was a problem connecting to the UCSC Track Hub "'.concat(e.name,'". Please make sure you have entered a valid hub.txt file. The error that was thrown is: "').concat(t,'"'),"error"),r.breakConnection(e.configuration)}))}}})))}function xe(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";try{return new URL(e),!0}catch(t){return e.startsWith("/")}}function Se(e){return s.types.model("AddTrackModel",{id:p.ElementId,type:s.types.literal("AddTrackWidget"),view:s.types.safeReference(e.pluggableMstType("view","stateModel"))}).volatile((function(){return{trackSource:"fromFile",trackData:void 0,indexTrackData:void 0,altAssemblyName:"",altTrackName:"",altTrackType:"",adapterHint:""}})).actions((function(e){return{setAdapterHint:function(t){e.adapterHint=t},setTrackSource:function(t){e.trackSource=t},setTrackData:function(t){e.trackData=t},setIndexTrackData:function(t){e.indexTrackData=t},setAssembly:function(t){e.altAssemblyName=t},setTrackName:function(t){e.altTrackName=t},setTrackType:function(t){e.altTrackType=t},clearData:function(){e.trackSource="",e.altTrackName="",e.altTrackType="",e.altAssemblyName="",e.adapterHint="",e.indexTrackData=void 0,e.trackData=void 0}}})).views((function(e){return{get trackAdapter(){var t=e.trackData;return t?m.guessAdapter(t,e.indexTrackData,e.adapterHint,e):void 0},get trackName(){return e.altTrackName||(e.trackData?m.getFileName(e.trackData):"")},get isFtp(){var t,n,r=e.trackData,a=e.indexTrackData;return!!(null!=a&&null!==(t=a.uri)&&void 0!==t&&t.startsWith("ftp://")||null!=r&&null!==(n=r.uri)&&void 0!==n&&n.startsWith("ftp://"))},get isRelativeTrackUrl(){var t,n=null===(t=e.trackData)||void 0===t?void 0:t.uri;return!!n&&!xe(n)},get isRelativeIndexUrl(){var t,n=null===(t=e.indexTrackData)||void 0===t?void 0:t.uri;return!!n&&!xe(n)},get isRelativeUrl(){return this.isRelativeIndexUrl||this.isRelativeTrackUrl},get trackHttp(){var t,n;return null===(t=e.trackData)||void 0===t||null===(n=t.uri)||void 0===n?void 0:n.startsWith("http://")},get indexHttp(){var t,n;return null===(t=e.indexTrackData)||void 0===t||null===(n=t.uri)||void 0===n?void 0:n.startsWith("http://")},get wrongProtocol(){return"https:"===window.location.protocol&&(this.trackHttp||this.indexHttp)},get unsupported(){var e;return(null===(e=this.trackAdapter)||void 0===e?void 0:e.type)===m.UNSUPPORTED},get assembly(){var t;return e.altAssemblyName||(null===(t=e.view.assemblyNames)||void 0===t?void 0:t[0])},get trackType(){return e.altTrackType||(this.trackAdapter?m.guessTrackType(this.trackAdapter.type,e):"")}}})).views((function(e){return{get warningMessage(){return e.isFtp?"Warning: JBrowse cannot access files using the ftp protocol":e.isRelativeUrl?"Warning: one or more of your files do not provide the protocol e.g.\n https://, please provide an absolute URL unless you are sure a\n relative URL is intended.":e.wrongProtocol?"Warning: You entered a http:// resources but we cannot access HTTP\n resources from JBrowse when it is running on https. Please use an\n https URL for your track, or access the JBrowse app from the http\n protocol":""}}}))}var Le=c.ConfigurationSchema("AddTrackWidget",{}),Ne=s.types.model("AddConnectionModel",{id:p.ElementId,type:s.types.literal("AddConnectionWidget")}),Ae=c.ConfigurationSchema("AddConnectionWidget",{}),De=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];return!!e.find((function(e){return t.includes(e)}))};function Ie(e){if(!e.trackId)throw new Error("not a track");return c.readConfObject(e,"name")||"Reference sequence (".concat(c.readConfObject(s.getParent(e),"name"),")")}function Be(e,t,n){var r={children:[]},a=e.filterText,o=e.view;return t.filter((function(e){return t=a,r=Ie(n=e),o=c.readConfObject(n,"category")||[],i=t.toLowerCase(),!!r.toLowerCase().includes(i)||o.filter((function(e){return!!e.toLowerCase().includes(i)})).length;var t,n,r,o,i})).forEach((function(e){var t=se(c.readConfObject(e,"category")||[]);e.trackId.endsWith("sessionTrack")&&t.unshift(" Session tracks");for(var a=r,i=function(e){var r=t[e],o=a.children.find((function(e){return e.name===r})),i=t.slice(0,e+1).join(",");if(o)a=o;else{var l={children:[],name:r,id:i,isOpenByDefault:!n.get(i)};a.children.push(l),a=l}},l=0;l<t.length;l++)i(l);a.children.splice(a.children.findIndex((function(e){return e.children.length})),0,{id:e.trackId,name:Ie(e),conf:e,checked:!!o.tracks.find((function(t){return t.configuration===e})),children:[]})})),r.children}var Pe=function(e){return s.types.model("HierarchicalTrackSelectorWidget",{id:p.ElementId,type:s.types.literal("HierarchicalTrackSelectorWidget"),collapsed:s.types.map(s.types.boolean),filterText:"",view:s.types.safeReference(e.pluggableMstType("view","stateModel"))}).actions((function(e){return{setView:function(t){e.view=t},toggleCategory:function(t){e.collapsed.set(t,!e.collapsed.get(t))},clearFilterText:function(){e.filterText=""},setFilterText:function(t){e.filterText=t}}})).views((function(t){return{getRefSeqTrackConf:function(n){var r=u.getSession(t).assemblyManager.get(n),a=null==r?void 0:r.configuration.sequence,o=e.getViewType(t.view.type);if(a){var i,l=pe(a.displays);try{var c=function(){var e=i.value;if(o.displayTypes.find((function(t){return t.name===e.type})))return{v:a}};for(l.s();!(i=l.n()).done;){var s=c();if("object"===ee(s))return s.v}}catch(e){l.e(e)}finally{l.f()}}},trackConfigurations:function(n){if(!t.view)return[];var r=u.getSession(t),a=r.tracks,o=r.assemblyManager.get(n);if(!o)return[];var i=t.getRefSeqTrackConf(n);return(i?[i]:[]).concat(se(a.filter((function(e){var t=c.readConfObject(e,"assemblyNames");return De(o.allAliases,t)})).filter((function(n){var r=e.getViewType(t.view.type).displayTypes.map((function(e){return e.name})),a=n.displays.map((function(e){return e.type}));return De(r,a)}))))},get assemblyNames(){return t.view?t.view.assemblyNames:[]},connectionTrackConfigurations:function(n,r){if(!t.view)return[];var a=r.tracks,o=u.getSession(t).assemblyManager.get(n);return o&&o.initialized?a.filter((function(e){var t=c.readConfObject(e,"assemblyNames");return De(o.allAliases,t)})).filter((function(n){var r=e.getViewType(t.view.type).displayTypes.map((function(e){return e.name})),a=n.displays.map((function(e){return e.type}));return De(r,a)})):[]},hierarchy:function(e){var n=this,r=Be(t,t.trackConfigurations(e),t.collapsed),a=u.getSession(t),o=a.connectionInstances.filter((function(t){var n=c.readConfObject(t.configuration,"assemblyNames");return 0===n.length||n.includes(e)})).map((function(t,r){var o=a.connections[r];return{id:o.connectionId,name:c.readConfObject(o,"name"),children:n.connectionHierarchy(e,t),state:{expanded:!0}}}));return{name:"Root",id:"Root",children:[{name:"Tracks",id:"Tracks",children:r}].concat(se(o))}},connectionHierarchy:function(e,n){return Be(t,t.connectionTrackConfigurations(e,n),t.collapsed)},allTracksInCategoryPath:function(e,n,r){var a=n?t.connectionHierarchy(n):t.hierarchy(r);e.forEach((function(e){a=a.get(e)||new Map}));var o={};return a.forEach((function(n,r){n.trackId?o[n.trackId]=n:o=Object.assign(o,t.allTracksInCategoryPath(e.concat([r])))})),o}}}))},je=c.ConfigurationSchema("HierarchicalTrackSelectorWidget",{}),Me=g.makeStyles((function(){return{closeDialog:{position:"absolute",right:0,top:0},dialogContainer:{margin:15},lockedPluginTooltip:{marginRight:"0.5rem"}}}));function Oe(){var e=Me();return r.createElement(g.Tooltip,{className:e.lockedPluginTooltip,title:"This plugin was installed by an administrator, you cannot remove it."},r.createElement(E,null))}function Fe(e){var t=e.onClose,n=e.plugin,a=Me();return r.createElement(g.Dialog,{open:!0,onClose:function(){return t()}},r.createElement(g.DialogTitle,null,r.createElement(g.IconButton,{className:a.closeDialog,"aria-label":"close-dialog",onClick:function(){return t()}},r.createElement(b,null))),r.createElement(g.DialogContent,null,r.createElement(g.Typography,null,"Please confirm that you want to remove ",n,". Note: if any resources in this session still use this plugin, it may cause your session to crash"),r.createElement(g.DialogActions,null,r.createElement(g.Button,{variant:"contained",color:"primary",onClick:function(){window.setTimeout((function(){t(n)}),500)}},"Confirm"),r.createElement(g.Button,{variant:"contained",color:"secondary",onClick:function(){t()}},"Cancel"))))}function Ue(e){var t=e.plugin,a=e.model,o=e.pluginManager,i=ue(n.useState(),2),l=i[0],c=i[1],d=u.getSession(a),m=d.sessionPlugins,p=null==m?void 0:m.some((function(e){return o.pluginMetadata[t.name].url===e.url})),f=s.getParent(a,3),h=f.jbrowse,y=f.adminMode;return r.createElement(r.Fragment,null,l?r.createElement(Fe,{plugin:l,onClose:function(e){if(e){var n=o.pluginMetadata[t.name];y?h.removePlugin(n):k.isSessionWithSessionPlugins(d)&&d.removeSessionPlugin(n)}c(void 0)}}):null,r.createElement(g.ListItem,{key:t.name},y||p?r.createElement(g.IconButton,{"aria-label":"removePlugin","data-testid":"removePlugin-".concat(t.name),onClick:function(){return c(t.name)}},r.createElement(b,null)):r.createElement(Oe,null),r.createElement(g.Typography,null,t.name)))}var _e=f.observer(Ue);function Re(e){var t=e.pluginManager,n=e.model,a=t.plugins,o=a.filter((function(e){var n;return null===(n=t.pluginMetadata[e.name])||void 0===n?void 0:n.isCore})).map((function(e){return e.name})),i=a.filter((function(e){return!o.includes(e.name)}));return r.createElement(g.List,null,i.length?i.filter((function(e){return e.name.toLowerCase().includes(n.filterText.toLowerCase())})).map((function(e){return r.createElement(_e,{key:e.name,plugin:e,model:n,pluginManager:t})})):r.createElement(g.Typography,null,"No plugins currently installed"))}var We=f.observer(Re),qe=g.makeStyles((function(){return{card:{margin:"1em"},icon:{marginLeft:"0.5em",marginRight:"0.5em"},bold:{fontWeight:600},dataField:{display:"flex",alignItems:"center",margin:"0.4em 0em"}}}));function He(e){var t=e.plugin,a=e.model,o=e.adminMode,i=qe(),l=u.getSession(a),c=s.getEnv(a),d=Boolean(c.pluginManager.runtimePluginDefinitions.find((function(e){return e.url===t.url}))),m=ue(n.useState(!1),2),p=m[1],f=d||m[0],h=s.getParent(a,3).jbrowse;return r.createElement(g.Card,{variant:"outlined",key:t.name,className:i.card},r.createElement(g.CardContent,null,r.createElement("div",{className:i.dataField},r.createElement(g.Typography,{variant:"h5"},r.createElement(g.Link,{href:"".concat(t.location,"#readme"),target:"_blank",rel:"noopener"},t.name))),r.createElement("div",{className:i.dataField},r.createElement(C,{style:{marginRight:"0.5em"}}),r.createElement(g.Typography,null,t.authors.join(", "))),r.createElement(g.Typography,{className:i.bold},"Description:"),r.createElement(g.Typography,null,t.description)),r.createElement(g.CardActions,null,r.createElement(g.Button,{variant:"contained",color:"primary",disabled:f,startIcon:r.createElement(d?w:T,null),onClick:function(){o?h.addPlugin({name:t.name,url:t.url}):k.isSessionWithSessionPlugins(l)&&l.addSessionPlugin(t),p(!0)}},d?"Installed":"Install")))}var ze=f.observer(He),Ge=g.makeStyles((function(e){return{closeButton:{position:"absolute",right:e.spacing(1),top:e.spacing(1)},dialogContent:{display:"flex",flexDirection:"column"},expand:{transform:"rotate(0deg)",marginLeft:"auto",transition:e.transitions.create("transform",{duration:e.transitions.duration.shortest})},expandOpen:{transform:"rotate(180deg)"}}}));function Je(e){var t=e.open,a=e.onClose,o=e.model,i=Ge(),l=ue(n.useState(""),2),c=l[0],u=l[1],d=ue(n.useState(""),2),m=d[0],p=d[1],f=ue(n.useState(""),2),y=f[0],v=f[1],E=ue(n.useState(""),2),k=E[0],C=E[1],T=ue(n.useState(!1),2),w=T[0],L=T[1];function N(e){var t=e.target,n=t.name,r=t.value;"umdName"===n&&u(r),"umdUrl"===n&&p(r),"esmUrl"===n&&v(r),"cjsUrl"===n&&C(r)}var A=s.getRoot(o).jbrowse,D=Boolean(c&&m||y||k);function I(){if(D){var e={};c&&m&&(e.name=c,e.umdUrl=m),y&&(e.esmUrl=y),k&&(e.cjsUrl=k),A.addPlugin(e)}}function B(){u(""),p(""),v(""),C(""),a()}return r.createElement(g.Dialog,{open:t,onClose:B},r.createElement(g.DialogTitle,null,"Add custom plugin",r.createElement(S,{size:"medium",className:i.closeButton,onClick:function(){return a()}},r.createElement(b,null))),r.createElement("form",{onSubmit:I},r.createElement(g.DialogContent,{className:i.dialogContent},r.createElement(g.DialogContentText,null,"Enter the name of the plugin and its URL. The name should match what is defined in the plugin's build."),r.createElement(g.TextField,{id:"umd-name-input",name:"umdName",label:"Plugin name",variant:"outlined",value:c,onChange:N}),r.createElement(g.TextField,{id:"umd-url-input",name:"umdUrl",label:"Plugin URL",variant:"outlined",value:m,onChange:N}),r.createElement(g.DialogContentText,{onClick:function(){L(!w)}},r.createElement(S,{className:x(i.expand,ae({},i.expandOpen,w)),"aria-expanded":w,"aria-label":"show more"},r.createElement(h,null)),"Advanced options"),r.createElement(g.Collapse,{in:w},r.createElement("div",{className:i.dialogContent},r.createElement(g.DialogContentText,null,"The above fields assume that the plugin is built in UMD format. If your plugin is in another format, or you have additional builds you want to add (such as a CJS build for using NodeJS APIs in desktop), you can enter the URLs for those builds below."),r.createElement(g.TextField,{id:"esm-url-input",name:"esmUrl",label:"ESM build URL",variant:"outlined",value:y,onChange:N}),r.createElement(g.TextField,{id:"cjs-url-input",name:"cjsUrl",label:"CJS build URL",variant:"outlined",value:k,onChange:N})))),r.createElement(g.DialogActions,null,r.createElement(g.Button,{variant:"contained",onClick:B},"Cancel"),r.createElement(g.Button,{variant:"contained",color:"primary",onClick:I,disabled:!D},"Submit"))))}var Ve=f.observer(Je),Ye=g.makeStyles((function(e){return{root:{margin:e.spacing(1)},expandIcon:{color:"#fff"},adminBadge:{margin:"0.5em",borderRadius:3,backgroundColor:"#FFB11D",padding:"1em",display:"flex",alignContent:"center"},customPluginButton:{margin:"0.5em",display:"flex",justifyContent:"center"}}}));function Ke(e){var t=e.model,a=Ye(),o=ue(n.useState(),2),i=o[0],l=o[1],c=ue(n.useState(),2),d=c[0],m=c[1],p=ue(n.useState(!1),2),f=p[0],b=p[1],E=u.getSession(t).adminMode,k=s.getEnv(t).pluginManager;return n.useEffect((function(){var e=new AbortController,t=e.signal;return ne(he.mark((function e(){var n,r,a;return he.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,fetch("https://jbrowse.org/plugin-store/plugins.json",{signal:t});case 3:if((n=e.sent).ok){e.next=9;break}return e.next=7,n.text();case 7:throw r=e.sent,new Error("Failed to fetch plugin data: ".concat(n.status," ").concat(n.statusText," ").concat(r));case 9:return e.next=11,n.json();case 11:a=e.sent,t.aborted||l(a.plugins),e.next=19;break;case 15:e.prev=15,e.t0=e.catch(0),console.error(e.t0),m(e.t0);case 19:case"end":return e.stop()}}),e,null,[[0,15]])})))(),function(){e.abort()}}),[]),r.createElement("div",{className:a.root},E&&r.createElement(r.Fragment,null,!u.isElectron&&r.createElement("div",{className:a.adminBadge},r.createElement(v,{style:{marginRight:"0.3em"}}),r.createElement(g.Typography,null,"You are using the ",r.createElement("code",null,"admin-server"),". Any changes you make will be saved to your configuration file. You also have the ability to add custom plugins that are not in the store.")),r.createElement("div",{className:a.customPluginButton},r.createElement(g.Button,{variant:"contained",color:"primary",onClick:function(){return b(!0)}},"Add custom plugin")),r.createElement(Ve,{open:f,onClose:function(){return b(!1)},model:t})),r.createElement(g.TextField,{label:"Filter plugins",value:t.filterText,onChange:function(e){return t.setFilterText(e.target.value)},fullWidth:!0,InputProps:{endAdornment:r.createElement(g.InputAdornment,{position:"end"},r.createElement(g.IconButton,{color:"secondary",onClick:function(){return t.clearFilterText()}},r.createElement(y,null)))}}),r.createElement(g.Accordion,{defaultExpanded:!0},r.createElement(g.AccordionSummary,{expandIcon:r.createElement(h,{className:a.expandIcon})},r.createElement(g.Typography,{variant:"h5"},"Installed plugins")),r.createElement("div",{style:{margin:"1em"}},r.createElement(We,{pluginManager:k,model:t}))),r.createElement(g.Accordion,{defaultExpanded:!0},r.createElement(g.AccordionSummary,{expandIcon:r.createElement(h,{className:a.expandIcon})},r.createElement(g.Typography,{variant:"h5"},"Available plugins")),d?r.createElement(g.Typography,{color:"error"},"".concat(d)):i?i.filter((function(e){return!!(u.isElectron||e.esmUrl||e.url||e.umdUrl)&&e.name.toLowerCase().includes(t.filterText.toLowerCase())})).map((function(e){return r.createElement(ze,{key:e.name,plugin:e,model:t,adminMode:!!E})})):r.createElement(g.Typography,null,"Loading...")))}var Qe={__proto__:null,default:f.observer(Ke)};function Xe(e){return s.types.model("PluginStoreModel",{id:p.ElementId,type:s.types.literal("PluginStoreWidget"),filterText:"",view:s.types.safeReference(e.pluggableMstType("view","stateModel"))}).actions((function(e){return{clearFilterText:function(){e.filterText=""},setFilterText:function(t){e.filterText=t}}}))}var $e=c.ConfigurationSchema("PluginStoreWidget",{}),Ze=n.lazy((function(){return Promise.resolve().then((function(){return nt}))})),et=n.lazy((function(){return Promise.resolve().then((function(){return mt}))})),tt=function(e){!function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");Object.defineProperty(e,"prototype",{value:Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),writable:!1}),t&&ie(e,t)}(c,i);var t,r,l=ce(c);function c(){var e;return re(this,c),(e=l.apply(this,arguments)).name="DataManagementPlugin",e.exports={AssemblyManager:et,SetDefaultSession:Ze},e}return t=c,(r=[{key:"install",value:function(e){e.addConnectionType((function(){return new a({name:"UCSCTrackHubConnection",configSchema:fe,stateModel:we(e),displayName:"UCSC Track Hub",description:"A track or assembly hub in the Track Hub format",url:"//genome.ucsc.edu/goldenPath/help/hgTrackHubHelp.html#Intro"})})),e.addWidgetType((function(){return new o({name:"HierarchicalTrackSelectorWidget",heading:"Available tracks",configSchema:je,stateModel:Pe(e),ReactComponent:n.lazy((function(){return Promise.resolve().then((function(){return St}))}))})})),e.addWidgetType((function(){return new o({name:"AddTrackWidget",heading:"Add a track",configSchema:Le,stateModel:Se(e),ReactComponent:n.lazy((function(){return Promise.resolve().then((function(){return Wt}))}))})})),e.addWidgetType((function(){return new o({name:"AddConnectionWidget",heading:"Add a connection",configSchema:Ae,stateModel:Ne,ReactComponent:n.lazy((function(){return Promise.resolve().then((function(){return Vt}))}))})})),e.addWidgetType((function(){return new o({name:"PluginStoreWidget",heading:"Plugin store",configSchema:$e,stateModel:Xe(e),ReactComponent:n.lazy((function(){return Promise.resolve().then((function(){return Qe}))}))})}))}},{key:"configure",value:function(e){}}])&&function(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}(t.prototype,r),Object.defineProperty(t,"prototype",{writable:!1}),c}(),nt={__proto__:null,default:f.observer((function(e){var t,n=e.rootModel,a=e.onClose;if(!n)return null;if("object"!==ee(t=n)||!t||!("jbrowse"in t))return console.error("Incorrect rootmodel"),null;var o=n.jbrowse,i=n.session;return r.createElement(g.Dialog,{open:!0,onClose:a},r.createElement(g.DialogTitle,null,"Set default session"),r.createElement(g.DialogContent,null,r.createElement(g.Typography,null,'Select "Set current session as default" to make your current session saved to the config file. You can also hit "Clear default session", which would remove the default session from the config.')),r.createElement(g.DialogActions,null,r.createElement(g.Button,{variant:"contained",onClick:function(){o.setDefaultSessionConf({name:"New session"}),a()}},"Clear default session"),r.createElement(g.Button,{color:"secondary",variant:"contained",onClick:function(){return a()}},"Cancel"),r.createElement(g.Button,{color:"primary",variant:"contained",onClick:function(){o.setDefaultSessionConf(i),a()}},"Set current session as default")))}))},rt=g.makeStyles((function(){return{table:{minWidth:500,minHeight:150},buttonCell:{padding:3},button:{display:"inline-block",padding:3,minHeight:0,minWidth:0}}})),at=f.observer((function(e){var t=e.rootModel,n=e.setIsAssemblyBeingEdited,a=e.setAssemblyBeingEdited,o=rt(),i=t.jbrowse.assemblies.map((function(e){var i=c.readConfObject(e,"name"),l=c.readConfObject(e,"displayName"),u=c.readConfObject(e,"aliases");return r.createElement(g.TableRow,{key:i},r.createElement(g.TableCell,null,i),r.createElement(g.TableCell,null,l),r.createElement(g.TableCell,null,u?u.toString():""),r.createElement(g.TableCell,{className:o.buttonCell},r.createElement(g.IconButton,{"data-testid":"".concat(i,"-edit"),className:o.button,onClick:function(){n(!0),a(e)}},r.createElement(A,{color:"primary"})),r.createElement(g.IconButton,{"data-testid":"".concat(i,"-delete"),className:o.button,onClick:function(){!function(e){t.jbrowse.removeAssemblyConf(e)}(i)}},r.createElement(D,{color:"error"}))))}));return r.createElement(g.TableContainer,{component:g.Paper},r.createElement(g.Table,{className:o.table},r.createElement(g.TableHead,null,r.createElement(g.TableRow,null,r.createElement(g.TableCell,null,r.createElement(g.Typography,{variant:"h5"},"Name")),r.createElement(g.TableCell,null,r.createElement(g.Typography,{variant:"h5"},"Display name")),r.createElement(g.TableCell,null,r.createElement(g.Typography,{variant:"h5"},"Aliases")),r.createElement(g.TableCell,null,r.createElement(g.Typography,{variant:"h5"},"Actions")))),r.createElement(g.TableBody,null,i)))})),ot=g.makeStyles((function(e){return{root:{flexGrow:1,overflow:"hidden",padding:e.spacing(0,3)},paper:{margin:"".concat(e.spacing(1),"px auto"),padding:e.spacing(2)},createButton:{marginTop:"1em",justifyContent:"center"},paperContent:{flex:"auto",margin:"".concat(e.spacing(1),"px auto"),padding:e.spacing(1),overflow:"auto"}}})),it=f.observer((function(e){var t=e.setAdapterSelection;return r.createElement(g.TextField,{value:e.adapterSelection,label:"Type",select:!0,helperText:"Type of adapter to use",fullWidth:!0,onChange:function(e){t(e.target.value)}},e.adapterTypes.map((function(e){return r.createElement(g.MenuItem,{key:e,value:e},e)})))})),lt=f.observer((function(e){var t=e.adapterSelection,n=e.setFastaLocation,a=e.faiLocation,o=e.setFaiLocation,i=e.gziLocation,l=e.setGziLocation,c=e.twoBitLocation,u=e.setTwoBitLocation,s=e.chromSizesLocation,d=e.setChromSizesLocation;return"IndexedFastaAdapter"===t||"BgzipFastaAdapter"===t?r.createElement(g.Grid,{container:!0,spacing:2},r.createElement(g.Grid,{item:!0},r.createElement(I,{name:"fastaLocation",location:e.fastaLocation,setLocation:function(e){return n(e)}})),r.createElement(g.Grid,{item:!0},r.createElement(I,{name:"faiLocation",location:a,setLocation:function(e){return o(e)}})),"BgzipFastaAdapter"===t?r.createElement(g.Grid,{item:!0},r.createElement(I,{name:"gziLocation",location:i,setLocation:function(e){return l(e)}})):null):"TwoBitAdapter"===t?r.createElement(g.Grid,{container:!0,spacing:2},r.createElement(g.Grid,{item:!0},r.createElement(I,{name:"twoBitLocation",location:c,setLocation:function(e){return u(e)}})),r.createElement(g.Grid,{item:!0},r.createElement(I,{name:"chromSizesLocation (optional, can be added to speed up loading 2bit files with many contigs)",location:s,setLocation:function(e){return d(e)}}))):null})),ct={uri:""},ut=f.observer((function(e){var t=e.rootModel,a=e.setFormOpen,o=ot(),i=["IndexedFastaAdapter","BgzipFastaAdapter","TwoBitAdapter"],l=ue(n.useState(""),2),c=l[0],u=l[1],s=ue(n.useState(""),2),d=s[0],m=s[1],p=ue(n.useState(i[0]),2),f=p[0],h=p[1],y=ue(n.useState(ct),2),v=y[0],b=y[1],E=ue(n.useState(ct),2),k=E[0],C=E[1],w=ue(n.useState(ct),2),x=w[0],S=w[1],L=ue(n.useState(ct),2),N=L[0],A=L[1],D=ue(n.useState(ct),2),I=D[0],B=D[1];return r.createElement("div",{className:o.root},r.createElement(g.Paper,{className:o.paper},r.createElement(g.TextField,{id:"assembly-name",inputProps:{"data-testid":"assembly-name"},label:"Assembly name",helperText:"The assembly name e.g. hg38",variant:"outlined",value:c,onChange:function(e){return u(e.target.value)}}),r.createElement(g.TextField,{id:"assembly-name",inputProps:{"data-testid":"assembly-display-name"},label:"Assembly display name",helperText:'A human readable display name for the assembly e.g. "Homo sapiens (hg38)"',variant:"outlined",value:d,onChange:function(e){return m(e.target.value)}}),r.createElement(it,{adapterSelection:f,setAdapterSelection:h,adapterTypes:i}),r.createElement("div",{className:o.paperContent},r.createElement(lt,{adapterSelection:f,fastaLocation:v,setFastaLocation:b,faiLocation:k,setFaiLocation:C,gziLocation:x,setGziLocation:S,twoBitLocation:N,setTwoBitLocation:A,chromSizesLocation:I,setChromSizesLocation:B}))),r.createElement(g.Grid,{container:!0,className:o.createButton},r.createElement(g.Grid,{item:!0},r.createElement(g.Button,{variant:"contained",color:"secondary",startIcon:r.createElement(T,null),onClick:function(){var e;""===c?t.session.notify("Can't create an assembly without a name"):(a(!1),"IndexedFastaAdapter"===f?e={name:c,displayName:d,sequence:{adapter:{type:"IndexedFastaAdapter",fastaLocation:v,faiLocation:k}}}:"BgzipFastaAdapter"===f?e={name:c,displayName:d,sequence:{adapter:{type:"BgzipFastaAdapter",fastaLocation:v,faiLocation:k,gziLocation:x}}}:"TwoBitAdapter"===f&&(e={name:c,displayName:d,sequence:{adapter:{type:"TwoBitAdapter",twoBitLocation:N,chromSizesLocation:I}}}),t.jbrowse.addAssemblyConf(e),t.session.notify("Successfully added ".concat(c," assembly to JBrowse 2"),"success"))}},"Create new assembly"))))})),st=f.observer((function(e){return r.createElement(B.ConfigurationEditor,{model:{target:e.assembly}})})),dt=L.makeStyles((function(e){return{titleBox:{color:"#fff",backgroundColor:e.palette.primary.main,textAlign:"center"},dialogContent:{width:"100%"},backButton:{color:"#fff",position:"absolute",left:e.spacing(4),top:e.spacing(4)},closeButton:{position:"absolute",right:e.spacing(1),top:e.spacing(1),color:e.palette.grey[500]}}})),mt={__proto__:null,default:f.observer((function(e){var t,a=e.rootModel,o=e.onClose,i=dt(),l=ue(n.useState(!1),2),c=l[0],u=l[1],s=ue(n.useState(!1),2),d=s[0],m=s[1],p=ue(n.useState(),2),f=p[0],h=p[1],y=!c&&!d;return r.createElement(g.Dialog,{open:!0,onClose:function(){return o(!1)}},r.createElement(g.DialogTitle,{className:i.titleBox},y?"Assembly manager":null,c?r.createElement(r.Fragment,null,r.createElement(g.IconButton,{"aria-label":"back",className:i.backButton,onClick:function(){return u(!1)}},r.createElement(N,null)),"Add new assembly"):null,d?r.createElement(r.Fragment,null,r.createElement(g.IconButton,{"aria-label":"back",className:i.backButton,onClick:function(){return m(!1)}},r.createElement(N,null)),void 0!==(t=f)?t.name:null):null,r.createElement(g.IconButton,{"aria-label":"close",className:i.closeButton,onClick:function(){return o(!1)}},r.createElement(b,null))),r.createElement(g.DialogContent,null,r.createElement("div",{className:i.dialogContent},y?r.createElement(at,{rootModel:a,setIsAssemblyBeingEdited:m,setAssemblyBeingEdited:h}):null,d?r.createElement(st,{assembly:f}):null,c?r.createElement(ut,{rootModel:a,setFormOpen:u}):null)),r.createElement(g.DialogActions,null,y?r.createElement(r.Fragment,null,r.createElement(g.Button,{color:"secondary",variant:"contained",onClick:function(){return o(!1)}},"Close"),r.createElement(g.Button,{variant:"contained",color:"secondary",startIcon:r.createElement(T,null),onClick:function(){return u(!0)}},"Add new assembly")):null))}))},pt=n.lazy((function(){return Promise.resolve().then((function(){return Kt}))})),ft=n.lazy((function(){return Promise.resolve().then((function(){return Xt}))})),gt=n.lazy((function(){return Promise.resolve().then((function(){return en}))})),ht=n.lazy((function(){return Promise.resolve().then((function(){return rn}))})),yt=g.makeStyles((function(e){var t,n;return{searchBox:{marginBottom:e.spacing(2)},menuIcon:{marginRight:e.spacing(1),marginBottom:0},fab:{position:"absolute",bottom:e.spacing(6),right:e.spacing(6)},compactCheckbox:{padding:0},checkboxLabel:{marginRight:0,"&:hover":{backgroundColor:"#eee"}},accordionBase:{display:"flex"},accordionCard:{padding:3,cursor:"pointer",display:"flex"},nestingLevelMarker:{position:"absolute",borderLeft:"1.5px solid #555"},accordionColor:{background:null===(t=e.palette.tertiary)||void 0===t?void 0:t.main,color:null===(n=e.palette.tertiary)||void 0===n?void 0:n.contrastText,width:"100%",display:"flex",paddingLeft:5},accordionText:{margin:"auto 0"}}})),vt=function(e){var t=e.data,n=e.isOpen,a=e.style,o=e.setOpen,i=t.isLeaf,l=t.nestingLevel,u=t.checked,s=t.id,d=t.name,m=t.onChange,p=t.toggleCollapse,f=t.conf,h=t.onMoreInfo,y=t.drawerPosition,v=yt(),b=10*l+(i?10:0),E=d&&(d.endsWith("(Unsupported)")||d.endsWith("(Unknown)")),k=f&&c.readConfObject(f,["description"])||"";return r.createElement("div",{style:a,className:i?void 0:v.accordionBase},new Array(l).fill(0).map((function(e,t){return r.createElement("div",{key:"mark-".concat(t),style:{left:10*t+4,height:a.height},className:v.nestingLevelMarker})})),r.createElement("div",{className:i?void 0:v.accordionCard,onClick:function(){p(s),o(!n)},style:{marginLeft:b,whiteSpace:"nowrap",width:"100%"}},r.createElement("div",{className:i?void 0:v.accordionColor},i?r.createElement(r.Fragment,null,r.createElement(g.Tooltip,{title:k,placement:"left"===y?"right":"left"},r.createElement(g.FormControlLabel,{className:v.checkboxLabel,control:r.createElement(g.Checkbox,{className:v.compactCheckbox,checked:u,onChange:function(){return m(s)},color:"primary",disabled:E,inputProps:{"data-testid":"htsTrackEntry-".concat(s)}}),label:d})),r.createElement(g.IconButton,{onClick:function(e){return h({target:e.currentTarget,id:s,conf:f})},color:"secondary","data-testid":"htsTrackEntryMenu-".concat(s)},r.createElement(O,null))):r.createElement("div",{className:v.accordionText},r.createElement(g.Typography,null,r.createElement(n?P:j,null),d)))))},bt=function(e,t,n){var r=!!e.conf;return{data:Z(Z({defaultHeight:r?22:40,isLeaf:r,isOpenByDefault:!0,nestingLevel:t},e),n),nestingLevel:t,node:e}},Et=f.observer((function(e){var t,a=e.height,o=e.tree,i=e.model,l=i.filterText,c=i.view,s=n.useRef(null),d=ue(n.useState(),2),m=d[0],p=d[1],f=u.getSession(i),g=f.drawerPosition,h=n.useMemo((function(){return{onChange:function(e){return c.toggleTrack(e)},toggleCollapse:function(e){return i.toggleCategory(e)},onMoreInfo:p,drawerPosition:g}}),[c,i,g]),y=n.useCallback(he.mark((function e(){var t,n,r,a;return he.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:t=0;case 1:if(!(t<o.children.length)){e.next=7;break}return e.next=4,bt(o.children[t],0,h);case 4:t++,e.next=1;break;case 7:return void(e.next=10);case 10:n=e.sent,r=0;case 12:if(!(r<n.node.children.length)){e.next=19;break}return a=n.node.children[r],e.next=16,bt(a,n.nestingLevel+1,h);case 16:r++,e.next=12;break;case 19:e.next=7;break;case 21:case"end":return e.stop()}}),e)})),[o,h]),v=null==m?void 0:m.conf,b=v&&(null===(t=f.getTrackActionMenuItems)||void 0===t?void 0:t.call(f,v))||[];return n.useEffect((function(){s.current.recomputeTree({refreshNodes:!0,useDefaultHeight:!0})}),[o,l]),r.createElement(r.Fragment,null,r.createElement(R.VariableSizeTree,{ref:s,treeWalker:y,height:a},vt),r.createElement(_,{anchorEl:null==m?void 0:m.target,menuItems:b,onMenuItemClick:function(e,t){t(),p(void 0)},open:Boolean(m),onClose:function(){return p(void 0)}}))})),kt=function(e){var t=e.tree,n=e.model,a=e.offset;return"undefined"==typeof jest?r.createElement(U,{disableWidth:!0},(function(e){return r.createElement(Et,{height:e.height-a,model:n,tree:t})})):r.createElement(Et,{height:9e3,model:n,tree:t})},Ct=function(e){var t=e.overrideDimensions,n=e.children;return t?r.createElement("div",{style:Z({},t)},n):r.createElement(r.Fragment,null,n)},Tt=f.observer((function(e){var t=e.model,a=e.toolbarHeight,o=e.overrideDimensions,i=yt(),l=u.getSession(t),c=ue(n.useState(null),2),s=c[0],d=c[1];function m(){d(null)}return r.createElement(Ct,{overrideDimensions:o},r.createElement(xt,{model:t,toolbarHeight:a,overrideDimensions:o}),r.createElement(g.Fab,{color:"secondary",className:i.fab,onClick:function(e){d(e.currentTarget)}},r.createElement(T,null)),r.createElement(g.Menu,{anchorEl:s,open:Boolean(s),onClose:function(){return d(null)}},r.createElement(g.MenuItem,{onClick:function(){m();var e=l.addWidget("AddConnectionWidget","addConnectionWidget");l.showWidget(e)}},"Add connection"),r.createElement(g.MenuItem,{onClick:function(){m();var e=l.addWidget("AddTrackWidget","addTrackWidget",{view:t.view.id});l.showWidget(e)}},"Add track")))})),wt=f.observer((function(e){var t=e.model,a=e.setHeaderHeight,o=e.setAssemblyIdx,i=e.assemblyIdx,l=yt(),s=u.getSession(t),d=ue(n.useState(),2),m=d[0],p=d[1],f=ue(n.useState(),2),h=f[0],v=f[1],b=ue(n.useState(),2),E=b[0],k=b[1],C=ue(n.useState(),2),T=C[0],w=C[1],x=ue(n.useState(!1),2),S=x[0],L=x[1],N=ue(n.useState(!1),2),A=N[0],D=N[1],I=t.assemblyNames,B=I[i];function P(e,t){var n=c.readConfObject(e,"name"),r=s.prepareToBreakConnection(e);if(r){var a=ue(r,2),o=a[0],i=a[1];Object.keys(i).length>0?k({connectionConf:e,safelyBreakConnection:o,dereferenceTypeCount:i,name:n}):o()}t&&w({name:n,connectionConf:e})}var j=[{label:"Turn on/off connections...",onClick:function(){return D(!0)}},{label:"Delete connections...",onClick:function(){return L(!0)}}],O=I.length>1?[{label:"Select assembly...",subMenu:I.map((function(e,t){return{label:e,onClick:function(){o(t)}}}))}]:[],U=[{label:"Add track...",onClick:function(){s.showWidget(s.addWidget("AddTrackWidget","addTrackWidget",{view:t.view.id}))}}].concat(O);return r.createElement("div",{ref:function(e){return a((null==e?void 0:e.getBoundingClientRect().height)||0)},"data-testid":"hierarchical_track_selector"},r.createElement("div",{style:{display:"flex"}},r.createElement(g.IconButton,{className:l.menuIcon,onClick:function(e){v(e.currentTarget)}},r.createElement(M,null)),r.createElement(g.IconButton,{className:l.menuIcon,onClick:function(e){p(e.currentTarget)}},r.createElement(F,null)),r.createElement(g.TextField,{className:l.searchBox,label:"Filter tracks",value:t.filterText,onChange:function(e){return t.setFilterText(e.target.value)},fullWidth:!0,InputProps:{endAdornment:r.createElement(g.InputAdornment,{position:"end"},r.createElement(g.IconButton,{color:"secondary",onClick:t.clearFilterText},r.createElement(y,null)))}})),r.createElement(_,{anchorEl:m,open:Boolean(m),onMenuItemClick:function(e,t){t(),p(void 0)},onClose:function(){p(void 0)},menuItems:[{label:"Add connection",onClick:function(){s.showWidget(s.addWidget("AddConnectionWidget","addConnectionWidget"))}}].concat(j)}),r.createElement(_,{anchorEl:h,open:Boolean(h),onMenuItemClick:function(e,t){t(),v(void 0)},onClose:function(){v(void 0)},menuItems:U}),r.createElement(n.Suspense,{fallback:r.createElement("div",null)},E?r.createElement(pt,{modalInfo:E,setModalInfo:k,session:s}):T?r.createElement(ft,{handleClose:function(){w(void 0)},deleteDialogDetails:T,session:s}):null,S?r.createElement(gt,{handleClose:function(){return L(!1)},breakConnection:P,session:s}):null,A?r.createElement(ht,{handleClose:function(){return D(!1)},session:s,breakConnection:P,assemblyName:B}):null))})),xt=f.observer((function(e){var t=e.model,a=e.toolbarHeight,o=void 0===a?0:a,i=ue(n.useState(0),2),l=i[0],c=i[1],u=ue(n.useState(0),2),s=u[0],d=t.assemblyNames[l];return d?r.createElement(r.Fragment,null,r.createElement(wt,{model:t,setHeaderHeight:u[1],setAssemblyIdx:c,assemblyIdx:l}),r.createElement(kt,{tree:t.hierarchy(d),model:t,offset:o+s})):null})),St={__proto__:null,default:Tt},Lt=g.makeStyles((function(e){return{spacing:{marginBottom:e.spacing(3)}}}));function Nt(e){var t,n=e.trackAdapter,a=e.trackType,o=Lt();return"SNPCoverageAdapter"===n.type?r.createElement(g.Typography,{className:o.spacing},"Selected ",r.createElement("code",null,a),". Using adapter"," ",r.createElement("code",null,n.type)," with subadapter"," ",r.createElement("code",null,null===(t=n.subadapter)||void 0===t?void 0:t.type),". Please enter a track name and, if necessary, update the track type."):r.createElement(g.Typography,{className:o.spacing},"Using adapter ",r.createElement("code",null,n.type)," and guessing track type"," ",r.createElement("code",null,a),". Please enter a track name and, if necessary, update the track type.")}var At=f.observer((function(e){var t,n,a,o=e.model,i=Lt(),l=u.getSession(o),c=o.trackAdapter,d=s.getEnv(l).pluginManager.getElementTypesInGroup("adapter");return r.createElement(g.TextField,{className:i.spacing,value:"UNKNOWN"!==(null==c?void 0:c.type)?null==c?void 0:c.type:"",label:"adapterType",helperText:"Select an adapter type",select:!0,fullWidth:!0,onChange:function(e){return o.setAdapterHint(e.target.value)},SelectProps:{SelectDisplayProps:{"data-testid":"adapterTypeSelect"}}},d.filter((function(e){var t,n;return!(null!==(t=e.adapterMetadata)&&void 0!==t&&t.hiddenFromGUI||null!==(n=e.adapterMetadata)&&void 0!==n&&n.category)})).map((function(e){var t,n;return r.createElement(g.MenuItem,{key:e.name,value:e.name},null!==(t=e.adapterMetadata)&&void 0!==t&&t.displayName?null===(n=e.adapterMetadata)||void 0===n?void 0:n.displayName:e.name)})),(t=d.filter((function(e){var t;return!(null!==(t=e.adapterMetadata)&&void 0!==t&&t.hiddenFromGUI)})),n="",a=[],t.forEach((function(e){var t,o,i,l,c,u,s,d;null!==(t=e.adapterMetadata)&&void 0!==t&&t.category&&(n!==(null===(o=e.adapterMetadata)||void 0===o?void 0:o.category)&&(n=null===(c=e.adapterMetadata)||void 0===c?void 0:c.category,a.push(r.createElement(g.ListSubheader,{key:null===(u=e.adapterMetadata)||void 0===u?void 0:u.category,value:null===(s=e.adapterMetadata)||void 0===s?void 0:s.category},null===(d=e.adapterMetadata)||void 0===d?void 0:d.category))),a.push(r.createElement(g.MenuItem,{key:e.name,value:e.name},null!==(i=e.adapterMetadata)&&void 0!==i&&i.displayName?null===(l=e.adapterMetadata)||void 0===l?void 0:l.displayName:e.name)))})),a))}));function Dt(e){var t=e.model,n=Lt();return r.createElement(r.Fragment,null,r.createElement(g.Typography,{className:n.spacing},"JBrowse was not able to guess the adapter type for this data, but it may be in the list below. If not, you can"," ",r.createElement(g.Link,{href:"https://github.com/GMOD/jbrowse-components/releases",target:"_blank",rel:"noopener noreferrer"},"check for new releases")," ","of JBrowse to see if they support this data type or"," ",r.createElement(g.Link,{href:"https://github.com/GMOD/jbrowse-components/issues/new",target:"_blank",rel:"noopener noreferrer"},"file an issue")," ","and add a feature request for this data type."),r.createElement(At,{model:t}))}var It=f.observer((function(e){var t=e.model,n=Lt(),a=u.getSession(t),o=t.trackType,i=s.getEnv(a).pluginManager.getElementTypesInGroup("track");return r.createElement(g.TextField,{className:n.spacing,value:o,label:"trackType",helperText:"Select a track type",select:!0,fullWidth:!0,onChange:function(e){t.setTrackType(e.target.value)},SelectProps:{SelectDisplayProps:{"data-testid":"trackTypeSelect"}}},i.map((function(e){var t=e.name;return r.createElement(g.MenuItem,{key:t,value:t},t)})))})),Bt=f.observer((function(e){var t=e.model,n=u.getSession(t);return r.createElement(g.TextField,{value:t.assembly,label:"assemblyName",helperText:"Assembly to which the track will be added",select:!0,fullWidth:!0,onChange:function(e){return t.setAssembly(e.target.value)},SelectProps:{SelectDisplayProps:{"data-testid":"assemblyNameSelect"}}},n.assemblies.map((function(e){return c.readConfObject(e,"name")})).map((function(e){return r.createElement(g.MenuItem,{key:e,value:e},e)})))}));function Pt(e){var t=e.model,n=Lt(),a=t.trackName,o=t.trackAdapter,i=t.trackType,l=t.warningMessage,c=t.adapterHint;return t.unsupported?r.createElement(g.Typography,{className:n.spacing},"This version of JBrowse cannot display data of this type. It is possible, however, that there is a newer version that can display them. You can"," ",r.createElement(g.Link,{href:"https://github.com/GMOD/jbrowse-components/releases",target:"_blank",rel:"noopener noreferrer"},"check for new releases")," ","of JBrowse or"," ",r.createElement(g.Link,{href:"https://github.com/GMOD/jbrowse-components/issues/new",target:"_blank",rel:"noopener noreferrer"},"file an issue")," ","and add a feature request for this data type."):(null==o?void 0:o.type)===m.UNKNOWN?r.createElement(Dt,{model:t}):(""===c&&o&&t.setAdapterHint(o.type),null!=o&&o.type?r.createElement("div",null,o?r.createElement(Nt,{trackAdapter:o,trackType:i}):null,l?r.createElement(g.Typography,{style:{color:"orange"}},l):null,r.createElement(g.TextField,{className:n.spacing,label:"trackName",helperText:"A name for this track",fullWidth:!0,value:a,onChange:function(e){return t.setTrackName(e.target.value)},inputProps:{"data-testid":"trackNameInput"}}),r.createElement(At,{model:t}),r.createElement(It,{model:t}),r.createElement(Bt,{model:t})):r.createElement(g.Typography,null,"Could not recognize this data type."))}var jt=f.observer(Pt),Mt=g.makeStyles((function(e){return{paper:{display:"flex",flexDirection:"column",padding:e.spacing(1)},spacer:{height:e.spacing(8)}}}));function Ot(e){var t=e.model,n=Mt(),a=s.getRoot(t);return r.createElement(g.Paper,{className:n.paper},r.createElement(q.FileSelector,{name:"Main file",description:"",location:t.trackData,setLocation:t.setTrackData,setName:t.setTrackName,rootModel:a}),r.createElement("div",{className:n.spacer}),r.createElement(q.FileSelector,{name:"Index file",description:"(Optional) The URL of the index file is automatically inferred from the URL of the main file if it is not supplied.",location:t.indexTrackData,setLocation:t.setIndexTrackData,setName:t.setTrackName,rootModel:a}))}var Ft=f.observer(Ot),Ut=g.makeStyles((function(e){return{root:{marginTop:e.spacing(1)},stepper:{backgroundColor:e.palette.background.default},button:{marginTop:e.spacing(1),marginRight:e.spacing(1)},actionsContainer:{marginBottom:e.spacing(2)},stepContent:{margin:e.spacing(1)},alertContainer:{padding:"".concat(e.spacing(2),"px 0px ").concat(e.spacing(2),"px 0px")}}})),_t=["Enter track data","Confirm track type"];function Rt(e){var t=e.model,a=ue(n.useState(0),2),o=a[0],i=a[1],l=Ut(),s=u.getSession(t),d=t.assembly,m=t.trackAdapter,p=t.trackData,f=t.trackName,h=t.trackType,y=ue(n.useState(),2),v=y[0],b=y[1];function E(){return k.apply(this,arguments)}function k(){return(k=ne(he.mark((function e(){var n,r;return he.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(o===_t.length-1){e.next=3;break}return i(o+1),e.abrupt("return");case 3:n="".concat(f.toLowerCase().replace(/ /g,"_"),"-").concat(Date.now()).concat(s.adminMode?"":"-sessionTrack"),r=s.assemblyManager.get(d),m&&"UNKNOWN"!==m.type?(s.addTrackConf({trackId:n,type:h,name:f,assemblyNames:[d],adapter:Z(Z({},m),{},{sequenceAdapter:c.getConf(r,["sequence","adapter"])})}),t.view?t.view.showTrack(n):s.notify("Open a new view, or use the track selector in an existing view, to view this track","info"),t.clearData(),s.hideWidget(t)):b("Failed to add track.\nThe configuration of this file is not currently supported.");case 6:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function C(){b(void 0),i(o-1)}function T(){switch(o){case 0:return!p;case 1:return!(f&&h&&null!=m&&m.type&&d);default:return!0}}return r.createElement("div",{className:l.root},r.createElement(g.Stepper,{className:l.stepper,activeStep:o,orientation:"vertical"},_t.map((function(e,n){return r.createElement(g.Step,{key:e},r.createElement(g.StepLabel,null,e),r.createElement(g.StepContent,null,function(e){switch(e){case 0:return r.createElement(Ft,{model:t});case 1:return r.createElement(jt,{model:t});default:return r.createElement(g.Typography,null,"Unknown step")}}(n),r.createElement("div",{className:l.actionsContainer},r.createElement(g.Button,{disabled:0===o,onClick:C,className:l.button},"Back"),r.createElement(g.Button,{disabled:T(),variant:"contained",color:"primary",onClick:E,className:l.button,"data-testid":"addTrackNextButton"},o===_t.length-1?"Add":"Next")),v?r.createElement("div",{className:l.alertContainer},r.createElement(W.Alert,{severity:"error"},v)):null))}))))}var Wt={__proto__:null,default:f.observer(Rt)},qt=f.observer((function(e){var t=e.model,a=e.setModelReady,o=e.connectionType.configEditorComponent||B.ConfigurationEditor;return r.createElement(n.Suspense,{fallback:r.createElement("div",null,"Loading...")},r.createElement(o,{model:{target:t},setModelReady:a}))}));function Ht(e){var t=e.connectionTypeChoices,a=e.connectionType,o=e.setConnectionType;return n.useEffect((function(){a.name||o(t[0])})),a.name?r.createElement("form",{autoComplete:"off"},r.createElement(Q,{value:a.name,label:"connectionType",helperText:a.description?r.createElement(r.Fragment,null,a.description,a.url?r.createElement(S,{href:a.url,rel:"noopener noreferrer",target:"_blank",color:"secondary"},r.createElement(X,null)):null):null,select:!0,fullWidth:!0,onChange:function(e){o(t.find((function(t){return t.name===e.target.value})))},variant:"outlined"},t.map((function(e){return r.createElement(K,{key:e.name,value:e.name},e.displayName||e.name)})))):null}var zt=L.makeStyles((function(e){return{root:{marginTop:e.spacing(1)},stepper:{backgroundColor:e.palette.background.default},button:{marginTop:e.spacing(1),marginRight:e.spacing(1)},actionsContainer:{marginBottom:e.spacing(2)}}})),Gt=["Select a Connection Type","Configure Connection"];function Jt(e){var t=e.model,a=ue(n.useState({}),2),o=a[0],i=a[1],l=ue(n.useState({}),2),c=l[0],d=l[1],m=ue(n.useState(!0),2),p=m[0],f=m[1],g=ue(n.useState(0),2),h=g[0],y=g[1],v=zt(),b=u.getSession(t),E=s.getEnv(b).pluginManager;function k(e){i(e),d(e.configSchema.create({connectionId:"".concat(e.name,"-").concat(Date.now())},s.getEnv(t)))}function C(){var e;h===Gt.length-1?(e=b.addConnectionConf(c),b.makeConnection(e),b.hideWidget(t)):y(h+1)}function T(){y(h-1)}return r.createElement("div",{className:v.root},r.createElement(V,{className:v.stepper,activeStep:h,orientation:"vertical"},Gt.map((function(e){return r.createElement(z,{key:e},r.createElement(J,null,e),r.createElement(G,null,function(){switch(h){case 0:return r.createElement(Ht,{connectionTypeChoices:E.getElementTypesInGroup("connection"),connectionType:o,setConnectionType:k});case 1:return r.createElement(qt,{connectionType:o,model:c,setModelReady:f});default:return r.createElement(Y,null,"Unknown step")}}(),r.createElement("div",{className:v.actionsContainer},r.createElement(H,{disabled:0===h,onClick:T,className:v.button},"Back"),r.createElement(H,{disabled:!(0===h&&o.name||1===h&&c&&p),variant:"contained",color:"primary",onClick:C,className:v.button,"data-testid":"addConnectionNext"},h===Gt.length-1?"Connect":"Next"))))}))))}Jt.propTypes={model:f.PropTypes.observableObject.isRequired};var Vt={__proto__:null,default:f.observer(Jt)};function Yt(e){var t=e.modalInfo,n=void 0===t?{}:t,a=e.setModalInfo,o=n.dereferenceTypeCount,i=n.safelyBreakConnection;return r.createElement(g.Dialog,{open:!0},r.createElement(g.DialogTitle,null,'Close connection "',n.name,'"'),r.createElement(g.DialogContent,null,o?r.createElement(r.Fragment,null,r.createElement(g.DialogContentText,null,"Closing this connection will close:"),r.createElement(g.List,null,Object.entries(o).map((function(e){var t=ue(e,2),n=t[0];return r.createElement(g.ListItem,{key:n},"".concat(t[1]," ").concat(n))})))):null,r.createElement(g.DialogContentText,null,"Are you sure you want to close this connection?")),r.createElement(g.DialogActions,null,r.createElement(g.Button,{onClick:function(){a()},color:"primary"},"Cancel"),r.createElement(g.Button,{variant:"contained",onClick:n?function(){i&&i(),a()}:function(){},color:"primary"},"OK")))}var Kt={__proto__:null,default:f.observer(Yt)};function Qt(e){var t=e.deleteDialogDetails,n=e.session,a=e.handleClose,o=t.connectionConf;return r.createElement(g.Dialog,{open:!0},r.createElement(g.DialogTitle,null,'Delete connection "',t.name,'"'),r.createElement(g.DialogContent,null,r.createElement(g.DialogContentText,null,"Are you sure you want to delete this connection?")),r.createElement(g.DialogActions,null,r.createElement(g.Button,{onClick:function(){return a()},color:"primary"},"Cancel"),r.createElement(g.Button,{variant:"contained",color:"primary",onClick:function(){var e;o&&(null===(e=n.deleteConnection)||void 0===e||e.call(n,o)),a()}},"OK")))}var Xt={__proto__:null,default:f.observer(Qt)},$t=g.makeStyles((function(e){return{closeButton:{position:"absolute",right:e.spacing(1),top:e.spacing(1),color:e.palette.grey[500]},connectionContainer:{margin:e.spacing(4),width:500}}}));function Zt(e){var t=e.session,n=e.handleClose,a=e.breakConnection,o=$t(),i=t.adminMode,l=t.connections,u=t.sessionConnections;return r.createElement(g.Dialog,{open:!0,onClose:n,maxWidth:"lg"},r.createElement(g.DialogTitle,null,"Delete connections",r.createElement(g.IconButton,{className:o.closeButton,onClick:function(){return n()}},r.createElement(b,null))),r.createElement(g.DialogContent,null,r.createElement(g.Typography,null,"Click the X icon to delete the connection from your config completely"),r.createElement("div",{className:o.connectionContainer},l.map((function(e){var t=c.readConfObject(e,"name");return r.createElement("div",{key:"conn-".concat(t)},r.createElement(g.Typography,null,i||null!=u&&u.includes(e)?r.createElement(g.IconButton,{onClick:function(){return a(e,!0)}},r.createElement(b,{color:"error"})):r.createElement(g.Tooltip,{title:"Unable to delete connection in config file as non-admin user"},r.createElement(g.IconButton,null,r.createElement(b,{color:"disabled"}))),t))})),l.length?null:r.createElement(g.Typography,null,"No connections found"))),r.createElement(g.DialogActions,null,r.createElement(g.Button,{onClick:function(){return n()},variant:"contained",color:"primary"},"Close")))}var en={__proto__:null,default:f.observer(Zt)},tn=g.makeStyles((function(e){return{closeButton:{position:"absolute",right:e.spacing(1),top:e.spacing(1),color:e.palette.grey[500]},connectionContainer:{width:500,margin:e.spacing(4)}}}));function nn(e){var t=e.session,n=e.handleClose,a=e.assemblyName,o=e.breakConnection,i=tn(),l=t.connectionInstances,u=t.connections.filter((function(e){var t=c.readConfObject(e,"assemblyNames");return 0===t.length||t.includes(a)}));return r.createElement(g.Dialog,{open:!0,onClose:n,maxWidth:"lg"},r.createElement(g.DialogTitle,null,"Turn on/off connections",r.createElement(g.IconButton,{className:i.closeButton,onClick:function(){return n()}},r.createElement(b,null))),r.createElement(g.DialogContent,null,r.createElement(g.Typography,null,"Use the checkbox to turn on/off connections"),r.createElement("div",{className:i.connectionContainer},u.map((function(e){var n=c.readConfObject(e,"name");return r.createElement("div",{key:e.connectionId},r.createElement(g.FormControlLabel,{control:r.createElement(g.Checkbox,{checked:!(null==l||!l.find((function(e){return n===e.name}))),onChange:function(){var n;null!=l&&l.find((function(t){return t.name===c.readConfObject(e,"name")}))?o(e):null===(n=t.makeConnection)||void 0===n||n.call(t,e)},color:"primary"}),label:n}))})),u.length?null:r.createElement(g.Typography,null,"No connections found for ",a))),r.createElement(g.DialogActions,null,r.createElement(g.Button,{onClick:function(){return n()},variant:"contained",color:"primary"},"Close")))}var rn={__proto__:null,default:f.observer(nn)};exports.AssemblyManager=et,exports.SetDefaultSession=Ze,exports.default=tt;
2
2
  //# sourceMappingURL=plugin-data-management.cjs.production.min.js.map