diff --git a/src/atlasViewer/atlasViewer.component.ts b/src/atlasViewer/atlasViewer.component.ts index 4189e85dc1f36c3da550156882948d43ef31e0b0..4da6ccceeb0dc86bf906afde651fc022e53da50d 100644 --- a/src/atlasViewer/atlasViewer.component.ts +++ b/src/atlasViewer/atlasViewer.component.ts @@ -425,10 +425,6 @@ export class AtlasViewer implements OnDestroy, OnInit, AfterViewInit { */ meetsRequirements() { - const testFirefox = /Firefox\/([0-9]*?)\.[0-9]*?/.exec(navigator.userAgent) - if (testFirefox && Number(testFirefox[1]) >= 67) - return false - const canvas = document.createElement('canvas') const gl = canvas.getContext('webgl2') as WebGLRenderingContext diff --git a/src/atlasViewer/atlasViewer.constantService.service.ts b/src/atlasViewer/atlasViewer.constantService.service.ts index c1b7b63e9bb2230032c5e6c73e6bb2037d90a31a..47f220b7b59260a642d44bac283a1b8b704b12b3 100644 --- a/src/atlasViewer/atlasViewer.constantService.service.ts +++ b/src/atlasViewer/atlasViewer.constantService.service.ts @@ -137,7 +137,6 @@ export class AtlasViewerConstantsServices{ - Interactive atlas viewer requires **webgl2.0**, and the \`EXT_color_buffer_float\` extension enabled. - You can check browsers' support of webgl2.0 by visiting <https://caniuse.com/#feat=webgl2> - Unfortunately, Safari and iOS devices currently do not support **webgl2.0**: <https://webkit.org/status/#specification-webgl-2> - - Mozilla Firefox v67 introduced [a conflict with neuroglancer](https://github.com/google/neuroglancer/issues/138). Until this is fixed, it is advised to use chrome for the interactive atlas viewer. ` public minReqMD = ` diff --git a/src/atlasViewer/atlasViewer.template.html b/src/atlasViewer/atlasViewer.template.html index 139d8ba70e03a8d5d91ba5f8f2216d0f0f4983a6..19859252951ce5d06dafaf5e9ffd84e4a8893691 100644 --- a/src/atlasViewer/atlasViewer.template.html +++ b/src/atlasViewer/atlasViewer.template.html @@ -234,7 +234,7 @@ </h1> <p> We recommend using the latest version of <a target="_blank" href="https://www.google.com/chrome/">Google Chrome</a> - <!-- or <a target="_blank" href="https://www.mozilla.org/firefox/">Mozilla Firefox (< 67)</a> for viewing the interactive viewer. --> + or <a target="_blank" href="https://www.mozilla.org/firefox/">Mozilla Firefox)</a> for viewing the interactive viewer. </p> <div class="col-6 d-inline-block text-left"> <readmore-component diff --git a/third_party/export_nehuba/main.bundle.js b/third_party/export_nehuba/main.bundle.js index 389df5d3214b606b69d46bc804ecd4d0d8d115a2..d2405e400e269303b2fe1ff742d074069b0b3764 100644 --- a/third_party/export_nehuba/main.bundle.js +++ b/third_party/export_nehuba/main.bundle.js @@ -755,7 +755,7 @@ y,n.viewer.visibleLayerRoles,n);n.offscreenFramebuffer=n.registerDisposer(new r. b,c,0);t.s.transformMat4(d,d,n.sliceView.viewportToData);a.changed.dispatch()})});Object(k.c)(b,"rotate-via-mouse-drag",function(a){var b=n.viewer.mouseState;if(b.updateUnconditionally()){var c=t.s.clone(b.position);Object(m.a)(a.detail,function(a,b,d){a=n.sliceView.viewportAxes;n.viewer.navigationState.pose.rotateAbsolute(a[1],b/4*Math.PI/180,c);n.viewer.navigationState.pose.rotateAbsolute(a[0],d/4*Math.PI/180,c)})}});n.registerDisposer(h);n.registerDisposer(v.crossSectionBackgroundColor.changed.add(function(){return n.scheduleRedraw()})); n.registerDisposer(h.visibility.add(n.visibility));n.registerDisposer(h.viewChanged.add(function(){n.visible&&a.scheduleRedraw()}));n.registerDisposer(v.showAxisLines.changed.add(function(){n.visible&&n.scheduleRedraw()}));n.registerDisposer(v.showScaleBar.changed.add(function(){n.visible&&n.context.scheduleRedraw()}));n.registerDisposer(v.scaleBarOptions.changed.add(function(){n.visible&&n.context.scheduleRedraw()}));return n}n(f,a);v(f,[{key:"isReady",value:function(){if(!this.visible||!this.sliceView.isReady())return!1; var a=this.visibleLayerTracker.getVisibleLayers();a=$jscomp.makeIterator(a);for(var b=a.next();!b.done;b=a.next())if(!b.value.isReady())return!1;return!0}},{key:"draw",value:function(){var a=this.sliceView;this.onResize();a.updateRendering();if(a.hasValidViewport){var c=this.gl,e=a.width,g=a.height,k=a.dataToDevice;this.offscreenFramebuffer.bind(e,g);c.disable(WebGL2RenderingContext.SCISSOR_TEST);this.gl.clearColor(0,0,0,0);c.clear(WebGL2RenderingContext.COLOR_BUFFER_BIT);var l=t.k.create(),m=this.viewer.crossSectionBackgroundColor.value; -x[0]=m[0];x[1]=m[1];x[2]=m[2];x[3]=1;this.sliceViewRenderHelper.draw(a.offscreenFramebuffer.colorBuffers[0].texture,t.d,this.colorFactor,x,0,0,1,1);m=this.visibleLayerTracker.getVisibleLayers();var r=this.pickIDs;r.clear();this.offscreenFramebuffer.bindSingle(w.COLOR);r={dataToDevice:a.dataToDevice,pickIDs:r,emitter:d,emitColor:!0,emitPickID:!1,viewportWidth:e,viewportHeight:g,sliceView:a};c.enable(WebGL2RenderingContext.BLEND);c.blendFunc(WebGL2RenderingContext.SRC_ALPHA,WebGL2RenderingContext.ONE_MINUS_SRC_ALPHA); +x[0]=m[0];x[1]=m[1];x[2]=m[2];x[3]=1;this.offscreenFramebuffer.bindSingle(w.COLOR);this.sliceViewRenderHelper.draw(a.offscreenFramebuffer.colorBuffers[0].texture,t.d,this.colorFactor,x,0,0,1,1);m=this.visibleLayerTracker.getVisibleLayers();var r=this.pickIDs;r.clear();r={dataToDevice:a.dataToDevice,pickIDs:r,emitter:d,emitColor:!0,emitPickID:!1,viewportWidth:e,viewportHeight:g,sliceView:a};c.enable(WebGL2RenderingContext.BLEND);c.blendFunc(WebGL2RenderingContext.SRC_ALPHA,WebGL2RenderingContext.ONE_MINUS_SRC_ALPHA); for(var f=$jscomp.makeIterator(m),u=f.next();!u.done;u=f.next())u.value.draw(r);c.disable(WebGL2RenderingContext.BLEND);this.offscreenFramebuffer.bindSingle(w.PICK);r.emitColor=!1;r.emitPickID=!0;r.emitter=b;m=$jscomp.makeIterator(m);for(u=m.next();!u.done;u=m.next())u.value.draw(r);if(this.viewer.showAxisLines.value||this.viewer.showScaleBar.value){if(this.viewer.showAxisLines.value){t.k.copy(l,k);for(k=0;3>k;++k)l[12+k]=0;for(k=0;4>k;++k)l[2+4*k]=0;g=Math.min(e,g)/4*1.5;k=a.pixelSize;for(m=0;12> m;++m)l[m]=l[m]*g*k}this.offscreenFramebuffer.bindSingle(w.COLOR);this.viewer.showAxisLines.value&&this.axesLineHelper.draw(l);this.viewer.showScaleBar.value&&(c.enable(WebGL2RenderingContext.BLEND),c.blendFunc(WebGL2RenderingContext.SRC_ALPHA,WebGL2RenderingContext.ONE_MINUS_SRC_ALPHA),l=this.viewer.scaleBarOptions.value,g=this.scaleBarTexture,k=g.dimensions,k.targetLengthInPixels=Math.min(l.maxWidthFraction*e,l.maxWidthInPixels*l.scaleFactor),k.nanometersPerPixel=a.pixelSize,g.update(l),c.viewport(l.leftPixelOffset* l.scaleFactor,l.bottomPixelOffset*l.scaleFactor,g.width,g.height),this.scaleBarCopyHelper.draw(g.texture),c.disable(WebGL2RenderingContext.BLEND))}this.offscreenFramebuffer.unbind();this.setGLViewport();this.offscreenCopyHelper.draw(this.offscreenFramebuffer.colorBuffers[w.COLOR].texture)}}},{key:"onResize",value:function(){this.sliceView.setViewportSizeDebounced(this.element.clientWidth,this.element.clientHeight)}},{key:"updateMouseState",value:function(a){a.pickedRenderLayer=null;var b=this.sliceView; @@ -1442,71 +1442,71 @@ b){if("function"!==typeof b&&null!==b)throw new TypeError("Super expression must d.key,d)}}return function(b,c,d){c&&a(b.prototype,c);d&&a(b,d);return b}}(),d=function e(a,b,d){null===a&&(a=Function.prototype);var g=Object.getOwnPropertyDescriptor(a,b);if(void 0===g){if(a=Object.getPrototypeOf(a),null!==a)return e(a,b,d)}else{if("value"in g)return g.value;b=g.get;return void 0===b?void 0:b.call(d)}},b=function(a){function b(a,d,e){if(!(this instanceof b))throw new TypeError("Cannot call a class as a function");var g=(b.__proto__||Object.getPrototypeOf(b)).call(this);if(!this)throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); g=!g||"object"!==typeof g&&"function"!==typeof g?this:g;g.register=a;g.unregister=d;g.changed=new p.a;void 0===e?g.map=new Map:(g.map=new Map(e),g.map.forEach(g.register));return g}q(b,a);$jscomp.initSymbol();$jscomp.initSymbolIterator();n(b,[{key:"set",value:function(a,b){var d=this.map,e=d.get(a);void 0!==e&&this.unregister(e,a);d.set(a,b);this.register(b,a);this.changed.dispatch();return this}},{key:"delete",value:function(a){var b=this.map.get(a);return void 0!==b?(this.unregister(b,a),this.changed.dispatch(), !0):!1}},{key:"has",value:function(a){return this.map.has(a)}},{key:Symbol.iterator,value:function(){$jscomp.initSymbol();$jscomp.initSymbolIterator();return this.map[Symbol.iterator]()}},{key:"clear",value:function(){var a=this.map;0<a.size&&(a.forEach(this.unregister),a.clear(),this.changed.dispatch())}},{key:"values",value:function(){return this.map.values()}},{key:"keys",value:function(){return this.map.keys()}},{key:"disposed",value:function(){this.map.forEach(this.unregister);this.map.clear(); -d(b.prototype.__proto__||Object.getPrototypeOf(b.prototype),"disposed",this).call(this)}},{key:"size",get:function(){return this.map.size}}]);return b}(h.a)},function(h,f,a){var q=a(2);a.d(f,"g",function(){return q.s});a.d(f,"h",function(){return q.u});a.d(f,"e",function(){return q.n});var p=a(312);a.d(f,"b",function(){return p.b});a.d(f,"a",function(){return p.a});var n=a(191);a.d(f,"d",function(){return n.b});var d=a(121);a.d(f,"c",function(){return d.c});a.d(f,"f",function(){return d.d})},function(h, -f,a){f.a=function(a){if(!window.getSelection().isCollapsed)return!0;a=a.target.tagName;return"TEXTAREA"===a||"INPUT"===a?!0:!1};f.b=function(a,f){f=void 0===f?"text/plain":f;var d=!1,b=Object(q.c)(document,"copy",function(b){b.clipboardData.setData(f,a);d=!0;b.stopPropagation();b.preventDefault()},!0);try{document.execCommand("copy")}finally{b()}return d};var q=a(1)},function(h,f,a){function q(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function");}function p(a,b){if(!a)throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); -return!b||"object"!==typeof b&&"function"!==typeof b?a:b}function n(a,b){if("function"!==typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}});b&&(Object.setPrototypeOf?Object.setPrototypeOf(a,b):a.__proto__=b)}a.d(f,"a",function(){return g});a.d(f,"b",function(){return l});h=a(33);a=a(1);var d=function t(a,b,c){null===a&&(a=Function.prototype); -var d=Object.getOwnPropertyDescriptor(a,b);if(void 0===d){if(a=Object.getPrototypeOf(a),null!==a)return t(a,b,c)}else{if("value"in d)return d.value;b=d.get;return void 0===b?void 0:b.call(c)}},b=function(){function a(a,b){for(var c=0;c<b.length;c++){var d=b[c];d.enumerable=d.enumerable||!1;d.configurable=!0;"value"in d&&(d.writable=!0);Object.defineProperty(a,d.key,d)}}return function(b,c,d){c&&a(b.prototype,c);d&&a(b,d);return b}}();$jscomp.initSymbol();var c=Symbol("SingleTextureVolumeChunk.textureUnit"); -$jscomp.initSymbol();var e=Symbol("SingleTextureVolumeChunk.textureLayout"),g=function(a){function d(a){q(this,d);var b=p(this,(d.__proto__||Object.getPrototypeOf(d)).call(this));b.shaderKey=a;return b}n(d,a);b(d,[{key:"defineShader",value:function(a){a.addTextureSampler2D("uVolumeChunkSampler",c)}},{key:"beginDrawing",value:function(a,b){var d=b.textureUnit(c);a.activeTexture(a.TEXTURE0+d);b[e]=null}},{key:"endDrawing",value:function(a,b){a.bindTexture(a.TEXTURE_2D,null);b[e]=null}},{key:"bindChunk", -value:function(a,b,c){var d=c.textureLayout;b[e]!==d&&(b[e]=d,this.setupTextureLayout(a,b,d));a.bindTexture(a.TEXTURE_2D,c.texture)}},{key:"beginSource",value:function(a,b){}}]);return d}(a.a),l=function(a){function c(a,b){q(this,c);a=p(this,(c.__proto__||Object.getPrototypeOf(c)).call(this,a,b));a.texture=null;a.data=b.data;return a}n(c,a);b(c,[{key:"copyToGPU",value:function(a){d(c.prototype.__proto__||Object.getPrototypeOf(c.prototype),"copyToGPU",this).call(this,a);var b=this.texture=a.createTexture(); -a.bindTexture(a.TEXTURE_2D,b);this.setTextureData(a);a.bindTexture(a.TEXTURE_2D,null)}},{key:"freeGPUMemory",value:function(a){d(c.prototype.__proto__||Object.getPrototypeOf(c.prototype),"freeGPUMemory",this).call(this,a);a.deleteTexture(this.texture);this.texture=null;this.textureLayout.dispose();this.textureLayout=null}}]);return c}(h.a)},function(h,f,a){f.a=function(a,f,h,d,b,c){for(var e=0,g=0,l=1,k=1,t=0;3>t;++t){var m=b[t],r=d[t],n=m%r;e+=Math.floor(m/r)*l;l*=Math.ceil(h[t]/r);g+=n*k;k*=r}d= -f+2*e;h=a[d];d=a[d+1];b=h&16777215;h=h>>24&255;0<h&&(b+=c*(a[(f+d&16777215)+Math.floor(g*h/32)]>>g*h%32&(1<<h)-1));return b}},function(h,f,a){f.b=function(a,f){return function(h){h.style.flex=a;f(h)}};f.a=function(a,f){return function(h){h.style.display="flex";h.style.flexDirection=a;for(var d=$jscomp.makeIterator(f),b=d.next();!b.done;b=d.next()){b=b.value;var c=h.ownerDocument.createElement("div");h.appendChild(c);b(c)}}}},function(h,f,a){function q(a,b){if(!a)throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); -return!b||"object"!==typeof b&&"function"!==typeof b?a:b}function p(a,b){if("function"!==typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}});b&&(Object.setPrototypeOf?Object.setPrototypeOf(a,b):a.__proto__=b)}a.d(f,"a",function(){return k});var n=a(27);h=a(47);var d=a(26),b=a(32),c=a(186),e=a(326),g=a(331),l=function(){function a(a,b){for(var c= -0;c<b.length;c++){var d=b[c];d.enumerable=d.enumerable||!1;d.configurable=!0;"value"in d&&(d.writable=!0);Object.defineProperty(a,d.key,d)}}return function(b,c,d){c&&a(b.prototype,c);d&&a(b,d);return b}}();a(332);var k=function(a){function k(a,b){if(!(this instanceof k))throw new TypeError("Cannot call a class as a function");var d=q(this,(k.__proto__||Object.getPrototypeOf(k)).call(this));d.manager=a;d.existingLayer=b;d.statusElement=document.createElement("div");d.submitElement=document.createElement("button"); -d.namePromptElement=document.createElement("label");d.nameInputElement=document.createElement("input");d.volumeCancellationSource=void 0;d.sourceValid=!1;d.nameValid=!0;var l=d.content;l.classList.add("add-layer-overlay");var f=document.createElement("form");f.className="source-form";d.registerEventListener(f,"submit",function(a){a.preventDefault();d.validateSource(!0)});var m=document.createElement("label");m.textContent="Source:";a=d.sourceInput=d.registerDisposer(new e.a({completer:function(a, -b){return d.manager.dataSourceProvider.volumeCompleter(a,d.manager.chunkManager,b).then(function(a){return{completions:a.completions,makeElement:e.b,offset:a.offset,showSingleResult:!0}})},delay:0}));a.element.classList.add("add-layer-source");a.inputElement.addEventListener("blur",function(){d.validateSource(!1)});d.submitElement.disabled=!0;a.inputChanged.add(function(){var a=d.volumeCancellationSource;void 0!==a&&(a.cancel(),d.volumeCancellationSource=void 0);d.sourceValid=!1;d.submitElement.disabled= -!0;d.statusElement.textContent=""});f.appendChild(m);f.appendChild(a.element);Object(c.a)(m,a.inputElement);m=Object(g.a)();f.appendChild(m);l.appendChild(f);var h=d.statusElement,t=d.namePromptElement,r=d.nameInputElement;f=d.submitElement;h.className="dialog-status";m=document.createElement("form");m.className="name-form";t.textContent="Name:";r.className="add-layer-name";r.autocomplete="off";r.spellcheck=!1;r.type="text";d.registerEventListener(r,"input",function(){d.validateName()});f.type="submit"; -Object(c.a)(t,r);m.appendChild(t);m.appendChild(r);m.appendChild(f);l.appendChild(m);l.appendChild(h);void 0!==b?(void 0!==b.sourceUrl?(a.value=b.sourceUrl,d.validateSource()):d.sourceValid=!0,a.disabled=!0,r.value=b.name,d.validateName(),f.textContent="Save",r.focus()):(b=d.manager.layerManager.managedLayers,0<b.length&&(b=b[b.length-1],b instanceof n.b&&(b=b.sourceUrl,void 0!==b&&(l=d.manager.dataSourceProvider.findSourceGroup(b),a.value=b.substring(0,l),a.inputElement.setSelectionRange(0,l)))), -a.inputElement.focus(),f.textContent="Add Layer");d.registerEventListener(m,"submit",function(a){a.preventDefault();d.submit()});return d}p(k,a);l(k,[{key:"isNameValid",value:function(){var a=this.nameInputElement.value;if(""===a)return!1;a=this.manager.layerManager.getLayerByName(a);return void 0===a||a===this.existingLayer}},{key:"submit",value:function(){this.sourceValid&&this.isNameValid()&&(this.existingLayer?(this.existingLayer.name=this.nameInputElement.value,this.manager.layerManager.layersChanged.dispatch()): -this.manager.add(this.manager.getLayer(this.nameInputElement.value,this.sourceInput.value)),this.dispose())}},{key:"validateName",value:function(){var a=this.nameInputElement;(this.nameValid=this.isNameValid())?(a.classList.add("valid-input"),a.classList.remove("invalid-input")):(a.classList.remove("valid-input"),a.classList.add("invalid-input"));this.validityChanged()}},{key:"validityChanged",value:function(){this.submitElement.disabled=!(this.nameValid&&this.sourceValid)}},{key:"validateSource", -value:function(a){var c=this;a=void 0===a?!1:a;var e=this.sourceInput.value;if(""!==e){try{var g=this.manager.dataSourceProvider.suggestLayerName(e),k=this.nameInputElement;if(""===this.nameInputElement.value){var l=this.manager.layerManager.getUniqueLayerName(g);k.value=l;k.setSelectionRange(0,l.length);this.validateName()}a&&k.focus()}catch(z){this.setError(z.message);return}this.setInfo("Validating volume source...");var f=this.volumeCancellationSource=new b.b;this.manager.dataSourceProvider.getVolume(this.manager.chunkManager, -e,void 0,f).then(function(a){f.isCanceled||(c.volumeCancellationSource=void 0,c.sourceValid=!0,c.setInfo(d.c[a.volumeType].toLowerCase()+": "+(a.numChannels+"-channel "+d.a[a.dataType].toLowerCase())),c.validityChanged())}).catch(function(a){f.isCanceled||(c.volumeCancellationSource=void 0,c.setError(a.message))})}}},{key:"setInfo",value:function(a){this.statusElement.className="dialog-status dialog-status-info";this.statusElement.textContent=a}},{key:"setError",value:function(a){this.statusElement.className= -"dialog-status dialog-status-error";this.statusElement.textContent=a}}]);return k}(h.a)},function(h,f,a){f.a=function(a,f){""===f.id&&(f.id="unique-id-for-association-"+q++);a.setAttribute("for",f.id)};var q=0},function(h,f,a){f.a=function(a){var f=-1;return Object.assign(function(){-1===f&&(f=requestAnimationFrame(function(){f=-1;a()}))},{flush:function(){-1!==f&&(f=-1,a())},cancel:function(){-1!==f&&(cancelAnimationFrame(f),f=-1)}})}},function(h,f,a){function q(a,b){if("function"!==typeof b&&null!== -b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}});b&&(Object.setPrototypeOf?Object.setPrototypeOf(a,b):a.__proto__=b)}function p(a,b){var c=document.documentElement.scrollTop+Math.min(document.documentElement.clientHeight-a.offsetHeight,b.clientY);a.style.left=document.documentElement.scrollLeft+Math.min(document.documentElement.clientWidth-a.offsetWidth, -b.clientX)+"px";a.style.top=c+"px";a.style.visibility=null}a.d(f,"a",function(){return e});var n=a(1),d=a(8),b=a(7),c=function(){function a(a,b){for(var c=0;c<b.length;c++){var d=b[c];d.enumerable=d.enumerable||!1;d.configurable=!0;"value"in d&&(d.writable=!0);Object.defineProperty(a,d.key,d)}}return function(b,c,d){c&&a(b.prototype,c);d&&a(b,d);return b}}();a(338);var e=function(a){function e(a){if(!(this instanceof e))throw new TypeError("Cannot call a class as a function");var c=(e.__proto__|| -Object.getPrototypeOf(e)).call(this);if(!this)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");c=!c||"object"!==typeof c&&"function"!==typeof c?this:c;c.element=document.createElement("div");c.parentDisposers=new Map;c.disabledValue=!1;c.opened=new b.a;c.closed=new b.a;var d=c.element;d.className="neuroglancer-context-menu";d.style.visibility="hidden";d.tabIndex=-1;document.body.appendChild(d);void 0!==a&&c.registerParent(a);return c}q(e,a);c(e,[{key:"registerParent", -value:function(a){var b=this,c=this.parentDisposers;c.has(a)||c.set(a,Object(n.c)(a,"contextmenu",function(a){b.show(a);a.stopPropagation();a.preventDefault()}))}},{key:"show",value:function(a){var b=this;if(!this.disabledValue){this.hide();var c=this.element,d=Object(n.c)(document,"mousedown",function(a){a.target instanceof Node&&!c.contains(a.target)&&b.hide()},!0),e=Object(n.c)(document,"keydown",function(a){"Escape"===a.code&&b.hide()},!0);c.style.display=null;c.style.visibility="hidden";this.opened.dispatch(); -p(c,a);this.menuDisposer=function(){e();d();c.style.display="none"}}}},{key:"unregisterParent",value:function(a){var b=this.parentDisposers,c=b.get(a);void 0!==c&&(c(),b.delete(a))}},{key:"disposed",value:function(){for(var a=this.parentDisposers,b=$jscomp.makeIterator(a.values()),c=b.next();!c.done;c=b.next())c=c.value,c();a.clear();Object(d.b)(this.element)}},{key:"hide",value:function(){void 0!==this.menuDisposer&&(this.menuDisposer(),this.menuDisposer=void 0,this.closed.dispatch())}},{key:"disabled", -get:function(){return this.disabledValue},set:function(a){this.disabledValue!==a&&(this.disabledValue=a)&&this.hide()}},{key:"open",get:function(){return void 0!==this.menuDisposer}}]);return e}(n.a)},function(h,f,a){f.a=function(a,d){var b=Object(q.c)(a,"drop",function(a){a.preventDefault();if(-1!==a.dataTransfer.types.indexOf(p.d)){var b=JSON.parse(a.dataTransfer.getData(p.d));d.restoreState(b);a.stopPropagation()}}),c=Object(q.c)(a,"dragover",function(a){-1!==a.dataTransfer.types.indexOf(p.d)&& -(a.dataTransfer.dropEffect="link",a.preventDefault(),a.stopPropagation())});return function(){c();b()}};var q=a(1),p=a(120)},function(h,f,a){(function(a){function f(b,e,g,l){function c(a){var c=f(b,e);if(!c||c.to.line-c.from.line<m)return null;for(var d=b.findMarksAt(c.from),g=0;g<d.length;++g)if(d[g].__isFold&&"fold"!==l){if(!a)return null;c.cleared=!0;d[g].clear()}return c}if(g&&g.call){var f=g;g=null}else f=d(b,g,"rangeFinder");"number"==typeof e&&(e=a.Pos(e,0));var m=d(b,g,"minFoldSize"),r=c(!0); -if(d(b,g,"scanUp"))for(;!r&&e.line>b.firstLine();)e=a.Pos(e.line-1,0),r=c(!1);if(r&&!r.cleared&&"unfold"!==l){var n=h(b,g);a.on(n,"mousedown",function(b){p.clear();a.e_preventDefault(b)});var p=b.markText(r.from,r.to,{replacedWith:n,clearOnEnter:d(b,g,"clearOnEnter"),__isFold:!0});p.on("clear",function(c,d){a.signal(b,"unfold",b,c,d)});a.signal(b,"fold",b,r.from,r.to)}}function h(a,b){a=d(a,b,"widget");"string"==typeof a?(b=document.createTextNode(a),a=document.createElement("span"),a.appendChild(b), -a.className="CodeMirror-foldmarker"):a&&(a=a.cloneNode(!0));return a}function d(a,d,g){return d&&void 0!==d[g]?d[g]:(a=a.options.foldOptions)&&void 0!==a[g]?a[g]:b[g]}a.newFoldFunction=function(a,b){return function(c,d){f(c,d,{rangeFinder:a,widget:b})}};a.defineExtension("foldCode",function(a,b,d){f(this,a,b,d)});a.defineExtension("isFolded",function(a){a=this.findMarksAt(a);for(var b=0;b<a.length;++b)if(a[b].__isFold)return!0});a.commands.toggleFold=function(a){a.foldCode(a.getCursor())};a.commands.fold= -function(a){a.foldCode(a.getCursor(),null,"fold")};a.commands.unfold=function(a){a.foldCode(a.getCursor(),null,"unfold")};a.commands.foldAll=function(b){b.operation(function(){for(var c=b.firstLine(),d=b.lastLine();c<=d;c++)b.foldCode(a.Pos(c,0),null,"fold")})};a.commands.unfoldAll=function(b){b.operation(function(){for(var c=b.firstLine(),d=b.lastLine();c<=d;c++)b.foldCode(a.Pos(c,0),null,"unfold")})};a.registerHelper("fold","combine",function(){var a=Array.prototype.slice.call(arguments,0);return function(b, -c){for(var d=0;d<a.length;++d){var e=a[d](b,c);if(e)return e}}});a.registerHelper("fold","auto",function(a,b){for(var c=a.getHelpers(b,"fold"),d=0;d<c.length;d++){var e=c[d](a,b);if(e)return e}});var b={rangeFinder:a.fold.auto,widget:"\u2194",minFoldSize:0,scanUp:!1,clearOnEnter:!0};a.defineOption("foldOptions",null);a.defineExtension("foldOption",function(a,b){return d(this,a,b)})})(a(48))},function(h,f,a){function q(a,b){if(!a)throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); -return!b||"object"!==typeof b&&"function"!==typeof b?a:b}function p(a,b){if("function"!==typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}});b&&(Object.setPrototypeOf?Object.setPrototypeOf(a,b):a.__proto__=b)}a.d(f,"a",function(){return w});var n=a(2),d=a(80),b=a(22),c=a(82),e=a(360),g=a(29),l=a(192),k=a(35),t=a(9),m=function(){function a(a, -b){for(var c=0;c<b.length;c++){var d=b[c];d.enumerable=d.enumerable||!1;d.configurable=!0;"value"in d&&(d.writable=!0);Object.defineProperty(a,d.key,d)}}return function(b,c,d){c&&a(b.prototype,c);d&&a(b,d);return b}}(),r=function x(a,b,c){null===a&&(a=Function.prototype);var d=Object.getOwnPropertyDescriptor(a,b);if(void 0===d){if(a=Object.getPrototypeOf(a),null!==a)return x(a,b,c)}else{if("value"in d)return d.value;b=d.get;return void 0===b?void 0:b.call(c)}},u=n.s.create(),v=n.k.create();f.b="perpspectiveRenderEvent"; -var w=function(a){function f(a,g,m,h){if(!(this instanceof f))throw new TypeError("Cannot call a class as a function");var r=q(this,(f.__proto__||Object.getPrototypeOf(f)).call(this,a,g,m));r.config=h;r.planarSlices=new Set;r.transparentPlaneRenderHelper=r.registerDisposer(e.b.get(r.gl,c.c));r.scaleBarWidget=r.registerDisposer(new l.a);Object(b.c)(g,"nehuba-translate-via-mouse-drag",function(a){Object(d.a)(a.detail,function(a,b,c){if(r.config.layout.useNehubaPerspective.enableShiftDrag){a=r.width; -var d=r.height,e=r.viewer.navigationState.position,g=e.spatialCoordinates;n.s.transformMat4(u,g,r.projectionMat);u[0]=2*b/a;u[1]=-2*c/d;n.s.transformMat4(g,u,r.inverseProjectionMat);e.changed.dispatch()}})});a=h.layout.useNehubaPerspective.removePerspectiveSlicesBackground;r.nehubaSliceViewRenderHelper=r.registerDisposer(e.a.get(r.gl,c.c,a&&a.mode||"none"));r.registerDisposer(r.visibility.changed.add(function(){return Array.from(r.sliceViews.keys()).forEach(function(a){return a.visibility.value=r.visibility.value})})); -a=r.scaleBarWidget.element;r.registerDisposer(new k.a(Object(t.g)(function(a,b){return a&&b},m.showScaleBar,m.orthographicProjection),a));g.appendChild(a);return r}p(f,a);m(f,[{key:"updateProjectionMatrix",value:function(){r(f.prototype.__proto__||Object.getPrototypeOf(f.prototype),"updateProjectionMatrix",this).call(this);this.config.layout.useNehubaPerspective.centerToOrigin&&(n.k.translate(this.projectionMat,this.projectionMat,this.navigationState.position.spatialCoordinates),n.k.invert(this.inverseProjectionMat, -this.projectionMat))}},{key:"disposed",value:function(){for(var a=$jscomp.makeIterator(this.planarSlices),b=a.next();!b.done;b=a.next())b.value.dispose();this.planarSlices.clear();r(f.prototype.__proto__||Object.getPrototypeOf(f.prototype),"disposed",this).call(this)}},{key:"draw",value:function(){for(var a=$jscomp.makeIterator(this.sliceViews.keys()),b=a.next();!b.done;b=a.next())b.value.visibility.value=this.config.layout.useNehubaPerspective.disablePerspectiveSlicesPreloading?this.viewer.showSliceViews.value&& -this.visibility.visible?g.b.VISIBLE:g.b.IGNORED:this.visibility.value;if(this.navigationState.valid){this.onResize();a=this.width;var d=this.height;if(0!==a&&0!==d){b=this.viewer.showSliceViews.value;for(var e=$jscomp.makeIterator(this.sliceViews),k=e.next();!k.done;k=e.next()){k=$jscomp.makeIterator(k.value);var l=k.next().value;(k.next().value||b)&&l.updateRendering()}e=$jscomp.makeIterator(this.planarSlices);for(b=e.next();!b.done;b=e.next())b.value.updateRendering();b=this.gl;this.offscreenFramebuffer.bind(a, -d);b.disable(b.SCISSOR_TEST);e=this.config.layout.useNehubaPerspective;e=e.perspectiveBackground||e.perspectiveSlicesBackground||this.viewer.crossSectionBackgroundColor.value;this.gl.clearColor(e[0],e[1],e[2],1);b.clear(b.COLOR_BUFFER_BIT|b.DEPTH_BUFFER_BIT);b.enable(b.DEPTH_TEST);e=this.projectionMat;this.updateProjectionMatrix();k=n.s.create();Object(n.p)(k,n.e[2],this.modelViewMat);n.s.normalize(k,k);l=this.pickIDs;l.clear();e={dataToDevice:e,lightDirection:k,ambientLighting:.2,directionalLighting:.8, -pickIDs:l,emitter:c.c,emitColor:!0,emitPickID:!0,alreadyEmittedPickID:!1,viewportWidth:a,viewportHeight:d,extra:{config:this.config,showSliceViewsCheckboxValue:this.viewer.showSliceViews.value,slicesPose:this.viewer.slicesNavigationState.pose,perspectiveNavigationState:this.viewer.navigationState,meshesLoaded:-1,meshFragmentsLoaded:-1,crossSectionBackground:this.viewer.crossSectionBackgroundColor.value}};k=this.visibleLayerTracker.getVisibleLayers();for(var f=l=!1,m=$jscomp.makeIterator(k),h=m.next();!h.done;h= -m.next())h=h.value,h.isTransparent?l=!0:h.isAnnotation?f=!0:h.draw(e);this.config.layout.useNehubaPerspective.waitForMesh&&!e.extra.meshRendered||this.drawSliceViews(e);if(f){b.enable(WebGL2RenderingContext.BLEND);b.depthFunc(WebGL2RenderingContext.LEQUAL);b.blendFunc(WebGL2RenderingContext.SRC_ALPHA,WebGL2RenderingContext.ONE_MINUS_SRC_ALPHA);b.drawBuffers([b.COLOR_ATTACHMENT0,b.NONE,b.NONE]);e.emitPickID=!1;f=$jscomp.makeIterator(k);for(h=f.next();!h.done;h=f.next())h=h.value,h.isAnnotation&&h.draw(e); -b.depthFunc(WebGL2RenderingContext.LESS);b.disable(WebGL2RenderingContext.BLEND);b.drawBuffers([b.COLOR_ATTACHMENT0,b.COLOR_ATTACHMENT1,b.COLOR_ATTACHMENT2]);e.emitPickID=!0}h=this.config.layout.useNehubaPerspective.disableAxisLinesInPerspective;this.viewer.showAxisLines.value&&!h&&this.drawAxisLines();if(l){b.depthMask(!1);b.enable(WebGL2RenderingContext.BLEND);l=this.transparentConfiguration;l.bind(a,d);this.gl.clearColor(0,0,0,1);b.clear(WebGL2RenderingContext.COLOR_BUFFER_BIT);e.emitter=c.d;b.blendFuncSeparate(WebGL2RenderingContext.ONE, -WebGL2RenderingContext.ONE,WebGL2RenderingContext.ZERO,WebGL2RenderingContext.ONE_MINUS_SRC_ALPHA);e.emitPickID=!1;f=$jscomp.makeIterator(k);for(h=f.next();!h.done;h=f.next())h=h.value,h.isTransparent&&h.draw(e);b.disable(WebGL2RenderingContext.DEPTH_TEST);this.offscreenFramebuffer.bindSingle(c.a.COLOR);b.blendFunc(WebGL2RenderingContext.ONE_MINUS_SRC_ALPHA,WebGL2RenderingContext.SRC_ALPHA);this.transparencyCopyHelper.draw(l.colorBuffers[0].texture,l.colorBuffers[1].texture);b.depthMask(!0);b.disable(WebGL2RenderingContext.BLEND); -b.enable(WebGL2RenderingContext.DEPTH_TEST);this.offscreenFramebuffer.bind(a,d)}b.drawBuffers([b.NONE,b.COLOR_ATTACHMENT1,b.COLOR_ATTACHMENT2]);e.emitter=c.c;e.emitPickID=!0;e.emitColor=!1;b.enable(WebGL2RenderingContext.POLYGON_OFFSET_FILL);b.polygonOffset(-1,-1);d=$jscomp.makeIterator(k);for(h=d.next();!h.done;h=d.next())k=h.value,e.alreadyEmittedPickID=!k.isTransparent&&!k.isAnnotation,k.draw(e);b.disable(WebGL2RenderingContext.POLYGON_OFFSET_FILL);this.viewer.showScaleBar.value&&this.viewer.orthographicProjection.value&& -(d=this.scaleBarWidget.dimensions,d.targetLengthInPixels=Math.min(a/4,100),d.nanometersPerPixel=this.nanometersPerPixel,this.scaleBarWidget.update());this.offscreenFramebuffer.unbind();this.setGLViewport();this.offscreenCopyHelper.draw(this.offscreenFramebuffer.colorBuffers[c.a.COLOR].texture);a=new CustomEvent("perpspectiveRenderEvent",{bubbles:!0,detail:{meshesLoaded:e.extra.meshesLoaded,meshFragmentsLoaded:e.extra.meshFragmentsLoaded,lastLoadedMeshId:e.extra.lastMeshId}});this.element.dispatchEvent(a)}}}}, -{key:"drawSliceViews",value:function(a){var b=this.config.layout.useNehubaPerspective,c=this.sliceViewRenderHelper,d=this.nehubaSliceViewRenderHelper,e=this.transparentPlaneRenderHelper,g=a.lightDirection,k=a.ambientLighting,l=a.directionalLighting;a=a.dataToDevice;var f=this.viewer.showSliceViews.value;if(!b.hideImages){var m=b.removePerspectiveSlicesBackground;c=m?d:c;for(var h=$jscomp.makeIterator(this.sliceViews),t=h.next();!t.done;t=h.next()){var r=$jscomp.makeIterator(t.value);t=r.next().value; -if((r.next().value||f)&&0!==t.width&&0!==t.height&&t.hasValidViewport){r=Math.abs(n.s.dot(g,t.viewportAxes[2]));r=k+r*l;var p=v;n.k.identity(p);p[0]=t.width/2;p[5]=-t.height/2;n.k.multiply(p,t.viewportToData,p);n.k.multiply(p,a,p);var q=n.u.create(),u=b.perspectiveSlicesBackground||this.viewer.crossSectionBackgroundColor.value;q[0]=u[0];q[1]=u[1];q[2]=u[2];q[3]=1;d.setDiscardColor(m&&m.color||q);c.draw(t.offscreenFramebuffer.colorBuffers[0].texture,p,n.u.fromValues(r,r,r,1),q,0,0,1,1)}}}if(b.drawSubstrates&& -f)for(d=b.fixedZoomPerspectiveSlices&&b.fixedZoomPerspectiveSlices.sliceViewportSizeMultiplier||1,g=$jscomp.makeIterator(this.sliceViews.keys()),k=g.next();!k.done;k=g.next()){c=k.value;k=v;n.k.identity(k);k[0]=c.width/2/d;k[5]=-c.height/2/d;n.k.multiply(k,c.viewportToData,k);l=n.k.clone(a);m=n.s.clone(this.navigationState.position.spatialCoordinates);c=n.s.clone(c.viewportAxes[2]);h=this.viewer.slicesNavigationState.pose.orientation.orientation;t=n.n.invert(n.n.create(),h);n.s.transformQuat(c,c, -t);n.s.transformQuat(m,m,t);t=n.s.create();for(r=0;3>r;r++)t[r]=0===Math.round(c[r])?-m[r]:0;n.s.transformQuat(t,t,h);n.k.translate(l,l,t);n.k.multiply(k,l,k);l=b.drawSubstrates.color||n.u.fromValues(0,0,1,.2);e.draw(k,l,{factor:3,units:1})}if(b.drawZoomLevels&&f&&(f=b.drawZoomLevels.cutOff)&&this.viewer.slicesNavigationState.zoomFactor.value<f)for(f=$jscomp.makeIterator(this.planarSlices),k=f.next();!k.done;k=f.next())g=k.value,d=v,n.k.identity(d),d[0]=g.width/2,d[5]=-g.height/2,n.k.multiply(d,g.viewportToData, -d),n.k.multiply(d,a,d),g=b.drawZoomLevels.color||n.u.fromValues(1,0,0,.2),e.draw(d,g,{factor:-1,units:1})}},{key:"zoomByMouse",value:function(a){r(f.prototype.__proto__||Object.getPrototypeOf(f.prototype),"zoomByMouse",this).call(this,a);if(a=this.config.layout.useNehubaPerspective.restrictZoomLevel)a.minZoom&&this.navigationState.zoomFactor.value<a.minZoom&&(this.navigationState.zoomFactor.value=a.minZoom),a.maxZoom&&this.navigationState.zoomFactor.value>a.maxZoom&&(this.navigationState.zoomFactor.value= -a.maxZoom)}}]);return f}(c.b)},function(h,f,a){function q(a,b){if("function"!==typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}});b&&(Object.setPrototypeOf?Object.setPrototypeOf(a,b):a.__proto__=b)}a.d(f,"a",function(){return b});h=a(1);var p=a(53),n=a(8),d=function(){function a(a,b){for(var c=0;c<b.length;c++){var d=b[c];d.enumerable= -d.enumerable||!1;d.configurable=!0;"value"in d&&(d.writable=!0);Object.defineProperty(a,d.key,d)}}return function(b,c,d){c&&a(b.prototype,c);d&&a(b,d);return b}}();a(361);var b=function(a){function b(a){a=void 0===a?new p.a:a;if(!(this instanceof b))throw new TypeError("Cannot call a class as a function");var c=(b.__proto__||Object.getPrototypeOf(b)).call(this);if(!this)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");c=!c||"object"!==typeof c&&"function"!==typeof c? -this:c;c.dimensions=a;c.element=document.createElement("div");c.textNode=document.createTextNode("");c.barElement=document.createElement("div");a=c.element;var d=c.textNode,e=c.barElement;a.className="scale-bar-container";a.appendChild(d);a.appendChild(e);e.className="scale-bar";return c}q(b,a);d(b,[{key:"update",value:function(){var a=this.dimensions;a.update()&&(this.textNode.textContent=a.physicalLength+" "+a.physicalUnit,this.barElement.style.width=a.lengthInPixels+"px")}},{key:"disposed",value:function(){Object(n.b)(this.element)}}]); -return b}(h.a)},function(h,f,a){function q(a){if(!a[m]){a.registerDisposer(a.layerManager.layersChanged.add(function(){for(var b=!1,c=new g.b(g.s.fromValues(Infinity,Infinity,Infinity),g.s.fromValues(-Infinity,-Infinity,-Infinity)),d=$jscomp.makeIterator(a.layerManager.managedLayers),e=d.next();!e.done;e=d.next())if(e=e.value.layer,null!=e){e=$jscomp.makeIterator(e.renderLayers);for(var k=e.next();!k.done;k=e.next())k=k.value.boundingBox,null!=k&&(g.s.min(c.lower,c.lower,k.lower),g.s.max(c.upper, -c.upper,k.upper),b=!0)}b&&(a.navigationState.position[t]=c);b&&(a.navigationState.pose[t]=c);b&&a.navigationState.position.changed.dispatch()}));var b=a.navigationState.position,c=b.changed.dispatch;b.changed.dispatch=function(){var a=b[t];if(a){var d=b.spatialCoordinates;g.s.min(d,d,a.upper);g.s.max(d,d,a.lower)}c()};a[m]=!0}}function p(a){d(a,function(a){a=a.displayState;a.segmentColorHash instanceof k.a||(a.segmentColorHash=k.a.from(a.segmentColorHash))})}function n(a,b){var c=a.display.onResize; -a.display.onResize=function(){if(b.dedebounceUpdates){this.scheduleRedraw();for(var a=$jscomp.makeIterator(this.panels),d=a.next();!d.done;d=a.next())d.value.onResize()}else c.call(this)}}function d(a,c){b(a,c);var d=a.layerManager;d.registerDisposer(d.layersChanged.add(function(){b(a,c)}))}function b(a,b){a.layerManager.managedLayers.map(function(a){return a.layer}).filter(function(a){return!!a}).filter(function(a){return a instanceof l.SegmentationUserLayer}).map(function(a){return a}).forEach(function(a){b(a)})} -function c(a,b){$jscomp.initSymbol();var c=Symbol("customEvent");a.addEventListener("wheel",function(a){if(!a[c]&&b.zoomWithoutCtrl){a.stopImmediatePropagation();a.stopPropagation();a.preventDefault();var d=new Proxy(a,{get:function(a,b){if("ctrlKey"===b)return!a[b];b=a[b];return"function"===typeof b?b.bind(a):b}});d=new WheelEvent(a.type,d);d[c]=!0;a.target.dispatchEvent(d)}},!0)}function e(a,b){a.addEventListener("mousedown",function(a){b.rightClickWithCtrl&&2===a.button&&!a.ctrlKey&&(a.stopImmediatePropagation(), -a.stopPropagation(),a.preventDefault())},!0)}f.a=function(a,b){b.restrictUserNavigation&&q(a);b.globals&&b.globals.useCustomSegmentColors&&p(a);b.globals&&b.globals.useNehubaLayout&&(a.inputEventBindings.sliceView.set("at:shift+mousedown0",{action:"nehuba-rotate-via-mouse-drag",stopPropagation:!0}),b.layout&&b.layout.useNehubaPerspective&&a.inputEventBindings.perspectiveView.set("at:shift+mousedown0",{action:"nehuba-translate-via-mouse-drag",stopPropagation:!0}));b.dedebounceUpdates&&n(a,b)};f.b= -function(a,b){c(a,b);e(a,b)};f.e=q;f.d=function(a){a.displayState.segmentSelectionState.set(null);a.displayState.segmentSelectionState.set=function(){}};f.c=function(a){a.displayState.segmentSelectionState.isSelected=function(){return!1}};var g=a(2),l=a(65),k=a(122);$jscomp.initSymbol();var t=Symbol("bbox");$jscomp.initSymbol();var m=Symbol("hooked")},function(h,f,a){h.exports=a(364)},function(h,f,a){f.isObject=function(a){return null!=a&&"object"===typeof a}},function(h,f,a){var q=this&&this.__extends|| -function(a,f){function d(){this.constructor=a}for(var b in f)f.hasOwnProperty(b)&&(a[b]=f[b]);a.prototype=null===f?Object.create(f):(d.prototype=f.prototype,new d)};h=function(a){function f(d){a.call(this);this.errors=d;d=Error.call(this,d?d.length+" errors occurred during unsubscription:\n "+d.map(function(a,c){return c+1+") "+a.toString()}).join("\n "):"");this.name=d.name="UnsubscriptionError";this.stack=d.stack;this.message=d.message}q(f,a);return f}(Error);f.UnsubscriptionError=h},function(h, -f,a){f.empty={closed:!0,next:function(a){},error:function(a){throw a;},complete:function(){}}},function(h,f,a){var q=this&&this.__extends||function(a,f){function d(){this.constructor=a}for(var b in f)f.hasOwnProperty(b)&&(a[b]=f[b]);a.prototype=null===f?Object.create(f):(d.prototype=f.prototype,new d)};h=function(a){function f(d,b){a.call(this);this.subject=d;this.subscriber=b;this.closed=!1}q(f,a);f.prototype.unsubscribe=function(){if(!this.closed){this.closed=!0;var a=this.subject,b=a.observers; -this.subject=null;!b||0===b.length||a.isStopped||a.closed||(a=b.indexOf(this.subscriber),-1!==a&&b.splice(a,1))}};return f}(a(11).Subscription);f.SubjectSubscription=h},function(h,f,a){f.isArrayLike=function(a){return a&&"number"===typeof a.length}},function(h,f,a){f.isPromise=function(a){return a&&"function"!==typeof a.subscribe&&"function"===typeof a.then}},function(h,f,a){var q=this&&this.__extends||function(a,b){function c(){this.constructor=a}for(var d in b)b.hasOwnProperty(d)&&(a[d]=b[d]);a.prototype= -null===b?Object.create(b):(c.prototype=b.prototype,new c)},p=a(36),n=a(199),d=a(200),b=a(202),c=a(387),e=a(38),g=a(388),l=a(68),k=a(0),t=a(127),m=a(87);h=function(a){function f(b,c){a.call(this,null);this.ish=b;this.scheduler=c}q(f,a);f.create=function(a,h){if(null!=a){if("function"===typeof a[m.observable])return a instanceof k.Observable&&!h?a:new f(a,h);if(p.isArray(a))return new e.ArrayObservable(a,h);if(d.isPromise(a))return new b.PromiseObservable(a,h);if("function"===typeof a[l.iterator]|| -"string"===typeof a)return new c.IteratorObservable(a,h);if(n.isArrayLike(a))return new g.ArrayLikeObservable(a,h)}throw new TypeError((null!==a&&typeof a||a)+" is not observable");};f.prototype._subscribe=function(a){var b=this.ish,c=this.scheduler;return null==c?b[m.observable]().subscribe(a):b[m.observable]().subscribe(new t.ObserveOnSubscriber(a,c,0))};return f}(k.Observable);f.FromObservable=h},function(h,f,a){function q(a){var b=a.value;a=a.subscriber;a.closed||(a.next(b),a.complete())}function p(a){var b= -a.err;a=a.subscriber;a.closed||a.error(b)}var n=this&&this.__extends||function(a,c){function b(){this.constructor=a}for(var d in c)c.hasOwnProperty(d)&&(a[d]=c[d]);a.prototype=null===c?Object.create(c):(b.prototype=c.prototype,new b)},d=a(16);h=function(a){function b(b,c){a.call(this);this.promise=b;this.scheduler=c}n(b,a);b.create=function(a,c){return new b(a,c)};b.prototype._subscribe=function(a){var b=this,c=this.promise,e=this.scheduler;if(null==e)this._isScalar?a.closed||(a.next(this.value), -a.complete()):c.then(function(c){b.value=c;b._isScalar=!0;a.closed||(a.next(c),a.complete())},function(b){a.closed||a.error(b)}).then(null,function(a){d.root.setTimeout(function(){throw a;})});else if(this._isScalar){if(!a.closed)return e.schedule(q,0,{value:this.value,subscriber:a})}else c.then(function(c){b.value=c;b._isScalar=!0;a.closed||a.add(e.schedule(q,0,{value:c,subscriber:a}))},function(b){a.closed||a.add(e.schedule(p,0,{err:b,subscriber:a}))}).then(null,function(a){d.root.setTimeout(function(){throw a; +d(b.prototype.__proto__||Object.getPrototypeOf(b.prototype),"disposed",this).call(this)}},{key:"size",get:function(){return this.map.size}}]);return b}(h.a)},function(h,f,a){var q=a(2);a.d(f,"h",function(){return q.s});a.d(f,"i",function(){return q.u});a.d(f,"f",function(){return q.n});a.d(f,"d",function(){return q.k});var p=a(312);a.d(f,"b",function(){return p.b});a.d(f,"a",function(){return p.a});var n=a(191);a.d(f,"e",function(){return n.b});var d=a(121);a.d(f,"c",function(){return d.c});a.d(f, +"g",function(){return d.d})},function(h,f,a){f.a=function(a){if(!window.getSelection().isCollapsed)return!0;a=a.target.tagName;return"TEXTAREA"===a||"INPUT"===a?!0:!1};f.b=function(a,f){f=void 0===f?"text/plain":f;var d=!1,b=Object(q.c)(document,"copy",function(b){b.clipboardData.setData(f,a);d=!0;b.stopPropagation();b.preventDefault()},!0);try{document.execCommand("copy")}finally{b()}return d};var q=a(1)},function(h,f,a){function q(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function"); +}function p(a,b){if(!a)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!b||"object"!==typeof b&&"function"!==typeof b?a:b}function n(a,b){if("function"!==typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}});b&&(Object.setPrototypeOf?Object.setPrototypeOf(a,b):a.__proto__=b)}a.d(f,"a",function(){return g}); +a.d(f,"b",function(){return l});h=a(33);a=a(1);var d=function t(a,b,c){null===a&&(a=Function.prototype);var d=Object.getOwnPropertyDescriptor(a,b);if(void 0===d){if(a=Object.getPrototypeOf(a),null!==a)return t(a,b,c)}else{if("value"in d)return d.value;b=d.get;return void 0===b?void 0:b.call(c)}},b=function(){function a(a,b){for(var c=0;c<b.length;c++){var d=b[c];d.enumerable=d.enumerable||!1;d.configurable=!0;"value"in d&&(d.writable=!0);Object.defineProperty(a,d.key,d)}}return function(b,c,d){c&& +a(b.prototype,c);d&&a(b,d);return b}}();$jscomp.initSymbol();var c=Symbol("SingleTextureVolumeChunk.textureUnit");$jscomp.initSymbol();var e=Symbol("SingleTextureVolumeChunk.textureLayout"),g=function(a){function d(a){q(this,d);var b=p(this,(d.__proto__||Object.getPrototypeOf(d)).call(this));b.shaderKey=a;return b}n(d,a);b(d,[{key:"defineShader",value:function(a){a.addTextureSampler2D("uVolumeChunkSampler",c)}},{key:"beginDrawing",value:function(a,b){var d=b.textureUnit(c);a.activeTexture(a.TEXTURE0+ +d);b[e]=null}},{key:"endDrawing",value:function(a,b){a.bindTexture(a.TEXTURE_2D,null);b[e]=null}},{key:"bindChunk",value:function(a,b,c){var d=c.textureLayout;b[e]!==d&&(b[e]=d,this.setupTextureLayout(a,b,d));a.bindTexture(a.TEXTURE_2D,c.texture)}},{key:"beginSource",value:function(a,b){}}]);return d}(a.a),l=function(a){function c(a,b){q(this,c);a=p(this,(c.__proto__||Object.getPrototypeOf(c)).call(this,a,b));a.texture=null;a.data=b.data;return a}n(c,a);b(c,[{key:"copyToGPU",value:function(a){d(c.prototype.__proto__|| +Object.getPrototypeOf(c.prototype),"copyToGPU",this).call(this,a);var b=this.texture=a.createTexture();a.bindTexture(a.TEXTURE_2D,b);this.setTextureData(a);a.bindTexture(a.TEXTURE_2D,null)}},{key:"freeGPUMemory",value:function(a){d(c.prototype.__proto__||Object.getPrototypeOf(c.prototype),"freeGPUMemory",this).call(this,a);a.deleteTexture(this.texture);this.texture=null;this.textureLayout.dispose();this.textureLayout=null}}]);return c}(h.a)},function(h,f,a){f.a=function(a,f,h,d,b,c){for(var e=0,g= +0,l=1,k=1,t=0;3>t;++t){var m=b[t],r=d[t],n=m%r;e+=Math.floor(m/r)*l;l*=Math.ceil(h[t]/r);g+=n*k;k*=r}d=f+2*e;h=a[d];d=a[d+1];b=h&16777215;h=h>>24&255;0<h&&(b+=c*(a[(f+d&16777215)+Math.floor(g*h/32)]>>g*h%32&(1<<h)-1));return b}},function(h,f,a){f.b=function(a,f){return function(h){h.style.flex=a;f(h)}};f.a=function(a,f){return function(h){h.style.display="flex";h.style.flexDirection=a;for(var d=$jscomp.makeIterator(f),b=d.next();!b.done;b=d.next()){b=b.value;var c=h.ownerDocument.createElement("div"); +h.appendChild(c);b(c)}}}},function(h,f,a){function q(a,b){if(!a)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!b||"object"!==typeof b&&"function"!==typeof b?a:b}function p(a,b){if("function"!==typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}});b&&(Object.setPrototypeOf?Object.setPrototypeOf(a, +b):a.__proto__=b)}a.d(f,"a",function(){return k});var n=a(27);h=a(47);var d=a(26),b=a(32),c=a(186),e=a(326),g=a(331),l=function(){function a(a,b){for(var c=0;c<b.length;c++){var d=b[c];d.enumerable=d.enumerable||!1;d.configurable=!0;"value"in d&&(d.writable=!0);Object.defineProperty(a,d.key,d)}}return function(b,c,d){c&&a(b.prototype,c);d&&a(b,d);return b}}();a(332);var k=function(a){function k(a,b){if(!(this instanceof k))throw new TypeError("Cannot call a class as a function");var d=q(this,(k.__proto__|| +Object.getPrototypeOf(k)).call(this));d.manager=a;d.existingLayer=b;d.statusElement=document.createElement("div");d.submitElement=document.createElement("button");d.namePromptElement=document.createElement("label");d.nameInputElement=document.createElement("input");d.volumeCancellationSource=void 0;d.sourceValid=!1;d.nameValid=!0;var l=d.content;l.classList.add("add-layer-overlay");var f=document.createElement("form");f.className="source-form";d.registerEventListener(f,"submit",function(a){a.preventDefault(); +d.validateSource(!0)});var m=document.createElement("label");m.textContent="Source:";a=d.sourceInput=d.registerDisposer(new e.a({completer:function(a,b){return d.manager.dataSourceProvider.volumeCompleter(a,d.manager.chunkManager,b).then(function(a){return{completions:a.completions,makeElement:e.b,offset:a.offset,showSingleResult:!0}})},delay:0}));a.element.classList.add("add-layer-source");a.inputElement.addEventListener("blur",function(){d.validateSource(!1)});d.submitElement.disabled=!0;a.inputChanged.add(function(){var a= +d.volumeCancellationSource;void 0!==a&&(a.cancel(),d.volumeCancellationSource=void 0);d.sourceValid=!1;d.submitElement.disabled=!0;d.statusElement.textContent=""});f.appendChild(m);f.appendChild(a.element);Object(c.a)(m,a.inputElement);m=Object(g.a)();f.appendChild(m);l.appendChild(f);var h=d.statusElement,t=d.namePromptElement,r=d.nameInputElement;f=d.submitElement;h.className="dialog-status";m=document.createElement("form");m.className="name-form";t.textContent="Name:";r.className="add-layer-name"; +r.autocomplete="off";r.spellcheck=!1;r.type="text";d.registerEventListener(r,"input",function(){d.validateName()});f.type="submit";Object(c.a)(t,r);m.appendChild(t);m.appendChild(r);m.appendChild(f);l.appendChild(m);l.appendChild(h);void 0!==b?(void 0!==b.sourceUrl?(a.value=b.sourceUrl,d.validateSource()):d.sourceValid=!0,a.disabled=!0,r.value=b.name,d.validateName(),f.textContent="Save",r.focus()):(b=d.manager.layerManager.managedLayers,0<b.length&&(b=b[b.length-1],b instanceof n.b&&(b=b.sourceUrl, +void 0!==b&&(l=d.manager.dataSourceProvider.findSourceGroup(b),a.value=b.substring(0,l),a.inputElement.setSelectionRange(0,l)))),a.inputElement.focus(),f.textContent="Add Layer");d.registerEventListener(m,"submit",function(a){a.preventDefault();d.submit()});return d}p(k,a);l(k,[{key:"isNameValid",value:function(){var a=this.nameInputElement.value;if(""===a)return!1;a=this.manager.layerManager.getLayerByName(a);return void 0===a||a===this.existingLayer}},{key:"submit",value:function(){this.sourceValid&& +this.isNameValid()&&(this.existingLayer?(this.existingLayer.name=this.nameInputElement.value,this.manager.layerManager.layersChanged.dispatch()):this.manager.add(this.manager.getLayer(this.nameInputElement.value,this.sourceInput.value)),this.dispose())}},{key:"validateName",value:function(){var a=this.nameInputElement;(this.nameValid=this.isNameValid())?(a.classList.add("valid-input"),a.classList.remove("invalid-input")):(a.classList.remove("valid-input"),a.classList.add("invalid-input"));this.validityChanged()}}, +{key:"validityChanged",value:function(){this.submitElement.disabled=!(this.nameValid&&this.sourceValid)}},{key:"validateSource",value:function(a){var c=this;a=void 0===a?!1:a;var e=this.sourceInput.value;if(""!==e){try{var g=this.manager.dataSourceProvider.suggestLayerName(e),k=this.nameInputElement;if(""===this.nameInputElement.value){var l=this.manager.layerManager.getUniqueLayerName(g);k.value=l;k.setSelectionRange(0,l.length);this.validateName()}a&&k.focus()}catch(z){this.setError(z.message); +return}this.setInfo("Validating volume source...");var f=this.volumeCancellationSource=new b.b;this.manager.dataSourceProvider.getVolume(this.manager.chunkManager,e,void 0,f).then(function(a){f.isCanceled||(c.volumeCancellationSource=void 0,c.sourceValid=!0,c.setInfo(d.c[a.volumeType].toLowerCase()+": "+(a.numChannels+"-channel "+d.a[a.dataType].toLowerCase())),c.validityChanged())}).catch(function(a){f.isCanceled||(c.volumeCancellationSource=void 0,c.setError(a.message))})}}},{key:"setInfo",value:function(a){this.statusElement.className= +"dialog-status dialog-status-info";this.statusElement.textContent=a}},{key:"setError",value:function(a){this.statusElement.className="dialog-status dialog-status-error";this.statusElement.textContent=a}}]);return k}(h.a)},function(h,f,a){f.a=function(a,f){""===f.id&&(f.id="unique-id-for-association-"+q++);a.setAttribute("for",f.id)};var q=0},function(h,f,a){f.a=function(a){var f=-1;return Object.assign(function(){-1===f&&(f=requestAnimationFrame(function(){f=-1;a()}))},{flush:function(){-1!==f&&(f= +-1,a())},cancel:function(){-1!==f&&(cancelAnimationFrame(f),f=-1)}})}},function(h,f,a){function q(a,b){if("function"!==typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}});b&&(Object.setPrototypeOf?Object.setPrototypeOf(a,b):a.__proto__=b)}function p(a,b){var c=document.documentElement.scrollTop+Math.min(document.documentElement.clientHeight- +a.offsetHeight,b.clientY);a.style.left=document.documentElement.scrollLeft+Math.min(document.documentElement.clientWidth-a.offsetWidth,b.clientX)+"px";a.style.top=c+"px";a.style.visibility=null}a.d(f,"a",function(){return e});var n=a(1),d=a(8),b=a(7),c=function(){function a(a,b){for(var c=0;c<b.length;c++){var d=b[c];d.enumerable=d.enumerable||!1;d.configurable=!0;"value"in d&&(d.writable=!0);Object.defineProperty(a,d.key,d)}}return function(b,c,d){c&&a(b.prototype,c);d&&a(b,d);return b}}();a(338); +var e=function(a){function e(a){if(!(this instanceof e))throw new TypeError("Cannot call a class as a function");var c=(e.__proto__||Object.getPrototypeOf(e)).call(this);if(!this)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");c=!c||"object"!==typeof c&&"function"!==typeof c?this:c;c.element=document.createElement("div");c.parentDisposers=new Map;c.disabledValue=!1;c.opened=new b.a;c.closed=new b.a;var d=c.element;d.className="neuroglancer-context-menu";d.style.visibility= +"hidden";d.tabIndex=-1;document.body.appendChild(d);void 0!==a&&c.registerParent(a);return c}q(e,a);c(e,[{key:"registerParent",value:function(a){var b=this,c=this.parentDisposers;c.has(a)||c.set(a,Object(n.c)(a,"contextmenu",function(a){b.show(a);a.stopPropagation();a.preventDefault()}))}},{key:"show",value:function(a){var b=this;if(!this.disabledValue){this.hide();var c=this.element,d=Object(n.c)(document,"mousedown",function(a){a.target instanceof Node&&!c.contains(a.target)&&b.hide()},!0),e=Object(n.c)(document, +"keydown",function(a){"Escape"===a.code&&b.hide()},!0);c.style.display=null;c.style.visibility="hidden";this.opened.dispatch();p(c,a);this.menuDisposer=function(){e();d();c.style.display="none"}}}},{key:"unregisterParent",value:function(a){var b=this.parentDisposers,c=b.get(a);void 0!==c&&(c(),b.delete(a))}},{key:"disposed",value:function(){for(var a=this.parentDisposers,b=$jscomp.makeIterator(a.values()),c=b.next();!c.done;c=b.next())c=c.value,c();a.clear();Object(d.b)(this.element)}},{key:"hide", +value:function(){void 0!==this.menuDisposer&&(this.menuDisposer(),this.menuDisposer=void 0,this.closed.dispatch())}},{key:"disabled",get:function(){return this.disabledValue},set:function(a){this.disabledValue!==a&&(this.disabledValue=a)&&this.hide()}},{key:"open",get:function(){return void 0!==this.menuDisposer}}]);return e}(n.a)},function(h,f,a){f.a=function(a,d){var b=Object(q.c)(a,"drop",function(a){a.preventDefault();if(-1!==a.dataTransfer.types.indexOf(p.d)){var b=JSON.parse(a.dataTransfer.getData(p.d)); +d.restoreState(b);a.stopPropagation()}}),c=Object(q.c)(a,"dragover",function(a){-1!==a.dataTransfer.types.indexOf(p.d)&&(a.dataTransfer.dropEffect="link",a.preventDefault(),a.stopPropagation())});return function(){c();b()}};var q=a(1),p=a(120)},function(h,f,a){(function(a){function f(b,e,g,l){function c(a){var c=f(b,e);if(!c||c.to.line-c.from.line<m)return null;for(var d=b.findMarksAt(c.from),g=0;g<d.length;++g)if(d[g].__isFold&&"fold"!==l){if(!a)return null;c.cleared=!0;d[g].clear()}return c}if(g&& +g.call){var f=g;g=null}else f=d(b,g,"rangeFinder");"number"==typeof e&&(e=a.Pos(e,0));var m=d(b,g,"minFoldSize"),r=c(!0);if(d(b,g,"scanUp"))for(;!r&&e.line>b.firstLine();)e=a.Pos(e.line-1,0),r=c(!1);if(r&&!r.cleared&&"unfold"!==l){var n=h(b,g);a.on(n,"mousedown",function(b){p.clear();a.e_preventDefault(b)});var p=b.markText(r.from,r.to,{replacedWith:n,clearOnEnter:d(b,g,"clearOnEnter"),__isFold:!0});p.on("clear",function(c,d){a.signal(b,"unfold",b,c,d)});a.signal(b,"fold",b,r.from,r.to)}}function h(a, +b){a=d(a,b,"widget");"string"==typeof a?(b=document.createTextNode(a),a=document.createElement("span"),a.appendChild(b),a.className="CodeMirror-foldmarker"):a&&(a=a.cloneNode(!0));return a}function d(a,d,g){return d&&void 0!==d[g]?d[g]:(a=a.options.foldOptions)&&void 0!==a[g]?a[g]:b[g]}a.newFoldFunction=function(a,b){return function(c,d){f(c,d,{rangeFinder:a,widget:b})}};a.defineExtension("foldCode",function(a,b,d){f(this,a,b,d)});a.defineExtension("isFolded",function(a){a=this.findMarksAt(a);for(var b= +0;b<a.length;++b)if(a[b].__isFold)return!0});a.commands.toggleFold=function(a){a.foldCode(a.getCursor())};a.commands.fold=function(a){a.foldCode(a.getCursor(),null,"fold")};a.commands.unfold=function(a){a.foldCode(a.getCursor(),null,"unfold")};a.commands.foldAll=function(b){b.operation(function(){for(var c=b.firstLine(),d=b.lastLine();c<=d;c++)b.foldCode(a.Pos(c,0),null,"fold")})};a.commands.unfoldAll=function(b){b.operation(function(){for(var c=b.firstLine(),d=b.lastLine();c<=d;c++)b.foldCode(a.Pos(c, +0),null,"unfold")})};a.registerHelper("fold","combine",function(){var a=Array.prototype.slice.call(arguments,0);return function(b,c){for(var d=0;d<a.length;++d){var e=a[d](b,c);if(e)return e}}});a.registerHelper("fold","auto",function(a,b){for(var c=a.getHelpers(b,"fold"),d=0;d<c.length;d++){var e=c[d](a,b);if(e)return e}});var b={rangeFinder:a.fold.auto,widget:"\u2194",minFoldSize:0,scanUp:!1,clearOnEnter:!0};a.defineOption("foldOptions",null);a.defineExtension("foldOption",function(a,b){return d(this, +a,b)})})(a(48))},function(h,f,a){function q(a,b){if(!a)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!b||"object"!==typeof b&&"function"!==typeof b?a:b}function p(a,b){if("function"!==typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}});b&&(Object.setPrototypeOf?Object.setPrototypeOf(a,b):a.__proto__= +b)}a.d(f,"a",function(){return w});var n=a(2),d=a(80),b=a(22),c=a(82),e=a(360),g=a(29),l=a(192),k=a(35),t=a(9),m=function(){function a(a,b){for(var c=0;c<b.length;c++){var d=b[c];d.enumerable=d.enumerable||!1;d.configurable=!0;"value"in d&&(d.writable=!0);Object.defineProperty(a,d.key,d)}}return function(b,c,d){c&&a(b.prototype,c);d&&a(b,d);return b}}(),r=function x(a,b,c){null===a&&(a=Function.prototype);var d=Object.getOwnPropertyDescriptor(a,b);if(void 0===d){if(a=Object.getPrototypeOf(a),null!== +a)return x(a,b,c)}else{if("value"in d)return d.value;b=d.get;return void 0===b?void 0:b.call(c)}},u=n.s.create(),v=n.k.create();f.b="perpspectiveRenderEvent";var w=function(a){function f(a,g,m,h){if(!(this instanceof f))throw new TypeError("Cannot call a class as a function");var r=q(this,(f.__proto__||Object.getPrototypeOf(f)).call(this,a,g,m));r.config=h;r.planarSlices=new Set;r.transparentPlaneRenderHelper=r.registerDisposer(e.b.get(r.gl,c.c));r.scaleBarWidget=r.registerDisposer(new l.a);Object(b.c)(g, +"nehuba-translate-via-mouse-drag",function(a){Object(d.a)(a.detail,function(a,b,c){if(r.config.layout.useNehubaPerspective.enableShiftDrag){a=r.width;var d=r.height,e=r.viewer.navigationState.position,g=e.spatialCoordinates;n.s.transformMat4(u,g,r.projectionMat);u[0]=2*b/a;u[1]=-2*c/d;n.s.transformMat4(g,u,r.inverseProjectionMat);e.changed.dispatch()}})});a=h.layout.useNehubaPerspective.removePerspectiveSlicesBackground;r.nehubaSliceViewRenderHelper=r.registerDisposer(e.a.get(r.gl,c.c,a&&a.mode|| +"none"));r.registerDisposer(r.visibility.changed.add(function(){return Array.from(r.sliceViews.keys()).forEach(function(a){return a.visibility.value=r.visibility.value})}));a=r.scaleBarWidget.element;r.registerDisposer(new k.a(Object(t.g)(function(a,b){return a&&b},m.showScaleBar,m.orthographicProjection),a));g.appendChild(a);return r}p(f,a);m(f,[{key:"updateProjectionMatrix",value:function(){r(f.prototype.__proto__||Object.getPrototypeOf(f.prototype),"updateProjectionMatrix",this).call(this);this.config.layout.useNehubaPerspective.centerToOrigin&& +(n.k.translate(this.projectionMat,this.projectionMat,this.navigationState.position.spatialCoordinates),n.k.invert(this.inverseProjectionMat,this.projectionMat))}},{key:"disposed",value:function(){for(var a=$jscomp.makeIterator(this.planarSlices),b=a.next();!b.done;b=a.next())b.value.dispose();this.planarSlices.clear();r(f.prototype.__proto__||Object.getPrototypeOf(f.prototype),"disposed",this).call(this)}},{key:"draw",value:function(){for(var a=$jscomp.makeIterator(this.sliceViews.keys()),b=a.next();!b.done;b= +a.next())b.value.visibility.value=this.config.layout.useNehubaPerspective.disablePerspectiveSlicesPreloading?this.viewer.showSliceViews.value&&this.visibility.visible?g.b.VISIBLE:g.b.IGNORED:this.visibility.value;if(this.navigationState.valid){this.onResize();a=this.width;var d=this.height;if(0!==a&&0!==d){b=this.viewer.showSliceViews.value;for(var e=$jscomp.makeIterator(this.sliceViews),k=e.next();!k.done;k=e.next()){k=$jscomp.makeIterator(k.value);var l=k.next().value;(k.next().value||b)&&l.updateRendering()}e= +$jscomp.makeIterator(this.planarSlices);for(b=e.next();!b.done;b=e.next())b.value.updateRendering();b=this.gl;this.offscreenFramebuffer.bind(a,d);b.disable(b.SCISSOR_TEST);e=this.config.layout.useNehubaPerspective;e=e.perspectiveBackground||e.perspectiveSlicesBackground||this.viewer.crossSectionBackgroundColor.value;this.gl.clearColor(e[0],e[1],e[2],1);b.clear(b.COLOR_BUFFER_BIT|b.DEPTH_BUFFER_BIT);b.enable(b.DEPTH_TEST);e=this.projectionMat;this.updateProjectionMatrix();k=n.s.create();Object(n.p)(k, +n.e[2],this.modelViewMat);n.s.normalize(k,k);l=this.pickIDs;l.clear();e={dataToDevice:e,lightDirection:k,ambientLighting:.2,directionalLighting:.8,pickIDs:l,emitter:c.c,emitColor:!0,emitPickID:!0,alreadyEmittedPickID:!1,viewportWidth:a,viewportHeight:d,extra:{config:this.config,showSliceViewsCheckboxValue:this.viewer.showSliceViews.value,slicesPose:this.viewer.slicesNavigationState.pose,perspectiveNavigationState:this.viewer.navigationState,meshesLoaded:-1,meshFragmentsLoaded:-1,crossSectionBackground:this.viewer.crossSectionBackgroundColor.value}}; +k=this.visibleLayerTracker.getVisibleLayers();for(var f=l=!1,m=$jscomp.makeIterator(k),h=m.next();!h.done;h=m.next())h=h.value,h.isTransparent?l=!0:h.isAnnotation?f=!0:h.draw(e);this.config.layout.useNehubaPerspective.waitForMesh&&!e.extra.meshRendered||this.drawSliceViews(e);if(f){b.enable(WebGL2RenderingContext.BLEND);b.depthFunc(WebGL2RenderingContext.LEQUAL);b.blendFunc(WebGL2RenderingContext.SRC_ALPHA,WebGL2RenderingContext.ONE_MINUS_SRC_ALPHA);b.drawBuffers([b.COLOR_ATTACHMENT0,b.NONE,b.NONE]); +e.emitPickID=!1;f=$jscomp.makeIterator(k);for(h=f.next();!h.done;h=f.next())h=h.value,h.isAnnotation&&h.draw(e);b.depthFunc(WebGL2RenderingContext.LESS);b.disable(WebGL2RenderingContext.BLEND);b.drawBuffers([b.COLOR_ATTACHMENT0,b.COLOR_ATTACHMENT1,b.COLOR_ATTACHMENT2]);e.emitPickID=!0}h=this.config.layout.useNehubaPerspective.disableAxisLinesInPerspective;this.viewer.showAxisLines.value&&!h&&this.drawAxisLines();if(l){b.depthMask(!1);b.enable(WebGL2RenderingContext.BLEND);l=this.transparentConfiguration; +l.bind(a,d);this.gl.clearColor(0,0,0,1);b.clear(WebGL2RenderingContext.COLOR_BUFFER_BIT);e.emitter=c.d;b.blendFuncSeparate(WebGL2RenderingContext.ONE,WebGL2RenderingContext.ONE,WebGL2RenderingContext.ZERO,WebGL2RenderingContext.ONE_MINUS_SRC_ALPHA);e.emitPickID=!1;f=$jscomp.makeIterator(k);for(h=f.next();!h.done;h=f.next())h=h.value,h.isTransparent&&h.draw(e);b.disable(WebGL2RenderingContext.DEPTH_TEST);this.offscreenFramebuffer.bindSingle(c.a.COLOR);b.blendFunc(WebGL2RenderingContext.ONE_MINUS_SRC_ALPHA, +WebGL2RenderingContext.SRC_ALPHA);this.transparencyCopyHelper.draw(l.colorBuffers[0].texture,l.colorBuffers[1].texture);b.depthMask(!0);b.disable(WebGL2RenderingContext.BLEND);b.enable(WebGL2RenderingContext.DEPTH_TEST);this.offscreenFramebuffer.bind(a,d)}b.drawBuffers([b.NONE,b.COLOR_ATTACHMENT1,b.COLOR_ATTACHMENT2]);e.emitter=c.c;e.emitPickID=!0;e.emitColor=!1;b.enable(WebGL2RenderingContext.POLYGON_OFFSET_FILL);b.polygonOffset(-1,-1);d=$jscomp.makeIterator(k);for(h=d.next();!h.done;h=d.next())k= +h.value,e.alreadyEmittedPickID=!k.isTransparent&&!k.isAnnotation,k.draw(e);b.disable(WebGL2RenderingContext.POLYGON_OFFSET_FILL);this.viewer.showScaleBar.value&&this.viewer.orthographicProjection.value&&(d=this.scaleBarWidget.dimensions,d.targetLengthInPixels=Math.min(a/4,100),d.nanometersPerPixel=this.nanometersPerPixel,this.scaleBarWidget.update());this.offscreenFramebuffer.unbind();this.setGLViewport();this.offscreenCopyHelper.draw(this.offscreenFramebuffer.colorBuffers[c.a.COLOR].texture);a=new CustomEvent("perpspectiveRenderEvent", +{bubbles:!0,detail:{meshesLoaded:e.extra.meshesLoaded,meshFragmentsLoaded:e.extra.meshFragmentsLoaded,lastLoadedMeshId:e.extra.lastMeshId}});this.element.dispatchEvent(a)}}}},{key:"drawSliceViews",value:function(a){var b=this.config.layout.useNehubaPerspective,c=this.sliceViewRenderHelper,d=this.nehubaSliceViewRenderHelper,e=this.transparentPlaneRenderHelper,g=a.lightDirection,k=a.ambientLighting,l=a.directionalLighting;a=a.dataToDevice;var f=this.viewer.showSliceViews.value;if(!b.hideImages){var m= +b.removePerspectiveSlicesBackground;c=m?d:c;for(var h=$jscomp.makeIterator(this.sliceViews),t=h.next();!t.done;t=h.next()){var r=$jscomp.makeIterator(t.value);t=r.next().value;if((r.next().value||f)&&0!==t.width&&0!==t.height&&t.hasValidViewport){r=Math.abs(n.s.dot(g,t.viewportAxes[2]));r=k+r*l;var p=v;n.k.identity(p);p[0]=t.width/2;p[5]=-t.height/2;n.k.multiply(p,t.viewportToData,p);n.k.multiply(p,a,p);var q=n.u.create(),u=b.perspectiveSlicesBackground||this.viewer.crossSectionBackgroundColor.value; +q[0]=u[0];q[1]=u[1];q[2]=u[2];q[3]=1;d.setDiscardColor(m&&m.color||q);c.draw(t.offscreenFramebuffer.colorBuffers[0].texture,p,n.u.fromValues(r,r,r,1),q,0,0,1,1)}}}if(b.drawSubstrates&&f)for(d=b.fixedZoomPerspectiveSlices&&b.fixedZoomPerspectiveSlices.sliceViewportSizeMultiplier||1,g=$jscomp.makeIterator(this.sliceViews.keys()),k=g.next();!k.done;k=g.next()){c=k.value;k=v;n.k.identity(k);k[0]=c.width/2/d;k[5]=-c.height/2/d;n.k.multiply(k,c.viewportToData,k);l=n.k.clone(a);m=n.s.clone(this.navigationState.position.spatialCoordinates); +c=n.s.clone(c.viewportAxes[2]);h=this.viewer.slicesNavigationState.pose.orientation.orientation;t=n.n.invert(n.n.create(),h);n.s.transformQuat(c,c,t);n.s.transformQuat(m,m,t);t=n.s.create();for(r=0;3>r;r++)t[r]=0===Math.round(c[r])?-m[r]:0;n.s.transformQuat(t,t,h);n.k.translate(l,l,t);n.k.multiply(k,l,k);l=b.drawSubstrates.color||n.u.fromValues(0,0,1,.2);e.draw(k,l,{factor:3,units:1})}if(b.drawZoomLevels&&f&&(f=b.drawZoomLevels.cutOff)&&this.viewer.slicesNavigationState.zoomFactor.value<f)for(f=$jscomp.makeIterator(this.planarSlices), +k=f.next();!k.done;k=f.next())g=k.value,d=v,n.k.identity(d),d[0]=g.width/2,d[5]=-g.height/2,n.k.multiply(d,g.viewportToData,d),n.k.multiply(d,a,d),g=b.drawZoomLevels.color||n.u.fromValues(1,0,0,.2),e.draw(d,g,{factor:-1,units:1})}},{key:"zoomByMouse",value:function(a){r(f.prototype.__proto__||Object.getPrototypeOf(f.prototype),"zoomByMouse",this).call(this,a);if(a=this.config.layout.useNehubaPerspective.restrictZoomLevel)a.minZoom&&this.navigationState.zoomFactor.value<a.minZoom&&(this.navigationState.zoomFactor.value= +a.minZoom),a.maxZoom&&this.navigationState.zoomFactor.value>a.maxZoom&&(this.navigationState.zoomFactor.value=a.maxZoom)}}]);return f}(c.b)},function(h,f,a){function q(a,b){if("function"!==typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}});b&&(Object.setPrototypeOf?Object.setPrototypeOf(a,b):a.__proto__=b)}a.d(f,"a",function(){return b}); +h=a(1);var p=a(53),n=a(8),d=function(){function a(a,b){for(var c=0;c<b.length;c++){var d=b[c];d.enumerable=d.enumerable||!1;d.configurable=!0;"value"in d&&(d.writable=!0);Object.defineProperty(a,d.key,d)}}return function(b,c,d){c&&a(b.prototype,c);d&&a(b,d);return b}}();a(361);var b=function(a){function b(a){a=void 0===a?new p.a:a;if(!(this instanceof b))throw new TypeError("Cannot call a class as a function");var c=(b.__proto__||Object.getPrototypeOf(b)).call(this);if(!this)throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); +c=!c||"object"!==typeof c&&"function"!==typeof c?this:c;c.dimensions=a;c.element=document.createElement("div");c.textNode=document.createTextNode("");c.barElement=document.createElement("div");a=c.element;var d=c.textNode,e=c.barElement;a.className="scale-bar-container";a.appendChild(d);a.appendChild(e);e.className="scale-bar";return c}q(b,a);d(b,[{key:"update",value:function(){var a=this.dimensions;a.update()&&(this.textNode.textContent=a.physicalLength+" "+a.physicalUnit,this.barElement.style.width= +a.lengthInPixels+"px")}},{key:"disposed",value:function(){Object(n.b)(this.element)}}]);return b}(h.a)},function(h,f,a){function q(a){if(!a[m]){a.registerDisposer(a.layerManager.layersChanged.add(function(){for(var b=!1,c=new g.b(g.s.fromValues(Infinity,Infinity,Infinity),g.s.fromValues(-Infinity,-Infinity,-Infinity)),d=$jscomp.makeIterator(a.layerManager.managedLayers),e=d.next();!e.done;e=d.next())if(e=e.value.layer,null!=e){e=$jscomp.makeIterator(e.renderLayers);for(var k=e.next();!k.done;k=e.next())k= +k.value.boundingBox,null!=k&&(g.s.min(c.lower,c.lower,k.lower),g.s.max(c.upper,c.upper,k.upper),b=!0)}b&&(a.navigationState.position[t]=c);b&&(a.navigationState.pose[t]=c);b&&a.navigationState.position.changed.dispatch()}));var b=a.navigationState.position,c=b.changed.dispatch;b.changed.dispatch=function(){var a=b[t];if(a){var d=b.spatialCoordinates;g.s.min(d,d,a.upper);g.s.max(d,d,a.lower)}c()};a[m]=!0}}function p(a){d(a,function(a){a=a.displayState;a.segmentColorHash instanceof k.a||(a.segmentColorHash= +k.a.from(a.segmentColorHash))})}function n(a,b){var c=a.display.onResize;a.display.onResize=function(){if(b.dedebounceUpdates){this.scheduleRedraw();for(var a=$jscomp.makeIterator(this.panels),d=a.next();!d.done;d=a.next())d.value.onResize()}else c.call(this)}}function d(a,c){b(a,c);var d=a.layerManager;d.registerDisposer(d.layersChanged.add(function(){b(a,c)}))}function b(a,b){a.layerManager.managedLayers.map(function(a){return a.layer}).filter(function(a){return!!a}).filter(function(a){return a instanceof +l.SegmentationUserLayer}).map(function(a){return a}).forEach(function(a){b(a)})}function c(a,b){$jscomp.initSymbol();var c=Symbol("customEvent");a.addEventListener("wheel",function(a){if(!a[c]&&b.zoomWithoutCtrl){a.stopImmediatePropagation();a.stopPropagation();a.preventDefault();var d=new Proxy(a,{get:function(a,b){if("ctrlKey"===b)return!a[b];b=a[b];return"function"===typeof b?b.bind(a):b}});d=new WheelEvent(a.type,d);d[c]=!0;a.target.dispatchEvent(d)}},!0)}function e(a,b){a.addEventListener("mousedown", +function(a){b.rightClickWithCtrl&&2===a.button&&!a.ctrlKey&&(a.stopImmediatePropagation(),a.stopPropagation(),a.preventDefault())},!0)}f.a=function(a,b){b.restrictUserNavigation&&q(a);b.globals&&b.globals.useCustomSegmentColors&&p(a);b.globals&&b.globals.useNehubaLayout&&(a.inputEventBindings.sliceView.set("at:shift+mousedown0",{action:"nehuba-rotate-via-mouse-drag",stopPropagation:!0}),b.layout&&b.layout.useNehubaPerspective&&a.inputEventBindings.perspectiveView.set("at:shift+mousedown0",{action:"nehuba-translate-via-mouse-drag", +stopPropagation:!0}));b.dedebounceUpdates&&n(a,b)};f.b=function(a,b){c(a,b);e(a,b)};f.e=q;f.d=function(a){a.displayState.segmentSelectionState.set(null);a.displayState.segmentSelectionState.set=function(){}};f.c=function(a){a.displayState.segmentSelectionState.isSelected=function(){return!1}};var g=a(2),l=a(65),k=a(122);$jscomp.initSymbol();var t=Symbol("bbox");$jscomp.initSymbol();var m=Symbol("hooked")},function(h,f,a){h.exports=a(364)},function(h,f,a){f.isObject=function(a){return null!=a&&"object"=== +typeof a}},function(h,f,a){var q=this&&this.__extends||function(a,f){function d(){this.constructor=a}for(var b in f)f.hasOwnProperty(b)&&(a[b]=f[b]);a.prototype=null===f?Object.create(f):(d.prototype=f.prototype,new d)};h=function(a){function f(d){a.call(this);this.errors=d;d=Error.call(this,d?d.length+" errors occurred during unsubscription:\n "+d.map(function(a,c){return c+1+") "+a.toString()}).join("\n "):"");this.name=d.name="UnsubscriptionError";this.stack=d.stack;this.message=d.message}q(f, +a);return f}(Error);f.UnsubscriptionError=h},function(h,f,a){f.empty={closed:!0,next:function(a){},error:function(a){throw a;},complete:function(){}}},function(h,f,a){var q=this&&this.__extends||function(a,f){function d(){this.constructor=a}for(var b in f)f.hasOwnProperty(b)&&(a[b]=f[b]);a.prototype=null===f?Object.create(f):(d.prototype=f.prototype,new d)};h=function(a){function f(d,b){a.call(this);this.subject=d;this.subscriber=b;this.closed=!1}q(f,a);f.prototype.unsubscribe=function(){if(!this.closed){this.closed= +!0;var a=this.subject,b=a.observers;this.subject=null;!b||0===b.length||a.isStopped||a.closed||(a=b.indexOf(this.subscriber),-1!==a&&b.splice(a,1))}};return f}(a(11).Subscription);f.SubjectSubscription=h},function(h,f,a){f.isArrayLike=function(a){return a&&"number"===typeof a.length}},function(h,f,a){f.isPromise=function(a){return a&&"function"!==typeof a.subscribe&&"function"===typeof a.then}},function(h,f,a){var q=this&&this.__extends||function(a,b){function c(){this.constructor=a}for(var d in b)b.hasOwnProperty(d)&& +(a[d]=b[d]);a.prototype=null===b?Object.create(b):(c.prototype=b.prototype,new c)},p=a(36),n=a(199),d=a(200),b=a(202),c=a(387),e=a(38),g=a(388),l=a(68),k=a(0),t=a(127),m=a(87);h=function(a){function f(b,c){a.call(this,null);this.ish=b;this.scheduler=c}q(f,a);f.create=function(a,h){if(null!=a){if("function"===typeof a[m.observable])return a instanceof k.Observable&&!h?a:new f(a,h);if(p.isArray(a))return new e.ArrayObservable(a,h);if(d.isPromise(a))return new b.PromiseObservable(a,h);if("function"=== +typeof a[l.iterator]||"string"===typeof a)return new c.IteratorObservable(a,h);if(n.isArrayLike(a))return new g.ArrayLikeObservable(a,h)}throw new TypeError((null!==a&&typeof a||a)+" is not observable");};f.prototype._subscribe=function(a){var b=this.ish,c=this.scheduler;return null==c?b[m.observable]().subscribe(a):b[m.observable]().subscribe(new t.ObserveOnSubscriber(a,c,0))};return f}(k.Observable);f.FromObservable=h},function(h,f,a){function q(a){var b=a.value;a=a.subscriber;a.closed||(a.next(b), +a.complete())}function p(a){var b=a.err;a=a.subscriber;a.closed||a.error(b)}var n=this&&this.__extends||function(a,c){function b(){this.constructor=a}for(var d in c)c.hasOwnProperty(d)&&(a[d]=c[d]);a.prototype=null===c?Object.create(c):(b.prototype=c.prototype,new b)},d=a(16);h=function(a){function b(b,c){a.call(this);this.promise=b;this.scheduler=c}n(b,a);b.create=function(a,c){return new b(a,c)};b.prototype._subscribe=function(a){var b=this,c=this.promise,e=this.scheduler;if(null==e)this._isScalar? +a.closed||(a.next(this.value),a.complete()):c.then(function(c){b.value=c;b._isScalar=!0;a.closed||(a.next(c),a.complete())},function(b){a.closed||a.error(b)}).then(null,function(a){d.root.setTimeout(function(){throw a;})});else if(this._isScalar){if(!a.closed)return e.schedule(q,0,{value:this.value,subscriber:a})}else c.then(function(c){b.value=c;b._isScalar=!0;a.closed||a.add(e.schedule(q,0,{value:c,subscriber:a}))},function(b){a.closed||a.add(e.schedule(p,0,{err:b,subscriber:a}))}).then(null,function(a){d.root.setTimeout(function(){throw a; })})};return b}(a(0).Observable);f.PromiseObservable=h},function(h,f,a){function q(){for(var a=[],e=0;e<arguments.length;e++)a[e-0]=arguments[e];e=Number.POSITIVE_INFINITY;var g=null,l=a[a.length-1];b.isScheduler(l)?(g=a.pop(),1<a.length&&"number"===typeof a[a.length-1]&&(e=a.pop())):"number"===typeof l&&(e=a.pop());return null===g&&1===a.length&&a[0]instanceof p.Observable?a[0]:(new n.ArrayObservable(a,g)).lift(new d.MergeAllOperator(e))}var p=a(0),n=a(38),d=a(90),b=a(37);f.merge=function(){for(var a= [],b=0;b<arguments.length;b++)a[b-0]=arguments[b];return this.lift.call(q.apply(void 0,[this].concat(a)))};f.mergeStatic=q},function(h,f,a){function q(){for(var a=[],b=0;b<arguments.length;b++)a[b-0]=arguments[b];if(1===a.length)if(n.isArray(a[0]))a=a[0];else return a[0];return(new d.ArrayObservable(a)).lift(new c)}var p=this&&this.__extends||function(a,b){function c(){this.constructor=a}for(var d in b)b.hasOwnProperty(d)&&(a[d]=b[d]);a.prototype=null===b?Object.create(b):(c.prototype=b.prototype, new c)},n=a(36),d=a(38);h=a(5);var b=a(6);f.race=function(){for(var a=[],b=0;b<arguments.length;b++)a[b-0]=arguments[b];1===a.length&&n.isArray(a[0])&&(a=a[0]);return this.lift.call(q.apply(void 0,[this].concat(a)))};f.raceStatic=q;var c=function(){function a(){}a.prototype.call=function(a,b){return b.subscribe(new e(a))};return a}();f.RaceOperator=c;var e=function(a){function c(b){a.call(this,b);this.hasFirst=!1;this.observables=[];this.subscriptions=[]}p(c,a);c.prototype._next=function(a){this.observables.push(a)}; @@ -1749,8 +1749,8 @@ typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumera b);if(void 0===d){if(a=Object.getPrototypeOf(a),null!==a)return E(a,b,c)}else{if("value"in d)return d.value;b=d.get;return void 0===b?void 0:b.call(c)}};a(171);a(172);var x=function(a){function e(a,f){q(this,e);var h=p(this,(e.__proto__||Object.getPrototypeOf(e)).call(this,a,f));h.opacity=Object(g.a)(.5);h.lineWidth=Object(l.a)(10);h.color=Object(k.a)(t.s.fromValues(1,1,1));h.opacity.restoreState(f.opacity);h.lineWidth.restoreState(f.linewidth);h.color.restoreState(f.color);h.lineWidth.changed.add(function(){h.specificationChanged.dispatch()}); h.color.changed.add(function(){h.specificationChanged.dispatch()});h.vectorGraphicsLayerType=Object(m.m)(f.type,b.b);f=h.vectorGraphicsPath=Object(m.y)(f.source);var r=0;void 0!==f&&(++r,h.vectorGraphicsLayerType===b.b.LINE&&d(a.dataSourceProvider,a.chunkManager,f).then(function(a){h.wasDisposed||(a=h.renderLayer=new c.a(a,{opacity:h.opacity,lineWidth:h.lineWidth,color:h.color,sourceOptions:{}}),h.addRenderLayer(a),0===--r&&(h.isReady=!0))}));h.tabs.add("rendering",{label:"Rendering",order:-100,getter:function(){return new A(h)}}); h.tabs.default="rendering";return h}n(e,a);w(e,[{key:"toJSON",value:function(){var a=y(e.prototype.__proto__||Object.getPrototypeOf(e.prototype),"toJSON",this).call(this);a.type=this.getLayerType();a.source=this.vectorGraphicsPath;a.opacity=this.opacity.toJSON();a.linewidth=this.lineWidth.toJSON();a.color=this.color.toJSON();return a}},{key:"getLayerType",value:function(){return b.b[this.vectorGraphicsLayerType].toLowerCase()}}]);return e}(h.i),A=function(a){function b(a){q(this,b);var c=p(this,(b.__proto__|| -Object.getPrototypeOf(b)).call(this));c.layer=a;c.opacityWidget=c.registerDisposer(new r.a(c.layer.opacity));c.lineWidthWidget=c.registerDisposer(new r.a(c.layer.lineWidth,{min:0,max:50,step:1}));c.colorWidget=c.registerDisposer(new z(c.layer.color));a=c.element;a.classList.add("image-dropdown");var d=c.opacityWidget,e=c.lineWidthWidget,g=c.colorWidget,k=document.createElement("div");k.className="image-dropdown-top-row";d.promptElement.textContent="Opacity";e.promptElement.textContent="Line Width"; -g.promptElement.textContent="Color";d=document.createElement("div");d.style.flex="1";e=document.createElement("a");g=document.createElement("button");g.type="button";g.textContent="?";g.className="help-link";e.appendChild(g);e.title="Documentation on vector graphics layer rendering";e.target="_blank";e.href="https://github.com/google/neuroglancer/blob/master/src/neuroglancer/sliceview/vectorgraphics_layer_rendering.md";k.appendChild(d);k.appendChild(e);a.appendChild(k);a.appendChild(c.opacityWidget.element); +Object.getPrototypeOf(b)).call(this));c.layer=a;c.opacityWidget=c.registerDisposer(new r.a(c.layer.opacity));c.lineWidthWidget=c.registerDisposer(new r.a(c.layer.lineWidth,{min:0,max:50,step:1}));c.colorWidget=c.registerDisposer(new z(c.layer.color));a=c.element;a.classList.add("image-dropdown");var d=c.opacityWidget,e=c.lineWidthWidget,g=c.colorWidget,f=document.createElement("div");f.className="image-dropdown-top-row";d.promptElement.textContent="Opacity";e.promptElement.textContent="Line Width"; +g.promptElement.textContent="Color";d=document.createElement("div");d.style.flex="1";e=document.createElement("a");g=document.createElement("button");g.type="button";g.textContent="?";g.className="help-link";e.appendChild(g);e.title="Documentation on vector graphics layer rendering";e.target="_blank";e.href="https://github.com/google/neuroglancer/blob/master/src/neuroglancer/sliceview/vectorgraphics_layer_rendering.md";f.appendChild(d);f.appendChild(e);a.appendChild(f);a.appendChild(c.opacityWidget.element); a.appendChild(c.lineWidthWidget.element);a.appendChild(c.colorWidget.element);return c}n(b,a);return b}(u.b),z=function(a){function b(a){q(this,b);return p(this,(b.__proto__||Object.getPrototypeOf(b)).call(this,a))}n(b,a);w(b,[{key:"verifyValue",value:function(a){a=Object(m.n)(a);a/=255;return 0>a?0:1<a?1:a}},{key:"updateInput",value:function(){this.inputx.valueAsNumber=Math.round(255*this.model.value[0]);this.inputy.valueAsNumber=Math.round(255*this.model.value[1]);this.inputz.valueAsNumber=Math.round(255* this.model.value[2])}}]);return b}(v.a);Object(f.e)("line",x)},function(h,f,a){function q(a,b){if(!a)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!b||"object"!==typeof b&&"function"!==typeof b?a:b}function p(a,b){if("function"!==typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}});b&&(Object.setPrototypeOf? Object.setPrototypeOf(a,b):a.__proto__=b)}a.d(f,"a",function(){return m});var n=a(30);h=a(156);var d=a(56),b=a(173),c=a(174),e=a(2),g=a(20),l=function(){function a(a,b){for(var c=0;c<b.length;c++){var d=b[c];d.enumerable=d.enumerable||!1;d.configurable=!0;"value"in d&&(d.writable=!0);Object.defineProperty(a,d.key,d)}}return function(b,c,d){c&&a(b.prototype,c);d&&a(b,d);return b}}(),k=function u(a,b,c){null===a&&(a=Function.prototype);var d=Object.getOwnPropertyDescriptor(a,b);if(void 0===d){if(a= @@ -1759,9 +1759,9 @@ Object.getPrototypeOf(a),null!==a)return u(a,b,c)}else{if("value"in d)return d.v n.registerDisposer(g.a.fromData(a,k,a.ARRAY_BUFFER,a.STATIC_DRAW));return n}p(f,a);l(f,[{key:"getShaderKey",value:function(){return"vectorgraphics.VectorGraphicsLineRenderLayer"}},{key:"defineShader",value:function(a){k(f.prototype.__proto__||Object.getPrototypeOf(f.prototype),"defineShader",this).call(this,a);a.addUniform("highp float","uOpacity");a.addUniform("highp float","ulineWidth");a.addUniform("highp vec3","uColor");a.addVarying("vec3","vNormal");a.addAttribute("highp float","aNormalDirection"); a.addAttribute("highp vec2","aVertexIndex");a.addAttribute("highp vec3","aVertexFirst");a.addAttribute("highp vec3","aVertexSecond");a.addUniform("highp mat4","uProjection");a.setFragmentMain("\nfloat distance = length(vNormal);\n\nfloat antialiasing = 0.5;\n\nif (distance >= 1.0 - antialiasing) {\n emitRGBA(vec4(uColor, (distance - 1.0) / -antialiasing ));\n}\nelse if (distance < 1.0 - antialiasing) {\n emitRGB(uColor);\n}\n");a.setVertexMain("\nvec3 direction = vec3(0., 0., 0.);\ndirection.z = aNormalDirection;\n\nvec3 difference = aVertexSecond - aVertexFirst;\ndifference.z = 0.;\n\nvec3 normal = cross(difference, direction);\nnormal = normalize(normal);\nvNormal = normal;\n\nvec4 delta = vec4(normal * ulineWidth, 0.0);\nvec4 pos = vec4(aVertexFirst * aVertexIndex.x + aVertexSecond * aVertexIndex.y, 1.0);\n\ngl_Position = uProjection * (pos + delta);\n")}}, {key:"beginSlice",value:function(a){k(f.prototype.__proto__||Object.getPrototypeOf(f.prototype),"beginSlice",this).call(this,a);a=this.gl;var b=this.shader;a.uniform1f(b.uniform("uOpacity"),this.opacity.value);a.uniform1f(b.uniform("ulineWidth"),this.lineWidth.value);a.uniform3fv(b.uniform("uColor"),this.color.value);this.vertexIndexBuffer.bindToVertexAttrib(b.attribute("aVertexIndex"),2);this.normalDirectionBuffer.bindToVertexAttrib(b.attribute("aNormalDirection"),1);return b}},{key:"endSlice",value:function(a){var b= -this.gl;b.disableVertexAttribArray(a.attribute("aVertexIndex"));b.disableVertexAttribArray(a.attribute("aNormalDirection"));b.disableVertexAttribArray(a.attribute("aVertexFirst"));b.disableVertexAttribArray(a.attribute("aVertexSecond"))}},{key:"draw",value:function(a){var b=a.visibleLayers.get(this);if(0!==b.length){var c=this.gl,d=this.beginSlice(a);if(void 0===d)console.log("error: shader undefined");else{b=$jscomp.makeIterator(b);for(var g=b.next();!g.done;g=b.next()){g=g.value;var k=g.chunkLayout, -f=g.source,l=f.spec.voxelSize;g=f.chunks;var h=t;e.k.identity(h);f.vectorGraphicsCoordinatesInVoxels&&e.k.scale(h,h,l);e.k.multiply(h,k.transform,h);c.uniformMatrix4fv(d.uniform("uProjection"),!1,e.k.multiply(t,a.dataToDevice,h));if(k=a.visibleChunks.get(k))for(k=$jscomp.makeIterator(k),f=k.next();!f.done;f=k.next())if((f=g.get(f.value))&&f.state===n.d.GPU_MEMORY){l=f.numPoints/2;h=d.attribute("aVertexFirst");f.vertexBuffer.bindToVertexAttrib(h,3,WebGL2RenderingContext.FLOAT,!1,24,0);c.vertexAttribDivisor(h, -1);var m=d.attribute("aVertexSecond");f.vertexBuffer.bindToVertexAttrib(m,3,WebGL2RenderingContext.FLOAT,!1,24,12);c.vertexAttribDivisor(m,1);c.drawArraysInstanced(c.TRIANGLE_STRIP,0,4,l);c.vertexAttribDivisor(h,0);c.vertexAttribDivisor(m,0)}}this.endSlice(d)}}}}]);return f}(h.a)},function(h,f,a){function q(a,b){if(!a)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!b||"object"!==typeof b&&"function"!==typeof b?a:b}function p(a,b){if("function"!==typeof b&& +this.gl;b.disableVertexAttribArray(a.attribute("aVertexIndex"));b.disableVertexAttribArray(a.attribute("aNormalDirection"));b.disableVertexAttribArray(a.attribute("aVertexFirst"));b.disableVertexAttribArray(a.attribute("aVertexSecond"))}},{key:"draw",value:function(a){var b=a.visibleLayers.get(this);if(0!==b.length){var c=this.gl,d=this.beginSlice(a);if(void 0===d)console.log("error: shader undefined");else{b=$jscomp.makeIterator(b);for(var g=b.next();!g.done;g=b.next()){g=g.value;var f=g.chunkLayout, +k=g.source,l=k.spec.voxelSize;g=k.chunks;var h=t;e.k.identity(h);k.vectorGraphicsCoordinatesInVoxels&&e.k.scale(h,h,l);e.k.multiply(h,f.transform,h);c.uniformMatrix4fv(d.uniform("uProjection"),!1,e.k.multiply(t,a.dataToDevice,h));if(f=a.visibleChunks.get(f))for(f=$jscomp.makeIterator(f),k=f.next();!k.done;k=f.next())if((k=g.get(k.value))&&k.state===n.d.GPU_MEMORY){l=k.numPoints/2;h=d.attribute("aVertexFirst");k.vertexBuffer.bindToVertexAttrib(h,3,WebGL2RenderingContext.FLOAT,!1,24,0);c.vertexAttribDivisor(h, +1);var m=d.attribute("aVertexSecond");k.vertexBuffer.bindToVertexAttrib(m,3,WebGL2RenderingContext.FLOAT,!1,24,12);c.vertexAttribDivisor(m,1);c.drawArraysInstanced(c.TRIANGLE_STRIP,0,4,l);c.vertexAttribDivisor(h,0);c.vertexAttribDivisor(m,0)}}this.endSlice(d)}}}}]);return f}(h.a)},function(h,f,a){function q(a,b){if(!a)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!b||"object"!==typeof b&&"function"!==typeof b?a:b}function p(a,b){if("function"!==typeof b&& null!==b)throw new TypeError("Super expression must either be null or a function, not "+typeof b);a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}});b&&(Object.setPrototypeOf?Object.setPrototypeOf(a,b):a.__proto__=b)}a.d(f,"a",function(){return g});h=a(1);var n=a(2),d=a(4),b=a(7),c=function(){function a(a,b){for(var c=0;c<b.length;c++){var d=b[c];d.enumerable=d.enumerable||!1;d.configurable=!0;"value"in d&&(d.writable=!0);Object.defineProperty(a, d.key,d)}}return function(b,c,d){c&&a(b.prototype,c);d&&a(b,d);return b}}(),e=function k(a,b,c){null===a&&(a=Function.prototype);var d=Object.getOwnPropertyDescriptor(a,b);if(void 0===d){if(a=Object.getPrototypeOf(a),null!==a)return k(a,b,c)}else{if("value"in d)return d.value;b=d.get;return void 0===b?void 0:b.call(c)}};a(297);var g=function(a){function g(a){if(!(this instanceof g))throw new TypeError("Cannot call a class as a function");var c=q(this,(g.__proto__||Object.getPrototypeOf(g)).call(this)); c.model=a;c.promptElement=document.createElement("span");c.element=document.createElement("label");c.inputx=document.createElement("input");c.inputy=document.createElement("input");c.inputz=document.createElement("input");c.valueEntered=new b.b;a=c.inputx;var d=c.inputy,e=c.inputz,f=c.element,k=c.promptElement;f.className="vec3-input-row";k.className="vec3-input-label";f.appendChild(k);f.appendChild(a);f.appendChild(d);f.appendChild(e);a.type=d.type=e.type="number";c.updateInput();f=function(){c.model.value= @@ -1810,19 +1810,19 @@ new p.a}n(a,[{key:"reset",value:function(){this.value=this.defaultValue}},{key:" d.enumerable=d.enumerable||!1;d.configurable=!0;"value"in d&&(d.writable=!0);Object.defineProperty(a,d.key,d)}}return function(b,c,d){c&&a(b.prototype,c);d&&a(b,d);return b}}(),c=function(a){function c(a){if(!(this instanceof c))throw new TypeError("Cannot call a class as a function");var b=q(this,(c.__proto__||Object.getPrototypeOf(c)).call(this));b.ref=a;b.element=document.createElement("label");b.selectElement=document.createElement("select");b.registerDisposer(a);a=b.selectElement;b.element.appendChild(a); b.updateView();b.registerEventListener(a,"change",function(){return b.updateModel()});b.registerDisposer(b.ref.changed.add(n()(function(){return b.updateView()},0)));return b}p(c,a);b(c,[{key:"updateModel",value:function(){this.ref.layerName=this.selectElement.value||void 0}},{key:"updateView",value:function(){var a=this.selectElement,b=this.ref,c=b.filter;Object(d.a)(a);var e=document.createElement("option");a.appendChild(e);e=$jscomp.makeIterator(this.ref.layerManager.managedLayers);for(var g=e.next();!g.done;g= e.next()){var f=g.value;c(f)&&(g=document.createElement("option"),f=f.name,g.textContent=f,g.value=f,a.appendChild(g))}a.value=b.layerName||""}}]);return c}(h.a)},function(h,f){},function(h,f,a){Object.defineProperty(f,"__esModule",{value:!0});a.d(f,"getNgPatchableObj",function(){return e});a.d(f,"getNgHash",function(){return g});var q=a(178),p=a(18),n=a(60),d=a(82),b=a(22),c=a(180);a.d(f,"createNehubaViewer",function(){return c.b});a.d(f,"NehubaViewer",function(){return c.a});a.d(f,"layoutEventType", -function(){return c.c});a.d(f,"perspectiveRenderEventType",function(){return c.d});a.d(f,"quat",function(){return c.e});a.d(f,"sliceRenderEventType",function(){return c.f});a.d(f,"vec3",function(){return c.g});a.d(f,"vec4",function(){return c.h});a.d(f,"registerActionListener",function(){return b.c});var e=function(){return{UrlHashBinding:q.a,LayerManager:p.a,SliceViewPanel:n.a,PerspectivePanel:d.b}},g=function(){if(!window.viewer)return null;var a=JSON.stringify(window.viewer.state.toJSON());return"#!"+ -encodeURI(a).replace(/[!'()*;,]/g,function(a){return"%"+a.charCodeAt(0).toString(16).toUpperCase()})}},function(h,f,a){f.c="perspective_view/PerspectiveView";f.a="perspective_view/addLayer";f.b="perspective_view/removeLayer"},function(h,f){},function(h,f,a){function q(a){return a.map(function(a){return{name:a.name,value:a.layer}}).filter(function(a){return!!a.value}).map(function(a){return{name:a.name,userLayer:a.value}})}function p(a){return a.map(function(a){var b=a.layer.userLayer,c=b.getValueAt(a.mouse.position, -a.mouse),d=b.volumePath;d||(d=b.parameters.meshSourceUrl);return{value:0===c?0:c?c:null,layer:{name:a.layer.name,url:d?d:void 0}}})}f.b=function(a,b){return w.create(a,b)};a.d(f,"a",function(){return w});var n=a(14),d=a(107),b=a(65),c=a(313),e=a(359),g=a(193),l=a(121),k=a(180),t=a(122),m=a(123),r=a(363),u=a(194);a.n(u);a(647);var v=function(){function a(a,b){for(var c=0;c<b.length;c++){var d=b[c];d.enumerable=d.enumerable||!1;d.configurable=!0;"value"in d&&(d.writable=!0);Object.defineProperty(a, -d.key,d)}}return function(b,c,d){c&&a(b.prototype,c);d&&a(b,d);return b}}(),w=function(){function a(c,e,f){var l=this;if(!(this instanceof a))throw new TypeError("Cannot call a class as a function");this.errorHandler=f;this.onError=function(a){l.errorHandler&&(a instanceof Error?l.errorHandler(a):l.errorHandler(Error(a)))};this.ngviewer=c;this._config=e;var h=c.navigationState;this.navigationState={position:{inRealSpace:Object(r.a)(h.position,function(a){return k.g.clone(a.spatialCoordinates)}),inVoxels:Object(r.a)(h.position, -function(a){var b=k.g.create();if(a.getVoxelCoordinates(b)){for(a=0;3>a;++a)b[a]=Math.floor(b[a]);return b}return null},{share:!1}).notNull().publishReplay(1).refCount()},orientation:Object(r.a)(h.pose.orientation,function(a){return k.e.clone(a.orientation)}),sliceZoom:Object(r.a)({s:h.zoomFactor,r:h},function(a){return a.value}),perspectiveZoom:Object(r.a)({s:c.perspectiveNavigationState.zoomFactor,r:c.perspectiveNavigationState},function(a){return a.value}),perspectiveOrientation:Object(r.a)(c.perspectiveNavigationState.pose.orientation, -function(a){return k.e.clone(a.orientation)}),full:Object(r.a)(h,function(a){return{position:k.g.clone(a.position.spatialCoordinates),orientation:k.e.clone(a.pose.orientation.orientation),zoom:a.zoomFactor.value}}),get all(){var a=this.perspectiveZoom.combineLatest(this.perspectiveOrientation,function(a,b){return{perspectiveZoom:a,perspectiveOrientation:b}});return this.full.combineLatest(a,function(a,b){return Object.assign({},a,b)}).publishReplay(1).refCount()}};e=Object(r.a)({s:c.mouseState,r:c}, -function(a){return a.active?k.g.clone(a.position):null});this.mousePosition={inRealSpace:e,inVoxels:e.map(function(a){if(a){a=h.pose.position.voxelSize.voxelFromSpatial(k.g.create(),a);for(var b=0;3>b;++b)a[b]=Math.round(a[b])}return a}).publishReplay(1).refCount()};e=c.layerManager;e=Object(r.a)({s:{changed:e.layersChanged,layerManager:e},r:e},function(a){return a.layerManager}).concatMap(function(a){return u.Observable.from(a.managedLayers)});this._createdSegmentationUserLayers=e.map(function(a){return a.layer}).notNull().filter(function(a){return a instanceof +function(){return c.c});a.d(f,"perspectiveRenderEventType",function(){return c.e});a.d(f,"quat",function(){return c.f});a.d(f,"sliceRenderEventType",function(){return c.g});a.d(f,"vec3",function(){return c.h});a.d(f,"vec4",function(){return c.i});a.d(f,"registerActionListener",function(){return b.c});a.d(f,"mat4",function(){return c.d});var e=function(){return{UrlHashBinding:q.a,LayerManager:p.a,SliceViewPanel:n.a,PerspectivePanel:d.b}},g=function(){if(!window.viewer)return null;var a=JSON.stringify(window.viewer.state.toJSON()); +return"#!"+encodeURI(a).replace(/[!'()*;,]/g,function(a){return"%"+a.charCodeAt(0).toString(16).toUpperCase()})}},function(h,f,a){f.c="perspective_view/PerspectiveView";f.a="perspective_view/addLayer";f.b="perspective_view/removeLayer"},function(h,f){},function(h,f,a){function q(a){return a.map(function(a){return{name:a.name,value:a.layer}}).filter(function(a){return!!a.value}).map(function(a){return{name:a.name,userLayer:a.value}})}function p(a){return a.map(function(a){var b=a.layer.userLayer,c= +b.getValueAt(a.mouse.position,a.mouse),d=b.volumePath;d||(d=b.parameters.meshSourceUrl);return{value:0===c?0:c?c:null,layer:{name:a.layer.name,url:d?d:void 0}}})}f.b=function(a,b){return w.create(a,b)};a.d(f,"a",function(){return w});var n=a(14),d=a(107),b=a(65),c=a(313),e=a(359),g=a(193),l=a(121),k=a(180),t=a(122),m=a(123),r=a(363),u=a(194);a.n(u);a(647);var v=function(){function a(a,b){for(var c=0;c<b.length;c++){var d=b[c];d.enumerable=d.enumerable||!1;d.configurable=!0;"value"in d&&(d.writable= +!0);Object.defineProperty(a,d.key,d)}}return function(b,c,d){c&&a(b.prototype,c);d&&a(b,d);return b}}(),w=function(){function a(c,e,f){var l=this;if(!(this instanceof a))throw new TypeError("Cannot call a class as a function");this.errorHandler=f;this.onError=function(a){l.errorHandler&&(a instanceof Error?l.errorHandler(a):l.errorHandler(Error(a)))};this.ngviewer=c;this._config=e;var h=c.navigationState;this.navigationState={position:{inRealSpace:Object(r.a)(h.position,function(a){return k.h.clone(a.spatialCoordinates)}), +inVoxels:Object(r.a)(h.position,function(a){var b=k.h.create();if(a.getVoxelCoordinates(b)){for(a=0;3>a;++a)b[a]=Math.floor(b[a]);return b}return null},{share:!1}).notNull().publishReplay(1).refCount()},orientation:Object(r.a)(h.pose.orientation,function(a){return k.f.clone(a.orientation)}),sliceZoom:Object(r.a)({s:h.zoomFactor,r:h},function(a){return a.value}),perspectiveZoom:Object(r.a)({s:c.perspectiveNavigationState.zoomFactor,r:c.perspectiveNavigationState},function(a){return a.value}),perspectiveOrientation:Object(r.a)(c.perspectiveNavigationState.pose.orientation, +function(a){return k.f.clone(a.orientation)}),full:Object(r.a)(h,function(a){return{position:k.h.clone(a.position.spatialCoordinates),orientation:k.f.clone(a.pose.orientation.orientation),zoom:a.zoomFactor.value}}),get all(){var a=this.perspectiveZoom.combineLatest(this.perspectiveOrientation,function(a,b){return{perspectiveZoom:a,perspectiveOrientation:b}});return this.full.combineLatest(a,function(a,b){return Object.assign({},a,b)}).publishReplay(1).refCount()}};e=Object(r.a)({s:c.mouseState,r:c}, +function(a){return a.active?k.h.clone(a.position):null});this.mousePosition={inRealSpace:e,inVoxels:e.map(function(a){if(a){a=h.pose.position.voxelSize.voxelFromSpatial(k.h.create(),a);for(var b=0;3>b;++b)a[b]=Math.round(a[b])}return a}).publishReplay(1).refCount()};e=c.layerManager;e=Object(r.a)({s:{changed:e.layersChanged,layerManager:e},r:e},function(a){return a.layerManager}).concatMap(function(a){return u.Observable.from(a.managedLayers)});this._createdSegmentationUserLayers=e.map(function(a){return a.layer}).notNull().filter(function(a){return a instanceof b.SegmentationUserLayer}).map(function(a){return a});this.createdSegmentationUserLayers.subscribe(function(a){l.config.disableSegmentSelection&&Object(g.d)(a)});this.createdSegmentationUserLayers.subscribe(function(a){l.config.disableSegmentHighlighting&&Object(g.c)(a)});this.createdSegmentationUserLayers.subscribe(function(a){l.config.enableMeshLoadingControl&&(a=a.displayState,a.visibleSegments instanceof m.b||(a.visibleSegments=new m.b(a.visibleSegments)))});e=e.let(q).filter(function(a){return a.userLayer instanceof b.SegmentationUserLayer}).map(function(a){return{name:a.name,layer:a.userLayer}}).unseen(function(a){return a.layer}).flatMap(function(a){var b=a.name,c=a.layer.volumePath;return Object(r.a)(a.layer.displayState.segmentSelectionState,function(a){return{segment:a.hasSelectedSegment?l.segmentToNumber(a.selectedSegment):null,layer:{name:b,url:c}}})}).publishReplay(1).refCount();f=Object(r.a)(c.layerSelectedValues,function(a){return a}).concatMap(function(a){return u.Observable.from(a.layerManager.managedLayers).filter(function(a){return a.visible}).let(q).map(function(b){return{mouse:a.mouseState, layer:b}})});c=f.filter(function(a){return a.layer.userLayer instanceof d.ImageUserLayer}).let(p).map(function(a){return Object.assign({},a,{layer:Object.assign({},a.layer,{url:a.layer.url})})});f=f.let(p);this.mouseOver={segment:e,image:c,layer:f}}v(a,[{key:"addMouseOverSegmentCallback",value:function(a){var b=this.mouseOver.segment.subscribe(function(b){return a(b.segment,b.layer)},this.onError);return function(){return b.unsubscribe()}}},{key:"addMouseEnterSegmentCallback",value:function(a){var b= this.mouseOver.segment.filter(function(a){return null!==a.segment}).subscribe(function(b){return a(b.segment,b.layer)},this.onError);return function(){return b.unsubscribe()}}},{key:"addMouseLeaveSegmentsCallback",value:function(a){var b=this.mouseOver.segment.filter(function(a){return null===a.segment}).subscribe(function(){return a()},this.onError);return function(){return b.unsubscribe()}}},{key:"addNavigationStateCallbackInRealSpaceCoordinates",value:function(a){var b=this.navigationState.position.inRealSpace.subscribe(function(b){return a(b)}, this.onError);return function(){return b.unsubscribe()}}},{key:"addNavigationStateCallbackInVoxelCoordinates",value:function(a){var b=this.navigationState.position.inVoxels.subscribe(function(b){return a(b)},this.onError);return function(){return b.unsubscribe()}}},{key:"addMousePositionCallbackInRealSpaceCoordinates",value:function(a){var b=this.mousePosition.inRealSpace.subscribe(function(b){return a(b)},this.onError);return function(){return b.unsubscribe()}}},{key:"addMousePositionCallbackInVoxelCoordinates", -value:function(a){var b=this.mousePosition.inVoxels.subscribe(function(b){return a(b)},this.onError);return function(){return b.unsubscribe()}}},{key:"setPosition",value:function(a,b){var c=this.ngviewer.navigationState.pose.position;b?(k.g.copy(c.spatialCoordinates,a),c.markSpatialCoordinatesChanged()):c.setVoxelCoordinates(a)}},{key:"showSegment",value:function(a,b){this.getSingleSegmentation(b).displayState.visibleSegments.add(new n.a(a))}},{key:"hideSegment",value:function(a,b){this.getSingleSegmentation(b).displayState.visibleSegments.delete(new n.a(a))}}, +value:function(a){var b=this.mousePosition.inVoxels.subscribe(function(b){return a(b)},this.onError);return function(){return b.unsubscribe()}}},{key:"setPosition",value:function(a,b){var c=this.ngviewer.navigationState.pose.position;b?(k.h.copy(c.spatialCoordinates,a),c.markSpatialCoordinatesChanged()):c.setVoxelCoordinates(a)}},{key:"showSegment",value:function(a,b){this.getSingleSegmentation(b).displayState.visibleSegments.add(new n.a(a))}},{key:"hideSegment",value:function(a,b){this.getSingleSegmentation(b).displayState.visibleSegments.delete(new n.a(a))}}, {key:"getShownSegmentsNow",value:function(a){return Array.from(this.getSingleSegmentation(a).displayState.visibleSegments,this.segmentToNumber)}},{key:"getShownSegmentsObservable",value:function(a){var b=this;a=this.getSingleSegmentation(a);return Object(r.a)({s:a.displayState.visibleSegments,r:a},function(a){return Array.from(a,b.segmentToNumber)})}},{key:"setSegmentColor",value:function(a,b,c){this.checkRGB(b);this.getSingleSegmentationColors(c).setSegmentColor(a,b.red,b.green,b.blue)}},{key:"unsetSegmentColor", value:function(a,b){this.getSingleSegmentationColors(b).unsetSegmentColor(a)}},{key:"clearCustomSegmentColors",value:function(a){this.getSingleSegmentationColors(a).clearCustomSegmentColors()}},{key:"batchAddAndUpdateSegmentColors",value:function(a,b){this.getSingleSegmentationColors(b).batchUpdate(a)}},{key:"setMeshesToLoad",value:function(a,b){b=this.getSingleSegmentation(b).displayState.visibleSegments;b instanceof m.b?b.setMeshesToLoad(a):this.throwError("visibleSegments property is not wrapped by nehuba. Maybe mesh loading control is not enabled in config (enableMeshLoadingControl?: boolean) ")}}, {key:"relayout",value:function(){this.ngviewer.layout.container.component.changed.dispatch()}},{key:"redraw",value:function(){this.ngviewer.display.scheduleRedraw()}},{key:"dispose",value:function(){this.ngviewer.dispose();this.ngviewer.display.container[l.b]=void 0}},{key:"applyInitialNgState",value:function(){a.restoreInitialState(this.ngviewer,this.config)}},{key:"hideNeuroglancerUI",value:function(){this.ngviewer.uiConfiguration.showUIControls.value=!1}},{key:"showNeuroglancerUI",value:function(){this.ngviewer.uiConfiguration.showUIControls.value= @@ -2257,10 +2257,10 @@ function(a){for(var b=[],c=1;c<arguments.length;c++)b[c-1]=arguments[c];c=functi d));return d};a.instance=this;return a};a.prototype.createPostMessageSetImmediate=function(){var a=this.root,b="setImmediate$"+a.Math.random()+"$",c=function g(c){var d=g.instance;c.source===a&&"string"===typeof c.data&&0===c.data.indexOf(b)&&d.runIfPresent(+c.data.slice(b.length))};c.instance=this;a.addEventListener("message",c,!1);c=function l(){var a=l,b=a.messagePrefix;a=a.instance;var c=a.addFromSetImmediateArguments(arguments);a.root.postMessage(b+c,"*");return c};c.instance=this;c.messagePrefix= b;return c};a.prototype.runIfPresent=function(a){if(this.currentlyRunningATask)this.root.setTimeout(this.partiallyApplied(this.runIfPresent,a),0);else{var b=this.tasksByHandle[a];if(b){this.currentlyRunningATask=!0;try{b()}finally{this.clearImmediate(a),this.currentlyRunningATask=!1}}}};a.prototype.createMessageChannelSetImmediate=function(){var a=this,b=new this.root.MessageChannel;b.port1.onmessage=function(b){a.runIfPresent(b.data)};var c=function g(){var a=g,b=a.channel;a=a.instance.addFromSetImmediateArguments(arguments); b.port2.postMessage(a);return a};c.channel=b;c.instance=this;return c};a.prototype.createReadyStateChangeSetImmediate=function(){var a=function c(){var a=c.instance,d=a.root.document,f=d.documentElement,h=a.addFromSetImmediateArguments(arguments),n=d.createElement("script");n.onreadystatechange=function(){a.runIfPresent(h);n.onreadystatechange=null;f.removeChild(n);n=null};f.appendChild(n);return h};a.instance=this;return a};a.prototype.createSetTimeoutSetImmediate=function(){var a=function c(){var a= -c.instance,d=a.addFromSetImmediateArguments(arguments);a.root.setTimeout(a.partiallyApplied(a.runIfPresent,d),0);return d};a.instance=this;return a};return a}();f.ImmediateDefinition=p;f.Immediate=new p(h.root)}).call(f,a(217).clearImmediate,a(217).setImmediate)},function(h,f,a){(function(a,f){(function(a,d){function b(a){delete q[a]}function c(a){if(v)setTimeout(c,0,a);else{var e=q[a];if(e){v=!0;try{var f=e.callback,g=e.args;switch(g.length){case 0:f();break;case 1:f(g[0]);break;case 2:f(g[0],g[1]); +c.instance,d=a.addFromSetImmediateArguments(arguments);a.root.setTimeout(a.partiallyApplied(a.runIfPresent,d),0);return d};a.instance=this;return a};return a}();f.ImmediateDefinition=p;f.Immediate=new p(h.root)}).call(f,a(217).clearImmediate,a(217).setImmediate)},function(h,f,a){(function(a,f){(function(a,d){function b(a){delete p[a]}function c(a){if(v)setTimeout(c,0,a);else{var e=p[a];if(e){v=!0;try{var f=e.callback,g=e.args;switch(g.length){case 0:f();break;case 1:f(g[0]);break;case 2:f(g[0],g[1]); break;case 3:f(g[0],g[1],g[2]);break;default:f.apply(d,g)}}finally{b(a),v=!1}}}}function e(){y=function(a){f.nextTick(function(){c(a)})}}function g(){if(a.postMessage&&!a.importScripts){var b=!0,c=a.onmessage;a.onmessage=function(){b=!1};a.postMessage("","*");a.onmessage=c;return b}}function h(){var b="setImmediate$"+Math.random()+"$",d=function(d){d.source===a&&"string"===typeof d.data&&0===d.data.indexOf(b)&&c(+d.data.slice(b.length))};a.addEventListener?a.addEventListener("message",d,!1):a.attachEvent("onmessage", -d);y=function(c){a.postMessage(b+c,"*")}}function k(){var a=new MessageChannel;a.port1.onmessage=function(a){c(a.data)};y=function(b){a.port2.postMessage(b)}}function n(){var a=w.documentElement;y=function(b){var d=w.createElement("script");d.onreadystatechange=function(){c(b);d.onreadystatechange=null;a.removeChild(d);d=null};a.appendChild(d)}}function m(){y=function(a){setTimeout(c,0,a)}}if(!a.setImmediate){var p=1,q={},v=!1,w=a.document,y,x=Object.getPrototypeOf&&Object.getPrototypeOf(a);x=x&& -x.setTimeout?x:a;"[object process]"==={}.toString.call(a.process)?e():g()?h():a.MessageChannel?k():w&&"onreadystatechange"in w.createElement("script")?n():m();x.setImmediate=function(a){"function"!==typeof a&&(a=new Function(""+a));for(var b=Array(arguments.length-1),c=0;c<b.length;c++)b[c]=arguments[c+1];q[p]={callback:a,args:b};y(p);return p++};x.clearImmediate=b}})("undefined"===typeof self?"undefined"===typeof a?this:a:self)}).call(f,a(74),a(596))},function(h,f){function a(){throw Error("setTimeout has not been defined"); +d);y=function(c){a.postMessage(b+c,"*")}}function k(){var a=new MessageChannel;a.port1.onmessage=function(a){c(a.data)};y=function(b){a.port2.postMessage(b)}}function n(){var a=w.documentElement;y=function(b){var d=w.createElement("script");d.onreadystatechange=function(){c(b);d.onreadystatechange=null;a.removeChild(d);d=null};a.appendChild(d)}}function m(){y=function(a){setTimeout(c,0,a)}}if(!a.setImmediate){var q=1,p={},v=!1,w=a.document,y,x=Object.getPrototypeOf&&Object.getPrototypeOf(a);x=x&& +x.setTimeout?x:a;"[object process]"==={}.toString.call(a.process)?e():g()?h():a.MessageChannel?k():w&&"onreadystatechange"in w.createElement("script")?n():m();x.setImmediate=function(a){"function"!==typeof a&&(a=new Function(""+a));for(var b=Array(arguments.length-1),c=0;c<b.length;c++)b[c]=arguments[c+1];p[q]={callback:a,args:b};y(q);return q++};x.clearImmediate=b}})("undefined"===typeof self?"undefined"===typeof a?this:a:self)}).call(f,a(74),a(596))},function(h,f){function a(){throw Error("setTimeout has not been defined"); }function q(){throw Error("clearTimeout has not been defined");}function p(b){if(g===setTimeout)return setTimeout(b,0);if((g===a||!g)&&setTimeout)return g=setTimeout,setTimeout(b,0);try{return g(b,0)}catch(v){try{return g.call(null,b,0)}catch(w){return g.call(this,b,0)}}}function n(a){if(l===clearTimeout)return clearTimeout(a);if((l===q||!l)&&clearTimeout)return l=clearTimeout,clearTimeout(a);try{return l(a)}catch(v){try{return l.call(null,a)}catch(w){return l.call(this,a)}}}function d(){t&&m&&(t= !1,m.length?k=m.concat(k):r=-1,k.length&&b())}function b(){if(!t){var a=p(d);t=!0;for(var b=k.length;b;){m=k;for(k=[];++r<b;)m&&m[r].run();r=-1;b=k.length}m=null;t=!1;n(a)}}function c(a,b){this.fun=a;this.array=b}function e(){}h=h.exports={};try{var g="function"===typeof setTimeout?setTimeout:a}catch(u){g=a}try{var l="function"===typeof clearTimeout?clearTimeout:q}catch(u){l=q}var k=[],t=!1,m,r=-1;h.nextTick=function(a){var d=Array(arguments.length-1);if(1<arguments.length)for(var e=1;e<arguments.length;e++)d[e- 1]=arguments[e];k.push(new c(a,d));1!==k.length||t||p(b)};c.prototype.run=function(){this.fun.apply(null,this.array)};h.title="browser";h.browser=!0;h.env={};h.argv=[];h.version="";h.versions={};h.on=e;h.addListener=e;h.once=e;h.off=e;h.removeListener=e;h.removeAllListeners=e;h.emit=e;h.prependListener=e;h.prependOnceListener=e;h.listeners=function(a){return[]};h.binding=function(a){throw Error("process.binding is not supported");};h.cwd=function(){return"/"};h.chdir=function(a){throw Error("process.chdir is not supported");