@jbrowse/plugin-circular-view 1.5.9 → 1.6.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/plugin-circular-view.cjs.development.js +1553 -1501
- package/dist/plugin-circular-view.cjs.development.js.map +1 -1
- package/dist/plugin-circular-view.cjs.production.min.js +1 -1
- package/dist/plugin-circular-view.cjs.production.min.js.map +1 -1
- package/dist/plugin-circular-view.esm.js +1562 -1510
- package/dist/plugin-circular-view.esm.js.map +1 -1
- package/package.json +2 -2
- package/src/CircularView/components/CircularView.js +61 -70
- package/src/CircularView/components/ImportForm.tsx +29 -51
- package/src/CircularView/models/CircularView.ts +11 -15
- package/src/index.ts +44 -1
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";function e(e){return e&&"object"==typeof e&&"default"in e?e.default:e}Object.defineProperty(exports,"__esModule",{value:!0});var t=require("react"),r=e(t),n=require("@jbrowse/core/util"),o=e(require("@jbrowse/core/Plugin")),i=e(require("@jbrowse/core/pluggableElementTypes/ViewType")),a=e(require("@material-ui/icons/DataUsage")),c=require("mobx-state-tree"),s=require("@jbrowse/core/util/types/mst"),l=require("mobx"),u=require("@jbrowse/core/configuration"),d=require("@jbrowse/core/pluggableElementTypes/models"),f=e(require("@jbrowse/core/pluggableElementTypes/renderers/CircularChordRendererType")),p=require("@jbrowse/core/util/simpleFeature"),h=require("@jbrowse/core/util/tracks"),m=require("mobx-react"),g=e(require("@material-ui/icons/ZoomOut")),y=e(require("@material-ui/icons/ZoomIn")),v=e(require("@material-ui/icons/RotateLeft")),b=e(require("@material-ui/icons/RotateRight")),w=e(require("@material-ui/icons/LockOutlined")),x=e(require("@material-ui/icons/LockOpen")),P=require("@jbrowse/core/ui/Icons"),k=require("@material-ui/core"),E=require("@material-ui/core/colors"),T=require("@jbrowse/core/ui"),R=require("@jbrowse/core/util/color"),S=require("@material-ui/core/styles"),C=e(require("@jbrowse/core/ui/AssemblySelector"));function M(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function j(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?M(Object(r),!0).forEach((function(t){W(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):M(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function O(e,t,r,n,o,i,a){try{var c=e[i](a),s=c.value}catch(e){return void r(e)}c.done?t(s):Promise.resolve(s).then(n,o)}function B(e){return function(){var t=this,r=arguments;return new Promise((function(n,o){var i=e.apply(t,r);function a(e){O(i,n,o,a,c,"next",e)}function c(e){O(i,n,o,a,c,"throw",e)}a(void 0)}))}}function N(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function I(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}function L(e,t,r){return t&&I(e.prototype,t),r&&I(e,r),Object.defineProperty(e,"prototype",{writable:!1}),e}function W(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function A(e){return(A=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function F(e,t){return(F=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function q(e,t){if(null==e)return{};var r,n,o=function(e,t){if(null==e)return{};var r,n,o={},i=Object.keys(e);for(n=0;n<i.length;n++)t.indexOf(r=i[n])>=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n<i.length;n++)t.indexOf(r=i[n])>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}function D(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 _(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 r,n=A(e);if(t){var o=A(this).constructor;r=Reflect.construct(n,arguments,o)}else r=n.apply(this,arguments);return D(this,r)}}function z(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,o,i=[],a=!0,c=!1;try{for(r=r.call(e);!(a=(n=r.next()).done)&&(i.push(n.value),!t||i.length!==t);a=!0);}catch(e){c=!0,o=e}finally{try{a||null==r.return||r.return()}finally{if(c)throw o}}return i}}(e,t)||H(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 V(e){return function(e){if(Array.isArray(e))return G(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||H(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 H(e,t){if(e){if("string"==typeof e)return G(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?G(e,t):void 0}}function G(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r<t;r++)n[r]=e[r];return n}function Y(e,t){var r="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!r){if(Array.isArray(e)||(r=H(e))||t&&e&&"number"==typeof e.length){r&&(e=r);var n=0,o=function(){};return{s:o,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:o}}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 i,a=!0,c=!1;return{s:function(){r=r.call(e)},n:function(){var e=r.next();return a=e.done,e},e:function(e){c=!0,i=e},f:function(){try{a||null==r.return||r.return()}finally{if(c)throw i}}}}function X(e,t,r,n,o){var i=Math.abs(e-r);if(!(i>n)){i===n&&o.push([t,e]);var a=Math.sqrt(n*n-i*i);o.push([t-a,e]),o.push([t+a,e])}}function J(e,t,r,n,o){var i=Math.abs(e-t);if(!(i>n)){i===n&&o.push([e,r]);var a=Math.sqrt(n*n-i*i);o.push([e,r-a]),o.push([e,r+a])}}function U(e,t){var r=Math.sqrt(e*e+t*t);return 0===r?[0,0]:[r,function(e,t){var r=(Math.atan(t/e)+2*Math.PI)%(2*Math.PI);return e<0&&(t<=0?r+=Math.PI:r-=Math.PI),r}(e,t)]}var $=2*Math.PI,Z=function(){function e(t,r,o,i){N(this,e),this.region=r,this.radianWidth=i;var a=t.bpPerRadian;this.key=n.assembleLocString(r),this.offsetRadians=o,this.bpPerRadian=a,this.flipped=!1,this.startRadians=this.offsetRadians,this.endRadians=r.widthBp/this.bpPerRadian+this.offsetRadians,Object.freeze(this)}return L(e,[{key:"bpToXY",value:function(e,t){return n.polarToCartesian(t,(this.region.elided?this.region.widthBp/2:this.flipped?this.region.end-e:e-this.region.start)/this.bpPerRadian+this.offsetRadians)}},{key:"toJSON",value:function(){return n.objectFromEntries(Object.entries(this))}}]),e}();function K(e,t){var r,n,o,i,a=z(e.visibleSection.theta,2),c=a[0];return r=t.offsetRadians+e.offsetRadians,o=c,i=a[1]-c,!((n=t.radianWidth)<=0||i<=0)&&(n+1e-4>=$||i+1e-4>=$||(r=(r%$+$)%$+$)<(o=(o%$+$)%$+$)+i&&r+n>o||r<(o-=$)+i&&r+n>o||r<(o+=$+$)+i&&r+n>o)}function Q(e){return c.types.compose(d.BaseViewModel,c.types.model("CircularView",{type:c.types.literal("CircularView"),offsetRadians:-Math.PI/2,bpPerPx:2e6,tracks:c.types.array(e.pluggableMstType("track","stateModel")),hideVerticalResizeHandle:!1,hideTrackSelectorButton:!1,lockedFitToWindow:!0,disableImportForm:!1,height:c.types.optional(c.types.refinement("trackHeight",c.types.number,(function(e){return e>=40})),400),minimumRadiusPx:25,spacingPx:10,paddingPx:80,lockedPaddingPx:100,minVisibleWidth:6,minimumBlockWidth:20,displayedRegions:c.types.array(s.Region),scrollX:0,scrollY:0,trackSelectorType:"hierarchical"}).volatile((function(){return{width:800}})).views((function(e){return{get staticSlices(){return function(e){var t,r=[],n=0,o=Y(e.elidedRegions);try{for(o.s();!(t=o.n()).done;){var i=t.value,a=i.widthBp/e.bpPerRadian+e.spacingPx/e.pxPerRadian;r.push(new Z(e,i,n,a)),n+=a}}catch(e){o.e(e)}finally{o.f()}return r}(e)},get visibleStaticSlices(){return this.staticSlices.filter(K.bind(this,e))},get visibleSection(){return function(e,t,r){var n=z(e,4),o=n[0],i=n[1],a=n[2],c=n[3],s=z(t,2),l=s[0],u=s[1];if(i-=l,a-=u,c-=u,(o-=l)<0&&i>0&&a<0&&c>0){for(var d=[[o,a],[i,a],[o,c],[i,c]],f=-Infinity,p=0;p<d.length;p+=1){var h=z(d[p],2),m=h[0],g=h[1],y=Math.sqrt(m*m+g*g);y>f&&(f=y)}return{rho:[0,Math.min(r,f)],theta:[0,2*Math.PI]}}var v=[[o,a],[i,a],[o,c],[i,c]];J(o,0,0,r,v),J(i,0,0,r,v),X(a,0,0,r,v),X(c,0,0,r,v),-o<r&&v.push([o,0]),i<r&&v.push([i,0]),-a<r&&v.push([0,a]),c<r&&v.push([0,c]);for(var b=o>=0?-1:1,w=Infinity,x=-Infinity,P=Infinity,k=-Infinity,E=0;E<v.length;E+=1){var T=z(v[E],2),R=T[0],S=T[1];if(R>=o&&R<=i&&S>=a&&S<=c){var C=z(U(R*b,S*b),2),M=C[0],j=C[1];M<=r+.001&&(j<P&&M>1e-4&&(P=j),j>k&&M>1e-4&&(k=j),M<w&&(w=M),M>x&&(x=M))}}return-1===b&&(P+=Math.PI,k+=Math.PI),P>2*Math.PI&&k>2*Math.PI&&(P-=2*Math.PI,k-=2*Math.PI),{rho:[w,Math.min(r,x)],theta:[P,k]}}([e.scrollX,e.scrollX+e.width,e.scrollY,e.scrollY+e.height],this.centerXY,this.radiusPx)},get circumferencePx(){var t,r=0,n=Y(this.elidedRegions);try{for(n.s();!(t=n.n()).done;)r+=t.value.widthBp}catch(e){n.e(e)}finally{n.f()}return r/e.bpPerPx+e.spacingPx*this.elidedRegions.length},get radiusPx(){return this.circumferencePx/(2*Math.PI)},get bpPerRadian(){return e.bpPerPx*this.radiusPx},get pxPerRadian(){return this.radiusPx},get centerXY(){return[this.radiusPx+e.paddingPx,this.radiusPx+e.paddingPx]},get totalBp(){var t,r=0,n=Y(e.displayedRegions);try{for(n.s();!(t=n.n()).done;){var o=t.value;r+=o.end-o.start}}catch(e){n.e(e)}finally{n.f()}return r},get maximumRadiusPx(){return e.lockedFitToWindow?Math.min(e.width,e.height)/2-e.lockedPaddingPx:1e6},get maxBpPerPx(){var t=2*Math.PI*e.minimumRadiusPx;return this.totalBp/t},get minBpPerPx(){var e=2*Math.PI*this.maximumRadiusPx;return n.clamp(this.totalBp/e,1e-10,this.maxBpPerPx)},get atMaxBpPerPx(){return e.bpPerPx>=this.maxBpPerPx},get atMinBpPerPx(){return e.bpPerPx<=this.minBpPerPx},get tooSmallToLock(){return this.minBpPerPx<=1e-10},get figureDimensions(){return[2*this.radiusPx+2*e.paddingPx,2*this.radiusPx+2*e.paddingPx]},get figureWidth(){return this.figureDimensions[0]},get figureHeight(){return this.figureDimensions[1]},get elidedRegions(){var t=[];e.displayedRegions.forEach((function(r){var n=r.end-r.start;if(n/e.bpPerPx<e.minVisibleWidth){var o=t[t.length-1];o&&o.elided?(o.regions.push(j({},r)),o.widthBp+=n):t.push({elided:!0,widthBp:n,regions:[j({},r)]})}else t.push(j(j({},r),{},{widthBp:n}))}));for(var r=0;r<t.length;r+=1){var n=t[r];n.elided&&1===n.regions.length&&(delete n.elided,t[r]=j(j({},n),n.regions[0]))}return t},get assemblyNames(){var t=[];return e.displayedRegions.forEach((function(e){t.includes(e.assemblyName)||t.push(e.assemblyName)})),t},get initialized(){var t=n.getSession(e).assemblyManager;return this.assemblyNames.every((function(e){var r;return null===(r=t.assemblyList)||void 0===r||!r.map((function(e){return e.name})).includes(e)||(t.get(e)||{}).initialized}))}}})).volatile((function(){return{error:void 0}})).actions((function(t){return{setWidth:function(e){return t.width=Math.max(e,100),t.width},setHeight:function(e){return t.height=Math.max(e,40),t.height},resizeHeight:function(e){var r=t.height,n=this.setHeight(t.height+e);return this.setModelViewWhenAdjust(!t.tooSmallToLock),n-r},resizeWidth:function(e){var r=t.width,n=this.setWidth(t.width+e);return this.setModelViewWhenAdjust(!t.tooSmallToLock),n-r},rotateClockwiseButton:function(){this.rotateClockwise(Math.PI/6)},rotateCounterClockwiseButton:function(){this.rotateCounterClockwise(Math.PI/6)},rotateClockwise:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:.17;t.offsetRadians+=e},rotateCounterClockwise:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:.17;t.offsetRadians-=e},zoomInButton:function(){this.setBpPerPx(t.bpPerPx/1.4)},zoomOutButton:function(){this.setBpPerPx(1.4*t.bpPerPx)},setBpPerPx:function(e){t.bpPerPx=n.clamp(e,t.minBpPerPx,t.maxBpPerPx)},setModelViewWhenAdjust:function(e){t.lockedFitToWindow&&e&&this.setBpPerPx(t.minBpPerPx)},closeView:function(){c.getParent(t,2).removeView(t)},setDisplayedRegions:function(e){var r=0===t.displayedRegions.length;t.displayedRegions=c.cast(e),this.setBpPerPx(r?t.minBpPerPx:t.bpPerPx)},activateTrackSelector:function(){if("hierarchical"===t.trackSelectorType){var e=n.getSession(t);if(n.isSessionModelWithWidgets(e)){var r=e.addWidget("HierarchicalTrackSelectorWidget","hierarchicalTrackSelector",{view:t});return e.showWidget(r),r}}throw new Error("invalid track selector type ".concat(t.trackSelectorType))},toggleTrack:function(e){this.hideTrack(e)||this.showTrack(e)},setError:function(e){console.error(e),t.error=e},showTrack:function(r){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},o=e.pluggableConfigSchemaType("track"),i=c.resolveIdentifier(o,c.getRoot(t),r),a=e.getTrackType(i.type);if(!a)throw new Error("unknown track type ".concat(i.type));var s=e.getViewType(t.type),l=s.displayTypes.map((function(e){return e.name})),u=i.displays.find((function(e){return l.includes(e.type)})),d=a.stateModel.create(j(j({},n),{},{type:i.type,configuration:i,displays:[{type:u.type,configuration:u}]}));t.tracks.push(d)},addTrackConf:function(r){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},o=r.type,i=u.readConfObject(r,"name"),a=e.getTrackType(o);if(!a)throw new Error("unknown track type ".concat(r.type));var c=e.getViewType(t.type),s=c.displayTypes.map((function(e){return e.name})),l=r.displays.find((function(e){return s.includes(e.type)})),d=a.stateModel.create(j(j({},n),{},{name:i,type:o,configuration:r,displays:[{type:l.type,configuration:l}]}));t.tracks.push(d)},hideTrack:function(r){var n=e.pluggableConfigSchemaType("track"),o=c.resolveIdentifier(n,c.getRoot(t),r),i=t.tracks.filter((function(e){return e.configuration===o}));return l.transaction((function(){return i.forEach((function(e){return t.tracks.remove(e)}))})),i.length},toggleFitToWindowLock:function(){return t.lockedFitToWindow=!t.lockedFitToWindow,this.setModelViewWhenAdjust(t.atMinBpPerPx),t.lockedFitToWindow}}})))}var ee=function(e){var t=e.lib,r=t.react,n=r.useState,o=r.useEffect,i=t["mobx-react"].observer,a=(0,t["@material-ui/core/styles"].makeStyles)((function(e){return{path:{strokeDasharray:187,strokeDashoffset:50,animation:"$dash ".concat(1.4,"s ease-in-out infinite, $colors ").concat(5.6,"s ease-in-out infinite")},"@keyframes colors":{"0%":{stroke:e.palette.primary.light},"25%":{stroke:e.palette.secondary.light},"50%":{stroke:e.palette.tertiary.light},"75%":{stroke:e.palette.quaternary.light},"100%":{stroke:e.palette.primary.light}},"@keyframes dash":{"0%":{strokeDashoffset:2},"50%":{strokeDashoffset:.5,transform:"rotate(135deg)"},"100%":{strokeDashoffset:2,transform:"rotate(720deg)"}}}}));return i((function(e){var t=e.model.renderProps.radius,i=a(),c=z(n(!1),2),s=c[0],l=c[1];return o((function(){var e=setTimeout((function(){return l(!0)}),400);return function(){return clearTimeout(e)}})),s?r.createElement("g",null,r.createElement("defs",null,r.createElement("pattern",{id:"diagonalHatch",width:"10",height:"10",patternTransform:"rotate(45 0 0)",patternUnits:"userSpaceOnUse"},r.createElement("line",{x1:"0",y1:"0",x2:"0",y2:"10",style:{stroke:"rgba(255,255,255,0.5)",strokeWidth:10}}))),r.createElement("circle",{cx:"0",cy:"0",r:t,fill:"#f1f1f1"}),r.createElement("circle",{cx:"0",cy:"0",r:t,fill:"url(#diagonalHatch)"}),r.createElement("text",{x:"0",y:"0",transform:"rotate(90 0 0)",dominantBaseline:"middle",textAnchor:"middle"},"Loading…"),r.createElement("circle",{className:i.path,fill:"none",strokeWidth:"4",strokeLinecap:"round",cx:"0",cy:"0",r:"60"})):null}))},te=function(e){var t=e.jbrequire,r=t("react"),n=t("@material-ui/core/styles").makeStyles,o=t("mobx-react").observer,i=n({errorMessage:{},errorBackground:{},errorText:{}});return o((function(e){var t=e.model,n=t.renderProps.radius,o=t.error,a=i();return r.createElement("g",{className:a.errorMessage},r.createElement("defs",null,r.createElement("pattern",{id:"diagonalHatch",width:"10",height:"10",patternTransform:"rotate(45 0 0)",patternUnits:"userSpaceOnUse"},r.createElement("line",{x1:"0",y1:"0",x2:"0",y2:"10",style:{stroke:"rgba(255,0,0,0.5)",strokeWidth:10}}))),r.createElement("circle",{className:a.errorBackground,cx:"0",cy:"0",r:n,fill:"#ffb4b4"}),r.createElement("circle",{className:a.errorPattern,cx:"0",cy:"0",r:n,fill:"url(#diagonalHatch)"}),r.createElement("text",{className:a.errorText,x:"0",y:"0",transform:"rotate(90 0 0)",dominantBaseline:"middle",textAnchor:"middle"},String(o)))}))},re=function(e){var t=e.jbrequire,r=t("react"),n=t("mobx-state-tree").isAlive,o=r.useEffect,i=r.useRef,a=t("mobx-react"),c=a.observer,s=a.PropTypes,l=t("react-dom"),u=l.unmountComponentAtNode,d=l.hydrate,f=t("@jbrowse/core/util").rIC;function p(e){var t=e.model,a=t.data,c=t.html,s=t.filled,l=t.renderingComponent,p=i(null);return o((function(){var e=p.current;return e&&s&&(e&&e.innerHTML&&(e.style.display="none",u(e)),e.style.outline="none",e.innerHTML=c,f((function(){if(n(t)){var o=r.createElement(l,j(j({},a),t.renderProps()),null);f((function(){n(t)&&d(o,e)}))}}))),function(){e&&u(e)}})),r.createElement("g",{ref:p})}return p.propTypes={model:s.observableObject.isRequired},c(p)};function ne(e,t){return e(t={exports:{}},t.exports),t.exports}var oe=ne((function(e){var t=function(e){var t=Object.prototype,r=t.hasOwnProperty,n="function"==typeof Symbol?Symbol:{},o=n.iterator||"@@iterator",i=n.asyncIterator||"@@asyncIterator",a=n.toStringTag||"@@toStringTag";function c(e,t,r){return Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{c({},"")}catch(e){c=function(e,t,r){return e[t]=r}}function s(e,t,r,n){var o=Object.create((t&&t.prototype instanceof d?t:d).prototype),i=new k(n||[]);return o._invoke=function(e,t,r){var n="suspendedStart";return function(o,i){if("executing"===n)throw new Error("Generator is already running");if("completed"===n){if("throw"===o)throw i;return{value:void 0,done:!0}}for(r.method=o,r.arg=i;;){var a=r.delegate;if(a){var c=w(a,r);if(c){if(c===u)continue;return c}}if("next"===r.method)r.sent=r._sent=r.arg;else if("throw"===r.method){if("suspendedStart"===n)throw n="completed",r.arg;r.dispatchException(r.arg)}else"return"===r.method&&r.abrupt("return",r.arg);n="executing";var s=l(e,t,r);if("normal"===s.type){if(n=r.done?"completed":"suspendedYield",s.arg===u)continue;return{value:s.arg,done:r.done}}"throw"===s.type&&(n="completed",r.method="throw",r.arg=s.arg)}}}(e,r,i),o}function l(e,t,r){try{return{type:"normal",arg:e.call(t,r)}}catch(e){return{type:"throw",arg:e}}}e.wrap=s;var u={};function d(){}function f(){}function p(){}var h={};c(h,o,(function(){return this}));var m=Object.getPrototypeOf,g=m&&m(m(E([])));g&&g!==t&&r.call(g,o)&&(h=g);var y=p.prototype=d.prototype=Object.create(h);function v(e){["next","throw","return"].forEach((function(t){c(e,t,(function(e){return this._invoke(t,e)}))}))}function b(e,t){var n;this._invoke=function(o,i){function a(){return new t((function(n,a){!function n(o,i,a,c){var s=l(e[o],e,i);if("throw"!==s.type){var u=s.arg,d=u.value;return d&&"object"==typeof d&&r.call(d,"__await")?t.resolve(d.__await).then((function(e){n("next",e,a,c)}),(function(e){n("throw",e,a,c)})):t.resolve(d).then((function(e){u.value=e,a(u)}),(function(e){return n("throw",e,a,c)}))}c(s.arg)}(o,i,n,a)}))}return n=n?n.then(a,a):a()}}function w(e,t){var r=e.iterator[t.method];if(void 0===r){if(t.delegate=null,"throw"===t.method){if(e.iterator.return&&(t.method="return",t.arg=void 0,w(e,t),"throw"===t.method))return u;t.method="throw",t.arg=new TypeError("The iterator does not provide a 'throw' method")}return u}var n=l(r,e.iterator,t.arg);if("throw"===n.type)return t.method="throw",t.arg=n.arg,t.delegate=null,u;var o=n.arg;return o?o.done?(t[e.resultName]=o.value,t.next=e.nextLoc,"return"!==t.method&&(t.method="next",t.arg=void 0),t.delegate=null,u):o:(t.method="throw",t.arg=new TypeError("iterator result is not an object"),t.delegate=null,u)}function x(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 P(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function k(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(x,this),this.reset(!0)}function E(e){if(e){var t=e[o];if(t)return t.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var n=-1,i=function t(){for(;++n<e.length;)if(r.call(e,n))return t.value=e[n],t.done=!1,t;return t.value=void 0,t.done=!0,t};return i.next=i}}return{next:T}}function T(){return{value:void 0,done:!0}}return f.prototype=p,c(y,"constructor",p),c(p,"constructor",f),f.displayName=c(p,a,"GeneratorFunction"),e.isGeneratorFunction=function(e){var t="function"==typeof e&&e.constructor;return!!t&&(t===f||"GeneratorFunction"===(t.displayName||t.name))},e.mark=function(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,p):(e.__proto__=p,c(e,a,"GeneratorFunction")),e.prototype=Object.create(y),e},e.awrap=function(e){return{__await:e}},v(b.prototype),c(b.prototype,i,(function(){return this})),e.AsyncIterator=b,e.async=function(t,r,n,o,i){void 0===i&&(i=Promise);var a=new b(s(t,r,n,o),i);return e.isGeneratorFunction(r)?a:a.next().then((function(e){return e.done?e.value:a.next()}))},v(y),c(y,a,"Generator"),c(y,o,(function(){return this})),c(y,"toString",(function(){return"[object Generator]"})),e.keys=function(e){var t=[];for(var r in e)t.push(r);return t.reverse(),function r(){for(;t.length;){var n=t.pop();if(n in e)return r.value=n,r.done=!1,r}return r.done=!0,r}},e.values=E,k.prototype={constructor:k,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(P),!e)for(var t in this)"t"===t.charAt(0)&&r.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 n(r,n){return a.type="throw",a.arg=e,t.next=r,n&&(t.method="next",t.arg=void 0),!!n}for(var o=this.tryEntries.length-1;o>=0;--o){var i=this.tryEntries[o],a=i.completion;if("root"===i.tryLoc)return n("end");if(i.tryLoc<=this.prev){var c=r.call(i,"catchLoc"),s=r.call(i,"finallyLoc");if(c&&s){if(this.prev<i.catchLoc)return n(i.catchLoc,!0);if(this.prev<i.finallyLoc)return n(i.finallyLoc)}else if(c){if(this.prev<i.catchLoc)return n(i.catchLoc,!0)}else{if(!s)throw new Error("try statement without catch or finally");if(this.prev<i.finallyLoc)return n(i.finallyLoc)}}}},abrupt:function(e,t){for(var n=this.tryEntries.length-1;n>=0;--n){var o=this.tryEntries[n];if(o.tryLoc<=this.prev&&r.call(o,"finallyLoc")&&this.prev<o.finallyLoc){var i=o;break}}i&&("break"===e||"continue"===e)&&i.tryLoc<=t&&t<=i.finallyLoc&&(i=null);var a=i?i.completion:{};return a.type=e,a.arg=t,i?(this.method="next",this.next=i.finallyLoc,u):this.complete(a)},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),u},finish:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var r=this.tryEntries[t];if(r.finallyLoc===e)return this.complete(r.completion,r.afterLoc),P(r),u}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var r=this.tryEntries[t];if(r.tryLoc===e){var n=r.completion;if("throw"===n.type){var o=n.arg;P(r)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(e,t,r){return this.delegate={iterator:E(e),resultName:t,nextLoc:r},"next"===this.method&&(this.arg=void 0),u}},e}(e.exports);try{regeneratorRuntime=t}catch(e){"object"==typeof globalThis?globalThis.regeneratorRuntime=t:Function("r","regeneratorRuntime = r")(t)}})),ie=["html"],ae=function(e){var t=e.jbrequire,r=t("@jbrowse/core/util/tracks").getRpcSessionId,n=t("@jbrowse/core/util").getContainingView,o=t("@jbrowse/core/util").getSession;function i(){return(i=B(oe.mark((function e(t,r,n){var o,i,a,c,s,l,u,d;return oe.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(t){e.next=2;break}throw new Error("cannot render with no props");case 2:if(o=t.rendererType,i=t.rpcManager,c=t.renderArgs,s=t.renderProps,!(a=t.cannotBeRenderedReason)){e.next=5;break}return e.abrupt("return",{message:a});case 5:if(t.renderProps.radius&&t.renderArgs.regions&&t.renderArgs.regions.length){e.next=7;break}return e.abrupt("return",{message:"Skipping render"});case 7:if(n.isCompatibleWithRenderer(o)){e.next=9;break}throw new Error("renderer ".concat(o.name," is not compatible with this display type"));case 9:return e.next=11,o.renderInClient(i,j(j(j({},c),s),{},{signal:r}));case 11:return u=(l=e.sent).html,d=q(l,ie),e.abrupt("return",{html:u,data:d,renderingComponent:o.ReactComponent});case 15:case"end":return e.stop()}}),e)})))).apply(this,arguments)}return{renderReactionData:function(e){var t,i=n(e),a=e.rendererType;return{rendererType:a,rpcManager:o(i).rpcManager,renderProps:e.renderProps(),renderArgs:{assemblyName:null===(t=i.displayedRegions[0])||void 0===t?void 0:t.assemblyName,adapterConfig:JSON.parse(JSON.stringify(e.adapterConfig)),rendererType:a.name,regions:JSON.parse(JSON.stringify(i.displayedRegions)),blockDefinitions:e.blockDefinitions,sessionId:r(e),timeout:1e6}}},renderReactionEffect:function(e,t,r){return i.apply(this,arguments)}}},ce=c.types.compose("BaseChordDisplay",d.BaseDisplay,c.types.model({bezierRadiusRatio:.1,assemblyName:c.types.maybe(c.types.string)})).volatile((function(){return{filled:!1,reactElement:void 0,data:void 0,message:"",renderingComponent:void 0,refNameMap:void 0}})).actions((function(e){var t=c.getEnv(e).pluginManager,r=e;return{onChordClick:function(n){u.getConf(e,"onChordClick",{feature:n,track:r,pluginManager:t})}}})).views((function(e){return{get blockDefinitions(){var t=n.getContainingView(e).staticSlices;if(!e.refNameMap)return t;var r=JSON.parse(JSON.stringify(t));return r.forEach((function(t){(t.region.elided?t.region.regions:[t.region]).forEach((function(t){var r,n=null===(r=e.refNameMap)||void 0===r?void 0:r[t.refName];n&&t.refName!==n&&(t.refName=n)}))})),r},renderProps:function(){var t=n.getContainingView(e);return j(j({},h.getParentRenderProps(e)),{},{rpcDriverName:e.rpcDriverName,displayModel:e,bezierRadius:t.radiusPx*e.bezierRadiusRatio,radius:t.radiusPx,blockDefinitions:this.blockDefinitions,onChordClick:e.onChordClick})},get rendererType(){var t=e,r=c.getEnv(e).pluginManager.getRendererType(e.rendererTypeName);if(!r)throw new Error('renderer "'.concat(t.rendererTypeName,'" not found'));if(!r.ReactComponent)throw new Error("renderer ".concat(t.rendererTypeName," has no ReactComponent, it may not be completely implemented yet"));return r},isCompatibleWithRenderer:function(e){return!!(e instanceof f)},get selectedFeatureId(){if(c.isAlive(e)){var t=n.getSession(e);if(t){var r=t.selection;return p.isFeature(r)?r.id():void 0}}}}})).actions((function(e){return{renderStarted:function(){e.filled=!1,e.message="",e.reactElement=void 0,e.data=void 0,e.error=void 0,e.renderingComponent=void 0},renderSuccess:function(t){var r=t.message,n=t.data,o=t.reactElement,i=t.renderingComponent;r?(e.filled=!1,e.message=r,e.reactElement=void 0,e.data=void 0,e.error=void 0,e.renderingComponent=void 0):(e.filled=!0,e.message="",e.reactElement=o,e.data=n,e.error=void 0,e.renderingComponent=i)},renderError:function(t){console.error(t),e.filled=!1,e.message="",e.reactElement=void 0,e.data=void 0,e.error=t,e.renderingComponent=void 0},setRefNameMap:function(t){e.refNameMap=t}}})).actions((function(e){var t=c.getEnv(e).pluginManager.jbrequire(ae),r=t.renderReactionData,o=t.renderReactionEffect;return{afterAttach:function(){n.makeAbortableReaction(e,r,o,{name:"".concat(e.type," ").concat(e.id," rendering"),fireImmediately:!0},e.renderStarted,e.renderSuccess,e.renderError),n.makeAbortableReaction(e,(function(){return{assemblyNames:h.getTrackAssemblyNames(e.parentTrack),adapter:u.getConf(c.getParent(e,2),"adapter"),assemblyManager:n.getSession(e).assemblyManager}}),function(){var t=B(oe.mark((function t(r,n){return oe.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",r.assemblyManager.getRefNameMapForAdapter(r.adapter,r.assemblyNames[0],{signal:n,sessionId:h.getRpcSessionId(e)}));case 2:case"end":return t.stop()}}),t)})));return function(e,r){return t.apply(this,arguments)}}(),{name:"".concat(e.type," ").concat(e.id," getting refNames"),fireImmediately:!0},(function(){}),(function(t){e.setRefNameMap(t)}),(function(t){console.error(t),e.setError(t)}))}}})),se=u.ConfigurationSchema("BaseChordDisplay",{onChordClick:{type:"boolean",description:"callback that should be run when a chord in the track is clicked",defaultValue:!1,contextVariable:["feature","track","pluginManager"]}},{explicitIdentifier:"displayId"}),le=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&&F(e,t)}(c,o);var r=_(c);function c(){var e;return N(this,c),(e=r.apply(this,arguments)).name="CircularViewPlugin",e}return L(c,[{key:"install",value:function(e){e.addViewType((function(){return new i({ReactComponent:t.lazy((function(){return Promise.resolve().then((function(){return Pe}))})),stateModel:Q(e),name:"CircularView"})}))}},{key:"configure",value:function(e){n.isAbstractMenuManager(e.rootModel)&&e.rootModel.appendToSubMenu(["Add"],{label:"Circular view",icon:a,onClick:function(e){e.addView("CircularView",{})}})}}]),c}(),ue=S.makeStyles({rulerLabel:{fontSize:"0.8rem",fontWeight:500,lineHeight:1.6,letterSpacing:"0.0075em"}});function de(e,t,r,n){if(e.flipped){var o=[n,r];r=o[0],n=o[1]}var i=e.bpToXY(r,t),a=e.bpToXY(n,t),c=Math.abs(n-r)/e.bpPerRadian>Math.PI?"1":"0";return["M"].concat(V(i),["A",t,t,"0",c,"1"],V(a)).join(" ")}var fe=m.observer((function(e){var t=e.model,o=e.slice,i=S.useTheme(),a=t.radiusPx+1,c=o.endRadians,s=o.startRadians,l=o.region,u=n.polarToCartesian(a,s),d=n.polarToCartesian(a,c),f=(c-s)*a,p=c-s>Math.PI?"1":"0",h=(c+s)/2,m="[".concat(Number(l.regions.length).toLocaleString(),"]");return r.createElement(r.Fragment,null,r.createElement(pe,{text:m,view:t,maxWidthPx:f,radians:h,radiusPx:a,title:"".concat(Number(l.regions.length).toLocaleString()," more regions"),color:i.palette.text.primary}),r.createElement("path",{d:["M"].concat(V(u),["A",a,a,"0",p,"1"],V(d)).join(" "),stroke:i.palette.text.secondary,strokeWidth:2,strokeDasharray:"2,2",fill:"none"}))})),pe=m.observer((function(e){var t=e.view,o=e.text,i=e.maxWidthPx,a=e.radians,c=e.radiusPx,s=e.title,l=e.color,u=ue(),d=n.polarToCartesian(c+5,a);if(!o)return null;if(6.5*o.length<i)return r.createElement("text",{x:0,y:0,className:u.rulerLabel,textAnchor:"middle",dominantBaseline:"baseline",transform:"translate(".concat(d,") rotate(").concat(n.radToDeg(a)+90,")"),style:{fill:l}},o,r.createElement("title",null,s||o));if(i>4){var f=n.radToDeg(a+t.offsetRadians-Math.PI/2);return r.createElement("text",f>=180?{x:0,y:0,className:u.rulerLabel,textAnchor:"start",dominantBaseline:"middle",transform:"translate(".concat(d,") rotate(").concat(n.radToDeg(a),")"),style:{fill:l}}:{x:0,y:0,className:u.rulerLabel,textAnchor:"end",dominantBaseline:"middle",transform:"translate(".concat(d,") rotate(").concat(n.radToDeg(a)+180,")"),style:{fill:l}},o,r.createElement("title",null,s||o))}return null})),he=m.observer((function(e){var t,o=e.model,i=e.slice,a=S.useTheme(),c=o.radiusPx,s=i.region,l=i.endRadians,u=i.startRadians,d=(l+u)/2,f=(l-u)*c,p=n.getSession(o).assemblyManager.get(i.region.assemblyName);if(p&&(t=p.getRefNameColor(s.refName)),t)try{t=R.makeContrasting(t,a.palette.background.paper)}catch(e){t=a.palette.text.primary}else t=a.palette.text.primary;return r.createElement(r.Fragment,null,r.createElement(pe,{text:s.refName,view:o,maxWidthPx:f,radians:d,radiusPx:c,color:t}),r.createElement("path",{d:de(i,c+1,s.start,s.end),stroke:t,strokeWidth:2,fill:"none"},r.createElement("title",null,s.refName)))})),me=m.observer((function(e){var t=e.model,o=e.slice;return o.region.elided?r.createElement(fe,{key:n.assembleLocString(o.region.regions[0]),model:t,slice:o}):r.createElement(he,{key:n.assembleLocString(o.region),model:t,slice:o})})),ge=k.makeStyles((function(e){return{importFormContainer:{marginBottom:e.spacing(4)}}})),ye=m.observer((function(e){return r.createElement(k.Typography,{variant:"h6",color:"error"},"".concat(e.error))})),ve=m.observer((function(e){var o=e.model,i=ge(),a=n.getSession(o),c=o.error,s=a.assemblyNames,l=a.assemblyManager,u=z(t.useState(s[0]),2),d=u[0],f=u[1],p=z(t.useState(c),2),h=p[0],m=p[1],g=l.get(d),y=(null==g?void 0:g.regions)||[],v=(s.length?null==g?void 0:g.error:"No configured assemblies")||h;return r.createElement(r.Fragment,null,r.createElement(k.Container,{className:i.importFormContainer},v?r.createElement(k.Grid,{container:!0,spacing:1,justifyContent:"center",alignItems:"center"},r.createElement(k.Grid,{item:!0},r.createElement(ye,{error:v}))):null,r.createElement(k.Grid,{container:!0,spacing:1,justifyContent:"center",alignItems:"center"},r.createElement(k.Grid,{item:!0},r.createElement(C,{onChange:function(e){m(void 0),f(e)},session:a,selected:d})),r.createElement(k.Grid,{item:!0},r.createElement(k.Button,{disabled:!(y&&y.length),onClick:function(){return o.setDisplayedRegions(y)},variant:"contained",color:"primary"},y.length?"Open":"Loading…")))))})),be=k.makeStyles((function(e){return{root:{position:"relative",marginBottom:e.spacing(1),overflow:"hidden",background:"white"},scroller:{overflow:"auto"},sliceRoot:{background:"none",boxSizing:"content-box",display:"block"},iconButton:{padding:"4px",margin:"0 2px 0 2px"},controls:{overflow:"hidden",whiteSpace:"nowrap",position:"absolute",background:E.grey[200],boxSizing:"border-box",borderRight:"1px solid #a2a2a2",borderBottom:"1px solid #a2a2a2",left:0,top:0},importFormContainer:{marginBottom:e.spacing(4)}}})),we=m.observer((function(e){var t=e.model;return r.createElement(r.Fragment,null,r.createElement(r.Fragment,null,t.staticSlices.map((function(e){return r.createElement(me,{key:n.assembleLocString(e.region.elided?e.region.regions[0]:e.region),model:t,slice:e})}))),r.createElement(r.Fragment,null,t.tracks.map((function(e){var n=e.displays[0];return r.createElement(n.RenderingComponent,{key:n.id,display:n,view:t})}))))})),xe=m.observer((function(e){var t=e.model,n=e.showingFigure,o=be();return r.createElement("div",{className:o.controls},r.createElement(k.IconButton,{onClick:t.zoomOutButton,className:o.iconButton,title:t.lockedFitToWindow?"unlock to zoom out":"zoom out",disabled:!n||t.atMaxBpPerPx||t.lockedFitToWindow,color:"secondary"},r.createElement(g,null)),r.createElement(k.IconButton,{onClick:t.zoomInButton,className:o.iconButton,title:"zoom in",disabled:!n||t.atMinBpPerPx,color:"secondary"},r.createElement(y,null)),r.createElement(k.IconButton,{onClick:t.rotateCounterClockwiseButton,className:o.iconButton,title:"rotate counter-clockwise",disabled:!n,color:"secondary"},r.createElement(v,null)),r.createElement(k.IconButton,{onClick:t.rotateClockwiseButton,className:o.iconButton,title:"rotate clockwise",disabled:!n,color:"secondary"},r.createElement(b,null)),r.createElement(k.IconButton,{onClick:t.toggleFitToWindowLock,className:o.iconButton,title:t.lockedFitToWindow?"locked model to window size":"unlocked model to zoom further",disabled:t.tooSmallToLock,color:"secondary"},r.createElement(t.lockedFitToWindow?w:x,null)),t.hideTrackSelectorButton?null:r.createElement(k.IconButton,{onClick:t.activateTrackSelector,title:"Open track selector","data-testid":"circular_track_select",color:"secondary"},r.createElement(P.TrackSelector,null)))})),Pe={__proto__:null,default:m.observer((function(e){var t=e.model,n=be(),o=!!t.displayedRegions.length&&t.figureWidth&&t.figureHeight,i=!o&&!t.disableImportForm,a=o&&!i;return r.createElement("div",{className:n.root,style:{width:t.width,height:t.height},"data-testid":t.id},t.error?r.createElement("p",{style:{color:"red"}},t.error.message):r.createElement(r.Fragment,null,i?r.createElement(ve,{model:t}):null,r.createElement(r.Fragment,null,a?r.createElement("div",{className:n.scroller,style:{width:t.width,height:t.height}},r.createElement("div",{className:n.rotator,style:{transform:["rotate(".concat(t.offsetRadians,"rad)")].join(" "),transition:"transform 0.5s",transformOrigin:t.centerXY.map((function(e){return"".concat(e,"px")})).join(" ")}},r.createElement("svg",{style:{position:"absolute",left:0,top:0},className:n.sliceRoot,width:"".concat(t.figureWidth,"px"),height:"".concat(t.figureHeight,"px"),version:"1.1"},r.createElement("g",{transform:"translate(".concat(t.centerXY,")")},r.createElement(we,{model:t}))))):null,r.createElement(xe,{model:t,showingFigure:a}),t.hideVerticalResizeHandle?null:r.createElement(T.ResizeHandle,{onDrag:t.resizeHeight,style:{height:3,position:"absolute",bottom:0,left:0,background:"#ccc",boxSizing:"border-box",borderTop:"1px solid #fafafa"}}))))}))};exports.BaseChordDisplayComponentFactory=function(e){var t=e.lib,r=e.load,n=t.react,o=t["mobx-react"],i=o.observer,a=o.PropTypes,c=r(ee),s=r(te),l=r(re);function u(e){var t=e.display;return n.createElement(t.error?s:t.filled?l:c,{model:t})}return u.propTypes={display:a.observableObject.isRequired},i(u)},exports.BaseChordDisplayModel=ce,exports.baseChordDisplayConfig=se,exports.default=le;
|
|
1
|
+
"use strict";function e(e){return e&&"object"==typeof e&&"default"in e?e.default:e}Object.defineProperty(exports,"__esModule",{value:!0});var t=require("react"),r=e(t),n=require("mobx"),o=require("@jbrowse/core/util"),i=e(require("@jbrowse/core/Plugin")),a=e(require("@jbrowse/core/pluggableElementTypes/ViewType")),c=e(require("@material-ui/icons/DataUsage")),s=require("mobx-state-tree"),l=require("@jbrowse/core/util/types/mst"),u=require("@jbrowse/core/configuration"),d=require("@jbrowse/core/pluggableElementTypes/models"),f=e(require("@jbrowse/core/pluggableElementTypes/renderers/CircularChordRendererType")),p=require("@jbrowse/core/util/simpleFeature"),h=require("@jbrowse/core/util/tracks"),m=require("mobx-react"),g=require("@jbrowse/core/ui"),y=require("@material-ui/core"),v=require("@material-ui/core/colors"),b=e(require("@material-ui/icons/ZoomOut")),w=e(require("@material-ui/icons/ZoomIn")),x=e(require("@material-ui/icons/RotateLeft")),P=e(require("@material-ui/icons/RotateRight")),k=e(require("@material-ui/icons/LockOutlined")),E=e(require("@material-ui/icons/LockOpen")),T=require("@jbrowse/core/ui/Icons"),R=require("@jbrowse/core/util/color"),S=require("@material-ui/core/styles"),C=e(require("@jbrowse/core/ui/ErrorMessage")),M=e(require("@jbrowse/core/ui/AssemblySelector"));function j(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function O(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?j(Object(r),!0).forEach((function(t){A(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):j(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function B(e,t,r,n,o,i,a){try{var c=e[i](a),s=c.value}catch(e){return void r(e)}c.done?t(s):Promise.resolve(s).then(n,o)}function N(e){return function(){var t=this,r=arguments;return new Promise((function(n,o){var i=e.apply(t,r);function a(e){B(i,n,o,a,c,"next",e)}function c(e){B(i,n,o,a,c,"throw",e)}a(void 0)}))}}function I(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function L(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}function W(e,t,r){return t&&L(e.prototype,t),r&&L(e,r),Object.defineProperty(e,"prototype",{writable:!1}),e}function A(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function q(e){return(q=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function D(e,t){return(D=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function F(e,t){if(null==e)return{};var r,n,o=function(e,t){if(null==e)return{};var r,n,o={},i=Object.keys(e);for(n=0;n<i.length;n++)t.indexOf(r=i[n])>=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n<i.length;n++)t.indexOf(r=i[n])>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}function _(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 V(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 r,n=q(e);if(t){var o=q(this).constructor;r=Reflect.construct(n,arguments,o)}else r=n.apply(this,arguments);return _(this,r)}}function z(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,o,i=[],a=!0,c=!1;try{for(r=r.call(e);!(a=(n=r.next()).done)&&(i.push(n.value),!t||i.length!==t);a=!0);}catch(e){c=!0,o=e}finally{try{a||null==r.return||r.return()}finally{if(c)throw o}}return i}}(e,t)||G(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 H(e){return function(e){if(Array.isArray(e))return Y(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||G(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 G(e,t){if(e){if("string"==typeof e)return Y(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?Y(e,t):void 0}}function Y(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r<t;r++)n[r]=e[r];return n}function X(e,t){var r="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!r){if(Array.isArray(e)||(r=G(e))||t&&e&&"number"==typeof e.length){r&&(e=r);var n=0,o=function(){};return{s:o,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:o}}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 i,a=!0,c=!1;return{s:function(){r=r.call(e)},n:function(){var e=r.next();return a=e.done,e},e:function(e){c=!0,i=e},f:function(){try{a||null==r.return||r.return()}finally{if(c)throw i}}}}function J(e,t){return e(t={exports:{}},t.exports),t.exports}var U=J((function(e){var t=function(e){var t=Object.prototype,r=t.hasOwnProperty,n="function"==typeof Symbol?Symbol:{},o=n.iterator||"@@iterator",i=n.asyncIterator||"@@asyncIterator",a=n.toStringTag||"@@toStringTag";function c(e,t,r){return Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{c({},"")}catch(e){c=function(e,t,r){return e[t]=r}}function s(e,t,r,n){var o=Object.create((t&&t.prototype instanceof d?t:d).prototype),i=new k(n||[]);return o._invoke=function(e,t,r){var n="suspendedStart";return function(o,i){if("executing"===n)throw new Error("Generator is already running");if("completed"===n){if("throw"===o)throw i;return{value:void 0,done:!0}}for(r.method=o,r.arg=i;;){var a=r.delegate;if(a){var c=w(a,r);if(c){if(c===u)continue;return c}}if("next"===r.method)r.sent=r._sent=r.arg;else if("throw"===r.method){if("suspendedStart"===n)throw n="completed",r.arg;r.dispatchException(r.arg)}else"return"===r.method&&r.abrupt("return",r.arg);n="executing";var s=l(e,t,r);if("normal"===s.type){if(n=r.done?"completed":"suspendedYield",s.arg===u)continue;return{value:s.arg,done:r.done}}"throw"===s.type&&(n="completed",r.method="throw",r.arg=s.arg)}}}(e,r,i),o}function l(e,t,r){try{return{type:"normal",arg:e.call(t,r)}}catch(e){return{type:"throw",arg:e}}}e.wrap=s;var u={};function d(){}function f(){}function p(){}var h={};c(h,o,(function(){return this}));var m=Object.getPrototypeOf,g=m&&m(m(E([])));g&&g!==t&&r.call(g,o)&&(h=g);var y=p.prototype=d.prototype=Object.create(h);function v(e){["next","throw","return"].forEach((function(t){c(e,t,(function(e){return this._invoke(t,e)}))}))}function b(e,t){var n;this._invoke=function(o,i){function a(){return new t((function(n,a){!function n(o,i,a,c){var s=l(e[o],e,i);if("throw"!==s.type){var u=s.arg,d=u.value;return d&&"object"==typeof d&&r.call(d,"__await")?t.resolve(d.__await).then((function(e){n("next",e,a,c)}),(function(e){n("throw",e,a,c)})):t.resolve(d).then((function(e){u.value=e,a(u)}),(function(e){return n("throw",e,a,c)}))}c(s.arg)}(o,i,n,a)}))}return n=n?n.then(a,a):a()}}function w(e,t){var r=e.iterator[t.method];if(void 0===r){if(t.delegate=null,"throw"===t.method){if(e.iterator.return&&(t.method="return",t.arg=void 0,w(e,t),"throw"===t.method))return u;t.method="throw",t.arg=new TypeError("The iterator does not provide a 'throw' method")}return u}var n=l(r,e.iterator,t.arg);if("throw"===n.type)return t.method="throw",t.arg=n.arg,t.delegate=null,u;var o=n.arg;return o?o.done?(t[e.resultName]=o.value,t.next=e.nextLoc,"return"!==t.method&&(t.method="next",t.arg=void 0),t.delegate=null,u):o:(t.method="throw",t.arg=new TypeError("iterator result is not an object"),t.delegate=null,u)}function x(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 P(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function k(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(x,this),this.reset(!0)}function E(e){if(e){var t=e[o];if(t)return t.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var n=-1,i=function t(){for(;++n<e.length;)if(r.call(e,n))return t.value=e[n],t.done=!1,t;return t.value=void 0,t.done=!0,t};return i.next=i}}return{next:T}}function T(){return{value:void 0,done:!0}}return f.prototype=p,c(y,"constructor",p),c(p,"constructor",f),f.displayName=c(p,a,"GeneratorFunction"),e.isGeneratorFunction=function(e){var t="function"==typeof e&&e.constructor;return!!t&&(t===f||"GeneratorFunction"===(t.displayName||t.name))},e.mark=function(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,p):(e.__proto__=p,c(e,a,"GeneratorFunction")),e.prototype=Object.create(y),e},e.awrap=function(e){return{__await:e}},v(b.prototype),c(b.prototype,i,(function(){return this})),e.AsyncIterator=b,e.async=function(t,r,n,o,i){void 0===i&&(i=Promise);var a=new b(s(t,r,n,o),i);return e.isGeneratorFunction(r)?a:a.next().then((function(e){return e.done?e.value:a.next()}))},v(y),c(y,a,"Generator"),c(y,o,(function(){return this})),c(y,"toString",(function(){return"[object Generator]"})),e.keys=function(e){var t=[];for(var r in e)t.push(r);return t.reverse(),function r(){for(;t.length;){var n=t.pop();if(n in e)return r.value=n,r.done=!1,r}return r.done=!0,r}},e.values=E,k.prototype={constructor:k,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(P),!e)for(var t in this)"t"===t.charAt(0)&&r.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 n(r,n){return a.type="throw",a.arg=e,t.next=r,n&&(t.method="next",t.arg=void 0),!!n}for(var o=this.tryEntries.length-1;o>=0;--o){var i=this.tryEntries[o],a=i.completion;if("root"===i.tryLoc)return n("end");if(i.tryLoc<=this.prev){var c=r.call(i,"catchLoc"),s=r.call(i,"finallyLoc");if(c&&s){if(this.prev<i.catchLoc)return n(i.catchLoc,!0);if(this.prev<i.finallyLoc)return n(i.finallyLoc)}else if(c){if(this.prev<i.catchLoc)return n(i.catchLoc,!0)}else{if(!s)throw new Error("try statement without catch or finally");if(this.prev<i.finallyLoc)return n(i.finallyLoc)}}}},abrupt:function(e,t){for(var n=this.tryEntries.length-1;n>=0;--n){var o=this.tryEntries[n];if(o.tryLoc<=this.prev&&r.call(o,"finallyLoc")&&this.prev<o.finallyLoc){var i=o;break}}i&&("break"===e||"continue"===e)&&i.tryLoc<=t&&t<=i.finallyLoc&&(i=null);var a=i?i.completion:{};return a.type=e,a.arg=t,i?(this.method="next",this.next=i.finallyLoc,u):this.complete(a)},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),u},finish:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var r=this.tryEntries[t];if(r.finallyLoc===e)return this.complete(r.completion,r.afterLoc),P(r),u}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var r=this.tryEntries[t];if(r.tryLoc===e){var n=r.completion;if("throw"===n.type){var o=n.arg;P(r)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(e,t,r){return this.delegate={iterator:E(e),resultName:t,nextLoc:r},"next"===this.method&&(this.arg=void 0),u}},e}(e.exports);try{regeneratorRuntime=t}catch(e){"object"==typeof globalThis?globalThis.regeneratorRuntime=t:Function("r","regeneratorRuntime = r")(t)}}));function $(e,t,r,n,o){var i=Math.abs(e-r);if(!(i>n)){i===n&&o.push([t,e]);var a=Math.sqrt(n*n-i*i);o.push([t-a,e]),o.push([t+a,e])}}function Z(e,t,r,n,o){var i=Math.abs(e-t);if(!(i>n)){i===n&&o.push([e,r]);var a=Math.sqrt(n*n-i*i);o.push([e,r-a]),o.push([e,r+a])}}function K(e,t){var r=Math.sqrt(e*e+t*t);return 0===r?[0,0]:[r,function(e,t){var r=(Math.atan(t/e)+2*Math.PI)%(2*Math.PI);return e<0&&(t<=0?r+=Math.PI:r-=Math.PI),r}(e,t)]}var Q=2*Math.PI,ee=function(){function e(t,r,n,i){I(this,e),this.region=r,this.radianWidth=i;var a=t.bpPerRadian;this.key=o.assembleLocString(r),this.offsetRadians=n,this.bpPerRadian=a,this.flipped=!1,this.startRadians=this.offsetRadians,this.endRadians=r.widthBp/this.bpPerRadian+this.offsetRadians,Object.freeze(this)}return W(e,[{key:"bpToXY",value:function(e,t){return o.polarToCartesian(t,(this.region.elided?this.region.widthBp/2:this.flipped?this.region.end-e:e-this.region.start)/this.bpPerRadian+this.offsetRadians)}},{key:"toJSON",value:function(){return o.objectFromEntries(Object.entries(this))}}]),e}();function te(e,t){var r,n,o,i,a=z(e.visibleSection.theta,2),c=a[0];return r=t.offsetRadians+e.offsetRadians,o=c,i=a[1]-c,!((n=t.radianWidth)<=0||i<=0)&&(n+1e-4>=Q||i+1e-4>=Q||(r=(r%Q+Q)%Q+Q)<(o=(o%Q+Q)%Q+Q)+i&&r+n>o||r<(o-=Q)+i&&r+n>o||r<(o+=Q+Q)+i&&r+n>o)}function re(e){return s.types.compose(d.BaseViewModel,s.types.model("CircularView",{type:s.types.literal("CircularView"),offsetRadians:-Math.PI/2,bpPerPx:2e6,tracks:s.types.array(e.pluggableMstType("track","stateModel")),hideVerticalResizeHandle:!1,hideTrackSelectorButton:!1,lockedFitToWindow:!0,disableImportForm:!1,height:s.types.optional(s.types.refinement("trackHeight",s.types.number,(function(e){return e>=40})),400),minimumRadiusPx:25,spacingPx:10,paddingPx:80,lockedPaddingPx:100,minVisibleWidth:6,minimumBlockWidth:20,displayedRegions:s.types.array(l.Region),scrollX:0,scrollY:0,trackSelectorType:"hierarchical"}).volatile((function(){return{width:0}})).views((function(e){return{get staticSlices(){return function(e){var t,r=[],n=0,o=X(e.elidedRegions);try{for(o.s();!(t=o.n()).done;){var i=t.value,a=i.widthBp/e.bpPerRadian+e.spacingPx/e.pxPerRadian;r.push(new ee(e,i,n,a)),n+=a}}catch(e){o.e(e)}finally{o.f()}return r}(e)},get visibleStaticSlices(){return this.staticSlices.filter(te.bind(this,e))},get visibleSection(){return function(e,t,r){var n=z(e,4),o=n[0],i=n[1],a=n[2],c=n[3],s=z(t,2),l=s[0],u=s[1];if(i-=l,a-=u,c-=u,(o-=l)<0&&i>0&&a<0&&c>0){for(var d=[[o,a],[i,a],[o,c],[i,c]],f=-Infinity,p=0;p<d.length;p+=1){var h=z(d[p],2),m=h[0],g=h[1],y=Math.sqrt(m*m+g*g);y>f&&(f=y)}return{rho:[0,Math.min(r,f)],theta:[0,2*Math.PI]}}var v=[[o,a],[i,a],[o,c],[i,c]];Z(o,0,0,r,v),Z(i,0,0,r,v),$(a,0,0,r,v),$(c,0,0,r,v),-o<r&&v.push([o,0]),i<r&&v.push([i,0]),-a<r&&v.push([0,a]),c<r&&v.push([0,c]);for(var b=o>=0?-1:1,w=Infinity,x=-Infinity,P=Infinity,k=-Infinity,E=0;E<v.length;E+=1){var T=z(v[E],2),R=T[0],S=T[1];if(R>=o&&R<=i&&S>=a&&S<=c){var C=z(K(R*b,S*b),2),M=C[0],j=C[1];M<=r+.001&&(j<P&&M>1e-4&&(P=j),j>k&&M>1e-4&&(k=j),M<w&&(w=M),M>x&&(x=M))}}return-1===b&&(P+=Math.PI,k+=Math.PI),P>2*Math.PI&&k>2*Math.PI&&(P-=2*Math.PI,k-=2*Math.PI),{rho:[w,Math.min(r,x)],theta:[P,k]}}([e.scrollX,e.scrollX+e.width,e.scrollY,e.scrollY+e.height],this.centerXY,this.radiusPx)},get circumferencePx(){var t,r=0,n=X(this.elidedRegions);try{for(n.s();!(t=n.n()).done;)r+=t.value.widthBp}catch(e){n.e(e)}finally{n.f()}return r/e.bpPerPx+e.spacingPx*this.elidedRegions.length},get radiusPx(){return this.circumferencePx/(2*Math.PI)},get bpPerRadian(){return e.bpPerPx*this.radiusPx},get pxPerRadian(){return this.radiusPx},get centerXY(){return[this.radiusPx+e.paddingPx,this.radiusPx+e.paddingPx]},get totalBp(){var t,r=0,n=X(e.displayedRegions);try{for(n.s();!(t=n.n()).done;){var o=t.value;r+=o.end-o.start}}catch(e){n.e(e)}finally{n.f()}return r},get maximumRadiusPx(){return e.lockedFitToWindow?Math.min(e.width,e.height)/2-e.lockedPaddingPx:1e6},get maxBpPerPx(){var t=2*Math.PI*e.minimumRadiusPx;return this.totalBp/t},get minBpPerPx(){var e=2*Math.PI*this.maximumRadiusPx;return o.clamp(this.totalBp/e,1e-10,this.maxBpPerPx)},get atMaxBpPerPx(){return e.bpPerPx>=this.maxBpPerPx},get atMinBpPerPx(){return e.bpPerPx<=this.minBpPerPx},get tooSmallToLock(){return this.minBpPerPx<=1e-10},get figureDimensions(){return[2*this.radiusPx+2*e.paddingPx,2*this.radiusPx+2*e.paddingPx]},get figureWidth(){return this.figureDimensions[0]},get figureHeight(){return this.figureDimensions[1]},get elidedRegions(){var t=[];e.displayedRegions.forEach((function(r){var n=r.end-r.start;if(n/e.bpPerPx<e.minVisibleWidth){var o=t[t.length-1];o&&o.elided?(o.regions.push(O({},r)),o.widthBp+=n):t.push({elided:!0,widthBp:n,regions:[O({},r)]})}else t.push(O(O({},r),{},{widthBp:n}))}));for(var r=0;r<t.length;r+=1){var n=t[r];n.elided&&1===n.regions.length&&(delete n.elided,t[r]=O(O({},n),n.regions[0]))}return t},get assemblyNames(){var t=[];return e.displayedRegions.forEach((function(e){t.includes(e.assemblyName)||t.push(e.assemblyName)})),t},get initialized(){var t=o.getSession(e).assemblyManager;return this.assemblyNames.every((function(e){var r,n;return null===(r=t.assemblyList)||void 0===r||!r.map((function(e){return e.name})).includes(e)||(null===(n=t.get(e))||void 0===n?void 0:n.initialized)}))}}})).volatile((function(){return{error:void 0}})).actions((function(t){return{setWidth:function(e){return t.width=Math.max(e,100),t.width},setHeight:function(e){return t.height=Math.max(e,40),t.height},resizeHeight:function(e){var r=t.height,n=this.setHeight(t.height+e);return this.setModelViewWhenAdjust(!t.tooSmallToLock),n-r},resizeWidth:function(e){var r=t.width,n=this.setWidth(t.width+e);return this.setModelViewWhenAdjust(!t.tooSmallToLock),n-r},rotateClockwiseButton:function(){this.rotateClockwise(Math.PI/6)},rotateCounterClockwiseButton:function(){this.rotateCounterClockwise(Math.PI/6)},rotateClockwise:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:.17;t.offsetRadians+=e},rotateCounterClockwise:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:.17;t.offsetRadians-=e},zoomInButton:function(){this.setBpPerPx(t.bpPerPx/1.4)},zoomOutButton:function(){this.setBpPerPx(1.4*t.bpPerPx)},setBpPerPx:function(e){t.bpPerPx=o.clamp(e,t.minBpPerPx,t.maxBpPerPx)},setModelViewWhenAdjust:function(e){t.lockedFitToWindow&&e&&this.setBpPerPx(t.minBpPerPx)},closeView:function(){s.getParent(t,2).removeView(t)},setDisplayedRegions:function(e){var r=0===t.displayedRegions.length;t.displayedRegions=s.cast(e),this.setBpPerPx(r?t.minBpPerPx:t.bpPerPx)},activateTrackSelector:function(){if("hierarchical"===t.trackSelectorType){var e=o.getSession(t);if(o.isSessionModelWithWidgets(e)){var r=e.addWidget("HierarchicalTrackSelectorWidget","hierarchicalTrackSelector",{view:t});return e.showWidget(r),r}}throw new Error("invalid track selector type ".concat(t.trackSelectorType))},toggleTrack:function(e){this.hideTrack(e)||this.showTrack(e)},setError:function(e){console.error(e),t.error=e},showTrack:function(r){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},o=e.pluggableConfigSchemaType("track"),i=s.resolveIdentifier(o,s.getRoot(t),r),a=e.getTrackType(i.type);if(!a)throw new Error("unknown track type ".concat(i.type));var c=e.getViewType(t.type),l=c.displayTypes.map((function(e){return e.name})),u=i.displays.find((function(e){return l.includes(e.type)})),d=a.stateModel.create(O(O({},n),{},{type:i.type,configuration:i,displays:[{type:u.type,configuration:u}]}));t.tracks.push(d)},addTrackConf:function(r){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},o=r.type,i=u.readConfObject(r,"name"),a=e.getTrackType(o);if(!a)throw new Error("unknown track type ".concat(r.type));var c=e.getViewType(t.type),s=c.displayTypes.map((function(e){return e.name})),l=r.displays.find((function(e){return s.includes(e.type)})),d=a.stateModel.create(O(O({},n),{},{name:i,type:o,configuration:r,displays:[{type:l.type,configuration:l}]}));t.tracks.push(d)},hideTrack:function(r){var o=e.pluggableConfigSchemaType("track"),i=s.resolveIdentifier(o,s.getRoot(t),r),a=t.tracks.filter((function(e){return e.configuration===i}));return n.transaction((function(){return a.forEach((function(e){return t.tracks.remove(e)}))})),a.length},toggleFitToWindowLock:function(){return t.lockedFitToWindow=!t.lockedFitToWindow,this.setModelViewWhenAdjust(t.atMinBpPerPx),t.lockedFitToWindow}}})))}var ne=function(e){var t=e.lib,r=t.react,n=r.useState,o=r.useEffect,i=t["mobx-react"].observer,a=(0,t["@material-ui/core/styles"].makeStyles)((function(e){return{path:{strokeDasharray:187,strokeDashoffset:50,animation:"$dash ".concat(1.4,"s ease-in-out infinite, $colors ").concat(5.6,"s ease-in-out infinite")},"@keyframes colors":{"0%":{stroke:e.palette.primary.light},"25%":{stroke:e.palette.secondary.light},"50%":{stroke:e.palette.tertiary.light},"75%":{stroke:e.palette.quaternary.light},"100%":{stroke:e.palette.primary.light}},"@keyframes dash":{"0%":{strokeDashoffset:2},"50%":{strokeDashoffset:.5,transform:"rotate(135deg)"},"100%":{strokeDashoffset:2,transform:"rotate(720deg)"}}}}));return i((function(e){var t=e.model.renderProps.radius,i=a(),c=z(n(!1),2),s=c[0],l=c[1];return o((function(){var e=setTimeout((function(){return l(!0)}),400);return function(){return clearTimeout(e)}})),s?r.createElement("g",null,r.createElement("defs",null,r.createElement("pattern",{id:"diagonalHatch",width:"10",height:"10",patternTransform:"rotate(45 0 0)",patternUnits:"userSpaceOnUse"},r.createElement("line",{x1:"0",y1:"0",x2:"0",y2:"10",style:{stroke:"rgba(255,255,255,0.5)",strokeWidth:10}}))),r.createElement("circle",{cx:"0",cy:"0",r:t,fill:"#f1f1f1"}),r.createElement("circle",{cx:"0",cy:"0",r:t,fill:"url(#diagonalHatch)"}),r.createElement("text",{x:"0",y:"0",transform:"rotate(90 0 0)",dominantBaseline:"middle",textAnchor:"middle"},"Loading…"),r.createElement("circle",{className:i.path,fill:"none",strokeWidth:"4",strokeLinecap:"round",cx:"0",cy:"0",r:"60"})):null}))},oe=function(e){var t=e.jbrequire,r=t("react"),n=t("@material-ui/core/styles").makeStyles,o=t("mobx-react").observer,i=n({errorMessage:{},errorBackground:{},errorText:{}});return o((function(e){var t=e.model,n=t.renderProps.radius,o=t.error,a=i();return r.createElement("g",{className:a.errorMessage},r.createElement("defs",null,r.createElement("pattern",{id:"diagonalHatch",width:"10",height:"10",patternTransform:"rotate(45 0 0)",patternUnits:"userSpaceOnUse"},r.createElement("line",{x1:"0",y1:"0",x2:"0",y2:"10",style:{stroke:"rgba(255,0,0,0.5)",strokeWidth:10}}))),r.createElement("circle",{className:a.errorBackground,cx:"0",cy:"0",r:n,fill:"#ffb4b4"}),r.createElement("circle",{className:a.errorPattern,cx:"0",cy:"0",r:n,fill:"url(#diagonalHatch)"}),r.createElement("text",{className:a.errorText,x:"0",y:"0",transform:"rotate(90 0 0)",dominantBaseline:"middle",textAnchor:"middle"},String(o)))}))},ie=function(e){var t=e.jbrequire,r=t("react"),n=t("mobx-state-tree").isAlive,o=r.useEffect,i=r.useRef,a=t("mobx-react"),c=a.observer,s=a.PropTypes,l=t("react-dom"),u=l.unmountComponentAtNode,d=l.hydrate,f=t("@jbrowse/core/util").rIC;function p(e){var t=e.model,a=t.data,c=t.html,s=t.filled,l=t.renderingComponent,p=i(null);return o((function(){var e=p.current;return e&&s&&(e&&e.innerHTML&&(e.style.display="none",u(e)),e.style.outline="none",e.innerHTML=c,f((function(){if(n(t)){var o=r.createElement(l,O(O({},a),t.renderProps()),null);f((function(){n(t)&&d(o,e)}))}}))),function(){e&&u(e)}})),r.createElement("g",{ref:p})}return p.propTypes={model:s.observableObject.isRequired},c(p)},ae=["html"],ce=function(e){var t=e.jbrequire,r=t("@jbrowse/core/util/tracks").getRpcSessionId,n=t("@jbrowse/core/util").getContainingView,o=t("@jbrowse/core/util").getSession;function i(){return(i=N(U.mark((function e(t,r,n){var o,i,a,c,s,l,u,d;return U.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(t){e.next=2;break}throw new Error("cannot render with no props");case 2:if(o=t.rendererType,i=t.rpcManager,c=t.renderArgs,s=t.renderProps,!(a=t.cannotBeRenderedReason)){e.next=5;break}return e.abrupt("return",{message:a});case 5:if(t.renderProps.radius&&t.renderArgs.regions&&t.renderArgs.regions.length){e.next=7;break}return e.abrupt("return",{message:"Skipping render"});case 7:if(n.isCompatibleWithRenderer(o)){e.next=9;break}throw new Error("renderer ".concat(o.name," is not compatible with this display type"));case 9:return e.next=11,o.renderInClient(i,O(O(O({},c),s),{},{signal:r}));case 11:return u=(l=e.sent).html,d=F(l,ae),e.abrupt("return",{html:u,data:d,renderingComponent:o.ReactComponent});case 15:case"end":return e.stop()}}),e)})))).apply(this,arguments)}return{renderReactionData:function(e){var t,i=n(e),a=e.rendererType;return{rendererType:a,rpcManager:o(i).rpcManager,renderProps:e.renderProps(),renderArgs:{assemblyName:null===(t=i.displayedRegions[0])||void 0===t?void 0:t.assemblyName,adapterConfig:JSON.parse(JSON.stringify(e.adapterConfig)),rendererType:a.name,regions:JSON.parse(JSON.stringify(i.displayedRegions)),blockDefinitions:e.blockDefinitions,sessionId:r(e),timeout:1e6}}},renderReactionEffect:function(e,t,r){return i.apply(this,arguments)}}},se=s.types.compose("BaseChordDisplay",d.BaseDisplay,s.types.model({bezierRadiusRatio:.1,assemblyName:s.types.maybe(s.types.string)})).volatile((function(){return{filled:!1,reactElement:void 0,data:void 0,message:"",renderingComponent:void 0,refNameMap:void 0}})).actions((function(e){var t=s.getEnv(e).pluginManager,r=e;return{onChordClick:function(n){u.getConf(e,"onChordClick",{feature:n,track:r,pluginManager:t})}}})).views((function(e){return{get blockDefinitions(){var t=o.getContainingView(e).staticSlices;if(!e.refNameMap)return t;var r=JSON.parse(JSON.stringify(t));return r.forEach((function(t){(t.region.elided?t.region.regions:[t.region]).forEach((function(t){var r,n=null===(r=e.refNameMap)||void 0===r?void 0:r[t.refName];n&&t.refName!==n&&(t.refName=n)}))})),r},renderProps:function(){var t=o.getContainingView(e);return O(O({},h.getParentRenderProps(e)),{},{rpcDriverName:e.rpcDriverName,displayModel:e,bezierRadius:t.radiusPx*e.bezierRadiusRatio,radius:t.radiusPx,blockDefinitions:this.blockDefinitions,onChordClick:e.onChordClick})},get rendererType(){var t=e,r=s.getEnv(e).pluginManager.getRendererType(e.rendererTypeName);if(!r)throw new Error('renderer "'.concat(t.rendererTypeName,'" not found'));if(!r.ReactComponent)throw new Error("renderer ".concat(t.rendererTypeName," has no ReactComponent, it may not be completely implemented yet"));return r},isCompatibleWithRenderer:function(e){return!!(e instanceof f)},get selectedFeatureId(){if(s.isAlive(e)){var t=o.getSession(e);if(t){var r=t.selection;return p.isFeature(r)?r.id():void 0}}}}})).actions((function(e){return{renderStarted:function(){e.filled=!1,e.message="",e.reactElement=void 0,e.data=void 0,e.error=void 0,e.renderingComponent=void 0},renderSuccess:function(t){var r=t.message,n=t.data,o=t.reactElement,i=t.renderingComponent;r?(e.filled=!1,e.message=r,e.reactElement=void 0,e.data=void 0,e.error=void 0,e.renderingComponent=void 0):(e.filled=!0,e.message="",e.reactElement=o,e.data=n,e.error=void 0,e.renderingComponent=i)},renderError:function(t){console.error(t),e.filled=!1,e.message="",e.reactElement=void 0,e.data=void 0,e.error=t,e.renderingComponent=void 0},setRefNameMap:function(t){e.refNameMap=t}}})).actions((function(e){var t=s.getEnv(e).pluginManager.jbrequire(ce),r=t.renderReactionData,n=t.renderReactionEffect;return{afterAttach:function(){o.makeAbortableReaction(e,r,n,{name:"".concat(e.type," ").concat(e.id," rendering"),fireImmediately:!0},e.renderStarted,e.renderSuccess,e.renderError),o.makeAbortableReaction(e,(function(){return{assemblyNames:h.getTrackAssemblyNames(e.parentTrack),adapter:u.getConf(s.getParent(e,2),"adapter"),assemblyManager:o.getSession(e).assemblyManager}}),function(){var t=N(U.mark((function t(r,n){return U.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",r.assemblyManager.getRefNameMapForAdapter(r.adapter,r.assemblyNames[0],{signal:n,sessionId:h.getRpcSessionId(e)}));case 2:case"end":return t.stop()}}),t)})));return function(e,r){return t.apply(this,arguments)}}(),{name:"".concat(e.type," ").concat(e.id," getting refNames"),fireImmediately:!0},(function(){}),(function(t){e.setRefNameMap(t)}),(function(t){console.error(t),e.setError(t)}))}}})),le=u.ConfigurationSchema("BaseChordDisplay",{onChordClick:{type:"boolean",description:"callback that should be run when a chord in the track is clicked",defaultValue:!1,contextVariable:["feature","track","pluginManager"]}},{explicitIdentifier:"displayId"}),ue=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}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&D(e,t)}(s,i);var r=V(s);function s(){var e;return I(this,s),(e=r.apply(this,arguments)).name="CircularViewPlugin",e}return W(s,[{key:"install",value:function(e){e.addViewType((function(){return new a({ReactComponent:t.lazy((function(){return Promise.resolve().then((function(){return Pe}))})),stateModel:re(e),name:"CircularView"})})),e.addToExtensionPoint("LaunchView-CircularView",function(){var e=N(U.mark((function e(t){var r,o,i,a,c,s,l;return U.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return o=t.assembly,a=void 0===(i=t.tracks)?[]:i,c=(r=t.session).assemblyManager,s=r.addView("CircularView",{}),e.next=5,n.when((function(){return s.initialized}));case 5:if(o){e.next=7;break}throw new Error("No assembly provided when launching circular genome view");case 7:return e.next=9,c.waitForAssembly(o);case 9:if(l=e.sent){e.next=12;break}throw new Error('Assembly "'.concat(o,'" not found when launching circular genome view'));case 12:s.setDisplayedRegions(l.regions||[]),a.forEach((function(e){return s.showTrack(e)}));case 14:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}())}},{key:"configure",value:function(e){o.isAbstractMenuManager(e.rootModel)&&e.rootModel.appendToSubMenu(["Add"],{label:"Circular view",icon:c,onClick:function(e){e.addView("CircularView",{})}})}}]),s}(),de=S.makeStyles({rulerLabel:{fontSize:"0.8rem",fontWeight:500,lineHeight:1.6,letterSpacing:"0.0075em"}});function fe(e,t,r,n){if(e.flipped){var o=[n,r];r=o[0],n=o[1]}var i=e.bpToXY(r,t),a=e.bpToXY(n,t),c=Math.abs(n-r)/e.bpPerRadian>Math.PI?"1":"0";return["M"].concat(H(i),["A",t,t,"0",c,"1"],H(a)).join(" ")}var pe=m.observer((function(e){var t=e.model,n=e.slice,i=S.useTheme(),a=t.radiusPx+1,c=n.endRadians,s=n.startRadians,l=n.region,u=o.polarToCartesian(a,s),d=o.polarToCartesian(a,c),f=(c-s)*a,p=c-s>Math.PI?"1":"0",h=(c+s)/2,m="[".concat(Number(l.regions.length).toLocaleString(),"]");return r.createElement(r.Fragment,null,r.createElement(he,{text:m,view:t,maxWidthPx:f,radians:h,radiusPx:a,title:"".concat(Number(l.regions.length).toLocaleString()," more regions"),color:i.palette.text.primary}),r.createElement("path",{d:["M"].concat(H(u),["A",a,a,"0",p,"1"],H(d)).join(" "),stroke:i.palette.text.secondary,strokeWidth:2,strokeDasharray:"2,2",fill:"none"}))})),he=m.observer((function(e){var t=e.view,n=e.text,i=e.maxWidthPx,a=e.radians,c=e.radiusPx,s=e.title,l=e.color,u=de(),d=o.polarToCartesian(c+5,a);if(!n)return null;if(6.5*n.length<i)return r.createElement("text",{x:0,y:0,className:u.rulerLabel,textAnchor:"middle",dominantBaseline:"baseline",transform:"translate(".concat(d,") rotate(").concat(o.radToDeg(a)+90,")"),style:{fill:l}},n,r.createElement("title",null,s||n));if(i>4){var f=o.radToDeg(a+t.offsetRadians-Math.PI/2);return r.createElement("text",f>=180?{x:0,y:0,className:u.rulerLabel,textAnchor:"start",dominantBaseline:"middle",transform:"translate(".concat(d,") rotate(").concat(o.radToDeg(a),")"),style:{fill:l}}:{x:0,y:0,className:u.rulerLabel,textAnchor:"end",dominantBaseline:"middle",transform:"translate(".concat(d,") rotate(").concat(o.radToDeg(a)+180,")"),style:{fill:l}},n,r.createElement("title",null,s||n))}return null})),me=m.observer((function(e){var t,n=e.model,i=e.slice,a=S.useTheme(),c=n.radiusPx,s=i.region,l=i.endRadians,u=i.startRadians,d=(l+u)/2,f=(l-u)*c,p=o.getSession(n).assemblyManager.get(i.region.assemblyName);if(p&&(t=p.getRefNameColor(s.refName)),t)try{t=R.makeContrasting(t,a.palette.background.paper)}catch(e){t=a.palette.text.primary}else t=a.palette.text.primary;return r.createElement(r.Fragment,null,r.createElement(he,{text:s.refName,view:n,maxWidthPx:f,radians:d,radiusPx:c,color:t}),r.createElement("path",{d:fe(i,c+1,s.start,s.end),stroke:t,strokeWidth:2,fill:"none"},r.createElement("title",null,s.refName)))})),ge=m.observer((function(e){var t=e.model,n=e.slice;return n.region.elided?r.createElement(pe,{key:o.assembleLocString(n.region.regions[0]),model:t,slice:n}):r.createElement(me,{key:o.assembleLocString(n.region),model:t,slice:n})})),ye=y.makeStyles((function(e){return{importFormContainer:{marginBottom:e.spacing(4)}}})),ve=m.observer((function(e){var n=e.model,i=ye(),a=o.getSession(n),c=n.error,s=a.assemblyNames,l=a.assemblyManager,u=z(t.useState(s[0]),2),d=u[0],f=u[1],p=z(t.useState(c),2),h=p[0],m=p[1],g=l.get(d),v=(null==g?void 0:g.regions)||[],b=(s.length?null==g?void 0:g.error:"No configured assemblies")||h;return r.createElement(y.Container,{className:i.importFormContainer},b?r.createElement(y.Grid,{container:!0,spacing:1,justifyContent:"center",alignItems:"center"},r.createElement(y.Grid,{item:!0},r.createElement(C,{error:b}))):null,r.createElement(y.Grid,{container:!0,spacing:1,justifyContent:"center",alignItems:"center"},r.createElement(y.Grid,{item:!0},r.createElement(M,{onChange:function(e){m(void 0),f(e)},session:a,selected:d})),r.createElement(y.Grid,{item:!0},r.createElement(y.Button,{disabled:!(null!=v&&v.length),onClick:function(){return n.setDisplayedRegions(v)},variant:"contained",color:"primary"},v.length?"Open":"Loading…"))))})),be=y.makeStyles((function(e){return{root:{position:"relative",marginBottom:e.spacing(1),overflow:"hidden",background:"white"},scroller:{overflow:"auto"},sliceRoot:{background:"none",boxSizing:"content-box",display:"block"},iconButton:{padding:"4px",margin:"0 2px 0 2px"},controls:{overflow:"hidden",whiteSpace:"nowrap",position:"absolute",background:v.grey[200],boxSizing:"border-box",borderRight:"1px solid #a2a2a2",borderBottom:"1px solid #a2a2a2",left:0,top:0},importFormContainer:{marginBottom:e.spacing(4)}}})),we=m.observer((function(e){var t=e.model;return r.createElement(r.Fragment,null,t.staticSlices.map((function(e){return r.createElement(ge,{key:o.assembleLocString(e.region.elided?e.region.regions[0]:e.region),model:t,slice:e})})),t.tracks.map((function(e){var n=e.displays[0];return r.createElement(n.RenderingComponent,{key:n.id,display:n,view:t})})))})),xe=m.observer((function(e){var t=e.model,n=e.showingFigure,o=be();return r.createElement("div",{className:o.controls},r.createElement(y.IconButton,{onClick:t.zoomOutButton,className:o.iconButton,title:t.lockedFitToWindow?"unlock to zoom out":"zoom out",disabled:!n||t.atMaxBpPerPx||t.lockedFitToWindow,color:"secondary"},r.createElement(b,null)),r.createElement(y.IconButton,{onClick:t.zoomInButton,className:o.iconButton,title:"zoom in",disabled:!n||t.atMinBpPerPx,color:"secondary"},r.createElement(w,null)),r.createElement(y.IconButton,{onClick:t.rotateCounterClockwiseButton,className:o.iconButton,title:"rotate counter-clockwise",disabled:!n,color:"secondary"},r.createElement(x,null)),r.createElement(y.IconButton,{onClick:t.rotateClockwiseButton,className:o.iconButton,title:"rotate clockwise",disabled:!n,color:"secondary"},r.createElement(P,null)),r.createElement(y.IconButton,{onClick:t.toggleFitToWindowLock,className:o.iconButton,title:t.lockedFitToWindow?"locked model to window size":"unlocked model to zoom further",disabled:t.tooSmallToLock,color:"secondary"},r.createElement(t.lockedFitToWindow?k:E,null)),t.hideTrackSelectorButton?null:r.createElement(y.IconButton,{onClick:t.activateTrackSelector,title:"Open track selector","data-testid":"circular_track_select",color:"secondary"},r.createElement(T.TrackSelector,null)))})),Pe={__proto__:null,default:m.observer((function(e){var t=e.model,n=be(),o=!!t.displayedRegions.length&&t.figureWidth&&t.figureHeight,i=!o&&!t.disableImportForm,a=o&&!i;return r.createElement("div",{className:n.root,style:{width:t.width,height:t.height},"data-testid":t.id},t.error?r.createElement(g.ErrorMessage,{error:t.error}):r.createElement(r.Fragment,null,i?r.createElement(ve,{model:t}):null,r.createElement(r.Fragment,null,a?r.createElement("div",{className:n.scroller,style:{width:t.width,height:t.height}},r.createElement("div",{className:n.rotator,style:{transform:["rotate(".concat(t.offsetRadians,"rad)")].join(" "),transition:"transform 0.5s",transformOrigin:t.centerXY.map((function(e){return"".concat(e,"px")})).join(" ")}},r.createElement("svg",{style:{position:"absolute",left:0,top:0},className:n.sliceRoot,width:"".concat(t.figureWidth,"px"),height:"".concat(t.figureHeight,"px"),version:"1.1"},r.createElement("g",{transform:"translate(".concat(t.centerXY,")")},r.createElement(we,{model:t}))))):null,r.createElement(xe,{model:t,showingFigure:a}),t.hideVerticalResizeHandle?null:r.createElement(g.ResizeHandle,{onDrag:t.resizeHeight,style:{height:3,position:"absolute",bottom:0,left:0,background:"#ccc",boxSizing:"border-box",borderTop:"1px solid #fafafa"}}))))}))};exports.BaseChordDisplayComponentFactory=function(e){var t=e.lib,r=e.load,n=t.react,o=t["mobx-react"],i=o.observer,a=o.PropTypes,c=r(ne),s=r(oe),l=r(ie);function u(e){var t=e.display;return n.createElement(t.error?s:t.filled?l:c,{model:t})}return u.propTypes={display:a.observableObject.isRequired},i(u)},exports.BaseChordDisplayModel=se,exports.baseChordDisplayConfig=le,exports.default=ue;
|
|
2
2
|
//# sourceMappingURL=plugin-circular-view.cjs.production.min.js.map
|