@cornerstonejs/core 1.30.1 → 1.32.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/RenderingEngine/StackViewport.js +1 -0
- package/dist/cjs/RenderingEngine/StackViewport.js.map +1 -1
- package/dist/cjs/RenderingEngine/VideoViewport.d.ts +15 -2
- package/dist/cjs/RenderingEngine/VideoViewport.js +97 -33
- package/dist/cjs/RenderingEngine/VideoViewport.js.map +1 -1
- package/dist/cjs/RenderingEngine/Viewport.js +1 -1
- package/dist/cjs/RenderingEngine/Viewport.js.map +1 -1
- package/dist/cjs/enums/RequestType.d.ts +2 -1
- package/dist/cjs/enums/RequestType.js +1 -0
- package/dist/cjs/enums/RequestType.js.map +1 -1
- package/dist/cjs/index.d.ts +2 -2
- package/dist/cjs/index.js +2 -1
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/init.d.ts +2 -1
- package/dist/cjs/init.js +16 -1
- package/dist/cjs/init.js.map +1 -1
- package/dist/cjs/requestPool/requestPoolManager.d.ts +1 -2
- package/dist/cjs/requestPool/requestPoolManager.js +8 -10
- package/dist/cjs/requestPool/requestPoolManager.js.map +1 -1
- package/dist/cjs/types/IVideoViewport.d.ts +6 -1
- package/dist/cjs/utilities/getViewportsWithImageURI.js +6 -5
- package/dist/cjs/utilities/getViewportsWithImageURI.js.map +1 -1
- package/dist/cjs/webWorkerManager/webWorkerManager.d.ts +21 -0
- package/dist/cjs/webWorkerManager/webWorkerManager.js +167 -0
- package/dist/cjs/webWorkerManager/webWorkerManager.js.map +1 -0
- package/dist/esm/RenderingEngine/StackViewport.js +1 -0
- package/dist/esm/RenderingEngine/StackViewport.js.map +1 -1
- package/dist/esm/RenderingEngine/VideoViewport.js +97 -33
- package/dist/esm/RenderingEngine/VideoViewport.js.map +1 -1
- package/dist/esm/RenderingEngine/Viewport.js +1 -1
- package/dist/esm/RenderingEngine/Viewport.js.map +1 -1
- package/dist/esm/enums/RequestType.js +1 -0
- package/dist/esm/enums/RequestType.js.map +1 -1
- package/dist/esm/index.js +2 -2
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/init.js +12 -1
- package/dist/esm/init.js.map +1 -1
- package/dist/esm/requestPool/requestPoolManager.js +8 -10
- package/dist/esm/requestPool/requestPoolManager.js.map +1 -1
- package/dist/esm/utilities/getViewportsWithImageURI.js +6 -5
- package/dist/esm/utilities/getViewportsWithImageURI.js.map +1 -1
- package/dist/esm/webWorkerManager/webWorkerManager.js +132 -0
- package/dist/esm/webWorkerManager/webWorkerManager.js.map +1 -0
- package/dist/types/RenderingEngine/StackViewport.d.ts.map +1 -1
- package/dist/types/RenderingEngine/VideoViewport.d.ts +15 -2
- package/dist/types/RenderingEngine/VideoViewport.d.ts.map +1 -1
- package/dist/types/enums/RequestType.d.ts +2 -1
- package/dist/types/enums/RequestType.d.ts.map +1 -1
- package/dist/types/index.d.ts +2 -2
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/init.d.ts +2 -1
- package/dist/types/init.d.ts.map +1 -1
- package/dist/types/requestPool/requestPoolManager.d.ts +1 -2
- package/dist/types/requestPool/requestPoolManager.d.ts.map +1 -1
- package/dist/types/types/IVideoViewport.d.ts +6 -1
- package/dist/types/types/IVideoViewport.d.ts.map +1 -1
- package/dist/types/utilities/getViewportsWithImageURI.d.ts.map +1 -1
- package/dist/types/webWorkerManager/webWorkerManager.d.ts +22 -0
- package/dist/types/webWorkerManager/webWorkerManager.d.ts.map +1 -0
- package/dist/umd/index.js +1 -2
- package/dist/umd/index.js.map +1 -1
- package/package.json +3 -2
- package/src/RenderingEngine/StackViewport.ts +1 -0
- package/src/RenderingEngine/VideoViewport.ts +146 -28
- package/src/RenderingEngine/Viewport.ts +1 -1
- package/src/enums/RequestType.ts +3 -1
- package/src/index.ts +2 -0
- package/src/init.ts +18 -0
- package/src/requestPool/requestPoolManager.ts +9 -13
- package/src/types/IVideoViewport.ts +44 -4
- package/src/utilities/getViewportsWithImageURI.ts +6 -13
- package/src/webWorkerManager/webWorkerManager.js +218 -0
- package/dist/umd/index.js.LICENSE.txt +0 -1
package/dist/umd/index.js
CHANGED
|
@@ -1,3 +1,2 @@
|
|
|
1
|
-
/*! For license information please see index.js.LICENSE.txt */
|
|
2
|
-
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("detect-gpu"),require("@kitware/vtk.js/Rendering/Core/VolumeMapper/Constants"),require("@kitware/vtk.js/Rendering/Core/ColorTransferFunction"),require("@kitware/vtk.js/Rendering/Core/ColorTransferFunction/ColorMaps"),require("@kitware/vtk.js/Common/DataModel/PiecewiseFunction"),require("@kitware/vtk.js/macros"),require("@kitware/vtk.js/Rendering/Core/Camera"),require("@kitware/vtk.js/Common/Core/Math"),require("gl-matrix"),require("@kitware/vtk.js/Rendering/Profiles/Volume"),require("@kitware/vtk.js/Common/DataModel/ImageData"),require("@kitware/vtk.js/Common/Core/DataArray"),require("lodash.clonedeep"),require("@kitware/vtk.js/Rendering/OpenGL/Texture"),require("@kitware/vtk.js/Common/Core/HalfFloat"),require("@kitware/vtk.js/Common/Core/MatrixBuilder"),require("@kitware/vtk.js/Rendering/Core/Volume"),require("@kitware/vtk.js/Rendering/Core/VolumeMapper"),require("@kitware/vtk.js/Common/DataModel/Plane"),require("@kitware/vtk.js/Rendering/Core/ImageMapper"),require("@kitware/vtk.js/Rendering/Core/ImageSlice"),require("@kitware/vtk.js/Rendering/Core/Renderer"),require("@kitware/vtk.js/Rendering/Core/RenderWindow"),require("@kitware/vtk.js/Rendering/Core/RenderWindowInteractor"),require("@kitware/vtk.js/Common/Core/Points"),require("@kitware/vtk.js/Common/DataModel/PolyData"),require("@kitware/vtk.js/Rendering/Core/Actor"),require("@kitware/vtk.js/Rendering/Core/Mapper"),require("@kitware/vtk.js/Rendering/OpenGL/RenderWindow"),require("@kitware/vtk.js/Rendering/OpenGL/Actor"),require("@kitware/vtk.js/Rendering/OpenGL/Actor2D"),require("@kitware/vtk.js/Rendering/OpenGL/Camera"),require("@kitware/vtk.js/Rendering/OpenGL/Glyph3DMapper"),require("@kitware/vtk.js/Rendering/OpenGL/ImageMapper"),require("@kitware/vtk.js/Rendering/OpenGL/ImageSlice"),require("@kitware/vtk.js/Rendering/OpenGL/PixelSpaceCallbackMapper"),require("@kitware/vtk.js/Rendering/OpenGL/PolyDataMapper"),require("@kitware/vtk.js/Rendering/OpenGL/Renderer"),require("@kitware/vtk.js/Rendering/OpenGL/Skybox"),require("@kitware/vtk.js/Rendering/OpenGL/SphereMapper"),require("@kitware/vtk.js/Rendering/OpenGL/StickMapper"),require("@kitware/vtk.js/Rendering/OpenGL/Volume"),require("@kitware/vtk.js/Rendering/OpenGL/VolumeMapper"),require("@kitware/vtk.js/Rendering/SceneGraph/ViewNodeFactory"),require("@kitware/vtk.js/Rendering/OpenGL/Texture/Constants"),require("@kitware/vtk.js/Common/Core/DataArray/Constants"),require("@kitware/vtk.js/Rendering/Core/Property/Constants"),require("@kitware/vtk.js/Rendering/Profiles/Geometry")):"function"==typeof define&&define.amd?define(["detect-gpu","@kitware/vtk.js/Rendering/Core/VolumeMapper/Constants","@kitware/vtk.js/Rendering/Core/ColorTransferFunction","@kitware/vtk.js/Rendering/Core/ColorTransferFunction/ColorMaps","@kitware/vtk.js/Common/DataModel/PiecewiseFunction","@kitware/vtk.js/macros","@kitware/vtk.js/Rendering/Core/Camera","@kitware/vtk.js/Common/Core/Math","gl-matrix","@kitware/vtk.js/Rendering/Profiles/Volume","@kitware/vtk.js/Common/DataModel/ImageData","@kitware/vtk.js/Common/Core/DataArray","lodash.clonedeep","@kitware/vtk.js/Rendering/OpenGL/Texture","@kitware/vtk.js/Common/Core/HalfFloat","@kitware/vtk.js/Common/Core/MatrixBuilder","@kitware/vtk.js/Rendering/Core/Volume","@kitware/vtk.js/Rendering/Core/VolumeMapper","@kitware/vtk.js/Common/DataModel/Plane","@kitware/vtk.js/Rendering/Core/ImageMapper","@kitware/vtk.js/Rendering/Core/ImageSlice","@kitware/vtk.js/Rendering/Core/Renderer","@kitware/vtk.js/Rendering/Core/RenderWindow","@kitware/vtk.js/Rendering/Core/RenderWindowInteractor","@kitware/vtk.js/Common/Core/Points","@kitware/vtk.js/Common/DataModel/PolyData","@kitware/vtk.js/Rendering/Core/Actor","@kitware/vtk.js/Rendering/Core/Mapper","@kitware/vtk.js/Rendering/OpenGL/RenderWindow","@kitware/vtk.js/Rendering/OpenGL/Actor","@kitware/vtk.js/Rendering/OpenGL/Actor2D","@kitware/vtk.js/Rendering/OpenGL/Camera","@kitware/vtk.js/Rendering/OpenGL/Glyph3DMapper","@kitware/vtk.js/Rendering/OpenGL/ImageMapper","@kitware/vtk.js/Rendering/OpenGL/ImageSlice","@kitware/vtk.js/Rendering/OpenGL/PixelSpaceCallbackMapper","@kitware/vtk.js/Rendering/OpenGL/PolyDataMapper","@kitware/vtk.js/Rendering/OpenGL/Renderer","@kitware/vtk.js/Rendering/OpenGL/Skybox","@kitware/vtk.js/Rendering/OpenGL/SphereMapper","@kitware/vtk.js/Rendering/OpenGL/StickMapper","@kitware/vtk.js/Rendering/OpenGL/Volume","@kitware/vtk.js/Rendering/OpenGL/VolumeMapper","@kitware/vtk.js/Rendering/SceneGraph/ViewNodeFactory","@kitware/vtk.js/Rendering/OpenGL/Texture/Constants","@kitware/vtk.js/Common/Core/DataArray/Constants","@kitware/vtk.js/Rendering/Core/Property/Constants","@kitware/vtk.js/Rendering/Profiles/Geometry"],t):"object"==typeof exports?exports.cornerstone3D=t(require("detect-gpu"),require("@kitware/vtk.js/Rendering/Core/VolumeMapper/Constants"),require("@kitware/vtk.js/Rendering/Core/ColorTransferFunction"),require("@kitware/vtk.js/Rendering/Core/ColorTransferFunction/ColorMaps"),require("@kitware/vtk.js/Common/DataModel/PiecewiseFunction"),require("@kitware/vtk.js/macros"),require("@kitware/vtk.js/Rendering/Core/Camera"),require("@kitware/vtk.js/Common/Core/Math"),require("gl-matrix"),require("@kitware/vtk.js/Rendering/Profiles/Volume"),require("@kitware/vtk.js/Common/DataModel/ImageData"),require("@kitware/vtk.js/Common/Core/DataArray"),require("lodash.clonedeep"),require("@kitware/vtk.js/Rendering/OpenGL/Texture"),require("@kitware/vtk.js/Common/Core/HalfFloat"),require("@kitware/vtk.js/Common/Core/MatrixBuilder"),require("@kitware/vtk.js/Rendering/Core/Volume"),require("@kitware/vtk.js/Rendering/Core/VolumeMapper"),require("@kitware/vtk.js/Common/DataModel/Plane"),require("@kitware/vtk.js/Rendering/Core/ImageMapper"),require("@kitware/vtk.js/Rendering/Core/ImageSlice"),require("@kitware/vtk.js/Rendering/Core/Renderer"),require("@kitware/vtk.js/Rendering/Core/RenderWindow"),require("@kitware/vtk.js/Rendering/Core/RenderWindowInteractor"),require("@kitware/vtk.js/Common/Core/Points"),require("@kitware/vtk.js/Common/DataModel/PolyData"),require("@kitware/vtk.js/Rendering/Core/Actor"),require("@kitware/vtk.js/Rendering/Core/Mapper"),require("@kitware/vtk.js/Rendering/OpenGL/RenderWindow"),require("@kitware/vtk.js/Rendering/OpenGL/Actor"),require("@kitware/vtk.js/Rendering/OpenGL/Actor2D"),require("@kitware/vtk.js/Rendering/OpenGL/Camera"),require("@kitware/vtk.js/Rendering/OpenGL/Glyph3DMapper"),require("@kitware/vtk.js/Rendering/OpenGL/ImageMapper"),require("@kitware/vtk.js/Rendering/OpenGL/ImageSlice"),require("@kitware/vtk.js/Rendering/OpenGL/PixelSpaceCallbackMapper"),require("@kitware/vtk.js/Rendering/OpenGL/PolyDataMapper"),require("@kitware/vtk.js/Rendering/OpenGL/Renderer"),require("@kitware/vtk.js/Rendering/OpenGL/Skybox"),require("@kitware/vtk.js/Rendering/OpenGL/SphereMapper"),require("@kitware/vtk.js/Rendering/OpenGL/StickMapper"),require("@kitware/vtk.js/Rendering/OpenGL/Volume"),require("@kitware/vtk.js/Rendering/OpenGL/VolumeMapper"),require("@kitware/vtk.js/Rendering/SceneGraph/ViewNodeFactory"),require("@kitware/vtk.js/Rendering/OpenGL/Texture/Constants"),require("@kitware/vtk.js/Common/Core/DataArray/Constants"),require("@kitware/vtk.js/Rendering/Core/Property/Constants"),require("@kitware/vtk.js/Rendering/Profiles/Geometry")):e.cornerstone3D=t(e.window,e["@kitware/vtk.js/Rendering/Core/VolumeMapper/Constants"],e["@kitware/vtk.js/Rendering/Core/ColorTransferFunction"],e["@kitware/vtk.js/Rendering/Core/ColorTransferFunction/ColorMaps"],e["@kitware/vtk.js/Common/DataModel/PiecewiseFunction"],e["@kitware/vtk.js/macros"],e["@kitware/vtk.js/Rendering/Core/Camera"],e["@kitware/vtk.js/Common/Core/Math"],e.window,e["@kitware/vtk.js/Rendering/Profiles/Volume"],e["@kitware/vtk.js/Common/DataModel/ImageData"],e["@kitware/vtk.js/Common/Core/DataArray"],e.window,e["@kitware/vtk.js/Rendering/OpenGL/Texture"],e["@kitware/vtk.js/Common/Core/HalfFloat"],e["@kitware/vtk.js/Common/Core/MatrixBuilder"],e["@kitware/vtk.js/Rendering/Core/Volume"],e["@kitware/vtk.js/Rendering/Core/VolumeMapper"],e["@kitware/vtk.js/Common/DataModel/Plane"],e["@kitware/vtk.js/Rendering/Core/ImageMapper"],e["@kitware/vtk.js/Rendering/Core/ImageSlice"],e["@kitware/vtk.js/Rendering/Core/Renderer"],e["@kitware/vtk.js/Rendering/Core/RenderWindow"],e["@kitware/vtk.js/Rendering/Core/RenderWindowInteractor"],e["@kitware/vtk.js/Common/Core/Points"],e["@kitware/vtk.js/Common/DataModel/PolyData"],e["@kitware/vtk.js/Rendering/Core/Actor"],e["@kitware/vtk.js/Rendering/Core/Mapper"],e["@kitware/vtk.js/Rendering/OpenGL/RenderWindow"],e["@kitware/vtk.js/Rendering/OpenGL/Actor"],e["@kitware/vtk.js/Rendering/OpenGL/Actor2D"],e["@kitware/vtk.js/Rendering/OpenGL/Camera"],e["@kitware/vtk.js/Rendering/OpenGL/Glyph3DMapper"],e["@kitware/vtk.js/Rendering/OpenGL/ImageMapper"],e["@kitware/vtk.js/Rendering/OpenGL/ImageSlice"],e["@kitware/vtk.js/Rendering/OpenGL/PixelSpaceCallbackMapper"],e["@kitware/vtk.js/Rendering/OpenGL/PolyDataMapper"],e["@kitware/vtk.js/Rendering/OpenGL/Renderer"],e["@kitware/vtk.js/Rendering/OpenGL/Skybox"],e["@kitware/vtk.js/Rendering/OpenGL/SphereMapper"],e["@kitware/vtk.js/Rendering/OpenGL/StickMapper"],e["@kitware/vtk.js/Rendering/OpenGL/Volume"],e["@kitware/vtk.js/Rendering/OpenGL/VolumeMapper"],e["@kitware/vtk.js/Rendering/SceneGraph/ViewNodeFactory"],e["@kitware/vtk.js/Rendering/OpenGL/Texture/Constants"],e["@kitware/vtk.js/Common/Core/DataArray/Constants"],e["@kitware/vtk.js/Rendering/Core/Property/Constants"],e["@kitware/vtk.js/Rendering/Profiles/Geometry"])}(self,(function(e,t,r,n,i,a,o,s,u,l,c,d,v,f,p,h,g,m,y,w,I,C,b,E,P,k,R,O,A,T,S,x,D,_,M,V,L,U,j,N,F,G,W,B,q,z,H,K){return function(){var Y={785:function(e){"use strict";e.exports=d},3948:function(e){"use strict";e.exports=z},7903:function(e){"use strict";e.exports=p},8807:function(e){"use strict";e.exports=s},8847:function(e){"use strict";e.exports=h},2348:function(e){"use strict";e.exports=P},7283:function(e){"use strict";e.exports=c},1441:function(e){"use strict";e.exports=i},1864:function(e){"use strict";e.exports=y},2070:function(e){"use strict";e.exports=k},7474:function(e){"use strict";e.exports=R},9821:function(e){"use strict";e.exports=o},4795:function(e){"use strict";e.exports=r},1038:function(e){"use strict";e.exports=n},7896:function(e){"use strict";e.exports=w},9861:function(e){"use strict";e.exports=I},6610:function(e){"use strict";e.exports=O},6478:function(e){"use strict";e.exports=H},2329:function(e){"use strict";e.exports=b},673:function(e){"use strict";e.exports=E},8281:function(e){"use strict";e.exports=C},3739:function(e){"use strict";e.exports=g},6009:function(e){"use strict";e.exports=m},7468:function(e){"use strict";e.exports=t},6643:function(e){"use strict";e.exports=T},1128:function(e){"use strict";e.exports=S},7664:function(e){"use strict";e.exports=x},1474:function(e){"use strict";e.exports=D},2394:function(e){"use strict";e.exports=_},582:function(e){"use strict";e.exports=M},7482:function(e){"use strict";e.exports=V},6343:function(e){"use strict";e.exports=L},8021:function(e){"use strict";e.exports=A},4363:function(e){"use strict";e.exports=U},3982:function(e){"use strict";e.exports=j},6130:function(e){"use strict";e.exports=N},298:function(e){"use strict";e.exports=F},7953:function(e){"use strict";e.exports=f},9395:function(e){"use strict";e.exports=q},2398:function(e){"use strict";e.exports=G},4388:function(e){"use strict";e.exports=W},6914:function(e){"use strict";e.exports=K},6215:function(e){"use strict";e.exports=l},2643:function(e){"use strict";e.exports=B},8197:function(e){"use strict";e.exports=a},9199:function(t){"use strict";t.exports=e},2976:function(e){"use strict";e.exports=u},573:function(e){"use strict";e.exports=v},7609:function(e,t,r){var n=r(7425).default;function i(){"use strict";e.exports=i=function(){return t},e.exports.__esModule=!0,e.exports.default=e.exports;var t={},r=Object.prototype,a=r.hasOwnProperty,o=Object.defineProperty||function(e,t,r){e[t]=r.value},s="function"==typeof Symbol?Symbol:{},u=s.iterator||"@@iterator",l=s.asyncIterator||"@@asyncIterator",c=s.toStringTag||"@@toStringTag";function d(e,t,r){return Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{d({},"")}catch(e){d=function(e,t,r){return e[t]=r}}function v(e,t,r,n){var i=t&&t.prototype instanceof h?t:h,a=Object.create(i.prototype),s=new A(n||[]);return o(a,"_invoke",{value:P(e,r,s)}),a}function f(e,t,r){try{return{type:"normal",arg:e.call(t,r)}}catch(e){return{type:"throw",arg:e}}}t.wrap=v;var p={};function h(){}function g(){}function m(){}var y={};d(y,u,(function(){return this}));var w=Object.getPrototypeOf,I=w&&w(w(T([])));I&&I!==r&&a.call(I,u)&&(y=I);var C=m.prototype=h.prototype=Object.create(y);function b(e){["next","throw","return"].forEach((function(t){d(e,t,(function(e){return this._invoke(t,e)}))}))}function E(e,t){function r(i,o,s,u){var l=f(e[i],e,o);if("throw"!==l.type){var c=l.arg,d=c.value;return d&&"object"==n(d)&&a.call(d,"__await")?t.resolve(d.__await).then((function(e){r("next",e,s,u)}),(function(e){r("throw",e,s,u)})):t.resolve(d).then((function(e){c.value=e,s(c)}),(function(e){return r("throw",e,s,u)}))}u(l.arg)}var i;o(this,"_invoke",{value:function(e,n){function a(){return new t((function(t,i){r(e,n,t,i)}))}return i=i?i.then(a,a):a()}})}function P(e,t,r){var n="suspendedStart";return function(i,a){if("executing"===n)throw new Error("Generator is already running");if("completed"===n){if("throw"===i)throw a;return{value:void 0,done:!0}}for(r.method=i,r.arg=a;;){var o=r.delegate;if(o){var s=k(o,r);if(s){if(s===p)continue;return s}}if("next"===r.method)r.sent=r._sent=r.arg;else if("throw"===r.method){if("suspendedStart"===n)throw n="completed",r.arg;r.dispatchException(r.arg)}else"return"===r.method&&r.abrupt("return",r.arg);n="executing";var u=f(e,t,r);if("normal"===u.type){if(n=r.done?"completed":"suspendedYield",u.arg===p)continue;return{value:u.arg,done:r.done}}"throw"===u.type&&(n="completed",r.method="throw",r.arg=u.arg)}}}function k(e,t){var r=t.method,n=e.iterator[r];if(void 0===n)return t.delegate=null,"throw"===r&&e.iterator.return&&(t.method="return",t.arg=void 0,k(e,t),"throw"===t.method)||"return"!==r&&(t.method="throw",t.arg=new TypeError("The iterator does not provide a '"+r+"' method")),p;var i=f(n,e.iterator,t.arg);if("throw"===i.type)return t.method="throw",t.arg=i.arg,t.delegate=null,p;var a=i.arg;return a?a.done?(t[e.resultName]=a.value,t.next=e.nextLoc,"return"!==t.method&&(t.method="next",t.arg=void 0),t.delegate=null,p):a:(t.method="throw",t.arg=new TypeError("iterator result is not an object"),t.delegate=null,p)}function R(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function O(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function A(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(R,this),this.reset(!0)}function T(e){if(e){var t=e[u];if(t)return t.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var r=-1,n=function t(){for(;++r<e.length;)if(a.call(e,r))return t.value=e[r],t.done=!1,t;return t.value=void 0,t.done=!0,t};return n.next=n}}return{next:S}}function S(){return{value:void 0,done:!0}}return g.prototype=m,o(C,"constructor",{value:m,configurable:!0}),o(m,"constructor",{value:g,configurable:!0}),g.displayName=d(m,c,"GeneratorFunction"),t.isGeneratorFunction=function(e){var t="function"==typeof e&&e.constructor;return!!t&&(t===g||"GeneratorFunction"===(t.displayName||t.name))},t.mark=function(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,m):(e.__proto__=m,d(e,c,"GeneratorFunction")),e.prototype=Object.create(C),e},t.awrap=function(e){return{__await:e}},b(E.prototype),d(E.prototype,l,(function(){return this})),t.AsyncIterator=E,t.async=function(e,r,n,i,a){void 0===a&&(a=Promise);var o=new E(v(e,r,n,i),a);return t.isGeneratorFunction(r)?o:o.next().then((function(e){return e.done?e.value:o.next()}))},b(C),d(C,c,"Generator"),d(C,u,(function(){return this})),d(C,"toString",(function(){return"[object Generator]"})),t.keys=function(e){var t=Object(e),r=[];for(var n in t)r.push(n);return r.reverse(),function e(){for(;r.length;){var n=r.pop();if(n in t)return e.value=n,e.done=!1,e}return e.done=!0,e}},t.values=T,A.prototype={constructor:A,reset:function(e){if(this.prev=0,this.next=0,this.sent=this._sent=void 0,this.done=!1,this.delegate=null,this.method="next",this.arg=void 0,this.tryEntries.forEach(O),!e)for(var t in this)"t"===t.charAt(0)&&a.call(this,t)&&!isNaN(+t.slice(1))&&(this[t]=void 0)},stop:function(){this.done=!0;var e=this.tryEntries[0].completion;if("throw"===e.type)throw e.arg;return this.rval},dispatchException:function(e){if(this.done)throw e;var t=this;function r(r,n){return o.type="throw",o.arg=e,t.next=r,n&&(t.method="next",t.arg=void 0),!!n}for(var n=this.tryEntries.length-1;n>=0;--n){var i=this.tryEntries[n],o=i.completion;if("root"===i.tryLoc)return r("end");if(i.tryLoc<=this.prev){var s=a.call(i,"catchLoc"),u=a.call(i,"finallyLoc");if(s&&u){if(this.prev<i.catchLoc)return r(i.catchLoc,!0);if(this.prev<i.finallyLoc)return r(i.finallyLoc)}else if(s){if(this.prev<i.catchLoc)return r(i.catchLoc,!0)}else{if(!u)throw new Error("try statement without catch or finally");if(this.prev<i.finallyLoc)return r(i.finallyLoc)}}}},abrupt:function(e,t){for(var r=this.tryEntries.length-1;r>=0;--r){var n=this.tryEntries[r];if(n.tryLoc<=this.prev&&a.call(n,"finallyLoc")&&this.prev<n.finallyLoc){var i=n;break}}i&&("break"===e||"continue"===e)&&i.tryLoc<=t&&t<=i.finallyLoc&&(i=null);var o=i?i.completion:{};return o.type=e,o.arg=t,i?(this.method="next",this.next=i.finallyLoc,p):this.complete(o)},complete:function(e,t){if("throw"===e.type)throw e.arg;return"break"===e.type||"continue"===e.type?this.next=e.arg:"return"===e.type?(this.rval=this.arg=e.arg,this.method="return",this.next="end"):"normal"===e.type&&t&&(this.next=t),p},finish:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var r=this.tryEntries[t];if(r.finallyLoc===e)return this.complete(r.completion,r.afterLoc),O(r),p}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var r=this.tryEntries[t];if(r.tryLoc===e){var n=r.completion;if("throw"===n.type){var i=n.arg;O(r)}return i}}throw new Error("illegal catch attempt")},delegateYield:function(e,t,r){return this.delegate={iterator:T(e),resultName:t,nextLoc:r},"next"===this.method&&(this.arg=void 0),p}},t}e.exports=i,e.exports.__esModule=!0,e.exports.default=e.exports},7425:function(e){function t(r){return e.exports=t="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},e.exports.__esModule=!0,e.exports.default=e.exports,t(r)}e.exports=t,e.exports.__esModule=!0,e.exports.default=e.exports},2841:function(e,t,r){var n=r(7609)();e.exports=n;try{regeneratorRuntime=n}catch(e){"object"==typeof globalThis?globalThis.regeneratorRuntime=n:Function("r","regeneratorRuntime = r")(n)}}},Z={};function X(e){var t=Z[e];if(void 0!==t)return t.exports;var r=Z[e]={exports:{}};return Y[e](r,r.exports,X),r.exports}X.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return X.d(t,{a:t}),t},X.d=function(e,t){for(var r in t)X.o(t,r)&&!X.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},X.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},X.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var Q={};return function(){"use strict";X.r(Q),X.d(Q,{BaseVolumeViewport:function(){return ji},CONSTANTS:function(){return r},EVENTS:function(){return p},Enums:function(){return t},ImageVolume:function(){return at},ProgressiveRetrieveImages:function(){return Xa},RenderingEngine:function(){return po},Settings:function(){return Po},StackViewport:function(){return eo},VideoViewport:function(){return so},Viewport:function(){return Oi},VolumeViewport:function(){return Fi},VolumeViewport3D:function(){return ro},addVolumesToViewports:function(){return Ds},cache:function(){return Dn},createVolumeActor:function(){return gr},createVolumeMapper:function(){return Dt},eventTarget:function(){return ot},geometryLoader:function(){return c},getConfiguration:function(){return $e},getEnabledElement:function(){return mo},getEnabledElementByIds:function(){return yo},getEnabledElements:function(){return wo},getOrCreateCanvas:function(){return wr},getRenderingEngine:function(){return Ae},getRenderingEngines:function(){return Te},getShouldUseCPURendering:function(){return Ke},getShouldUseSharedArrayBuffer:function(){return Xe},imageLoadPoolManager:function(){return Ut},imageLoader:function(){return i},imageRetrievalPoolManager:function(){return go},init:function(){return We},isCornerstoneInitialized:function(){return Qe},metaData:function(){return a},registerImageLoader:function(){return Ht},requestPoolManager:function(){return Ut},resetUseCPURendering:function(){return He},resetUseSharedArrayBuffer:function(){return Ze},setConfiguration:function(){return Je},setPreferSizeOverAccuracy:function(){return ze},setUseCPURendering:function(){return qe},setUseSharedArrayBuffer:function(){return Ye},setVolumesForViewports:function(){return As},triggerEvent:function(){return st},utilities:function(){return v},volumeLoader:function(){return n}});var e={};X.r(e),X.d(e,{SpeedUnit:function(){return W}});var t={};X.r(t),X.d(t,{BlendModes:function(){return P},CalibrationTypes:function(){return U},ContourType:function(){return D},DynamicOperatorType:function(){return L},Events:function(){return p},GeometryType:function(){return S},ImageQualityStatus:function(){return G},InterpolationType:function(){return I},MetadataModules:function(){return q},OrientationAxis:function(){return R},RequestType:function(){return g},SharedArrayBufferModes:function(){return A},VOILUTFunctionType:function(){return M},VideoViewport:function(){return e},ViewportStatus:function(){return N},ViewportType:function(){return y}});var r={};X.r(r),X.d(r,{CPU_COLORMAPS:function(){return z},EPSILON:function(){return Y},MPR_CAMERA_VALUES:function(){return J},RENDERING_DEFAULTS:function(){return K},VIEWPORT_PRESETS:function(){return ee}});var n={};X.r(n),X.d(n,{createAndCacheDerivedVolume:function(){return Ct},createAndCacheVolume:function(){return wt},createLocalVolume:function(){return Et},getVolumeLoaderSchemes:function(){return kt},loadVolume:function(){return yt},registerUnknownVolumeLoader:function(){return Rt},registerVolumeLoader:function(){return Pt}});var i={};X.r(i),X.d(i,{cancelLoadAll:function(){return zt},cancelLoadImage:function(){return Bt},cancelLoadImages:function(){return qt},loadAndCacheImage:function(){return Gt},loadAndCacheImages:function(){return Wt},loadImage:function(){return Ft},registerImageLoader:function(){return Ht},registerUnknownImageLoader:function(){return Kt},unregisterAllImageLoaders:function(){return Yt}});var a={};X.r(a),X.d(a,{addProvider:function(){return Xt},get:function(){return Jt},removeAllProviders:function(){return $t},removeProvider:function(){return Qt}});var o={};X.r(o),X.d(o,{toLowHighRange:function(){return tr},toWindowLevel:function(){return er}});var s={};X.r(s),X.d(s,{getColormap:function(){return Kn},getColormapNames:function(){return Yn},registerColormap:function(){return Hn}});var u={};X.r(u),X.d(u,{linePlaneIntersection:function(){return pi},planeDistanceToPoint:function(){return mi},planeEquation:function(){return hi},threePlaneIntersection:function(){return gi}});var l={};X.r(l),X.d(l,{getTransferFunctionNodes:function(){return Mi},setTransferFunctionNodes:function(){return Vi}});var c={};X.r(c),X.d(c,{createAndCacheGeometry:function(){return Mo}});var d={};X.r(d),X.d(d,{MultiTargetEventListenerManager:function(){return jo},TargetEventListeners:function(){return Uo}});var v={};X.r(v),X.d(v,{ProgressiveIterator:function(){return Ua},actorIsA:function(){return Vn},applyPreset:function(){return Qn},calculateViewportsSpatialRegistration:function(){return ms},calibratedPixelSpacingMetadataProvider:function(){return Ho},clamp:function(){return ma},colormap:function(){return s},createFloat32SharedArray:function(){return Zo},createInt16SharedArray:function(){return Qo},createLinearRGBTransferFunction:function(){return Aa},createSigmoidRGBTransferFunction:function(){return Xn},createUint16SharedArray:function(){return Xo},createUint8SharedArray:function(){return Yo},decimate:function(){return ja},deepMerge:function(){return Ve},eventListener:function(){return d},getClosestImageId:function(){return Ln},getClosestStackImageIndexForPoint:function(){return fs},getImageLegacy:function(){return Ps},getImageSliceDataForVolumeViewport:function(){return ci},getMinMax:function(){return rr},getRuntimeId:function(){return qo},getScalarDataType:function(){return Es},getScalingParameters:function(){return bs},getSliceRange:function(){return ai},getSpacingInNormalDirection:function(){return _n},getTargetVolumeAndSpacingInNormalDir:function(){return ui},getViewportImageCornersInWorld:function(){return ys},getViewportModality:function(){return $o},getViewportsWithImageURI:function(){return vs},getViewportsWithVolumeId:function(){return rs},getVoiFromSigmoidRGBTransferFunction:function(){return qn},getVolumeActorCorners:function(){return ei},getVolumeSliceRangeInfo:function(){return ls},getVolumeViewportScrollInfo:function(){return cs},getVolumeViewportsContainingSameVolumes:function(){return ts},hasNaNValues:function(){return bi},imageIdToURI:function(){return ye},imageRetrieveMetadataProvider:function(){return Yi},imageToWorldCoords:function(){return us},indexWithinDimensions:function(){return Jo},invertRgbTransferFunction:function(){return Zn},isEqual:function(){return Ci},isImageActor:function(){return Mn},isOpposite:function(){return Ko},isPTPrescaledWithSUV:function(){return ns},isVideoTransferSyntax:function(){return Rs},loadImageToCanvas:function(){return os},planar:function(){return u},renderToCanvasCPU:function(){return as},renderToCanvasGPU:function(){return is},scaleRgbTransferFunction:function(){return No},snapFocalPointToSlice:function(){return ds},spatialRegistrationMetadataProvider:function(){return gs},transferFunctionUtils:function(){return l},transformWorldToIndex:function(){return _i},triggerEvent:function(){return st},uuidv4:function(){return dt},windowLevel:function(){return o},worldToImageCoords:function(){return ss}});var f=function(e){return e.CACHE_SIZE_EXCEEDED="CACHE_SIZE_EXCEEDED",e.IMAGE_LOAD_ERROR="IMAGE_LOAD_ERROR",e.CAMERA_MODIFIED="CORNERSTONE_CAMERA_MODIFIED",e.CAMERA_RESET="CORNERSTONE_CAMERA_RESET",e.VOI_MODIFIED="CORNERSTONE_VOI_MODIFIED",e.DISPLAY_AREA_MODIFIED="CORNERSTONE_DISPLAY_AREA_MODIFIED",e.ELEMENT_DISABLED="CORNERSTONE_ELEMENT_DISABLED",e.ELEMENT_ENABLED="CORNERSTONE_ELEMENT_ENABLED",e.IMAGE_RENDERED="CORNERSTONE_IMAGE_RENDERED",e.IMAGE_VOLUME_MODIFIED="CORNERSTONE_IMAGE_VOLUME_MODIFIED",e.IMAGE_VOLUME_LOADING_COMPLETED="CORNERSTONE_IMAGE_VOLUME_LOADING_COMPLETED",e.IMAGE_LOADED="CORNERSTONE_IMAGE_LOADED",e.IMAGE_RETRIEVAL_STAGE="CORNERSTONE_IMAGE_RETRIEVAL_STAGE",e.IMAGE_LOAD_FAILED="CORNERSTONE_IMAGE_LOAD_FAILED",e.VOLUME_VIEWPORT_NEW_VOLUME="CORNERSTONE_VOLUME_VIEWPORT_NEW_VOLUME",e.VOLUME_LOADED="CORNERSTONE_VOLUME_LOADED",e.VOLUME_LOADED_FAILED="CORNERSTONE_VOLUME_LOADED_FAILED",e.IMAGE_CACHE_IMAGE_ADDED="CORNERSTONE_IMAGE_CACHE_IMAGE_ADDED",e.IMAGE_CACHE_IMAGE_REMOVED="CORNERSTONE_IMAGE_CACHE_IMAGE_REMOVED",e.VOLUME_CACHE_VOLUME_ADDED="CORNERSTONE_VOLUME_CACHE_VOLUME_ADDED",e.VOLUME_CACHE_VOLUME_REMOVED="CORNERSTONE_VOLUME_CACHE_VOLUME_REMOVED",e.STACK_NEW_IMAGE="CORNERSTONE_STACK_NEW_IMAGE",e.VOLUME_NEW_IMAGE="CORNERSTONE_VOLUME_NEW_IMAGE",e.PRE_STACK_NEW_IMAGE="CORNERSTONE_PRE_STACK_NEW_IMAGE",e.IMAGE_SPACING_CALIBRATED="CORNERSTONE_IMAGE_SPACING_CALIBRATED",e.STACK_VIEWPORT_NEW_STACK="CORNERSTONE_STACK_VIEWPORT_NEW_STACK",e.STACK_VIEWPORT_SCROLL="CORNERSTONE_STACK_VIEWPORT_SCROLL",e.GEOMETRY_CACHE_GEOMETRY_ADDED="CORNERSTONE_GEOMETRY_CACHE_GEOMETRY_ADDED",e.VOLUME_SCROLL_OUT_OF_BOUNDS="CORNERSTONE_VOLUME_SCROLL_OUT_OF_BOUNDS",e.CLIPPING_PLANES_UPDATED="CORNERSTONE_CLIPPING_PLANES_UPDATED",e}(f||{}),p=f,h=function(e){return e.Interaction="interaction",e.Thumbnail="thumbnail",e.Prefetch="prefetch",e}(h||{}),g=h,m=function(e){return e.STACK="stack",e.ORTHOGRAPHIC="orthographic",e.PERSPECTIVE="perspective",e.VOLUME_3D="volume3d",e.VIDEO="video",e}(m||{}),y=m,w=function(e){return e[e.NEAREST=0]="NEAREST",e[e.LINEAR=1]="LINEAR",e[e.FAST_LINEAR=2]="FAST_LINEAR",e}(w||{}),I=w,C=X(7468),b=X.n(C)().BlendMode,E=function(e){return e[e.COMPOSITE=b.COMPOSITE_BLEND]="COMPOSITE",e[e.MAXIMUM_INTENSITY_BLEND=b.MAXIMUM_INTENSITY_BLEND]="MAXIMUM_INTENSITY_BLEND",e[e.MINIMUM_INTENSITY_BLEND=b.MINIMUM_INTENSITY_BLEND]="MINIMUM_INTENSITY_BLEND",e[e.AVERAGE_INTENSITY_BLEND=b.AVERAGE_INTENSITY_BLEND]="AVERAGE_INTENSITY_BLEND",e}(E||{}),P=E,k=function(e){return e.AXIAL="axial",e.CORONAL="coronal",e.SAGITTAL="sagittal",e.ACQUISITION="acquisition",e}(k||{}),R=k,O=function(e){return e.TRUE="true",e.FALSE="false",e.AUTO="auto",e}(O||{}),A=O,T=function(e){return e.CONTOUR="contour",e.SURFACE="Surface",e}(T||{}),S=T,x=function(e){return e.CLOSED_PLANAR="CLOSED_PLANAR",e.OPEN_PLANAR="OPEN_PLANAR",e}(x||{}),D=x,_=function(e){return e.LINEAR="LINEAR",e.SAMPLED_SIGMOID="SIGMOID",e}(_||{}),M=_,V=function(e){return e.SUM="SUM",e.AVERAGE="AVERAGE",e.SUBTRACT="SUBTRACT",e}(V||{}),L=V,U=function(e){return e.NOT_APPLICABLE="",e.ERMF="ERMF",e.USER="User",e.PROJECTION="Proj",e.REGION="Region",e.ERROR="Error",e.UNCALIBRATED="Uncalibrated",e}({}),j=function(e){return e.NO_DATA="noData",e.LOADING="loading",e.PRE_RENDER="preRender",e.RESIZE="resize",e.RENDERED="rendered",e}(j||{}),N=j,F=function(e){return e[e.FAR_REPLICATE=1]="FAR_REPLICATE",e[e.ADJACENT_REPLICATE=3]="ADJACENT_REPLICATE",e[e.SUBRESOLUTION=6]="SUBRESOLUTION",e[e.LOSSY=7]="LOSSY",e[e.FULL_RESOLUTION=8]="FULL_RESOLUTION",e}(F||{}),G=F,W=function(e){return e.FRAME="f",e.SECOND="s",e}(W||{}),B=function(e){return e.CINE="cineModule",e.IMAGE_URL="imageUrlModule",e.GENERAL_SERIES="generalSeriesModule",e.PATIENT_STUDY="patientStudyModule",e.NM_MULTIFRAME_GEOMETRY="nmMultiframeGeometryModule",e.IMAGE_PLANE="imagePlaneModule",e.IMAGE_PIXEL="imagePixelModule",e.MULTIFRAME="multiframeModule",e}(B||{}),q=B,z={hotIron:{name:"Hot Iron",numOfColors:256,colors:[[0,0,0,255],[2,0,0,255],[4,0,0,255],[6,0,0,255],[8,0,0,255],[10,0,0,255],[12,0,0,255],[14,0,0,255],[16,0,0,255],[18,0,0,255],[20,0,0,255],[22,0,0,255],[24,0,0,255],[26,0,0,255],[28,0,0,255],[30,0,0,255],[32,0,0,255],[34,0,0,255],[36,0,0,255],[38,0,0,255],[40,0,0,255],[42,0,0,255],[44,0,0,255],[46,0,0,255],[48,0,0,255],[50,0,0,255],[52,0,0,255],[54,0,0,255],[56,0,0,255],[58,0,0,255],[60,0,0,255],[62,0,0,255],[64,0,0,255],[66,0,0,255],[68,0,0,255],[70,0,0,255],[72,0,0,255],[74,0,0,255],[76,0,0,255],[78,0,0,255],[80,0,0,255],[82,0,0,255],[84,0,0,255],[86,0,0,255],[88,0,0,255],[90,0,0,255],[92,0,0,255],[94,0,0,255],[96,0,0,255],[98,0,0,255],[100,0,0,255],[102,0,0,255],[104,0,0,255],[106,0,0,255],[108,0,0,255],[110,0,0,255],[112,0,0,255],[114,0,0,255],[116,0,0,255],[118,0,0,255],[120,0,0,255],[122,0,0,255],[124,0,0,255],[126,0,0,255],[128,0,0,255],[130,0,0,255],[132,0,0,255],[134,0,0,255],[136,0,0,255],[138,0,0,255],[140,0,0,255],[142,0,0,255],[144,0,0,255],[146,0,0,255],[148,0,0,255],[150,0,0,255],[152,0,0,255],[154,0,0,255],[156,0,0,255],[158,0,0,255],[160,0,0,255],[162,0,0,255],[164,0,0,255],[166,0,0,255],[168,0,0,255],[170,0,0,255],[172,0,0,255],[174,0,0,255],[176,0,0,255],[178,0,0,255],[180,0,0,255],[182,0,0,255],[184,0,0,255],[186,0,0,255],[188,0,0,255],[190,0,0,255],[192,0,0,255],[194,0,0,255],[196,0,0,255],[198,0,0,255],[200,0,0,255],[202,0,0,255],[204,0,0,255],[206,0,0,255],[208,0,0,255],[210,0,0,255],[212,0,0,255],[214,0,0,255],[216,0,0,255],[218,0,0,255],[220,0,0,255],[222,0,0,255],[224,0,0,255],[226,0,0,255],[228,0,0,255],[230,0,0,255],[232,0,0,255],[234,0,0,255],[236,0,0,255],[238,0,0,255],[240,0,0,255],[242,0,0,255],[244,0,0,255],[246,0,0,255],[248,0,0,255],[250,0,0,255],[252,0,0,255],[254,0,0,255],[255,0,0,255],[255,2,0,255],[255,4,0,255],[255,6,0,255],[255,8,0,255],[255,10,0,255],[255,12,0,255],[255,14,0,255],[255,16,0,255],[255,18,0,255],[255,20,0,255],[255,22,0,255],[255,24,0,255],[255,26,0,255],[255,28,0,255],[255,30,0,255],[255,32,0,255],[255,34,0,255],[255,36,0,255],[255,38,0,255],[255,40,0,255],[255,42,0,255],[255,44,0,255],[255,46,0,255],[255,48,0,255],[255,50,0,255],[255,52,0,255],[255,54,0,255],[255,56,0,255],[255,58,0,255],[255,60,0,255],[255,62,0,255],[255,64,0,255],[255,66,0,255],[255,68,0,255],[255,70,0,255],[255,72,0,255],[255,74,0,255],[255,76,0,255],[255,78,0,255],[255,80,0,255],[255,82,0,255],[255,84,0,255],[255,86,0,255],[255,88,0,255],[255,90,0,255],[255,92,0,255],[255,94,0,255],[255,96,0,255],[255,98,0,255],[255,100,0,255],[255,102,0,255],[255,104,0,255],[255,106,0,255],[255,108,0,255],[255,110,0,255],[255,112,0,255],[255,114,0,255],[255,116,0,255],[255,118,0,255],[255,120,0,255],[255,122,0,255],[255,124,0,255],[255,126,0,255],[255,128,4,255],[255,130,8,255],[255,132,12,255],[255,134,16,255],[255,136,20,255],[255,138,24,255],[255,140,28,255],[255,142,32,255],[255,144,36,255],[255,146,40,255],[255,148,44,255],[255,150,48,255],[255,152,52,255],[255,154,56,255],[255,156,60,255],[255,158,64,255],[255,160,68,255],[255,162,72,255],[255,164,76,255],[255,166,80,255],[255,168,84,255],[255,170,88,255],[255,172,92,255],[255,174,96,255],[255,176,100,255],[255,178,104,255],[255,180,108,255],[255,182,112,255],[255,184,116,255],[255,186,120,255],[255,188,124,255],[255,190,128,255],[255,192,132,255],[255,194,136,255],[255,196,140,255],[255,198,144,255],[255,200,148,255],[255,202,152,255],[255,204,156,255],[255,206,160,255],[255,208,164,255],[255,210,168,255],[255,212,172,255],[255,214,176,255],[255,216,180,255],[255,218,184,255],[255,220,188,255],[255,222,192,255],[255,224,196,255],[255,226,200,255],[255,228,204,255],[255,230,208,255],[255,232,212,255],[255,234,216,255],[255,236,220,255],[255,238,224,255],[255,240,228,255],[255,242,232,255],[255,244,236,255],[255,246,240,255],[255,248,244,255],[255,250,248,255],[255,252,252,255],[255,255,255,255]]},pet:{name:"PET",numColors:256,colors:[[0,0,0,255],[0,2,1,255],[0,4,3,255],[0,6,5,255],[0,8,7,255],[0,10,9,255],[0,12,11,255],[0,14,13,255],[0,16,15,255],[0,18,17,255],[0,20,19,255],[0,22,21,255],[0,24,23,255],[0,26,25,255],[0,28,27,255],[0,30,29,255],[0,32,31,255],[0,34,33,255],[0,36,35,255],[0,38,37,255],[0,40,39,255],[0,42,41,255],[0,44,43,255],[0,46,45,255],[0,48,47,255],[0,50,49,255],[0,52,51,255],[0,54,53,255],[0,56,55,255],[0,58,57,255],[0,60,59,255],[0,62,61,255],[0,65,63,255],[0,67,65,255],[0,69,67,255],[0,71,69,255],[0,73,71,255],[0,75,73,255],[0,77,75,255],[0,79,77,255],[0,81,79,255],[0,83,81,255],[0,85,83,255],[0,87,85,255],[0,89,87,255],[0,91,89,255],[0,93,91,255],[0,95,93,255],[0,97,95,255],[0,99,97,255],[0,101,99,255],[0,103,101,255],[0,105,103,255],[0,107,105,255],[0,109,107,255],[0,111,109,255],[0,113,111,255],[0,115,113,255],[0,117,115,255],[0,119,117,255],[0,121,119,255],[0,123,121,255],[0,125,123,255],[0,128,125,255],[1,126,127,255],[3,124,129,255],[5,122,131,255],[7,120,133,255],[9,118,135,255],[11,116,137,255],[13,114,139,255],[15,112,141,255],[17,110,143,255],[19,108,145,255],[21,106,147,255],[23,104,149,255],[25,102,151,255],[27,100,153,255],[29,98,155,255],[31,96,157,255],[33,94,159,255],[35,92,161,255],[37,90,163,255],[39,88,165,255],[41,86,167,255],[43,84,169,255],[45,82,171,255],[47,80,173,255],[49,78,175,255],[51,76,177,255],[53,74,179,255],[55,72,181,255],[57,70,183,255],[59,68,185,255],[61,66,187,255],[63,64,189,255],[65,63,191,255],[67,61,193,255],[69,59,195,255],[71,57,197,255],[73,55,199,255],[75,53,201,255],[77,51,203,255],[79,49,205,255],[81,47,207,255],[83,45,209,255],[85,43,211,255],[86,41,213,255],[88,39,215,255],[90,37,217,255],[92,35,219,255],[94,33,221,255],[96,31,223,255],[98,29,225,255],[100,27,227,255],[102,25,229,255],[104,23,231,255],[106,21,233,255],[108,19,235,255],[110,17,237,255],[112,15,239,255],[114,13,241,255],[116,11,243,255],[118,9,245,255],[120,7,247,255],[122,5,249,255],[124,3,251,255],[126,1,253,255],[128,0,255,255],[130,2,252,255],[132,4,248,255],[134,6,244,255],[136,8,240,255],[138,10,236,255],[140,12,232,255],[142,14,228,255],[144,16,224,255],[146,18,220,255],[148,20,216,255],[150,22,212,255],[152,24,208,255],[154,26,204,255],[156,28,200,255],[158,30,196,255],[160,32,192,255],[162,34,188,255],[164,36,184,255],[166,38,180,255],[168,40,176,255],[170,42,172,255],[171,44,168,255],[173,46,164,255],[175,48,160,255],[177,50,156,255],[179,52,152,255],[181,54,148,255],[183,56,144,255],[185,58,140,255],[187,60,136,255],[189,62,132,255],[191,64,128,255],[193,66,124,255],[195,68,120,255],[197,70,116,255],[199,72,112,255],[201,74,108,255],[203,76,104,255],[205,78,100,255],[207,80,96,255],[209,82,92,255],[211,84,88,255],[213,86,84,255],[215,88,80,255],[217,90,76,255],[219,92,72,255],[221,94,68,255],[223,96,64,255],[225,98,60,255],[227,100,56,255],[229,102,52,255],[231,104,48,255],[233,106,44,255],[235,108,40,255],[237,110,36,255],[239,112,32,255],[241,114,28,255],[243,116,24,255],[245,118,20,255],[247,120,16,255],[249,122,12,255],[251,124,8,255],[253,126,4,255],[255,128,0,255],[255,130,4,255],[255,132,8,255],[255,134,12,255],[255,136,16,255],[255,138,20,255],[255,140,24,255],[255,142,28,255],[255,144,32,255],[255,146,36,255],[255,148,40,255],[255,150,44,255],[255,152,48,255],[255,154,52,255],[255,156,56,255],[255,158,60,255],[255,160,64,255],[255,162,68,255],[255,164,72,255],[255,166,76,255],[255,168,80,255],[255,170,85,255],[255,172,89,255],[255,174,93,255],[255,176,97,255],[255,178,101,255],[255,180,105,255],[255,182,109,255],[255,184,113,255],[255,186,117,255],[255,188,121,255],[255,190,125,255],[255,192,129,255],[255,194,133,255],[255,196,137,255],[255,198,141,255],[255,200,145,255],[255,202,149,255],[255,204,153,255],[255,206,157,255],[255,208,161,255],[255,210,165,255],[255,212,170,255],[255,214,174,255],[255,216,178,255],[255,218,182,255],[255,220,186,255],[255,222,190,255],[255,224,194,255],[255,226,198,255],[255,228,202,255],[255,230,206,255],[255,232,210,255],[255,234,214,255],[255,236,218,255],[255,238,222,255],[255,240,226,255],[255,242,230,255],[255,244,234,255],[255,246,238,255],[255,248,242,255],[255,250,246,255],[255,252,250,255],[255,255,255,255]]},hotMetalBlue:{name:"Hot Metal Blue",numColors:256,colors:[[0,0,0,255],[0,0,2,255],[0,0,4,255],[0,0,6,255],[0,0,8,255],[0,0,10,255],[0,0,12,255],[0,0,14,255],[0,0,16,255],[0,0,17,255],[0,0,19,255],[0,0,21,255],[0,0,23,255],[0,0,25,255],[0,0,27,255],[0,0,29,255],[0,0,31,255],[0,0,33,255],[0,0,35,255],[0,0,37,255],[0,0,39,255],[0,0,41,255],[0,0,43,255],[0,0,45,255],[0,0,47,255],[0,0,49,255],[0,0,51,255],[0,0,53,255],[0,0,55,255],[0,0,57,255],[0,0,59,255],[0,0,61,255],[0,0,63,255],[0,0,65,255],[0,0,67,255],[0,0,69,255],[0,0,71,255],[0,0,73,255],[0,0,75,255],[0,0,77,255],[0,0,79,255],[0,0,81,255],[0,0,83,255],[0,0,84,255],[0,0,86,255],[0,0,88,255],[0,0,90,255],[0,0,92,255],[0,0,94,255],[0,0,96,255],[0,0,98,255],[0,0,100,255],[0,0,102,255],[0,0,104,255],[0,0,106,255],[0,0,108,255],[0,0,110,255],[0,0,112,255],[0,0,114,255],[0,0,116,255],[0,0,117,255],[0,0,119,255],[0,0,121,255],[0,0,123,255],[0,0,125,255],[0,0,127,255],[0,0,129,255],[0,0,131,255],[0,0,133,255],[0,0,135,255],[0,0,137,255],[0,0,139,255],[0,0,141,255],[0,0,143,255],[0,0,145,255],[0,0,147,255],[0,0,149,255],[0,0,151,255],[0,0,153,255],[0,0,155,255],[0,0,157,255],[0,0,159,255],[0,0,161,255],[0,0,163,255],[0,0,165,255],[0,0,167,255],[3,0,169,255],[6,0,171,255],[9,0,173,255],[12,0,175,255],[15,0,177,255],[18,0,179,255],[21,0,181,255],[24,0,183,255],[26,0,184,255],[29,0,186,255],[32,0,188,255],[35,0,190,255],[38,0,192,255],[41,0,194,255],[44,0,196,255],[47,0,198,255],[50,0,200,255],[52,0,197,255],[55,0,194,255],[57,0,191,255],[59,0,188,255],[62,0,185,255],[64,0,182,255],[66,0,179,255],[69,0,176,255],[71,0,174,255],[74,0,171,255],[76,0,168,255],[78,0,165,255],[81,0,162,255],[83,0,159,255],[85,0,156,255],[88,0,153,255],[90,0,150,255],[93,2,144,255],[96,4,138,255],[99,6,132,255],[102,8,126,255],[105,9,121,255],[108,11,115,255],[111,13,109,255],[114,15,103,255],[116,17,97,255],[119,19,91,255],[122,21,85,255],[125,23,79,255],[128,24,74,255],[131,26,68,255],[134,28,62,255],[137,30,56,255],[140,32,50,255],[143,34,47,255],[146,36,44,255],[149,38,41,255],[152,40,38,255],[155,41,35,255],[158,43,32,255],[161,45,29,255],[164,47,26,255],[166,49,24,255],[169,51,21,255],[172,53,18,255],[175,55,15,255],[178,56,12,255],[181,58,9,255],[184,60,6,255],[187,62,3,255],[190,64,0,255],[194,66,0,255],[198,68,0,255],[201,70,0,255],[205,72,0,255],[209,73,0,255],[213,75,0,255],[217,77,0,255],[221,79,0,255],[224,81,0,255],[228,83,0,255],[232,85,0,255],[236,87,0,255],[240,88,0,255],[244,90,0,255],[247,92,0,255],[251,94,0,255],[255,96,0,255],[255,98,3,255],[255,100,6,255],[255,102,9,255],[255,104,12,255],[255,105,15,255],[255,107,18,255],[255,109,21,255],[255,111,24,255],[255,113,26,255],[255,115,29,255],[255,117,32,255],[255,119,35,255],[255,120,38,255],[255,122,41,255],[255,124,44,255],[255,126,47,255],[255,128,50,255],[255,130,53,255],[255,132,56,255],[255,134,59,255],[255,136,62,255],[255,137,65,255],[255,139,68,255],[255,141,71,255],[255,143,74,255],[255,145,76,255],[255,147,79,255],[255,149,82,255],[255,151,85,255],[255,152,88,255],[255,154,91,255],[255,156,94,255],[255,158,97,255],[255,160,100,255],[255,162,103,255],[255,164,106,255],[255,166,109,255],[255,168,112,255],[255,169,115,255],[255,171,118,255],[255,173,121,255],[255,175,124,255],[255,177,126,255],[255,179,129,255],[255,181,132,255],[255,183,135,255],[255,184,138,255],[255,186,141,255],[255,188,144,255],[255,190,147,255],[255,192,150,255],[255,194,153,255],[255,196,156,255],[255,198,159,255],[255,200,162,255],[255,201,165,255],[255,203,168,255],[255,205,171,255],[255,207,174,255],[255,209,176,255],[255,211,179,255],[255,213,182,255],[255,215,185,255],[255,216,188,255],[255,218,191,255],[255,220,194,255],[255,222,197,255],[255,224,200,255],[255,226,203,255],[255,228,206,255],[255,229,210,255],[255,231,213,255],[255,233,216,255],[255,235,219,255],[255,237,223,255],[255,239,226,255],[255,240,229,255],[255,242,232,255],[255,244,236,255],[255,246,239,255],[255,248,242,255],[255,250,245,255],[255,251,249,255],[255,253,252,255],[255,255,255,255]]},pet20Step:{name:"PET 20 Step",numColors:256,colors:[[0,0,0,255],[0,0,0,255],[0,0,0,255],[0,0,0,255],[0,0,0,255],[0,0,0,255],[0,0,0,255],[0,0,0,255],[0,0,0,255],[0,0,0,255],[0,0,0,255],[0,0,0,255],[0,0,0,255],[96,0,80,255],[96,0,80,255],[96,0,80,255],[96,0,80,255],[96,0,80,255],[96,0,80,255],[96,0,80,255],[96,0,80,255],[96,0,80,255],[96,0,80,255],[96,0,80,255],[96,0,80,255],[96,0,80,255],[48,48,80,255],[48,48,80,255],[48,48,80,255],[48,48,80,255],[48,48,80,255],[48,48,80,255],[48,48,80,255],[48,48,80,255],[48,48,80,255],[48,48,80,255],[48,48,80,255],[48,48,80,255],[48,48,80,255],[48,48,112,255],[48,48,112,255],[48,48,112,255],[48,48,112,255],[48,48,112,255],[48,48,112,255],[48,48,112,255],[48,48,112,255],[48,48,112,255],[48,48,112,255],[48,48,112,255],[48,48,112,255],[80,80,128,255],[80,80,128,255],[80,80,128,255],[80,80,128,255],[80,80,128,255],[80,80,128,255],[80,80,128,255],[80,80,128,255],[80,80,128,255],[80,80,128,255],[80,80,128,255],[80,80,128,255],[80,80,128,255],[96,96,176,255],[96,96,176,255],[96,96,176,255],[96,96,176,255],[96,96,176,255],[96,96,176,255],[96,96,176,255],[96,96,176,255],[96,96,176,255],[96,96,176,255],[96,96,176,255],[96,96,176,255],[96,96,176,255],[112,112,192,255],[112,112,192,255],[112,112,192,255],[112,112,192,255],[112,112,192,255],[112,112,192,255],[112,112,192,255],[112,112,192,255],[112,112,192,255],[112,112,192,255],[112,112,192,255],[112,112,192,255],[112,112,192,255],[128,128,224,255],[128,128,224,255],[128,128,224,255],[128,128,224,255],[128,128,224,255],[128,128,224,255],[128,128,224,255],[128,128,224,255],[128,128,224,255],[128,128,224,255],[128,128,224,255],[128,128,224,255],[48,96,48,255],[48,96,48,255],[48,96,48,255],[48,96,48,255],[48,96,48,255],[48,96,48,255],[48,96,48,255],[48,96,48,255],[48,96,48,255],[48,96,48,255],[48,96,48,255],[48,96,48,255],[48,96,48,255],[48,144,48,255],[48,144,48,255],[48,144,48,255],[48,144,48,255],[48,144,48,255],[48,144,48,255],[48,144,48,255],[48,144,48,255],[48,144,48,255],[48,144,48,255],[48,144,48,255],[48,144,48,255],[48,144,48,255],[80,192,80,255],[80,192,80,255],[80,192,80,255],[80,192,80,255],[80,192,80,255],[80,192,80,255],[80,192,80,255],[80,192,80,255],[80,192,80,255],[80,192,80,255],[80,192,80,255],[80,192,80,255],[80,192,80,255],[64,224,64,255],[64,224,64,255],[64,224,64,255],[64,224,64,255],[64,224,64,255],[64,224,64,255],[64,224,64,255],[64,224,64,255],[64,224,64,255],[64,224,64,255],[64,224,64,255],[64,224,64,255],[224,224,80,255],[224,224,80,255],[224,224,80,255],[224,224,80,255],[224,224,80,255],[224,224,80,255],[224,224,80,255],[224,224,80,255],[224,224,80,255],[224,224,80,255],[224,224,80,255],[224,224,80,255],[224,224,80,255],[208,208,96,255],[208,208,96,255],[208,208,96,255],[208,208,96,255],[208,208,96,255],[208,208,96,255],[208,208,96,255],[208,208,96,255],[208,208,96,255],[208,208,96,255],[208,208,96,255],[208,208,96,255],[208,208,96,255],[208,176,64,255],[208,176,64,255],[208,176,64,255],[208,176,64,255],[208,176,64,255],[208,176,64,255],[208,176,64,255],[208,176,64,255],[208,176,64,255],[208,176,64,255],[208,176,64,255],[208,176,64,255],[208,176,64,255],[208,144,0,255],[208,144,0,255],[208,144,0,255],[208,144,0,255],[208,144,0,255],[208,144,0,255],[208,144,0,255],[208,144,0,255],[208,144,0,255],[208,144,0,255],[208,144,0,255],[208,144,0,255],[192,96,0,255],[192,96,0,255],[192,96,0,255],[192,96,0,255],[192,96,0,255],[192,96,0,255],[192,96,0,255],[192,96,0,255],[192,96,0,255],[192,96,0,255],[192,96,0,255],[192,96,0,255],[192,96,0,255],[176,48,0,255],[176,48,0,255],[176,48,0,255],[176,48,0,255],[176,48,0,255],[176,48,0,255],[176,48,0,255],[176,48,0,255],[176,48,0,255],[176,48,0,255],[176,48,0,255],[176,48,0,255],[176,48,0,255],[255,0,0,255],[255,0,0,255],[255,0,0,255],[255,0,0,255],[255,0,0,255],[255,0,0,255],[255,0,0,255],[255,0,0,255],[255,0,0,255],[255,0,0,255],[255,0,0,255],[255,0,0,255],[255,0,0,255],[255,255,255,255],[255,255,255,255],[255,255,255,255],[255,255,255,255],[255,255,255,255],[255,255,255,255],[255,255,255,255],[255,255,255,255],[255,255,255,255],[255,255,255,255],[255,255,255,255],[255,255,255,255],[255,255,255,255]]},gray:{name:"Gray",numColors:256,gamma:1,segmentedData:{red:[[0,0,0],[1,1,1]],green:[[0,0,0],[1,1,1]],blue:[[0,0,0],[1,1,1]]}},jet:{name:"Jet",numColors:256,gamma:1,segmentedData:{red:[[0,0,0],[.35,0,0],[.66,1,1],[.89,1,1],[1,.5,.5]],green:[[0,0,0],[.125,0,0],[.375,1,1],[.64,1,1],[.91,0,0],[1,0,0]],blue:[[0,.5,.5],[.11,1,1],[.34,1,1],[.65,0,0],[1,0,0]]}},hsv:{name:"HSV",numColors:256,gamma:1,segmentedData:{red:[[0,1,1],[.15873,1,1],[.174603,.96875,.96875],[.333333,.03125,.03125],[.349206,0,0],[.666667,0,0],[.68254,.03125,.03125],[.84127,.96875,.96875],[.857143,1,1],[1,1,1]],green:[[0,0,0],[.15873,.9375,.9375],[.174603,1,1],[.507937,1,1],[.666667,.0625,.0625],[.68254,0,0],[1,0,0]],blue:[[0,0,0],[.333333,0,0],[.349206,.0625,.0625],[.507937,1,1],[.84127,1,1],[.857143,.9375,.9375],[1,.09375,.09375]]}},hot:{name:"Hot",numColors:256,gamma:1,segmentedData:{red:[[0,.0416,.0416],[.365079,1,1],[1,1,1]],green:[[0,0,0],[.365079,0,0],[.746032,1,1],[1,1,1]],blue:[[0,0,0],[.746032,0,0],[1,1,1]]}},cool:{name:"Cool",numColors:256,gamma:1,segmentedData:{red:[[0,0,0],[1,1,1]],green:[[0,1,1],[1,0,0]],blue:[[0,1,1],[1,1,1]]}},spring:{name:"Spring",numColors:256,gamma:1,segmentedData:{red:[[0,1,1],[1,1,1]],green:[[0,0,0],[1,1,1]],blue:[[0,1,1],[1,0,0]]}},summer:{name:"Summer",numColors:256,gamma:1,segmentedData:{red:[[0,0,0],[1,1,1]],green:[[0,.5,.5],[1,1,1]],blue:[[0,.4,.4],[1,.4,.4]]}},autumn:{name:"Autumn",numColors:256,gamma:1,segmentedData:{red:[[0,1,1],[1,1,1]],green:[[0,0,0],[1,1,1]],blue:[[0,0,0],[1,0,0]]}},winter:{name:"Winter",numColors:256,gamma:1,segmentedData:{red:[[0,0,0],[1,0,0]],green:[[0,0,0],[1,1,1]],blue:[[0,1,1],[1,.5,.5]]}},bone:{name:"Bone",numColors:256,gamma:1,segmentedData:{red:[[0,0,0],[.746032,.652778,.652778],[1,1,1]],green:[[0,0,0],[.365079,.319444,.319444],[.746032,.777778,.777778],[1,1,1]],blue:[[0,0,0],[.365079,.444444,.444444],[1,1,1]]}},copper:{name:"Copper",numColors:256,gamma:1,segmentedData:{red:[[0,0,0],[.809524,1,1],[1,1,1]],green:[[0,0,0],[1,.7812,.7812]],blue:[[0,0,0],[1,.4975,.4975]]}},spectral:{name:"Spectral",numColors:256,gamma:1,segmentedData:{red:[[0,0,0],[.05,.4667,.4667],[.1,.5333,.5333],[.15,0,0],[.2,0,0],[.25,0,0],[.3,0,0],[.35,0,0],[.4,0,0],[.45,0,0],[.5,0,0],[.55,0,0],[.6,0,0],[.65,.7333,.7333],[.7,.9333,.9333],[.75,1,1],[.8,1,1],[.85,1,1],[.9,.8667,.8667],[.95,.8,.8],[1,.8,.8]],green:[[0,0,0],[.05,0,0],[.1,0,0],[.15,0,0],[.2,0,0],[.25,.4667,.4667],[.3,.6,.6],[.35,.6667,.6667],[.4,.6667,.6667],[.45,.6,.6],[.5,.7333,.7333],[.55,.8667,.8667],[.6,1,1],[.65,1,1],[.7,.9333,.9333],[.75,.8,.8],[.8,.6,.6],[.85,0,0],[.9,0,0],[.95,0,0],[1,.8,.8]],blue:[[0,0,0],[.05,.5333,.5333],[.1,.6,.6],[.15,.6667,.6667],[.2,.8667,.8667],[.25,.8667,.8667],[.3,.8667,.8667],[.35,.6667,.6667],[.4,.5333,.5333],[.45,0,0],[.5,0,0],[.55,0,0],[.6,0,0],[.65,0,0],[.7,0,0],[.75,0,0],[.8,0,0],[.85,0,0],[.9,0,0],[.95,0,0],[1,.8,.8]]}},coolwarm:{name:"CoolWarm",numColors:256,gamma:1,segmentedData:{red:[[0,.2298057,.2298057],[.03125,.26623388,.26623388],[.0625,.30386891,.30386891],[.09375,.342804478,.342804478],[.125,.38301334,.38301334],[.15625,.424369608,.424369608],[.1875,.46666708,.46666708],[.21875,.509635204,.509635204],[.25,.552953156,.552953156],[.28125,.596262162,.596262162],[.3125,.639176211,.639176211],[.34375,.681291281,.681291281],[.375,.722193294,.722193294],[.40625,.761464949,.761464949],[.4375,.798691636,.798691636],[.46875,.833466556,.833466556],[.5,.865395197,.865395197],[.53125,.897787179,.897787179],[.5625,.924127593,.924127593],[.59375,.944468518,.944468518],[.625,.958852946,.958852946],[.65625,.96732803,.96732803],[.6875,.969954137,.969954137],[.71875,.966811177,.966811177],[.75,.958003065,.958003065],[.78125,.943660866,.943660866],[.8125,.923944917,.923944917],[.84375,.89904617,.89904617],[.875,.869186849,.869186849],[.90625,.834620542,.834620542],[.9375,.795631745,.795631745],[.96875,.752534934,.752534934],[1,.705673158,.705673158]],green:[[0,.298717966,.298717966],[.03125,.353094838,.353094838],[.0625,.406535296,.406535296],[.09375,.458757618,.458757618],[.125,.50941904,.50941904],[.15625,.558148092,.558148092],[.1875,.604562568,.604562568],[.21875,.648280772,.648280772],[.25,.688929332,.688929332],[.28125,.726149107,.726149107],[.3125,.759599947,.759599947],[.34375,.788964712,.788964712],[.375,.813952739,.813952739],[.40625,.834302879,.834302879],[.4375,.849786142,.849786142],[.46875,.860207984,.860207984],[.5,.86541021,.86541021],[.53125,.848937047,.848937047],[.5625,.827384882,.827384882],[.59375,.800927443,.800927443],[.625,.769767752,.769767752],[.65625,.734132809,.734132809],[.6875,.694266682,.694266682],[.71875,.650421156,.650421156],[.75,.602842431,.602842431],[.78125,.551750968,.551750968],[.8125,.49730856,.49730856],[.84375,.439559467,.439559467],[.875,.378313092,.378313092],[.90625,.312874446,.312874446],[.9375,.24128379,.24128379],[.96875,.157246067,.157246067],[1,.01555616,.01555616]],blue:[[0,.753683153,.753683153],[.03125,.801466763,.801466763],[.0625,.84495867,.84495867],[.09375,.883725899,.883725899],[.125,.917387822,.917387822],[.15625,.945619588,.945619588],[.1875,.968154911,.968154911],[.21875,.98478814,.98478814],[.25,.995375608,.995375608],[.28125,.999836203,.999836203],[.3125,.998151185,.998151185],[.34375,.990363227,.990363227],[.375,.976574709,.976574709],[.40625,.956945269,.956945269],[.4375,.931688648,.931688648],[.46875,.901068838,.901068838],[.5,.865395561,.865395561],[.53125,.820880546,.820880546],[.5625,.774508472,.774508472],[.59375,.726736146,.726736146],[.625,.678007945,.678007945],[.65625,.628751763,.628751763],[.6875,.579375448,.579375448],[.71875,.530263762,.530263762],[.75,.481775914,.481775914],[.78125,.434243684,.434243684],[.8125,.387970225,.387970225],[.84375,.343229596,.343229596],[.875,.300267182,.300267182],[.90625,.259301199,.259301199],[.9375,.220525627,.220525627],[.96875,.184115123,.184115123],[1,.150232812,.150232812]]}},blues:{name:"Blues",numColors:256,gamma:1,segmentedData:{red:[[0,.9686274528503418,.9686274528503418],[.125,.8705882430076599,.8705882430076599],[.25,.7764706015586853,.7764706015586853],[.375,.6196078658103943,.6196078658103943],[.5,.41960784792900085,.41960784792900085],[.625,.25882354378700256,.25882354378700256],[.75,.12941177189350128,.12941177189350128],[.875,.0313725508749485,.0313725508749485],[1,.0313725508749485,.0313725508749485]],green:[[0,.9843137264251709,.9843137264251709],[.125,.9215686321258545,.9215686321258545],[.25,.8588235378265381,.8588235378265381],[.375,.7921568751335144,.7921568751335144],[.5,.6823529601097107,.6823529601097107],[.625,.572549045085907,.572549045085907],[.75,.4431372582912445,.4431372582912445],[.875,.3176470696926117,.3176470696926117],[1,.1882352977991104,.1882352977991104]],blue:[[0,1,1],[.125,.9686274528503418,.9686274528503418],[.25,.9372549057006836,.9372549057006836],[.375,.8823529481887817,.8823529481887817],[.5,.8392156958580017,.8392156958580017],[.625,.7764706015586853,.7764706015586853],[.75,.7098039388656616,.7098039388656616],[.875,.6117647290229797,.6117647290229797],[1,.41960784792900085,.41960784792900085]]}}},H={MINIMUM_SLAB_THICKNESS:.05,MAXIMUM_RAY_DISTANCE:1e6};Object.freeze(H);var K=H,Y=.001;function Z(e){return Z="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Z(e)}function $(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r<t;r++)n[r]=e[r];return n}var J=function e(t){var r,n=function(e,t){var r="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!r){if(Array.isArray(e)||(r=function(e,t){if(e){if("string"==typeof e)return $(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?$(e,t):void 0}}(e))||t&&e&&"number"==typeof e.length){r&&(e=r);var n=0,i=function(){};return{s:i,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,o=!0,s=!1;return{s:function(){r=r.call(e)},n:function(){var e=r.next();return o=e.done,e},e:function(e){s=!0,a=e},f:function(){try{o||null==r.return||r.return()}finally{if(s)throw a}}}}(Object.getOwnPropertyNames(t));try{for(n.s();!(r=n.n()).done;){var i=t[r.value];i&&"object"===Z(i)&&e(i)}}catch(e){n.e(e)}finally{n.f()}return Object.freeze(t)}({axial:{viewPlaneNormal:[0,0,-1],viewUp:[0,-1,0]},sagittal:{viewPlaneNormal:[1,0,0],viewUp:[0,0,1]},coronal:{viewPlaneNormal:[0,-1,0],viewUp:[0,0,1]}}),ee=[{name:"CT-AAA",gradientOpacity:"4 0 1 255 1",specularPower:"10",scalarOpacity:"12 -3024 0 143.556 0 166.222 0.686275 214.389 0.696078 419.736 0.833333 3071 0.803922",specular:"0.2",shade:"1",ambient:"0.1",colorTransfer:"24 -3024 0 0 0 143.556 0.615686 0.356863 0.184314 166.222 0.882353 0.603922 0.290196 214.389 1 1 1 419.736 1 0.937033 0.954531 3071 0.827451 0.658824 1",diffuse:"0.9",interpolation:"1"},{name:"CT-AAA2",gradientOpacity:"4 0 1 255 1",specularPower:"10",scalarOpacity:"16 -3024 0 129.542 0 145.244 0.166667 157.02 0.5 169.918 0.627451 395.575 0.8125 1578.73 0.8125 3071 0.8125",specular:"0.2",shade:"1",ambient:"0.1",colorTransfer:"32 -3024 0 0 0 129.542 0.54902 0.25098 0.14902 145.244 0.6 0.627451 0.843137 157.02 0.890196 0.47451 0.6 169.918 0.992157 0.870588 0.392157 395.575 1 0.886275 0.658824 1578.73 1 0.829256 0.957922 3071 0.827451 0.658824 1",diffuse:"0.9",interpolation:"1"},{name:"CT-Bone",gradientOpacity:"4 0 1 255 1",specularPower:"10",scalarOpacity:"8 -3024 0 -16.4458 0 641.385 0.715686 3071 0.705882",specular:"0.2",shade:"1",ambient:"0.1",colorTransfer:"16 -3024 0 0 0 -16.4458 0.729412 0.254902 0.301961 641.385 0.905882 0.815686 0.552941 3071 1 1 1",diffuse:"0.9",interpolation:"1"},{name:"CT-Bones",gradientOpacity:"4 0 1 985.12 1",specularPower:"1",scalarOpacity:"8 -1000 0 152.19 0 278.93 0.190476 952 0.2",specular:"0",shade:"1",ambient:"0.2",colorTransfer:"20 -1000 0.3 0.3 1 -488 0.3 1 0.3 463.28 1 0 0 659.15 1 0.912535 0.0374849 953 1 0.3 0.3",diffuse:"1",interpolation:"1"},{name:"CT-Cardiac",gradientOpacity:"4 0 1 255 1",specularPower:"10",scalarOpacity:"12 -3024 0 -77.6875 0 94.9518 0.285714 179.052 0.553571 260.439 0.848214 3071 0.875",specular:"0.2",shade:"1",ambient:"0.1",colorTransfer:"24 -3024 0 0 0 -77.6875 0.54902 0.25098 0.14902 94.9518 0.882353 0.603922 0.290196 179.052 1 0.937033 0.954531 260.439 0.615686 0 0 3071 0.827451 0.658824 1",diffuse:"0.9",interpolation:"1"},{name:"CT-Cardiac2",gradientOpacity:"4 0 1 255 1",specularPower:"10",scalarOpacity:"12 -3024 0 42.8964 0 163.488 0.428571 277.642 0.776786 1587 0.754902 3071 0.754902",specular:"0.2",shade:"1",ambient:"0.1",colorTransfer:"24 -3024 0 0 0 42.8964 0.54902 0.25098 0.14902 163.488 0.917647 0.639216 0.0588235 277.642 1 0.878431 0.623529 1587 1 1 1 3071 0.827451 0.658824 1",diffuse:"0.9",interpolation:"1"},{name:"CT-Cardiac3",gradientOpacity:"4 0 1 255 1",specularPower:"10",scalarOpacity:"14 -3024 0 -86.9767 0 45.3791 0.169643 139.919 0.589286 347.907 0.607143 1224.16 0.607143 3071 0.616071",specular:"0.2",shade:"1",ambient:"0.1",colorTransfer:"28 -3024 0 0 0 -86.9767 0 0.25098 1 45.3791 1 0 0 139.919 1 0.894893 0.894893 347.907 1 1 0.25098 1224.16 1 1 1 3071 0.827451 0.658824 1",diffuse:"0.9",interpolation:"1"},{name:"CT-Chest-Contrast-Enhanced",gradientOpacity:"4 0 1 255 1",specularPower:"10",scalarOpacity:"10 -3024 0 67.0106 0 251.105 0.446429 439.291 0.625 3071 0.616071",specular:"0.2",shade:"1",ambient:"0.1",colorTransfer:"20 -3024 0 0 0 67.0106 0.54902 0.25098 0.14902 251.105 0.882353 0.603922 0.290196 439.291 1 0.937033 0.954531 3071 0.827451 0.658824 1",diffuse:"0.9",interpolation:"1"},{name:"CT-Chest-Vessels",gradientOpacity:"4 0 1 255 1",specularPower:"1",scalarOpacity:"10 -3024 0 -1278.35 0 22.8277 0.428571 439.291 0.625 3071 0.616071",specular:"0",shade:"1",ambient:"0.2",colorTransfer:"20 -3024 0 0 0 -1278.35 0.54902 0.25098 0.14902 22.8277 0.882353 0.603922 0.290196 439.291 1 0.937033 0.954531 3071 0.827451 0.658824 1",diffuse:"1",interpolation:"1"},{name:"CT-Coronary-Arteries",gradientOpacity:"4 0 1 255 1",specularPower:"1",scalarOpacity:"12 -2048 0 136.47 0 159.215 0.258929 318.43 0.571429 478.693 0.776786 3661 1",specular:"0",shade:"0",ambient:"0.2",colorTransfer:"24 -2048 0 0 0 136.47 0 0 0 159.215 0.159804 0.159804 0.159804 318.43 0.764706 0.764706 0.764706 478.693 1 1 1 3661 1 1 1",diffuse:"1",interpolation:"1"},{name:"CT-Coronary-Arteries-2",gradientOpacity:"4 0 1 255 1",specularPower:"1",scalarOpacity:"14 -2048 0 142.677 0 145.016 0.116071 192.174 0.5625 217.24 0.776786 384.347 0.830357 3661 0.830357",specular:"0",shade:"1",ambient:"0.2",colorTransfer:"28 -2048 0 0 0 142.677 0 0 0 145.016 0.615686 0 0.0156863 192.174 0.909804 0.454902 0 217.24 0.972549 0.807843 0.611765 384.347 0.909804 0.909804 1 3661 1 1 1",diffuse:"1",interpolation:"1"},{name:"CT-Coronary-Arteries-3",gradientOpacity:"4 0 1 255 1",specularPower:"10",scalarOpacity:"14 -2048 0 128.643 0 129.982 0.0982143 173.636 0.669643 255.884 0.857143 584.878 0.866071 3661 1",specular:"0.2",shade:"1",ambient:"0.1",colorTransfer:"28 -2048 0 0 0 128.643 0 0 0 129.982 0.615686 0 0.0156863 173.636 0.909804 0.454902 0 255.884 0.886275 0.886275 0.886275 584.878 0.968627 0.968627 0.968627 3661 1 1 1",diffuse:"0.9",interpolation:"1"},{name:"CT-Cropped-Volume-Bone",gradientOpacity:"4 0 1 255 1",specularPower:"1",scalarOpacity:"10 -2048 0 -451 0 -450 1 1050 1 3661 1",specular:"0",shade:"0",ambient:"0.2",colorTransfer:"20 -2048 0 0 0 -451 0 0 0 -450 0.0556356 0.0556356 0.0556356 1050 1 1 1 3661 1 1 1",diffuse:"1",interpolation:"1"},{name:"CT-Fat",gradientOpacity:"6 0 1 985.12 1 988 1",specularPower:"1",scalarOpacity:"14 -1000 0 -100 0 -99 0.15 -60 0.15 -59 0 101.2 0 952 0",specular:"0",shade:"0",ambient:"0.2",colorTransfer:"36 -1000 0.3 0.3 1 -497.5 0.3 1 0.3 -99 0 0 1 -76.946 0 1 0 -65.481 0.835431 0.888889 0.0165387 83.89 1 0 0 463.28 1 0 0 659.15 1 0.912535 0.0374849 2952 1 0.300267 0.299886",diffuse:"1",interpolation:"1"},{name:"CT-Liver-Vasculature",gradientOpacity:"4 0 1 255 1",specularPower:"1",scalarOpacity:"14 -2048 0 149.113 0 157.884 0.482143 339.96 0.660714 388.526 0.830357 1197.95 0.839286 3661 0.848214",specular:"0",shade:"0",ambient:"0.2",colorTransfer:"28 -2048 0 0 0 149.113 0 0 0 157.884 0.501961 0.25098 0 339.96 0.695386 0.59603 0.36886 388.526 0.854902 0.85098 0.827451 1197.95 1 1 1 3661 1 1 1",diffuse:"1",interpolation:"1"},{name:"CT-Lung",gradientOpacity:"6 0 1 985.12 1 988 1",specularPower:"1",scalarOpacity:"12 -1000 0 -600 0 -599 0.15 -400 0.15 -399 0 2952 0",specular:"0",shade:"1",ambient:"0.2",colorTransfer:"24 -1000 0.3 0.3 1 -600 0 0 1 -530 0.134704 0.781726 0.0724558 -460 0.929244 1 0.109473 -400 0.888889 0.254949 0.0240258 2952 1 0.3 0.3",diffuse:"1",interpolation:"1"},{name:"CT-MIP",gradientOpacity:"4 0 1 255 1",specularPower:"10",scalarOpacity:"8 -3024 0 -637.62 0 700 1 3071 1",specular:"0.2",shade:"1",ambient:"0.1",colorTransfer:"16 -3024 0 0 0 -637.62 1 1 1 700 1 1 1 3071 1 1 1",diffuse:"0.9",interpolation:"1"},{name:"CT-Muscle",gradientOpacity:"4 0 1 255 1",specularPower:"10",scalarOpacity:"10 -3024 0 -155.407 0 217.641 0.676471 419.736 0.833333 3071 0.803922",specular:"0.2",shade:"1",ambient:"0.1",colorTransfer:"20 -3024 0 0 0 -155.407 0.54902 0.25098 0.14902 217.641 0.882353 0.603922 0.290196 419.736 1 0.937033 0.954531 3071 0.827451 0.658824 1",diffuse:"0.9",interpolation:"1"},{name:"CT-Pulmonary-Arteries",gradientOpacity:"4 0 1 255 1",specularPower:"1",scalarOpacity:"14 -2048 0 -568.625 0 -364.081 0.0714286 -244.813 0.401786 18.2775 0.607143 447.798 0.830357 3592.73 0.839286",specular:"0",shade:"1",ambient:"0.2",colorTransfer:"28 -2048 0 0 0 -568.625 0 0 0 -364.081 0.396078 0.301961 0.180392 -244.813 0.611765 0.352941 0.0705882 18.2775 0.843137 0.0156863 0.156863 447.798 0.752941 0.752941 0.752941 3592.73 1 1 1",diffuse:"1",interpolation:"1"},{name:"CT-Soft-Tissue",gradientOpacity:"4 0 1 255 1",specularPower:"1",scalarOpacity:"10 -2048 0 -167.01 0 -160 1 240 1 3661 1",specular:"0",shade:"0",ambient:"0.2",colorTransfer:"20 -2048 0 0 0 -167.01 0 0 0 -160 0.0556356 0.0556356 0.0556356 240 1 1 1 3661 1 1 1",diffuse:"1",interpolation:"1"},{name:"CT-Air",gradientOpacity:"4 0 1 255 1",specularPower:"10",scalarOpacity:"8 -3024 0.705882 -900.0 0.715686 -500.0 0 3071 0",specular:"0.2",shade:"1",ambient:"0.1",colorTransfer:"16 -3024 1 1 1 -900.0 0.2 1.0 1.0 -500.0 0.3 0.3 1.0 3071 0 0 0 ",diffuse:"0.9",interpolation:"1"},{name:"MR-Angio",gradientOpacity:"4 0 1 255 1",specularPower:"1",scalarOpacity:"12 -2048 0 151.354 0 158.279 0.4375 190.112 0.580357 200.873 0.732143 3661 0.741071",specular:"0",shade:"1",ambient:"0.2",colorTransfer:"24 -2048 0 0 0 151.354 0 0 0 158.279 0.74902 0.376471 0 190.112 1 0.866667 0.733333 200.873 0.937255 0.937255 0.937255 3661 1 1 1",diffuse:"1",interpolation:"1"},{name:"MR-Default",gradientOpacity:"4 0 1 255 1",specularPower:"1",scalarOpacity:"12 0 0 20 0 40 0.15 120 0.3 220 0.375 1024 0.5",specular:"0",shade:"1",ambient:"0.2",colorTransfer:"24 0 0 0 0 20 0.168627 0 0 40 0.403922 0.145098 0.0784314 120 0.780392 0.607843 0.380392 220 0.847059 0.835294 0.788235 1024 1 1 1",diffuse:"1",interpolation:"1"},{name:"MR-MIP",gradientOpacity:"4 0 1 255 1",specularPower:"1",scalarOpacity:"8 0 0 98.3725 0 416.637 1 2800 1",specular:"0",shade:"0",ambient:"0.2",colorTransfer:"16 0 1 1 1 98.3725 1 1 1 416.637 1 1 1 2800 1 1 1",diffuse:"1",interpolation:"1"},{name:"MR-T2-Brain",gradientOpacity:"4 0 1 160.25 1",specularPower:"40",scalarOpacity:"10 0 0 36.05 0 218.302 0.171429 412.406 1 641 1",specular:"0.5",shade:"1",ambient:"0.3",colorTransfer:"16 0 0 0 0 98.7223 0.956863 0.839216 0.192157 412.406 0 0.592157 0.807843 641 1 1 1",diffuse:"0.6",interpolation:"1"},{name:"DTI-FA-Brain",gradientOpacity:"4 0 1 0.9950 1",specularPower:"40",scalarOpacity:"16 0 0 0 0 0.3501 0.0158 0.49379 0.7619 0.6419 1 0.9920 1 0.9950 0 0.9950 0",specular:"0.5",shade:"1",ambient:"0.3",colorTransfer:"28 0 1 0 0 0 1 0 0 0.24974 0.4941 1 0 0.49949 0 0.9882 1 0.7492 0.51764 0 1 0.9950 1 0 0 0.9950 1 0 0",diffuse:"0.9",interpolation:"1"}];function te(e,t,r,n,i,a,o){try{var s=e[a](o),u=s.value}catch(e){return void r(e)}s.done?t(u):Promise.resolve(u).then(n,i)}function re(e){return function(){var t=this,r=arguments;return new Promise((function(n,i){var a=e.apply(t,r);function o(e){te(a,n,i,o,s,"next",e)}function s(e){te(a,n,i,o,s,"throw",e)}o(void 0)}))}}var ne=X(2841),ie=X.n(ne),ae=X(3739),oe=X.n(ae);function se(e){var t=function(e,t){if("object"!==Z(e)||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var n=r.call(e,"string");if("object"!==Z(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"===Z(t)?t:String(t)}function ue(e,t,r){return(t=se(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}X(6215);var le=X(7283),ce=X.n(le),de=X(785),ve=X.n(de),fe=X(573),pe=X.n(fe);function he(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function ge(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,se(n.key),n)}}function me(e,t,r){return t&&ge(e.prototype,t),r&&ge(e,r),Object.defineProperty(e,"prototype",{writable:!1}),e}function ye(e){var t=e.indexOf(":");return e.substring(t+1)}var we=X(8197),Ie=X.n(we),Ce=X(7953),be=X.n(Ce),Ee=X(7903),Pe=X.n(Ee),ke=X(9199),Re={},Oe={get:function(e){return Re[e]},set:function(e){var t=e.id;Re[t]=e},delete:function(e){return delete Re[e]},getAll:function(){var e=Object.keys(Re).map((function(e){return Re[e]}));return e.sort((function(e,t){return"_"===e.id[0]&&"_"!==t.id[0]?1:"_"!==e.id[0]&&"_"===t.id[0]?-1:0})),e}};function Ae(e){return Oe.get(e)}function Te(){return Oe.getAll()}var Se=Ae,xe=function(e){return e&&"object"===Z(e)&&"[object RegExp]"!==Object.prototype.toString.call(e)&&"[object Date]"!==Object.prototype.toString.call(e)},De=function(e,t){var r;return t&&!0===t.clone&&xe(e)?Me((r=e,Array.isArray(r)?[]:{}),e,t):e},_e=function(e,t,r){var n=e.slice();return t.forEach((function(t,i){void 0===n[i]?n[i]=De(t,r):xe(t)?n[i]=Me(e[i],t,r):-1===e.indexOf(t)&&n.push(De(t,r))})),n},Me=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:void 0,n=Array.isArray(t),i=(r||{arrayMerge:_e}).arrayMerge||_e;return n?Array.isArray(e)?i(e,t,r):De(t,r):function(e,t,r){var n={};return xe(e)&&Object.keys(e).forEach((function(t){n[t]=De(e[t],r)})),Object.keys(t).forEach((function(i){xe(t[i])&&e[i]?n[i]=Me(e[i],t[i],r):n[i]=De(t[i],r)})),n}(e,t,r)},Ve=Me,Le=!1,Ue=!0,je=A.TRUE,Ne={gpuTier:void 0,detectGPUConfig:{},rendering:{useCPURendering:!1,preferSizeOverAccuracy:!1,useNorm16Texture:!1,strictZSpacingForVolumeViewport:!0}},Fe={gpuTier:void 0,detectGPUConfig:{},rendering:{useCPURendering:!1,preferSizeOverAccuracy:!1,useNorm16Texture:!1,strictZSpacingForVolumeViewport:!0}};function Ge(){var e,t=(e=document.createElement("canvas")).getContext("webgl2")||e.getContext("webgl")||e.getContext("experimental-webgl");return t instanceof WebGLRenderingContext||t instanceof WebGL2RenderingContext}function We(){return Be.apply(this,arguments)}function Be(){return Be=re(ie().mark((function e(){var t,r=arguments;return ie().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(t=r.length>0&&void 0!==r[0]?r[0]:Fe,!Le){e.next=3;break}return e.abrupt("return",Le);case 3:if(Fe=Ve(Ne,t),Ge()){e.next=10;break}console.log("CornerstoneRender: GPU not detected, using CPU rendering"),Fe.rendering.useCPURendering=!0,e.next=18;break;case 10:if(e.t0=Fe.gpuTier,e.t0){e.next=15;break}return e.next=14,(0,ke.getGPUTier)(Fe.detectGPUConfig);case 14:e.t0=e.sent;case 15:Fe.gpuTier=e.t0,console.log("CornerstoneRender: Using detect-gpu to get the GPU benchmark:",Fe.gpuTier),Fe.gpuTier.tier<1?(console.log("CornerstoneRender: GPU is not powerful enough, using CPU rendering"),Fe.rendering.useCPURendering=!0):console.log("CornerstoneRender: using GPU rendering");case 18:return Ye(je),Le=!0,e.abrupt("return",Le);case 21:case"end":return e.stop()}}),e)}))),Be.apply(this,arguments)}function qe(e){Fe.rendering.useCPURendering=e,Le=!0,et()}function ze(e){Fe.rendering.preferSizeOverAccuracy=e,Le=!0,et()}function He(){Fe.rendering.useCPURendering=!Ge(),et()}function Ke(){return Fe.rendering.useCPURendering}function Ye(e){return e==A.AUTO?(je=A.AUTO,void(function(){try{return!!new SharedArrayBuffer(0)}catch(e){return!1}}()?(Ue=!0,console.log("CornerstoneRender: using SharedArrayBuffer")):(Ue=!1,console.warn("CornerstoneRender: SharedArray Buffer not allowed, performance may be slower.\n Try ensuring page is cross-origin isolated to enable SharedArrayBuffer.")))):e==A.TRUE||1==e?(je=A.TRUE,void(Ue=!0)):e==A.FALSE||0==e?(je=A.FALSE,void(Ue=!1)):void 0}function Ze(){Ye(je)}function Xe(){return Ue}function Qe(){return Le}function $e(){return Fe}function Je(e){Fe=e,et()}function et(){Te().forEach((function(e){return e.getViewports().forEach((function(e){var t;return null===(t=e.updateRenderingPipeline)||void 0===t?void 0:t.call(e)}))}))}var tt={updatedFrames:[]};function rt(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};Object.assign(t,tt,r),be().extend(e,t,r),function(e,t){t.classHierarchy.push("vtkStreamingOpenGLTexture");var r=e.create3DFilterableFromRaw;e.create3DFilterableFromRaw=function(e,n,i,a,o,s,u){t.inputDataType=o,t.inputNumComps=a,r(e,n,i,a,o,s,u)},e.update3DFromRaw=function(r){var n=t.updatedFrames;if(n.length){var i,a;if(t._openGLRenderWindow.activateTexture(e),e.createTexture(),e.bind(),r instanceof Uint8Array)i=1,a=Uint8Array;else if(r instanceof Int16Array)i=2,a=Int16Array;else if(r instanceof Uint16Array)i=2,a=Uint16Array;else{if(!(r instanceof Float32Array))throw new Error("No support for given TypedArray.");i=4,a=Float32Array}for(var o=0;o<n.length;o++)n[o]&&t.fillSubImage3D(r,o,i,a);return t.updatedFrames=[],t.generateMipmap&&t.context.generateMipmap(t.target),e.deactivate(),!0}},t.fillSubImage3D=function(e,r,n,i){var a=e.buffer,o=r*(t.width*t.height*t.components*n),s=t.width*t.components,u=t.context,l=u.getParameter(u.MAX_TEXTURE_SIZE),c=Math.floor(n*l/t.width);c=Math.min(c,t.height);var d=$e().rendering,v=d.useNorm16Texture,f=d.preferSizeOverAccuracy;v&&!f&&(c=1);for(var p=s*c,h=p*n,g=Math.floor(t.height/c),m=t.height%c,y=s*m,w=0;w<g;w++){var I=w*c,C=new i(a,o+w*h,p);if(t.useHalfFloat&&(i===Uint16Array||i===Int16Array)){for(var b=0;b<C.length;b++)C[b]=Pe().toHalf(C[b]);i===Int16Array&&(C=new Uint16Array(C))}u.texSubImage3D(t.target,0,0,I,r,t.width,c,1,t.format,t.openGLDataType,C)}if(0!==m){var E=g*c,P=new i(a,o+g*h,y);u.texSubImage3D(t.target,0,0,E,r,t.width,m,1,t.format,t.openGLDataType,P)}},e.getTextureParameters=function(){return{width:t.width,height:t.height,depth:t.depth,numComps:t.inputNumComps,dataType:t.inputDataType}},e.setUpdatedFrame=function(e){t.updatedFrames[e]=!0}}(e,t)}var nt={newInstance:Ie().newInstance(rt,"vtkStreamingOpenGLTexture"),extend:rt},it=function(){function e(t){he(this,e),ue(this,"_imageIds",void 0),ue(this,"_imageIdsIndexMap",new Map),ue(this,"_imageURIsIndexMap",new Map),ue(this,"scalarData",void 0),ue(this,"volumeId",void 0),ue(this,"isPreScaled",!1),ue(this,"dimensions",void 0),ue(this,"direction",void 0),ue(this,"metadata",void 0),ue(this,"origin",void 0),ue(this,"scaling",void 0),ue(this,"sizeInBytes",void 0),ue(this,"spacing",void 0),ue(this,"numVoxels",void 0),ue(this,"imageData",void 0),ue(this,"vtkOpenGLTexture",void 0),ue(this,"loadStatus",void 0),ue(this,"referencedVolumeId",void 0),ue(this,"hasPixelSpacing",void 0),ue(this,"cancelLoading",void 0),this.volumeId=t.volumeId,this.metadata=t.metadata,this.dimensions=t.dimensions,this.spacing=t.spacing,this.origin=t.origin,this.direction=t.direction,this.imageData=t.imageData,this.scalarData=t.scalarData,this.sizeInBytes=t.sizeInBytes,this.vtkOpenGLTexture=nt.newInstance(),this.numVoxels=this.dimensions[0]*this.dimensions[1]*this.dimensions[2],t.scaling&&(this.scaling=t.scaling),t.referencedVolumeId&&(this.referencedVolumeId=t.referencedVolumeId)}return me(e,[{key:"imageIds",get:function(){return this._imageIds},set:function(e){this._imageIds=e,this._reprocessImageIds()}},{key:"_reprocessImageIds",value:function(){var e=this;this._imageIdsIndexMap.clear(),this._imageURIsIndexMap.clear(),this._imageIds.forEach((function(t,r){var n=ye(t);e._imageIdsIndexMap.set(t,r),e._imageURIsIndexMap.set(n,r)}))}},{key:"isDynamicVolume",value:function(){return!1}},{key:"getScalarData",value:function(){if((e=this.scalarData)instanceof Int8Array||e instanceof Uint8Array||e instanceof Uint8ClampedArray||e instanceof Int16Array||e instanceof Uint16Array||e instanceof Int32Array||e instanceof Uint32Array||e instanceof Float32Array||e instanceof Float64Array)return this.scalarData;var e;throw new Error("Unknown scalar data type")}},{key:"getImageIdIndex",value:function(e){return this._imageIdsIndexMap.get(e)}},{key:"getImageURIIndex",value:function(e){return this._imageURIsIndexMap.get(e)}},{key:"destroy",value:function(){this.imageData.delete(),this.imageData=null,this.scalarData=null,this.vtkOpenGLTexture.releaseGraphicsResources(),this.vtkOpenGLTexture.delete()}}]),e}(),at=it,ot=new(function(){function e(){he(this,e),ue(this,"listeners",void 0),this.listeners={}}return me(e,[{key:"reset",value:function(){this.listeners={}}},{key:"addEventListener",value:function(e,t){this.listeners[e]||(this.listeners[e]=[]),-1===this.listeners[e].indexOf(t)&&this.listeners[e].push(t)}},{key:"removeEventListener",value:function(e,t){if(this.listeners[e])for(var r=this.listeners[e],n=r.length,i=0;i<n;i++)if(r[i]===t)return void r.splice(i,1)}},{key:"dispatchEvent",value:function(e){if(this.listeners[e.type]){for(var t=this.listeners[e.type].slice(),r=t.length,n=0;n<r;n++)t[n].call(this,e);return!e.defaultPrevented}}}]),e}());function st(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:ot,t=arguments.length>1?arguments[1]:void 0,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;if(!t)throw new Error("Event type was not defined");var n=new CustomEvent(t,{detail:r,cancelable:!0});return e.dispatchEvent(n)}function ut(e,t){var r="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!r){if(Array.isArray(e)||(r=function(e,t){if(e){if("string"==typeof e)return lt(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?lt(e,t):void 0}}(e))||t&&e&&"number"==typeof e.length){r&&(e=r);var n=0,i=function(){};return{s:i,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,o=!0,s=!1;return{s:function(){r=r.call(e)},n:function(){var e=r.next();return o=e.done,e},e:function(e){s=!0,a=e},f:function(){try{o||null==r.return||r.return()}finally{if(s)throw a}}}}function lt(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r<t;r++)n[r]=e[r];return n}var ct=new(function(){function e(){var t=this;he(this,e),ue(this,"_imageCache",new Map),ue(this,"_volumeCache",new Map),ue(this,"_geometryCache",void 0),ue(this,"_imageCacheSize",0),ue(this,"_volumeCacheSize",0),ue(this,"_maxCacheSize",3221225472),ue(this,"_maxInstanceSize",2147483640),ue(this,"setMaxCacheSize",(function(e){if(!e||"number"!=typeof e){var r="New max cacheSize ".concat(t._maxCacheSize," should be defined and should be a number.");throw new Error(r)}t._maxCacheSize=e})),ue(this,"isCacheable",(function(e){return!(e>t._maxInstanceSize)&&t.getBytesAvailable()+t._imageCacheSize>e})),ue(this,"getMaxCacheSize",(function(){return t._maxCacheSize})),ue(this,"getMaxInstanceSize",(function(){return t._maxInstanceSize})),ue(this,"getCacheSize",(function(){return t._imageCacheSize+t._volumeCacheSize})),ue(this,"_decacheImage",(function(e){var r=t._imageCache.get(e).imageLoadObject;r.cancelFn&&r.cancelFn(),r.decache&&r.decache(),t._imageCache.delete(e)})),ue(this,"_decacheVolume",(function(e){var r=t._volumeCache.get(e),n=r.volumeLoadObject,i=r.volume;i.cancelLoading&&i.cancelLoading(),i.imageData&&i.imageData.delete(),n.cancelFn&&n.cancelFn(),n.decache&&n.decache(),t._volumeCache.delete(e)})),ue(this,"purgeCache",(function(){for(var e=t._imageCache.keys();;){var r=e.next(),n=r.value;if(r.done)break;t.removeImageLoadObject(n),st(ot,p.IMAGE_CACHE_IMAGE_REMOVED,{imageId:n})}t.purgeVolumeCache()})),ue(this,"purgeVolumeCache",(function(){for(var e=t._volumeCache.keys();;){var r=e.next(),n=r.value;if(r.done)break;t.removeVolumeLoadObject(n),st(ot,p.VOLUME_CACHE_VOLUME_REMOVED,{volumeId:n})}})),ue(this,"getVolumeLoadObject",(function(e){if(void 0===e)throw new Error("getVolumeLoadObject: volumeId must not be undefined");var r=t._volumeCache.get(e);if(void 0!==r)return r.timeStamp=Date.now(),r.volumeLoadObject})),ue(this,"getGeometry",(function(e){if(null==e)throw new Error("getGeometry: geometryId must not be undefined");var r=t._geometryCache.get(e);if(void 0!==r)return r.timeStamp=Date.now(),r.geometry})),ue(this,"getVolume",(function(e){if(void 0===e)throw new Error("getVolume: volumeId must not be undefined");var r=t._volumeCache.get(e);if(void 0!==r)return r.timeStamp=Date.now(),r.volume})),ue(this,"removeImageLoadObject",(function(e){if(void 0===e)throw new Error("removeImageLoadObject: imageId must not be undefined");var r=t._imageCache.get(e);if(void 0===r)throw new Error("removeImageLoadObject: imageId was not present in imageCache");t._incrementImageCacheSize(-r.sizeInBytes);var n={imageId:e};st(ot,p.IMAGE_CACHE_IMAGE_REMOVED,n),t._decacheImage(e)})),ue(this,"removeVolumeLoadObject",(function(e){if(void 0===e)throw new Error("removeVolumeLoadObject: volumeId must not be undefined");var r=t._volumeCache.get(e);if(void 0===r)throw new Error("removeVolumeLoadObject: volumeId was not present in volumeCache");t._incrementVolumeCacheSize(-r.sizeInBytes);var n={volume:r,volumeId:e};st(ot,p.VOLUME_CACHE_VOLUME_REMOVED,n),t._decacheVolume(e)})),ue(this,"putGeometryLoadObject",(function(e,r){if(null==e)throw new Error("putGeometryLoadObject: geometryId must not be undefined");if(t._geometryCache.has(e))throw new Error("putGeometryLoadObject: geometryId already present in geometryCache");var n={geometryId:e,geometryLoadObject:r,loaded:!1,timeStamp:Date.now(),sizeInBytes:0};return t._geometryCache.set(e,n),r.promise.then((function(r){if(t._geometryCache.has(e)){if(Number.isNaN(r.sizeInBytes))throw new Error("putGeometryLoadObject: geometry.sizeInBytes is not a number");n.loaded=!0,n.geometry=r,n.sizeInBytes=r.sizeInBytes;var i={geometry:r,geometryId:e};st(ot,p.GEOMETRY_CACHE_GEOMETRY_ADDED,i)}else console.warn("putGeometryLoadObject: geometryId was removed from geometryCache")})).catch((function(r){throw t._geometryCache.delete(e),r}))})),ue(this,"_incrementImageCacheSize",(function(e){t._imageCacheSize+=e})),ue(this,"_incrementVolumeCacheSize",(function(e){t._volumeCacheSize+=e})),this._geometryCache=new Map}return me(e,[{key:"getBytesAvailable",value:function(){return this.getMaxCacheSize()-this.getCacheSize()}},{key:"decacheIfNecessaryUntilBytesAvailable",value:function(e,t){var r=this.getBytesAvailable();if(r>=e)return r;var n=Array.from(this._imageCache.values());n.sort((function(e,t){return e.timeStamp>t.timeStamp?1:e.timeStamp<t.timeStamp?-1:0}));var i=n.map((function(e){return e.imageId})),a=i;t&&(a=i.filter((function(e){return!t.includes(e)})));var o,s=ut(a);try{for(s.s();!(o=s.n()).done;){var u=o.value;if(this.removeImageLoadObject(u),st(ot,p.IMAGE_CACHE_IMAGE_REMOVED,{imageId:u}),(r=this.getBytesAvailable())>=e)return r}}catch(e){s.e(e)}finally{s.f()}var l,c=ut(i=(n=Array.from(this._imageCache.values())).map((function(e){return e.imageId})));try{for(c.s();!(l=c.n()).done;){var d=l.value;if(this.removeImageLoadObject(d),st(ot,p.IMAGE_CACHE_IMAGE_REMOVED,{imageId:d}),(r=this.getBytesAvailable())>=e)return r}}catch(e){c.e(e)}finally{c.f()}}},{key:"putImageLoadObject",value:function(e,t){var r=this;if(void 0===e)throw new Error("putImageLoadObject: imageId must not be undefined");if(void 0===t.promise)throw new Error("putImageLoadObject: imageLoadObject.promise must not be undefined");if(this._imageCache.has(e))throw new Error("putImageLoadObject: imageId already in cache");if(t.cancelFn&&"function"!=typeof t.cancelFn)throw new Error("putImageLoadObject: imageLoadObject.cancel must be a function");var n={loaded:!1,imageId:e,sharedCacheKey:void 0,imageLoadObject:t,timeStamp:Date.now(),sizeInBytes:0};return this._imageCache.set(e,n),t.promise.then((function(t){if(r._imageCache.get(e)){if(void 0===t.sizeInBytes||Number.isNaN(t.sizeInBytes))throw new Error("putImageLoadObject: image.sizeInBytes must not be undefined");if(void 0===t.sizeInBytes.toFixed)throw new Error("putImageLoadObject: image.sizeInBytes is not a number");if(!r.isCacheable(t.sizeInBytes))throw new Error(p.CACHE_SIZE_EXCEEDED);r.decacheIfNecessaryUntilBytesAvailable(t.sizeInBytes),n.loaded=!0,n.image=t,n.sizeInBytes=t.sizeInBytes,r._incrementImageCacheSize(n.sizeInBytes);var i={image:n};st(ot,p.IMAGE_CACHE_IMAGE_ADDED,i),n.sharedCacheKey=t.sharedCacheKey}else console.warn("The image was purged from the cache before it completed loading.")})).catch((function(t){throw r._imageCache.delete(e),t}))}},{key:"getImageLoadObject",value:function(e){if(void 0===e)throw new Error("getImageLoadObject: imageId must not be undefined");var t=this._imageCache.get(e);if(void 0!==t)return t.timeStamp=Date.now(),t.imageLoadObject}},{key:"isLoaded",value:function(e){var t=this._imageCache.get(e);return!!t&&t.loaded}},{key:"getVolumeContainingImageId",value:function(e){for(var t=Array.from(this._volumeCache.keys()),r=ye(e),n=0,i=t;n<i.length;n++){var a,o=i[n],s=this._volumeCache.get(o).volume;if(null==s||null===(a=s.imageIds)||void 0===a||!a.length)return;var u=s.getImageURIIndex(r);if(u>-1)return{volume:s,imageIdIndex:u}}}},{key:"getCachedImageBasedOnImageURI",value:function(e){var t=ye(e),r=Array.from(this._imageCache.keys()).find((function(e){return ye(e)===t}));if(r)return this._imageCache.get(r)}},{key:"putVolumeLoadObject",value:function(e,t){var r=this;if(void 0===e)throw new Error("putVolumeLoadObject: volumeId must not be undefined");if(void 0===t.promise)throw new Error("putVolumeLoadObject: volumeLoadObject.promise must not be undefined");if(this._volumeCache.has(e))throw new Error("putVolumeLoadObject: volumeId:".concat(e," already in cache"));if(t.cancelFn&&"function"!=typeof t.cancelFn)throw new Error("putVolumeLoadObject: volumeLoadObject.cancel must be a function");var n={loaded:!1,volumeId:e,volumeLoadObject:t,timeStamp:Date.now(),sizeInBytes:0};return this._volumeCache.set(e,n),t.promise.then((function(t){if(r._volumeCache.get(e)){if(Number.isNaN(t.sizeInBytes))throw new Error("putVolumeLoadObject: volume.sizeInBytes must not be undefined");if(void 0===t.sizeInBytes.toFixed)throw new Error("putVolumeLoadObject: volume.sizeInBytes is not a number");r.decacheIfNecessaryUntilBytesAvailable(t.sizeInBytes,t.imageIds),n.volume=t,n.sizeInBytes=t.sizeInBytes,r._incrementVolumeCacheSize(n.sizeInBytes);var i={volume:n};st(ot,p.VOLUME_CACHE_VOLUME_ADDED,i)}else console.warn("The image was purged from the cache before it completed loading.")})).catch((function(t){throw r._volumeCache.delete(e),t}))}}]),e}());function dt(){return([1e7]+-1e3+-4e3+-8e3+-1e11).replace(/[018]/g,(function(e){return(e^crypto.getRandomValues(new Uint8Array(1))[0]&15>>e/4).toString(16)}))}function vt(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function ft(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?vt(Object(r),!0).forEach((function(t){ue(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):vt(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function pt(e){var t=e.dimensions,r=e.metadata,n=e.spacing,i=e.direction,a=e.origin,o=1;"RGB"===r.PhotometricInterpretation&&(o=3);var s=ce().newInstance(),u={numberOfComponents:o};return s.setDimensions(t),s.setSpacing(n),s.setDirection(i),s.setOrigin(a),e.isDynamicVolume()?function(e,t,r){t.forEach((function(t,n){var i=ve().newInstance(ft({name:"timePoint-".concat(n),values:t},r));e.getPointData().addArray(i)})),e.getPointData().setActiveScalars("timePoint-0")}(s,e.getScalarDataArrays(),u):function(e,t,r){var n=ve().newInstance(ft({name:"Pixels",values:t},r));e.getPointData().setScalars(n)}(s,e.getScalarData(),u),s}var ht,gt={};function mt(e,t){var r=e.indexOf(":"),n=e.substring(0,r),i=gt[n];if(null==i){if(void 0!==ht)return ht(e,t);throw new Error("loadVolumeFromVolumeLoader: no volume loader for volumeId")}var a=i(e,t);return a.promise.then((function(e){st(ot,p.VOLUME_LOADED,{volume:e})}),(function(t){var r={volumeId:e,error:t};st(ot,p.VOLUME_LOADED_FAILED,r)})),a}function yt(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{imageIds:[]};if(void 0===e)throw new Error("loadVolume: parameter volumeId must not be undefined");var r=ct.getVolumeLoadObject(e);return void 0!==r?r.promise:(r=mt(e,t)).promise.then((function(e){return e.imageData=pt(e),e}))}function wt(e,t){return It.apply(this,arguments)}function It(){return(It=re(ie().mark((function e(t,r){var n;return ie().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(void 0!==t){e.next=2;break}throw new Error("createAndCacheVolume: parameter volumeId must not be undefined");case 2:if(void 0===(n=ct.getVolumeLoadObject(t))){e.next=5;break}return e.abrupt("return",n.promise);case 5:return(n=mt(t,r)).promise.then((function(e){e.imageData=pt(e)})),ct.putVolumeLoadObject(t,n).catch((function(e){throw e})),e.abrupt("return",n.promise);case 9:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function Ct(e,t){return bt.apply(this,arguments)}function bt(){return(bt=re(ie().mark((function e(t,r){var n,i,a,o,s,u,l,c,d,v,f,h,g,m,y,w,I,C,b;return ie().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(n=ct.getVolume(t)){e.next=3;break}throw new Error("Cannot created derived volume: Referenced volume with id ".concat(t," does not exist."));case 3:if(i=r.volumeId,a=r.targetBuffer,void 0===i&&(i=dt()),o=n.metadata,s=n.dimensions,u=n.spacing,l=n.origin,c=n.direction,d=n.getScalarData(),v=d.length,g=$e().rendering.useNorm16Texture,!a){e.next=34;break}if("Float32Array"!==a.type){e.next=16;break}f=4*v,h=Float32Array,e.next=32;break;case 16:if("Uint8Array"!==a.type){e.next=21;break}f=v,h=Uint8Array,e.next=32;break;case 21:if(!g||"Uint16Array"!==a.type){e.next=26;break}f=2*v,h=Uint16Array,e.next=32;break;case 26:if(!g||"Int16Array"!==a.type){e.next=31;break}f=2*v,h=Uint16Array,e.next=32;break;case 31:throw new Error("TargetBuffer should be Float32Array or Uint8Array");case 32:e.next=36;break;case 34:f=4*v,h=Float32Array;case 36:if(ct.isCacheable(f)){e.next=39;break}throw new Error(p.CACHE_SIZE_EXCEEDED);case 39:return null!=a&&a.sharedArrayBuffer?(y=new SharedArrayBuffer(f),m=new h(y)):m=new h(v),w=ve().newInstance({name:"Pixels",numberOfComponents:1,values:m}),(I=ce().newInstance()).setDimensions(s),I.setSpacing(u),I.setDirection(c),I.setOrigin(l),I.getPointData().setScalars(w),C=new it({volumeId:i,metadata:pe()(o),dimensions:[s[0],s[1],s[2]],spacing:u,origin:l,direction:c,imageData:I,scalarData:m,sizeInBytes:f,referencedVolumeId:t}),b={promise:Promise.resolve(C)},e.next=51,ct.putVolumeLoadObject(i,b);case 51:return e.abrupt("return",C);case 52:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function Et(e,t){var r=arguments.length>2&&void 0!==arguments[2]&&arguments[2],n=e.scalarData,i=e.metadata,a=e.dimensions,o=e.spacing,s=e.origin,u=e.direction;if(!n||!(n instanceof Uint8Array||n instanceof Float32Array||n instanceof Uint16Array||n instanceof Int16Array))throw new Error("To use createLocalVolume you should pass scalarData of type Uint8Array, Uint16Array, Int16Array or Float32Array");void 0===t&&(t=dt());var l=ct.getVolume(t);if(l)return l;var c=a[0]*a[1]*a[2],d=n?n.buffer.byteLength:4*c;if(!ct.isCacheable(d))throw new Error(p.CACHE_SIZE_EXCEEDED);var v=ve().newInstance({name:"Pixels",numberOfComponents:1,values:n}),f=ce().newInstance();f.setDimensions(a),f.setSpacing(o),f.setDirection(u),f.setOrigin(s),f.getPointData().setScalars(v);var h=new it({volumeId:t,metadata:pe()(i),dimensions:[a[0],a[1],a[2]],spacing:o,origin:s,direction:u,imageData:f,scalarData:n,sizeInBytes:d});if(r)return h;var g={promise:Promise.resolve(h)};return ct.putVolumeLoadObject(t,g),h}function Pt(e,t){gt[e]=t}function kt(){return Object.keys(gt)}function Rt(e){var t=ht;return ht=e,t}var Ot=X(6009),At=X.n(Ot),Tt={scalarTexture:null};function St(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};Object.assign(t,Tt,r),At().extend(e,t,r),Ie().setGet(e,t,["scalarTexture"]),function(e,t){t.classHierarchy.push("vtkSharedVolumeMapper");var r=e.delete;e.delete=function(){t.scalarTexture=null,r()}}(e,t)}var xt={newInstance:Ie().newInstance(St,"vtkSharedVolumeMapper"),extend:St};function Dt(e,t){var r=xt.newInstance();$e().rendering.preferSizeOverAccuracy&&r.setPreferSizeOverAccuracy(!0),r.setInputData(e);var n=e.getSpacing(),i=(n[0]+n[1]+n[2])/6;return r.setMaximumSamplesPerRay(4e3),r.setSampleDistance(i),r.setScalarTexture(t),r}function _t(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r<t;r++)n[r]=e[r];return n}var Mt=function(){function e(t){he(this,e),ue(this,"id",void 0),ue(this,"awake",void 0),ue(this,"requestPool",void 0),ue(this,"numRequests",{interaction:0,thumbnail:0,prefetch:0}),ue(this,"maxNumRequests",void 0),ue(this,"grabDelay",void 0),ue(this,"timeoutHandle",void 0),this.id=t||dt(),this.requestPool={interaction:{0:[]},thumbnail:{0:[]},prefetch:{0:[]}},this.grabDelay=5,this.awake=!1,this.numRequests={interaction:0,thumbnail:0,prefetch:0},this.maxNumRequests={interaction:6,thumbnail:6,prefetch:5}}return me(e,[{key:"setMaxSimultaneousRequests",value:function(e,t){this.maxNumRequests[e]=t}},{key:"getMaxSimultaneousRequests",value:function(e){return this.maxNumRequests[e]}},{key:"destroy",value:function(){this.timeoutHandle&&window.clearTimeout(this.timeoutHandle)}},{key:"addRequest",value:function(e,t,r){var n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:0,i={requestFn:e,type:t,additionalDetails:r};void 0===this.requestPool[t][n]&&(this.requestPool[t][n]=[]),this.requestPool[t][n].push(i),this.awake?t===g.Interaction&&this.startGrabbing():(this.awake=!0,this.startGrabbing())}},{key:"filterRequests",value:function(e){var t=this;Object.keys(this.requestPool).forEach((function(r){var n=t.requestPool[r];Object.keys(n).forEach((function(t){n[t]=n[t].filter((function(t){return e(t)}))}))}))}},{key:"clearRequestStack",value:function(e){if(!this.requestPool[e])throw new Error("No category for the type ".concat(e," found"));this.requestPool[e]={0:[]}}},{key:"sendRequests",value:function(e){for(var t=this,r=this.maxNumRequests[e]-this.numRequests[e],n=0;n<r;n++){var i=this.getNextRequest(e);if(null===i)return!1;i&&(this.numRequests[e]++,this.awake=!0,i.requestFn().finally((function(){t.numRequests[e]--,t.startAgain()})))}return!0}},{key:"getNextRequest",value:function(e){var t,r=function(e,t){var r="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!r){if(Array.isArray(e)||(r=function(e,t){if(e){if("string"==typeof e)return _t(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?_t(e,t):void 0}}(e))||t&&e&&"number"==typeof e.length){r&&(e=r);var n=0,i=function(){};return{s:i,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,o=!0,s=!1;return{s:function(){r=r.call(e)},n:function(){var e=r.next();return o=e.done,e},e:function(e){s=!0,a=e},f:function(){try{o||null==r.return||r.return()}finally{if(s)throw a}}}}(this.getSortedPriorityGroups(e));try{for(r.s();!(t=r.n()).done;){var n=t.value;if(this.requestPool[e][n].length)return this.requestPool[e][n].shift()}}catch(e){r.e(e)}finally{r.f()}return null}},{key:"startGrabbing",value:function(){var e=this.sendRequests(g.Interaction),t=this.sendRequests(g.Thumbnail),r=this.sendRequests(g.Prefetch);e||t||r||(this.awake=!1)}},{key:"startAgain",value:function(){var e=this;this.awake&&(void 0!==this.grabDelay?this.timeoutHandle||(this.timeoutHandle=window.setTimeout((function(){e.timeoutHandle=null,e.startGrabbing()}),this.grabDelay)):this.startGrabbing())}},{key:"getSortedPriorityGroups",value:function(e){var t=this;return Object.keys(this.requestPool[e]).map(Number).filter((function(r){return t.requestPool[e][r].length})).sort((function(e,t){return e-t}))}},{key:"getRequestPool",value:function(){return this.requestPool}}]),e}(),Vt=(new Mt,new Mt("imageLoadPool"));Vt.grabDelay=0,Vt.setMaxSimultaneousRequests(g.Interaction,1e3),Vt.setMaxSimultaneousRequests(g.Thumbnail,1e3),Vt.setMaxSimultaneousRequests(g.Prefetch,1e3);var Lt,Ut=Vt,jt={};function Nt(e,t){var r=ct.getImageLoadObject(e);if(void 0!==r)return r;var n=ct.getVolumeContainingImageId(e);if(n&&n.volume.loadStatus.loaded){var i=n.volume,a=n.imageIdIndex;return i.convertToCornerstoneImage(e,a)}var o=ct.getCachedImageBasedOnImageURI(e);return o?r=o.imageLoadObject:(r=function(e,t){var r=e.indexOf(":"),n=e.substring(0,r),i=jt[n];if(null==i){if(void 0!==Lt)return Lt(e);throw new Error("loadImageFromImageLoader: no image loader for imageId")}var a=i(e,t);return a.promise.then((function(e){st(ot,p.IMAGE_LOADED,{image:e})}),(function(t){var r={imageId:e,error:t};st(ot,p.IMAGE_LOAD_FAILED,r)})),a}(e,t),r)}function Ft(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{priority:0,requestType:"prefetch"};if(void 0===e)throw new Error("loadImage: parameter imageId must not be undefined");return Nt(e,t).promise}function Gt(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{priority:0,requestType:"prefetch"};if(void 0===e)throw new Error("loadAndCacheImage: parameter imageId must not be undefined");var r=Nt(e,t);return ct.getImageLoadObject(e)||ct.putImageLoadObject(e,r).catch((function(e){console.warn(e)})),r.promise}function Wt(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{priority:0,requestType:"prefetch"};if(!e||0===e.length)throw new Error("loadAndCacheImages: parameter imageIds must be list of image Ids");return e.map((function(e){return Gt(e,t)}))}function Bt(e){Ut.filterRequests((function(t){var r=t.additionalDetails;return!r.imageId||r.imageId!==e}));var t=ct.getImageLoadObject(e);t&&t.cancelFn()}function qt(e){e.forEach((function(e){return Bt(e)}))}function zt(){var e=Ut.getRequestPool();Object.keys(e).forEach((function(t){var r=e[t];Object.keys(r).forEach((function(e){var t,n=r[e].pop().additionalDetails,i=n.imageId,a=n.volumeId;i?t=ct.getImageLoadObject(i):a&&(t=ct.getVolumeLoadObject(a)),t&&t.cancel()})),Ut.clearRequestStack(t)}))}function Ht(e,t){jt[e]=t}function Kt(e){var t=Lt;return Lt=e,t}function Yt(){Object.keys(jt).forEach((function(e){return delete jt[e]})),Lt=void 0}var Zt=[];function Xt(e){var t,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;for(t=0;t<Zt.length&&!(Zt[t].priority<=r);t++);Zt.splice(t,0,{priority:r,provider:e})}function Qt(e){for(var t=0;t<Zt.length;t++)if(Zt[t].provider===e){Zt.splice(t,1);break}}function $t(){for(;Zt.length>0;)Zt.pop()}function Jt(e){for(var t=arguments.length,r=new Array(t>1?t-1:0),n=1;n<t;n++)r[n-1]=arguments[n];for(var i=1===r.length?r[0]:r,a=0;a<Zt.length;a++){var o=Zt[a].provider(e,i);if(void 0!==o)return o}}function er(e,t){return{windowWidth:Math.abs(t-e)+1,windowCenter:(e+t+1)/2}}function tr(e,t){return{lower:t-.5-(e-1)/2,upper:t-.5+(e-1)/2}}function rr(e){for(var t,r=e[0],n=e[0],i=e.length,a=1;a<i;a++)t=e[a],r=Math.min(r,t),n=Math.max(n,t);return{min:r,max:n}}function nr(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function ir(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?nr(Object(r),!0).forEach((function(t){ue(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):nr(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}var ar=0,or=g.Prefetch;function sr(){return(sr=re(ie().mark((function e(t,r,n){var i,a,o,s;return ie().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(i=lr(r)){e.next=5;break}return e.next=4,cr(r,n);case 4:i=e.sent;case 5:if(i&&void 0!==i.lower&&void 0!==i.upper){e.next=7;break}throw new Error("Could not get VOI from metadata, nor from the min max of the image middle slice");case 7:i=ur(r,i),o=(a=i).lower,s=a.upper,t.getProperty().getRGBTransferFunction(0).setMappingRange(o,s);case 10:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function ur(e,t){var r=e.imageIds;return function(e,t){var r;return!("PT"!==e||!t.isPreScaled)&&!(null===(r=t.scaling)||void 0===r||!r.PT.suvbw)}((Jt("generalSeriesModule",r[Math.floor(r.length/2)])||{}).modality,e)?{lower:0,upper:5}:t}function lr(e){var t=e.imageIds,r=Jt("voiLutModule",t[Math.floor(t.length/2)]);if(r&&r.windowWidth&&r.windowCenter){var n=r.windowWidth,i=r.windowCenter,a={windowWidth:Array.isArray(n)?n[0]:n,windowCenter:Array.isArray(i)?i[0]:i},o=tr(Number(a.windowWidth),Number(a.windowCenter));return{lower:o.lower,upper:o.upper}}}function cr(e,t){return dr.apply(this,arguments)}function dr(){return(dr=re(ie().mark((function e(t,r){var n,i,a,o,s,u,l,c,d,v,f,p,h,g,m,y,w,I,C,b,E;return ie().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=t.imageIds,i=t.getScalarData(),a=Math.floor(n.length/2),o=t.imageIds[a],s=Jt("generalSeriesModule",o)||{},u=s.modality,l=Jt("modalityLutModule",o)||{},c=n.length,d=i.byteLength/c,v=i.length/c,f=i.BYTES_PER_ELEMENT,p={rescaleSlope:l.rescaleSlope,rescaleIntercept:l.rescaleIntercept,modality:u},"PT"===u&&(g=Jt("scalingModule",o))&&(h=ir(ir({},p),{},{suvbw:g.suvbw})),m=a*d,y={targetBuffer:{type:r?void 0:"Float32Array"},priority:ar,requestType:or,preScale:{enabled:!0,scalingParameters:h}},e.next=17,Gt(o,y);case 17:return w=e.sent,I=w?w.getPixelData():vr(t,m,f,v),C=rr(I),b=C.min,E=C.max,e.abrupt("return",{lower:b,upper:E});case 21:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function vr(e,t,r,n){var i=e.scalarData,a=i.volumeBuffer;i.BYTES_PER_ELEMENT!==r&&(t*=i.BYTES_PER_ELEMENT/r);var o=i.constructor,s=new o(n),u=new o(a,t,n);return s.set(u),s}var fr=function(e,t,r){return sr.apply(this,arguments)};function pr(){return pr=re(ie().mark((function e(t,r,n){var i,a,o,s,u,l,c,d,v,f,p=arguments;return ie().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return i=p.length>3&&void 0!==p[3]&&p[3],a=p.length>4&&void 0!==p[4]&&p[4],o=t.volumeId,s=t.callback,u=t.blendMode,e.next=5,yt(o);case 5:if(l=e.sent){e.next=8;break}throw new Error("imageVolume with id: ".concat(l.volumeId," does not exist"));case 8:if(c=l.imageData,d=l.vtkOpenGLTexture,v=Dt(c,d),u&&v.setBlendMode(u),(f=oe().newInstance()).setMapper(v),3===c.getPointData().getScalars().getNumberOfComponents()&&f.getProperty().setIndependentComponents(!1),!l.imageIds){e.next=18;break}return e.next=18,fr(f,l,a);case 18:return s&&s({volumeActor:f,volumeId:o}),i||hr(r,n,f,o),e.abrupt("return",f);case 21:case"end":return e.stop()}}),e)}))),pr.apply(this,arguments)}function hr(e,t,r,n){var i=r.getProperty().getRGBTransferFunction(0).getRange(),a={viewportId:t,range:{lower:i[0],upper:i[1]},volumeId:n};st(e,p.VOI_MODIFIED,a)}var gr=function(e,t,r){return pr.apply(this,arguments)},mr="viewport-element",yr="cornerstone-canvas";function wr(e){var t="canvas.".concat(yr),r="div.".concat(mr),n=e.querySelector(r)||function(e){var t=document.createElement("div");return t.style.position="relative",t.style.width="100%",t.style.height="100%",t.classList.add(mr),e.appendChild(t),t}(e);return n.querySelector(t)||function(e){var t=document.createElement("canvas");return t.style.position="absolute",t.style.width="100%",t.style.height="100%",t.classList.add(yr),e.appendChild(t),t}(n)}function Ir(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r<t;r++)n[r]=e[r];return n}function Cr(e,t){if(e){if("string"==typeof e)return Ir(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?Ir(e,t):void 0}}function br(e){return function(e){if(Array.isArray(e))return Ir(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||Cr(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}var Er=X(8021),Pr=X.n(Er),kr=X(6643),Rr=X.n(kr),Or=X(1128),Ar=X.n(Or),Tr=X(7664),Sr=X.n(Tr),xr=X(1474),Dr=X.n(xr),_r=X(2394),Mr=X.n(_r),Vr=X(582),Lr=X.n(Vr),Ur=X(7482),jr=X.n(Ur),Nr=X(6343),Fr=X.n(Nr),Gr=X(4363),Wr=X.n(Gr),Br=X(3982),qr=X.n(Br),zr=X(6130),Hr=X.n(zr),Kr=X(298),Yr=X.n(Kr),Zr=X(2398),Xr=X.n(Zr),Qr=X(4388),$r=X.n(Qr),Jr=X(2643),en=X.n(Jr),tn=X(9395),rn=X(3948),nn=X(6478);Ie().vtkWarningMacro;var an={};function on(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};Object.assign(t,an,r),$r().extend(e,t,r),t.scalarTexture=r.scalarTexture,t.previousState={},function(e,t){t.classHierarchy.push("vtkStreamingOpenGLVolumeMapper"),e.buildBufferObjects=function(e,r){var n=t.currentInput;if(n){var i=n.getPointData()&&n.getPointData().getScalars();if(i){var a=r.getProperty();if(!t.jitterTexture.getHandle()){for(var o=new Uint8Array(1024),s=0;s<1024;++s)o[s]=255*Math.random();t.jitterTexture.setMinificationFilter(tn.Filter.LINEAR),t.jitterTexture.setMagnificationFilter(tn.Filter.LINEAR),t.jitterTexture.create2DFromRaw(32,32,1,rn.VtkDataTypes.UNSIGNED_CHAR,o)}var u=i.getNumberOfComponents(),l=a.getIndependentComponents()?u:1,c="".concat(a.getMTime());if(t.opacityTextureString!==c){for(var d=1024,v=2048*l,f=new Float32Array(v),p=new Float32Array(d),h=0;h<l;++h){var g=a.getScalarOpacity(h),m=t.renderable.getSampleDistance()/a.getScalarOpacityUnitDistance(h),y=g.getRange();g.getTable(y[0],y[1],d,p,1);for(var w=0;w<d;++w)f[h*d*2+w]=1-Math.pow(1-p[w],m),f[h*d*2+w+d]=f[h*d*2+w]}if(t.opacityTexture.releaseGraphicsResources(t._openGLRenderWindow),t.opacityTexture.setMinificationFilter(tn.Filter.LINEAR),t.opacityTexture.setMagnificationFilter(tn.Filter.LINEAR),t._openGLRenderWindow.getWebgl2()||t.context.getExtension("OES_texture_float")&&t.context.getExtension("OES_texture_float_linear"))t.opacityTexture.create2DFromRaw(d,2*l,1,rn.VtkDataTypes.FLOAT,f);else{for(var I=new Uint8Array(v),C=0;C<v;++C)I[C]=255*f[C];t.opacityTexture.create2DFromRaw(d,2*l,1,rn.VtkDataTypes.UNSIGNED_CHAR,I)}t.opacityTextureString=c}if(c="".concat(a.getMTime()),t.colorTextureString!==c){for(var b=1024,E=new Uint8Array(2048*l*3),P=new Float32Array(3072),k=0;k<l;++k){var R=a.getRGBTransferFunction(k),O=R.getRange();R.getTable(O[0],O[1],b,P,1);for(var A=0;A<3072;++A)E[k*b*6+A]=255*P[A],E[k*b*6+A+3072]=255*P[A]}t.colorTexture.releaseGraphicsResources(t._openGLRenderWindow),t.colorTexture.setMinificationFilter(tn.Filter.LINEAR),t.colorTexture.setMagnificationFilter(tn.Filter.LINEAR),t.colorTexture.create2DFromRaw(b,2*l,3,rn.VtkDataTypes.UNSIGNED_CHAR,E),t.colorTextureString=c}if(c="".concat(n.getMTime()),t.scalarTextureString!==c){var T=n.getDimensions(),S=t.scalarTexture.getTextureParameters(),x=n.getPointData().getScalars().getDataType(),D=n.getPointData().getScalars().getData(),_=!0;if(S.dataType&&S.dataType===x){var M=S.width*S.height*S.depth*S.numComps;D.length===M&&(_=!1)}_?(t.scalarTexture.setOglNorm16Ext(t.context.getExtension("EXT_texture_norm16")),t.scalarTexture.releaseGraphicsResources(t._openGLRenderWindow),t.scalarTexture.resetFormatAndType(),t.scalarTexture.create3DFilterableFromRaw(T[0],T[1],T[2],u,i.getDataType(),i.getData(),t.renderable.getPreferSizeOverAccuracy())):(t.scalarTexture.deactivate(),t.scalarTexture.update3DFromRaw(D)),t.scalarTextureString=c}if(!t.tris.getCABO().getElementCount()){for(var V=new Float32Array(12),L=0;L<4;L++)V[3*L]=L%2*2-1,V[3*L+1]=L>1?1:-1,V[3*L+2]=-1;var U=new Uint16Array(8);U[0]=3,U[1]=0,U[2]=1,U[3]=3,U[4]=3,U[5]=0,U[6]=3,U[7]=2;var j=ve().newInstance({numberOfComponents:3,values:V});j.setName("points");var N=ve().newInstance({numberOfComponents:1,values:U});t.tris.getCABO().createVBO(N,"polys",nn.Representation.SURFACE,{points:j,cellOffset:0})}t.VBOBuildTime.modified()}}},e.getRenderTargetSize=function(){if(t._useSmallViewport)return[t._smallViewportWidth,t._smallViewportHeight];var e=t._openGLRenderer.getTiledSizeAndOrigin();return[e.usize,e.vsize]},e.getRenderTargetOffset=function(){var e=t._openGLRenderer.getTiledSizeAndOrigin();return[e.lowerLeftU,e.lowerLeftV]}}(e,t)}var sn={newInstance:Ie().newInstance(on,"vtkStreamingOpenGLVolumeMapper"),extend:on},un={};function ln(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};Object.assign(t,un,r),en().extend(e,t,r),function(e,t){t.classHierarchy.push("vtkStreamingOpenGLViewNodeFactory"),e.createNode=function(r){if(r.isDeleted())return null;for(var n=0,i=r.getClassName(n++),a=!1,o=Object.keys(t.overrides);i&&!a;)-1!==o.indexOf(i)?a=!0:i=r.getClassName(n++);if(!a)return null;var s=t.getModelInitialValues(r),u=t.overrides[i](s);return u.setMyFactory(e),u},t.getModelInitialValues=function(e){var t={};return"vtkSharedVolumeMapper"===e.getClassName()&&(t.scalarTexture=e.getScalarTexture()),t}}(e,t),e.registerOverride("vtkActor",Rr().newInstance),e.registerOverride("vtkActor2D",Ar().newInstance),e.registerOverride("vtkCamera",Sr().newInstance),e.registerOverride("vtkGlyph3DMapper",Dr().newInstance),e.registerOverride("vtkImageMapper",Mr().newInstance),e.registerOverride("vtkImageSlice",Lr().newInstance),e.registerOverride("vtkMapper",Fr().newInstance),e.registerOverride("vtkPixelSpaceCallbackMapper",jr().newInstance),e.registerOverride("vtkRenderer",Wr().newInstance),e.registerOverride("vtkSkybox",qr().newInstance),e.registerOverride("vtkSphereMapper",Hr().newInstance),e.registerOverride("vtkStickMapper",Yr().newInstance),e.registerOverride("vtkTexture",be().newInstance),e.registerOverride("vtkVolume",Xr().newInstance),e.registerOverride("vtkVolumeMapper",$r().newInstance),e.registerOverride("vtkSharedVolumeMapper",sn.newInstance)}var cn={newInstance:Ie().newInstance(ln,"vtkStreamingOpenGLViewNodeFactory"),extend:ln};function dn(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};Object.assign(t,r),Pr().extend(e,t,r),t.myFactory=cn.newInstance(),t.myFactory.registerOverride("vtkRenderWindow",vn),function(e,t){t.classHierarchy.push("vtkStreamingOpenGLRenderWindow")}(0,t)}var vn=Ie().newInstance(dn,"vtkStreamingOpenGLRenderWindow"),fn={newInstance:vn,extend:dn},pn=X(8281),hn=X.n(pn),gn=X(2329),mn=X.n(gn),yn=X(673),wn=X.n(yn);X(2348),X(2070),X(7474),X(6610);var In={background:[0,0,0],container:null};function Cn(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};Object.assign(t,In,r),Ie().obj(e,t),Ie().get(e,t,["renderWindow","openGLRenderWindow","interactor","container"]),Ie().event(e,t,"resize"),function(e,t){var r=e.invokeResize;delete e.invokeResize,t.renderWindow=mn().newInstance(),t.rendererMap={},t.openGLRenderWindow=fn.newInstance(),t.renderWindow.addView(t.openGLRenderWindow),t.interactor=wn().newInstance(),t.interactor.setView(t.openGLRenderWindow),t.interactor.initialize(),e.addRenderer=function(e){var r=e.viewport,n=e.id,i=e.background,a=hn().newInstance({viewport:r,background:i||t.background});t.renderWindow.addRenderer(a),t.rendererMap[n]=a},e.destroy=function(){t.renderWindow.getInteractor().delete()},e.removeRenderer=function(r){var n=e.getRenderer(r);t.renderWindow.removeRenderer(n),n.delete(),delete t.rendererMap[r]},e.getRenderer=function(e){return t.rendererMap[e]},e.getRenderers=function(){var e=t.rendererMap;return Object.keys(e).map((function(t){return{id:t,renderer:e[t]}}))},e.resize=function(){if(t.container){var e=t.container,n=e.width,i=e.height;t.openGLRenderWindow.setSize(Math.floor(n),Math.floor(i)),r(),t.renderWindow.render()}},e.setContainer=function(e){t.container=e,t.openGLRenderWindow.setContainer(t.container)},e.delete=Ie().chain(e.setContainer,e.destroy,t.openGLRenderWindow.delete,e.delete),e.resize()}(e,t)}var bn={newInstance:Ie().newInstance(Cn),extend:Cn};function En(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function Pn(e){return Pn=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},Pn(e)}function kn(){return kn="undefined"!=typeof Reflect&&Reflect.get?Reflect.get.bind():function(e,t,r){var n=function(e,t){for(;!Object.prototype.hasOwnProperty.call(e,t)&&null!==(e=Pn(e)););return e}(e,t);if(n){var i=Object.getOwnPropertyDescriptor(n,t);return i.get?i.get.call(arguments.length<3?e:r):i.value}},kn.apply(this,arguments)}function Rn(e,t){return Rn=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},Rn(e,t)}function On(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&Rn(e,t)}function An(e,t){if(t&&("object"===Z(t)||"function"==typeof t))return t;if(void 0!==t)throw new TypeError("Derived constructors may only return object or undefined");return En(e)}var Tn=X(1864),Sn=X.n(Tn),xn=X(2976),Dn=ct;function _n(e,t){var r=e.direction,n=e.spacing,i=r.slice(0,3),a=r.slice(3,6),o=r.slice(6,9),s=[xn.vec3.dot(i,t),xn.vec3.dot(a,t),xn.vec3.dot(o,t)],u=xn.vec3.create();return xn.vec3.set(u,s[0]*n[0],s[1]*n[1],s[2]*n[2]),xn.vec3.length(u)}function Mn(e){return Vn(e,"vtkVolume")||Vn(e,"vtkImageSlice")}function Vn(e,t){return!!e.actor.isA(t)}function Ln(e,t,r){if(e){var n=e.direction,i=e.imageIds;if(i&&i.length){var a=n.slice(6,9),o=xn.vec3.dot(a,r);if(!(Math.abs(o)<1-Y)){for(var s,u=_n(e,r)/2,l=0;l<i.length;l++){var c=i[l],d=Jt("imagePlaneModule",c).imagePositionPatient,v=xn.vec3.create();xn.vec3.sub(v,t,d);var f=xn.vec3.dot(v,r);Math.abs(f)<u&&(s=c)}return s}}}}function Un(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,i,a,o,s=[],u=!0,l=!1;try{if(a=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;u=!1}else for(;!(u=(n=a.call(r)).done)&&(s.push(n.value),s.length!==t);u=!0);}catch(e){l=!0,i=e}finally{try{if(!u&&null!=r.return&&(o=r.return(),Object(o)!==o))return}finally{if(l)throw i}}return s}}(e,t)||Cr(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}var jn=X(4795),Nn=X.n(jn),Fn=X(1038),Gn=X.n(Fn),Wn=X(1441),Bn=X.n(Wn);function qn(e){var t=[],r=Un(e.getRange(),2),n=r[0],i=r[1];e.getTable(n,i,1024,t),t=t.filter((function(e,t){return t%3==0}));var a=br(Array(1024).keys()).map((function(e,t){return n+(i-n)/1023*t})),o=t[256],s=Math.log((1-o)/o),u=a[256],l=t[768],c=Math.log((1-l)/l),d=a[768],v=Math.round(4*(d-u)/(s-c)),f=Math.round(u+v*s/4);return[Math.round(f-v/2),Math.round(f+v/2)]}var zn=new Map;function Hn(e){zn.set(e.Name,e)}function Kn(e){return zn.get(e)}function Yn(){return Array.from(zn.keys())}function Zn(e){if(e)for(var t=e.getSize(),r=0;r<t;r++){var n=[];e.getNodeValue(r,n),n[1]=1-n[1],n[2]=1-n[2],n[3]=1-n[3],e.setNodeValue(r,n)}}function Xn(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1024,r=er(e.lower,e.upper),n=r.windowWidth,i=r.windowCenter,a=br(Array(t+2).keys()).map((function(e){return e/(t+2)})).slice(1,-1).reduce((function(e,t){var r=function(e,t,r){return t-r/4*Math.log((1-e)/e)}(t,i,n);return e.concat(r,t,t,t,.5,0)}),[]),o=Nn().newInstance();return o.buildFunctionFromArray(ve().newInstance({values:a,numberOfComponents:6})),o}function Qn(e,t){for(var r=t.colorTransfer.split(" ").splice(1).map(parseFloat),n=function(e){for(var t=1/0,r=-1/0,n=0;n<e.length;n+=4)t=Math.min(t,e[n]),r=Math.max(r,e[n]);var i=(r-t)/2;return{shiftRange:[-i,i],min:t,max:r}}(r),i=n.shiftRange,a=i[0],o=i[1]-i[0],s=Nn().newInstance(),u=[],l=0;l<r.length;l+=4){var c=r[l],d=r[l+1],v=r[l+2],f=r[l+3];c=(c-a)/o,u.push([c,d,v,f])}!function(e,t,r){var n=t[1]-t[0],i=e.map((function(e){var r=Un(e,4),i=r[0],a=r[1],o=r[2],s=r[3];return[i*n+t[0],a,o,s]}));r.removeAllPoints(),i.forEach((function(e){var t=Un(e,4),n=t[0],i=t[1],a=t[2],o=t[3];return r.addRGBPoint(n,i,a,o)}))}(u,i,s),e.getProperty().setRGBTransferFunction(0,s);for(var p=t.scalarOpacity.split(" ").splice(1).map(parseFloat),h=Bn().newInstance(),g=[],m=0;m<p.length;m+=2){var y=p[m],w=p[m+1];y=(y-a)/o,g.push([y,w])}!function(e,t,r){var n=t[1]-t[0],i=e.map((function(e){var r=Un(e,2),i=r[0],a=r[1];return[i*n+t[0],a]}));r.removeAllPoints(),i.forEach((function(e){var t=Un(e,2),n=t[0],i=t[1];return r.addPoint(n,i)}))}(g,i,h),e.getProperty().setScalarOpacity(0,h);var I=Un(t.gradientOpacity.split(" ").splice(1).map(parseFloat),4),C=I[0],b=I[1],E=I[2],P=I[3];e.getProperty().setUseGradientOpacity(0,!0),e.getProperty().setGradientOpacityMinimumValue(0,C),e.getProperty().setGradientOpacityMinimumOpacity(0,b),e.getProperty().setGradientOpacityMaximumValue(0,E),e.getProperty().setGradientOpacityMaximumOpacity(0,P),"1"===t.interpolation&&e.getProperty().setInterpolationTypeToFastLinear();var k=parseFloat(t.ambient),R=parseFloat(t.diffuse),O=parseFloat(t.specular),A=parseFloat(t.specularPower);e.getProperty().setAmbient(k),e.getProperty().setDiffuse(R),e.getProperty().setSpecular(O),e.getProperty().setSpecularPower(A)}var $n=X(8847),Jn=X.n($n);function ei(e){var t=e.getMapper().getInputData(),r=t.extentToBounds(t.getExtent());return[[r[0],r[2],r[4]],[r[0],r[2],r[5]],[r[0],r[3],r[4]],[r[0],r[3],r[5]],[r[1],r[2],r[4]],[r[1],r[2],r[5]],[r[1],r[3],r[4]],[r[1],r[3],r[5]]]}var ti=Y*Y,ri=function(e){return Math.abs(Math.abs(e)-1)<ti},ni=function(e,t){return ri(e[t])||ri(e[t+1])||ri(e[t+2])},ii=function(e){return ni(e,0)&&ni(e,3)&&ni(e,6)};function ai(e,t,r){var n,i=e.getMapper().getInputData(),a=i.getDirection();if(ii(a))n=ei(e);else{var o=Un(i.getDimensions(),3),s=o[0],u=o[1],l=o[2];n=[[0,0,0],[s-1,0,0],[0,u-1,0],[s-1,u-1,0],[0,0,l-1],[s-1,0,l-1],[0,u-1,l-1],[s-1,u-1,l-1]].map((function(e){return i.indexToWorld(e)}))}var c=Jn().buildFromDegree().identity().rotateFromDirections(t,[1,0,0]);n.forEach((function(e){return c.apply(e)}));var d=br(r);c.apply(d);for(var v=d[0],f=1/0,p=-1/0,h=0;h<8;h++){var g=n[h][0];g>p&&(p=g),g<f&&(f=g)}return{min:f,max:p,current:v,actor:e,viewPlaneNormal:t,focalPoint:r}}var oi=1+Y,si=function(e){return!!kt().find((function(t){return(n=t)===(r=e.volumeId).substring(0,Math.min(r.length,n.length));var r,n}))};function ui(e,t,r){var n=t.viewPlaneNormal,i=e.getActors();if(!i||!i.length)return{spacingInNormalDirection:null,imageVolume:null,actorUID:null};var a=i.map((function(e){var t,r=null!==(t=e.referenceId)&&void 0!==t?t:e.uid;return ct.getVolume(r)})).filter((function(e){return!!e}));if(r){var o=a.findIndex((function(e){return e.volumeId===r})),s=a[o],u=i[o].uid;return{imageVolume:s,spacingInNormalDirection:li(s,n,e),actorUID:u}}if(!a.length)return{spacingInNormalDirection:null,imageVolume:null,actorUID:null};for(var l={spacingInNormalDirection:1/0,imageVolume:null,actorUID:null},c=a.find(si),d=0;d<a.length;d++){var v=a[d];if(!c||si(v)){var f=li(v,n,e);f*oi<l.spacingInNormalDirection&&(l.spacingInNormalDirection=f,l.imageVolume=v,l.actorUID=i[d].uid)}}return l}function li(e,t,r){var n=r.getProperties().slabThickness,i=n;return n||(i=_n(e,t)),i}var ci=function(e){var t=e.getCamera(),r=ui(e,t),n=r.spacingInNormalDirection,i=r.imageVolume;if(i){var a=t.viewPlaneNormal,o=t.focalPoint,s=e.getActors().find((function(e){return e.referenceId===i.volumeId||e.uid===i.volumeId}));s||console.warn("No actor found for with actorUID of",i.volumeId);var u=ai(s.actor,a,o),l=u.min,c=u.max,d=u.current,v=Math.round((c-l)/n)+1,f=(d-l)/(c-l)*v;return(f=Math.floor(f))>v-1?f=v-1:f<0&&(f=0),{numberOfSlices:v,imageIndex:f}}},di={},vi=X(8807),fi=X.n(vi);function pi(e,t,r){var n=Un(e,3),i=n[0],a=n[1],o=n[2],s=Un(t,3),u=s[0],l=s[1],c=s[2],d=Un(r,4),v=d[0],f=d[1],p=d[2],h=u-i,g=l-a,m=c-o,y=-1*(v*i+f*a+p*o-d[3])/(v*h+f*g+p*m);return[h*y+i,g*y+a,m*y+o]}function hi(e,t){var r=Un(e,3),n=r[0],i=r[1],a=r[2];return[n,i,a,n*t[0]+i*t[1]+a*t[2]]}function gi(e,t,r){var n=Un(e,4),i=n[0],a=n[1],o=n[2],s=n[3],u=Un(t,4),l=u[0],c=u[1],d=u[2],v=u[3],f=Un(r,4),p=f[0],h=f[1],g=f[2],m=f[3],y=xn.mat3.fromValues(i,l,p,a,c,h,o,d,g),w=xn.mat3.fromValues(s,v,m,a,c,h,o,d,g),I=xn.mat3.fromValues(i,l,p,s,v,m,o,d,g),C=xn.mat3.fromValues(i,l,p,a,c,h,s,v,m);return[xn.mat3.determinant(w)/xn.mat3.determinant(y),xn.mat3.determinant(I)/xn.mat3.determinant(y),xn.mat3.determinant(C)/xn.mat3.determinant(y)]}function mi(e,t){var r=arguments.length>2&&void 0!==arguments[2]&&arguments[2],n=Un(e,4),i=n[0],a=n[1],o=n[2],s=n[3],u=Un(t,3),l=i*u[0]+a*u[1]+o*u[2]-s,c=Math.abs(l)/Math.sqrt(i*i+a*a+o*o);return(r?Math.sign(l):1)*c}function yi(e,t,r){return Math.abs(e-t)<=r}function wi(e){return"number"==typeof e}function Ii(e){return"length"in e&&"number"==typeof e[0]}function Ci(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1e-5;return Z(e)===Z(t)&&null!==e&&null!==t&&(wi(e)&&wi(t)?yi(e,t,r):!(!Ii(e)||!Ii(t))&&function(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1e-5;if(e.length!==t.length)return!1;for(var n=0;n<e.length;n++)if(!yi(e[n],t[n],r))return!1;return!0}(e,t,r))}function bi(e){return Array.isArray(e)?e.some((function(e){return Number.isNaN(e)})):Number.isNaN(e)}function Ei(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function Pi(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?Ei(Object(r),!0).forEach((function(t){ue(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):Ei(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function ki(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r<t;r++)n[r]=e[r];return n}var Ri=function(){function e(t){he(this,e),ue(this,"id",void 0),ue(this,"element",void 0),ue(this,"canvas",void 0),ue(this,"renderingEngineId",void 0),ue(this,"type",void 0),ue(this,"flipHorizontal",!1),ue(this,"flipVertical",!1),ue(this,"isDisabled",void 0),ue(this,"viewportStatus",N.NO_DATA),ue(this,"sx",void 0),ue(this,"sy",void 0),ue(this,"sWidth",void 0),ue(this,"sHeight",void 0),ue(this,"_actors",void 0),ue(this,"defaultOptions",void 0),ue(this,"options",void 0),ue(this,"newActorAdded",!1),ue(this,"_suppressCameraModifiedEvents",!1),ue(this,"suppressEvents",void 0),ue(this,"hasPixelSpacing",!0),ue(this,"calibration",void 0),ue(this,"initialCamera",void 0),ue(this,"fitToCanvasCamera",void 0),ue(this,"getRotation",void 0),ue(this,"getFrameOfReferenceUID",void 0),ue(this,"canvasToWorld",void 0),ue(this,"worldToCanvas",void 0),ue(this,"customRenderViewportToCanvas",void 0),ue(this,"resize",void 0),ue(this,"getProperties",void 0),ue(this,"updateRenderingPipeline",void 0),ue(this,"getNumberOfSlices",void 0),this.id=t.id,this.renderingEngineId=t.renderingEngineId,this.type=t.type,this.element=t.element,this.canvas=t.canvas,this.sx=t.sx,this.sy=t.sy,this.sWidth=t.sWidth,this.sHeight=t.sHeight,this._actors=new Map,this.element.setAttribute("data-viewport-uid",this.id),this.element.setAttribute("data-rendering-engine-uid",this.renderingEngineId),this.defaultOptions=pe()(t.defaultOptions),this.suppressEvents=!!t.defaultOptions.suppressEvents&&t.defaultOptions.suppressEvents,this.options=pe()(t.defaultOptions),this.isDisabled=!1}var t;return me(e,[{key:"setRendered",value:function(){this.viewportStatus!==N.NO_DATA&&this.viewportStatus!==N.LOADING&&(this.viewportStatus=N.RENDERED)}},{key:"getRenderingEngine",value:function(){return Oe.get(this.renderingEngineId)}},{key:"getRenderer",value:function(){var e=this.getRenderingEngine();if(!e||e.hasBeenDestroyed)throw new Error("Rendering engine has been destroyed");return e.offscreenMultiRenderWindow.getRenderer(this.id)}},{key:"render",value:function(){this.getRenderingEngine().renderViewport(this.id)}},{key:"setOptions",value:function(e){var t,r,n=arguments.length>1&&void 0!==arguments[1]&&arguments[1];this.options=pe()(e),null!==(t=this.options)&&void 0!==t&&t.displayArea&&this.setDisplayArea(null===(r=this.options)||void 0===r?void 0:r.displayArea),n&&this.render()}},{key:"reset",value:function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];this.options=pe()(this.defaultOptions),e&&this.render()}},{key:"flip",value:function(e){var t=e.flipHorizontal,r=e.flipVertical,n=this.getDefaultImageData();if(n){var i=this.getCamera(),a=i.viewPlaneNormal,o=i.viewUp,s=i.focalPoint,u=i.position,l=xn.vec3.cross(xn.vec3.create(),a,o),c=xn.vec3.copy(xn.vec3.create(),o),d=xn.vec3.negate(xn.vec3.create(),a),v=xn.vec3.distance(u,s),f=n.getDimensions().map((function(e){return Math.floor(e/2)})),p=[f[0],f[1],f[2]],h=n.indexToWorld(p,xn.vec3.create()),g=this._getFocalPointForResetCamera(h,i,{resetPan:!0,resetToCenter:!1}),m=xn.vec3.subtract(xn.vec3.create(),s,g),y=xn.vec3.length(m),w=function(e){var t=xn.vec3.scale(xn.vec3.create(),e,2*xn.vec3.dot(m,e));return xn.vec3.subtract(t,t,m),xn.vec3.normalize(t,t),t};if(t){var I=w(c),C=xn.vec3.scaleAndAdd(xn.vec3.create(),g,I,y),b=xn.vec3.scaleAndAdd(xn.vec3.create(),C,d,v);this.setCamera({viewPlaneNormal:d,position:b,focalPoint:C}),this.flipHorizontal=!this.flipHorizontal}if(r){c=xn.vec3.negate(c,o);var E=w(l),P=xn.vec3.scaleAndAdd(xn.vec3.create(),g,E,y),k=xn.vec3.scaleAndAdd(xn.vec3.create(),P,d,v);this.setCamera({focalPoint:P,viewPlaneNormal:d,viewUp:c,position:k}),this.flipVertical=!this.flipVertical}this.render()}}},{key:"getDefaultImageData",value:function(){var e=this.getDefaultActor();if(e&&Mn(e))return e.actor.getMapper().getInputData()}},{key:"getDefaultActor",value:function(){return this.getActors()[0]}},{key:"getActors",value:function(){return Array.from(this._actors.values())}},{key:"getActor",value:function(e){return this._actors.get(e)}},{key:"getActorUIDByIndex",value:function(e){var t=this.getActors()[e];if(t)return t.uid}},{key:"getActorByIndex",value:function(e){return this.getActors()[e]}},{key:"setActors",value:function(e){this.removeAllActors(),this.addActors(e,!0)}},{key:"_removeActor",value:function(e){var t=this.getActor(e);t?(this.getRenderer().removeViewProp(t.actor),this._actors.delete(e)):console.warn("Actor ".concat(e," does not exist for this viewport"))}},{key:"removeActors",value:function(e){var t=this;e.forEach((function(e){t._removeActor(e)}))}},{key:"addActors",value:function(e){var t=this,r=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=this.getRenderingEngine();n&&!n.hasBeenDestroyed?(e.forEach((function(e){return t.addActor(e)})),this.resetCamera(r,r)):console.warn("Viewport::addActors::Rendering engine has not been initialized or has been destroyed")}},{key:"addActor",value:function(e){var t=e.uid,r=e.actor,n=this.getRenderingEngine();if(n&&!n.hasBeenDestroyed){if(!t||!r)throw new Error("Actors should have uid and vtk Actor properties");this.getActor(t)?console.warn("Actor ".concat(t," already exists for this viewport")):(this.getRenderer().addActor(r),this._actors.set(t,Object.assign({},e)),this.newActorAdded=!0)}else console.warn("Cannot add actor UID of ".concat(t," Rendering Engine has been destroyed"))}},{key:"removeAllActors",value:function(){this.getRenderer().removeAllViewProps(),this._actors=new Map}},{key:"resetCameraNoEvent",value:function(){this._suppressCameraModifiedEvents=!0,this.resetCamera(),this._suppressCameraModifiedEvents=!1}},{key:"setCameraNoEvent",value:function(e){this._suppressCameraModifiedEvents=!0,this.setCamera(e),this._suppressCameraModifiedEvents=!1}},{key:"_getViewImageDataIntersections",value:function(e,t,r){var n,i=r[0],a=r[1],o=r[2],s=i*t[0]+a*t[1]+o*t[2],u=e.getBounds(),l=[],c=function(e,t){var r="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!r){if(Array.isArray(e)||(r=function(e,t){if(e){if("string"==typeof e)return ki(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?ki(e,t):void 0}}(e))||t&&e&&"number"==typeof e.length){r&&(e=r);var n=0,i=function(){};return{s:i,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,o=!0,s=!1;return{s:function(){r=r.call(e)},n:function(){var e=r.next();return o=e.done,e},e:function(e){s=!0,a=e},f:function(){try{o||null==r.return||r.return()}finally{if(s)throw a}}}}(this._getEdges(u));try{for(c.s();!(n=c.n()).done;){var d=Un(n.value,2),v=Un(d[0],3),f=v[0],p=v[1],h=v[2],g=Un(d[1],3),m=g[0],y=g[1],w=g[2];if(i*(m-f)+a*(y-p)+o*(w-h)!=0){var I=pi([f,p,h],[m,y,w],[i,a,o,s]);this._isInBounds(I,u)&&l.push(I)}}}catch(e){c.e(e)}finally{c.f()}return l}},{key:"setDisplayArea",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],r=e.storeAsInitialCamera;this.setCamera(this.fitToCanvasCamera,!1);var n=e.imageArea,i=e.imageCanvasPoint;if(n){var a=Un(n,2),o=a[0],s=a[1],u=Math.min(this.getZoom()/o,this.getZoom()/s);this.setZoom(u,r)}var l=this.getDefaultImageData();if(i&&l){var c,d=i.imagePoint,v=Un(i.canvasPoint,2),f=v[0],h=v[1],g=(null===(c=window)||void 0===c?void 0:c.devicePixelRatio)||1,m=this.sWidth/g*(f-.5),y=this.sHeight/g*(h-.5),w=l.getDimensions(),I=this.worldToCanvas([0,0,0]),C=this.worldToCanvas(w),b=[C[0]-I[0],C[1]-I[1]],E=b[0],P=b[1],k=Un(d,2),R=[E*(.5-k[0])+m,P*(.5-k[1])+y];this.setPan(R,r)}if(r&&(this.options.displayArea=e),!t){var O={viewportId:this.id,displayArea:e,storeAsInitialCamera:r};st(this.element,p.DISPLAY_AREA_MODIFIED,O)}}},{key:"getDisplayArea",value:function(){var e;return null===(e=this.options)||void 0===e?void 0:e.displayArea}},{key:"resetCamera",value:function(){var e,t=!(arguments.length>0&&void 0!==arguments[0])||arguments[0],r=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],n=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],i=!(arguments.length>3&&void 0!==arguments[3])||arguments[3],a=this.getRenderer();this.setCamera({flipHorizontal:!1,flipVertical:!1});var o=pe()(this.getCamera()),s=a.computeVisiblePropBounds(),u=[0,0,0],l=this.getDefaultImageData();if(l){var c=l.getSpacing();s[0]=s[0]+c[0]/2,s[1]=s[1]-c[0]/2,s[2]=s[2]+c[1]/2,s[3]=s[3]-c[1]/2,s[4]=s[4]+c[2]/2,s[5]=s[5]-c[2]/2}var d=this.getVtkActiveCamera(),v=d.getViewPlaneNormal(),f=d.getViewUp();if(u[0]=(s[0]+s[1])/2,u[1]=(s[2]+s[3])/2,u[2]=(s[4]+s[5])/2,l){var p=l.getDimensions().map((function(e){return Math.floor(e/2)})),h=[p[0],p[1],p[2]];l.indexToWorld(h,u)}var g,m=this._getWorldDistanceViewUpAndViewRight(s,f,v),y=m.widthWorld,w=m.heightWorld,I=[this.sWidth,this.sHeight],C=y/w,b=I[0]/I[1],E=1.1*(g=C<b?w/2:w*(C/b)/2),P=s[1]-s[0],k=s[3]-s[2],R=s[5]-s[4];g=0==(g=(P*=P)+(k*=k)+(R*=R))?1:g;var O=1.1*(g=.5*Math.sqrt(g)),A=Math.abs(fi().dot(f,v))>.999?[-f[2],f[0],f[1]]:f,T=this._getFocalPointForResetCamera(u,o,{resetPan:t,resetToCenter:n}),S=[T[0]+O*v[0],T[1]+O*v[1],T[2]+O*v[2]];a.resetCameraClippingRange(s);var x=[-K.MAXIMUM_RAY_DISTANCE,K.MAXIMUM_RAY_DISTANCE];d.setPhysicalScale(g),d.setPhysicalTranslation(-T[0],-T[1],-T[2]),this.setCamera({parallelScale:r?E:o.parallelScale,focalPoint:T,position:S,viewAngle:90,viewUp:A,clippingRange:x});var D=pe()(this.getCamera());this.setFitToCanvasCamera(pe()(this.getCamera())),i&&this.setInitialCamera(D);var _,M={type:"ResetCameraEvent",renderer:a};return a.invokeEvent(M),this.triggerCameraModifiedEventIfNecessary(o,D),l&&null!==(e=this.options)&&void 0!==e&&e.displayArea&&r&&t&&n&&this.setDisplayArea(null===(_=this.options)||void 0===_?void 0:_.displayArea),!0}},{key:"setInitialCamera",value:function(e){this.initialCamera=e}},{key:"setFitToCanvasCamera",value:function(e){this.fitToCanvasCamera=e}},{key:"getPan",value:function(){var e=this.getVtkActiveCamera().getFocalPoint(),t=this.canvasToWorld([0,0]),r=this.worldToCanvas(xn.vec3.subtract(xn.vec3.create(),this.initialCamera.focalPoint,t)),n=this.worldToCanvas(xn.vec3.subtract(xn.vec3.create(),e,t));return xn.vec2.subtract(xn.vec2.create(),r,n)}},{key:"setPan",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],r=this.getCamera(),n=r.focalPoint,i=r.position,a=this.canvasToWorld([0,0]),o=xn.vec2.subtract(xn.vec2.create(),e,this.getPan());if(!(Math.abs(o[0])<1&&Math.abs(o[1])<1)||t){var s=xn.vec3.subtract(xn.vec3.create(),this.canvasToWorld(o),a),u=xn.vec3.subtract(xn.vec3.create(),n,s),l=xn.vec3.subtract(xn.vec3.create(),i,s);this.setCamera(Pi(Pi({},r),{},{focalPoint:u,position:l}),t)}}},{key:"getZoom",value:function(){var e=this.getVtkActiveCamera();return this.initialCamera.parallelScale/e.getParallelScale()}},{key:"setZoom",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],r=this.getCamera(),n=this.initialCamera.parallelScale/e;(r.parallelScale!==n||t)&&this.setCamera(Pi(Pi({},r),{},{parallelScale:n}),t)}},{key:"_getFocalPointForViewPlaneReset",value:function(e){var t=this.getCamera(),r=t.focalPoint,n=t.viewPlaneNormal,i=this._getViewImageDataIntersections(e,r,n),a=0,o=0,s=0;return i.forEach((function(e){var t=Un(e,3),r=t[0],n=t[1],i=t[2];a+=r,o+=n,s+=i})),[a/i.length,o/i.length,s/i.length]}},{key:"getCanvas",value:function(){return this.canvas}},{key:"getVtkActiveCamera",value:function(){return this.getRenderer().getActiveCamera()}},{key:"getCamera",value:function(){var e=this.getVtkActiveCamera();return{viewUp:e.getViewUp(),viewPlaneNormal:e.getViewPlaneNormal(),position:e.getPosition(),focalPoint:e.getFocalPoint(),parallelProjection:e.getParallelProjection(),parallelScale:e.getParallelScale(),viewAngle:e.getViewAngle(),flipHorizontal:this.flipHorizontal,flipVertical:this.flipVertical}}},{key:"setCamera",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],r=this.getVtkActiveCamera(),n=pe()(this.getCamera()),i=Object.assign({},n,e),a=e.viewUp,o=e.viewPlaneNormal,s=e.position,u=e.focalPoint,l=e.parallelScale,c=e.viewAngle,d=e.flipHorizontal,v=e.flipVertical,f=e.clippingRange;if(void 0!==d){var p=d&&!this.flipHorizontal||!d&&this.flipHorizontal;p&&this.flip({flipHorizontal:p})}if(void 0!==v){var h=v&&!this.flipVertical||!v&&this.flipVertical;h&&this.flip({flipVertical:h})}void 0!==a&&r.setViewUp(a),void 0!==o&&r.setDirectionOfProjection(-o[0],-o[1],-o[2]),void 0!==s&&r.setPosition.apply(r,br(s)),void 0!==u&&r.setFocalPoint.apply(r,br(u)),void 0!==l&&r.setParallelScale(l),void 0!==c&&r.setViewAngle(c),void 0!==f&&r.setClippingRange(f);var g=n.focalPoint,m=n.viewUp;if(g&&u||m&&a){var y=r.getViewPlaneNormal(),w=r.getViewUp(),I=!1,C=!1;if(u){var b=[u[0]-g[0],u[1]-g[1],u[2]-g[2]];I=Math.abs(fi().dot(b,y))>0}if(a&&(C=Ci(w,m)),I||C||this.newActorAdded){var E=this.getDefaultActor();if(null==E||!E.actor)return;Vn(E,"vtkActor")||this.updateClippingPlanesForActors(i),Vn(E,"vtkImageSlice")&&this.getRenderer().resetCameraClippingRange()}}t&&this.setInitialCamera(i),this.triggerCameraModifiedEventIfNecessary(n,this.getCamera())}},{key:"triggerCameraModifiedEventIfNecessary",value:function(e,t){if(!this._suppressCameraModifiedEvents&&!this.suppressEvents){var r={previousCamera:e,camera:t,element:this.element,viewportId:this.id,renderingEngineId:this.renderingEngineId,rotation:this.getRotation()};st(this.element,p.CAMERA_MODIFIED,r)}}},{key:"updateClippingPlanesForActors",value:(t=re(ie().mark((function e(t){var r,n,i=this;return ie().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return r=this.getActors(),n=r.map(function(){var e=re(ie().mark((function e(r){var n,a,o,s,u;return ie().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(r.actor){e.next=2;break}return e.abrupt("return");case 2:n=r.actor.getMapper(),0===(a=null!=r&&r.clippingFilter?r.clippingFilter.getClippingPlanes():n.getClippingPlanes()).length&&null!=r&&r.clippingFilter&&(a=[Sn().newInstance(),Sn().newInstance()]),o=K.MINIMUM_SLAB_THICKNESS,r.slabThickness&&(o=r.slabThickness),s=t.viewPlaneNormal,u=t.focalPoint,i.setOrientationOfClippingPlanes(a,o,s,u),st(i.element,p.CLIPPING_PLANES_UPDATED,{actorEntry:r,focalPoint:u,vtkPlanes:a,viewport:i});case 10:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}()),e.next=4,Promise.all(n);case 4:this.posProcessNewActors();case 5:case"end":return e.stop()}}),e,this)}))),function(e){return t.apply(this,arguments)})},{key:"posProcessNewActors",value:function(){this.newActorAdded=!1}},{key:"setOrientationOfClippingPlanes",value:function(e,t,r,n){if(!(e.length<2)){var i=[r[0],r[1],r[2]];fi().multiplyScalar(i,t),e[0].setNormal(r);var a=[0,0,0];fi().subtract(n,i,a),e[0].setOrigin(a),e[1].setNormal(-r[0],-r[1],-r[2]);var o=[0,0,0];fi().add(n,i,o),e[1].setOrigin(o)}}},{key:"_getWorldDistanceViewUpAndViewRight",value:function(e,t,r){var n=this._getCorners(e),i=this._getCorners(e),a=xn.vec3.cross(xn.vec3.create(),t,r),o=Jn().buildFromDegree().identity().rotateFromDirections(t,[1,0,0]);n.forEach((function(e){return o.apply(e)}));for(var s=1/0,u=-1/0,l=0;l<8;l++){var c=n[l][0];c>u&&(u=c),c<s&&(s=c)}o=Jn().buildFromDegree().identity().rotateFromDirections([a[0],a[1],a[2]],[1,0,0]),i.forEach((function(e){return o.apply(e)}));for(var d=1/0,v=-1/0,f=0;f<8;f++){var p=i[f][0];p>v&&(v=p),p<d&&(d=p)}return{widthWorld:v-d,heightWorld:u-s}}},{key:"_shouldUseNativeDataType",value:function(){var e=$e().rendering,t=e.useNorm16Texture,r=e.preferSizeOverAccuracy;return t||r}},{key:"_getCorners",value:function(e){return[[e[0],e[2],e[4]],[e[0],e[2],e[5]],[e[0],e[3],e[4]],[e[0],e[3],e[5]],[e[1],e[2],e[4]],[e[1],e[2],e[5]],[e[1],e[3],e[4]],[e[1],e[3],e[5]]]}},{key:"_getFocalPointForResetCamera",value:function(e,t,r){var n=r.resetPan,i=void 0===n||n,a=r.resetToCenter,o=void 0===a||a;if(o&&i)return e;if(o&&!i)return bi(t.focalPoint)?e:t.focalPoint;if(!o&&i){var s=t,u=s.focalPoint,l=s.viewPlaneNormal,c=xn.vec3.subtract(xn.vec3.create(),e,u),d=xn.vec3.dot(c,l),v=xn.vec3.scaleAndAdd(xn.vec3.create(),e,l,-1*d);return[v[0],v[1],v[2]]}return i||o?void 0:bi(t.focalPoint)?e:t.focalPoint}},{key:"_isInBounds",value:function(e,t){var r=Un(t,6),n=r[0],i=r[1],a=r[2],o=r[3],s=r[4],u=r[5],l=Un(e,3),c=l[0],d=l[1],v=l[2];return!(c<n||c>i||d<a||d>o||v<s||v>u)}},{key:"_getEdges",value:function(e){var t=Un(this._getCorners(e),8),r=t[0],n=t[1],i=t[2],a=t[3],o=t[4],s=t[5],u=t[6],l=t[7];return[[r,n],[r,o],[r,i],[n,a],[n,s],[i,a],[i,u],[a,l],[o,u],[o,s],[s,l],[u,l]]}}],[{key:"useCustomRenderingPipeline",get:function(){return!1}}]),e}(),Oi=Ri,Ai=X(9821),Ti=X.n(Ai),Si={isPerformingCoordinateTransformation:!1};function xi(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};Object.assign(t,Si,r),Ti().extend(e,t,r),Ie().setGet(e,t,["isPerformingCoordinateTransformation"]),function(e,t){t.classHierarchy.push("vtkSlabCamera");var r=xn.mat4.identity(new Float64Array(16)),n=new Float64Array(3);e.getProjectionMatrix=function(e,i,a){var o=xn.mat4.create();if(t.projectionMatrix){var s=1/t.physicalScale;return xn.vec3.set(n,s,s,s),xn.mat4.copy(o,t.projectionMatrix),xn.mat4.scale(o,o,n),xn.mat4.transpose(o,o),o}xn.mat4.identity(r);var u=t.clippingRange[0],l=t.clippingRange[1];t.isPerformingCoordinateTransformation&&(u=t.distance,l=t.distance+.1);var c=l-u,d=[u+(i+1)*c/2,u+(a+1)*c/2];if(t.parallelProjection){var v=t.parallelScale*e,f=t.parallelScale,p=(t.windowCenter[0]-1)*v,h=(t.windowCenter[0]+1)*v,g=(t.windowCenter[1]-1)*f,m=(t.windowCenter[1]+1)*f;xn.mat4.ortho(r,p,h,g,m,d[0],d[1]),xn.mat4.transpose(r,r)}else{if(t.useOffAxisProjection)throw new Error("Off-Axis projection is not supported at this time");var y,w,I=Math.tan(fi().radiansFromDegrees(t.viewAngle)/2);!0===t.useHorizontalViewAngle?(y=u*I,w=u*I/e):(y=u*I*e,w=u*I);var C=(t.windowCenter[0]-1)*y,b=(t.windowCenter[0]+1)*y,E=(t.windowCenter[1]-1)*w,P=(t.windowCenter[1]+1)*w,k=d[0],R=d[1];r[0]=2*k/(b-C),r[5]=2*k/(P-E),r[2]=(C+b)/(b-C),r[6]=(E+P)/(P-E),r[10]=-(k+R)/(R-k),r[14]=-1,r[11]=-2*k*R/(R-k),r[15]=0}return xn.mat4.copy(o,r),o}}(e,t)}var Di={newInstance:Ie().newInstance(xi,"vtkSlabCamera"),extend:xi};function _i(e,t){return e.worldToIndex(t).map(Math.round)}function Mi(e){for(var t=e.getSize(),r=[],n=0;n<t;n++){var i=[];e.getNodeValue(n,i),r.push(i)}return r}function Vi(e,t){null!=t&&t.length&&(e.removeAllPoints(),t.forEach((function(t){e.addRGBPoint.apply(e,br(t))})))}function Li(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}var Ui=function(e){On(s,e);var t,r,n,i,a,o=(i=s,a=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,t=Pn(i);if(a){var r=Pn(this).constructor;e=Reflect.construct(t,arguments,r)}else e=t.apply(this,arguments);return An(this,e)});function s(e){var t;if(he(this,s),ue(En(t=o.call(this,e)),"useCPURendering",!1),ue(En(t),"useNativeDataType",!1),ue(En(t),"_FrameOfReferenceUID",void 0),ue(En(t),"initialTransferFunctionNodes",void 0),ue(En(t),"globalDefaultProperties",void 0),ue(En(t),"perVolumeIdDefaultProperties",new Map),ue(En(t),"viewportProperties",{}),ue(En(t),"getDefaultProperties",(function(e){var r;return void 0!==e&&(r=t.perVolumeIdDefaultProperties.get(e)),void 0!==r?r:function(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?Li(Object(r),!0).forEach((function(t){ue(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):Li(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}({},t.globalDefaultProperties)})),ue(En(t),"getProperties",(function(e){if(t._getApplicableVolumeActor(e)){var r=t.viewportProperties,n=r.colormap,i=r.VOILUTFunction,a=r.interpolationType,o=r.invert,s=r.slabThickness,u=t.getActors().map((function(e){var r,n=e.actor,i=e.uid;if(!Dn.getVolume(i))return null;var a=n.getProperty().getRGBTransferFunction(0),o=Un("SIGMOID"===(null===(r=t.viewportProperties)||void 0===r?void 0:r.VOILUTFunction)?qn(a):a.getRange(),2);return{volumeId:i,voiRange:{lower:o[0],upper:o[1]}}})).filter(Boolean);return{colormap:n,voiRange:u.length?u[0].voiRange:null,VOILUTFunction:i,interpolationType:a,invert:o,slabThickness:s}}})),ue(En(t),"getFrameOfReferenceUID",(function(){return t._FrameOfReferenceUID})),ue(En(t),"canvasToWorld",(function(e){var r,n,i=t.getVtkActiveCamera();null===(r=i.setIsPerformingCoordinateTransformation)||void 0===r||r.call(i,!0);var a=t.getRenderer(),o=t.getRenderingEngine().offscreenMultiRenderWindow.getOpenGLRenderWindow(),s=o.getSize(),u=window.devicePixelRatio||1,l=[e[0]*u,e[1]*u],c=[l[0]+t.sx,l[1]+t.sy];c[1]=s[1]-c[1];var d=o.displayToWorld(c[0],c[1],0,a);return null===(n=i.setIsPerformingCoordinateTransformation)||void 0===n||n.call(i,!1),[d[0],d[1],d[2]]})),ue(En(t),"worldToCanvas",(function(e){var r,n,i=t.getVtkActiveCamera();null===(r=i.setIsPerformingCoordinateTransformation)||void 0===r||r.call(i,!0);var a=t.getRenderer(),o=t.getRenderingEngine().offscreenMultiRenderWindow.getOpenGLRenderWindow(),s=o.getSize(),u=o.worldToDisplay.apply(o,br(e).concat([a]));u[1]=s[1]-u[1];var l=[u[0]-t.sx,u[1]-t.sy],c=window.devicePixelRatio||1,d=[l[0]/c,l[1]/c];return null===(n=i.setIsPerformingCoordinateTransformation)||void 0===n||n.call(i,!1),d})),ue(En(t),"hasImageURI",(function(e){return t.getActors().filter((function(e){return Vn(e,"vtkVolume")})).some((function(t){var r=t.uid,n=Dn.getVolume(r);return!(!n||!n.imageIds)&&n.imageIds.map(ye).includes(e)}))})),ue(En(t),"getImageIds",(function(e){var r=t._getApplicableVolumeActor(e);if(!r)throw new Error("No actor found for the given volumeId: ".concat(e));var n=r.volumeId,i=Dn.getVolume(n);if(!i)throw new Error("imageVolume with id: ".concat(n," does not exist in cache"));return i.imageIds})),t.useCPURendering=Ke(),t.useNativeDataType=t._shouldUseNativeDataType(),t.useCPURendering)throw new Error("VolumeViewports cannot be used whilst CPU Fallback Rendering is enabled.");var r=t.getRenderer(),n=Di.newInstance();switch(r.setActiveCamera(n),t.type){case y.ORTHOGRAPHIC:case y.VOLUME_3D:n.setParallelProjection(!0);break;case y.PERSPECTIVE:n.setParallelProjection(!1);break;default:throw new Error("Unrecognized viewport type: ".concat(t.type))}return t.initializeVolumeNewImageEventDispatcher(),t}return me(s,[{key:"applyViewOrientation",value:function(e){var t=this._getOrientationVectors(e),r=t.viewPlaneNormal,n=t.viewUp,i=this.getVtkActiveCamera();i.setDirectionOfProjection(-r[0],-r[1],-r[2]),i.setViewUpFrom(n),this.resetCamera()}},{key:"initializeVolumeNewImageEventDispatcher",value:function(){var e=function(e){e.detail.viewportId!==this.id||this.isDisabled||this.getImageData()&&function(e){var t=e.detail,r=t.renderingEngineId,n=t.viewportId,i=Ae(r).getViewport(n);if(!(i instanceof ji))throw new Error("volumeNewImageEventDispatcher: viewport is not a BaseVolumeViewport");void 0===di[i.id]&&(di[i.id]=0);var a=ci(i);if(a){var o=a.numberOfSlices,s=a.imageIndex;if(di[i.id]!==s){di[i.id]=s;var u={imageIndex:s,viewportId:n,renderingEngineId:r,numberOfSlices:o};st(i.element,p.VOLUME_NEW_IMAGE,u)}}else console.warn("volumeNewImageEventDispatcher: sliceData is undefined for viewport ".concat(i.id))}(e)}.bind(this),t=function(r){var n=r.detail.viewportId;n===this.id&&(this.element.removeEventListener(p.CAMERA_MODIFIED,e),ot.removeEventListener(p.ELEMENT_DISABLED,t),function(e){void 0!==di[e]&&delete di[e]}(n))}.bind(this);this.element.removeEventListener(p.CAMERA_MODIFIED,e),this.element.addEventListener(p.CAMERA_MODIFIED,e),ot.addEventListener(p.ELEMENT_DISABLED,t)}},{key:"resetVolumeViewportClippingRange",value:function(){var e=this.getVtkActiveCamera();e.getParallelProjection()?e.setClippingRange(-K.MAXIMUM_RAY_DISTANCE,K.MAXIMUM_RAY_DISTANCE):e.setClippingRange(K.MINIMUM_SLAB_THICKNESS,K.MAXIMUM_RAY_DISTANCE)}},{key:"setVOILUTFunction",value:function(e,t,r){-1===Object.values(M).indexOf(e)&&(e=M.LINEAR);var n=this.getProperties().voiRange;this.setVOI(n,t,r),this.viewportProperties.VOILUTFunction=e}},{key:"setColormap",value:function(e,t,r){var n=this._getApplicableVolumeActor(t);if(n){var i=n.volumeActor;i.getMapper().setSampleDistance(1);var a=Nn().newInstance(),o=Kn(e.name),s=e.name;if(o||(o=Gn().getPresetByName(s)),!o)throw new Error("Colormap ".concat(e," not found"));var u=i.getProperty().getRGBTransferFunction(0).getRange();a.applyColorMap(o),a.setMappingRange(u[0],u[1]),i.getProperty().setRGBTransferFunction(0,a),this.viewportProperties.colormap=e}}},{key:"setOpacity",value:function(e,t){var r=this._getApplicableVolumeActor(t);if(r){var n=r.volumeActor,i=Bn().newInstance();if("number"==typeof e.opacity){var a=n.getProperty().getRGBTransferFunction(0).getRange();i.addPoint(a[0],e.opacity),i.addPoint(a[1],e.opacity)}else e.opacity.forEach((function(e){var t=e.opacity,r=e.value;i.addPoint(r,t)}));n.getProperty().setScalarOpacity(0,i),this.viewportProperties.colormap.opacity=e.opacity}}},{key:"setInvert",value:function(e,t,r){var n=this._getApplicableVolumeActor(t);if(n){var i=n.volumeId;Zn(this._getOrCreateColorTransferFunction(i));var a=this.getProperties(i),o=a.voiRange,s=a.VOILUTFunction,u=a.invert;if(this.viewportProperties.invert=u,!r){var l={viewportId:this.id,range:o,volumeId:i,VOILUTFunction:s,invert:u,invertStateChanged:!0};st(this.element,p.VOI_MODIFIED,l)}}}},{key:"_getOrCreateColorTransferFunction",value:function(e){var t=this._getApplicableVolumeActor(e);if(!t)return null;var r=t.volumeActor,n=r.getProperty().getRGBTransferFunction(0);if(n)return n;var i=Nn().newInstance();return r.getProperty().setRGBTransferFunction(0,i),i}},{key:"setInterpolationType",value:function(e,t){var r=this._getApplicableVolumeActor(t);r&&(r.volumeActor.getProperty().setInterpolationType(e),this.viewportProperties.interpolationType=e)}},{key:"setVOI",value:function(e,t){var r=arguments.length>2&&void 0!==arguments[2]&&arguments[2],n=this._getApplicableVolumeActor(t);if(n){var i=n.volumeActor,a=n.volumeId,o=e;if(void 0===o){var s=i.getMapper().getInputData().getPointData().getScalars().getRange();o={lower:s[0],upper:s[1]}}var u=this.getProperties(a).VOILUTFunction;if(u===M.SAMPLED_SIGMOID){var l=Xn(o);i.getProperty().setRGBTransferFunction(0,l)}else{var c=o,d=c.lower,v=c.upper;if(i.getProperty().getRGBTransferFunction(0).setRange(d,v),!this.initialTransferFunctionNodes){var f=i.getProperty().getRGBTransferFunction(0);this.initialTransferFunctionNodes=Mi(f)}}if(!r){var h={viewportId:this.id,range:e,volumeId:a,VOILUTFunction:u};st(this.element,p.VOI_MODIFIED,h)}this.viewportProperties.voiRange=o}}},{key:"setDefaultProperties",value:function(e,t){null==t?this.globalDefaultProperties=e:this.perVolumeIdDefaultProperties.set(t,e)}},{key:"clearDefaultProperties",value:function(e){null==e?(this.globalDefaultProperties={},this.resetProperties()):(this.perVolumeIdDefaultProperties.delete(e),this.resetToDefaultProperties(e))}},{key:"setProperties",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.voiRange,r=e.VOILUTFunction,n=e.invert,i=e.colormap,a=e.preset,o=e.interpolationType,s=e.slabThickness,u=arguments.length>1?arguments[1]:void 0,l=arguments.length>2&&void 0!==arguments[2]&&arguments[2];null==this.globalDefaultProperties&&this.setDefaultProperties({voiRange:t,VOILUTFunction:r,invert:n,colormap:i,preset:a,slabThickness:s}),null!=i&&i.name&&this.setColormap(i,u,l),null!=(null==i?void 0:i.opacity)&&this.setOpacity(i,u),void 0!==t&&this.setVOI(t,u,l),void 0!==o&&this.setInterpolationType(o),void 0!==r&&this.setVOILUTFunction(r,u,l),void 0!==n&&this.viewportProperties.invert!==n&&this.setInvert(n,u,l),void 0!==a&&this.setPreset(a,u,l),void 0!==s&&(this.setSlabThickness(s),this.viewportProperties.slabThickness=s)}},{key:"resetToDefaultProperties",value:function(e){var t,r,n=this.globalDefaultProperties;null!==(t=n.colormap)&&void 0!==t&&t.name&&this.setColormap(n.colormap,e),null!=(null===(r=n.colormap)||void 0===r?void 0:r.opacity)&&this.setOpacity(n.colormap,e),void 0!==n.voiRange&&this.setVOI(n.voiRange,e),void 0!==n.VOILUTFunction&&this.setVOILUTFunction(n.VOILUTFunction,e),void 0!==n.invert&&this.setInvert(n.invert,e),void 0!==n.slabThickness&&(this.setSlabThickness(n.slabThickness),this.viewportProperties.slabThickness=n.slabThickness),this.render()}},{key:"setPreset",value:function(e,t,r){var n=this._getApplicableVolumeActor(t);if(n){var i=n.volumeActor,a=ee.find((function(t){return t.name===e}));a&&(Qn(i,a),this.viewportProperties.preset=e)}}},{key:"setVolumes",value:(n=re(ie().mark((function e(t){var r,n,i,a,o,s,u,l,c,d,v,f,h=arguments;return ie().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(r=h.length>1&&void 0!==h[1]&&h[1],n=h.length>2&&void 0!==h[2]&&h[2],i=Dn.getVolume(t[0].volumeId)){e.next=5;break}throw new Error("imageVolume with id: ".concat(i.volumeId," does not exist"));case 5:return a=i.metadata.FrameOfReferenceUID,e.next=8,this._isValidVolumeInputArray(t,a);case 8:this._FrameOfReferenceUID=a,o=[],s=0;case 11:if(!(s<t.length)){e.next=21;break}return u=t[s],l=u.volumeId,c=u.actorUID,d=u.slabThickness,e.next=15,gr(t[s],this.element,this.id,n,this.useNativeDataType);case 15:v=e.sent,f=c||l,o.push({uid:f,actor:v,slabThickness:d,referenceId:l});case 18:s++,e.next=11;break;case 21:this._setVolumeActors(o),this.viewportStatus=N.PRE_RENDER,st(this.element,p.VOLUME_VIEWPORT_NEW_VOLUME,{viewportId:this.id,volumeActors:o}),r&&this.render();case 25:case"end":return e.stop()}}),e,this)}))),function(e){return n.apply(this,arguments)})},{key:"addVolumes",value:(r=re(ie().mark((function e(t){var r,n,i,a,o,s,u,l,c,d,v,f,p=arguments;return ie().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(r=p.length>1&&void 0!==p[1]&&p[1],n=p.length>2&&void 0!==p[2]&&p[2],i=Dn.getVolume(t[0].volumeId)){e.next=5;break}throw new Error("imageVolume with id: ".concat(i.volumeId," does not exist"));case 5:return a=[],e.next=8,this._isValidVolumeInputArray(t,this._FrameOfReferenceUID);case 8:o=0;case 9:if(!(o<t.length)){e.next=20;break}return s=t[o],u=s.volumeId,l=s.visibility,c=s.actorUID,d=s.slabThickness,e.next=13,gr(t[o],this.element,this.id,n,this.useNativeDataType);case 13:v=e.sent,!1===l&&v.setVisibility(!1),f=c||u,a.push({uid:f,actor:v,slabThickness:d,referenceId:u});case 17:o++,e.next=9;break;case 20:this.addActors(a),r&&this.render();case 22:case"end":return e.stop()}}),e,this)}))),function(e){return r.apply(this,arguments)})},{key:"removeVolumeActors",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];this.removeActors(e),t&&this.render()}},{key:"setOrientation",value:function(e){console.warn('Method "setOrientation" needs implementation')}},{key:"_getApplicableVolumeActor",value:function(e){if(void 0===e||this.getActor(e)){var t,r,n=this.getActors();if(n.length)return e&&(t=null===(r=this.getActor(e))||void 0===r?void 0:r.actor),t||(t=n[0].actor,e=n[0].uid),{volumeActor:t,volumeId:e}}}},{key:"_isValidVolumeInputArray",value:(t=re(ie().mark((function e(t,r){var n,i,a,o;return ie().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:n=t.length,i=1;case 2:if(!(i<n)){e.next=14;break}return a=t[i],e.next=6,yt(a.volumeId);case 6:if(o=e.sent){e.next=9;break}throw new Error("imageVolume with id: ".concat(o.volumeId," does not exist"));case 9:if(r===o.metadata.FrameOfReferenceUID){e.next=11;break}throw new Error("Volumes being added to viewport ".concat(this.id," do not share the same FrameOfReferenceUID. This is not yet supported"));case 11:i++,e.next=2;break;case 14:return e.abrupt("return",!0);case 15:case"end":return e.stop()}}),e,this)}))),function(e,r){return t.apply(this,arguments)})},{key:"getBounds",value:function(){return this.getRenderer().computeVisiblePropBounds()}},{key:"flip",value:function(e){kn(Pn(s.prototype),"flip",this).call(this,e)}},{key:"hasVolumeId",value:function(e){return this.getActors().some((function(t){return t.uid===e}))}},{key:"getImageData",value:function(e){var t,r,n=this.getDefaultActor();if(n){var i=n.uid;e=null!==(t=e)&&void 0!==t?t:i;var a=this.getActor(e);if(Vn(a,"vtkVolume")){var o=a.actor,s=Dn.getVolume(e),u=o.getMapper().getInputData();return{dimensions:u.getDimensions(),spacing:u.getSpacing(),origin:u.getOrigin(),direction:u.getDirection(),scalarData:u.getPointData().getScalars().isDeleted()?null:u.getPointData().getScalars().getData(),imageData:o.getMapper().getInputData(),metadata:{Modality:null==s||null===(r=s.metadata)||void 0===r?void 0:r.Modality},scaling:null==s?void 0:s.scaling,hasPixelSpacing:!0}}}}},{key:"_setVolumeActors",value:function(e){for(var t=0;t<e.length;t++)this.viewportProperties.invert=!1;this.setActors(e)}},{key:"_getOrientationVectors",value:function(e){if("object"===Z(e)){if(e.viewPlaneNormal&&e.viewUp)return e;throw new Error("Invalid orientation object. It must contain viewPlaneNormal and viewUp")}if("string"==typeof e&&J[e])return J[e];throw new Error("Invalid orientation: ".concat(e,". Valid orientations are: ").concat(Object.keys(J).join(", ")))}},{key:"getSlabThickness",value:function(){var e=this.getActors(),t=K.MINIMUM_SLAB_THICKNESS;return e.forEach((function(e){e.slabThickness>t&&(t=e.slabThickness)})),t}},{key:"getIntensityFromWorld",value:function(e){var t=this.getDefaultActor();if(Vn(t,"vtkVolume")){var r=t.actor,n=t.uid,i=r.getMapper().getInputData(),a=Dn.getVolume(n),o=a.dimensions,s=_i(i,e),u=s[2]*o[0]*o[1]+s[1]*o[0]+s[0];return a.getScalarData()[u]}}}],[{key:"useCustomRenderingPipeline",get:function(){return!1}}]),s}(Oi),ji=Ui;var Ni=function(e){On(o,e);var t,r,n,i,a=(n=o,i=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,t=Pn(n);if(i){var r=Pn(this).constructor;e=Reflect.construct(t,arguments,r)}else e=t.apply(this,arguments);return An(this,e)});function o(e){var t;he(this,o),ue(En(t=a.call(this,e)),"_useAcquisitionPlaneForViewPlane",!1),ue(En(t),"getNumberOfSlices",(function(){return ci(En(t)).numberOfSlices})),ue(En(t),"getCurrentImageIdIndex",(function(e){var r=t.getCamera(),n=r.viewPlaneNormal,i=r.focalPoint,a=t.getImageData(e),o=a.origin,s=_n({direction:a.direction,spacing:a.spacing},n),u=xn.vec3.create();xn.vec3.sub(u,i,o);var l=xn.vec3.dot(u,n);return Math.round(Math.abs(l)/s)})),ue(En(t),"getCurrentImageId",(function(){t.getActors().length>1&&console.warn("Using the first/default actor of ".concat(t.getActors().length," actors for getCurrentImageId."));var e=t.getDefaultActor();if(e&&Vn(e,"vtkVolume")){var r=e.uid,n=Dn.getVolume(r);if(n){var i=t.getCamera(),a=i.viewPlaneNormal;return Ln(n,i.focalPoint,a)}}})),ue(En(t),"getRotation",(function(){return 0}));var r=t.options.orientation;return r&&r!==R.ACQUISITION?(t.applyViewOrientation(r),An(t)):(t._useAcquisitionPlaneForViewPlane=!0,t)}return me(o,[{key:"setVolumes",value:(r=re(ie().mark((function e(t){var r,n,i,a=arguments;return ie().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(r=a.length>1&&void 0!==a[1]&&a[1],n=a.length>2&&void 0!==a[2]&&a[2],i=Dn.getVolume(t[0].volumeId)){e.next=5;break}throw new Error("imageVolume with id: ".concat(i.volumeId," does not exist"));case 5:return this._useAcquisitionPlaneForViewPlane&&(this._setViewPlaneToAcquisitionPlane(i),this._useAcquisitionPlaneForViewPlane=!1),e.abrupt("return",kn(Pn(o.prototype),"setVolumes",this).call(this,t,r,n));case 7:case"end":return e.stop()}}),e,this)}))),function(e){return r.apply(this,arguments)})},{key:"addVolumes",value:(t=re(ie().mark((function e(t){var r,n,i,a=arguments;return ie().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(r=a.length>1&&void 0!==a[1]&&a[1],n=a.length>2&&void 0!==a[2]&&a[2],i=Dn.getVolume(t[0].volumeId)){e.next=5;break}throw new Error("imageVolume with id: ".concat(i.volumeId," does not exist"));case 5:return this._useAcquisitionPlaneForViewPlane&&(this._setViewPlaneToAcquisitionPlane(i),this._useAcquisitionPlaneForViewPlane=!1),e.abrupt("return",kn(Pn(o.prototype),"addVolumes",this).call(this,t,r,n));case 7:case"end":return e.stop()}}),e,this)}))),function(e){return t.apply(this,arguments)})},{key:"setOrientation",value:function(e){var t,r,n=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];if(J[e]){var i=J[e];t=i.viewPlaneNormal,r=i.viewUp}else{if("acquisition"!==e)throw new Error("Invalid orientation: ".concat(e,". Use Enums.OrientationAxis instead."));var a=this._getAcquisitionPlaneOrientation();t=a.viewPlaneNormal,r=a.viewUp}this.setCamera({viewPlaneNormal:t,viewUp:r}),this.resetCamera(),n&&this.render()}},{key:"_getAcquisitionPlaneOrientation",value:function(){var e=this.getDefaultActor();if(e){var t=e.uid,r=Dn.getVolume(t);if(!r)throw new Error("imageVolume with id: ".concat(t," does not exist in cache"));var n=r.direction;return{viewPlaneNormal:n.slice(6,9).map((function(e){return-e})),viewUp:n.slice(3,6).map((function(e){return-e}))}}}},{key:"_setViewPlaneToAcquisitionPlane",value:function(e){var t,r;if(e){var n=e.direction;t=n.slice(6,9).map((function(e){return-e})),r=n.slice(3,6).map((function(e){return-e}))}else{var i=this._getAcquisitionPlaneOrientation();t=i.viewPlaneNormal,r=i.viewUp}this.setCamera({viewPlaneNormal:t,viewUp:r}),this.resetCamera()}},{key:"setBlendMode",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],r=arguments.length>2&&void 0!==arguments[2]&&arguments[2],n=this.getActors();t&&t.length>0&&(n=n.filter((function(e){return t.includes(e.uid)}))),n.forEach((function(t){t.actor.getMapper().setBlendMode(e)})),r&&this.render()}},{key:"resetCamera",value:function(){var e=this,t=!(arguments.length>0&&void 0!==arguments[0])||arguments[0],r=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],n=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];kn(Pn(o.prototype),"resetCamera",this).call(this,t,r,n),this.resetVolumeViewportClippingRange();var i=this.getVtkActiveCamera(),a=i.getViewPlaneNormal(),s=i.getFocalPoint();return this.getActors().forEach((function(t){if(t.actor){var r=t.actor.getMapper();if(0===r.getClippingPlanes().length&&(null==t||!t.clippingFilter)){var n=Sn().newInstance(),i=Sn().newInstance(),o=[n,i],u=K.MINIMUM_SLAB_THICKNESS;t.slabThickness&&(u=t.slabThickness),e.setOrientationOfClippingPlanes(o,u,a,s),r.addClippingPlane(n),r.addClippingPlane(i)}}})),!0}},{key:"setSlabThickness",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];e<.1&&(e=.1);var r=this.getActors();t&&t.length>0&&(r=r.filter((function(e){return t.includes(e.uid)}))),r.forEach((function(t){Vn(t,"vtkVolume")&&(t.slabThickness=e)}));var n=this.getCamera();this.updateClippingPlanesForActors(n),this.triggerCameraModifiedEventIfNecessary(n,n),this.viewportProperties.slabThickness=e}},{key:"resetProperties",value:function(e){this._resetProperties(e)}},{key:"_resetProperties",value:function(e){var t=e?this.getActor(e):this.getDefaultActor();if(!t)throw new Error("No actor found for the given volumeId: ".concat(e));t.slabThickness&&(t.slabThickness=K.MINIMUM_SLAB_THICKNESS,this.viewportProperties.slabThickness=void 0,this.updateClippingPlanesForActors(this.getCamera()));var r=Dn.getVolume(t.uid);if(!r)throw new Error("imageVolume with id: ".concat(t.uid," does not exist in cache"));fr(t.actor,r,!1),Mn(t)&&Vi(t.actor.getProperty().getRGBTransferFunction(0),this.initialTransferFunctionNodes);var n=t.actor.getProperty().getRGBTransferFunction(0).getMappingRange(),i={viewportId:t.uid,range:{lower:n[0],upper:n[1]},volumeId:t.uid};st(this.element,p.VOI_MODIFIED,i)}}]),o}(ji),Fi=Ni,Gi=X(7896),Wi=X.n(Gi),Bi=X(9861),qi=X.n(Bi),zi=new Map,Hi="imageRetrieveConfiguration",Ki={IMAGE_RETRIEVE_CONFIGURATION:Hi,clear:function(){zi.clear()},add:function(e,t){zi.set(e,t)},get:function(e,t){var r=Array.isArray(t)?t:[t];if(e===Hi)return r.map((function(e){return zi.get(e)})).find((function(e){return void 0!==e}))}};Xt(Ki.get.bind(Ki));var Yi=Ki;function Zi(){return window.performance?performance.now():Date.now()}function Xi(e,t,r){return r?function(e){var t=Math.max.apply(Math,br(e.lut)).toString(2).length-8,r=e.lut[0]>>t,n=e.lut[e.lut.length-1]>>t,i=e.firstValueMapped+e.lut.length-1;return function(a){return a<e.firstValueMapped?r:a>=i?n:e.lut[a-e.firstValueMapped]>>t}}(r):function(e,t){return function(r){var n=255*((r-(t-.5))/(e-1)+.5);return Math.min(Math.max(n,0),255)}}(e,t)}var Qi=function(){function e(){he(this,e),ue(this,"m",void 0),this.reset()}return me(e,[{key:"getMatrix",value:function(){return this.m}},{key:"reset",value:function(){this.m=[1,0,0,1,0,0]}},{key:"clone",value:function(){var t=new e;return t.m[0]=this.m[0],t.m[1]=this.m[1],t.m[2]=this.m[2],t.m[3]=this.m[3],t.m[4]=this.m[4],t.m[5]=this.m[5],t}},{key:"multiply",value:function(e){var t=this.m[0]*e[0]+this.m[2]*e[1],r=this.m[1]*e[0]+this.m[3]*e[1],n=this.m[0]*e[2]+this.m[2]*e[3],i=this.m[1]*e[2]+this.m[3]*e[3],a=this.m[0]*e[4]+this.m[2]*e[5]+this.m[4],o=this.m[1]*e[4]+this.m[3]*e[5]+this.m[5];this.m[0]=t,this.m[1]=r,this.m[2]=n,this.m[3]=i,this.m[4]=a,this.m[5]=o}},{key:"invert",value:function(){var e=1/(this.m[0]*this.m[3]-this.m[1]*this.m[2]),t=this.m[3]*e,r=-this.m[1]*e,n=-this.m[2]*e,i=this.m[0]*e,a=e*(this.m[2]*this.m[5]-this.m[3]*this.m[4]),o=e*(this.m[1]*this.m[4]-this.m[0]*this.m[5]);this.m[0]=t,this.m[1]=r,this.m[2]=n,this.m[3]=i,this.m[4]=a,this.m[5]=o}},{key:"rotate",value:function(e){var t=Math.cos(e),r=Math.sin(e),n=this.m[0]*t+this.m[2]*r,i=this.m[1]*t+this.m[3]*r,a=this.m[0]*-r+this.m[2]*t,o=this.m[1]*-r+this.m[3]*t;this.m[0]=n,this.m[1]=i,this.m[2]=a,this.m[3]=o}},{key:"translate",value:function(e,t){this.m[4]+=this.m[0]*e+this.m[2]*t,this.m[5]+=this.m[1]*e+this.m[3]*t}},{key:"scale",value:function(e,t){this.m[0]*=e,this.m[1]*=e,this.m[2]*=t,this.m[3]*=t}},{key:"transformPoint",value:function(e){var t=e[0],r=e[1];return[t*this.m[0]+r*this.m[2]+this.m[4],t*this.m[1]+r*this.m[3]+this.m[5]]}}]),e}();function $i(e,t){var r=new Qi;if(!e.viewport.displayedArea)return r;r.translate(e.canvas.width/2,e.canvas.height/2);var n=e.viewport.rotation;0!==n&&r.rotate(n*Math.PI/180);var i=e.viewport.scale,a=e.viewport.scale,o=e.viewport.displayedArea.brhc.x-(e.viewport.displayedArea.tlhc.x-1),s=e.viewport.displayedArea.brhc.y-(e.viewport.displayedArea.tlhc.y-1);if("NONE"===e.viewport.displayedArea.presentationSizeMode)e.image.rowPixelSpacing<e.image.columnPixelSpacing?i*=e.image.columnPixelSpacing/e.image.rowPixelSpacing:e.image.columnPixelSpacing<e.image.rowPixelSpacing&&(a*=e.image.rowPixelSpacing/e.image.columnPixelSpacing);else if(i=e.viewport.displayedArea.columnPixelSpacing,a=e.viewport.displayedArea.rowPixelSpacing,"SCALE TO FIT"===e.viewport.displayedArea.presentationSizeMode){var u=e.canvas.height/(s*a),l=e.canvas.width/(o*i);i=a=Math.min(l,u),e.viewport.displayedArea.rowPixelSpacing<e.viewport.displayedArea.columnPixelSpacing?i*=e.viewport.displayedArea.columnPixelSpacing/e.viewport.displayedArea.rowPixelSpacing:e.viewport.displayedArea.columnPixelSpacing<e.viewport.displayedArea.rowPixelSpacing&&(a*=e.viewport.displayedArea.rowPixelSpacing/e.viewport.displayedArea.columnPixelSpacing)}return r.scale(i,a),0!==n&&r.rotate(-n*Math.PI/180),r.translate(e.viewport.translation.x,e.viewport.translation.y),0!==n&&r.rotate(n*Math.PI/180),void 0!==t&&r.scale(t,t),e.viewport.hflip&&r.scale(-1,1),e.viewport.vflip&&r.scale(1,-1),r.translate(-o/2,-s/2),r}function Ji(e,t,r){if(void 0===e)throw new Error("setToPixelCoordinateSystem: parameter enabledElement must not be undefined");if(void 0===t)throw new Error("setToPixelCoordinateSystem: parameter context must not be undefined");var n=$i(e,r).getMatrix();t.setTransform(n[0],n[1],n[2],n[3],n[4],n[5])}function ea(e,t){var r=e.renderingTools.lastRenderedImageId,n=e.renderingTools.lastRenderedViewport;return t.imageId!==r||!n||n.windowCenter!==e.viewport.voi.windowCenter||n.windowWidth!==e.viewport.voi.windowWidth||n.invert!==e.viewport.invert||n.rotation!==e.viewport.rotation||n.hflip!==e.viewport.hflip||n.vflip!==e.viewport.vflip||n.modalityLUT!==e.viewport.modalityLUT||n.voiLUT!==e.viewport.voiLUT||n.colormap!==e.viewport.colormap}function ta(e,t){var r=e.renderingTools.renderCanvas;r.width=t.width,r.height=t.height;var n=r.getContext("2d");n.fillStyle="white",n.fillRect(0,0,r.width,r.height);var i=n.getImageData(0,0,t.width,t.height);e.renderingTools.renderCanvasContext=n,e.renderingTools.renderCanvasData=i}function ra(e){var t=e.image.imageId,r=e.viewport,n=e.image.color;return e.renderingTools.lastRenderedImageId=t,e.renderingTools.lastRenderedIsColor=n,e.renderingTools.lastRenderedViewport={windowCenter:r.voi.windowCenter,windowWidth:r.voi.windowWidth,invert:r.invert,rotation:r.rotation,hflip:r.hflip,vflip:r.vflip,modalityLUT:r.modalityLUT,voiLUT:r.voiLUT,colormap:r.colormap},e.renderingTools}function na(e,t,r){var n=!0===e.renderingTools.lastRenderedIsColor;e.renderingTools.renderCanvas&&n||(e.renderingTools.renderCanvas=document.createElement("canvas"));var i=e.renderingTools.renderCanvas,a=e.viewport.voi,o=a.windowWidth,s=a.windowCenter;if((256===o||255===o)&&(128===s||127===s)&&!1===e.viewport.invert&&t.getCanvas&&t.getCanvas())return t.getCanvas();if(!1===ea(e,t)&&!0!==r)return i;i.width===t.width&&i.height===t.height||ta(e,t);var u=Zi(),l=function(e,t){return void 0!==e.cachedLut&&e.cachedLut.windowCenter===t.voi.windowCenter&&e.cachedLut.windowWidth===t.voi.windowWidth&&e.cachedLut.invert===t.invert||(function(e,t,r,n,i){var a=e.maxPixelValue,o=e.minPixelValue,s=Math.min(o,0);if(void 0===e.cachedLut){var u=a-s+1;e.cachedLut={},e.cachedLut.lutArray=new Uint8ClampedArray(u)}var l=e.cachedLut.lutArray,c=Xi(Array.isArray(t)?t[0]:t,Array.isArray(r)?r[0]:r,void 0);if(!0===n)for(var d=o;d<=a;d++)l[d+-s]=255-c(d);else for(var v=o;v<=a;v++)l[v+-s]=c(v)}(e,t.voi.windowWidth,t.voi.windowCenter,t.invert),e.cachedLut.windowWidth=t.voi.windowWidth,e.cachedLut.windowCenter=t.voi.windowCenter,e.cachedLut.invert=t.invert),e.cachedLut.lutArray}(t,e.viewport);t.stats=t.stats||{},t.stats.lastLutGenerateTime=Zi()-u;var c=e.renderingTools.renderCanvasData,d=e.renderingTools.renderCanvasContext;return t.rgba?function(e,t,r){var n=Zi(),i=e.getPixelData();e.stats.lastGetPixelDataTime=Zi()-n;var a=e.minPixelValue,o=0,s=0,u=i.length;if(n=Zi(),a<0)for(;s<u;)r[o++]=t[i[s++]+-a],r[o++]=t[i[s++]+-a],r[o++]=t[i[s++]+-a],r[o++]=i[s++];else for(;s<u;)r[o++]=t[i[s++]],r[o++]=t[i[s++]],r[o++]=t[i[s++]],r[o++]=i[s++];e.stats.lastStoredPixelDataToCanvasImageDataTime=Zi()-n}(t,l,c.data):function(e,t,r){var n=Zi(),i=e.getPixelData();e.stats.lastGetPixelDataTime=Zi()-n;var a=e.minPixelValue,o=0,s=0,u=i.length;if(n=Zi(),a<0)for(;s<u;)r[o++]=t[i[s++]+-a],r[o++]=t[i[s++]+-a],r[o]=t[i[s]+-a],s+=2,o+=2;else for(;s<u;)r[o++]=t[i[s++]],r[o++]=t[i[s++]],r[o]=t[i[s]],s+=2,o+=2;e.stats.lastStoredPixelDataToCanvasImageDataTime=Zi()-n}(t,l,c.data),u=Zi(),d.putImageData(c,0,0),t.stats.lastPutImageDataTime=Zi()-u,i}function ia(e,t){if(void 0===e)throw new Error("renderColorImage: enabledElement parameter must not be undefined");var r=e.image;if(void 0===r)throw new Error("renderColorImage: image must be loaded before it can be drawn");var n=e.canvas.getContext("2d");n.setTransform(1,0,0,1,0,0),n.fillStyle="black",n.fillRect(0,0,e.canvas.width,e.canvas.height),n.imageSmoothingEnabled=!e.viewport.pixelReplication,Ji(e,n);var i=na(e,r,t),a=e.viewport.displayedArea.tlhc.x-1,o=e.viewport.displayedArea.tlhc.y-1,s=e.viewport.displayedArea.brhc.x-a,u=e.viewport.displayedArea.brhc.y-o;n.drawImage(i,a,o,s,u,0,0,s,u),e.renderingTools=ra(e)}function aa(e,t){return!e&&!t||!(!e||!t)&&e.id===t.id}function oa(e,t,r){return void 0!==e.cachedLut&&e.cachedLut.windowCenter===t.voi.windowCenter&&e.cachedLut.windowWidth===t.voi.windowWidth&&aa(e.cachedLut.modalityLUT,t.modalityLUT)&&aa(e.cachedLut.voiLUT,t.voiLUT)&&e.cachedLut.invert===t.invert&&!0!==r||(function(e,t){if(!function(e){return e.voiLUT&&e.voiLUT.lut&&e.voiLUT.lut.length>0||void 0!==e.voi.windowWidth&&void 0!==e.voi.windowCenter}(e)){var r=t.maxPixelValue*t.slope+t.intercept,n=t.minPixelValue*t.slope+t.intercept,i=r-n,a=(r+n)/2;void 0===e.voi?e.voi={windowWidth:i,windowCenter:a}:(e.voi.windowWidth=i,e.voi.windowCenter=a)}}(t,e),function(e,t,r,n,i,a){var o=e.maxPixelValue,s=e.minPixelValue,u=Math.min(s,0);if(void 0===e.cachedLut){var l=o-u+1;e.cachedLut={},e.cachedLut.lutArray=new Uint8ClampedArray(l)}var c=e.cachedLut.lutArray,d=function(e,t,r){return r?function(e){var t=e.lut[0],r=e.lut[e.lut.length-1],n=e.firstValueMapped+e.lut.length;return function(i){return i<e.firstValueMapped?t:i>=n?r:e.lut[i]}}(r):function(e,t){return function(r){return r*e+t}}(e,t)}(e.slope,e.intercept,i),v=Xi(t,r,a);if(e.isPreScaled)if(!0===n)for(var f=s;f<=o;f++)c[f+-u]=255-v(f);else for(var p=s;p<=o;p++)c[p+-u]=v(p);else if(!0===n)for(var h=s;h<=o;h++)c[h+-u]=255-v(d(h));else for(var g=s;g<=o;g++)c[g+-u]=v(d(g))}(e,t.voi.windowWidth,t.voi.windowCenter,t.invert,t.modalityLUT,t.voiLUT),e.cachedLut.windowWidth=t.voi.windowWidth,e.cachedLut.windowCenter=t.voi.windowCenter,e.cachedLut.invert=t.invert,e.cachedLut.voiLUT=t.voiLUT,e.cachedLut.modalityLUT=t.modalityLUT),e.cachedLut.lutArray}function sa(e,t){if(void 0===e)throw new Error("drawImage: enabledElement parameter must not be undefined");var r=e.image;if(void 0===r)throw new Error("drawImage: image must be loaded before it can be drawn");var n=e.canvas.getContext("2d");n.setTransform(1,0,0,1,0,0),n.fillStyle="black",n.fillRect(0,0,e.canvas.width,e.canvas.height),n.imageSmoothingEnabled=!e.viewport.pixelReplication,Ji(e,n);var i=function(e,t,r){var n=!(arguments.length>3&&void 0!==arguments[3])||arguments[3],i=!0===e.renderingTools.lastRenderedIsColor;e.renderingTools.renderCanvas&&!i||(e.renderingTools.renderCanvas=document.createElement("canvas"),ta(e,t));var a=e.renderingTools.renderCanvas;if(!1===ea(e,t)&&!0!==r)return a;a.width===t.width&&a.height===t.height||ta(e,t),t.stats=t.stats||{};var o=e.renderingTools.renderCanvasData,s=e.renderingTools.renderCanvasContext,u=Zi();t.stats.lastLutGenerateTime=Zi()-u;var l=e.viewport;if("PT"===l.modality&&t.isPreScaled){var c=l.voi,d=c.windowWidth,v=c.windowCenter,f=v-d/2,p=255/(v+d/2-f);!function(e,t,r){var n=Zi(),i=e.getPixelData();e.stats.lastGetPixelDataTime=Zi()-n;var a=i.length,o=3,s=0;for(n=Zi();s<a;)r[o]=t(i[s++]),o+=4;e.stats.lastStoredPixelDataToCanvasImageDataTime=Zi()-n}(t,l.invert?function(e){return 255-(e-f)*p}:function(e){return(e-f)*p},o.data)}else{var h=oa(t,l,r);n?function(e,t,r){var n=Zi(),i=e.getPixelData();e.stats.lastGetPixelDataTime=Zi()-n;var a=i.length,o=e.minPixelValue,s=3,u=0;if(n=Zi(),i instanceof Int16Array)if(o<0)for(;u<a;)r[s]=t[i[u++]+-o],s+=4;else for(;u<a;)r[s]=t[i[u++]],s+=4;else if(i instanceof Uint16Array)for(;u<a;)r[s]=t[i[u++]],s+=4;else if(o<0)for(;u<a;)r[s]=t[i[u++]+-o],s+=4;else for(;u<a;)r[s]=t[i[u++]],s+=4;e.stats.lastStoredPixelDataToCanvasImageDataTime=Zi()-n}(t,h,o.data):function(e,t,r){var n=Zi(),i=e.getPixelData();e.stats.lastGetPixelDataTime=Zi()-n;var a,o=i.length,s=e.minPixelValue,u=0,l=0;if(n=Zi(),i instanceof Int16Array)if(s<0)for(;l<o;)a=t[i[l++]+-s],r[u++]=a,r[u++]=a,r[u++]=a,r[u++]=255;else for(;l<o;)a=t[i[l++]],r[u++]=a,r[u++]=a,r[u++]=a,r[u++]=255;else if(i instanceof Uint16Array)for(;l<o;)a=t[i[l++]],r[u++]=a,r[u++]=a,r[u++]=a,r[u++]=255;else if(s<0)for(;l<o;)a=t[i[l++]+-s],r[u++]=a,r[u++]=a,r[u++]=a,r[u++]=255;else for(;l<o;)a=t[i[l++]],r[u++]=a,r[u++]=a,r[u++]=a,r[u++]=255;e.stats.lastStoredPixelDataToCanvasImageDataTime=Zi()-n}(t,h,o.data)}return u=Zi(),s.putImageData(o,0,0),t.stats.lastPutImageDataTime=Zi()-u,a}(e,r,t),a=e.viewport.displayedArea.tlhc.x-1,o=e.viewport.displayedArea.tlhc.y-1,s=e.viewport.displayedArea.brhc.x-a,u=e.viewport.displayedArea.brhc.y-o;n.drawImage(i,a,o,s,u,0,0,s,u),e.renderingTools=ra(e)}function ua(e,t,r){if(e>1)throw new Error("HSVToRGB expects hue < 1");var n=[];if(0===t)return n[0]=r,n[1]=r,n[2]=r,n;var i=Math.floor(6*e),a=6*e-i,o=r*(1-t),s=r*(1-t*a),u=r*(1-t*(1-a));switch(i){case 0:case 6:n[0]=r,n[1]=u,n[2]=o;break;case 1:n[0]=s,n[1]=r,n[2]=o;break;case 2:n[0]=o,n[1]=r,n[2]=u;break;case 3:n[0]=o,n[1]=s,n[2]=r;break;case 4:n[0]=u,n[1]=o,n[2]=r;break;case 5:n[0]=r,n[1]=o,n[2]=s}return n}var la=function(){function e(){he(this,e),ue(this,"NumberOfColors",void 0),ue(this,"Ramp",void 0),ue(this,"TableRange",void 0),ue(this,"HueRange",void 0),ue(this,"SaturationRange",void 0),ue(this,"ValueRange",void 0),ue(this,"AlphaRange",void 0),ue(this,"NaNColor",void 0),ue(this,"BelowRangeColor",void 0),ue(this,"UseBelowRangeColor",void 0),ue(this,"AboveRangeColor",void 0),ue(this,"UseAboveRangeColor",void 0),ue(this,"InputRange",void 0),ue(this,"Table",void 0),this.NumberOfColors=256,this.Ramp="linear",this.TableRange=[0,255],this.HueRange=[0,.66667],this.SaturationRange=[1,1],this.ValueRange=[1,1],this.AlphaRange=[1,1],this.NaNColor=[128,0,0,255],this.BelowRangeColor=[0,0,0,255],this.UseBelowRangeColor=!0,this.AboveRangeColor=[255,255,255,255],this.UseAboveRangeColor=!0,this.InputRange=[0,255],this.Table=[]}return me(e,[{key:"setNumberOfTableValues",value:function(e){this.NumberOfColors=e}},{key:"setRamp",value:function(e){this.Ramp=e}},{key:"setTableRange",value:function(e,t){this.TableRange[0]=e,this.TableRange[1]=t}},{key:"setHueRange",value:function(e,t){this.HueRange[0]=e,this.HueRange[1]=t}},{key:"setSaturationRange",value:function(e,t){this.SaturationRange[0]=e,this.SaturationRange[1]=t}},{key:"setValueRange",value:function(e,t){this.ValueRange[0]=e,this.ValueRange[1]=t}},{key:"setRange",value:function(e,t){this.InputRange[0]=e,this.InputRange[1]=t}},{key:"setAlphaRange",value:function(e,t){this.AlphaRange[0]=e,this.AlphaRange[1]=t}},{key:"getColor",value:function(e){return this.mapValue(e)}},{key:"build",value:function(e){if(!(this.Table.length>1)||e){this.Table=[];var t,r,n,i,a=this.NumberOfColors-1;a?(t=(this.HueRange[1]-this.HueRange[0])/a,r=(this.SaturationRange[1]-this.SaturationRange[0])/a,n=(this.ValueRange[1]-this.ValueRange[0])/a,i=(this.AlphaRange[1]-this.AlphaRange[0])/a):t=r=n=i=0;for(var o=0;o<=a;o++){var s=this.HueRange[0]+o*t,u=this.SaturationRange[0]+o*r,l=this.ValueRange[0]+o*n,c=this.AlphaRange[0]+o*i,d=ua(s,u,l),v=[0,0,0,0];switch(this.Ramp){case"scurve":v[0]=Math.floor(127.5*(1+Math.cos((1-d[0])*Math.PI))),v[1]=Math.floor(127.5*(1+Math.cos((1-d[1])*Math.PI))),v[2]=Math.floor(127.5*(1+Math.cos((1-d[2])*Math.PI))),v[3]=Math.floor(255*c);break;case"linear":v[0]=Math.floor(255*d[0]+.5),v[1]=Math.floor(255*d[1]+.5),v[2]=Math.floor(255*d[2]+.5),v[3]=Math.floor(255*c+.5);break;case"sqrt":v[0]=Math.floor(255*Math.sqrt(d[0])+.5),v[1]=Math.floor(255*Math.sqrt(d[1])+.5),v[2]=Math.floor(255*Math.sqrt(d[2])+.5),v[3]=Math.floor(255*Math.sqrt(c)+.5);break;default:throw new Error("Invalid Ramp value (".concat(this.Ramp,")"))}this.Table.push(v)}this.buildSpecialColors()}}},{key:"buildSpecialColors",value:function(){var e=this.NumberOfColors,t=e+0,r=e+1,n=e+2;this.UseBelowRangeColor||0===e?this.Table[t]=this.BelowRangeColor:this.Table[t]=this.Table[0],this.UseAboveRangeColor||0===e?this.Table[r]=this.AboveRangeColor:this.Table[r]=this.Table[e-1],this.Table[n]=this.NaNColor}},{key:"mapValue",value:function(e){var t=this.getIndex(e);if(t<0)return this.NaNColor;if(0===t){if(this.UseBelowRangeColor&&e<this.TableRange[0])return this.BelowRangeColor}else if(t===this.NumberOfColors-1&&this.UseAboveRangeColor&&e>this.TableRange[1])return this.AboveRangeColor;return this.Table[t]}},{key:"getIndex",value:function(e){var t={Range:[],MaxIndex:this.NumberOfColors-1,Shift:-this.TableRange[0],Scale:1};if(this.TableRange[1]<=this.TableRange[0]?t.Scale=Number.MAX_VALUE:t.Scale=t.MaxIndex/(this.TableRange[1]-this.TableRange[0]),t.Range[0]=this.TableRange[0],t.Range[1]=this.TableRange[1],isNaN(e))return-1;var r=function(e,t){var r;return r=e<t.Range[0]?t.MaxIndex+0+1.5:e>t.Range[1]?t.MaxIndex+1+1.5:(e+t.Shift)*t.Scale,Math.floor(r)}(e,t);return r===this.NumberOfColors+0?r=0:r===this.NumberOfColors+1&&(r=this.NumberOfColors-1),r}},{key:"setTableValue",value:function(e,t){if(5===arguments.length&&(t=Array.prototype.slice.call(arguments,1)),e<0)throw new Error("Can't set the table value for negative index (".concat(e,")"));e>=this.NumberOfColors&&new Error("Index ".concat(e," is greater than the number of colors ").concat(this.NumberOfColors)),this.Table[e]=t,0!==e&&e!==this.NumberOfColors-1||this.buildSpecialColors()}}]),e}(),ca=la,da=function(e,t,r,n){var i=Zi(),a=e.getPixelData();e.stats.lastGetPixelDataTime=Zi()-i;var o,s,u=a.length,l=e.minPixelValue,c=0,d=0;if(i=Zi(),s=r instanceof ca?r.Table:r,l<0)for(;d<u;)o=s[t[a[d++]+-l]],n[c++]=o[0],n[c++]=o[1],n[c++]=o[2],n[c++]=o[3];else for(;d<u;)o=s[t[a[d++]]],n[c++]=o[0],n[c++]=o[1],n[c++]=o[2],n[c++]=o[3];e.stats.lastStoredPixelDataToCanvasImageDataTime=Zi()-i},va=function(e,t,r,n){var i=Zi(),a=e.getPixelData();e.stats.lastGetPixelDataTime=Zi()-i;var o,s,u=a.length,l=e.minPixelValue,c=0,d=0;if(i=Zi(),s=r instanceof ca?r.Table:r,l<0)for(;d<u;)o=s[t(a[d++]+-l)],n[c++]=o[0],n[c++]=o[1],n[c++]=o[2],n[c++]=o[3];else for(;d<u;)o=s[t(a[d++])],n[c++]=o[0],n[c++]=o[1],n[c++]=o[2],n[c++]=o[3];e.stats.lastStoredPixelDataToCanvasImageDataTime=Zi()-i},fa=[0,0,0,0];function pa(e,t){for(var r=0,n=e.length-1;r<=n;){var i=r+Math.floor((n-r)/2),a=e[i];if(a===t)return i;t<a?n=i-1:r=i+1}return r}function ha(e,t,r){var n,i=[],a=[],o=[],s=[];for(r=null===r?1:r,n=0;n<t.length;n++){var u=t[n];i.push((e-1)*u[0]),a.push(u[1]),o.push(u[1])}var l=function(e,t,r){for(var n=(1-e)/((r=null===r?100:r)-1),i=[];r-- >0;)i.push(e),e+=n;return i[i.length-1]=1,i}(0,0,e);for(n=0;n<e;n++)l[n]=(e-1)*Math.pow(l[n],r);var c=function(e,t){var r,n=[],i=t.length;for(e.sort((function(e,t){return e-t})),r=0;r<i;r++)n[r]=pa(e,t[r]);return n}(i,l);for(n=1;n<e-1;n++){var d=c[n],v=(l[n]-i[d-1])/(i[d]-i[d-1]),f=a[d]-o[d-1];s[n]=v*f+o[d-1]}return s[0]=o[0],s[e-1]=a[t.length-1],s}function ga(e,t){var r=z[e];return r||(r=z[e]=t||{name:"",colors:[]}),!r.colors&&r.segmentedData&&(r.colors=function(e,t,r){var n,i=[];r=null===r?1:r;var a=ha(t=null===t?256:t,e.red,r),o=ha(t,e.green,r),s=ha(t,e.blue,r);for(n=0;n<t;n++){var u=[Math.round(255*a[n]),Math.round(255*o[n]),Math.round(255*s[n]),255];i.push(u)}return i}(r.segmentedData,r.numColors,r.gamma)),{getId:function(){return e},getColorSchemeName:function(){return r.name},setColorSchemeName:function(e){r.name=e},getNumberOfColors:function(){return r.colors.length},setNumberOfColors:function(e){for(;r.colors.length<e;)r.colors.push(fa);r.colors.length=e},getColor:function(e){return this.isValidIndex(e)?r.colors[e]:fa},getColorRepeating:function(e){var t=r.colors.length;return e=t?e%t:0,this.getColor(e)},setColor:function(e,t){this.isValidIndex(e)&&(r.colors[e]=t)},addColor:function(e){r.colors.push(e)},insertColor:function(e,t){this.isValidIndex(e)&&r.colors.splice(e,1,t)},removeColor:function(e){this.isValidIndex(e)&&r.colors.splice(e,1)},clearColors:function(){r.colors=[]},buildLookupTable:function(e){if(e){var t=r.colors.length;e.setNumberOfTableValues(t);for(var n=0;n<t;n++)e.setTableValue(n,r.colors[n])}},createLookupTable:function(){var e=new ca;return this.buildLookupTable(e),e},isValidIndex:function(e){return e>=0&&e<r.colors.length}}}function ma(e,t,r){return Math.max(t,Math.min(r,e))}function ya(e,t){if(void 0===e)throw new Error("drawImage: enabledElement parameter must not be undefined");var r=e.image;if(void 0===r)throw new Error("drawImage: image must be loaded before it can be drawn");var n=e.canvas.getContext("2d");n.setTransform(1,0,0,1,0,0),n.fillStyle="black",n.fillRect(0,0,e.canvas.width,e.canvas.height),n.imageSmoothingEnabled=!e.viewport.pixelReplication,Ji(e,n);var i=function(e,t,r){e.renderingTools.renderCanvas||(e.renderingTools.renderCanvas=document.createElement("canvas"));var n=e.renderingTools.renderCanvas,i=e.viewport.colormap||e.options.colormap;if(e.options&&e.options.colormap&&console.warn("enabledElement.options.colormap is deprecated. Use enabledElement.viewport.colormap instead"),i&&"string"==typeof i&&(i=ga(i)),!i)throw new Error("renderPseudoColorImage: colormap not found.");var a=i.getId();if(!1===ea(e,t)&&!0!==r&&e.renderingTools.colormapId===a)return n;n.width===t.width&&n.height===t.height||ta(e,t);var o=Zi();e.renderingTools.colorLUT&&!r&&e.renderingTools.colormapId===a||(i.setNumberOfColors(256),e.renderingTools.colorLUT=i.createLookupTable(),e.renderingTools.colormapId=a);var s=e.renderingTools.renderCanvasData,u=e.renderingTools.renderCanvasContext,l=e.viewport,c=e.renderingTools.colorLUT;if("PT"===l.modality){var d,v=l.voi,f=v.windowWidth,p=v.windowCenter,h=p-f/2,g=255/(p+f/2-h);d=l.invert?function(e){return ma(Math.floor(255-(e-h)*g),0,255)}:function(e){return ma(Math.floor((e-h)*g),0,255)},va(t,d,c,s.data)}else{var m=oa(t,e.viewport,r);t.stats=t.stats||{},t.stats.lastLutGenerateTime=Zi()-o,da(t,m,c,s.data)}return o=Zi(),u.putImageData(s,0,0),t.stats.lastPutImageDataTime=Zi()-o,n}(e,r,t),a=e.viewport.displayedArea.tlhc.x-1,o=e.viewport.displayedArea.tlhc.y-1,s=e.viewport.displayedArea.brhc.x-a,u=e.viewport.displayedArea.brhc.y-o;n.drawImage(i,a,o,s,u,0,0,s,u),e.renderingTools=ra(e)}function wa(e,t){var r=e.image;if(e.canvas&&e.image){var n=Zi();if(r.stats={lastGetPixelDataTime:-1,lastStoredPixelDataToCanvasImageDataTime:-1,lastPutImageDataTime:-1,lastRenderTime:-1,lastLutGenerateTime:-1},r){var i=r.render;i||(i=e.viewport.colormap?ya:r.color?ia:sa),i(e,t)}var a=Zi()-n;r.stats.lastRenderTime=a,e.invalid=!1,e.needsRedraw=!1}}function Ia(e){return $i(e)}function Ca(e,t){var r=Ia(e);return r.invert(),r.transformPoint(t)}function ba(e,t){return Ia(e).transformPoint(t)}var Ea={viewport:{}};function Pa(e,t){if(null==e)throw new Error(t)}function ka(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return Pa(e,"getImageSize: parameter image must not be undefined"),Pa(e.width,"getImageSize: parameter image must have width"),Pa(e.height,"getImageSize: parameter image must have height"),function(e){return!(null==e||0===e||180===e)}(t)?{height:e.width,width:e.height}:{width:e.width,height:e.height}}function Ra(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;Pa(e,"getImageScale: parameter canvas must not be undefined"),Pa(t,"getImageScale: parameter image must not be undefined");var n=ka(t,r),i=t.rowPixelSpacing||1,a=t.columnPixelSpacing||1,o=1,s=1;i<a?s=a/i:o=i/a;var u=e.height/n.height/o,l=e.width/n.width/s;return{verticalScale:u,horizontalScale:l,scaleFactor:Math.min(l,u)}}function Oa(e,t,r,n){if(void 0===e)throw new Error("getDefaultViewport: parameter canvas must not be undefined");if(void 0===t)return i={scale:1,translation:{x:0,y:0},voi:{windowWidth:void 0,windowCenter:void 0},invert:!1,pixelReplication:!1,rotation:0,hflip:!1,vflip:!1,modalityLUT:void 0,voiLUT:void 0,colormap:void 0,labelmap:!1,displayedArea:{tlhc:{x:1,y:1},brhc:{x:1,y:1},rowPixelSpacing:1,columnPixelSpacing:1,presentationSizeMode:"NONE"}},Object.assign({},i,Ea.viewport);var i,a,o=Ra(e,t,0).scaleFactor;return"PT"===r&&t.isPreScaled?a={windowWidth:5,windowCenter:2.5}:void 0!==t.windowWidth&&void 0!==t.windowCenter&&(a={windowWidth:Array.isArray(t.windowWidth)?t.windowWidth[0]:t.windowWidth,windowCenter:Array.isArray(t.windowCenter)?t.windowCenter[0]:t.windowCenter}),{scale:o,translation:{x:0,y:0},voi:a,invert:t.invert,pixelReplication:!1,rotation:0,hflip:!1,vflip:!1,modalityLUT:t.modalityLUT,modality:r,voiLUT:t.voiLUT,colormap:void 0!==n?n:t.colormap,displayedArea:{tlhc:{x:1,y:1},brhc:{x:t.columns,y:t.rows},rowPixelSpacing:void 0===t.rowPixelSpacing?1:t.rowPixelSpacing,columnPixelSpacing:void 0===t.columnPixelSpacing?1:t.columnPixelSpacing,presentationSizeMode:"NONE"}}}function Aa(e){var t=Nn().newInstance(),r=0,n=1024;return e&&void 0!==e.lower&&void 0!==e.upper&&(r=e.lower,n=e.upper),t.addRGBPoint(r,0,0,0),t.addRGBPoint(n,1,1,1),t}var Ta,Sa=[{id:"initialImages",retrieveType:"single"},{id:"errorRetrieve"}],xa=[{offset:-1,imageQualityStatus:G.ADJACENT_REPLICATE},{offset:1,imageQualityStatus:G.ADJACENT_REPLICATE},{offset:2,imageQualityStatus:G.FAR_REPLICATE}],Da=[{id:"initialImages",positions:[.5,0,-1],retrieveType:"default",requestType:g.Thumbnail,priority:5,nearbyFrames:xa},{id:"quarterThumb",decimate:4,offset:3,requestType:g.Thumbnail,retrieveType:"multipleFast",priority:6,nearbyFrames:xa},{id:"halfThumb",decimate:4,offset:1,priority:7,requestType:g.Thumbnail,retrieveType:"multipleFast",nearbyFrames:xa},{id:"quarterFull",decimate:4,offset:2,priority:8,requestType:g.Thumbnail,retrieveType:"multipleFinal"},{id:"halfFull",decimate:4,offset:0,priority:9,requestType:g.Thumbnail,retrieveType:"multipleFinal"},{id:"threeQuarterFull",decimate:4,offset:1,priority:10,requestType:g.Thumbnail,retrieveType:"multipleFinal"},{id:"finalFull",decimate:4,offset:3,priority:11,requestType:g.Thumbnail,retrieveType:"multipleFinal"},{id:"errorRetrieve"}];function _a(e,t){this.v=e,this.k=t}function Ma(e){var t,r;function n(t,r){try{var a=e[t](r),o=a.value,s=o instanceof _a;Promise.resolve(s?o.v:o).then((function(r){if(s){var u="return"===t?"return":"next";if(!o.k||r.done)return n(u,r);r=e[u](r).value}i(a.done?"return":"normal",r)}),(function(e){n("throw",e)}))}catch(e){i("throw",e)}}function i(e,i){switch(e){case"return":t.resolve({value:i,done:!0});break;case"throw":t.reject(i);break;default:t.resolve({value:i,done:!1})}(t=t.next)?n(t.key,t.arg):r=null}this._invoke=function(e,i){return new Promise((function(a,o){var s={key:e,arg:i,resolve:a,reject:o,next:null};r?r=r.next=s:(t=r=s,n(e,i))}))},"function"!=typeof e.return&&(this.return=void 0)}function Va(e){var t,r,n,i=2;for("undefined"!=typeof Symbol&&(r=Symbol.asyncIterator,n=Symbol.iterator);i--;){if(r&&null!=(t=e[r]))return t.call(e);if(n&&null!=(t=e[n]))return new La(t.call(e));r="@@asyncIterator",n="@@iterator"}throw new TypeError("Object is not async iterable")}function La(e){function t(e){if(Object(e)!==e)return Promise.reject(new TypeError(e+" is not an object."));var t=e.done;return Promise.resolve(e.value).then((function(e){return{value:e,done:t}}))}return La=function(e){this.s=e,this.n=e.next},La.prototype={s:null,n:null,next:function(){return t(this.n.apply(this.s,arguments))},return:function(e){var r=this.s.return;return void 0===r?Promise.resolve({value:e,done:!0}):t(r.apply(this.s,arguments))},throw:function(e){var r=this.s.return;return void 0===r?Promise.reject(e):t(r.apply(this.s,arguments))}},new La(e)}Ma.prototype["function"==typeof Symbol&&Symbol.asyncIterator||"@@asyncIterator"]=function(){return this},Ma.prototype.next=function(e){return this._invoke("next",e)},Ma.prototype.throw=function(e){return this._invoke("throw",e)},Ma.prototype.return=function(e){return this._invoke("return",e)},Ta=Symbol.asyncIterator;var Ua=function(){function e(t){he(this,e),ue(this,"done",void 0),ue(this,"name",void 0),ue(this,"nextValue",void 0),ue(this,"waiting",void 0),ue(this,"rejectReason",void 0),this.name=t||"unknown"}var t,r,n;return me(e,[{key:"add",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];this.nextValue=e,this.done||(this.done=t),this.waiting&&(this.waiting.resolve(e),this.waiting=void 0)}},{key:"resolve",value:function(){this.done=!0,this.waiting&&(this.waiting.resolve(this.nextValue),this.waiting=void 0)}},{key:"reject",value:function(e){var t;this.rejectReason=e,null===(t=this.waiting)||void 0===t||t.reject(e)}},{key:"getRecent",value:function(){if(this.rejectReason)throw this.rejectReason;return this.nextValue}},{key:Ta,value:function(){var e,t=this;return(e=ie().mark((function e(){return ie().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(t.done){e.next=13;break}if(!t.rejectReason){e.next=3;break}throw t.rejectReason;case 3:if(void 0===t.nextValue){e.next=8;break}return e.next=6,t.nextValue;case 6:if(!t.done){e.next=8;break}return e.abrupt("break",13);case 8:return t.waiting||(t.waiting={},t.waiting.promise=new Promise((function(e,r){t.waiting.resolve=e,t.waiting.reject=r}))),e.next=11,new _a(t.waiting.promise,0);case 11:e.next=0;break;case 13:return e.next=15,t.nextValue;case 15:case"end":return e.stop()}}),e)})),function(){return new Ma(e.apply(this,arguments))})()}},{key:"forEach",value:(n=re(ie().mark((function e(t,r){var n,i,a,o,s,u,l,c;return ie().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:n=0,e.prev=1,i=!1,a=!1,e.prev=4,s=Va(this);case 6:return e.next=8,s.next();case 8:if(!(i=!(u=e.sent).done)){e.next=30;break}return l=u.value,c=this.done,e.prev=11,e.next=14,t(l,c,n);case 14:n++,e.next=27;break;case 17:if(e.prev=17,e.t0=e.catch(11),c){e.next=22;break}return console.warn("Caught exception in intermediate value",e.t0),e.abrupt("continue",27);case 22:if(!r){e.next=26;break}r(e.t0,c),e.next=27;break;case 26:throw e.t0;case 27:i=!1,e.next=6;break;case 30:e.next=36;break;case 32:e.prev=32,e.t1=e.catch(4),a=!0,o=e.t1;case 36:if(e.prev=36,e.prev=37,!i||null==s.return){e.next=41;break}return e.next=41,s.return();case 41:if(e.prev=41,!a){e.next=44;break}throw o;case 44:return e.finish(41);case 45:return e.finish(36);case 46:e.next=55;break;case 48:if(e.prev=48,e.t2=e.catch(1),!r){e.next=54;break}r(e.t2,!0),e.next=55;break;case 54:throw e.t2;case 55:case"end":return e.stop()}}),e,this,[[1,48],[4,32,36,46],[11,17],[37,,41,45]])}))),function(e,t){return n.apply(this,arguments)})},{key:"generate",value:function(e,t){var r=this;return e(this,this.reject.bind(this)).then((function(){r.done||r.resolve()}),(function(e){r.reject(e),t?t(e):console.warn("Couldn't process because",e)}))}},{key:"nextPromise",value:(r=re(ie().mark((function e(){var t,r,n,i,a,o;return ie().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:t=!1,r=!1,e.prev=2,i=Va(this);case 4:return e.next=6,i.next();case 6:if(!(t=!(a=e.sent).done)){e.next=13;break}if(!(o=a.value)){e.next=10;break}return e.abrupt("return",o);case 10:t=!1,e.next=4;break;case 13:e.next=19;break;case 15:e.prev=15,e.t0=e.catch(2),r=!0,n=e.t0;case 19:if(e.prev=19,e.prev=20,!t||null==i.return){e.next=24;break}return e.next=24,i.return();case 24:if(e.prev=24,!r){e.next=27;break}throw n;case 27:return e.finish(24);case 28:return e.finish(19);case 29:return e.abrupt("return",this.nextValue);case 30:case"end":return e.stop()}}),e,this,[[2,15,19,29],[20,,24,28]])}))),function(){return r.apply(this,arguments)})},{key:"donePromise",value:(t=re(ie().mark((function e(){var t,r,n,i,a;return ie().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:t=!1,r=!1,e.prev=2,i=Va(this);case 4:return e.next=6,i.next();case 6:if(!(t=!(a=e.sent).done)){e.next=11;break}a.value;case 8:t=!1,e.next=4;break;case 11:e.next=17;break;case 13:e.prev=13,e.t0=e.catch(2),r=!0,n=e.t0;case 17:if(e.prev=17,e.prev=18,!t||null==i.return){e.next=22;break}return e.next=22,i.return();case 22:if(e.prev=22,!r){e.next=25;break}throw n;case 25:return e.finish(22);case 26:return e.finish(17);case 27:return e.abrupt("return",this.nextValue);case 28:case"end":return e.stop()}}),e,this,[[2,13,17,27],[18,,22,26]])}))),function(){return t.apply(this,arguments)})},{key:"getNextPromise",value:function(){var e=this.nextPromise();return e.iterator=this,e}},{key:"getDonePromise",value:function(){var e=this.donePromise();return e.iterator=this,e}}],[{key:"as",value:function(t){if(t.iterator)return t.iterator;var r=new e("as iterator");return t.then((function(e){try{r.add(e,!0)}catch(e){r.reject(e)}}),(function(e){return r.reject(e)})),r}}]),e}();function ja(e,t){for(var r=[],n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0;n<e.length;n+=t)r.push(n);return r}function Na(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function Fa(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?Na(Object(r),!0).forEach((function(t){ue(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):Na(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function Ga(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r<t;r++)n[r]=e[r];return n}function Wa(e,t,r,n,i){var a;if(null!=r&&null!==(a=r.nearbyRequests)&&void 0!==a&&a.length){var o=i.targetBuffer,s=o.arrayBuffer,u=o.offset,l=o.type,c=o.length;if(s&&void 0!==u&&l){var d,v=new Float32Array(s),f=v.byteLength/v.length,p=i.targetBuffer.offset/f,h=v.slice(p,p+c),g=function(e,t){var r="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!r){if(Array.isArray(e)||(r=function(e,t){if(e){if("string"==typeof e)return Ga(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?Ga(e,t):void 0}}(e))||t&&e&&"number"==typeof e.length){r&&(e=r);var n=0,i=function(){};return{s:i,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,o=!0,s=!1;return{s:function(){r=r.call(e)},n:function(){var e=r.next();return o=e.done,e},e:function(e){s=!0,a=e},f:function(){try{o||null==r.return||r.return()}finally{if(s)throw a}}}}(r.nearbyRequests);try{for(g.s();!(d=g.n()).done;){var m=d.value;try{var y=m.itemId,w=m.imageQualityStatus,I=t.get(y);if(void 0!==I&&I>=w)continue;var C=e.getLoaderImageOptions(y).targetBuffer.offset;v.set(h,C/f);var b=Fa(Fa({},n),{},{imageQualityStatus:w});e.successCallback(y,b),t.set(y,w)}catch(e){console.log("Couldn't fill nearby item ",m.itemId,e)}}}catch(e){g.e(e)}finally{g.f()}}}}function Ba(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function qa(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?Ba(Object(r),!0).forEach((function(t){ue(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):Ba(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function za(e,t){var r="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!r){if(Array.isArray(e)||(r=function(e,t){if(e){if("string"==typeof e)return Ha(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?Ha(e,t):void 0}}(e))||t&&e&&"number"==typeof e.length){r&&(e=r);var n=0,i=function(){};return{s:i,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,o=!0,s=!1;return{s:function(){r=r.call(e)},n:function(){var e=r.next();return o=e.done,e},e:function(e){s=!0,a=e},f:function(){try{o||null==r.return||r.return()}finally{if(s)throw a}}}}function Ha(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r<t;r++)n[r]=e[r];return n}var Ka=function(){function e(t){he(this,e),ue(this,"stages",void 0),ue(this,"retrieveOptions",void 0),this.stages=t.stages||Sa,this.retrieveOptions=t.retrieveOptions||{}}return me(e,[{key:"loadImages",value:function(e,t){return new Ya(this,e,t).loadImages()}}]),e}();ue(Ka,"createProgressive",Za),ue(Ka,"interleavedRetrieveStages",{stages:Da}),ue(Ka,"singleRetrieveStages",{stages:Sa}),ue(Ka,"sequentialRetrieveStages",{stages:[{id:"lossySequential",retrieveType:"singleFast"},{id:"finalSequential",retrieveType:"singleFinal"}]});var Ya=function(){function e(t,r,n){he(this,e),ue(this,"imageIds",void 0),ue(this,"listener",void 0),ue(this,"stages",void 0),ue(this,"retrieveOptions",void 0),ue(this,"outstandingRequests",0),ue(this,"stageStatusMap",new Map),ue(this,"imageQualityStatusMap",new Map),ue(this,"displayedIterator",new Ua("displayed")),this.stages=t.stages,this.retrieveOptions=t.retrieveOptions,this.imageIds=r,this.listener=n}var t;return me(e,[{key:"loadImages",value:(t=re(ie().mark((function e(){var t,r,n,i;return ie().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:t=this.createStageRequests(),this.outstandingRequests=t.length,r=za(t);try{for(r.s();!(n=r.n()).done;)i=n.value,this.addRequest(i)}catch(e){r.e(e)}finally{r.f()}if(0!==this.outstandingRequests){e.next=6;break}return e.abrupt("return",Promise.resolve(null));case 6:return e.abrupt("return",this.displayedIterator.getDonePromise());case 7:case"end":return e.stop()}}),e,this)}))),function(){return t.apply(this,arguments)})},{key:"sendRequest",value:function(e,t){var r=this,n=e.imageId,i=e.next,a=(t.loader||Gt)(n,t),o=Ua.as(a),s=!1;return o.forEach(function(){var i=re(ie().mark((function i(a,o){var u,l;return ie().wrap((function(i){for(;;)switch(i.prev=i.next){case 0:if(u=r.imageQualityStatusMap.get(n),a){i.next=4;break}return console.warn("No image retrieved",n),i.abrupt("return");case 4:if(l=a.imageQualityStatus,s||(s=l===G.FULL_RESOLUTION),!(void 0!==u&&u>l)){i.next=9;break}return r.updateStageStatus(e.stage,null,!0),i.abrupt("return");case 9:r.listener.successCallback(n,a),r.imageQualityStatusMap.set(n,l),r.displayedIterator.add(a),o&&r.updateStageStatus(e.stage),Wa(r.listener,r.imageQualityStatusMap,e,a,t);case 14:case"end":return i.stop()}}),i)})));return function(e,t){return i.apply(this,arguments)}}(),(function(t,a){r.listener.errorCallback(n,s||!i,t),a&&r.updateStageStatus(e.stage,t)})).finally((function(){if(!s&&i)Dn.getImageLoadObject(n)&&Dn.removeImageLoadObject(n),r.addRequest(i,t.streamingData);else{s||r.listener.errorCallback(n,!0,"Couldn't decode"),r.outstandingRequests--;for(var e=i;e;e=e.next)r.updateStageStatus(e.stage,null,!0)}r.outstandingRequests<=0&&r.displayedIterator.resolve()})),o.getDonePromise().catch((function(e){return null}))}},{key:"addRequest",value:function(e){var t,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=e.imageId,i=e.stage,a=this.listener.getLoaderImageOptions(n);if(a){var o=i.retrieveType,s=void 0===o?"default":o,u=this.retrieveOptions,l=u[s]||u.default,c=qa(qa({},a),{},{retrieveType:s,retrieveOptions:l,streamingData:r}),d=null!==(t=i.priority)&&void 0!==t?t:-5,v=i.requestType||g.Interaction,f={imageId:n};Ut.addRequest(this.sendRequest.bind(this,e,c),v,f,d)}}},{key:"updateStageStatus",value:function(e,t){var r=arguments.length>2&&void 0!==arguments[2]&&arguments[2],n=e.id,i=this.stageStatusMap.get(n);if(i&&(i.imageLoadPendingCount--,t?i.imageLoadFailedCount++:r||i.totalImageCount++,r||i.stageStartTime||(i.stageStartTime=Date.now()),!i.imageLoadPendingCount)){var a=i.imageLoadFailedCount,o=i.totalImageCount,s=i.stageStartTime,u=void 0===s?Date.now():s,l=i.startTime,c={stageId:n,numberOfFailures:a,numberOfImages:o,stageDurationInMS:u?Date.now()-u:null,startDurationInMS:Date.now()-l};st(ot,p.IMAGE_RETRIEVAL_STAGE,c),this.stageStatusMap.delete(n)}}},{key:"createStageRequests",value:function(){var e,t=this,r=new Array,n=new Map,i=za(this.stages);try{var a=function(){var i,a=e.value;(a.positions||ja(t.imageIds,a.decimate||1,null!==(i=a.offset)&&void 0!==i?i:0)).forEach((function(e){return function(e,i){var a=i<0?t.imageIds.length+i:i<1?Math.floor((t.imageIds.length-1)*i):i,o=t.imageIds[a];if(!o)throw new Error("No value found to add to requests at ".concat(i));var s={imageId:o,stage:e,nearbyRequests:t.findNearbyRequests(a,e)};t.addStageStatus(e);var u=n.get(o);u?u.next=s:r.push(s),n.set(o,s)}(a,e)}))};for(i.s();!(e=i.n()).done;)a()}catch(e){i.e(e)}finally{i.f()}return r}},{key:"findNearbyRequests",value:function(e,t){var r=new Array;if(!t.nearbyFrames)return r;var n,i=za(t.nearbyFrames);try{for(i.s();!(n=i.n()).done;){var a=n.value,o=e+a.offset;o<0||o>=this.imageIds.length||r.push({itemId:this.imageIds[o],imageQualityStatus:a.imageQualityStatus})}}catch(e){i.e(e)}finally{i.f()}return r}},{key:"addStageStatus",value:function(e){var t=e.id,r=this.stageStatusMap.get(t)||{stageId:t,startTime:Date.now(),stageStartTime:null,totalImageCount:0,imageLoadFailedCount:0,imageLoadPendingCount:0};return r.imageLoadPendingCount++,this.stageStatusMap.set(t,r),r}}]),e}();function Za(e){return new Ka(e)}var Xa=Ka;function Qa(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function $a(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?Qa(Object(r),!0).forEach((function(t){ue(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):Qa(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}var Ja=function(e){On(o,e);var t,r,n,i,a=(n=o,i=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,t=Pn(n);if(i){var r=Pn(this).constructor;e=Reflect.construct(t,arguments,r)}else e=t.apply(this,arguments);return An(this,e)});function o(e){var t,r,n,i,s,u,l,c,d,v,f,p,h,g,m;return he(this,o),ue(En(m=a.call(this,e)),"imageIds",void 0),ue(En(m),"currentImageIdIndex",void 0),ue(En(m),"targetImageIdIndex",void 0),ue(En(m),"debouncedTimeout",void 0),ue(En(m),"imagesLoader",En(m)),ue(En(m),"globalDefaultProperties",void 0),ue(En(m),"perImageIdDefaultProperties",new Map),ue(En(m),"colormap",void 0),ue(En(m),"voiRange",void 0),ue(En(m),"voiUpdatedWithSetProperties",!1),ue(En(m),"VOILUTFunction",void 0),ue(En(m),"invert",!1),ue(En(m),"initialInvert",!1),ue(En(m),"initialTransferFunctionNodes",null),ue(En(m),"interpolationType",void 0),ue(En(m),"_imageData",void 0),ue(En(m),"cameraFocalPointOnRender",void 0),ue(En(m),"stackInvalidated",!1),ue(En(m),"_publishCalibratedEvent",!1),ue(En(m),"_calibrationEvent",void 0),ue(En(m),"_cpuFallbackEnabledElement",void 0),ue(En(m),"useCPURendering",void 0),ue(En(m),"useNativeDataType",!1),ue(En(m),"cpuImagePixelData",void 0),ue(En(m),"cpuRenderingInvalidated",void 0),ue(En(m),"csImage",void 0),ue(En(m),"modality",void 0),ue(En(m),"scaling",void 0),ue(En(m),"initialViewUp",void 0),ue(En(m),"updateRenderingPipeline",(function(){m._configureRenderingPipeline()})),ue(En(m),"getImageData",void 0),ue(En(m),"getCamera",void 0),ue(En(m),"setCamera",void 0),ue(En(m),"getRotation",void 0),ue(En(m),"unsetColormap",void 0),ue(En(m),"resetCamera",void 0),ue(En(m),"canvasToWorld",void 0),ue(En(m),"worldToCanvas",void 0),ue(En(m),"getRenderer",void 0),ue(En(m),"getDefaultActor",void 0),ue(En(m),"getActors",void 0),ue(En(m),"getActor",void 0),ue(En(m),"setActors",void 0),ue(En(m),"addActors",void 0),ue(En(m),"addActor",void 0),ue(En(m),"removeAllActors",void 0),ue(En(m),"setVOI",void 0),ue(En(m),"setInterpolationType",void 0),ue(En(m),"setInvertColor",void 0),ue(En(m),"setColormap",void 0),ue(En(m),"resize",(function(){m.useCPURendering&&m._resizeCPU()})),ue(En(m),"_resizeCPU",(function(){m._cpuFallbackEnabledElement.viewport&&function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],r=e.canvas.width,n=e.canvas.height;!function(e){var t=e.canvas,r=t.clientWidth,n=t.clientHeight;t.width===r&&t.height===n||(t.width=r,t.height=n)}(e),void 0!==e.image&&(t||function(e,t,r){var n=e.viewport.scale,i=ka(e.image,e.viewport.rotation),a=Math.round(i.width*n),o=Math.round(i.height*n),s=e.viewport.translation.x,u=e.viewport.translation.y;return a===t&&o<=r||a<=t&&o===r&&0===s&&0===u}(e,r,n)?function(e){var t=e.image;e.viewport.scale=Ra(e.canvas,t,e.viewport.rotation).scaleFactor,e.viewport.translation.x=0,e.viewport.translation.y=0}(e):function(e,t,r){var n=e.viewport.scale,i=e.canvas.width/t,a=e.canvas.height/r,o=Math.sqrt(i*a);e.viewport.scale=o*n}(e,r,n))}(m._cpuFallbackEnabledElement)})),ue(En(m),"getFrameOfReferenceUID",(function(){var e=m.getCurrentImageId();if(e){var t=Jt("imagePlaneModule",e);if(t)return t.frameOfReferenceUID}})),ue(En(m),"getCornerstoneImage",(function(){return m.csImage})),ue(En(m),"createActorMapper",(function(e){var t=Wi().newInstance();t.setInputData(e);var r=qi().newInstance();return r.setMapper(t),$e().rendering.preferSizeOverAccuracy&&t.setPreferSizeOverAccuracy(!0),e.getPointData().getNumberOfComponents()>1&&r.getProperty().setIndependentComponents(!1),r})),ue(En(m),"getNumberOfSlices",(function(){return m.imageIds.length})),ue(En(m),"getDefaultProperties",(function(e){var t;return void 0!==e&&(t=m.perImageIdDefaultProperties.get(e)),void 0!==t?t:$a($a({},m.globalDefaultProperties),{},{rotation:m.getRotation()})})),ue(En(m),"getProperties",(function(){var e=En(m),t=e.colormap,r=e.voiRange,n=e.VOILUTFunction,i=e.interpolationType,a=e.invert,o=e.voiUpdatedWithSetProperties;return{colormap:t,voiRange:r,VOILUTFunction:n,interpolationType:i,invert:a,rotation:m.getRotation(),isComputedVOI:!o}})),ue(En(m),"getRotationCPU",(function(){return m._cpuFallbackEnabledElement.viewport.rotation})),ue(En(m),"getRotationGPU",(function(){var e=m.getCamera(),t=e.viewUp,r=e.viewPlaneNormal,n=e.flipVertical?xn.vec3.negate(xn.vec3.create(),m.initialViewUp):m.initialViewUp,i=180*xn.vec3.angle(n,t)/Math.PI,a=xn.vec3.cross(xn.vec3.create(),n,t);return xn.vec3.dot(a,r)>=0?i:(360-i)%360})),ue(En(m),"renderImageObject",(function(e){m._setCSImage(e),(m.useCPURendering?m._updateToDisplayImageCPU:m._updateActorToDisplayImageId).call(En(m),e)})),ue(En(m),"_setCSImage",(function(e){var t;e.isPreScaled=null===(t=e.preScale)||void 0===t?void 0:t.scaled,m.csImage=e})),ue(En(m),"canvasToWorldCPU",(function(e){if(m._cpuFallbackEnabledElement.image){var t=Un(Ca(m._cpuFallbackEnabledElement,e),2),r=t[0],n=t[1],i=m.getImageData(),a=i.origin,o=i.spacing,s=i.direction,u=xn.vec3.fromValues(0,0,0),l=s.slice(0,3),c=s.slice(3,6);return xn.vec3.scaleAndAdd(u,a,l,r*o[0]),xn.vec3.scaleAndAdd(u,u,c,n*o[1]),[u[0],u[1],u[2]]}})),ue(En(m),"worldToCanvasCPU",(function(e){var t=m.getImageData(),r=t.spacing,n=t.direction,i=t.origin,a=n.slice(0,3),o=n.slice(3,6),s=xn.vec3.subtract(xn.vec3.create(),e,i),u=[xn.vec3.dot(s,a)/r[0],xn.vec3.dot(s,o)/r[1]];return ba(m._cpuFallbackEnabledElement,u)})),ue(En(m),"canvasToWorldGPU",(function(e){var t=m.getRenderer(),r=m.getVtkActiveCamera(),n=r.getClippingRange(),i=r.getDistance();r.setClippingRange(i,i+.1);var a=m.getRenderingEngine().offscreenMultiRenderWindow.getOpenGLRenderWindow(),o=a.getSize(),s=window.devicePixelRatio||1,u=[e[0]*s,e[1]*s],l=[u[0]+m.sx,u[1]+m.sy];l[1]=o[1]-l[1];var c=a.displayToWorld(l[0],l[1],0,t);return r.setClippingRange(n[0],n[1]),[c[0],c[1],c[2]]})),ue(En(m),"worldToCanvasGPU",(function(e){var t=m.getRenderer(),r=m.getVtkActiveCamera(),n=r.getClippingRange(),i=r.getDistance();r.setClippingRange(i,i+.1);var a=m.getRenderingEngine().offscreenMultiRenderWindow.getOpenGLRenderWindow(),o=a.getSize(),s=a.worldToDisplay.apply(a,br(e).concat([t]));s[1]=o[1]-s[1];var u=[s[0]-m.sx,s[1]-m.sy];r.setClippingRange(n[0],n[1]);var l=window.devicePixelRatio||1;return[u[0]/l,u[1]/l]})),ue(En(m),"getCurrentImageIdIndex",(function(){return m.currentImageIdIndex})),ue(En(m),"getTargetImageIdIndex",(function(){return m.targetImageIdIndex})),ue(En(m),"getImageIds",(function(){return m.imageIds})),ue(En(m),"getCurrentImageId",(function(){return m.imageIds[m.currentImageIdIndex]})),ue(En(m),"hasImageId",(function(e){return m.imageIds.includes(e)})),ue(En(m),"hasImageURI",(function(e){for(var t=m.imageIds,r=0;r<t.length;r++)if(ye(t[r])===e)return!0;return!1})),ue(En(m),"customRenderViewportToCanvas",(function(){if(!m.useCPURendering)throw new Error("Custom cpu rendering pipeline should only be hit in CPU rendering mode");return m._cpuFallbackEnabledElement.image?(wa(m._cpuFallbackEnabledElement,m.cpuRenderingInvalidated),m.cpuRenderingInvalidated=!1):m.fillWithBackgroundColor(),{canvas:m.canvas,element:m.element,viewportId:m.id,renderingEngineId:m.renderingEngineId,viewportStatus:m.viewportStatus}})),ue(En(m),"renderingPipelineFunctions",{getImageData:{cpu:m.getImageDataCPU,gpu:m.getImageDataGPU},setColormap:{cpu:m.setColormapCPU,gpu:m.setColormapGPU},getCamera:{cpu:m.getCameraCPU,gpu:kn((t=En(m),Pn(o.prototype)),"getCamera",t)},setCamera:{cpu:m.setCameraCPU,gpu:kn((r=En(m),Pn(o.prototype)),"setCamera",r)},getPan:{cpu:m.getPanCPU,gpu:kn((n=En(m),Pn(o.prototype)),"getPan",n)},setPan:{cpu:m.setPanCPU,gpu:kn((i=En(m),Pn(o.prototype)),"setPan",i)},getZoom:{cpu:m.getZoomCPU,gpu:kn((s=En(m),Pn(o.prototype)),"getZoom",s)},setZoom:{cpu:m.setZoomCPU,gpu:kn((u=En(m),Pn(o.prototype)),"setZoom",u)},setVOI:{cpu:m.setVOICPU,gpu:m.setVOIGPU},getRotation:{cpu:m.getRotationCPU,gpu:m.getRotationGPU},setInterpolationType:{cpu:m.setInterpolationTypeCPU,gpu:m.setInterpolationTypeGPU},setInvertColor:{cpu:m.setInvertColorCPU,gpu:m.setInvertColorGPU},resetCamera:{cpu:function(){var e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0],t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];return m.resetCameraCPU(e,t),!0},gpu:function(){var e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0],t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];return m.resetCameraGPU(e,t),!0}},canvasToWorld:{cpu:m.canvasToWorldCPU,gpu:m.canvasToWorldGPU},worldToCanvas:{cpu:m.worldToCanvasCPU,gpu:m.worldToCanvasGPU},getRenderer:{cpu:function(){return m.getCPUFallbackError("getRenderer")},gpu:kn((l=En(m),Pn(o.prototype)),"getRenderer",l)},getDefaultActor:{cpu:function(){return m.getCPUFallbackError("getDefaultActor")},gpu:kn((c=En(m),Pn(o.prototype)),"getDefaultActor",c)},getActors:{cpu:function(){return m.getCPUFallbackError("getActors")},gpu:kn((d=En(m),Pn(o.prototype)),"getActors",d)},getActor:{cpu:function(){return m.getCPUFallbackError("getActor")},gpu:kn((v=En(m),Pn(o.prototype)),"getActor",v)},setActors:{cpu:function(){return m.getCPUFallbackError("setActors")},gpu:kn((f=En(m),Pn(o.prototype)),"setActors",f)},addActors:{cpu:function(){return m.getCPUFallbackError("addActors")},gpu:kn((p=En(m),Pn(o.prototype)),"addActors",p)},addActor:{cpu:function(){return m.getCPUFallbackError("addActor")},gpu:kn((h=En(m),Pn(o.prototype)),"addActor",h)},removeAllActors:{cpu:function(){return m.getCPUFallbackError("removeAllActors")},gpu:kn((g=En(m),Pn(o.prototype)),"removeAllActors",g)},unsetColormap:{cpu:m.unsetColormapCPU,gpu:m.unsetColormapGPU}}),m.scaling={},m.modality=null,m.useCPURendering=Ke(),m.useNativeDataType=m._shouldUseNativeDataType(),m._configureRenderingPipeline(),m.useCPURendering?m._resetCPUFallbackElement():m._resetGPUViewport(),m.imageIds=[],m.currentImageIdIndex=0,m.targetImageIdIndex=0,m.cameraFocalPointOnRender=[0,0,0],m.resetCamera(),m.initializeElementDisabledHandler(),m}return me(o,[{key:"setUseCPURendering",value:function(e){this.useCPURendering=e,this._configureRenderingPipeline(e)}},{key:"_configureRenderingPipeline",value:function(e){this.useNativeDataType=this._shouldUseNativeDataType(),this.useCPURendering=null!=e?e:Ke();for(var t=0,r=Object.entries(this.renderingPipelineFunctions);t<r.length;t++){var n=Un(r[t],2),i=n[0],a=n[1];this[i]=this.useCPURendering?a.cpu:a.gpu}this.useCPURendering?this._resetCPUFallbackElement():this._resetGPUViewport()}},{key:"_resetCPUFallbackElement",value:function(){this._cpuFallbackEnabledElement={canvas:this.canvas,renderingTools:{},transform:new Qi,viewport:{rotation:0}}}},{key:"_resetGPUViewport",value:function(){var e=this.getRenderer(),t=Ti().newInstance();e.setActiveCamera(t);var r=[0,0,-1];this.initialViewUp=[0,-1,0],t.setDirectionOfProjection(-r[0],-r[1],-r[2]),t.setViewUp.apply(t,br(this.initialViewUp)),t.setParallelProjection(!0),t.setThicknessFromFocalPoint(.1),t.setFreezeFocalPoint(!0)}},{key:"initializeElementDisabledHandler",value:function(){ot.addEventListener(p.ELEMENT_DISABLED,(function e(){clearTimeout(this.debouncedTimeout),ot.removeEventListener(p.ELEMENT_DISABLED,e)}))}},{key:"getImageDataGPU",value:function(){var e=this.getDefaultActor();if(e&&Mn(e)){var t=e.actor,r=t.getMapper().getInputData();return{dimensions:r.getDimensions(),spacing:r.getSpacing(),origin:r.getOrigin(),direction:r.getDirection(),scalarData:r.getPointData().getScalars().getData(),imageData:t.getMapper().getInputData(),metadata:{Modality:this.modality},scaling:this.scaling,hasPixelSpacing:this.hasPixelSpacing,calibration:this.calibration,preScale:$a({},this.csImage.preScale)}}}},{key:"getImageDataCPU",value:function(){var e=this,t=this._cpuFallbackEnabledElement.metadata,r=t.spacing;return{dimensions:t.dimensions,spacing:r,origin:t.origin,direction:t.direction,metadata:{Modality:this.modality},scaling:this.scaling,imageData:{getDirection:function(){return t.direction},getDimensions:function(){return t.dimensions},getScalarData:function(){return e.cpuImagePixelData},getSpacing:function(){return r},worldToIndex:function(t){var r=e.worldToCanvasCPU(t),n=Ca(e._cpuFallbackEnabledElement,r);return[n[0],n[1],0]},indexToWorld:function(t){var r=ba(e._cpuFallbackEnabledElement,[t[0],t[1]]);return e.canvasToWorldCPU(r)}},scalarData:this.cpuImagePixelData,hasPixelSpacing:this.hasPixelSpacing,calibration:this.calibration,preScale:$a({},this.csImage.preScale)}}},{key:"buildMetadata",value:function(e){var t=e.imageId,r=Jt("imagePixelModule",t),n=r.pixelRepresentation,i=r.bitsAllocated,a=r.bitsStored,o=r.highBit,s=r.photometricInterpretation,u=r.samplesPerPixel,l=e.windowWidth,c=e.windowCenter,d=e.voiLUTFunction,v=Jt("generalSeriesModule",t).modality,f=Jt("scalingModule",t);"PT"===v&&f&&this._addScalingToViewport(f),this.modality=v;var p=this._getValidVOILUTFunction(d);this.VOILUTFunction=p,this.calibration=null;var h=this._getImagePlaneModule(t);return this.useCPURendering||(h=this.calibrateIfNecessary(t,h)),{imagePlaneModule:h,imagePixelModule:{bitsAllocated:i,bitsStored:a,samplesPerPixel:u,highBit:o,photometricInterpretation:s,pixelRepresentation:n,windowWidth:l,windowCenter:c,modality:v,voiLUTFunction:p}}}},{key:"calibrateIfNecessary",value:function(e,t){var r=Jt("calibratedPixelSpacing",e),n=this.calibration!==r,i=(r||{}).scale;return this.hasPixelSpacing=i>0||t.rowPixelSpacing>0,t.calibration=r,n?(this.calibration=r,this._publishCalibratedEvent=!0,this._calibrationEvent={scale:i,calibration:r},t):t}},{key:"setDefaultProperties",value:function(e,t){null==t?this.globalDefaultProperties=e:(this.perImageIdDefaultProperties.set(t,e),this.getCurrentImageId()===t&&this.setProperties(e))}},{key:"clearDefaultProperties",value:function(e){null==e?(this.globalDefaultProperties={},this.resetProperties()):(this.perImageIdDefaultProperties.delete(e),this.resetToDefaultProperties())}},{key:"setProperties",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.colormap,r=e.voiRange,n=e.VOILUTFunction,i=e.invert,a=e.interpolationType,o=e.rotation,s=arguments.length>1&&void 0!==arguments[1]&&arguments[1];this.viewportStatus=this.csImage?N.PRE_RENDER:N.LOADING,null==this.globalDefaultProperties&&this.setDefaultProperties({colormap:t,voiRange:r,VOILUTFunction:n,invert:i,interpolationType:a,rotation:o}),void 0!==t&&this.setColormap(t),void 0!==r&&this.setVOI(r,{suppressEvents:s,voiUpdatedWithSetProperties:!0}),void 0!==n&&this.setVOILUTFunction(n,s),void 0!==i&&this.setInvertColor(i),void 0!==a&&this.setInterpolationType(a),void 0!==o&&this.getRotation()!==o&&this.setRotation(o)}},{key:"resetProperties",value:function(){this.cpuRenderingInvalidated=!0,this.voiUpdatedWithSetProperties=!1,this.viewportStatus=N.PRE_RENDER,this.fillWithBackgroundColor(),this.useCPURendering&&(this._cpuFallbackEnabledElement.renderingTools={}),this._resetProperties(),this.render()}},{key:"_resetProperties",value:function(){var e;e=this._isCurrentImagePTPrescaled()?this._getDefaultPTPrescaledVOIRange():this._getVOIRangeForCurrentImage(),this.setVOI(e),0!==this.getRotation()&&this.setRotation(0),this.setInterpolationType(I.LINEAR),Vi(this.getTransferFunction(),this.initialTransferFunctionNodes),this.setInvertColor(this.initialInvert)}},{key:"resetToDefaultProperties",value:function(){var e;this.cpuRenderingInvalidated=!0,this.viewportStatus=N.PRE_RENDER,this.fillWithBackgroundColor(),this.useCPURendering&&(this._cpuFallbackEnabledElement.renderingTools={});var t,r=this.getCurrentImageId(),n=this.perImageIdDefaultProperties.get(r)||this.globalDefaultProperties;null!==(e=n.colormap)&&void 0!==e&&e.name&&this.setColormap(n.colormap),t=null==n.voiRange?this._getVOIRangeForCurrentImage():n.voiRange,this.setVOI(t),0!==this.getRotation()&&this.setRotation(0),this.setInterpolationType(I.LINEAR),this.setInvertColor(!1),this.render()}},{key:"_setPropertiesFromCache",value:function(){var e,t=this.interpolationType,r=this.invert;if(this.voiUpdatedWithSetProperties)e=this.voiRange;else if(this._isCurrentImagePTPrescaled())e=this._getDefaultPTPrescaledVOIRange();else{var n;e=null!==(n=this._getVOIRangeForCurrentImage())&&void 0!==n?n:this.voiRange}this.setVOI(e),this.setInterpolationType(t),this.setInvertColor(r)}},{key:"getCameraCPU",value:function(){var e=this._cpuFallbackEnabledElement,t=e.metadata,r=e.viewport,n=t.direction,i=n.slice(6,9).map((function(e){return-e})),a=n.slice(3,6).map((function(e){return-e}));if(r.rotation){var o=xn.mat4.fromRotation(xn.mat4.create(),r.rotation*Math.PI/180,i);a=xn.vec3.transformMat4(xn.vec3.create(),a,o)}var s=[this.element.clientWidth/2,this.element.clientHeight/2],u=this.canvasToWorld(s),l=this.canvasToWorld([0,0]),c=this.canvasToWorld([0,this.element.clientHeight]);return{parallelProjection:!0,focalPoint:u,position:[0,0,0],parallelScale:xn.vec3.distance(l,c)/2,scale:r.scale,viewPlaneNormal:[i[0],i[1],i[2]],viewUp:[a[0],a[1],a[2]],flipHorizontal:this.flipHorizontal,flipVertical:this.flipVertical}}},{key:"setCameraCPU",value:function(e){var t=this._cpuFallbackEnabledElement,r=t.viewport,n=t.image,i=this.getCameraCPU(),a=e.focalPoint,o=e.parallelScale,s=e.scale,u=e.flipHorizontal,l=e.flipVertical,c=this.element.clientHeight;if(a){var d=this.worldToCanvasCPU(a),v=Ca(this._cpuFallbackEnabledElement,d),f=this.worldToCanvasCPU(i.focalPoint),h=Ca(this._cpuFallbackEnabledElement,f),g=xn.vec2.create();xn.vec2.subtract(g,xn.vec2.fromValues(v[0],v[1]),xn.vec2.fromValues(h[0],h[1]));var m=function(e,t){var r=t.hflip,n=t.vflip,i=t.rotation;if(e.x*=r?-1:1,e.y*=n?-1:1,0!==i){var a=i*Math.PI/180,o=Math.cos(a),s=Math.sin(a),u=e.x*o-e.y*s,l=e.x*s+e.y*o;e.x=u,e.y=l}return e}({x:g[0],y:g[1]},r);r.translation.x-=m.x,r.translation.y-=m.y}if(o){var y=c*n.rowPixelSpacing*.5/o;r.scale=y,r.parallelScale=o}if(s){var w=n.rowPixelSpacing;r.scale=s,r.parallelScale=c*w*.5/s}void 0===u&&void 0===l||this.setFlipCPU({flipHorizontal:u,flipVertical:l}),this._cpuFallbackEnabledElement.transform=$i(this._cpuFallbackEnabledElement);var I={previousCamera:i,camera:this.getCamera(),element:this.element,viewportId:this.id,renderingEngineId:this.renderingEngineId,rotation:this.getRotation()};st(this.element,p.CAMERA_MODIFIED,I)}},{key:"getPanCPU",value:function(){var e=this._cpuFallbackEnabledElement.viewport;return[e.translation.x,e.translation.y]}},{key:"setPanCPU",value:function(e){var t=this.getCameraCPU();this.setCameraCPU($a($a({},t),{},{focalPoint:[].concat(br(e.map((function(e){return-e}))),[0])}))}},{key:"getZoomCPU",value:function(){return this._cpuFallbackEnabledElement.viewport.scale}},{key:"setZoomCPU",value:function(e){var t=this.getCameraCPU();this.setCameraCPU($a($a({},t),{},{scale:e}))}},{key:"setFlipCPU",value:function(e){var t=e.flipHorizontal,r=e.flipVertical,n=this._cpuFallbackEnabledElement.viewport;void 0!==t&&(n.hflip=t,this.flipHorizontal=n.hflip),void 0!==r&&(n.vflip=r,this.flipVertical=n.vflip)}},{key:"setRotation",value:function(e){var t=this.getCamera();this.useCPURendering?this.setRotationCPU(e):this.setRotationGPU(e);var r={previousCamera:t,camera:this.getCamera(),element:this.element,viewportId:this.id,renderingEngineId:this.renderingEngineId,rotation:e};st(this.element,p.CAMERA_MODIFIED,r)}},{key:"setVOILUTFunction",value:function(e,t){if(this.useCPURendering)throw new Error("VOI LUT function is not supported in CPU rendering");var r=this._getValidVOILUTFunction(e),n=!1;this.VOILUTFunction!==r&&(n=!0),this.VOILUTFunction=r;var i=this.getProperties().voiRange;this.setVOI(i,{suppressEvents:t,forceRecreateLUTFunction:n})}},{key:"setRotationCPU",value:function(e){this._cpuFallbackEnabledElement.viewport.rotation=e}},{key:"setRotationGPU",value:function(e){var t=this.getCamera().flipVertical?xn.vec3.negate(xn.vec3.create(),this.initialViewUp):this.initialViewUp;this.setCameraNoEvent({viewUp:t}),this.getVtkActiveCamera().roll(-e)}},{key:"setInterpolationTypeGPU",value:function(e){var t=this.getDefaultActor();t&&Mn(t)&&(t.actor.getProperty().setInterpolationType(e),this.interpolationType=e)}},{key:"setInterpolationTypeCPU",value:function(e){this._cpuFallbackEnabledElement.viewport.pixelReplication=e!==I.LINEAR,this.interpolationType=e}},{key:"setInvertColorCPU",value:function(e){var t=this._cpuFallbackEnabledElement.viewport;t&&(t.invert=e,this.invert=e)}},{key:"setInvertColorGPU",value:function(e){var t=this.getDefaultActor();if(t&&Mn(t))if(Vn(t,"vtkVolume")){var r=t.actor.getProperty().getRGBTransferFunction(0);(!this.invert&&e||this.invert&&!e)&&Zn(r),this.invert=e}else if(Vn(t,"vtkImageSlice")){var n=t.actor.getProperty().getRGBTransferFunction(0);(!this.invert&&e||this.invert&&!e)&&Zn(n),this.invert=e}}},{key:"setVOICPU",value:function(e){var t=(arguments.length>1&&void 0!==arguments[1]?arguments[1]:{}).suppressEvents,r=void 0!==t&&t,n=this._cpuFallbackEnabledElement,i=n.viewport,a=n.image;if(i&&a){if(void 0===e){var o=a.windowWidth,s=a.windowCenter,u=Array.isArray(o)?o[0]:o,l=Array.isArray(s)?s[0]:s;i.voi={windowWidth:u,windowCenter:l};var c=tr(u,l);e={lower:c.lower,upper:c.upper}}else{var d=e,v=er(d.lower,d.upper),f=v.windowCenter,h=v.windowWidth;i.voi||(i.voi={windowWidth:0,windowCenter:0}),i.voi.windowWidth=h,i.voi.windowCenter=f}this.voiRange=e;var g={viewportId:this.id,range:e};r||st(this.element,p.VOI_MODIFIED,g)}}},{key:"getTransferFunction",value:function(){var e=this.getDefaultActor();if(e&&Mn(e))return e.actor.getProperty().getRGBTransferFunction(0)}},{key:"setVOIGPU",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=t.suppressEvents,n=void 0!==r&&r,i=t.forceRecreateLUTFunction,a=void 0!==i&&i,o=t.voiUpdatedWithSetProperties,s=void 0!==o&&o;if(!e||!this.voiRange||this.voiRange.lower!==e.lower||this.voiRange.upper!==e.upper||a||this.stackInvalidated){var u=this.getDefaultActor();if(u&&Mn(u)){var l=u.actor,c=e;if(void 0===c){var d=l.getMapper().getInputData().getPointData().getScalars().getRange();c={lower:d[0],upper:d[1]}}l.getProperty().setUseLookupTableScalarRange(!0);var v=l.getProperty().getRGBTransferFunction(0),f=this.VOILUTFunction===M.SAMPLED_SIGMOID;if((f||!v||a)&&(v=(f?Xn:Aa)(c),this.invert&&Zn(v),l.getProperty().setRGBTransferFunction(0,v),this.initialTransferFunctionNodes=Mi(v)),f||v.setRange(c.lower,c.upper),this.voiRange=c,this.voiUpdatedWithSetProperties||(this.voiUpdatedWithSetProperties=s),!n){var h={viewportId:this.id,range:c,VOILUTFunction:this.VOILUTFunction};st(this.element,p.VOI_MODIFIED,h)}}}}},{key:"_addScalingToViewport",value:function(e){if(!this.scaling.PT){var t=e.suvbw,r=e.suvlbm,n=e.suvbsa,i={};r&&(i.suvbwToSuvlbm=r/t),n&&(i.suvbwToSuvbsa=n/t),this.scaling.PT=i}}},{key:"_getNumCompsFromPhotometricInterpretation",value:function(e){var t=1;return"RGB"!==e&&-1===e.indexOf("YBR")&&"PALETTE COLOR"!==e||(t=3),t}},{key:"_getImageDataMetadata",value:function(e){var t,r,n=this.buildMetadata(e),i=n.imagePlaneModule,a=n.imagePixelModule;t=i.rowCosines,r=i.columnCosines,null!=t&&null!=r||(t=[1,0,0],r=[0,1,0]);var o=xn.vec3.fromValues(t[0],t[1],t[2]),s=xn.vec3.fromValues(r[0],r[1],r[2]),u=xn.vec3.create();xn.vec3.cross(u,o,s);var l=i.imagePositionPatient;null==l&&(l=[0,0,0]);var c=i.columnPixelSpacing||e.columnPixelSpacing,d=i.rowPixelSpacing||e.rowPixelSpacing,v=e.columns,f=e.rows,p=e.numComps||this._getNumCompsFromPhotometricInterpretation(a.photometricInterpretation);return{bitsAllocated:a.bitsAllocated,numComps:p,origin:l,direction:[].concat(br(o),br(s),br(u)),dimensions:[v,f,1],spacing:[c,d,1],numVoxels:v*f*1,imagePlaneModule:i,imagePixelModule:a}}},{key:"_getCameraOrientation",value:function(e){var t=e.slice(6,9).map((function(e){return-e})),r=e.slice(3,6).map((function(e){return-e}));return{viewPlaneNormal:[t[0],t[1],t[2]],viewUp:[r[0],r[1],r[2]]}}},{key:"_createVTKImageData",value:function(e){var t=e.origin,r=e.direction,n=e.dimensions,i=e.spacing,a=e.numComps,o=e.pixelArray,s=new o.constructor(o.length),u=ve().newInstance({name:"Pixels",numberOfComponents:a,values:s});this._imageData=ce().newInstance(),this._imageData.setDimensions(n),this._imageData.setSpacing(i),this._imageData.setDirection(r),this._imageData.setOrigin(t),this._imageData.getPointData().setScalars(u)}},{key:"setStack",value:(r=re(ie().mark((function e(t){var r,n,i,a,o=arguments;return ie().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return r=o.length>1&&void 0!==o[1]?o[1]:0,this._throwIfDestroyed(),this.imageIds=t,this.currentImageIdIndex=r,this.targetImageIdIndex=r,n=Jt(Yi.IMAGE_RETRIEVE_CONFIGURATION,t[r],"stack"),this.imagesLoader=n?(n.create||Za)(n):this,this.stackInvalidated=!0,this.flipVertical=!1,this.flipHorizontal=!1,this.voiRange=null,this.interpolationType=I.LINEAR,this.invert=!1,this.viewportStatus=N.LOADING,this.fillWithBackgroundColor(),this.useCPURendering&&(this._cpuFallbackEnabledElement.renderingTools={},delete this._cpuFallbackEnabledElement.viewport.colormap),e.next=18,this._setImageIdIndex(r);case 18:return i=e.sent,a={imageIds:t,viewportId:this.id,element:this.element,currentImageIdIndex:r},st(ot,p.STACK_VIEWPORT_NEW_STACK,a),e.abrupt("return",i);case 22:case"end":return e.stop()}}),e,this)}))),function(e){return r.apply(this,arguments)})},{key:"_throwIfDestroyed",value:function(){if(this.isDisabled)throw new Error("The stack viewport has been destroyed and is no longer usable. Renderings will not be performed. If you are using the same viewportId and have re-enabled the viewport, you need to grab the new viewport instance using renderingEngine.getViewport(viewportId), instead of using your lexical scoped reference to the viewport instance.")}},{key:"_checkVTKImageDataMatchesCornerstoneImage",value:function(e,t){if(!t)return!1;var r=Un(t.getSpacing(),2),n=r[0],i=r[1],a=Un(t.getDimensions(),2),o=a[0],s=a[1],u=this._getImagePlaneModule(e.imageId),l=t.getDirection(),c=l.slice(0,3),d=l.slice(3,6),v=t.getPointData().getScalars().getDataType(),f=Ci(n,e.columnPixelSpacing),p=Ci(i,e.rowPixelSpacing);return(f||null===e.columnPixelSpacing&&1===n)&&(p||null===e.rowPixelSpacing&&1===i)&&o===e.columns&&s===e.rows&&Ci(u.rowCosines,c)&&Ci(u.columnCosines,d)&&(!this.useNativeDataType||v===e.getPixelData().constructor.name)}},{key:"_updateVTKImageDataFromCornerstoneImage",value:function(e){var t=this._getImagePlaneModule(e.imageId).imagePositionPatient;null==t&&(t=[0,0,0]),this._imageData.setOrigin(t),this._updatePixelData(e)}},{key:"_updatePixelData",value:function(e){var t=e.getPixelData(),r=this._imageData.getPointData().getScalars().getData();if(e.color&&e.rgba){for(var n=new Uint8Array(e.columns*e.rows*3),i=0;i<e.columns*e.rows;i++)n[3*i]=t[4*i],n[3*i+1]=t[4*i+1],n[3*i+2]=t[4*i+2];e.rgba=!1,e.getPixelData=function(){return n},r.set(n)}else r.set(t);this._imageData.modified()}},{key:"_loadAndDisplayImage",value:function(e,t){return this.useCPURendering?this._loadAndDisplayImageCPU(e,t):this._loadAndDisplayImageGPU(e,t)}},{key:"_loadAndDisplayImageCPU",value:function(e,t){var r=this;return new Promise((function(n,i){function a(e,t,r){if(this.currentImageIdIndex===t){var i=e.getPixelData(),a=e.preScale,o=null==a?void 0:a.scalingParameters,s=(null==a?void 0:a.scaled)&&(null==o?void 0:o.rescaleIntercept)%1!=0||(null==o?void 0:o.rescaleSlope)%1!=0;if(i instanceof Float32Array&&s){for(var u={min:e.maxPixelValue,max:e.minPixelValue},l=Math.abs(u.max-u.min)/65535,c=u.min,d=i.length,v=new Uint16Array(d),f=65535,h=0,g=0;g<d;g++){var m=Math.floor((i[g]-c)/l);v[g]=m,f=Math.min(f,m),h=Math.max(h,m)}e.minPixelValue=f,e.maxPixelValue=h,e.slope=l,e.intercept=c,e.getPixelData=function(){return v},e.preScale=$a($a({},e.preScale),{},{scaled:!1})}this._setCSImage(e),this.viewportStatus=N.PRE_RENDER;var y={image:e,imageId:r,imageIdIndex:t,viewportId:this.id,renderingEngineId:this.renderingEngineId};st(this.element,p.STACK_NEW_IMAGE,y),this._updateToDisplayImageCPU(e),this.render(),this.currentImageIdIndex=t,n(r)}}function o(e,t,r){var n={error:e,imageIdIndex:t,imageId:r};this.suppressEvents||st(ot,p.IMAGE_LOAD_ERROR,n),i(e)}var s=g.Interaction,u={imageId:e,imageIdIndex:t},l={imageId:e,imageIdIndex:t,viewportId:r.id,renderingEngineId:r.renderingEngineId};st(r.element,p.PRE_STACK_NEW_IMAGE,l),Ut.addRequest(function(e,t,r){var n=this;return Gt(e,r).then((function(r){a.call(n,r,t,e)}),(function(r){o.call(n,r,t,e)}))}.bind(r,e,t,{preScale:{enabled:!0},useRGBA:!0}),s,u,-5)}))}},{key:"successCallback",value:function(e,t){var r,n,i=this.imageIds.indexOf(e);if(this.currentImageIdIndex===i){var a=null===(r=this.csImage)||void 0===r?void 0:r.imageFrame,o=null==t?void 0:t.imageFrame;(null==a?void 0:a.photometricInterpretation)===(null==o?void 0:o.photometricInterpretation)&&(null===(n=this.csImage)||void 0===n?void 0:n.photometricInterpretation)===(null==t?void 0:t.photometricInterpretation)||(this.stackInvalidated=!0),this._setCSImage(t);var s={image:t,imageId:e,imageIdIndex:i,viewportId:this.id,renderingEngineId:this.renderingEngineId};st(this.element,p.STACK_NEW_IMAGE,s),this._updateActorToDisplayImageId(t),this.render(),this.currentImageIdIndex=i}}},{key:"errorCallback",value:function(e,t,r){if(t){var n={error:r,imageIdIndex:this.imageIds.indexOf(e),imageId:e};st(ot,p.IMAGE_LOAD_ERROR,n)}}},{key:"getLoaderImageOptions",value:function(e){var t=this.imageIds.indexOf(e),r=(Jt("transferSyntax",e)||{}).transferSyntaxUID,n={imageId:e,imageIdIndex:t};return{targetBuffer:{type:this.useNativeDataType?void 0:"Float32Array"},preScale:{enabled:!0},useRGBA:!1,transferSyntaxUID:r,priority:5,requestType:g.Interaction,additionalDetails:n}}},{key:"loadImages",value:function(e,t){var r=this;return Promise.allSettled(e.map((function(e){var n=r.getLoaderImageOptions(e);return Gt(e,n).then((function(r){return t.successCallback(e,r),e}),(function(r){return t.errorCallback(e,!0,r),e}))})))}},{key:"_loadAndDisplayImageGPU",value:function(e,t){var r={imageId:e,imageIdIndex:t,viewportId:this.id,renderingEngineId:this.renderingEngineId};return st(this.element,p.PRE_STACK_NEW_IMAGE,r),this.imagesLoader.loadImages([e],this).then((function(t){return e}))}},{key:"_updateToDisplayImageCPU",value:function(e){var t=this._getImageDataMetadata(e),r=Oa(this.canvas,e,this.modality,this._cpuFallbackEnabledElement.viewport.colormap),n=r.voi,i=n.windowCenter,a=n.windowWidth;this.voiRange=tr(a,i),this._cpuFallbackEnabledElement.image=e,this._cpuFallbackEnabledElement.metadata=$a({},t),this.cpuImagePixelData=e.getPixelData();var o=Object.assign({},r,this._cpuFallbackEnabledElement.viewport);this._cpuFallbackEnabledElement.viewport=this.stackInvalidated?r:o,this.stackInvalidated=!1,this.cpuRenderingInvalidated=!0,this._cpuFallbackEnabledElement.transform=$i(this._cpuFallbackEnabledElement)}},{key:"_updateActorToDisplayImageId",value:function(e){var t=this._checkVTKImageDataMatchesCornerstoneImage(e,this._imageData),r=this.getRenderer().getActiveCamera(),n=pe()(this.getCamera());if(t&&!this.stackInvalidated){this._updateVTKImageDataFromCornerstoneImage(e);var i=this.getCamera(),a=xn.vec3.subtract(xn.vec3.create(),this.cameraFocalPointOnRender,i.focalPoint);this.resetCameraNoEvent(),this.setCameraNoEvent({flipHorizontal:n.flipHorizontal,flipVertical:n.flipVertical,viewUp:n.viewUp});var o=this.getCamera().focalPoint;return this.cameraFocalPointOnRender=o,r.setFreezeFocalPoint(!0),this._restoreCameraProps(i,n,a),void this._setPropertiesFromCache()}var s=this._getImageDataMetadata(e),u=s.origin,l=s.direction,c=s.dimensions,d=s.spacing,v=s.numComps,f=s.imagePixelModule;this._createVTKImageData({origin:u,direction:l,dimensions:c,spacing:d,numComps:v,pixelArray:e.getPixelData()}),this._updateVTKImageDataFromCornerstoneImage(e);var p=this.createActorMapper(this._imageData),h=this.getActors();h.length&&h[0].uid===this.id?h[0].actor=p:h.unshift({uid:this.id,actor:p}),this.setActors(h);var g=this._getCameraOrientation(l),m=g.viewPlaneNormal,y=g.viewUp;this.setCameraNoEvent({viewUp:y,viewPlaneNormal:m}),this.initialViewUp=y,this.resetCameraNoEvent(),this.triggerCameraEvent(this.getCamera(),n),r.setFreezeFocalPoint(!0);var w="MONOCHROME1"===f.photometricInterpretation;this.stackInvalidated=!0,this.setVOI(this._getInitialVOIRange(e),{forceRecreateLUTFunction:!!w}),this.initialInvert=!!w,this.setInvertColor(this.invert||this.initialInvert),this.cameraFocalPointOnRender=this.getCamera().focalPoint,this.stackInvalidated=!1,this._publishCalibratedEvent&&this.triggerCalibrationEvent()}},{key:"_getInitialVOIRange",value:function(e){if(this.voiRange&&this.voiUpdatedWithSetProperties)return this.globalDefaultProperties.voiRange;var t=e.windowCenter,r=e.windowWidth,n=this._getVOIRangeFromWindowLevel(r,t);return this._getPTPreScaledRange()||n}},{key:"_getPTPreScaledRange",value:function(){if(this._isCurrentImagePTPrescaled())return this._getDefaultPTPrescaledVOIRange()}},{key:"_isCurrentImagePTPrescaled",value:function(){var e,t;return!("PT"!==this.modality||!this.csImage.isPreScaled||null===(e=this.csImage.preScale)||void 0===e||null===(t=e.scalingParameters)||void 0===t||!t.suvbw)}},{key:"_getDefaultPTPrescaledVOIRange",value:function(){return{lower:0,upper:5}}},{key:"_getVOIRangeFromWindowLevel",value:function(e,t){var r,n;if("number"==typeof t&&"number"==typeof e?(r=t,n=e):Array.isArray(t)&&Array.isArray(e)&&(r=t[0],n=e[0]),void 0!==r&&void 0!==n)return tr(n,r)}},{key:"_setImageIdIndex",value:(t=re(ie().mark((function e(t){var r,n;return ie().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!(t>=this.imageIds.length)){e.next=2;break}throw new Error("ImageIdIndex provided ".concat(t," is invalid, the stack only has ").concat(this.imageIds.length," elements"));case 2:return this.currentImageIdIndex=t,this.hasPixelSpacing=!0,this.viewportStatus=N.PRE_RENDER,e.next=7,this._loadAndDisplayImage(this.imageIds[t],t);case 7:return r=e.sent,this.perImageIdDefaultProperties.size>=1&&(void 0!==(n=this.perImageIdDefaultProperties.get(r))?this.setProperties(n):void 0!==this.globalDefaultProperties&&this.setProperties(this.globalDefaultProperties)),e.abrupt("return",r);case 10:case"end":return e.stop()}}),e,this)}))),function(e){return t.apply(this,arguments)})},{key:"resetCameraCPU",value:function(e,t){if(this._cpuFallbackEnabledElement.image){!function(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],r=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],n=e.canvas,i=e.image,a=e.viewport,o=Ra(n,i,0).scaleFactor;a.vflip=!1,a.hflip=!1,t&&(a.translation.x=0,a.translation.y=0),r&&(a.displayedArea.tlhc.x=1,a.displayedArea.tlhc.y=1,a.displayedArea.brhc.x=i.columns,a.displayedArea.brhc.y=i.rows,a.scale=o)}(this._cpuFallbackEnabledElement,e,t);var r=this._cpuFallbackEnabledElement.viewport.scale,n=this.element,i=[n.clientWidth/2,n.clientHeight/2],a=this.canvasToWorldCPU(i);this.setCameraCPU({focalPoint:a,scale:r})}}},{key:"resetCameraGPU",value:function(e,t){return this.setCamera({flipHorizontal:!1,flipVertical:!1,viewUp:this.initialViewUp}),kn(Pn(o.prototype),"resetCamera",this).call(this,e,t,!0)}},{key:"scroll",value:function(e){var t=this,r=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],n=arguments.length>2&&void 0!==arguments[2]&&arguments[2],i=this.imageIds,a=this.targetImageIdIndex,o=i.length,s=a+e;s=Math.max(0,s),n?s%=o:s=Math.min(o-1,s),this.targetImageIdIndex=s;var u=i[s];Dn.isLoaded(u)||!r?this.setImageIdIndex(s):(clearTimeout(this.debouncedTimeout),this.debouncedTimeout=window.setTimeout((function(){t.setImageIdIndex(s)}),40));var l={newImageIdIndex:s,imageId:u,direction:e};s!==a&&st(this.element,p.STACK_VIEWPORT_SCROLL,l)}},{key:"setImageIdIndex",value:function(e){return this._throwIfDestroyed(),this.currentImageIdIndex===e?Promise.resolve(this.getCurrentImageId()):this._setImageIdIndex(e)}},{key:"calibrateSpacing",value:function(e){var t=this.getImageIds().indexOf(e);this.stackInvalidated=!0,this._loadAndDisplayImage(e,t)}},{key:"_restoreCameraProps",value:function(e,t,r){var n=e.parallelScale,i=this.getRenderer(),a=this.getCamera(),o=a.position,s=a.focalPoint,u=xn.vec3.subtract(xn.vec3.create(),o,r),l=xn.vec3.subtract(xn.vec3.create(),s,r);this.setCameraNoEvent({parallelScale:n,position:u,focalPoint:l});var c=this.getCamera();this.triggerCameraEvent(c,t);var d={type:"ResetCameraEvent",renderer:i};i.invokeEvent(d)}},{key:"triggerCameraEvent",value:function(e,t){var r={previousCamera:t,camera:e,element:this.element,viewportId:this.id,renderingEngineId:this.renderingEngineId};this.suppressEvents||st(this.element,p.CAMERA_MODIFIED,r)}},{key:"triggerCalibrationEvent",value:function(){var e=this.getImageData().imageData,t=$a({element:this.element,viewportId:this.id,renderingEngineId:this.renderingEngineId,imageId:this.getCurrentImageId(),imageData:e,worldToIndex:e.getWorldToIndex()},this._calibrationEvent);this.suppressEvents||st(this.element,p.IMAGE_SPACING_CALIBRATED,t),this._publishCalibratedEvent=!1}},{key:"_getVOIRangeForCurrentImage",value:function(){var e=this.csImage,t=e.windowCenter,r=e.windowWidth;return this._getVOIRangeFromWindowLevel(r,t)}},{key:"_getValidVOILUTFunction",value:function(e){return-1===Object.values(M).indexOf(e)&&(e=M.LINEAR),e}},{key:"getCPUFallbackError",value:function(e){return new Error("method ".concat(e," cannot be used during CPU Fallback mode"))}},{key:"fillWithBackgroundColor",value:function(){var e=this.getRenderingEngine();e&&e.fillCanvasWithBackgroundColor(this.canvas,this.options.background)}},{key:"unsetColormapCPU",value:function(){delete this._cpuFallbackEnabledElement.viewport.colormap,this._cpuFallbackEnabledElement.renderingTools={},this.cpuRenderingInvalidated=!0,this.fillWithBackgroundColor(),this.render()}},{key:"setColormapCPU",value:function(e){this.colormap=e;var t=ga(e.name,e);this._cpuFallbackEnabledElement.viewport.colormap=t,this._cpuFallbackEnabledElement.renderingTools={},this.fillWithBackgroundColor(),this.cpuRenderingInvalidated=!0,this.render()}},{key:"setColormapGPU",value:function(e){var t=this.getDefaultActor().actor.getProperty(),r=t.getRGBTransferFunction(),n=Kn(e.name)||Gn().getPresetByName(e.name);if(r)r.applyColorMap(n),r.setMappingRange(this.voiRange.lower,this.voiRange.upper),t.setRGBTransferFunction(0,r);else{var i=Nn().newInstance();i.applyColorMap(n),i.setMappingRange(this.voiRange.lower,this.voiRange.upper),t.setRGBTransferFunction(0,i)}this.colormap=e,this.render()}},{key:"unsetColormapGPU",value:function(){throw new Error("unsetColormapGPU not implemented.")}},{key:"_getImagePlaneModule",value:function(e){var t=Jt("imagePlaneModule",e);Jt("calibratedPixelSpacing",e),this.calibration||(this.calibration=t.calibration);var r,n,i=$a({},t);return i.columnPixelSpacing||(i.columnPixelSpacing=1,this.hasPixelSpacing=(null===(r=this.calibration)||void 0===r?void 0:r.scale)>0),i.rowPixelSpacing||(i.rowPixelSpacing=1,this.hasPixelSpacing=(null===(n=this.calibration)||void 0===n?void 0:n.scale)>0),i.columnCosines||(i.columnCosines=[0,1,0]),i.rowCosines||(i.rowCosines=[1,0,0]),i.imagePositionPatient||(i.imagePositionPatient=[0,0,0]),i.imageOrientationPatient||(i.imageOrientationPatient=new Float32Array([1,0,0,0,1,0])),i}}],[{key:"useCustomRenderingPipeline",get:function(){return Ke()}}]),o}(Oi),eo=Ja;var to=function(e){On(i,e);var t,r,n=(t=i,r=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,n=Pn(t);if(r){var i=Pn(this).constructor;e=Reflect.construct(n,arguments,i)}else e=n.apply(this,arguments);return An(this,e)});function i(e){var t;he(this,i),ue(En(t=n.call(this,e)),"getRotation",(function(){return 0})),ue(En(t),"getCurrentImageIdIndex",(function(){})),ue(En(t),"getCurrentImageId",(function(){return null}));var r=t.options,a=r.parallelProjection,o=r.orientation,s=t.getVtkActiveCamera();return null!=a&&s.setParallelProjection(a),o&&o!==R.ACQUISITION&&t.applyViewOrientation(o),t}return me(i,[{key:"resetCamera",value:function(){var e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0],t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],r=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];kn(Pn(i.prototype),"resetCamera",this).call(this,e,t,r),this.resetVolumeViewportClippingRange()}},{key:"posProcessNewActors",value:function(){this.newActorAdded&&this.getRenderer().resetCameraClippingRange(),kn(Pn(i.prototype),"posProcessNewActors",this).call(this)}},{key:"setSlabThickness",value:function(e,t){return null}},{key:"setBlendMode",value:function(e,t,r){return null}},{key:"resetProperties",value:function(e){return null}}]),i}(ji),ro=to;function no(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function io(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?no(Object(r),!0).forEach((function(t){ue(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):no(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}var ao,oo=function(e){On(d,e);var t,r,n,i,a,o,s,u,l,c=(u=d,l=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,t=Pn(u);if(l){var r=Pn(this).constructor;e=Reflect.construct(t,arguments,r)}else e=t.apply(this,arguments);return An(this,e)});function d(e){var t;return he(this,d),ue(En(t=c.call(this,io(io({},e),{},{canvas:e.canvas||wr(e.element)}))),"modality",void 0),ue(En(t),"imageId",void 0),ue(En(t),"uid",void 0),ue(En(t),"renderingEngineId",void 0),ue(En(t),"canvasContext",void 0),ue(En(t),"videoElement",void 0),ue(En(t),"videoWidth",0),ue(En(t),"videoHeight",0),ue(En(t),"loop",!1),ue(En(t),"mute",!0),ue(En(t),"isPlaying",!1),ue(En(t),"scrollSpeed",1),ue(En(t),"playbackRate",1),ue(En(t),"metadata",void 0),ue(En(t),"fps",30),ue(En(t),"videoCamera",{panWorld:[0,0],parallelScale:1}),ue(En(t),"feFilter",void 0),ue(En(t),"averageWhite",void 0),ue(En(t),"voiRange",{lower:0,upper:255}),ue(En(t),"getProperties",(function(){return{loop:t.videoElement.loop,muted:t.videoElement.muted,playbackRate:t.playbackRate,scrollSpeed:t.scrollSpeed,voiRange:io({},t.voiRange)}})),ue(En(t),"resetCamera",(function(){return t.refreshRenderValues(),t.canvasContext.fillRect(0,0,t.canvas.width,t.canvas.height),!1===t.isPlaying&&t.renderFrame(),!0})),ue(En(t),"getNumberOfSlices",(function(){return t.videoElement.duration*t.fps/t.scrollSpeed})),ue(En(t),"getFrameOfReferenceUID",(function(){return t.videoElement.src})),ue(En(t),"resize",(function(){var e=t.canvas,r=e.clientWidth,n=e.clientHeight;e.width===r&&e.height===n||(e.width=r,e.height=n),t.refreshRenderValues(),!1===t.isPlaying&&t.renderFrame()})),ue(En(t),"canvasToWorld",(function(e){var r=t.videoCamera.panWorld,n=t.getWorldToCanvasRatio(),i=[r[0]*n,r[1]*n],a=[e[0]-i[0],e[1]-i[1]];return[a[0]/n,a[1]/n,0]})),ue(En(t),"worldToCanvas",(function(e){var r=t.videoCamera.panWorld,n=t.getWorldToCanvasRatio(),i=[(e[0]+r[0])*n,(e[1]+r[1])*n];return[i[0],i[1]]})),ue(En(t),"canvasToIndex",(function(e){var r=Un(e,2),n=r[0],i=r[1],a=t.videoWidth/t.canvas.width,o=t.getPan();return[(n+o[0])*a,(i+o[1])*a]})),ue(En(t),"indexToCanvas",(function(e){var r=Un(e,2),n=r[0],i=r[1],a=t.canvas.width/t.videoWidth,o=t.getPan();return[n*a-o[0],i*a-o[1]]})),ue(En(t),"customRenderViewportToCanvas",(function(){t.renderFrame()})),ue(En(t),"renderFrame",(function(){var e=t.videoCamera.panWorld,r=t.getWorldToCanvasRatio(),n=t.getCanvasToWorldRatio(),i=[t.canvas.width/2,t.canvas.height/2],a=[i[0]*n,i[1]*n],o=new Qi;o.translate(i[0],i[1]),o.scale(r,r),o.translate(e[0],e[1]),o.translate(-a[0],-a[1]);var s=o.getMatrix();t.canvasContext.transform(s[0],s[1],s[2],s[3],s[4],s[5]),t.canvasContext.drawImage(t.videoElement,0,0,t.videoWidth,t.videoHeight),t.canvasContext.resetTransform(),st(t.element,p.IMAGE_RENDERED,{element:t.element,viewportId:t.id,viewport:En(t),renderingEngineId:t.renderingEngineId,time:t.videoElement.currentTime,duration:t.videoElement.duration})})),ue(En(t),"renderWhilstPlaying",(function(){t.renderFrame(),t.isPlaying&&requestAnimationFrame(t.renderWhilstPlaying)})),t.canvasContext=t.canvas.getContext("2d"),t.renderingEngineId=e.renderingEngineId,t.element.setAttribute("data-viewport-uid",t.id),t.element.setAttribute("data-rendering-engine-uid",t.renderingEngineId),t.videoElement=document.createElement("video"),t.videoElement.muted=t.mute,t.videoElement.loop=t.loop,t.videoElement.crossOrigin="anonymous",t.addEventListeners(),t.resize(),t}return me(d,[{key:"addEventListeners",value:function(){this.canvas.addEventListener(p.ELEMENT_DISABLED,this.elementDisabledHandler)}},{key:"removeEventListeners",value:function(){this.canvas.removeEventListener(p.ELEMENT_DISABLED,this.elementDisabledHandler)}},{key:"elementDisabledHandler",value:function(){this.removeEventListeners(),this.videoElement.remove()}},{key:"_getImageDataMetadata",value:function(){var e=Jt(q.IMAGE_PLANE,this.imageId),t=e.rowCosines,r=e.columnCosines;null!=t&&null!=r||(t=[1,0,0],r=[0,1,0]);var n=xn.vec3.fromValues(t[0],t[1],t[2]),i=xn.vec3.fromValues(r[0],r[1],r[2]),a=xn.vec3.create();xn.vec3.cross(a,n,i);var o=e.imagePositionPatient;null==o&&(o=[0,0,0]);var s=e.columnPixelSpacing,u=e.rowPixelSpacing,l=e.columns,c=e.rows;return{bitsAllocated:8,numComps:3,origin:o,direction:[].concat(br(n),br(i),br(a)),dimensions:[l,c,1],spacing:[s,u,1],numVoxels:l*c*1,imagePlaneModule:e}}},{key:"setVideo",value:function(e,t){var r=this;this.imageId=Array.isArray(e)?e[0]:e;var n=this.imageId,i=Jt(q.IMAGE_URL,n).rendered,a=Jt(q.GENERAL_SERIES,n);return this.modality=null==a?void 0:a.Modality,this.metadata=this._getImageDataMetadata(),this.setVideoURL(i).then((function(){var e=Jt(q.CINE,n).cineRate,i=void 0===e?30:e;r.fps=i,void 0!==t&&(r.pause(),r.setFrame(t))}))}},{key:"setVideoURL",value:(s=re(ie().mark((function e(t){var r=this;return ie().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.abrupt("return",new Promise((function(e){r.videoElement.src=t,r.videoElement.preload="auto",r.videoElement.addEventListener("loadedmetadata",(function t(){r.videoWidth=r.videoElement.videoWidth,r.videoHeight=r.videoElement.videoHeight,r.videoElement.removeEventListener("loadedmetadata",t),r.refreshRenderValues(),e(!0)}))})));case 1:case"end":return e.stop()}}),e)}))),function(e){return s.apply(this,arguments)})},{key:"togglePlayPause",value:function(){return this.isPlaying?(this.pause(),!1):(this.play(),!0)}},{key:"play",value:function(){this.isPlaying||(this.videoElement.play(),this.isPlaying=!0,this.renderWhilstPlaying())}},{key:"pause",value:(o=re(ie().mark((function e(){return ie().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.videoElement.pause();case 2:this.isPlaying=!1;case 3:case"end":return e.stop()}}),e,this)}))),function(){return o.apply(this,arguments)})},{key:"scroll",value:(a=re(ie().mark((function e(){var t,r,n,i,a,o,s=arguments;return ie().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return t=s.length>0&&void 0!==s[0]?s[0]:1,e.next=3,this.pause();case 3:r=this.videoElement,n=this.renderFrame,i=r.currentTime,a=i+t*this.scrollSpeed/this.fps,r.currentTime=a,o=function e(t){n(),r.removeEventListener("seeked",e)},r.addEventListener("seeked",o);case 10:case"end":return e.stop()}}),e,this)}))),function(){return a.apply(this,arguments)})},{key:"start",value:(i=re(ie().mark((function e(){var t,r,n;return ie().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:t=this.videoElement,r=this.renderFrame,t.currentTime=0,t.paused&&(n=function e(n){r(),t.removeEventListener("seeked",e)},t.addEventListener("seeked",n));case 4:case"end":return e.stop()}}),e,this)}))),function(){return i.apply(this,arguments)})},{key:"end",value:(n=re(ie().mark((function e(){var t,r,n;return ie().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:t=this.videoElement,r=this.renderFrame,t.currentTime=t.duration,t.paused&&(n=function e(n){r(),t.removeEventListener("seeked",e)},t.addEventListener("seeked",n));case 4:case"end":return e.stop()}}),e,this)}))),function(){return n.apply(this,arguments)})},{key:"setTime",value:(r=re(ie().mark((function e(t){var r,n,i;return ie().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:r=this.videoElement,n=this.renderFrame,r.currentTime=t,r.paused&&(i=function e(t){n(),r.removeEventListener("seeked",e)},r.addEventListener("seeked",i));case 4:case"end":return e.stop()}}),e,this)}))),function(e){return r.apply(this,arguments)})},{key:"setFrame",value:(t=re(ie().mark((function e(t){return ie().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:this.setTime((t-1)/this.fps);case 1:case"end":return e.stop()}}),e,this)}))),function(e){return t.apply(this,arguments)})},{key:"setProperties",value:function(e){void 0!==e.loop&&(this.videoElement.loop=e.loop),void 0!==e.muted&&(this.videoElement.muted=e.muted),void 0!==e.playbackRate&&this.setPlaybackRate(e.playbackRate),void 0!==e.scrollSpeed&&this.setScrollSpeed(e.scrollSpeed),e.voiRange&&this.setVOI(e.voiRange)}},{key:"setPlaybackRate",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1;this.playbackRate=e,e<.0625?this.pause():this.videoElement&&(this.videoElement.playbackRate=e,this.play())}},{key:"setScrollSpeed",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:W.FRAME;this.scrollSpeed=t===W.SECOND?e*this.fps:e}},{key:"resetProperties",value:function(){this.setProperties({loop:!1,muted:!0})}},{key:"getScalarData",value:function(){var e=document.createElement("canvas");e.width=this.videoWidth,e.height=this.videoHeight;var t=e.getContext("2d");t.drawImage(this.videoElement,0,0);var r=t.getImageData(0,0,this.videoWidth,this.videoHeight).data;return r.getRange=function(){return[0,255]},r}},{key:"getImageData",value:function(){var e=this,t=this.metadata,r=t.spacing;return{dimensions:t.dimensions,spacing:r,origin:t.origin,direction:t.direction,metadata:{Modality:this.modality},imageData:{getDirection:function(){return t.direction},getDimensions:function(){return t.dimensions},getRange:function(){return[0,255]},getScalarData:function(){return e.getScalarData()},getSpacing:function(){return t.spacing},worldToIndex:function(t){var r=e.worldToCanvas(t),n=e.canvasToIndex(r);return[n[0],n[1],0]},indexToWorld:function(t){var r=e.indexToCanvas([t[0],t[1]]);return e.canvasToWorld(r)}},hasPixelSpacing:this.hasPixelSpacing,calibration:this.calibration,preScale:{scaled:!1}}}},{key:"setVOI",value:function(e){this.voiRange=e,this.setColorTransform()}},{key:"setWindowLevel",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:256,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:128,r=t-e/2,n=t+e/2-1;this.setVOI({lower:r,upper:n}),this.setColorTransform()}},{key:"setAverageWhite",value:function(e){this.averageWhite=e,this.setColorTransform()}},{key:"setColorTransform",value:function(){if(this.voiRange||this.averageWhite){var e=this.averageWhite||[255,255,255],t=Math.max.apply(Math,br(e)),r=e.map((function(e){return t/e})),n=this.voiRange||{},i=n.lower,a=void 0===i?0:i,o=n.upper,s=((void 0===o?255:o)-a+1)/255,u=a/255;this.feFilter='url(\'data:image/svg+xml, <svg xmlns="http://www.w3.org/2000/svg"> <filter id="colour" color-interpolation-filters="linearRGB"> <feColorMatrix type="matrix" values=" '.concat(r[0]*s," 0 0 0 ").concat(u," 0 ").concat(r[1]*s," 0 0 ").concat(u," 0 0 ").concat(r[2]*s," 0 ").concat(u," 0 0 0 1 0\" /> </filter> </svg>#colour')"),this.canvas.style.filter=this.feFilter}else this.feFilter=null}},{key:"setCamera",value:function(e){var t=e.parallelScale,r=e.focalPoint;if(void 0!==e.parallelScale&&(this.videoCamera.parallelScale=1/t),void 0!==r){var n=this.worldToCanvas(r),i=[this.element.clientWidth/2,this.element.clientHeight/2],a=[(n[0]-i[0])/this.videoCamera.parallelScale,(n[1]-i[1])/this.videoCamera.parallelScale];this.videoCamera.panWorld=[this.videoCamera.panWorld[0]-a[0],this.videoCamera.panWorld[1]-a[1]]}this.canvasContext.fillRect(0,0,this.canvas.width,this.canvas.height),!1===this.isPlaying&&this.renderFrame()}},{key:"getCamera",value:function(){var e=this.videoCamera.parallelScale,t=[this.element.clientWidth/2,this.element.clientHeight/2];return{parallelProjection:!0,focalPoint:this.canvasToWorld(t),position:[0,0,0],parallelScale:1/e,viewPlaneNormal:[0,0,1]}}},{key:"refreshRenderValues",value:function(){var e=this.canvas.width/this.videoWidth;this.videoHeight*e>this.canvas.height&&(e*=this.canvas.height/(this.videoHeight*e));var t=Math.floor(this.videoWidth*e),r=Math.floor(this.videoHeight*e),n=(this.canvas.width/2-t/2)/e,i=(this.canvas.height/2-r/2)/e;this.videoCamera.panWorld=[n,i],this.videoCamera.parallelScale=e}},{key:"getWorldToCanvasRatio",value:function(){return this.videoCamera.parallelScale}},{key:"getCanvasToWorldRatio",value:function(){return 1/this.videoCamera.parallelScale}}],[{key:"useCustomRenderingPipeline",get:function(){return!0}}]),d}(Oi),so=oo,uo=(ue(ao={},y.ORTHOGRAPHIC,Fi),ue(ao,y.PERSPECTIVE,Fi),ue(ao,y.STACK,eo),ue(ao,y.VOLUME_3D,ro),ue(ao,y.VIDEO,so),ao);function lo(e){return uo[e].useCustomRenderingPipeline}function co(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function vo(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?co(Object(r),!0).forEach((function(t){ue(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):co(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}var fo=function(){function e(t){var r=this;if(he(this,e),ue(this,"id",void 0),ue(this,"hasBeenDestroyed",void 0),ue(this,"offscreenMultiRenderWindow",void 0),ue(this,"offScreenCanvasContainer",void 0),ue(this,"_viewports",void 0),ue(this,"_needsRender",new Set),ue(this,"_animationFrameSet",!1),ue(this,"_animationFrameHandle",null),ue(this,"useCPURendering",void 0),ue(this,"renderFrameOfReference",(function(e){var t=r._getViewportsAsArray().map((function(t){if(t.getFrameOfReferenceUID()===e)return t.id}));return r.renderViewports(t)})),ue(this,"_renderFlaggedViewports",(function(){r._throwIfDestroyed(),r.useCPURendering||r.performVtkDrawCall();for(var e=r._getViewportsAsArray(),t=[],n=0;n<e.length;n++){var i=e[n];if(r._needsRender.has(i.id)){var a=r.renderViewportUsingCustomOrVtkPipeline(i);if(t.push(a),i.setRendered(),r._needsRender.delete(i.id),0===r._needsRender.size)break}}r._animationFrameSet=!1,r._animationFrameHandle=null,t.forEach((function(e){null!=e&&e.element&&st(e.element,p.IMAGE_RENDERED,e)}))})),this.id=t||dt(),this.useCPURendering=Ke(),Oe.set(this),!Qe())throw new Error("@cornerstonejs/core is not initialized, run init() first");this.useCPURendering||(this.offscreenMultiRenderWindow=bn.newInstance(),this.offScreenCanvasContainer=document.createElement("div"),this.offscreenMultiRenderWindow.setContainer(this.offScreenCanvasContainer)),this._viewports=new Map,this.hasBeenDestroyed=!1}return me(e,[{key:"enableElement",value:function(e){var t=this._normalizeViewportInputEntry(e);this._throwIfDestroyed();var r=t.element,n=t.viewportId;if(!r)throw new Error("No element provided");this.getViewport(n)&&(console.log("Viewport already exists, disabling it first"),this.disableElement(n),console.log("Viewport ".concat(n," disabled")));var i=lo(t.type);this.useCPURendering||i?this.addCustomViewport(t):this.enableVTKjsDrivenViewport(t);var a=wr(r),o=t.defaultOptions.background;this.fillCanvasWithBackgroundColor(a,o)}},{key:"disableElement",value:function(e){this._throwIfDestroyed();var t=this.getViewport(e);t?(this._resetViewport(t),lo(t.type)||this.useCPURendering||this.offscreenMultiRenderWindow.removeRenderer(e),this._removeViewport(e),t.isDisabled=!0,this._needsRender.delete(e),this.getViewports().length||this._clearAnimationFrame(),this.resize(!0,!0)):console.warn("viewport ".concat(e," does not exist"))}},{key:"setViewports",value:function(e){var t=this,r=this._normalizeViewportInputEntries(e);this._throwIfDestroyed(),this._reset();var n=[],i=[];r.forEach((function(e){t.useCPURendering||lo(e.type)?i.push(e):n.push(e)})),this.setVtkjsDrivenViewports(n),this.setCustomViewports(i)}},{key:"resize",value:function(){var e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0],t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];this._throwIfDestroyed();var r=this._getViewportsAsArray(),n=[],i=[];r.forEach((function(e){lo(e.type)?i.push(e):n.push(e)})),n.length&&this._resizeVTKViewports(n,t,e),i.length&&this._resizeUsingCustomResizeHandler(i,t,e)}},{key:"getViewport",value:function(e){return this._viewports.get(e)}},{key:"getViewports",value:function(){return this._throwIfDestroyed(),this._getViewportsAsArray()}},{key:"getStackViewports",value:function(){return this._throwIfDestroyed(),this.getViewports().filter((function(e){return e instanceof eo}))}},{key:"getVideoViewports",value:function(){return this._throwIfDestroyed(),this.getViewports().filter((function(e){return e instanceof so}))}},{key:"getVolumeViewports",value:function(){return this._throwIfDestroyed(),this.getViewports().filter((function(e){return e instanceof ji}))}},{key:"render",value:function(){var e=this.getViewports().map((function(e){return e.id}));this._setViewportsToBeRenderedNextFrame(e)}},{key:"renderViewports",value:function(e){this._setViewportsToBeRenderedNextFrame(e)}},{key:"renderViewport",value:function(e){this._setViewportsToBeRenderedNextFrame([e])}},{key:"destroy",value:function(){var e=this;this.hasBeenDestroyed||(this.useCPURendering||(this._getViewportsAsArray().forEach((function(t){e.offscreenMultiRenderWindow.removeRenderer(t.id)})),this.offscreenMultiRenderWindow.delete(),delete this.offscreenMultiRenderWindow),this._reset(),Oe.delete(this.id),this.hasBeenDestroyed=!0)}},{key:"fillCanvasWithBackgroundColor",value:function(e,t){var r,n=e.getContext("2d");if(t){var i=t.map((function(e){return Math.floor(255*e)}));r="rgb(".concat(i[0],", ").concat(i[1],", ").concat(i[2],")")}else r="black";n.fillStyle=r,n.fillRect(0,0,e.width,e.height)}},{key:"_normalizeViewportInputEntry",value:function(e){var t=e.type,r=e.defaultOptions;return r&&0!==Object.keys(r).length||(r={background:[0,0,0],orientation:null,displayArea:null},t===y.ORTHOGRAPHIC&&(r=vo(vo({},r),{},{orientation:R.AXIAL}))),vo(vo({},e),{},{defaultOptions:r})}},{key:"_normalizeViewportInputEntries",value:function(e){var t=this,r=[];return e.forEach((function(e){r.push(t._normalizeViewportInputEntry(e))})),r}},{key:"_resizeUsingCustomResizeHandler",value:function(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],r=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];e.forEach((function(e){"function"==typeof e.resize&&e.resize()})),e.forEach((function(e){var r=e.getCamera();e.resetCamera(),t&&e.setCamera(r)})),!0===r&&this.render()}},{key:"_resizeVTKViewports",value:function(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],r=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],n=e.map((function(e){return e.canvas}));if(n.length){var i=this._resizeOffScreenCanvas(n),a=i.offScreenCanvasWidth,o=i.offScreenCanvasHeight;this._resize(e,a,o)}e.forEach((function(e){var r=wr(e.element),n=r.getBoundingClientRect(),i=window.devicePixelRatio||1;r.width=n.width*i,r.height=n.height*i;var a=e.getCamera();e.resetCamera(),t&&e.setCamera(a)})),!0===r&&this.render()}},{key:"enableVTKjsDrivenViewport",value:function(e){var t=this._getViewportsAsArray().filter((function(e){return!1===lo(e.type)})),r=t.map((function(e){return e.canvas})),n=wr(e.element);r.push(n);var i=window.devicePixelRatio||1,a=n.getBoundingClientRect();n.width=a.width*i,n.height=a.height*i;var o=this._resizeOffScreenCanvas(r),s=o.offScreenCanvasWidth,u=o.offScreenCanvasHeight,l=this._resize(t,s,u),c=vo(vo({},e),{},{canvas:n});this.addVtkjsDrivenViewport(c,{offScreenCanvasWidth:s,offScreenCanvasHeight:u,xOffset:l})}},{key:"_removeViewport",value:function(e){this.getViewport(e)?this._viewports.delete(e):console.warn("viewport ".concat(e," does not exist"))}},{key:"addVtkjsDrivenViewport",value:function(e,t){var r=e.element,n=e.canvas,i=e.viewportId,a=e.type,o=e.defaultOptions;r.tabIndex=-1;var s=t.offScreenCanvasWidth,u=t.offScreenCanvasHeight,l=t.xOffset,c=this._getViewportCoordsOnOffScreenCanvas(e,s,u,l),d=c.sxStartDisplayCoords,v=c.syStartDisplayCoords,f=c.sxEndDisplayCoords,h=c.syEndDisplayCoords,g=c.sx,m=c.sy,w=c.sWidth,I=c.sHeight;this.offscreenMultiRenderWindow.addRenderer({viewport:[d,v,f,h],id:i,background:o.background?o.background:[0,0,0]});var C,b={id:i,element:r,renderingEngineId:this.id,type:a,canvas:n,sx:g,sy:m,sWidth:w,sHeight:I,defaultOptions:o||{}};if(a===y.STACK)C=new eo(b);else if(a===y.ORTHOGRAPHIC||a===y.PERSPECTIVE)C=new Fi(b);else{if(a!==y.VOLUME_3D)throw new Error("Viewport Type ".concat(a," is not supported"));C=new ro(b)}this._viewports.set(i,C);var E={element:r,viewportId:i,renderingEngineId:this.id};C.suppressEvents||st(ot,p.ELEMENT_ENABLED,E)}},{key:"addCustomViewport",value:function(e){var t=e.element,r=e.viewportId,n=e.type,i=e.defaultOptions;t.tabIndex=-1;var a=wr(t),o=a.clientWidth,s=a.clientHeight;a.width===o&&a.height===s||(a.width=o,a.height=s);var u={id:r,renderingEngineId:this.id,element:t,type:n,canvas:a,sx:0,sy:0,sWidth:o,sHeight:s,defaultOptions:i||{}},l=new(0,uo[n])(u);this._viewports.set(r,l);var c={element:t,viewportId:r,renderingEngineId:this.id};st(ot,p.ELEMENT_ENABLED,c)}},{key:"setCustomViewports",value:function(e){var t=this;e.forEach((function(e){return t.addCustomViewport(e)}))}},{key:"setVtkjsDrivenViewports",value:function(e){if(e.length){var t=e.map((function(e){return wr(e.element)}));t.forEach((function(e){var t=window.devicePixelRatio||1,r=e.getBoundingClientRect();e.width=r.width*t,e.height=r.height*t}));for(var r=this._resizeOffScreenCanvas(t),n=r.offScreenCanvasWidth,i=r.offScreenCanvasHeight,a=0,o=0;o<e.length;o++){var s=e[o],u=t[o],l=vo(vo({},s),{},{canvas:u});this.addVtkjsDrivenViewport(l,{offScreenCanvasWidth:n,offScreenCanvasHeight:i,xOffset:a}),a+=u.width}}}},{key:"_resizeOffScreenCanvas",value:function(e){var t=this.offScreenCanvasContainer,r=this.offscreenMultiRenderWindow,n=window.devicePixelRatio||1,i=Math.max.apply(Math,br(e.map((function(e){return e.clientHeight*n})))),a=0;return e.forEach((function(e){a+=e.clientWidth*n})),t.width=a,t.height=i,r.resize(),{offScreenCanvasWidth:a,offScreenCanvasHeight:i}}},{key:"_resize",value:function(e,t,r){for(var n=0,i=window.devicePixelRatio||1,a=0;a<e.length;a++){var o=e[a],s=this._getViewportCoordsOnOffScreenCanvas(o,t,r,n),u=s.sxStartDisplayCoords,l=s.syStartDisplayCoords,c=s.sxEndDisplayCoords,d=s.syEndDisplayCoords,v=s.sx,f=s.sy,p=s.sWidth,h=s.sHeight;n+=o.canvas.clientWidth*i,o.sx=v,o.sy=f,o.sWidth=p,o.sHeight=h,this.offscreenMultiRenderWindow.getRenderer(o.id).setViewport([u,l,c,d])}return n}},{key:"_getViewportCoordsOnOffScreenCanvas",value:function(e,t,r,n){var i=e.canvas,a=i.clientWidth,o=i.clientHeight,s=window.devicePixelRatio||1,u=o*s,l=a*s,c=n/t,d=0+(r-u)/r;return{sxStartDisplayCoords:c,syStartDisplayCoords:d,sxEndDisplayCoords:c+l/t,syEndDisplayCoords:d+u/r,sx:n,sy:0,sWidth:l,sHeight:u}}},{key:"_getViewportsAsArray",value:function(){return Array.from(this._viewports.values())}},{key:"_setViewportsToBeRenderedNextFrame",value:function(e){var t=this;e.forEach((function(e){t._needsRender.add(e)})),this._render()}},{key:"_render",value:function(){this._needsRender.size>0&&!1===this._animationFrameSet&&(this._animationFrameHandle=window.requestAnimationFrame(this._renderFlaggedViewports),this._animationFrameSet=!0)}},{key:"performVtkDrawCall",value:function(){var e=this.offscreenMultiRenderWindow,t=e.getRenderWindow(),r=e.getRenderers();if(r.length){for(var n=0;n<r.length;n++){var i=r[n],a=i.renderer,o=i.id;this._needsRender.has(o)?a.setDraw(!0):a.setDraw(!1)}t.render();for(var s=0;s<r.length;s++)r[s].renderer.setDraw(!1)}}},{key:"renderViewportUsingCustomOrVtkPipeline",value:function(e){var t;if(!(e.sWidth<2||e.sHeight<2)){if(!0===lo(e.type))t=e.customRenderViewportToCanvas();else{if(this.useCPURendering)throw new Error("GPU not available, and using a viewport with no custom render pipeline.");var r=this.offscreenMultiRenderWindow.getOpenGLRenderWindow().get3DContext().canvas;t=this._renderViewportFromVtkCanvasToOnscreenCanvas(e,r)}return t}console.warn("Viewport is too small",e.sWidth,e.sHeight)}},{key:"_renderViewportFromVtkCanvasToOnscreenCanvas",value:function(e,t){var r=e.element,n=e.canvas,i=e.sx,a=e.sy,o=e.sWidth,s=e.sHeight,u=e.id,l=e.renderingEngineId,c=e.suppressEvents,d=n.width,v=n.height;return n.getContext("2d").drawImage(t,i,a,o,s,0,0,d,v),{element:r,suppressEvents:c,viewportId:u,renderingEngineId:l,viewportStatus:e.viewportStatus}}},{key:"_resetViewport",value:function(e){var t=this.id,r=e.element,n=e.canvas,i={element:r,viewportId:e.id,renderingEngineId:t};st(ot,p.ELEMENT_DISABLED,i),r.removeAttribute("data-viewport-uid"),r.removeAttribute("data-rendering-engine-uid"),n.getContext("2d").clearRect(0,0,n.width,n.height)}},{key:"_clearAnimationFrame",value:function(){window.cancelAnimationFrame(this._animationFrameHandle),this._needsRender.clear(),this._animationFrameSet=!1,this._animationFrameHandle=null}},{key:"_reset",value:function(){var e=this;this._getViewportsAsArray().forEach((function(t){e._resetViewport(t)})),this._clearAnimationFrame(),this._viewports=new Map}},{key:"_throwIfDestroyed",value:function(){if(this.hasBeenDestroyed)throw new Error("this.destroy() has been manually called to free up memory, can not longer use this instance. Instead make a new one.")}},{key:"_downloadOffScreenCanvas",value:function(){var e,t;e=this._debugRender(),(t=document.createElement("a")).download="viewport.png",t.href=e,document.body.appendChild(t),t.click(),document.body.removeChild(t)}},{key:"_debugRender",value:function(){for(var e=this.offscreenMultiRenderWindow,t=e.getRenderWindow(),r=e.getRenderers(),n=0;n<r.length;n++)r[n].renderer.setDraw(!0);t.render();var i=e.getOpenGLRenderWindow().get3DContext().canvas,a=i.toDataURL();return this._getViewportsAsArray().forEach((function(e){var t=e.sx,r=e.sy,n=e.sWidth,a=e.sHeight,o=e.canvas,s=o.width,u=o.height;o.getContext("2d").drawImage(i,t,r,n,a,0,0,s,u)})),a}}]),e}(),po=fo,ho=new Mt("imageRetrievalPool");ho.setMaxSimultaneousRequests(g.Interaction,200),ho.setMaxSimultaneousRequests(g.Thumbnail,200),ho.setMaxSimultaneousRequests(g.Prefetch,200),ho.grabDelay=0;var go=ho;function mo(e){if(e){var t=e.dataset;return yo(t.viewportUid,t.renderingEngineUid)}}function yo(e,t){if(t&&e){var r=Se(t);if(r&&!r.hasBeenDestroyed){var n=r.getViewport(e);if(n){var i=n.getFrameOfReferenceUID();return{viewport:n,renderingEngine:r,viewportId:e,renderingEngineId:t,FrameOfReferenceUID:i}}}}}function wo(){var e=[];return Te().forEach((function(t){t.getViewports().forEach((function(t){var r=t.element;e.push(mo(r))}))})),e}var Io=Symbol("DefaultSettings"),Co=Symbol("RuntimeSettings"),bo=Symbol("ObjectSettingsMap"),Eo=Symbol("Dictionary"),Po=function(){function e(t){he(this,e);var r=Object.create(t instanceof e&&Eo in t?t[Eo]:null);Object.seal(Object.defineProperty(this,Eo,{value:r}))}return me(e,[{key:"set",value:function(e,t){return Ro(this[Eo],e,t,null)}},{key:"get",value:function(e){return function(e,t){return e[t]}(this[Eo],e)}},{key:"unset",value:function(e){return function(e,t){if(t.endsWith(".")){var r=0,n=t,i=n.slice(0,-1),a=0===i.length;for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&(a||o.startsWith(n)||o===i)&&(delete e[o],++r);return r>0}return delete e[t]}(this[Eo],e+"")}},{key:"forEach",value:function(e){ko(this[Eo],e)}},{key:"extend",value:function(){return new e(this)}},{key:"import",value:function(e){var t=this;Oo(e)&&Object.keys(e).forEach((function(r){Ro(t[Eo],r,e[r],null)}))}},{key:"dump",value:function(){var e={};return ko(this[Eo],(function(t,r){void 0!==r&&Ao(e,t,r)})),e}}],[{key:"assert",value:function(t){return t instanceof e?t:e.getRuntimeSettings()}},{key:"getDefaultSettings",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,r=e[Io];if(r instanceof e||(r=new e,e[Io]=r),t){var n={};return r.forEach((function(e){if(e.startsWith(t)){var i=e.split("".concat(t,"."))[1];n[i]=r.get(e)}})),n}return r}},{key:"getRuntimeSettings",value:function(){var t=e[Co];return t instanceof e||(t=new e(e.getDefaultSettings()),e[Co]=t),t}},{key:"getObjectSettings",value:function(t,r){var n=null;if(t instanceof e)n=t;else if("object"===Z(t)&&null!==t){var i=e[bo];i instanceof WeakMap||(i=new WeakMap,e[bo]=i),(n=i.get(t))instanceof e||(n=new e(e.assert(e.getObjectSettings(r))),i.set(t,n))}return n}},{key:"extendRuntimeSettings",value:function(){return e.getRuntimeSettings().extend()}}]),e}();function ko(e,t){for(var r in e)t(r,e[r])}function Ro(e,t,r,n){return!!function(e){var t,r,n;if("string"!=typeof e||(t=e.length-1)<0)return!1;for(n=-1;(r=e.indexOf(".",n+1))>=0;){if(r-n<2||r===t)return!1;n=r}return!0}(t)&&(Oo(r)?function(e,t,r,n){var i;if(n.has(r))return Ro(e,t,null,n);for(var a in n.add(r),i=0,r)Object.prototype.hasOwnProperty.call(r,a)&&(Ro(e,0===a.length?t:"".concat(t,".").concat(a),r[a],n)||++i);return n.delete(r),0===i}(e,t,r,n instanceof WeakSet?n:new WeakSet):(e[t]=r,!0))}function Oo(e){if("object"===Z(e)&&null!==e){var t=Object.getPrototypeOf(e);if(t===Object.prototype||null===t)return!0}return!1}function Ao(e,t,r){var n=t.indexOf(".");if(n>=0){var i=t.slice(0,n),a=e[i];if("object"!==Z(a)||null===a){var o=a;a={},void 0!==o&&(a[""]=o),e[i]=a}Ao(a,t.slice(n+1,t.length),r)}else e[t]=r}Po.getDefaultSettings().set("useCursors",!0),X(6914);var To=function(){function e(t){he(this,e),ue(this,"id",void 0),ue(this,"sizeInBytes",void 0),ue(this,"points",void 0),ue(this,"color",void 0),ue(this,"type",void 0),ue(this,"segmentIndex",void 0);var r=t.data,n=r.points,i=r.type;this.id=t.id,this.points=n,this.type=i,this.color=t.color,this.segmentIndex=t.segmentIndex,this.sizeInBytes=this._getSizeInBytes()}return me(e,[{key:"_getSizeInBytes",value:function(){return 0+3*this.points.length}},{key:"getPoints",value:function(){return this.points}},{key:"getFlatPointsArray",value:function(){return this.points.map((function(e){return br(e)})).flat()}},{key:"getColor",value:function(){return this.color}},{key:"getType",value:function(){return this.type}}]),e}(),So=function(){function e(t){var r;he(this,e),ue(this,"id",void 0),ue(this,"sizeInBytes",void 0),ue(this,"frameOfReferenceUID",void 0),ue(this,"color",[200,0,0]),ue(this,"segmentIndex",void 0),ue(this,"polyData",void 0),ue(this,"centroid",void 0),ue(this,"contours",void 0),this.id=t.id,this.contours=[],this.color=null!==(r=t.color)&&void 0!==r?r:this.color,this.frameOfReferenceUID=t.frameOfReferenceUID,this.segmentIndex=t.segmentIndex,this._createEachContour(t.data),this.sizeInBytes=this._getSizeInBytes()}return me(e,[{key:"_createEachContour",value:function(e){var t=this;e.forEach((function(e){var r=e.points,n=e.type,i=e.color,a=new To({id:"".concat(t.id,"-segment-").concat(t.segmentIndex),data:{points:r,type:n,segmentIndex:t.segmentIndex,color:null!=i?i:t.color},segmentIndex:t.segmentIndex,color:null!=i?i:t.color});t.contours.push(a)})),this._updateContourSetCentroid()}},{key:"_updateContourSetCentroid",value:function(){var e=this,t=this.getTotalNumberOfPoints(),r=this.getFlatPointsArray(),n=r.reduce((function(e,t){return[e[0]+t[0],e[1]+t[1],e[2]+t[2]]}),[0,0,0]),i=[n[0]/t,n[1]/t,n[2]/t],a=r.reduce((function(t,r){return e._getDistance(i,r)<e._getDistance(i,t)?r:t}),r[0]);this.centroid=a}},{key:"_getSizeInBytes",value:function(){return this.contours.reduce((function(e,t){return e+t.sizeInBytes}),0)}},{key:"getCentroid",value:function(){return this.centroid}},{key:"getSegmentIndex",value:function(){return this.segmentIndex}},{key:"getColor",value:function(){return this.color}},{key:"getContours",value:function(){return this.contours}},{key:"getSizeInBytes",value:function(){return this.sizeInBytes}},{key:"getFlatPointsArray",value:function(){return this.contours.map((function(e){return e.getPoints()})).flat()}},{key:"getNumberOfContours",value:function(){return this.contours.length}},{key:"getTotalNumberOfPoints",value:function(){return this.contours.reduce((function(e,t){return e+t.getPoints().length}),0)}},{key:"getNumberOfPointsArray",value:function(){var e=this;return this.contours.reduce((function(t,r,n){return t[n]=e.getNumberOfPointsInAContour(n),t}),[])}},{key:"getPointsInContour",value:function(e){return this.contours[e].getPoints()}},{key:"getNumberOfPointsInAContour",value:function(e){return this.getPointsInContour(e).length}},{key:"_getDistance",value:function(e,t){return Math.sqrt(Math.pow(e[0]-t[0],2)+Math.pow(e[1]-t[1],2)+Math.pow(e[2]-t[2],2))}}]),e}();function xo(e,t){!function(e){if(!e||0===e.data.length)throw new Error("Invalid contour set data, see publicContourSetData type for more info");if(!e.id)throw new Error("Invalid contour set data, each contour set must have an id");if(!e.data||!Array.isArray(e.data))throw new Error("Invalid contour set data, each contour set must have an array of contours");e.data.forEach((function(e){if(!e.points||!Array.isArray(e.points))throw new Error("Invalid contour set data, each contour must have an array of points");e.points.forEach((function(e){if(!e||!Array.isArray(e)||3!==e.length)throw new Error("Invalid contour set data, each point must be an array of length 3")}))}))}(t);var r=new So({id:t.id,data:t.data,color:t.color,frameOfReferenceUID:t.frameOfReferenceUID,segmentIndex:1});return{id:e,type:S.CONTOUR,data:r,sizeInBytes:r.getSizeInBytes()}}var Do=function(){function e(t){var r;he(this,e),ue(this,"id",void 0),ue(this,"sizeInBytes",void 0),ue(this,"frameOfReferenceUID",void 0),ue(this,"color",[200,0,0]),ue(this,"points",void 0),ue(this,"polys",void 0),this.id=t.id,this.points=t.data.points,this.polys=t.data.polys,this.color=null!==(r=t.color)&&void 0!==r?r:this.color,this.frameOfReferenceUID=t.frameOfReferenceUID,this.sizeInBytes=this._getSizeInBytes()}return me(e,[{key:"_getSizeInBytes",value:function(){return 4*this.points.length+4*this.polys.length}},{key:"getColor",value:function(){return this.color}},{key:"getPoints",value:function(){return this.points}},{key:"getPolys",value:function(){return this.polys}},{key:"getSizeInBytes",value:function(){return this.sizeInBytes}}]),e}();function _o(e,t){!function(e){var t=e.data;if(!t.points||!t.polys)throw new Error("Invalid surface data")}(t);var r=new Do({id:t.id,color:t.color,frameOfReferenceUID:t.frameOfReferenceUID,data:{points:t.data.points,polys:t.data.polys}});return{id:e,type:S.SURFACE,data:r,sizeInBytes:r.getSizeInBytes()}}function Mo(e,t){return Vo.apply(this,arguments)}function Vo(){return(Vo=re(ie().mark((function e(t,r){var n,i;return ie().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!(n=Dn.getGeometry(t))){e.next=3;break}return e.abrupt("return",n);case 3:if(r.type!==S.CONTOUR){e.next=7;break}n=xo(t,r.geometryData),e.next=12;break;case 7:if(r.type!==S.SURFACE){e.next=11;break}n=_o(t,r.geometryData),e.next=12;break;case 11:throw new Error("Unknown geometry type, Only CONTOUR is supported");case 12:return i={promise:Promise.resolve(n)},e.next=15,Dn.putGeometryLoadObject(t,i);case 15:return e.abrupt("return",n);case 16:case"end":return e.stop()}}),e)})))).apply(this,arguments)}var Lo=function(e){return e[e.None=0]="None",e[e.Capture=1]="Capture",e[e.Bubble=2]="Bubble",e}(Lo||{}),Uo=function(){function e(t){he(this,e),ue(this,"_target",void 0),ue(this,"_eventListeners",new Map),ue(this,"_children",new Map),this._target=t}return me(e,[{key:"isEmpty",get:function(){return 0===this._eventListeners.size&&0===this._children.size}},{key:"addEventListener",value:function(t,r,n){var i=t.indexOf(".");if(-1!==i){var a=t.substring(0,i),o=this._children.get(a);o||(o=new e(this._target),this._children.set(a,o)),t=t.substring(i+1),o.addEventListener(t,r,n)}else this._addEventListener(t,r,n)}},{key:"removeEventListener",value:function(e,t,r){var n=e.indexOf(".");if(-1!==n){var i=e.substring(0,n),a=this._children.get(i);if(!a)return;e=e.substring(n+1),a.removeEventListener(e,t,r),a.isEmpty&&this._children.delete(i)}else this._removeEventListener(e,t,r)}},{key:"reset",value:function(){var e=this;Array.from(this._children.entries()).forEach((function(t){var r=Un(t,2),n=r[0],i=r[1];if(i.reset(),!i.isEmpty)throw new Error("Child is not empty and cannot be removed");e._children.delete(n)})),this._unregisterAllEvents()}},{key:"_addEventListener",value:function(e,t,r){var n,i,a=this._eventListeners.get(e);a||(a=new Map,this._eventListeners.set(e,a));var o=null!==(n=null==r?void 0:r.capture)&&void 0!==n&&n?Lo.Capture:Lo.Bubble,s=null!==(i=a.get(t))&&void 0!==i?i:Lo.None;s&o?console.warn("A listener is already registered for this phase"):(a.set(t,s|o),this._target.addEventListener(e,t,r))}},{key:"_removeEventListener",value:function(e,t,r){var n,i=this,a=null!==(n=null==r?void 0:r.capture)&&void 0!==n&&n?Lo.Capture:Lo.Bubble,o=this._eventListeners.get(e);o&&((t?[t]:Array.from(o.keys())).forEach((function(t){var n,s=null!==(n=o.get(t))&&void 0!==n?n:Lo.None;if(s&a){i._target.removeEventListener(e,t,r);var u=s^a;u===Lo.None?o.delete(t):o.set(t,u)}})),o.size||this._eventListeners.delete(e))}},{key:"_unregisterAllListeners",value:function(e,t){var r=this;Array.from(t.entries()).forEach((function(t){for(var n=Un(t,2),i=n[0],a=n[1],o=Lo.Capture;a;o<<=1)if(a&o){var s=o===Lo.Capture;r.removeEventListener(e,i,{capture:s}),a^=o}}))}},{key:"_unregisterAllEvents",value:function(){var e=this;Array.from(this._eventListeners.entries()).forEach((function(t){var r=Un(t,2),n=r[0],i=r[1];return e._unregisterAllListeners(n,i)}))}}]),e}(),jo=function(){function e(){he(this,e),ue(this,"_targetsEventListeners",new Map)}return me(e,[{key:"addEventListener",value:function(e,t,r,n){var i=this._targetsEventListeners.get(e);i||(i=new Uo(e),this._targetsEventListeners.set(e,i)),i.addEventListener(t,r,n)}},{key:"removeEventListener",value:function(e,t,r,n){var i=this._targetsEventListeners.get(e);i&&(i.removeEventListener(t,r,n),i.isEmpty&&this._targetsEventListeners.delete(e))}},{key:"reset",value:function(){var e=this;Array.from(this._targetsEventListeners.entries()).forEach((function(t){var r=Un(t,2),n=r[0];r[1].reset(),e._targetsEventListeners.delete(n)}))}}]),e}();function No(e,t){for(var r=e.getSize(),n=0;n<r;n++){var i=[];e.getNodeValue(n,i),i[1]=i[1]*t,i[2]=i[2]*t,i[3]=i[3]*t,e.setNodeValue(n,i)}}var Fo=Symbol("LastRuntimeId"),Go={},Wo=4294967295,Bo="-";function qo(e,t,r){return function(e,t,r){var n=e[t];n instanceof Array||(n=[0],Object.defineProperty(e,t,{value:n}));for(var i=!0,a=0;i&&a<n.length;++a){var o=0|n[a];o<r?(i=!1,o+=1):(o=0,a+1===n.length&&n.push(0)),n[a]=o}return n}(null!==e&&"object"===Z(e)?e:Go,Fo,("number"==typeof r&&r>0?r:Wo)>>>0).join("string"==typeof t?t:Bo)}var zo={},Ho={add:function(e,t){var r=ye(e);zo[r]=t},get:function(e,t){if("calibratedPixelSpacing"===e){var r=ye(t);return zo[r]}}};function Ko(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1e-5;return Math.abs(e[0]+t[0])<r&&Math.abs(e[1]+t[1])<r&&Math.abs(e[2]+t[2])<r}var Yo=function(e){if(!Xe())throw new Error("Your page is NOT cross-origin isolated, see https://developer.mozilla.org/en-US/docs/Web/API/crossOriginIsolated");if(void 0===window.SharedArrayBuffer)throw new Error("SharedArrayBuffer is NOT supported in your browser see https://developer.chrome.com/blog/enabling-shared-array-buffer/");var t=new SharedArrayBuffer(e);return new Uint8Array(t)},Zo=function(e){if(!Xe())throw new Error("Your page is NOT cross-origin isolated, see https://developer.mozilla.org/en-US/docs/Web/API/crossOriginIsolated");if(void 0===window.SharedArrayBuffer)throw new Error("SharedArrayBuffer is NOT supported in your browser see https://developer.chrome.com/blog/enabling-shared-array-buffer/");var t=new SharedArrayBuffer(4*e);return new Float32Array(t)},Xo=function(e){if(!window.crossOriginIsolated)throw new Error("Your page is NOT cross-origin isolated, see https://developer.mozilla.org/en-US/docs/Web/API/crossOriginIsolated");if(void 0===window.SharedArrayBuffer)throw new Error("SharedArrayBuffer is NOT supported in your browser see https://developer.chrome.com/blog/enabling-shared-array-buffer/");var t=new SharedArrayBuffer(2*e);return new Uint16Array(t)},Qo=function(e){if(!window.crossOriginIsolated)throw new Error("Your page is NOT cross-origin isolated, see https://developer.mozilla.org/en-US/docs/Web/API/crossOriginIsolated");if(void 0===window.SharedArrayBuffer)throw new Error("SharedArrayBuffer is NOT supported in your browser see https://developer.chrome.com/blog/enabling-shared-array-buffer/");var t=new SharedArrayBuffer(2*e);return new Int16Array(t)};function $o(e,t){if(e instanceof eo)return e.modality;if(e instanceof Fi){var r,n,i;if(!(t=null!==(r=t)&&void 0!==r?r:null===(n=e.getDefaultActor())||void 0===n?void 0:n.uid))return;return null===(i=Dn.getVolume(t))||void 0===i?void 0:i.metadata.Modality}throw new Error("Invalid viewport type")}function Jo(e,t){return!(e[0]<0||e[0]>=t[0]||e[1]<0||e[1]>=t[1]||e[2]<0||e[2]>=t[2])}function es(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r<t;r++)n[r]=e[r];return n}var ts=function(e,t){var r;r=t?[Ae(t)]:Te();var n=[];return r.forEach((function(t){var r,i=e.getActors(),a=function(e,t){var r="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!r){if(Array.isArray(e)||(r=function(e,t){if(e){if("string"==typeof e)return es(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?es(e,t):void 0}}(e))||t&&e&&"number"==typeof e.length){r&&(e=r);var n=0,i=function(){};return{s:i,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,o=!0,s=!1;return{s:function(){r=r.call(e)},n:function(){var e=r.next();return o=e.done,e},e:function(e){s=!0,a=e},f:function(){try{o||null==r.return||r.return()}finally{if(s)throw a}}}}(t.getVolumeViewports());try{var o=function(){var e=r.value,t=e.getActors();if(t.length!==i.length)return"continue";i.every((function(e){var r=e.uid;return t.find((function(e){return r===e.uid}))}))&&n.push(e)};for(a.s();!(r=a.n()).done;)o()}catch(e){a.e(e)}finally{a.f()}})),n},rs=function(e,t){var r;r=t?[Ae(t)]:Te();var n=[];return r.forEach((function(t){var r=t.getVolumeViewports().filter((function(t){return t.hasVolumeId(e)}));n.push.apply(n,br(r))})),n},ns=function(e){var t,r;return(null===(t=e.preScale)||void 0===t?void 0:t.scaled)&&(null===(r=e.preScale.scalingParameters)||void 0===r?void 0:r.suvbw)};function is(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:void 0,n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"_thumbnails";if(!(e&&e instanceof HTMLCanvasElement))throw new Error("canvas element is required");var i=t.imageId,a="renderGPUViewport-".concat(i),o=t.imageId,s=document.createElement("div");s.style.width="".concat(e.width,"px"),s.style.height="".concat(e.height,"px"),s.style.visibility="hidden",s.style.position="absolute";var u=window.devicePixelRatio||1,l=e.width,c=e.height;e.width=l*u,e.height=c*u,e.style.width="".concat(l,"px"),e.style.height="".concat(c,"px"),document.body.appendChild(s);var d=a.split(":").join("-");s.setAttribute("viewport-id-for-remove",d);var v=Ae(n)||new po(n),f=v.getViewport(a);if(!f){var h={viewportId:a,type:y.STACK,element:s,defaultOptions:{suppressEvents:!0}};v.enableElement(h),f=v.getViewport(a)}return new Promise((function(n){var i=!1;s.addEventListener(p.IMAGE_RENDERED,(function t(r){if(!i){var u=wr(s);e.getContext("2d").drawImage(u,0,0,u.width,u.height,0,0,e.width,e.height),i=!0,s.removeEventListener(p.IMAGE_RENDERED,t),setTimeout((function(){v.disableElement(a),document.querySelectorAll('[viewport-id-for-remove="'.concat(d,'"]')).forEach((function(e){e.remove()}))}),0),n(o)}})),f.renderImageObject(t),f.resetCamera(),"PT"!==r||ns(t)||f.setProperties({voiRange:{lower:t.minPixelValue,upper:t.maxPixelValue}}),f.render()}))}function as(e,t,r,n){var i={canvas:e,viewport:Oa(e,t,r),image:t,renderingTools:{}};return i.transform=$i(i),new Promise((function(e,r){wa(i,!0),e(t.imageId)}))}function os(e){var t=e.canvas,r=e.imageId,n=e.requestType,i=void 0===n?g.Thumbnail:n,a=e.priority,o=void 0===a?-5:a,s=e.renderingEngineId,u=void 0===s?"_thumbnails":s,l=e.useCPURendering,c=void 0!==l&&l,d=c?as:is;return new Promise((function(e,n){function a(r,n){var i,a=(Jt("generalSeriesModule",n)||{}).modality;r.isPreScaled=r.isPreScaled||(null===(i=r.preScale)||void 0===i?void 0:i.scaled),d(t,r,a,u).then((function(){e(n)}))}function s(e,t){console.error(e,t),n(e)}var l={targetBuffer:{type:$e().rendering.useNorm16Texture?void 0:"Float32Array"},preScale:{enabled:!0},useRGBA:!!c,requestType:i};Ut.addRequest(function(e,t,r){var n=this;return Gt(e,r).then((function(t){a.call(n,t,e)}),(function(t){s.call(n,t,e)}))}.bind(null,r,null,l),i,{imageId:r},o)}))}var ss=function(e,t){var r=Jt("imagePlaneModule",e);if(!r)throw new Error("No imagePlaneModule found for imageId: ".concat(e));var n=r.columnCosines,i=r.rowCosines,a=r.imagePositionPatient,o=r.columnPixelSpacing,s=r.rowPixelSpacing;o||(o=1),s||(s=1);var u=xn.vec3.create();xn.vec3.scaleAndAdd(u,a,n,-o/2),xn.vec3.scaleAndAdd(u,u,i,-s/2);var l=xn.vec3.create();return xn.vec3.sub(l,t,u),[xn.vec3.dot(l,i)/s,xn.vec3.dot(l,n)/o]};function us(e,t){var r=Jt("imagePlaneModule",e);if(!r)throw new Error("No imagePlaneModule found for imageId: ".concat(e));var n=r.columnCosines,i=r.rowCosines,a=r.imagePositionPatient,o=r.columnPixelSpacing,s=r.rowPixelSpacing;o||(o=1),s||(s=1);var u=xn.vec3.create();return xn.vec3.scaleAndAdd(u,a,i,s*(t[0]-.5)),xn.vec3.scaleAndAdd(u,u,n,o*(t[1]-.5)),Array.from(u)}var ls=function(e,t){var r=e.getCamera(),n=r.focalPoint,i=r.viewPlaneNormal,a=ui(e,r,t),o=a.spacingInNormalDirection,s=a.actorUID;if(!s)throw new Error("Could not find image volume with id ".concat(t," in the viewport"));var u=e.getActor(s);return u?{sliceRange:ai(u.actor,i,n),spacingInNormalDirection:o,camera:r}:(console.warn("No actor found for with actorUID of",s),null)},cs=function(e,t){var r=ls(e,t),n=r.sliceRange,i=r.spacingInNormalDirection,a=r.camera,o=n.min,s=n.max,u=n.current,l=Math.round((s-o)/i),c=(u-o)/(s-o)*l;return{numScrollSteps:l,currentStepIndex:Math.round(c),sliceRangeInfo:{sliceRange:n,spacingInNormalDirection:i,camera:a}}};function ds(e,t,r,n,i,a){var o=r.min,s=r.max,u=r.current,l=xn.vec3.create();xn.vec3.sub(l,t,e);var c=Math.round((s-o)/i),d=(u-o)/(s-o)*c,v=Math.round(d),f=[e[0]-n[0]*d*i,e[1]-n[1]*d*i,e[2]-n[2]*d*i];(v+=a)>c?v=c:v<0&&(v=0);var p=v*i;return{newFocalPoint:f=[f[0]+n[0]*p,f[1]+n[1]*p,f[2]+n[2]*p],newPosition:[f[0]+l[0],f[1]+l[1],f[2]+l[2]]}}function vs(e,t){var r;r=t?[Se(t)]:Te();var n=[];return r.forEach((function(t){var r=t.getStackViewports().filter((function(t){return t.hasImageURI(e)})),i=t.getVolumeViewports().filter((function(t){return t.hasImageURI(e)}));n.push.apply(n,br(r).concat(br(i)))})),n}function fs(e,t){var r=function(e,t){var r,n=t.getImageIds(),i=t.getCurrentImageIdIndex();if(0===n.length)return null;for(var a=function(t){var r=function(e){var t=Jt("imagePlaneModule",e);if(!(t&&t.rowCosines instanceof Array&&3===t.rowCosines.length&&t.columnCosines instanceof Array&&3===t.columnCosines.length&&t.imagePositionPatient instanceof Array&&3===t.imagePositionPatient.length))return null;var r=t.rowCosines,n=t.columnCosines,i=t.imagePositionPatient,a=xn.vec3.set.apply(xn.vec3,[xn.vec3.create()].concat(br(r))),o=xn.vec3.set.apply(xn.vec3,[xn.vec3.create()].concat(br(n)));return{rowCosines:r,columnCosines:n,imagePositionPatient:i,planeNormal:xn.vec3.cross(xn.vec3.create(),a,o)}}(t);return r?mi(hi(r.planeNormal,r.imagePositionPatient),e):null},o={distance:null!==(r=a(n[i]))&&void 0!==r?r:1/0,index:i},s=n.slice(i+1),u=0;u<s.length;u++){var l=a(s[u]);if(null!==l){if(!(l<=o.distance))break;o.distance=l,o.index=u+i+1}}for(var c=n.slice(0,i),d=c.length-1;d>=0;d--){var v=a(c[d]);if(null!==v&&v!==o.distance){if(!(v<o.distance))break;o.distance=v,o.index=d}}return o.distance===1/0?null:o}(e,t);return r?r.index:null}var ps={},hs={add:function(e,t){var r=Un(e,2),n=r[0],i=r[1],a="".concat(n,"_").concat(i);ps[a]||(ps[a]={}),ps[a]=t},get:function(e,t){if("spatialRegistrationModule"===e){var r=Un(t,2),n=r[0],i=r[1],a="".concat(n,"_").concat(i);if(ps[a])return ps[a];var o="".concat(i,"_").concat(n);return ps[o]?xn.mat4.invert(xn.mat4.create(),ps[o]):void 0}}};Xt(hs.get.bind(hs));var gs=hs,ms=function(e,t){var r=e.getCurrentImageId(),n=t.getCurrentImageId(),i=Jt("imagePlaneModule",r),a=Jt("imagePlaneModule",n);if(i&&a){var o=a.imageOrientationPatient;if(i.imageOrientationPatient.every((function(e,t){return Math.abs(e-o[t])<.05}))){var s=i.imagePositionPatient,u=a.imagePositionPatient,l=xn.vec3.subtract(xn.vec3.create(),s,u),c=xn.mat4.fromTranslation(xn.mat4.create(),l);gs.add([e.id,t.id],c)}else console.log("Viewport spatial registration only supported for same orientation (hence translation only) for now",null==i?void 0:i.imageOrientationPatient,null==a?void 0:a.imageOrientationPatient)}else console.log("Viewport spatial registration requires image plane module")};function ys(e){var t=e.getImageData(),r=t.imageData,n=t.dimensions,i=e.canvas,a=[i.width,0],o=[i.width,i.height],s=[0,i.height],u=e.canvasToWorld([0,0]),l=e.canvasToWorld(a),c=e.canvasToWorld(o),d=e.canvasToWorld(s),v=r.worldToIndex(u),f=r.worldToIndex(l),p=r.worldToIndex(c),h=r.worldToIndex(d);return function(e){var t=e.dimensions,r=e.imageData,n=e.topRightImage,i=e.bottomRightImage,a=e.bottomLeftImage,o=e.topLeftWorld,s=e.topRightWorld,u=e.bottomRightWorld,l=e.bottomLeftWorld,c=ws(e.topLeftImage,t)?o:r.indexToWorld([0,0,0]),d=ws(n,t)?s:r.indexToWorld([t[0]-1,0,0]),v=ws(i,t)?u:r.indexToWorld([t[0]-1,t[1]-1,0]);return[c,d,ws(a,t)?l:r.indexToWorld([0,t[1]-1,0]),v]}({dimensions:n,imageData:r,topLeftImage:v,topRightImage:f,bottomRightImage:p,bottomLeftImage:h,topLeftWorld:u,topRightWorld:l,bottomRightWorld:c,bottomLeftWorld:d})}function ws(e,t){return e[0]>0||e[0]<t[0]-1||e[1]>0||e[1]<t[1]-1||e[2]>0||e[2]<t[2]-1}function Is(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function Cs(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?Is(Object(r),!0).forEach((function(t){ue(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):Is(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function bs(e){var t=Jt("modalityLutModule",e)||{},r=(Jt("generalSeriesModule",e)||{}).modality,n={rescaleSlope:t.rescaleSlope,rescaleIntercept:t.rescaleIntercept,modality:r},i=Jt("scalingModule",e)||{};return Cs(Cs({},n),"PT"===r&&{suvbw:i.suvbw,suvbsa:i.suvbsa,suvlbm:i.suvlbm})}function Es(e,t){var r;if(t&&t instanceof Uint8Array)r="Uint8Array";else if(t instanceof Float32Array)r="Float32Array";else if(t instanceof Int16Array)r="Int16Array";else{if(!(t instanceof Uint16Array))throw new Error("Unsupported array type");r="Uint16Array"}return r}var Ps=function(e){var t=mo(e);if(t){var r=t.viewport;if(!(r instanceof eo))throw new Error("An image can only be fetched for a stack viewport and not for a viewport of type: ".concat(r.type));return r.getCornerstoneImage()}},ks=new Set(["1.2.840.10008.1.2.4.100","1.2.840.10008.1.2.4.100.1","1.2.840.10008.1.2.4.101","1.2.840.10008.1.2.4.101.1","1.2.840.10008.1.2.4.102","1.2.840.10008.1.2.4.102.1","1.2.840.10008.1.2.4.103","1.2.840.10008.1.2.4.103.1","1.2.840.10008.1.2.4.104","1.2.840.10008.1.2.4.104.1","1.2.840.10008.1.2.4.105","1.2.840.10008.1.2.4.105.1","1.2.840.10008.1.2.4.106","1.2.840.10008.1.2.4.106.1","1.2.840.10008.1.2.4.107","1.2.840.10008.1.2.4.108"]);function Rs(e){return!!e&&(Array.isArray(e)?e:[e]).find((function(e){return ks.has(e)}))}function Os(){return Os=re(ie().mark((function e(t,r,n){var i,a,o,s=arguments;return ie().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return i=s.length>3&&void 0!==s[3]&&s[3],a=s.length>4&&void 0!==s[4]&&s[4],n.forEach((function(e){var r=t.getViewport(e);if(!r)throw new Error("Viewport with Id ".concat(e," does not exist"));if(!(r instanceof ji))throw new Error("setVolumesForViewports only supports VolumeViewport and VolumeViewport3D")})),o=n.map(function(){var e=re(ie().mark((function e(n){var o;return ie().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return o=t.getViewport(n),e.next=3,o.setVolumes(r,i,a);case 3:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}()),e.next=6,Promise.all(o);case 6:return e.abrupt("return");case 7:case"end":return e.stop()}}),e)}))),Os.apply(this,arguments)}var As=function(e,t,r){return Os.apply(this,arguments)};function Ts(e,t){var r="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!r){if(Array.isArray(e)||(r=function(e,t){if(e){if("string"==typeof e)return Ss(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?Ss(e,t):void 0}}(e))||t&&e&&"number"==typeof e.length){r&&(e=r);var n=0,i=function(){};return{s:i,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,o=!0,s=!1;return{s:function(){r=r.call(e)},n:function(){var e=r.next();return o=e.done,e},e:function(e){s=!0,a=e},f:function(){try{o||null==r.return||r.return()}finally{if(s)throw a}}}}function Ss(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r<t;r++)n[r]=e[r];return n}function xs(){return xs=re(ie().mark((function e(t,r,n){var i,a,o,s,u,l,c,d=arguments;return ie().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:i=d.length>3&&void 0!==d[3]&&d[3],a=d.length>4&&void 0!==d[4]&&d[4],o=Ts(n),e.prev=3,o.s();case 5:if((s=o.n()).done){e.next=15;break}if(u=s.value,l=t.getViewport(u)){e.next=10;break}throw new Error("Viewport with Id ".concat(u," does not exist"));case 10:if(l instanceof ji){e.next=13;break}return console.warn("Viewport with Id ".concat(u," is not a BaseVolumeViewport. Cannot add volume to this viewport.")),e.abrupt("return");case 13:e.next=5;break;case 15:e.next=20;break;case 17:e.prev=17,e.t0=e.catch(3),o.e(e.t0);case 20:return e.prev=20,o.f(),e.finish(20);case 23:return c=n.map(function(){var e=re(ie().mark((function e(n){var o;return ie().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return o=t.getViewport(n),e.next=3,o.addVolumes(r,i,a);case 3:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}()),e.next=26,Promise.all(c);case 26:return e.abrupt("return");case 27:case"end":return e.stop()}}),e,null,[[3,17,20,23]])}))),xs.apply(this,arguments)}var Ds=function(e,t,r){return xs.apply(this,arguments)}}(),Q}()}));
|
|
1
|
+
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("detect-gpu"),require("@kitware/vtk.js/Rendering/Core/VolumeMapper/Constants"),require("@kitware/vtk.js/Rendering/Core/ColorTransferFunction"),require("@kitware/vtk.js/Rendering/Core/ColorTransferFunction/ColorMaps"),require("@kitware/vtk.js/Common/DataModel/PiecewiseFunction"),require("@kitware/vtk.js/Common/Core/MatrixBuilder"),require("@kitware/vtk.js/Common/Core/Math"),require("@kitware/vtk.js/Common/DataModel/Plane"),require("gl-matrix"),require("lodash.clonedeep"),require("@kitware/vtk.js/macros"),require("@kitware/vtk.js/Rendering/Core/Camera"),require("@kitware/vtk.js/Rendering/Profiles/Volume"),require("@kitware/vtk.js/Common/DataModel/ImageData"),require("@kitware/vtk.js/Common/Core/DataArray"),require("@kitware/vtk.js/Rendering/OpenGL/Texture"),require("@kitware/vtk.js/Common/Core/HalfFloat"),require("@kitware/vtk.js/Rendering/Core/Volume"),require("@kitware/vtk.js/Rendering/Core/VolumeMapper"),require("@kitware/vtk.js/Rendering/Core/ImageMapper"),require("@kitware/vtk.js/Rendering/Core/ImageSlice"),require("@kitware/vtk.js/Rendering/Core/Renderer"),require("@kitware/vtk.js/Rendering/Core/RenderWindow"),require("@kitware/vtk.js/Rendering/Core/RenderWindowInteractor"),require("@kitware/vtk.js/Common/Core/Points"),require("@kitware/vtk.js/Common/DataModel/PolyData"),require("@kitware/vtk.js/Rendering/Core/Actor"),require("@kitware/vtk.js/Rendering/Core/Mapper"),require("@kitware/vtk.js/Rendering/OpenGL/RenderWindow"),require("@kitware/vtk.js/Rendering/OpenGL/Actor"),require("@kitware/vtk.js/Rendering/OpenGL/Actor2D"),require("@kitware/vtk.js/Rendering/OpenGL/Camera"),require("@kitware/vtk.js/Rendering/OpenGL/Glyph3DMapper"),require("@kitware/vtk.js/Rendering/OpenGL/ImageMapper"),require("@kitware/vtk.js/Rendering/OpenGL/ImageSlice"),require("@kitware/vtk.js/Rendering/OpenGL/PixelSpaceCallbackMapper"),require("@kitware/vtk.js/Rendering/OpenGL/PolyDataMapper"),require("@kitware/vtk.js/Rendering/OpenGL/Renderer"),require("@kitware/vtk.js/Rendering/OpenGL/Skybox"),require("@kitware/vtk.js/Rendering/OpenGL/SphereMapper"),require("@kitware/vtk.js/Rendering/OpenGL/StickMapper"),require("@kitware/vtk.js/Rendering/OpenGL/Volume"),require("@kitware/vtk.js/Rendering/OpenGL/VolumeMapper"),require("@kitware/vtk.js/Rendering/SceneGraph/ViewNodeFactory"),require("@kitware/vtk.js/Rendering/OpenGL/Texture/Constants"),require("@kitware/vtk.js/Common/Core/DataArray/Constants"),require("@kitware/vtk.js/Rendering/Core/Property/Constants"),require("@kitware/vtk.js/Rendering/Profiles/Geometry")):"function"==typeof define&&define.amd?define(["detect-gpu","@kitware/vtk.js/Rendering/Core/VolumeMapper/Constants","@kitware/vtk.js/Rendering/Core/ColorTransferFunction","@kitware/vtk.js/Rendering/Core/ColorTransferFunction/ColorMaps","@kitware/vtk.js/Common/DataModel/PiecewiseFunction","@kitware/vtk.js/Common/Core/MatrixBuilder","@kitware/vtk.js/Common/Core/Math","@kitware/vtk.js/Common/DataModel/Plane","gl-matrix","lodash.clonedeep","@kitware/vtk.js/macros","@kitware/vtk.js/Rendering/Core/Camera","@kitware/vtk.js/Rendering/Profiles/Volume","@kitware/vtk.js/Common/DataModel/ImageData","@kitware/vtk.js/Common/Core/DataArray","@kitware/vtk.js/Rendering/OpenGL/Texture","@kitware/vtk.js/Common/Core/HalfFloat","@kitware/vtk.js/Rendering/Core/Volume","@kitware/vtk.js/Rendering/Core/VolumeMapper","@kitware/vtk.js/Rendering/Core/ImageMapper","@kitware/vtk.js/Rendering/Core/ImageSlice","@kitware/vtk.js/Rendering/Core/Renderer","@kitware/vtk.js/Rendering/Core/RenderWindow","@kitware/vtk.js/Rendering/Core/RenderWindowInteractor","@kitware/vtk.js/Common/Core/Points","@kitware/vtk.js/Common/DataModel/PolyData","@kitware/vtk.js/Rendering/Core/Actor","@kitware/vtk.js/Rendering/Core/Mapper","@kitware/vtk.js/Rendering/OpenGL/RenderWindow","@kitware/vtk.js/Rendering/OpenGL/Actor","@kitware/vtk.js/Rendering/OpenGL/Actor2D","@kitware/vtk.js/Rendering/OpenGL/Camera","@kitware/vtk.js/Rendering/OpenGL/Glyph3DMapper","@kitware/vtk.js/Rendering/OpenGL/ImageMapper","@kitware/vtk.js/Rendering/OpenGL/ImageSlice","@kitware/vtk.js/Rendering/OpenGL/PixelSpaceCallbackMapper","@kitware/vtk.js/Rendering/OpenGL/PolyDataMapper","@kitware/vtk.js/Rendering/OpenGL/Renderer","@kitware/vtk.js/Rendering/OpenGL/Skybox","@kitware/vtk.js/Rendering/OpenGL/SphereMapper","@kitware/vtk.js/Rendering/OpenGL/StickMapper","@kitware/vtk.js/Rendering/OpenGL/Volume","@kitware/vtk.js/Rendering/OpenGL/VolumeMapper","@kitware/vtk.js/Rendering/SceneGraph/ViewNodeFactory","@kitware/vtk.js/Rendering/OpenGL/Texture/Constants","@kitware/vtk.js/Common/Core/DataArray/Constants","@kitware/vtk.js/Rendering/Core/Property/Constants","@kitware/vtk.js/Rendering/Profiles/Geometry"],t):"object"==typeof exports?exports.cornerstone3D=t(require("detect-gpu"),require("@kitware/vtk.js/Rendering/Core/VolumeMapper/Constants"),require("@kitware/vtk.js/Rendering/Core/ColorTransferFunction"),require("@kitware/vtk.js/Rendering/Core/ColorTransferFunction/ColorMaps"),require("@kitware/vtk.js/Common/DataModel/PiecewiseFunction"),require("@kitware/vtk.js/Common/Core/MatrixBuilder"),require("@kitware/vtk.js/Common/Core/Math"),require("@kitware/vtk.js/Common/DataModel/Plane"),require("gl-matrix"),require("lodash.clonedeep"),require("@kitware/vtk.js/macros"),require("@kitware/vtk.js/Rendering/Core/Camera"),require("@kitware/vtk.js/Rendering/Profiles/Volume"),require("@kitware/vtk.js/Common/DataModel/ImageData"),require("@kitware/vtk.js/Common/Core/DataArray"),require("@kitware/vtk.js/Rendering/OpenGL/Texture"),require("@kitware/vtk.js/Common/Core/HalfFloat"),require("@kitware/vtk.js/Rendering/Core/Volume"),require("@kitware/vtk.js/Rendering/Core/VolumeMapper"),require("@kitware/vtk.js/Rendering/Core/ImageMapper"),require("@kitware/vtk.js/Rendering/Core/ImageSlice"),require("@kitware/vtk.js/Rendering/Core/Renderer"),require("@kitware/vtk.js/Rendering/Core/RenderWindow"),require("@kitware/vtk.js/Rendering/Core/RenderWindowInteractor"),require("@kitware/vtk.js/Common/Core/Points"),require("@kitware/vtk.js/Common/DataModel/PolyData"),require("@kitware/vtk.js/Rendering/Core/Actor"),require("@kitware/vtk.js/Rendering/Core/Mapper"),require("@kitware/vtk.js/Rendering/OpenGL/RenderWindow"),require("@kitware/vtk.js/Rendering/OpenGL/Actor"),require("@kitware/vtk.js/Rendering/OpenGL/Actor2D"),require("@kitware/vtk.js/Rendering/OpenGL/Camera"),require("@kitware/vtk.js/Rendering/OpenGL/Glyph3DMapper"),require("@kitware/vtk.js/Rendering/OpenGL/ImageMapper"),require("@kitware/vtk.js/Rendering/OpenGL/ImageSlice"),require("@kitware/vtk.js/Rendering/OpenGL/PixelSpaceCallbackMapper"),require("@kitware/vtk.js/Rendering/OpenGL/PolyDataMapper"),require("@kitware/vtk.js/Rendering/OpenGL/Renderer"),require("@kitware/vtk.js/Rendering/OpenGL/Skybox"),require("@kitware/vtk.js/Rendering/OpenGL/SphereMapper"),require("@kitware/vtk.js/Rendering/OpenGL/StickMapper"),require("@kitware/vtk.js/Rendering/OpenGL/Volume"),require("@kitware/vtk.js/Rendering/OpenGL/VolumeMapper"),require("@kitware/vtk.js/Rendering/SceneGraph/ViewNodeFactory"),require("@kitware/vtk.js/Rendering/OpenGL/Texture/Constants"),require("@kitware/vtk.js/Common/Core/DataArray/Constants"),require("@kitware/vtk.js/Rendering/Core/Property/Constants"),require("@kitware/vtk.js/Rendering/Profiles/Geometry")):e.cornerstone3D=t(e.window,e["@kitware/vtk.js/Rendering/Core/VolumeMapper/Constants"],e["@kitware/vtk.js/Rendering/Core/ColorTransferFunction"],e["@kitware/vtk.js/Rendering/Core/ColorTransferFunction/ColorMaps"],e["@kitware/vtk.js/Common/DataModel/PiecewiseFunction"],e["@kitware/vtk.js/Common/Core/MatrixBuilder"],e["@kitware/vtk.js/Common/Core/Math"],e["@kitware/vtk.js/Common/DataModel/Plane"],e.window,e.window,e["@kitware/vtk.js/macros"],e["@kitware/vtk.js/Rendering/Core/Camera"],e["@kitware/vtk.js/Rendering/Profiles/Volume"],e["@kitware/vtk.js/Common/DataModel/ImageData"],e["@kitware/vtk.js/Common/Core/DataArray"],e["@kitware/vtk.js/Rendering/OpenGL/Texture"],e["@kitware/vtk.js/Common/Core/HalfFloat"],e["@kitware/vtk.js/Rendering/Core/Volume"],e["@kitware/vtk.js/Rendering/Core/VolumeMapper"],e["@kitware/vtk.js/Rendering/Core/ImageMapper"],e["@kitware/vtk.js/Rendering/Core/ImageSlice"],e["@kitware/vtk.js/Rendering/Core/Renderer"],e["@kitware/vtk.js/Rendering/Core/RenderWindow"],e["@kitware/vtk.js/Rendering/Core/RenderWindowInteractor"],e["@kitware/vtk.js/Common/Core/Points"],e["@kitware/vtk.js/Common/DataModel/PolyData"],e["@kitware/vtk.js/Rendering/Core/Actor"],e["@kitware/vtk.js/Rendering/Core/Mapper"],e["@kitware/vtk.js/Rendering/OpenGL/RenderWindow"],e["@kitware/vtk.js/Rendering/OpenGL/Actor"],e["@kitware/vtk.js/Rendering/OpenGL/Actor2D"],e["@kitware/vtk.js/Rendering/OpenGL/Camera"],e["@kitware/vtk.js/Rendering/OpenGL/Glyph3DMapper"],e["@kitware/vtk.js/Rendering/OpenGL/ImageMapper"],e["@kitware/vtk.js/Rendering/OpenGL/ImageSlice"],e["@kitware/vtk.js/Rendering/OpenGL/PixelSpaceCallbackMapper"],e["@kitware/vtk.js/Rendering/OpenGL/PolyDataMapper"],e["@kitware/vtk.js/Rendering/OpenGL/Renderer"],e["@kitware/vtk.js/Rendering/OpenGL/Skybox"],e["@kitware/vtk.js/Rendering/OpenGL/SphereMapper"],e["@kitware/vtk.js/Rendering/OpenGL/StickMapper"],e["@kitware/vtk.js/Rendering/OpenGL/Volume"],e["@kitware/vtk.js/Rendering/OpenGL/VolumeMapper"],e["@kitware/vtk.js/Rendering/SceneGraph/ViewNodeFactory"],e["@kitware/vtk.js/Rendering/OpenGL/Texture/Constants"],e["@kitware/vtk.js/Common/Core/DataArray/Constants"],e["@kitware/vtk.js/Rendering/Core/Property/Constants"],e["@kitware/vtk.js/Rendering/Profiles/Geometry"])}(self,((e,t,i,n,r,a,o,s,l,c,d,h,u,g,m,p,v,f,w,I,C,E,y,R,P,A,T,b,O,S,D,_,k,M,x,V,L,U,N,F,j,G,W,B,q,z,H,K)=>(()=>{"use strict";var Y={785:e=>{e.exports=m},948:e=>{e.exports=z},903:e=>{e.exports=v},807:e=>{e.exports=o},847:e=>{e.exports=a},348:e=>{e.exports=P},283:e=>{e.exports=g},441:e=>{e.exports=r},864:e=>{e.exports=s},70:e=>{e.exports=A},474:e=>{e.exports=T},821:e=>{e.exports=h},795:e=>{e.exports=i},38:e=>{e.exports=n},896:e=>{e.exports=I},861:e=>{e.exports=C},610:e=>{e.exports=b},478:e=>{e.exports=H},329:e=>{e.exports=y},673:e=>{e.exports=R},281:e=>{e.exports=E},739:e=>{e.exports=f},9:e=>{e.exports=w},468:e=>{e.exports=t},643:e=>{e.exports=S},128:e=>{e.exports=D},664:e=>{e.exports=_},973:e=>{e.exports=k},394:e=>{e.exports=M},582:e=>{e.exports=x},482:e=>{e.exports=V},343:e=>{e.exports=L},21:e=>{e.exports=O},363:e=>{e.exports=U},982:e=>{e.exports=N},130:e=>{e.exports=F},298:e=>{e.exports=j},953:e=>{e.exports=p},395:e=>{e.exports=q},398:e=>{e.exports=G},388:e=>{e.exports=W},914:e=>{e.exports=K},215:e=>{e.exports=u},120:e=>{e.exports=B},197:e=>{e.exports=d},199:t=>{t.exports=e},976:e=>{e.exports=l},573:e=>{e.exports=c}},X={};function Z(e){var t=X[e];if(void 0!==t)return t.exports;var i=X[e]={exports:{}};return Y[e](i,i.exports,Z),i.exports}Z.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return Z.d(t,{a:t}),t},Z.d=(e,t)=>{for(var i in t)Z.o(t,i)&&!Z.o(e,i)&&Object.defineProperty(e,i,{enumerable:!0,get:t[i]})},Z.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),Z.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var Q={};return(()=>{Z.r(Q),Z.d(Q,{BaseVolumeViewport:()=>Ir,CONSTANTS:()=>i,EVENTS:()=>m,Enums:()=>t,ImageVolume:()=>Et,ProgressiveRetrieveImages:()=>fa,RenderingEngine:()=>Pa,Settings:()=>xa,StackViewport:()=>wa,VideoViewport:()=>Ea,Viewport:()=>dr,VolumeViewport:()=>Cr,VolumeViewport3D:()=>Ia,addVolumesToViewports:()=>Mo,cache:()=>Cn,createVolumeActor:()=>ui,createVolumeMapper:()=>Gt,eventTarget:()=>yt,geometryLoader:()=>d,getConfiguration:()=>gt,getEnabledElement:()=>ba,getEnabledElementByIds:()=>Oa,getEnabledElements:()=>Sa,getOrCreateCanvas:()=>pi,getRenderingEngine:()=>Ce,getRenderingEngines:()=>Ee,getShouldUseCPURendering:()=>lt,getShouldUseSharedArrayBuffer:()=>ht,getWebWorkerManager:()=>vt,imageLoadPoolManager:()=>Bt,imageLoader:()=>r,imageRetrievalPoolManager:()=>Ta,init:()=>rt,isCornerstoneInitialized:()=>ut,metaData:()=>a,registerImageLoader:()=>$t,requestPoolManager:()=>Bt,resetUseCPURendering:()=>st,resetUseSharedArrayBuffer:()=>dt,setConfiguration:()=>mt,setPreferSizeOverAccuracy:()=>ot,setUseCPURendering:()=>at,setUseSharedArrayBuffer:()=>ct,setVolumesForViewports:()=>ko,triggerEvent:()=>Rt,utilities:()=>u,volumeLoader:()=>n});var e={};Z.r(e),Z.d(e,{SpeedUnit:()=>B});var t={};Z.r(t),Z.d(t,{BlendModes:()=>A,CalibrationTypes:()=>N,ContourType:()=>M,DynamicOperatorType:()=>U,Events:()=>m,GeometryType:()=>_,ImageQualityStatus:()=>W,InterpolationType:()=>C,MetadataModules:()=>z,OrientationAxis:()=>b,RequestType:()=>v,SharedArrayBufferModes:()=>S,VOILUTFunctionType:()=>V,VideoViewport:()=>e,ViewportStatus:()=>j,ViewportType:()=>w});var i={};Z.r(i),Z.d(i,{CPU_COLORMAPS:()=>H,EPSILON:()=>X,MPR_CAMERA_VALUES:()=>J,RENDERING_DEFAULTS:()=>Y,VIEWPORT_PRESETS:()=>$});var n={};Z.r(n),Z.d(n,{createAndCacheDerivedVolume:()=>_t,createAndCacheVolume:()=>Dt,createLocalVolume:()=>kt,getVolumeLoaderSchemes:()=>xt,loadVolume:()=>St,registerUnknownVolumeLoader:()=>Vt,registerVolumeLoader:()=>Mt});var r={};Z.r(r),Z.d(r,{cancelLoadAll:()=>Jt,cancelLoadImage:()=>Zt,cancelLoadImages:()=>Qt,loadAndCacheImage:()=>Yt,loadAndCacheImages:()=>Xt,loadImage:()=>Kt,registerImageLoader:()=>$t,registerUnknownImageLoader:()=>ei,unregisterAllImageLoaders:()=>ti});var a={};Z.r(a),Z.d(a,{addProvider:()=>ni,get:()=>oi,removeAllProviders:()=>ai,removeProvider:()=>ri});var o={};Z.r(o),Z.d(o,{toLowHighRange:()=>li,toWindowLevel:()=>si});var s={};Z.r(s),Z.d(s,{getColormap:()=>xn,getColormapNames:()=>Vn,registerColormap:()=>Mn});var l={};Z.r(l),Z.d(l,{linePlaneIntersection:()=>tr,planeDistanceToPoint:()=>rr,planeEquation:()=>ir,threePlaneIntersection:()=>nr});var c={};Z.r(c),Z.d(c,{getTransferFunctionNodes:()=>fr,setTransferFunctionNodes:()=>wr});var d={};Z.r(d),Z.d(d,{createAndCacheGeometry:()=>Wa});var h={};Z.r(h),Z.d(h,{MultiTargetEventListenerManager:()=>za,TargetEventListeners:()=>qa});var u={};Z.r(u),Z.d(u,{ProgressiveIterator:()=>ua,actorIsA:()=>Rn,applyPreset:()=>Nn,calculateViewportsSpatialRegistration:()=>Po,calibratedPixelSpacingMetadataProvider:()=>$a,clamp:()=>Zr,colormap:()=>s,createFloat32SharedArray:()=>io,createInt16SharedArray:()=>ro,createLinearRGBTransferFunction:()=>sa,createSigmoidRGBTransferFunction:()=>Un,createUint16SharedArray:()=>no,createUint8SharedArray:()=>to,decimate:()=>ga,deepMerge:()=>be,eventListener:()=>h,getClosestImageId:()=>Pn,getClosestStackImageIndexForPoint:()=>Co,getImageLegacy:()=>So,getImageSliceDataForVolumeViewport:()=>Qn,getMinMax:()=>ci,getRuntimeId:()=>Qa,getScalarDataType:()=>Oo,getScalingParameters:()=>bo,getSliceRange:()=>Hn,getSpacingInNormalDirection:()=>En,getTargetVolumeAndSpacingInNormalDir:()=>Xn,getViewportImageCornersInWorld:()=>Ao,getViewportModality:()=>ao,getViewportsWithImageURI:()=>Io,getViewportsWithVolumeId:()=>lo,getVoiFromSigmoidRGBTransferFunction:()=>_n,getVolumeActorCorners:()=>Gn,getVolumeSliceRangeInfo:()=>vo,getVolumeViewportScrollInfo:()=>fo,getVolumeViewportsContainingSameVolumes:()=>so,hasNaNValues:()=>cr,imageIdToURI:()=>de,imageRetrieveMetadataProvider:()=>Or,imageToWorldCoords:()=>po,indexWithinDimensions:()=>oo,invertRgbTransferFunction:()=>Ln,isEqual:()=>lr,isImageActor:()=>yn,isOpposite:()=>eo,isPTPrescaledWithSUV:()=>co,isVideoTransferSyntax:()=>_o,loadImageToCanvas:()=>go,planar:()=>l,renderToCanvasCPU:()=>uo,renderToCanvasGPU:()=>ho,scaleRgbTransferFunction:()=>Ha,snapFocalPointToSlice:()=>wo,spatialRegistrationMetadataProvider:()=>Ro,transferFunctionUtils:()=>c,transformWorldToIndex:()=>vr,triggerEvent:()=>Rt,uuidv4:()=>Ye,windowLevel:()=>o,worldToImageCoords:()=>mo});var g=function(e){return e.CACHE_SIZE_EXCEEDED="CACHE_SIZE_EXCEEDED",e.IMAGE_LOAD_ERROR="IMAGE_LOAD_ERROR",e.CAMERA_MODIFIED="CORNERSTONE_CAMERA_MODIFIED",e.CAMERA_RESET="CORNERSTONE_CAMERA_RESET",e.VOI_MODIFIED="CORNERSTONE_VOI_MODIFIED",e.DISPLAY_AREA_MODIFIED="CORNERSTONE_DISPLAY_AREA_MODIFIED",e.ELEMENT_DISABLED="CORNERSTONE_ELEMENT_DISABLED",e.ELEMENT_ENABLED="CORNERSTONE_ELEMENT_ENABLED",e.IMAGE_RENDERED="CORNERSTONE_IMAGE_RENDERED",e.IMAGE_VOLUME_MODIFIED="CORNERSTONE_IMAGE_VOLUME_MODIFIED",e.IMAGE_VOLUME_LOADING_COMPLETED="CORNERSTONE_IMAGE_VOLUME_LOADING_COMPLETED",e.IMAGE_LOADED="CORNERSTONE_IMAGE_LOADED",e.IMAGE_RETRIEVAL_STAGE="CORNERSTONE_IMAGE_RETRIEVAL_STAGE",e.IMAGE_LOAD_FAILED="CORNERSTONE_IMAGE_LOAD_FAILED",e.VOLUME_VIEWPORT_NEW_VOLUME="CORNERSTONE_VOLUME_VIEWPORT_NEW_VOLUME",e.VOLUME_LOADED="CORNERSTONE_VOLUME_LOADED",e.VOLUME_LOADED_FAILED="CORNERSTONE_VOLUME_LOADED_FAILED",e.IMAGE_CACHE_IMAGE_ADDED="CORNERSTONE_IMAGE_CACHE_IMAGE_ADDED",e.IMAGE_CACHE_IMAGE_REMOVED="CORNERSTONE_IMAGE_CACHE_IMAGE_REMOVED",e.VOLUME_CACHE_VOLUME_ADDED="CORNERSTONE_VOLUME_CACHE_VOLUME_ADDED",e.VOLUME_CACHE_VOLUME_REMOVED="CORNERSTONE_VOLUME_CACHE_VOLUME_REMOVED",e.STACK_NEW_IMAGE="CORNERSTONE_STACK_NEW_IMAGE",e.VOLUME_NEW_IMAGE="CORNERSTONE_VOLUME_NEW_IMAGE",e.PRE_STACK_NEW_IMAGE="CORNERSTONE_PRE_STACK_NEW_IMAGE",e.IMAGE_SPACING_CALIBRATED="CORNERSTONE_IMAGE_SPACING_CALIBRATED",e.STACK_VIEWPORT_NEW_STACK="CORNERSTONE_STACK_VIEWPORT_NEW_STACK",e.STACK_VIEWPORT_SCROLL="CORNERSTONE_STACK_VIEWPORT_SCROLL",e.GEOMETRY_CACHE_GEOMETRY_ADDED="CORNERSTONE_GEOMETRY_CACHE_GEOMETRY_ADDED",e.VOLUME_SCROLL_OUT_OF_BOUNDS="CORNERSTONE_VOLUME_SCROLL_OUT_OF_BOUNDS",e.CLIPPING_PLANES_UPDATED="CORNERSTONE_CLIPPING_PLANES_UPDATED",e}(g||{});const m=g;var p=function(e){return e.Interaction="interaction",e.Thumbnail="thumbnail",e.Prefetch="prefetch",e.Compute="compute",e}(p||{});const v=p;var f=function(e){return e.STACK="stack",e.ORTHOGRAPHIC="orthographic",e.PERSPECTIVE="perspective",e.VOLUME_3D="volume3d",e.VIDEO="video",e}(f||{});const w=f;var I=function(e){return e[e.NEAREST=0]="NEAREST",e[e.LINEAR=1]="LINEAR",e[e.FAST_LINEAR=2]="FAST_LINEAR",e}(I||{});const C=I;var E=Z(468),y=Z.n(E);const{BlendMode:R}=y();var P=function(e){return e[e.COMPOSITE=R.COMPOSITE_BLEND]="COMPOSITE",e[e.MAXIMUM_INTENSITY_BLEND=R.MAXIMUM_INTENSITY_BLEND]="MAXIMUM_INTENSITY_BLEND",e[e.MINIMUM_INTENSITY_BLEND=R.MINIMUM_INTENSITY_BLEND]="MINIMUM_INTENSITY_BLEND",e[e.AVERAGE_INTENSITY_BLEND=R.AVERAGE_INTENSITY_BLEND]="AVERAGE_INTENSITY_BLEND",e}(P||{});const A=P;var T=function(e){return e.AXIAL="axial",e.CORONAL="coronal",e.SAGITTAL="sagittal",e.ACQUISITION="acquisition",e}(T||{});const b=T;var O=function(e){return e.TRUE="true",e.FALSE="false",e.AUTO="auto",e}(O||{});const S=O;var D=function(e){return e.CONTOUR="contour",e.SURFACE="Surface",e}(D||{});const _=D;var k=function(e){return e.CLOSED_PLANAR="CLOSED_PLANAR",e.OPEN_PLANAR="OPEN_PLANAR",e}(k||{});const M=k;var x=function(e){return e.LINEAR="LINEAR",e.SAMPLED_SIGMOID="SIGMOID",e}(x||{});const V=x;var L=function(e){return e.SUM="SUM",e.AVERAGE="AVERAGE",e.SUBTRACT="SUBTRACT",e}(L||{});const U=L,N=function(e){return e.NOT_APPLICABLE="",e.ERMF="ERMF",e.USER="User",e.PROJECTION="Proj",e.REGION="Region",e.ERROR="Error",e.UNCALIBRATED="Uncalibrated",e}({});var F=function(e){return e.NO_DATA="noData",e.LOADING="loading",e.PRE_RENDER="preRender",e.RESIZE="resize",e.RENDERED="rendered",e}(F||{});const j=F;var G=function(e){return e[e.FAR_REPLICATE=1]="FAR_REPLICATE",e[e.ADJACENT_REPLICATE=3]="ADJACENT_REPLICATE",e[e.SUBRESOLUTION=6]="SUBRESOLUTION",e[e.LOSSY=7]="LOSSY",e[e.FULL_RESOLUTION=8]="FULL_RESOLUTION",e}(G||{});const W=G;var B=function(e){return e.FRAME="f",e.SECOND="s",e}(B||{}),q=function(e){return e.CINE="cineModule",e.IMAGE_URL="imageUrlModule",e.GENERAL_SERIES="generalSeriesModule",e.PATIENT_STUDY="patientStudyModule",e.NM_MULTIFRAME_GEOMETRY="nmMultiframeGeometryModule",e.IMAGE_PLANE="imagePlaneModule",e.IMAGE_PIXEL="imagePixelModule",e.MULTIFRAME="multiframeModule",e}(q||{});const z=q,H={hotIron:{name:"Hot Iron",numOfColors:256,colors:[[0,0,0,255],[2,0,0,255],[4,0,0,255],[6,0,0,255],[8,0,0,255],[10,0,0,255],[12,0,0,255],[14,0,0,255],[16,0,0,255],[18,0,0,255],[20,0,0,255],[22,0,0,255],[24,0,0,255],[26,0,0,255],[28,0,0,255],[30,0,0,255],[32,0,0,255],[34,0,0,255],[36,0,0,255],[38,0,0,255],[40,0,0,255],[42,0,0,255],[44,0,0,255],[46,0,0,255],[48,0,0,255],[50,0,0,255],[52,0,0,255],[54,0,0,255],[56,0,0,255],[58,0,0,255],[60,0,0,255],[62,0,0,255],[64,0,0,255],[66,0,0,255],[68,0,0,255],[70,0,0,255],[72,0,0,255],[74,0,0,255],[76,0,0,255],[78,0,0,255],[80,0,0,255],[82,0,0,255],[84,0,0,255],[86,0,0,255],[88,0,0,255],[90,0,0,255],[92,0,0,255],[94,0,0,255],[96,0,0,255],[98,0,0,255],[100,0,0,255],[102,0,0,255],[104,0,0,255],[106,0,0,255],[108,0,0,255],[110,0,0,255],[112,0,0,255],[114,0,0,255],[116,0,0,255],[118,0,0,255],[120,0,0,255],[122,0,0,255],[124,0,0,255],[126,0,0,255],[128,0,0,255],[130,0,0,255],[132,0,0,255],[134,0,0,255],[136,0,0,255],[138,0,0,255],[140,0,0,255],[142,0,0,255],[144,0,0,255],[146,0,0,255],[148,0,0,255],[150,0,0,255],[152,0,0,255],[154,0,0,255],[156,0,0,255],[158,0,0,255],[160,0,0,255],[162,0,0,255],[164,0,0,255],[166,0,0,255],[168,0,0,255],[170,0,0,255],[172,0,0,255],[174,0,0,255],[176,0,0,255],[178,0,0,255],[180,0,0,255],[182,0,0,255],[184,0,0,255],[186,0,0,255],[188,0,0,255],[190,0,0,255],[192,0,0,255],[194,0,0,255],[196,0,0,255],[198,0,0,255],[200,0,0,255],[202,0,0,255],[204,0,0,255],[206,0,0,255],[208,0,0,255],[210,0,0,255],[212,0,0,255],[214,0,0,255],[216,0,0,255],[218,0,0,255],[220,0,0,255],[222,0,0,255],[224,0,0,255],[226,0,0,255],[228,0,0,255],[230,0,0,255],[232,0,0,255],[234,0,0,255],[236,0,0,255],[238,0,0,255],[240,0,0,255],[242,0,0,255],[244,0,0,255],[246,0,0,255],[248,0,0,255],[250,0,0,255],[252,0,0,255],[254,0,0,255],[255,0,0,255],[255,2,0,255],[255,4,0,255],[255,6,0,255],[255,8,0,255],[255,10,0,255],[255,12,0,255],[255,14,0,255],[255,16,0,255],[255,18,0,255],[255,20,0,255],[255,22,0,255],[255,24,0,255],[255,26,0,255],[255,28,0,255],[255,30,0,255],[255,32,0,255],[255,34,0,255],[255,36,0,255],[255,38,0,255],[255,40,0,255],[255,42,0,255],[255,44,0,255],[255,46,0,255],[255,48,0,255],[255,50,0,255],[255,52,0,255],[255,54,0,255],[255,56,0,255],[255,58,0,255],[255,60,0,255],[255,62,0,255],[255,64,0,255],[255,66,0,255],[255,68,0,255],[255,70,0,255],[255,72,0,255],[255,74,0,255],[255,76,0,255],[255,78,0,255],[255,80,0,255],[255,82,0,255],[255,84,0,255],[255,86,0,255],[255,88,0,255],[255,90,0,255],[255,92,0,255],[255,94,0,255],[255,96,0,255],[255,98,0,255],[255,100,0,255],[255,102,0,255],[255,104,0,255],[255,106,0,255],[255,108,0,255],[255,110,0,255],[255,112,0,255],[255,114,0,255],[255,116,0,255],[255,118,0,255],[255,120,0,255],[255,122,0,255],[255,124,0,255],[255,126,0,255],[255,128,4,255],[255,130,8,255],[255,132,12,255],[255,134,16,255],[255,136,20,255],[255,138,24,255],[255,140,28,255],[255,142,32,255],[255,144,36,255],[255,146,40,255],[255,148,44,255],[255,150,48,255],[255,152,52,255],[255,154,56,255],[255,156,60,255],[255,158,64,255],[255,160,68,255],[255,162,72,255],[255,164,76,255],[255,166,80,255],[255,168,84,255],[255,170,88,255],[255,172,92,255],[255,174,96,255],[255,176,100,255],[255,178,104,255],[255,180,108,255],[255,182,112,255],[255,184,116,255],[255,186,120,255],[255,188,124,255],[255,190,128,255],[255,192,132,255],[255,194,136,255],[255,196,140,255],[255,198,144,255],[255,200,148,255],[255,202,152,255],[255,204,156,255],[255,206,160,255],[255,208,164,255],[255,210,168,255],[255,212,172,255],[255,214,176,255],[255,216,180,255],[255,218,184,255],[255,220,188,255],[255,222,192,255],[255,224,196,255],[255,226,200,255],[255,228,204,255],[255,230,208,255],[255,232,212,255],[255,234,216,255],[255,236,220,255],[255,238,224,255],[255,240,228,255],[255,242,232,255],[255,244,236,255],[255,246,240,255],[255,248,244,255],[255,250,248,255],[255,252,252,255],[255,255,255,255]]},pet:{name:"PET",numColors:256,colors:[[0,0,0,255],[0,2,1,255],[0,4,3,255],[0,6,5,255],[0,8,7,255],[0,10,9,255],[0,12,11,255],[0,14,13,255],[0,16,15,255],[0,18,17,255],[0,20,19,255],[0,22,21,255],[0,24,23,255],[0,26,25,255],[0,28,27,255],[0,30,29,255],[0,32,31,255],[0,34,33,255],[0,36,35,255],[0,38,37,255],[0,40,39,255],[0,42,41,255],[0,44,43,255],[0,46,45,255],[0,48,47,255],[0,50,49,255],[0,52,51,255],[0,54,53,255],[0,56,55,255],[0,58,57,255],[0,60,59,255],[0,62,61,255],[0,65,63,255],[0,67,65,255],[0,69,67,255],[0,71,69,255],[0,73,71,255],[0,75,73,255],[0,77,75,255],[0,79,77,255],[0,81,79,255],[0,83,81,255],[0,85,83,255],[0,87,85,255],[0,89,87,255],[0,91,89,255],[0,93,91,255],[0,95,93,255],[0,97,95,255],[0,99,97,255],[0,101,99,255],[0,103,101,255],[0,105,103,255],[0,107,105,255],[0,109,107,255],[0,111,109,255],[0,113,111,255],[0,115,113,255],[0,117,115,255],[0,119,117,255],[0,121,119,255],[0,123,121,255],[0,125,123,255],[0,128,125,255],[1,126,127,255],[3,124,129,255],[5,122,131,255],[7,120,133,255],[9,118,135,255],[11,116,137,255],[13,114,139,255],[15,112,141,255],[17,110,143,255],[19,108,145,255],[21,106,147,255],[23,104,149,255],[25,102,151,255],[27,100,153,255],[29,98,155,255],[31,96,157,255],[33,94,159,255],[35,92,161,255],[37,90,163,255],[39,88,165,255],[41,86,167,255],[43,84,169,255],[45,82,171,255],[47,80,173,255],[49,78,175,255],[51,76,177,255],[53,74,179,255],[55,72,181,255],[57,70,183,255],[59,68,185,255],[61,66,187,255],[63,64,189,255],[65,63,191,255],[67,61,193,255],[69,59,195,255],[71,57,197,255],[73,55,199,255],[75,53,201,255],[77,51,203,255],[79,49,205,255],[81,47,207,255],[83,45,209,255],[85,43,211,255],[86,41,213,255],[88,39,215,255],[90,37,217,255],[92,35,219,255],[94,33,221,255],[96,31,223,255],[98,29,225,255],[100,27,227,255],[102,25,229,255],[104,23,231,255],[106,21,233,255],[108,19,235,255],[110,17,237,255],[112,15,239,255],[114,13,241,255],[116,11,243,255],[118,9,245,255],[120,7,247,255],[122,5,249,255],[124,3,251,255],[126,1,253,255],[128,0,255,255],[130,2,252,255],[132,4,248,255],[134,6,244,255],[136,8,240,255],[138,10,236,255],[140,12,232,255],[142,14,228,255],[144,16,224,255],[146,18,220,255],[148,20,216,255],[150,22,212,255],[152,24,208,255],[154,26,204,255],[156,28,200,255],[158,30,196,255],[160,32,192,255],[162,34,188,255],[164,36,184,255],[166,38,180,255],[168,40,176,255],[170,42,172,255],[171,44,168,255],[173,46,164,255],[175,48,160,255],[177,50,156,255],[179,52,152,255],[181,54,148,255],[183,56,144,255],[185,58,140,255],[187,60,136,255],[189,62,132,255],[191,64,128,255],[193,66,124,255],[195,68,120,255],[197,70,116,255],[199,72,112,255],[201,74,108,255],[203,76,104,255],[205,78,100,255],[207,80,96,255],[209,82,92,255],[211,84,88,255],[213,86,84,255],[215,88,80,255],[217,90,76,255],[219,92,72,255],[221,94,68,255],[223,96,64,255],[225,98,60,255],[227,100,56,255],[229,102,52,255],[231,104,48,255],[233,106,44,255],[235,108,40,255],[237,110,36,255],[239,112,32,255],[241,114,28,255],[243,116,24,255],[245,118,20,255],[247,120,16,255],[249,122,12,255],[251,124,8,255],[253,126,4,255],[255,128,0,255],[255,130,4,255],[255,132,8,255],[255,134,12,255],[255,136,16,255],[255,138,20,255],[255,140,24,255],[255,142,28,255],[255,144,32,255],[255,146,36,255],[255,148,40,255],[255,150,44,255],[255,152,48,255],[255,154,52,255],[255,156,56,255],[255,158,60,255],[255,160,64,255],[255,162,68,255],[255,164,72,255],[255,166,76,255],[255,168,80,255],[255,170,85,255],[255,172,89,255],[255,174,93,255],[255,176,97,255],[255,178,101,255],[255,180,105,255],[255,182,109,255],[255,184,113,255],[255,186,117,255],[255,188,121,255],[255,190,125,255],[255,192,129,255],[255,194,133,255],[255,196,137,255],[255,198,141,255],[255,200,145,255],[255,202,149,255],[255,204,153,255],[255,206,157,255],[255,208,161,255],[255,210,165,255],[255,212,170,255],[255,214,174,255],[255,216,178,255],[255,218,182,255],[255,220,186,255],[255,222,190,255],[255,224,194,255],[255,226,198,255],[255,228,202,255],[255,230,206,255],[255,232,210,255],[255,234,214,255],[255,236,218,255],[255,238,222,255],[255,240,226,255],[255,242,230,255],[255,244,234,255],[255,246,238,255],[255,248,242,255],[255,250,246,255],[255,252,250,255],[255,255,255,255]]},hotMetalBlue:{name:"Hot Metal Blue",numColors:256,colors:[[0,0,0,255],[0,0,2,255],[0,0,4,255],[0,0,6,255],[0,0,8,255],[0,0,10,255],[0,0,12,255],[0,0,14,255],[0,0,16,255],[0,0,17,255],[0,0,19,255],[0,0,21,255],[0,0,23,255],[0,0,25,255],[0,0,27,255],[0,0,29,255],[0,0,31,255],[0,0,33,255],[0,0,35,255],[0,0,37,255],[0,0,39,255],[0,0,41,255],[0,0,43,255],[0,0,45,255],[0,0,47,255],[0,0,49,255],[0,0,51,255],[0,0,53,255],[0,0,55,255],[0,0,57,255],[0,0,59,255],[0,0,61,255],[0,0,63,255],[0,0,65,255],[0,0,67,255],[0,0,69,255],[0,0,71,255],[0,0,73,255],[0,0,75,255],[0,0,77,255],[0,0,79,255],[0,0,81,255],[0,0,83,255],[0,0,84,255],[0,0,86,255],[0,0,88,255],[0,0,90,255],[0,0,92,255],[0,0,94,255],[0,0,96,255],[0,0,98,255],[0,0,100,255],[0,0,102,255],[0,0,104,255],[0,0,106,255],[0,0,108,255],[0,0,110,255],[0,0,112,255],[0,0,114,255],[0,0,116,255],[0,0,117,255],[0,0,119,255],[0,0,121,255],[0,0,123,255],[0,0,125,255],[0,0,127,255],[0,0,129,255],[0,0,131,255],[0,0,133,255],[0,0,135,255],[0,0,137,255],[0,0,139,255],[0,0,141,255],[0,0,143,255],[0,0,145,255],[0,0,147,255],[0,0,149,255],[0,0,151,255],[0,0,153,255],[0,0,155,255],[0,0,157,255],[0,0,159,255],[0,0,161,255],[0,0,163,255],[0,0,165,255],[0,0,167,255],[3,0,169,255],[6,0,171,255],[9,0,173,255],[12,0,175,255],[15,0,177,255],[18,0,179,255],[21,0,181,255],[24,0,183,255],[26,0,184,255],[29,0,186,255],[32,0,188,255],[35,0,190,255],[38,0,192,255],[41,0,194,255],[44,0,196,255],[47,0,198,255],[50,0,200,255],[52,0,197,255],[55,0,194,255],[57,0,191,255],[59,0,188,255],[62,0,185,255],[64,0,182,255],[66,0,179,255],[69,0,176,255],[71,0,174,255],[74,0,171,255],[76,0,168,255],[78,0,165,255],[81,0,162,255],[83,0,159,255],[85,0,156,255],[88,0,153,255],[90,0,150,255],[93,2,144,255],[96,4,138,255],[99,6,132,255],[102,8,126,255],[105,9,121,255],[108,11,115,255],[111,13,109,255],[114,15,103,255],[116,17,97,255],[119,19,91,255],[122,21,85,255],[125,23,79,255],[128,24,74,255],[131,26,68,255],[134,28,62,255],[137,30,56,255],[140,32,50,255],[143,34,47,255],[146,36,44,255],[149,38,41,255],[152,40,38,255],[155,41,35,255],[158,43,32,255],[161,45,29,255],[164,47,26,255],[166,49,24,255],[169,51,21,255],[172,53,18,255],[175,55,15,255],[178,56,12,255],[181,58,9,255],[184,60,6,255],[187,62,3,255],[190,64,0,255],[194,66,0,255],[198,68,0,255],[201,70,0,255],[205,72,0,255],[209,73,0,255],[213,75,0,255],[217,77,0,255],[221,79,0,255],[224,81,0,255],[228,83,0,255],[232,85,0,255],[236,87,0,255],[240,88,0,255],[244,90,0,255],[247,92,0,255],[251,94,0,255],[255,96,0,255],[255,98,3,255],[255,100,6,255],[255,102,9,255],[255,104,12,255],[255,105,15,255],[255,107,18,255],[255,109,21,255],[255,111,24,255],[255,113,26,255],[255,115,29,255],[255,117,32,255],[255,119,35,255],[255,120,38,255],[255,122,41,255],[255,124,44,255],[255,126,47,255],[255,128,50,255],[255,130,53,255],[255,132,56,255],[255,134,59,255],[255,136,62,255],[255,137,65,255],[255,139,68,255],[255,141,71,255],[255,143,74,255],[255,145,76,255],[255,147,79,255],[255,149,82,255],[255,151,85,255],[255,152,88,255],[255,154,91,255],[255,156,94,255],[255,158,97,255],[255,160,100,255],[255,162,103,255],[255,164,106,255],[255,166,109,255],[255,168,112,255],[255,169,115,255],[255,171,118,255],[255,173,121,255],[255,175,124,255],[255,177,126,255],[255,179,129,255],[255,181,132,255],[255,183,135,255],[255,184,138,255],[255,186,141,255],[255,188,144,255],[255,190,147,255],[255,192,150,255],[255,194,153,255],[255,196,156,255],[255,198,159,255],[255,200,162,255],[255,201,165,255],[255,203,168,255],[255,205,171,255],[255,207,174,255],[255,209,176,255],[255,211,179,255],[255,213,182,255],[255,215,185,255],[255,216,188,255],[255,218,191,255],[255,220,194,255],[255,222,197,255],[255,224,200,255],[255,226,203,255],[255,228,206,255],[255,229,210,255],[255,231,213,255],[255,233,216,255],[255,235,219,255],[255,237,223,255],[255,239,226,255],[255,240,229,255],[255,242,232,255],[255,244,236,255],[255,246,239,255],[255,248,242,255],[255,250,245,255],[255,251,249,255],[255,253,252,255],[255,255,255,255]]},pet20Step:{name:"PET 20 Step",numColors:256,colors:[[0,0,0,255],[0,0,0,255],[0,0,0,255],[0,0,0,255],[0,0,0,255],[0,0,0,255],[0,0,0,255],[0,0,0,255],[0,0,0,255],[0,0,0,255],[0,0,0,255],[0,0,0,255],[0,0,0,255],[96,0,80,255],[96,0,80,255],[96,0,80,255],[96,0,80,255],[96,0,80,255],[96,0,80,255],[96,0,80,255],[96,0,80,255],[96,0,80,255],[96,0,80,255],[96,0,80,255],[96,0,80,255],[96,0,80,255],[48,48,80,255],[48,48,80,255],[48,48,80,255],[48,48,80,255],[48,48,80,255],[48,48,80,255],[48,48,80,255],[48,48,80,255],[48,48,80,255],[48,48,80,255],[48,48,80,255],[48,48,80,255],[48,48,80,255],[48,48,112,255],[48,48,112,255],[48,48,112,255],[48,48,112,255],[48,48,112,255],[48,48,112,255],[48,48,112,255],[48,48,112,255],[48,48,112,255],[48,48,112,255],[48,48,112,255],[48,48,112,255],[80,80,128,255],[80,80,128,255],[80,80,128,255],[80,80,128,255],[80,80,128,255],[80,80,128,255],[80,80,128,255],[80,80,128,255],[80,80,128,255],[80,80,128,255],[80,80,128,255],[80,80,128,255],[80,80,128,255],[96,96,176,255],[96,96,176,255],[96,96,176,255],[96,96,176,255],[96,96,176,255],[96,96,176,255],[96,96,176,255],[96,96,176,255],[96,96,176,255],[96,96,176,255],[96,96,176,255],[96,96,176,255],[96,96,176,255],[112,112,192,255],[112,112,192,255],[112,112,192,255],[112,112,192,255],[112,112,192,255],[112,112,192,255],[112,112,192,255],[112,112,192,255],[112,112,192,255],[112,112,192,255],[112,112,192,255],[112,112,192,255],[112,112,192,255],[128,128,224,255],[128,128,224,255],[128,128,224,255],[128,128,224,255],[128,128,224,255],[128,128,224,255],[128,128,224,255],[128,128,224,255],[128,128,224,255],[128,128,224,255],[128,128,224,255],[128,128,224,255],[48,96,48,255],[48,96,48,255],[48,96,48,255],[48,96,48,255],[48,96,48,255],[48,96,48,255],[48,96,48,255],[48,96,48,255],[48,96,48,255],[48,96,48,255],[48,96,48,255],[48,96,48,255],[48,96,48,255],[48,144,48,255],[48,144,48,255],[48,144,48,255],[48,144,48,255],[48,144,48,255],[48,144,48,255],[48,144,48,255],[48,144,48,255],[48,144,48,255],[48,144,48,255],[48,144,48,255],[48,144,48,255],[48,144,48,255],[80,192,80,255],[80,192,80,255],[80,192,80,255],[80,192,80,255],[80,192,80,255],[80,192,80,255],[80,192,80,255],[80,192,80,255],[80,192,80,255],[80,192,80,255],[80,192,80,255],[80,192,80,255],[80,192,80,255],[64,224,64,255],[64,224,64,255],[64,224,64,255],[64,224,64,255],[64,224,64,255],[64,224,64,255],[64,224,64,255],[64,224,64,255],[64,224,64,255],[64,224,64,255],[64,224,64,255],[64,224,64,255],[224,224,80,255],[224,224,80,255],[224,224,80,255],[224,224,80,255],[224,224,80,255],[224,224,80,255],[224,224,80,255],[224,224,80,255],[224,224,80,255],[224,224,80,255],[224,224,80,255],[224,224,80,255],[224,224,80,255],[208,208,96,255],[208,208,96,255],[208,208,96,255],[208,208,96,255],[208,208,96,255],[208,208,96,255],[208,208,96,255],[208,208,96,255],[208,208,96,255],[208,208,96,255],[208,208,96,255],[208,208,96,255],[208,208,96,255],[208,176,64,255],[208,176,64,255],[208,176,64,255],[208,176,64,255],[208,176,64,255],[208,176,64,255],[208,176,64,255],[208,176,64,255],[208,176,64,255],[208,176,64,255],[208,176,64,255],[208,176,64,255],[208,176,64,255],[208,144,0,255],[208,144,0,255],[208,144,0,255],[208,144,0,255],[208,144,0,255],[208,144,0,255],[208,144,0,255],[208,144,0,255],[208,144,0,255],[208,144,0,255],[208,144,0,255],[208,144,0,255],[192,96,0,255],[192,96,0,255],[192,96,0,255],[192,96,0,255],[192,96,0,255],[192,96,0,255],[192,96,0,255],[192,96,0,255],[192,96,0,255],[192,96,0,255],[192,96,0,255],[192,96,0,255],[192,96,0,255],[176,48,0,255],[176,48,0,255],[176,48,0,255],[176,48,0,255],[176,48,0,255],[176,48,0,255],[176,48,0,255],[176,48,0,255],[176,48,0,255],[176,48,0,255],[176,48,0,255],[176,48,0,255],[176,48,0,255],[255,0,0,255],[255,0,0,255],[255,0,0,255],[255,0,0,255],[255,0,0,255],[255,0,0,255],[255,0,0,255],[255,0,0,255],[255,0,0,255],[255,0,0,255],[255,0,0,255],[255,0,0,255],[255,0,0,255],[255,255,255,255],[255,255,255,255],[255,255,255,255],[255,255,255,255],[255,255,255,255],[255,255,255,255],[255,255,255,255],[255,255,255,255],[255,255,255,255],[255,255,255,255],[255,255,255,255],[255,255,255,255],[255,255,255,255]]},gray:{name:"Gray",numColors:256,gamma:1,segmentedData:{red:[[0,0,0],[1,1,1]],green:[[0,0,0],[1,1,1]],blue:[[0,0,0],[1,1,1]]}},jet:{name:"Jet",numColors:256,gamma:1,segmentedData:{red:[[0,0,0],[.35,0,0],[.66,1,1],[.89,1,1],[1,.5,.5]],green:[[0,0,0],[.125,0,0],[.375,1,1],[.64,1,1],[.91,0,0],[1,0,0]],blue:[[0,.5,.5],[.11,1,1],[.34,1,1],[.65,0,0],[1,0,0]]}},hsv:{name:"HSV",numColors:256,gamma:1,segmentedData:{red:[[0,1,1],[.15873,1,1],[.174603,.96875,.96875],[.333333,.03125,.03125],[.349206,0,0],[.666667,0,0],[.68254,.03125,.03125],[.84127,.96875,.96875],[.857143,1,1],[1,1,1]],green:[[0,0,0],[.15873,.9375,.9375],[.174603,1,1],[.507937,1,1],[.666667,.0625,.0625],[.68254,0,0],[1,0,0]],blue:[[0,0,0],[.333333,0,0],[.349206,.0625,.0625],[.507937,1,1],[.84127,1,1],[.857143,.9375,.9375],[1,.09375,.09375]]}},hot:{name:"Hot",numColors:256,gamma:1,segmentedData:{red:[[0,.0416,.0416],[.365079,1,1],[1,1,1]],green:[[0,0,0],[.365079,0,0],[.746032,1,1],[1,1,1]],blue:[[0,0,0],[.746032,0,0],[1,1,1]]}},cool:{name:"Cool",numColors:256,gamma:1,segmentedData:{red:[[0,0,0],[1,1,1]],green:[[0,1,1],[1,0,0]],blue:[[0,1,1],[1,1,1]]}},spring:{name:"Spring",numColors:256,gamma:1,segmentedData:{red:[[0,1,1],[1,1,1]],green:[[0,0,0],[1,1,1]],blue:[[0,1,1],[1,0,0]]}},summer:{name:"Summer",numColors:256,gamma:1,segmentedData:{red:[[0,0,0],[1,1,1]],green:[[0,.5,.5],[1,1,1]],blue:[[0,.4,.4],[1,.4,.4]]}},autumn:{name:"Autumn",numColors:256,gamma:1,segmentedData:{red:[[0,1,1],[1,1,1]],green:[[0,0,0],[1,1,1]],blue:[[0,0,0],[1,0,0]]}},winter:{name:"Winter",numColors:256,gamma:1,segmentedData:{red:[[0,0,0],[1,0,0]],green:[[0,0,0],[1,1,1]],blue:[[0,1,1],[1,.5,.5]]}},bone:{name:"Bone",numColors:256,gamma:1,segmentedData:{red:[[0,0,0],[.746032,.652778,.652778],[1,1,1]],green:[[0,0,0],[.365079,.319444,.319444],[.746032,.777778,.777778],[1,1,1]],blue:[[0,0,0],[.365079,.444444,.444444],[1,1,1]]}},copper:{name:"Copper",numColors:256,gamma:1,segmentedData:{red:[[0,0,0],[.809524,1,1],[1,1,1]],green:[[0,0,0],[1,.7812,.7812]],blue:[[0,0,0],[1,.4975,.4975]]}},spectral:{name:"Spectral",numColors:256,gamma:1,segmentedData:{red:[[0,0,0],[.05,.4667,.4667],[.1,.5333,.5333],[.15,0,0],[.2,0,0],[.25,0,0],[.3,0,0],[.35,0,0],[.4,0,0],[.45,0,0],[.5,0,0],[.55,0,0],[.6,0,0],[.65,.7333,.7333],[.7,.9333,.9333],[.75,1,1],[.8,1,1],[.85,1,1],[.9,.8667,.8667],[.95,.8,.8],[1,.8,.8]],green:[[0,0,0],[.05,0,0],[.1,0,0],[.15,0,0],[.2,0,0],[.25,.4667,.4667],[.3,.6,.6],[.35,.6667,.6667],[.4,.6667,.6667],[.45,.6,.6],[.5,.7333,.7333],[.55,.8667,.8667],[.6,1,1],[.65,1,1],[.7,.9333,.9333],[.75,.8,.8],[.8,.6,.6],[.85,0,0],[.9,0,0],[.95,0,0],[1,.8,.8]],blue:[[0,0,0],[.05,.5333,.5333],[.1,.6,.6],[.15,.6667,.6667],[.2,.8667,.8667],[.25,.8667,.8667],[.3,.8667,.8667],[.35,.6667,.6667],[.4,.5333,.5333],[.45,0,0],[.5,0,0],[.55,0,0],[.6,0,0],[.65,0,0],[.7,0,0],[.75,0,0],[.8,0,0],[.85,0,0],[.9,0,0],[.95,0,0],[1,.8,.8]]}},coolwarm:{name:"CoolWarm",numColors:256,gamma:1,segmentedData:{red:[[0,.2298057,.2298057],[.03125,.26623388,.26623388],[.0625,.30386891,.30386891],[.09375,.342804478,.342804478],[.125,.38301334,.38301334],[.15625,.424369608,.424369608],[.1875,.46666708,.46666708],[.21875,.509635204,.509635204],[.25,.552953156,.552953156],[.28125,.596262162,.596262162],[.3125,.639176211,.639176211],[.34375,.681291281,.681291281],[.375,.722193294,.722193294],[.40625,.761464949,.761464949],[.4375,.798691636,.798691636],[.46875,.833466556,.833466556],[.5,.865395197,.865395197],[.53125,.897787179,.897787179],[.5625,.924127593,.924127593],[.59375,.944468518,.944468518],[.625,.958852946,.958852946],[.65625,.96732803,.96732803],[.6875,.969954137,.969954137],[.71875,.966811177,.966811177],[.75,.958003065,.958003065],[.78125,.943660866,.943660866],[.8125,.923944917,.923944917],[.84375,.89904617,.89904617],[.875,.869186849,.869186849],[.90625,.834620542,.834620542],[.9375,.795631745,.795631745],[.96875,.752534934,.752534934],[1,.705673158,.705673158]],green:[[0,.298717966,.298717966],[.03125,.353094838,.353094838],[.0625,.406535296,.406535296],[.09375,.458757618,.458757618],[.125,.50941904,.50941904],[.15625,.558148092,.558148092],[.1875,.604562568,.604562568],[.21875,.648280772,.648280772],[.25,.688929332,.688929332],[.28125,.726149107,.726149107],[.3125,.759599947,.759599947],[.34375,.788964712,.788964712],[.375,.813952739,.813952739],[.40625,.834302879,.834302879],[.4375,.849786142,.849786142],[.46875,.860207984,.860207984],[.5,.86541021,.86541021],[.53125,.848937047,.848937047],[.5625,.827384882,.827384882],[.59375,.800927443,.800927443],[.625,.769767752,.769767752],[.65625,.734132809,.734132809],[.6875,.694266682,.694266682],[.71875,.650421156,.650421156],[.75,.602842431,.602842431],[.78125,.551750968,.551750968],[.8125,.49730856,.49730856],[.84375,.439559467,.439559467],[.875,.378313092,.378313092],[.90625,.312874446,.312874446],[.9375,.24128379,.24128379],[.96875,.157246067,.157246067],[1,.01555616,.01555616]],blue:[[0,.753683153,.753683153],[.03125,.801466763,.801466763],[.0625,.84495867,.84495867],[.09375,.883725899,.883725899],[.125,.917387822,.917387822],[.15625,.945619588,.945619588],[.1875,.968154911,.968154911],[.21875,.98478814,.98478814],[.25,.995375608,.995375608],[.28125,.999836203,.999836203],[.3125,.998151185,.998151185],[.34375,.990363227,.990363227],[.375,.976574709,.976574709],[.40625,.956945269,.956945269],[.4375,.931688648,.931688648],[.46875,.901068838,.901068838],[.5,.865395561,.865395561],[.53125,.820880546,.820880546],[.5625,.774508472,.774508472],[.59375,.726736146,.726736146],[.625,.678007945,.678007945],[.65625,.628751763,.628751763],[.6875,.579375448,.579375448],[.71875,.530263762,.530263762],[.75,.481775914,.481775914],[.78125,.434243684,.434243684],[.8125,.387970225,.387970225],[.84375,.343229596,.343229596],[.875,.300267182,.300267182],[.90625,.259301199,.259301199],[.9375,.220525627,.220525627],[.96875,.184115123,.184115123],[1,.150232812,.150232812]]}},blues:{name:"Blues",numColors:256,gamma:1,segmentedData:{red:[[0,.9686274528503418,.9686274528503418],[.125,.8705882430076599,.8705882430076599],[.25,.7764706015586853,.7764706015586853],[.375,.6196078658103943,.6196078658103943],[.5,.41960784792900085,.41960784792900085],[.625,.25882354378700256,.25882354378700256],[.75,.12941177189350128,.12941177189350128],[.875,.0313725508749485,.0313725508749485],[1,.0313725508749485,.0313725508749485]],green:[[0,.9843137264251709,.9843137264251709],[.125,.9215686321258545,.9215686321258545],[.25,.8588235378265381,.8588235378265381],[.375,.7921568751335144,.7921568751335144],[.5,.6823529601097107,.6823529601097107],[.625,.572549045085907,.572549045085907],[.75,.4431372582912445,.4431372582912445],[.875,.3176470696926117,.3176470696926117],[1,.1882352977991104,.1882352977991104]],blue:[[0,1,1],[.125,.9686274528503418,.9686274528503418],[.25,.9372549057006836,.9372549057006836],[.375,.8823529481887817,.8823529481887817],[.5,.8392156958580017,.8392156958580017],[.625,.7764706015586853,.7764706015586853],[.75,.7098039388656616,.7098039388656616],[.875,.6117647290229797,.6117647290229797],[1,.41960784792900085,.41960784792900085]]}}},K={MINIMUM_SLAB_THICKNESS:.05,MAXIMUM_RAY_DISTANCE:1e6};Object.freeze(K);const Y=K,X=.001,J=function e(t){const i=Object.getOwnPropertyNames(t);for(const n of i){const i=t[n];i&&"object"==typeof i&&e(i)}return Object.freeze(t)}({axial:{viewPlaneNormal:[0,0,-1],viewUp:[0,-1,0]},sagittal:{viewPlaneNormal:[1,0,0],viewUp:[0,0,1]},coronal:{viewPlaneNormal:[0,-1,0],viewUp:[0,0,1]}}),$=[{name:"CT-AAA",gradientOpacity:"4 0 1 255 1",specularPower:"10",scalarOpacity:"12 -3024 0 143.556 0 166.222 0.686275 214.389 0.696078 419.736 0.833333 3071 0.803922",specular:"0.2",shade:"1",ambient:"0.1",colorTransfer:"24 -3024 0 0 0 143.556 0.615686 0.356863 0.184314 166.222 0.882353 0.603922 0.290196 214.389 1 1 1 419.736 1 0.937033 0.954531 3071 0.827451 0.658824 1",diffuse:"0.9",interpolation:"1"},{name:"CT-AAA2",gradientOpacity:"4 0 1 255 1",specularPower:"10",scalarOpacity:"16 -3024 0 129.542 0 145.244 0.166667 157.02 0.5 169.918 0.627451 395.575 0.8125 1578.73 0.8125 3071 0.8125",specular:"0.2",shade:"1",ambient:"0.1",colorTransfer:"32 -3024 0 0 0 129.542 0.54902 0.25098 0.14902 145.244 0.6 0.627451 0.843137 157.02 0.890196 0.47451 0.6 169.918 0.992157 0.870588 0.392157 395.575 1 0.886275 0.658824 1578.73 1 0.829256 0.957922 3071 0.827451 0.658824 1",diffuse:"0.9",interpolation:"1"},{name:"CT-Bone",gradientOpacity:"4 0 1 255 1",specularPower:"10",scalarOpacity:"8 -3024 0 -16.4458 0 641.385 0.715686 3071 0.705882",specular:"0.2",shade:"1",ambient:"0.1",colorTransfer:"16 -3024 0 0 0 -16.4458 0.729412 0.254902 0.301961 641.385 0.905882 0.815686 0.552941 3071 1 1 1",diffuse:"0.9",interpolation:"1"},{name:"CT-Bones",gradientOpacity:"4 0 1 985.12 1",specularPower:"1",scalarOpacity:"8 -1000 0 152.19 0 278.93 0.190476 952 0.2",specular:"0",shade:"1",ambient:"0.2",colorTransfer:"20 -1000 0.3 0.3 1 -488 0.3 1 0.3 463.28 1 0 0 659.15 1 0.912535 0.0374849 953 1 0.3 0.3",diffuse:"1",interpolation:"1"},{name:"CT-Cardiac",gradientOpacity:"4 0 1 255 1",specularPower:"10",scalarOpacity:"12 -3024 0 -77.6875 0 94.9518 0.285714 179.052 0.553571 260.439 0.848214 3071 0.875",specular:"0.2",shade:"1",ambient:"0.1",colorTransfer:"24 -3024 0 0 0 -77.6875 0.54902 0.25098 0.14902 94.9518 0.882353 0.603922 0.290196 179.052 1 0.937033 0.954531 260.439 0.615686 0 0 3071 0.827451 0.658824 1",diffuse:"0.9",interpolation:"1"},{name:"CT-Cardiac2",gradientOpacity:"4 0 1 255 1",specularPower:"10",scalarOpacity:"12 -3024 0 42.8964 0 163.488 0.428571 277.642 0.776786 1587 0.754902 3071 0.754902",specular:"0.2",shade:"1",ambient:"0.1",colorTransfer:"24 -3024 0 0 0 42.8964 0.54902 0.25098 0.14902 163.488 0.917647 0.639216 0.0588235 277.642 1 0.878431 0.623529 1587 1 1 1 3071 0.827451 0.658824 1",diffuse:"0.9",interpolation:"1"},{name:"CT-Cardiac3",gradientOpacity:"4 0 1 255 1",specularPower:"10",scalarOpacity:"14 -3024 0 -86.9767 0 45.3791 0.169643 139.919 0.589286 347.907 0.607143 1224.16 0.607143 3071 0.616071",specular:"0.2",shade:"1",ambient:"0.1",colorTransfer:"28 -3024 0 0 0 -86.9767 0 0.25098 1 45.3791 1 0 0 139.919 1 0.894893 0.894893 347.907 1 1 0.25098 1224.16 1 1 1 3071 0.827451 0.658824 1",diffuse:"0.9",interpolation:"1"},{name:"CT-Chest-Contrast-Enhanced",gradientOpacity:"4 0 1 255 1",specularPower:"10",scalarOpacity:"10 -3024 0 67.0106 0 251.105 0.446429 439.291 0.625 3071 0.616071",specular:"0.2",shade:"1",ambient:"0.1",colorTransfer:"20 -3024 0 0 0 67.0106 0.54902 0.25098 0.14902 251.105 0.882353 0.603922 0.290196 439.291 1 0.937033 0.954531 3071 0.827451 0.658824 1",diffuse:"0.9",interpolation:"1"},{name:"CT-Chest-Vessels",gradientOpacity:"4 0 1 255 1",specularPower:"1",scalarOpacity:"10 -3024 0 -1278.35 0 22.8277 0.428571 439.291 0.625 3071 0.616071",specular:"0",shade:"1",ambient:"0.2",colorTransfer:"20 -3024 0 0 0 -1278.35 0.54902 0.25098 0.14902 22.8277 0.882353 0.603922 0.290196 439.291 1 0.937033 0.954531 3071 0.827451 0.658824 1",diffuse:"1",interpolation:"1"},{name:"CT-Coronary-Arteries",gradientOpacity:"4 0 1 255 1",specularPower:"1",scalarOpacity:"12 -2048 0 136.47 0 159.215 0.258929 318.43 0.571429 478.693 0.776786 3661 1",specular:"0",shade:"0",ambient:"0.2",colorTransfer:"24 -2048 0 0 0 136.47 0 0 0 159.215 0.159804 0.159804 0.159804 318.43 0.764706 0.764706 0.764706 478.693 1 1 1 3661 1 1 1",diffuse:"1",interpolation:"1"},{name:"CT-Coronary-Arteries-2",gradientOpacity:"4 0 1 255 1",specularPower:"1",scalarOpacity:"14 -2048 0 142.677 0 145.016 0.116071 192.174 0.5625 217.24 0.776786 384.347 0.830357 3661 0.830357",specular:"0",shade:"1",ambient:"0.2",colorTransfer:"28 -2048 0 0 0 142.677 0 0 0 145.016 0.615686 0 0.0156863 192.174 0.909804 0.454902 0 217.24 0.972549 0.807843 0.611765 384.347 0.909804 0.909804 1 3661 1 1 1",diffuse:"1",interpolation:"1"},{name:"CT-Coronary-Arteries-3",gradientOpacity:"4 0 1 255 1",specularPower:"10",scalarOpacity:"14 -2048 0 128.643 0 129.982 0.0982143 173.636 0.669643 255.884 0.857143 584.878 0.866071 3661 1",specular:"0.2",shade:"1",ambient:"0.1",colorTransfer:"28 -2048 0 0 0 128.643 0 0 0 129.982 0.615686 0 0.0156863 173.636 0.909804 0.454902 0 255.884 0.886275 0.886275 0.886275 584.878 0.968627 0.968627 0.968627 3661 1 1 1",diffuse:"0.9",interpolation:"1"},{name:"CT-Cropped-Volume-Bone",gradientOpacity:"4 0 1 255 1",specularPower:"1",scalarOpacity:"10 -2048 0 -451 0 -450 1 1050 1 3661 1",specular:"0",shade:"0",ambient:"0.2",colorTransfer:"20 -2048 0 0 0 -451 0 0 0 -450 0.0556356 0.0556356 0.0556356 1050 1 1 1 3661 1 1 1",diffuse:"1",interpolation:"1"},{name:"CT-Fat",gradientOpacity:"6 0 1 985.12 1 988 1",specularPower:"1",scalarOpacity:"14 -1000 0 -100 0 -99 0.15 -60 0.15 -59 0 101.2 0 952 0",specular:"0",shade:"0",ambient:"0.2",colorTransfer:"36 -1000 0.3 0.3 1 -497.5 0.3 1 0.3 -99 0 0 1 -76.946 0 1 0 -65.481 0.835431 0.888889 0.0165387 83.89 1 0 0 463.28 1 0 0 659.15 1 0.912535 0.0374849 2952 1 0.300267 0.299886",diffuse:"1",interpolation:"1"},{name:"CT-Liver-Vasculature",gradientOpacity:"4 0 1 255 1",specularPower:"1",scalarOpacity:"14 -2048 0 149.113 0 157.884 0.482143 339.96 0.660714 388.526 0.830357 1197.95 0.839286 3661 0.848214",specular:"0",shade:"0",ambient:"0.2",colorTransfer:"28 -2048 0 0 0 149.113 0 0 0 157.884 0.501961 0.25098 0 339.96 0.695386 0.59603 0.36886 388.526 0.854902 0.85098 0.827451 1197.95 1 1 1 3661 1 1 1",diffuse:"1",interpolation:"1"},{name:"CT-Lung",gradientOpacity:"6 0 1 985.12 1 988 1",specularPower:"1",scalarOpacity:"12 -1000 0 -600 0 -599 0.15 -400 0.15 -399 0 2952 0",specular:"0",shade:"1",ambient:"0.2",colorTransfer:"24 -1000 0.3 0.3 1 -600 0 0 1 -530 0.134704 0.781726 0.0724558 -460 0.929244 1 0.109473 -400 0.888889 0.254949 0.0240258 2952 1 0.3 0.3",diffuse:"1",interpolation:"1"},{name:"CT-MIP",gradientOpacity:"4 0 1 255 1",specularPower:"10",scalarOpacity:"8 -3024 0 -637.62 0 700 1 3071 1",specular:"0.2",shade:"1",ambient:"0.1",colorTransfer:"16 -3024 0 0 0 -637.62 1 1 1 700 1 1 1 3071 1 1 1",diffuse:"0.9",interpolation:"1"},{name:"CT-Muscle",gradientOpacity:"4 0 1 255 1",specularPower:"10",scalarOpacity:"10 -3024 0 -155.407 0 217.641 0.676471 419.736 0.833333 3071 0.803922",specular:"0.2",shade:"1",ambient:"0.1",colorTransfer:"20 -3024 0 0 0 -155.407 0.54902 0.25098 0.14902 217.641 0.882353 0.603922 0.290196 419.736 1 0.937033 0.954531 3071 0.827451 0.658824 1",diffuse:"0.9",interpolation:"1"},{name:"CT-Pulmonary-Arteries",gradientOpacity:"4 0 1 255 1",specularPower:"1",scalarOpacity:"14 -2048 0 -568.625 0 -364.081 0.0714286 -244.813 0.401786 18.2775 0.607143 447.798 0.830357 3592.73 0.839286",specular:"0",shade:"1",ambient:"0.2",colorTransfer:"28 -2048 0 0 0 -568.625 0 0 0 -364.081 0.396078 0.301961 0.180392 -244.813 0.611765 0.352941 0.0705882 18.2775 0.843137 0.0156863 0.156863 447.798 0.752941 0.752941 0.752941 3592.73 1 1 1",diffuse:"1",interpolation:"1"},{name:"CT-Soft-Tissue",gradientOpacity:"4 0 1 255 1",specularPower:"1",scalarOpacity:"10 -2048 0 -167.01 0 -160 1 240 1 3661 1",specular:"0",shade:"0",ambient:"0.2",colorTransfer:"20 -2048 0 0 0 -167.01 0 0 0 -160 0.0556356 0.0556356 0.0556356 240 1 1 1 3661 1 1 1",diffuse:"1",interpolation:"1"},{name:"CT-Air",gradientOpacity:"4 0 1 255 1",specularPower:"10",scalarOpacity:"8 -3024 0.705882 -900.0 0.715686 -500.0 0 3071 0",specular:"0.2",shade:"1",ambient:"0.1",colorTransfer:"16 -3024 1 1 1 -900.0 0.2 1.0 1.0 -500.0 0.3 0.3 1.0 3071 0 0 0 ",diffuse:"0.9",interpolation:"1"},{name:"MR-Angio",gradientOpacity:"4 0 1 255 1",specularPower:"1",scalarOpacity:"12 -2048 0 151.354 0 158.279 0.4375 190.112 0.580357 200.873 0.732143 3661 0.741071",specular:"0",shade:"1",ambient:"0.2",colorTransfer:"24 -2048 0 0 0 151.354 0 0 0 158.279 0.74902 0.376471 0 190.112 1 0.866667 0.733333 200.873 0.937255 0.937255 0.937255 3661 1 1 1",diffuse:"1",interpolation:"1"},{name:"MR-Default",gradientOpacity:"4 0 1 255 1",specularPower:"1",scalarOpacity:"12 0 0 20 0 40 0.15 120 0.3 220 0.375 1024 0.5",specular:"0",shade:"1",ambient:"0.2",colorTransfer:"24 0 0 0 0 20 0.168627 0 0 40 0.403922 0.145098 0.0784314 120 0.780392 0.607843 0.380392 220 0.847059 0.835294 0.788235 1024 1 1 1",diffuse:"1",interpolation:"1"},{name:"MR-MIP",gradientOpacity:"4 0 1 255 1",specularPower:"1",scalarOpacity:"8 0 0 98.3725 0 416.637 1 2800 1",specular:"0",shade:"0",ambient:"0.2",colorTransfer:"16 0 1 1 1 98.3725 1 1 1 416.637 1 1 1 2800 1 1 1",diffuse:"1",interpolation:"1"},{name:"MR-T2-Brain",gradientOpacity:"4 0 1 160.25 1",specularPower:"40",scalarOpacity:"10 0 0 36.05 0 218.302 0.171429 412.406 1 641 1",specular:"0.5",shade:"1",ambient:"0.3",colorTransfer:"16 0 0 0 0 98.7223 0.956863 0.839216 0.192157 412.406 0 0.592157 0.807843 641 1 1 1",diffuse:"0.6",interpolation:"1"},{name:"DTI-FA-Brain",gradientOpacity:"4 0 1 0.9950 1",specularPower:"40",scalarOpacity:"16 0 0 0 0 0.3501 0.0158 0.49379 0.7619 0.6419 1 0.9920 1 0.9950 0 0.9950 0",specular:"0.5",shade:"1",ambient:"0.3",colorTransfer:"28 0 1 0 0 0 1 0 0 0.24974 0.4941 1 0 0.49949 0 0.9882 1 0.7492 0.51764 0 1 0.9950 1 0 0 0.9950 1 0 0",diffuse:"0.9",interpolation:"1"}];var ee=Z(739),te=Z.n(ee),ie=(Z(215),Z(283)),ne=Z.n(ie),re=Z(785),ae=Z.n(re),oe=Z(573),se=Z.n(oe);function le(e){return le="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},le(e)}function ce(e,t,i){return(t=function(e){var t=function(e,t){if("object"!==le(e)||null===e)return e;var i=e[Symbol.toPrimitive];if(void 0!==i){var n=i.call(e,"string");if("object"!==le(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"===le(t)?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[t]=i,e}function de(e){const t=e.indexOf(":");return e.substring(t+1)}var he=Z(197),ue=Z.n(he),ge=Z(953),me=Z.n(ge),pe=Z(903),ve=Z.n(pe),fe=Z(199);const we={},Ie={get:e=>we[e],set:e=>{const t=e.id;we[t]=e},delete:e=>delete we[e],getAll:()=>{const e=Object.keys(we).map((e=>we[e]));return e.sort(((e,t)=>"_"===e.id[0]&&"_"!==t.id[0]?1:"_"!==e.id[0]&&"_"===t.id[0]?-1:0)),e}};function Ce(e){return Ie.get(e)}function Ee(){return Ie.getAll()}const ye=Ce,Re=e=>e&&"object"==typeof e&&"[object RegExp]"!==Object.prototype.toString.call(e)&&"[object Date]"!==Object.prototype.toString.call(e),Pe=(e,t)=>{return t&&!0===t.clone&&Re(e)?Te((i=e,Array.isArray(i)?[]:{}),e,t):e;var i},Ae=(e,t,i)=>{const n=e.slice();return t.forEach((function(t,r){void 0===n[r]?n[r]=Pe(t,i):Re(t)?n[r]=Te(e[r],t,i):-1===e.indexOf(t)&&n.push(Pe(t,i))})),n},Te=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:void 0;const n=Array.isArray(t),r=(i||{arrayMerge:Ae}).arrayMerge||Ae;return n?Array.isArray(e)?r(e,t,i):Pe(t,i):((e,t,i)=>{const n={};return Re(e)&&Object.keys(e).forEach((function(t){n[t]=Pe(e[t],i)})),Object.keys(t).forEach((function(r){Re(t[r])&&e[r]?n[r]=Te(e[r],t[r],i):n[r]=Pe(t[r],i)})),n})(e,t,i)},be=Te,Oe=Symbol("Comlink.proxy"),Se=Symbol("Comlink.endpoint"),De=Symbol("Comlink.releaseProxy"),_e=Symbol("Comlink.finalizer"),ke=Symbol("Comlink.thrown"),Me=e=>"object"==typeof e&&null!==e||"function"==typeof e,xe=new Map([["proxy",{canHandle:e=>Me(e)&&e[Oe],serialize(e){const{port1:t,port2:i}=new MessageChannel;return Ve(e,t),[i,[i]]},deserialize:e=>(e.start(),Ue(e))}],["throw",{canHandle:e=>Me(e)&&ke in e,serialize({value:e}){let t;return t=e instanceof Error?{isError:!0,value:{message:e.message,name:e.name,stack:e.stack}}:{isError:!1,value:e},[t,[]]},deserialize(e){if(e.isError)throw Object.assign(new Error(e.value.message),e.value);throw e.value}}]]);function Ve(e,t=globalThis,i=["*"]){t.addEventListener("message",(function n(r){if(!r||!r.data)return;if(!function(e,t){for(const i of e){if(t===i||"*"===i)return!0;if(i instanceof RegExp&&i.test(t))return!0}return!1}(i,r.origin))return void console.warn(`Invalid origin '${r.origin}' for comlink proxy`);const{id:a,type:o,path:s}=Object.assign({path:[]},r.data),l=(r.data.argumentList||[]).map(He);let c;try{const t=s.slice(0,-1).reduce(((e,t)=>e[t]),e),i=s.reduce(((e,t)=>e[t]),e);switch(o){case"GET":c=i;break;case"SET":t[s.slice(-1)[0]]=He(r.data.value),c=!0;break;case"APPLY":c=i.apply(t,l);break;case"CONSTRUCT":c=function(e){return Object.assign(e,{[Oe]:!0})}(new i(...l));break;case"ENDPOINT":{const{port1:t,port2:i}=new MessageChannel;Ve(e,i),c=function(e,t){return qe.set(e,t),e}(t,[t])}break;case"RELEASE":c=void 0;break;default:return}}catch(e){c={value:e,[ke]:0}}Promise.resolve(c).catch((e=>({value:e,[ke]:0}))).then((i=>{const[r,s]=ze(i);t.postMessage(Object.assign(Object.assign({},r),{id:a}),s),"RELEASE"===o&&(t.removeEventListener("message",n),Le(t),_e in e&&"function"==typeof e[_e]&&e[_e]())})).catch((e=>{const[i,n]=ze({value:new TypeError("Unserializable return value"),[ke]:0});t.postMessage(Object.assign(Object.assign({},i),{id:a}),n)}))})),t.start&&t.start()}function Le(e){(function(e){return"MessagePort"===e.constructor.name})(e)&&e.close()}function Ue(e,t){return We(e,[],t)}function Ne(e){if(e)throw new Error("Proxy has been released and is not useable")}function Fe(e){return Ke(e,{type:"RELEASE"}).then((()=>{Le(e)}))}const je=new WeakMap,Ge="FinalizationRegistry"in globalThis&&new FinalizationRegistry((e=>{const t=(je.get(e)||0)-1;je.set(e,t),0===t&&Fe(e)}));function We(e,t=[],i=function(){}){let n=!1;const r=new Proxy(i,{get(i,a){if(Ne(n),a===De)return()=>{!function(e){Ge&&Ge.unregister(e)}(r),Fe(e),n=!0};if("then"===a){if(0===t.length)return{then:()=>r};const i=Ke(e,{type:"GET",path:t.map((e=>e.toString()))}).then(He);return i.then.bind(i)}return We(e,[...t,a])},set(i,r,a){Ne(n);const[o,s]=ze(a);return Ke(e,{type:"SET",path:[...t,r].map((e=>e.toString())),value:o},s).then(He)},apply(i,r,a){Ne(n);const o=t[t.length-1];if(o===Se)return Ke(e,{type:"ENDPOINT"}).then(He);if("bind"===o)return We(e,t.slice(0,-1));const[s,l]=Be(a);return Ke(e,{type:"APPLY",path:t.map((e=>e.toString())),argumentList:s},l).then(He)},construct(i,r){Ne(n);const[a,o]=Be(r);return Ke(e,{type:"CONSTRUCT",path:t.map((e=>e.toString())),argumentList:a},o).then(He)}});return function(e,t){const i=(je.get(t)||0)+1;je.set(t,i),Ge&&Ge.register(e,t,e)}(r,e),r}function Be(e){const t=e.map(ze);return[t.map((e=>e[0])),(i=t.map((e=>e[1])),Array.prototype.concat.apply([],i))];var i}const qe=new WeakMap;function ze(e){for(const[t,i]of xe)if(i.canHandle(e)){const[n,r]=i.serialize(e);return[{type:"HANDLER",name:t,value:n},r]}return[{type:"RAW",value:e},qe.get(e)||[]]}function He(e){switch(e.type){case"HANDLER":return xe.get(e.name).deserialize(e.value);case"RAW":return e.value}}function Ke(e,t,i){return new Promise((n=>{const r=new Array(4).fill(0).map((()=>Math.floor(Math.random()*Number.MAX_SAFE_INTEGER).toString(16))).join("-");e.addEventListener("message",(function t(i){i.data&&i.data.id&&i.data.id===r&&(e.removeEventListener("message",t),n(i.data))})),e.start&&e.start(),e.postMessage(Object.assign({id:r},t),i)}))}function Ye(){return([1e7]+-1e3+-4e3+-8e3+-1e11).replace(/[018]/g,(e=>(e^crypto.getRandomValues(new Uint8Array(1))[0]&15>>e/4).toString(16)))}class Xe{constructor(e){ce(this,"id",void 0),ce(this,"awake",void 0),ce(this,"requestPool",void 0),ce(this,"numRequests",{interaction:0,thumbnail:0,prefetch:0,compute:0}),ce(this,"maxNumRequests",void 0),ce(this,"grabDelay",void 0),ce(this,"timeoutHandle",void 0),this.id=e||Ye(),this.requestPool={interaction:{0:[]},thumbnail:{0:[]},prefetch:{0:[]},compute:{0:[]}},this.grabDelay=5,this.awake=!1,this.numRequests={interaction:0,thumbnail:0,prefetch:0,compute:0},this.maxNumRequests={interaction:6,thumbnail:6,prefetch:5,compute:15}}setMaxSimultaneousRequests(e,t){this.maxNumRequests[e]=t}getMaxSimultaneousRequests(e){return this.maxNumRequests[e]}destroy(){this.timeoutHandle&&window.clearTimeout(this.timeoutHandle)}addRequest(e,t,i){let n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:0;const r={requestFn:e,type:t,additionalDetails:i};void 0===this.requestPool[t][n]&&(this.requestPool[t][n]=[]),this.requestPool[t][n].push(r),this.startGrabbing()}filterRequests(e){Object.keys(this.requestPool).forEach((t=>{const i=this.requestPool[t];Object.keys(i).forEach((t=>{i[t]=i[t].filter((t=>e(t)))}))}))}clearRequestStack(e){if(!this.requestPool[e])throw new Error("No category for the type ".concat(e," found"));this.requestPool[e]={0:[]}}sendRequests(e){const t=this.maxNumRequests[e]-this.numRequests[e];for(let i=0;i<t;i++){const t=this.getNextRequest(e);if(null===t)return!1;t&&(this.numRequests[e]++,this.awake=!0,t.requestFn().finally((()=>{this.numRequests[e]--,this.startAgain()})))}return!0}getNextRequest(e){const t=this.getSortedPriorityGroups(e);for(const i of t)if(this.requestPool[e][i].length)return this.requestPool[e][i].shift();return null}startGrabbing(){const e=this.sendRequests(v.Interaction),t=this.sendRequests(v.Thumbnail),i=this.sendRequests(v.Prefetch),n=this.sendRequests(v.Compute);e||t||i||n||(this.awake=!1)}startAgain(){this.awake&&(void 0!==this.grabDelay?this.timeoutHandle||(this.timeoutHandle=window.setTimeout((()=>{this.timeoutHandle=null,this.startGrabbing()}),this.grabDelay)):this.startGrabbing())}getSortedPriorityGroups(e){return Object.keys(this.requestPool[e]).map(Number).filter((t=>this.requestPool[e][t].length)).sort(((e,t)=>e-t))}getRequestPool(){return this.requestPool}}const Ze=class{constructor(){this.workerRegistry={},this.workerPoolManager=new Xe("webworker"),this.checkIntervalForIdleWorkers=1e3}setCheckIntervalForIdleWorkers(e){this.checkIntervalForIdleWorkers=e}registerWorker(e,t){var i;let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};const{maxWorkerInstances:r=1,overwrite:a=!1,autoTerminateOnIdle:o=!1}=n;if(this.workerRegistry[e]&&!a)return void console.warn("Worker type '".concat(e,"' is already registered..."));a&&null!==(i=this.workerRegistry[e])&&void 0!==i&&i.idleCheckIntervalId&&clearInterval(this.workerRegistry[e].idleCheckIntervalId);const s={workerFn:null,idleCheckIntervalId:null,instances:[],loadCounters:[],lastActiveTime:[],nativeWorkers:[]};if(o&&!s.idleCheckIntervalId||a){const t=setInterval((()=>{this.terminateIdleWorkers(e,o)}),this.checkIntervalForIdleWorkers);s.idleCheckIntervalId=t}s.loadCounters=Array(r).fill(0),s.lastActiveTime=Array(r).fill(null);for(let e=0;e<r;e++){const e=t();s.instances.push(Ue(e)),s.nativeWorkers.push(e),s.workerFn=t}this.workerRegistry[e]=s}getNextWorkerAPI(e){const t=this.workerRegistry[e];if(!t)return console.error("Worker type '".concat(e,"' is not registered.")),null;const i=t.instances.filter((e=>null!==e));let n=0,r=t.loadCounters[0]||0;for(let e=1;e<i.length;e++){const i=t.loadCounters[e]||0;i<r&&(n=e,r=i)}if(null===t.instances[n]){const e=t.workerFn();t.instances[n]=Ue(e),t.nativeWorkers[n]=e}return t.loadCounters[n]+=1,{api:t.instances[n],index:n}}executeTask(e,t){let i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},{requestType:n=v.Compute,priority:r=0,options:a={}}=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};return new Promise(((o,s)=>{this.workerPoolManager.addRequest((async()=>{const{api:n,index:r}=this.getNextWorkerAPI(e);if(!n){const t=new Error("No available worker instance for '".concat(e,"'"));return console.error(t),void s(t)}try{const a=await n[t](i);this.workerRegistry[e].lastActiveTime[r]=Date.now(),o(a)}catch(i){console.error("Error executing method '".concat(t,"' on worker '").concat(e,"':"),i),s(i)}finally{this.workerRegistry[e].loadCounters[r]--}}),n,a,r)}))}terminateIdleWorkers(e,t){const i=this.workerRegistry[e],n=Date.now();i.instances.forEach(((e,r)=>{null!=i.lastActiveTime[r]&&n-i.lastActiveTime[r]>t&&null!==e&&(e[De](),i.nativeWorkers[r].terminate(),i.instances[r]=null,i.lastActiveTime[r]=null)}))}terminate(e){const t=this.workerRegistry[e];t?(t.instances.forEach((e=>{e[De]()})),t.nativeWorkers.forEach((e=>{e.terminate()}))):console.error("Worker type '".concat(e,"' is not registered."))}};let Qe=!1,Je=!0,$e=S.TRUE;const et={gpuTier:void 0,detectGPUConfig:{},rendering:{useCPURendering:!1,preferSizeOverAccuracy:!1,useNorm16Texture:!1,strictZSpacingForVolumeViewport:!0}};let tt={gpuTier:void 0,detectGPUConfig:{},rendering:{useCPURendering:!1,preferSizeOverAccuracy:!1,useNorm16Texture:!1,strictZSpacingForVolumeViewport:!0}},it=null;function nt(){const e=function(){const e=document.createElement("canvas");return e.getContext("webgl2")||e.getContext("webgl")||e.getContext("experimental-webgl")}();return e instanceof WebGLRenderingContext||e instanceof WebGL2RenderingContext}async function rt(){return Qe||(tt=be(et,arguments.length>0&&void 0!==arguments[0]?arguments[0]:tt),nt()?(tt.gpuTier=tt.gpuTier||await(0,fe.getGPUTier)(tt.detectGPUConfig),console.log("CornerstoneRender: Using detect-gpu to get the GPU benchmark:",tt.gpuTier),tt.gpuTier.tier<1?(console.log("CornerstoneRender: GPU is not powerful enough, using CPU rendering"),tt.rendering.useCPURendering=!0):console.log("CornerstoneRender: using GPU rendering")):(console.log("CornerstoneRender: GPU not detected, using CPU rendering"),tt.rendering.useCPURendering=!0),ct($e),Qe=!0,it||(it=new Ze),Qe)}function at(e){tt.rendering.useCPURendering=e,Qe=!0,pt()}function ot(e){tt.rendering.preferSizeOverAccuracy=e,Qe=!0,pt()}function st(){tt.rendering.useCPURendering=!nt(),pt()}function lt(){return tt.rendering.useCPURendering}function ct(e){if(e!=S.AUTO)return e==S.TRUE||1==e?($e=S.TRUE,void(Je=!0)):e==S.FALSE||0==e?($e=S.FALSE,void(Je=!1)):void 0;$e=S.AUTO,!function(){try{return!!new SharedArrayBuffer(0)}catch{return!1}}()?(Je=!1,console.warn("CornerstoneRender: SharedArray Buffer not allowed, performance may be slower.\n Try ensuring page is cross-origin isolated to enable SharedArrayBuffer.")):(Je=!0,console.log("CornerstoneRender: using SharedArrayBuffer"))}function dt(){ct($e)}function ht(){return Je}function ut(){return Qe}function gt(){return tt}function mt(e){tt=e,pt()}function pt(){Ee().forEach((e=>e.getViewports().forEach((e=>{var t;return null===(t=e.updateRenderingPipeline)||void 0===t?void 0:t.call(e)}))))}function vt(){return it||(it=new Ze),it}const ft={updatedFrames:[]};function wt(e,t){let i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};Object.assign(t,ft,i),me().extend(e,t,i),function(e,t){t.classHierarchy.push("vtkStreamingOpenGLTexture");const i=e.create3DFilterableFromRaw;e.create3DFilterableFromRaw=(e,n,r,a,o,s,l)=>{t.inputDataType=o,t.inputNumComps=a,i(e,n,r,a,o,s,l)},e.update3DFromRaw=i=>{const{updatedFrames:n}=t;if(!n.length)return;let r,a;if(t._openGLRenderWindow.activateTexture(e),e.createTexture(),e.bind(),i instanceof Uint8Array)r=1,a=Uint8Array;else if(i instanceof Int16Array)r=2,a=Int16Array;else if(i instanceof Uint16Array)r=2,a=Uint16Array;else{if(!(i instanceof Float32Array))throw new Error("No support for given TypedArray.");r=4,a=Float32Array}for(let e=0;e<n.length;e++)n[e]&&t.fillSubImage3D(i,e,r,a);return t.updatedFrames=[],t.generateMipmap&&t.context.generateMipmap(t.target),e.deactivate(),!0},t.fillSubImage3D=(e,i,n,r)=>{const a=e.buffer,o=i*(t.width*t.height*t.components*n),s=t.width*t.components,l=t.context,c=l.getParameter(l.MAX_TEXTURE_SIZE);let d=Math.floor(n*c/t.width);d=Math.min(d,t.height);const{useNorm16Texture:h,preferSizeOverAccuracy:u}=gt().rendering;h&&!u&&(d=1);const g=s*d,m=g*n,p=Math.floor(t.height/d),v=t.height%d,f=s*v;for(let e=0;e<p;e++){const n=e*d;let s=new r(a,o+e*m,g);if(t.useHalfFloat&&(r===Uint16Array||r===Int16Array)){for(let e=0;e<s.length;e++)s[e]=ve().toHalf(s[e]);r===Int16Array&&(s=new Uint16Array(s))}l.texSubImage3D(t.target,0,0,n,i,t.width,d,1,t.format,t.openGLDataType,s)}if(0!==v){const e=p*d,n=new r(a,o+p*m,f);l.texSubImage3D(t.target,0,0,e,i,t.width,v,1,t.format,t.openGLDataType,n)}},e.getTextureParameters=()=>({width:t.width,height:t.height,depth:t.depth,numComps:t.inputNumComps,dataType:t.inputDataType}),e.setUpdatedFrame=e=>{t.updatedFrames[e]=!0}}(e,t)}const It={newInstance:ue().newInstance(wt,"vtkStreamingOpenGLTexture"),extend:wt};class Ct{constructor(e){ce(this,"_imageIds",void 0),ce(this,"_imageIdsIndexMap",new Map),ce(this,"_imageURIsIndexMap",new Map),ce(this,"scalarData",void 0),ce(this,"volumeId",void 0),ce(this,"isPreScaled",!1),ce(this,"dimensions",void 0),ce(this,"direction",void 0),ce(this,"metadata",void 0),ce(this,"origin",void 0),ce(this,"scaling",void 0),ce(this,"sizeInBytes",void 0),ce(this,"spacing",void 0),ce(this,"numVoxels",void 0),ce(this,"imageData",void 0),ce(this,"vtkOpenGLTexture",void 0),ce(this,"loadStatus",void 0),ce(this,"referencedVolumeId",void 0),ce(this,"hasPixelSpacing",void 0),ce(this,"cancelLoading",void 0),this.volumeId=e.volumeId,this.metadata=e.metadata,this.dimensions=e.dimensions,this.spacing=e.spacing,this.origin=e.origin,this.direction=e.direction,this.imageData=e.imageData,this.scalarData=e.scalarData,this.sizeInBytes=e.sizeInBytes,this.vtkOpenGLTexture=It.newInstance(),this.numVoxels=this.dimensions[0]*this.dimensions[1]*this.dimensions[2],e.scaling&&(this.scaling=e.scaling),e.referencedVolumeId&&(this.referencedVolumeId=e.referencedVolumeId)}get imageIds(){return this._imageIds}set imageIds(e){this._imageIds=e,this._reprocessImageIds()}_reprocessImageIds(){this._imageIdsIndexMap.clear(),this._imageURIsIndexMap.clear(),this._imageIds.forEach(((e,t)=>{const i=de(e);this._imageIdsIndexMap.set(e,t),this._imageURIsIndexMap.set(i,t)}))}isDynamicVolume(){return!1}getScalarData(){if((e=this.scalarData)instanceof Int8Array||e instanceof Uint8Array||e instanceof Uint8ClampedArray||e instanceof Int16Array||e instanceof Uint16Array||e instanceof Int32Array||e instanceof Uint32Array||e instanceof Float32Array||e instanceof Float64Array)return this.scalarData;var e;throw new Error("Unknown scalar data type")}getImageIdIndex(e){return this._imageIdsIndexMap.get(e)}getImageURIIndex(e){return this._imageURIsIndexMap.get(e)}destroy(){this.imageData.delete(),this.imageData=null,this.scalarData=null,this.vtkOpenGLTexture.releaseGraphicsResources(),this.vtkOpenGLTexture.delete()}}const Et=Ct,yt=new class{constructor(){ce(this,"listeners",void 0),this.listeners={}}reset(){this.listeners={}}addEventListener(e,t){this.listeners[e]||(this.listeners[e]=[]),-1===this.listeners[e].indexOf(t)&&this.listeners[e].push(t)}removeEventListener(e,t){if(!this.listeners[e])return;const i=this.listeners[e],n=i.length;for(let e=0;e<n;e++)if(i[e]===t)return void i.splice(e,1)}dispatchEvent(e){if(!this.listeners[e.type])return;const t=this.listeners[e.type].slice(),i=t.length;for(let n=0;n<i;n++)t[n].call(this,e);return!e.defaultPrevented}};function Rt(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:yt,t=arguments.length>1?arguments[1]:void 0,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;if(!t)throw new Error("Event type was not defined");const n=new CustomEvent(t,{detail:i,cancelable:!0});return e.dispatchEvent(n)}const Pt=new class{constructor(){ce(this,"_imageCache",new Map),ce(this,"_volumeCache",new Map),ce(this,"_geometryCache",void 0),ce(this,"_imageCacheSize",0),ce(this,"_volumeCacheSize",0),ce(this,"_maxCacheSize",3221225472),ce(this,"_maxInstanceSize",2147483640),ce(this,"setMaxCacheSize",(e=>{if(!e||"number"!=typeof e){const e="New max cacheSize ".concat(this._maxCacheSize," should be defined and should be a number.");throw new Error(e)}this._maxCacheSize=e})),ce(this,"isCacheable",(e=>!(e>this._maxInstanceSize)&&this.getBytesAvailable()+this._imageCacheSize>e)),ce(this,"getMaxCacheSize",(()=>this._maxCacheSize)),ce(this,"getMaxInstanceSize",(()=>this._maxInstanceSize)),ce(this,"getCacheSize",(()=>this._imageCacheSize+this._volumeCacheSize)),ce(this,"_decacheImage",(e=>{const{imageLoadObject:t}=this._imageCache.get(e);t.cancelFn&&t.cancelFn(),t.decache&&t.decache(),this._imageCache.delete(e)})),ce(this,"_decacheVolume",(e=>{const t=this._volumeCache.get(e),{volumeLoadObject:i,volume:n}=t;n.cancelLoading&&n.cancelLoading(),n.imageData&&n.imageData.delete(),i.cancelFn&&i.cancelFn(),i.decache&&i.decache(),this._volumeCache.delete(e)})),ce(this,"purgeCache",(()=>{const e=this._imageCache.keys();for(;;){const{value:t,done:i}=e.next();if(i)break;this.removeImageLoadObject(t),Rt(yt,m.IMAGE_CACHE_IMAGE_REMOVED,{imageId:t})}this.purgeVolumeCache()})),ce(this,"purgeVolumeCache",(()=>{const e=this._volumeCache.keys();for(;;){const{value:t,done:i}=e.next();if(i)break;this.removeVolumeLoadObject(t),Rt(yt,m.VOLUME_CACHE_VOLUME_REMOVED,{volumeId:t})}})),ce(this,"getVolumeLoadObject",(e=>{if(void 0===e)throw new Error("getVolumeLoadObject: volumeId must not be undefined");const t=this._volumeCache.get(e);if(void 0!==t)return t.timeStamp=Date.now(),t.volumeLoadObject})),ce(this,"getGeometry",(e=>{if(null==e)throw new Error("getGeometry: geometryId must not be undefined");const t=this._geometryCache.get(e);if(void 0!==t)return t.timeStamp=Date.now(),t.geometry})),ce(this,"getVolume",(e=>{if(void 0===e)throw new Error("getVolume: volumeId must not be undefined");const t=this._volumeCache.get(e);if(void 0!==t)return t.timeStamp=Date.now(),t.volume})),ce(this,"removeImageLoadObject",(e=>{if(void 0===e)throw new Error("removeImageLoadObject: imageId must not be undefined");const t=this._imageCache.get(e);if(void 0===t)throw new Error("removeImageLoadObject: imageId was not present in imageCache");this._incrementImageCacheSize(-t.sizeInBytes);const i={imageId:e};Rt(yt,m.IMAGE_CACHE_IMAGE_REMOVED,i),this._decacheImage(e)})),ce(this,"removeVolumeLoadObject",(e=>{if(void 0===e)throw new Error("removeVolumeLoadObject: volumeId must not be undefined");const t=this._volumeCache.get(e);if(void 0===t)throw new Error("removeVolumeLoadObject: volumeId was not present in volumeCache");this._incrementVolumeCacheSize(-t.sizeInBytes);const i={volume:t,volumeId:e};Rt(yt,m.VOLUME_CACHE_VOLUME_REMOVED,i),this._decacheVolume(e)})),ce(this,"putGeometryLoadObject",((e,t)=>{if(null==e)throw new Error("putGeometryLoadObject: geometryId must not be undefined");if(this._geometryCache.has(e))throw new Error("putGeometryLoadObject: geometryId already present in geometryCache");const i={geometryId:e,geometryLoadObject:t,loaded:!1,timeStamp:Date.now(),sizeInBytes:0};return this._geometryCache.set(e,i),t.promise.then((t=>{if(!this._geometryCache.has(e))return void console.warn("putGeometryLoadObject: geometryId was removed from geometryCache");if(Number.isNaN(t.sizeInBytes))throw new Error("putGeometryLoadObject: geometry.sizeInBytes is not a number");i.loaded=!0,i.geometry=t,i.sizeInBytes=t.sizeInBytes;const n={geometry:t,geometryId:e};Rt(yt,m.GEOMETRY_CACHE_GEOMETRY_ADDED,n)})).catch((t=>{throw this._geometryCache.delete(e),t}))})),ce(this,"_incrementImageCacheSize",(e=>{this._imageCacheSize+=e})),ce(this,"_incrementVolumeCacheSize",(e=>{this._volumeCacheSize+=e})),this._geometryCache=new Map}getBytesAvailable(){return this.getMaxCacheSize()-this.getCacheSize()}decacheIfNecessaryUntilBytesAvailable(e,t){let i=this.getBytesAvailable();if(i>=e)return i;let n=Array.from(this._imageCache.values());n.sort((function(e,t){return e.timeStamp>t.timeStamp?1:e.timeStamp<t.timeStamp?-1:0}));let r=n.map((e=>e.imageId)),a=r;t&&(a=r.filter((e=>!t.includes(e))));for(const t of a)if(this.removeImageLoadObject(t),Rt(yt,m.IMAGE_CACHE_IMAGE_REMOVED,{imageId:t}),i=this.getBytesAvailable(),i>=e)return i;n=Array.from(this._imageCache.values()),r=n.map((e=>e.imageId));for(const t of r)if(this.removeImageLoadObject(t),Rt(yt,m.IMAGE_CACHE_IMAGE_REMOVED,{imageId:t}),i=this.getBytesAvailable(),i>=e)return i}putImageLoadObject(e,t){if(void 0===e)throw new Error("putImageLoadObject: imageId must not be undefined");if(void 0===t.promise)throw new Error("putImageLoadObject: imageLoadObject.promise must not be undefined");if(this._imageCache.has(e))throw new Error("putImageLoadObject: imageId already in cache");if(t.cancelFn&&"function"!=typeof t.cancelFn)throw new Error("putImageLoadObject: imageLoadObject.cancel must be a function");const i={loaded:!1,imageId:e,sharedCacheKey:void 0,imageLoadObject:t,timeStamp:Date.now(),sizeInBytes:0};return this._imageCache.set(e,i),t.promise.then((t=>{if(!this._imageCache.get(e))return void console.warn("The image was purged from the cache before it completed loading.");if(void 0===t.sizeInBytes||Number.isNaN(t.sizeInBytes))throw new Error("putImageLoadObject: image.sizeInBytes must not be undefined");if(void 0===t.sizeInBytes.toFixed)throw new Error("putImageLoadObject: image.sizeInBytes is not a number");if(!this.isCacheable(t.sizeInBytes))throw new Error(m.CACHE_SIZE_EXCEEDED);this.decacheIfNecessaryUntilBytesAvailable(t.sizeInBytes),i.loaded=!0,i.image=t,i.sizeInBytes=t.sizeInBytes,this._incrementImageCacheSize(i.sizeInBytes);const n={image:i};Rt(yt,m.IMAGE_CACHE_IMAGE_ADDED,n),i.sharedCacheKey=t.sharedCacheKey})).catch((t=>{throw this._imageCache.delete(e),t}))}getImageLoadObject(e){if(void 0===e)throw new Error("getImageLoadObject: imageId must not be undefined");const t=this._imageCache.get(e);if(void 0!==t)return t.timeStamp=Date.now(),t.imageLoadObject}isLoaded(e){const t=this._imageCache.get(e);return!!t&&t.loaded}getVolumeContainingImageId(e){const t=Array.from(this._volumeCache.keys()),i=de(e);for(const e of t){var n;const t=this._volumeCache.get(e),{volume:r}=t;if(null==r||null===(n=r.imageIds)||void 0===n||!n.length)return;const a=r.getImageURIIndex(i);if(a>-1)return{volume:r,imageIdIndex:a}}}getCachedImageBasedOnImageURI(e){const t=de(e),i=Array.from(this._imageCache.keys()).find((e=>de(e)===t));if(i)return this._imageCache.get(i)}putVolumeLoadObject(e,t){if(void 0===e)throw new Error("putVolumeLoadObject: volumeId must not be undefined");if(void 0===t.promise)throw new Error("putVolumeLoadObject: volumeLoadObject.promise must not be undefined");if(this._volumeCache.has(e))throw new Error("putVolumeLoadObject: volumeId:".concat(e," already in cache"));if(t.cancelFn&&"function"!=typeof t.cancelFn)throw new Error("putVolumeLoadObject: volumeLoadObject.cancel must be a function");const i={loaded:!1,volumeId:e,volumeLoadObject:t,timeStamp:Date.now(),sizeInBytes:0};return this._volumeCache.set(e,i),t.promise.then((t=>{if(!this._volumeCache.get(e))return void console.warn("The image was purged from the cache before it completed loading.");if(Number.isNaN(t.sizeInBytes))throw new Error("putVolumeLoadObject: volume.sizeInBytes must not be undefined");if(void 0===t.sizeInBytes.toFixed)throw new Error("putVolumeLoadObject: volume.sizeInBytes is not a number");this.decacheIfNecessaryUntilBytesAvailable(t.sizeInBytes,t.imageIds),i.volume=t,i.sizeInBytes=t.sizeInBytes,this._incrementVolumeCacheSize(i.sizeInBytes);const n={volume:i};Rt(yt,m.VOLUME_CACHE_VOLUME_ADDED,n)})).catch((t=>{throw this._volumeCache.delete(e),t}))}};function At(e){const{dimensions:t,metadata:i,spacing:n,direction:r,origin:a}=e,{PhotometricInterpretation:o}=i;let s=1;"RGB"===o&&(s=3);const l=ne().newInstance(),c={numberOfComponents:s};return l.setDimensions(t),l.setSpacing(n),l.setDirection(r),l.setOrigin(a),e.isDynamicVolume()?function(e,t,i){t.forEach(((t,n)=>{const r=ae().newInstance({name:"timePoint-".concat(n),values:t,...i});e.getPointData().addArray(r)})),e.getPointData().setActiveScalars("timePoint-0")}(l,e.getScalarDataArrays(),c):function(e,t,i){const n=ae().newInstance({name:"Pixels",values:t,...i});e.getPointData().setScalars(n)}(l,e.getScalarData(),c),l}const Tt={};let bt;function Ot(e,t){const i=e.indexOf(":"),n=e.substring(0,i),r=Tt[n];if(null==r){if(void 0!==bt)return bt(e,t);throw new Error("loadVolumeFromVolumeLoader: no volume loader for volumeId")}const a=r(e,t);return a.promise.then((function(e){Rt(yt,m.VOLUME_LOADED,{volume:e})}),(function(t){const i={volumeId:e,error:t};Rt(yt,m.VOLUME_LOADED_FAILED,i)})),a}function St(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{imageIds:[]};if(void 0===e)throw new Error("loadVolume: parameter volumeId must not be undefined");let i=Pt.getVolumeLoadObject(e);return void 0!==i?i.promise:(i=Ot(e,t),i.promise.then((e=>(e.imageData=At(e),e))))}async function Dt(e,t){if(void 0===e)throw new Error("createAndCacheVolume: parameter volumeId must not be undefined");let i=Pt.getVolumeLoadObject(e);return void 0!==i||(i=Ot(e,t),i.promise.then((e=>{e.imageData=At(e)})),Pt.putVolumeLoadObject(e,i).catch((e=>{throw e}))),i.promise}async function _t(e,t){const i=Pt.getVolume(e);if(!i)throw new Error("Cannot created derived volume: Referenced volume with id ".concat(e," does not exist."));let{volumeId:n}=t;const{targetBuffer:r}=t;void 0===n&&(n=Ye());const{metadata:a,dimensions:o,spacing:s,origin:l,direction:c}=i,d=i.getScalarData().length;let h,u;const{useNorm16Texture:g}=gt().rendering;if(r)if("Float32Array"===r.type)h=4*d,u=Float32Array;else if("Uint8Array"===r.type)h=d,u=Uint8Array;else if(g&&"Uint16Array"===r.type)h=2*d,u=Uint16Array;else{if(!g||"Int16Array"!==r.type)throw new Error("TargetBuffer should be Float32Array or Uint8Array");h=2*d,u=Uint16Array}else h=4*d,u=Float32Array;if(!Pt.isCacheable(h))throw new Error(m.CACHE_SIZE_EXCEEDED);let p;p=null!=r&&r.sharedArrayBuffer?new u(new SharedArrayBuffer(h)):new u(d);const v=ae().newInstance({name:"Pixels",numberOfComponents:1,values:p}),f=ne().newInstance();f.setDimensions(o),f.setSpacing(s),f.setDirection(c),f.setOrigin(l),f.getPointData().setScalars(v);const w=new Ct({volumeId:n,metadata:se()(a),dimensions:[o[0],o[1],o[2]],spacing:s,origin:l,direction:c,imageData:f,scalarData:p,sizeInBytes:h,referencedVolumeId:e}),I={promise:Promise.resolve(w)};return await Pt.putVolumeLoadObject(n,I),w}function kt(e,t){let i=arguments.length>2&&void 0!==arguments[2]&&arguments[2];const{scalarData:n,metadata:r,dimensions:a,spacing:o,origin:s,direction:l}=e;if(!n||!(n instanceof Uint8Array||n instanceof Float32Array||n instanceof Uint16Array||n instanceof Int16Array))throw new Error("To use createLocalVolume you should pass scalarData of type Uint8Array, Uint16Array, Int16Array or Float32Array");void 0===t&&(t=Ye());const c=Pt.getVolume(t);if(c)return c;const d=a[0]*a[1]*a[2],h=n?n.buffer.byteLength:4*d;if(!Pt.isCacheable(h))throw new Error(m.CACHE_SIZE_EXCEEDED);const u=ae().newInstance({name:"Pixels",numberOfComponents:1,values:n}),g=ne().newInstance();g.setDimensions(a),g.setSpacing(o),g.setDirection(l),g.setOrigin(s),g.getPointData().setScalars(u);const p=new Ct({volumeId:t,metadata:se()(r),dimensions:[a[0],a[1],a[2]],spacing:o,origin:s,direction:l,imageData:g,scalarData:n,sizeInBytes:h});if(i)return p;const v={promise:Promise.resolve(p)};return Pt.putVolumeLoadObject(t,v),p}function Mt(e,t){Tt[e]=t}function xt(){return Object.keys(Tt)}function Vt(e){const t=bt;return bt=e,t}var Lt=Z(9),Ut=Z.n(Lt);const Nt={scalarTexture:null};function Ft(e,t){let i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};Object.assign(t,Nt,i),Ut().extend(e,t,i),ue().setGet(e,t,["scalarTexture"]),function(e,t){t.classHierarchy.push("vtkSharedVolumeMapper");const i=e.delete;e.delete=()=>{t.scalarTexture=null,i()}}(e,t)}const jt={newInstance:ue().newInstance(Ft,"vtkSharedVolumeMapper"),extend:Ft};function Gt(e,t){const i=jt.newInstance();gt().rendering.preferSizeOverAccuracy&&i.setPreferSizeOverAccuracy(!0),i.setInputData(e);const n=e.getSpacing(),r=(n[0]+n[1]+n[2])/6;return i.setMaximumSamplesPerRay(4e3),i.setSampleDistance(r),i.setScalarTexture(t),i}const Wt=new Xe("imageLoadPool");Wt.grabDelay=0,Wt.setMaxSimultaneousRequests(v.Interaction,1e3),Wt.setMaxSimultaneousRequests(v.Thumbnail,1e3),Wt.setMaxSimultaneousRequests(v.Prefetch,1e3);const Bt=Wt,qt={};let zt;function Ht(e,t){let i=Pt.getImageLoadObject(e);if(void 0!==i)return i;const n=Pt.getVolumeContainingImageId(e);if(n&&n.volume.loadStatus.loaded){const{volume:t,imageIdIndex:r}=n;return i=t.convertToCornerstoneImage(e,r),i}const r=Pt.getCachedImageBasedOnImageURI(e);return r?(i=r.imageLoadObject,i):(i=function(e,t){const i=e.indexOf(":"),n=e.substring(0,i),r=qt[n];if(null==r){if(void 0!==zt)return zt(e);throw new Error("loadImageFromImageLoader: no image loader for imageId")}const a=r(e,t);return a.promise.then((function(e){Rt(yt,m.IMAGE_LOADED,{image:e})}),(function(t){const i={imageId:e,error:t};Rt(yt,m.IMAGE_LOAD_FAILED,i)})),a}(e,t),i)}function Kt(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{priority:0,requestType:"prefetch"};if(void 0===e)throw new Error("loadImage: parameter imageId must not be undefined");return Ht(e,t).promise}function Yt(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{priority:0,requestType:"prefetch"};if(void 0===e)throw new Error("loadAndCacheImage: parameter imageId must not be undefined");const i=Ht(e,t);return Pt.getImageLoadObject(e)||Pt.putImageLoadObject(e,i).catch((e=>{console.warn(e)})),i.promise}function Xt(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{priority:0,requestType:"prefetch"};if(!e||0===e.length)throw new Error("loadAndCacheImages: parameter imageIds must be list of image Ids");return e.map((e=>Yt(e,t)))}function Zt(e){Bt.filterRequests((t=>{let{additionalDetails:i}=t;return!i.imageId||i.imageId!==e}));const t=Pt.getImageLoadObject(e);t&&t.cancelFn()}function Qt(e){e.forEach((e=>Zt(e)))}function Jt(){const e=Bt.getRequestPool();Object.keys(e).forEach((t=>{const i=e[t];Object.keys(i).forEach((e=>{const t=i[e].pop().additionalDetails,{imageId:n,volumeId:r}=t;let a;n?a=Pt.getImageLoadObject(n):r&&(a=Pt.getVolumeLoadObject(r)),a&&a.cancel()})),Bt.clearRequestStack(t)}))}function $t(e,t){qt[e]=t}function ei(e){const t=zt;return zt=e,t}function ti(){Object.keys(qt).forEach((e=>delete qt[e])),zt=void 0}const ii=[];function ni(e){let t,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;for(t=0;t<ii.length&&!(ii[t].priority<=i);t++);ii.splice(t,0,{priority:i,provider:e})}function ri(e){for(let t=0;t<ii.length;t++)if(ii[t].provider===e){ii.splice(t,1);break}}function ai(){for(;ii.length>0;)ii.pop()}function oi(e){for(var t=arguments.length,i=new Array(t>1?t-1:0),n=1;n<t;n++)i[n-1]=arguments[n];const r=1===i.length?i[0]:i;for(let t=0;t<ii.length;t++){const i=ii[t].provider(e,r);if(void 0!==i)return i}}function si(e,t){return{windowWidth:Math.abs(t-e)+1,windowCenter:(e+t+1)/2}}function li(e,t){return{lower:t-.5-(e-1)/2,upper:t-.5+(e-1)/2}}function ci(e){let t,i=e[0],n=e[0];const r=e.length;for(let a=1;a<r;a++)t=e[a],i=Math.min(i,t),n=Math.max(n,t);return{min:i,max:n}}const di=v.Prefetch,hi=async function(e,t,i){let n=function(e){const{imageIds:t}=e,i=oi("voiLutModule",t[Math.floor(t.length/2)]);if(i&&i.windowWidth&&i.windowCenter){const{windowWidth:e,windowCenter:t}=i,n={windowWidth:Array.isArray(e)?e[0]:e,windowCenter:Array.isArray(t)?t[0]:t},{lower:r,upper:a}=li(Number(n.windowWidth),Number(n.windowCenter));return{lower:r,upper:a}}}(t);if(n||(n=await async function(e,t){const{imageIds:i}=e,n=e.getScalarData(),r=Math.floor(i.length/2),a=e.imageIds[r],o=oi("generalSeriesModule",a)||{},{modality:s}=o,l=oi("modalityLutModule",a)||{},c=i.length,d=n.byteLength/c,h=n.length/c,u=n.BYTES_PER_ELEMENT,g={rescaleSlope:l.rescaleSlope,rescaleIntercept:l.rescaleIntercept,modality:s};let m;if("PT"===s){const e=oi("scalingModule",a);e&&(m={...g,suvbw:e.suvbw})}const p=r*d,v={targetBuffer:{type:t?void 0:"Float32Array"},priority:0,requestType:di,preScale:{enabled:!0,scalingParameters:m}},f=await Yt(a,v);let w;w=f?f.getPixelData():function(e,t,i,n){const{scalarData:r}=e,{volumeBuffer:a}=r;r.BYTES_PER_ELEMENT!==i&&(t*=r.BYTES_PER_ELEMENT/i);const o=r.constructor,s=new o(n),l=new o(a,t,n);return s.set(l),s}(e,p,u,h);const{min:I,max:C}=ci(w);return{lower:I,upper:C}}(t,i)),!n||void 0===n.lower||void 0===n.upper)throw new Error("Could not get VOI from metadata, nor from the min max of the image middle slice");n=function(e,t){const i=e.imageIds;return function(e,t){var i;return!("PT"!==e||!t.isPreScaled)&&!(null===(i=t.scaling)||void 0===i||!i.PT.suvbw)}((oi("generalSeriesModule",i[Math.floor(i.length/2)])||{}).modality,e)?{lower:0,upper:5}:t}(t,n);const{lower:r,upper:a}=n;e.getProperty().getRGBTransferFunction(0).setMappingRange(r,a)},ui=async function(e,t,i){let n=arguments.length>3&&void 0!==arguments[3]&&arguments[3],r=arguments.length>4&&void 0!==arguments[4]&&arguments[4];const{volumeId:a,callback:o,blendMode:s}=e,l=await St(a);if(!l)throw new Error("imageVolume with id: ".concat(l.volumeId," does not exist"));const{imageData:c,vtkOpenGLTexture:d}=l,h=Gt(c,d);s&&h.setBlendMode(s);const u=te().newInstance();return u.setMapper(h),3===c.getPointData().getScalars().getNumberOfComponents()&&u.getProperty().setIndependentComponents(!1),l.imageIds&&await hi(u,l,r),o&&o({volumeActor:u,volumeId:a}),n||function(e,t,i,n){const r=i.getProperty().getRGBTransferFunction(0).getRange(),a={viewportId:t,range:{lower:r[0],upper:r[1]},volumeId:n};Rt(e,m.VOI_MODIFIED,a)}(t,i,u,a),u},gi="viewport-element",mi="cornerstone-canvas";function pi(e){const t="canvas.".concat(mi),i="div.".concat(gi),n=e.querySelector(i)||function(e){const t=document.createElement("div");return t.style.position="relative",t.style.width="100%",t.style.height="100%",t.classList.add(gi),e.appendChild(t),t}(e);return n.querySelector(t)||function(e){const t=document.createElement("canvas");return t.style.position="absolute",t.style.width="100%",t.style.height="100%",t.classList.add(mi),e.appendChild(t),t}(n)}var vi=Z(21),fi=Z.n(vi),wi=Z(643),Ii=Z.n(wi),Ci=Z(128),Ei=Z.n(Ci),yi=Z(664),Ri=Z.n(yi),Pi=Z(973),Ai=Z.n(Pi),Ti=Z(394),bi=Z.n(Ti),Oi=Z(582),Si=Z.n(Oi),Di=Z(482),_i=Z.n(Di),ki=Z(343),Mi=Z.n(ki),xi=Z(363),Vi=Z.n(xi),Li=Z(982),Ui=Z.n(Li),Ni=Z(130),Fi=Z.n(Ni),ji=Z(298),Gi=Z.n(ji),Wi=Z(398),Bi=Z.n(Wi),qi=Z(388),zi=Z.n(qi),Hi=Z(120),Ki=Z.n(Hi),Yi=Z(395),Xi=Z(948),Zi=Z(478);const{vtkWarningMacro:Qi}=ue(),Ji={};function $i(e,t){let i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};Object.assign(t,Ji,i),zi().extend(e,t,i),t.scalarTexture=i.scalarTexture,t.previousState={},function(e,t){t.classHierarchy.push("vtkStreamingOpenGLVolumeMapper"),e.buildBufferObjects=(e,i)=>{const n=t.currentInput;if(!n)return;const r=n.getPointData()&&n.getPointData().getScalars();if(!r)return;const a=i.getProperty();if(!t.jitterTexture.getHandle()){const e=new Uint8Array(1024);for(let t=0;t<1024;++t)e[t]=255*Math.random();t.jitterTexture.setMinificationFilter(Yi.Filter.LINEAR),t.jitterTexture.setMagnificationFilter(Yi.Filter.LINEAR),t.jitterTexture.create2DFromRaw(32,32,1,Xi.VtkDataTypes.UNSIGNED_CHAR,e)}const o=r.getNumberOfComponents(),s=a.getIndependentComponents()?o:1;let l="".concat(a.getMTime());if(t.opacityTextureString!==l){const e=1024,i=2*e*s,n=new Float32Array(i),r=new Float32Array(e);for(let i=0;i<s;++i){const o=a.getScalarOpacity(i),s=t.renderable.getSampleDistance()/a.getScalarOpacityUnitDistance(i),l=o.getRange();o.getTable(l[0],l[1],e,r,1);for(let t=0;t<e;++t)n[i*e*2+t]=1-(1-r[t])**s,n[i*e*2+t+e]=n[i*e*2+t]}if(t.opacityTexture.releaseGraphicsResources(t._openGLRenderWindow),t.opacityTexture.setMinificationFilter(Yi.Filter.LINEAR),t.opacityTexture.setMagnificationFilter(Yi.Filter.LINEAR),t._openGLRenderWindow.getWebgl2()||t.context.getExtension("OES_texture_float")&&t.context.getExtension("OES_texture_float_linear"))t.opacityTexture.create2DFromRaw(e,2*s,1,Xi.VtkDataTypes.FLOAT,n);else{const r=new Uint8Array(i);for(let e=0;e<i;++e)r[e]=255*n[e];t.opacityTexture.create2DFromRaw(e,2*s,1,Xi.VtkDataTypes.UNSIGNED_CHAR,r)}t.opacityTextureString=l}if(l="".concat(a.getMTime()),t.colorTextureString!==l){const e=1024,i=new Uint8Array(2*e*s*3),n=new Float32Array(3*e);for(let t=0;t<s;++t){const r=a.getRGBTransferFunction(t),o=r.getRange();r.getTable(o[0],o[1],e,n,1);for(let r=0;r<3*e;++r)i[t*e*6+r]=255*n[r],i[t*e*6+r+3*e]=255*n[r]}t.colorTexture.releaseGraphicsResources(t._openGLRenderWindow),t.colorTexture.setMinificationFilter(Yi.Filter.LINEAR),t.colorTexture.setMagnificationFilter(Yi.Filter.LINEAR),t.colorTexture.create2DFromRaw(e,2*s,3,Xi.VtkDataTypes.UNSIGNED_CHAR,i),t.colorTextureString=l}if(l="".concat(n.getMTime()),t.scalarTextureString!==l){const e=n.getDimensions(),i=t.scalarTexture.getTextureParameters(),a=n.getPointData().getScalars().getDataType(),s=n.getPointData().getScalars().getData();let c=!0;if(i.dataType&&i.dataType===a){const e=i.width*i.height*i.depth*i.numComps;s.length===e&&(c=!1)}c?(t.scalarTexture.setOglNorm16Ext(t.context.getExtension("EXT_texture_norm16")),t.scalarTexture.releaseGraphicsResources(t._openGLRenderWindow),t.scalarTexture.resetFormatAndType(),t.scalarTexture.create3DFilterableFromRaw(e[0],e[1],e[2],o,r.getDataType(),r.getData(),t.renderable.getPreferSizeOverAccuracy())):(t.scalarTexture.deactivate(),t.scalarTexture.update3DFromRaw(s)),t.scalarTextureString=l}if(!t.tris.getCABO().getElementCount()){const e=new Float32Array(12);for(let t=0;t<4;t++)e[3*t]=t%2*2-1,e[3*t+1]=t>1?1:-1,e[3*t+2]=-1;const i=new Uint16Array(8);i[0]=3,i[1]=0,i[2]=1,i[3]=3,i[4]=3,i[5]=0,i[6]=3,i[7]=2;const n=ae().newInstance({numberOfComponents:3,values:e});n.setName("points");const r=ae().newInstance({numberOfComponents:1,values:i});t.tris.getCABO().createVBO(r,"polys",Zi.Representation.SURFACE,{points:n,cellOffset:0})}t.VBOBuildTime.modified()},e.getRenderTargetSize=()=>{if(t._useSmallViewport)return[t._smallViewportWidth,t._smallViewportHeight];const{usize:e,vsize:i}=t._openGLRenderer.getTiledSizeAndOrigin();return[e,i]},e.getRenderTargetOffset=()=>{const{lowerLeftU:e,lowerLeftV:i}=t._openGLRenderer.getTiledSizeAndOrigin();return[e,i]}}(e,t)}const en={newInstance:ue().newInstance($i,"vtkStreamingOpenGLVolumeMapper"),extend:$i},tn={};function nn(e,t){let i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};Object.assign(t,tn,i),Ki().extend(e,t,i),function(e,t){t.classHierarchy.push("vtkStreamingOpenGLViewNodeFactory"),e.createNode=i=>{if(i.isDeleted())return null;let n=0,r=i.getClassName(n++),a=!1;const o=Object.keys(t.overrides);for(;r&&!a;)-1!==o.indexOf(r)?a=!0:r=i.getClassName(n++);if(!a)return null;const s=t.getModelInitialValues(i),l=t.overrides[r](s);return l.setMyFactory(e),l},t.getModelInitialValues=e=>{const t={};return"vtkSharedVolumeMapper"===e.getClassName()&&(t.scalarTexture=e.getScalarTexture()),t}}(e,t),e.registerOverride("vtkActor",Ii().newInstance),e.registerOverride("vtkActor2D",Ei().newInstance),e.registerOverride("vtkCamera",Ri().newInstance),e.registerOverride("vtkGlyph3DMapper",Ai().newInstance),e.registerOverride("vtkImageMapper",bi().newInstance),e.registerOverride("vtkImageSlice",Si().newInstance),e.registerOverride("vtkMapper",Mi().newInstance),e.registerOverride("vtkPixelSpaceCallbackMapper",_i().newInstance),e.registerOverride("vtkRenderer",Vi().newInstance),e.registerOverride("vtkSkybox",Ui().newInstance),e.registerOverride("vtkSphereMapper",Fi().newInstance),e.registerOverride("vtkStickMapper",Gi().newInstance),e.registerOverride("vtkTexture",me().newInstance),e.registerOverride("vtkVolume",Bi().newInstance),e.registerOverride("vtkVolumeMapper",zi().newInstance),e.registerOverride("vtkSharedVolumeMapper",en.newInstance)}const rn={newInstance:ue().newInstance(nn,"vtkStreamingOpenGLViewNodeFactory"),extend:nn};function an(e,t){let i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};Object.assign(t,i),fi().extend(e,t,i),t.myFactory=rn.newInstance(),t.myFactory.registerOverride("vtkRenderWindow",on),function(e,t){t.classHierarchy.push("vtkStreamingOpenGLRenderWindow")}(0,t)}const on=ue().newInstance(an,"vtkStreamingOpenGLRenderWindow"),sn={newInstance:on,extend:an};var ln=Z(281),cn=Z.n(ln),dn=Z(329),hn=Z.n(dn),un=Z(673),gn=Z.n(un);Z(348),Z(70),Z(474),Z(610);const mn={background:[0,0,0],container:null};function pn(e,t){let i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};Object.assign(t,mn,i),ue().obj(e,t),ue().get(e,t,["renderWindow","openGLRenderWindow","interactor","container"]),ue().event(e,t,"resize"),function(e,t){const i=e.invokeResize;delete e.invokeResize,t.renderWindow=hn().newInstance(),t.rendererMap={},t.openGLRenderWindow=sn.newInstance(),t.renderWindow.addView(t.openGLRenderWindow),t.interactor=gn().newInstance(),t.interactor.setView(t.openGLRenderWindow),t.interactor.initialize(),e.addRenderer=e=>{let{viewport:i,id:n,background:r}=e;const a=cn().newInstance({viewport:i,background:r||t.background});t.renderWindow.addRenderer(a),t.rendererMap[n]=a},e.destroy=()=>{t.renderWindow.getInteractor().delete()},e.removeRenderer=i=>{const n=e.getRenderer(i);t.renderWindow.removeRenderer(n),n.delete(),delete t.rendererMap[i]},e.getRenderer=e=>t.rendererMap[e],e.getRenderers=()=>{const{rendererMap:e}=t;return Object.keys(e).map((t=>({id:t,renderer:e[t]})))},e.resize=()=>{if(t.container){const{width:e,height:n}=t.container;t.openGLRenderWindow.setSize(Math.floor(e),Math.floor(n)),i(),t.renderWindow.render()}},e.setContainer=e=>{t.container=e,t.openGLRenderWindow.setContainer(t.container)},e.delete=ue().chain(e.setContainer,e.destroy,t.openGLRenderWindow.delete,e.delete),e.resize()}(e,t)}const vn={newInstance:ue().newInstance(pn),extend:pn};var fn=Z(864),wn=Z.n(fn),In=Z(976);const Cn=Pt;function En(e,t){const{direction:i,spacing:n}=e,r=i.slice(0,3),a=i.slice(3,6),o=i.slice(6,9),s=[In.vec3.dot(r,t),In.vec3.dot(a,t),In.vec3.dot(o,t)],l=In.vec3.create();return In.vec3.set(l,s[0]*n[0],s[1]*n[1],s[2]*n[2]),In.vec3.length(l)}function yn(e){return Rn(e,"vtkVolume")||Rn(e,"vtkImageSlice")}function Rn(e,t){return!!e.actor.isA(t)}function Pn(e,t,i){if(!e)return;const{direction:n,imageIds:r}=e;if(!r||!r.length)return;const a=n.slice(6,9),o=In.vec3.dot(a,i);if(Math.abs(o)<1-X)return;const s=En(e,i)/2;let l;for(let e=0;e<r.length;e++){const n=r[e],{imagePositionPatient:a}=oi("imagePlaneModule",n),o=In.vec3.create();In.vec3.sub(o,t,a);const c=In.vec3.dot(o,i);Math.abs(c)<s&&(l=n)}return l}var An=Z(795),Tn=Z.n(An),bn=Z(38),On=Z.n(bn),Sn=Z(441),Dn=Z.n(Sn);function _n(e){let t=[];const[i,n]=e.getRange();e.getTable(i,n,1024,t),t=t.filter(((e,t)=>t%3==0));const r=[...Array(1024).keys()].map(((e,t)=>i+(n-i)/1023*t)),a=t[256],o=Math.log((1-a)/a),s=r[256],l=t[768],c=Math.log((1-l)/l),d=r[768],h=Math.round(4*(d-s)/(o-c)),u=Math.round(s+h*o/4);return[Math.round(u-h/2),Math.round(u+h/2)]}const kn=new Map;function Mn(e){kn.set(e.Name,e)}function xn(e){return kn.get(e)}function Vn(){return Array.from(kn.keys())}function Ln(e){if(!e)return;const t=e.getSize();for(let i=0;i<t;i++){const t=[];e.getNodeValue(i,t),t[1]=1-t[1],t[2]=1-t[2],t[3]=1-t[3],e.setNodeValue(i,t)}}function Un(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1024;const{windowWidth:i,windowCenter:n}=si(e.lower,e.upper),r=[...Array(t+2).keys()].map((e=>e/(t+2))).slice(1,-1).reduce(((e,t)=>{const r=((e,t,i)=>t-i/4*Math.log((1-e)/e))(t,n,i);return e.concat(r,t,t,t,.5,0)}),[]),a=Tn().newInstance();return a.buildFunctionFromArray(ae().newInstance({values:r,numberOfComponents:6})),a}function Nn(e,t){const i=t.colorTransfer.split(" ").splice(1).map(parseFloat),{shiftRange:n}=function(e){let t=1/0,i=-1/0;for(let n=0;n<e.length;n+=4)t=Math.min(t,e[n]),i=Math.max(i,e[n]);const n=(i-t)/2;return{shiftRange:[-n,n],min:t,max:i}}(i),r=n[0],a=n[1]-n[0],o=Tn().newInstance(),s=[];for(let e=0;e<i.length;e+=4){let t=i[e];const n=i[e+1],o=i[e+2],l=i[e+3];t=(t-r)/a,s.push([t,n,o,l])}!function(e,t,i){const n=t[1]-t[0],r=e.map((e=>{let[i,r,a,o]=e;return[i*n+t[0],r,a,o]}));i.removeAllPoints(),r.forEach((e=>{let[t,n,r,a]=e;return i.addRGBPoint(t,n,r,a)}))}(s,n,o),e.getProperty().setRGBTransferFunction(0,o);const l=t.scalarOpacity.split(" ").splice(1).map(parseFloat),c=Dn().newInstance(),d=[];for(let e=0;e<l.length;e+=2){let t=l[e];const i=l[e+1];t=(t-r)/a,d.push([t,i])}!function(e,t,i){const n=t[1]-t[0],r=e.map((e=>{let[i,r]=e;return[i*n+t[0],r]}));i.removeAllPoints(),r.forEach((e=>{let[t,n]=e;return i.addPoint(t,n)}))}(d,n,c),e.getProperty().setScalarOpacity(0,c);const[h,u,g,m]=t.gradientOpacity.split(" ").splice(1).map(parseFloat);e.getProperty().setUseGradientOpacity(0,!0),e.getProperty().setGradientOpacityMinimumValue(0,h),e.getProperty().setGradientOpacityMinimumOpacity(0,u),e.getProperty().setGradientOpacityMaximumValue(0,g),e.getProperty().setGradientOpacityMaximumOpacity(0,m),"1"===t.interpolation&&e.getProperty().setInterpolationTypeToFastLinear();const p=parseFloat(t.ambient),v=parseFloat(t.diffuse),f=parseFloat(t.specular),w=parseFloat(t.specularPower);e.getProperty().setAmbient(p),e.getProperty().setDiffuse(v),e.getProperty().setSpecular(f),e.getProperty().setSpecularPower(w)}var Fn=Z(847),jn=Z.n(Fn);function Gn(e){const t=e.getMapper().getInputData(),i=t.extentToBounds(t.getExtent());return[[i[0],i[2],i[4]],[i[0],i[2],i[5]],[i[0],i[3],i[4]],[i[0],i[3],i[5]],[i[1],i[2],i[4]],[i[1],i[2],i[5]],[i[1],i[3],i[4]],[i[1],i[3],i[5]]]}const Wn=X*X,Bn=e=>Math.abs(Math.abs(e)-1)<Wn,qn=(e,t)=>Bn(e[t])||Bn(e[t+1])||Bn(e[t+2]),zn=e=>qn(e,0)&&qn(e,3)&&qn(e,6);function Hn(e,t,i){const n=e.getMapper().getInputData();let r;const a=n.getDirection();if(zn(a))r=Gn(e);else{const[e,t,i]=n.getDimensions();r=[[0,0,0],[e-1,0,0],[0,t-1,0],[e-1,t-1,0],[0,0,i-1],[e-1,0,i-1],[0,t-1,i-1],[e-1,t-1,i-1]].map((e=>n.indexToWorld(e)))}const o=jn().buildFromDegree().identity().rotateFromDirections(t,[1,0,0]);r.forEach((e=>o.apply(e)));const s=[...i];o.apply(s);const l=s[0];let c=1/0,d=-1/0;for(let e=0;e<8;e++){const t=r[e][0];t>d&&(d=t),t<c&&(c=t)}return{min:c,max:d,current:l,actor:e,viewPlaneNormal:t,focalPoint:i}}const Kn=1+X,Yn=e=>!!xt().find((t=>{return(n=t)===(i=e.volumeId).substring(0,Math.min(i.length,n.length));var i,n}));function Xn(e,t,i){const{viewPlaneNormal:n}=t,r=e.getActors();if(!r||!r.length)return{spacingInNormalDirection:null,imageVolume:null,actorUID:null};const a=r.map((e=>{var t;const i=null!==(t=e.referenceId)&&void 0!==t?t:e.uid;return Pt.getVolume(i)})).filter((e=>!!e));if(i){const t=a.findIndex((e=>e.volumeId===i)),o=a[t],{uid:s}=r[t];return{imageVolume:o,spacingInNormalDirection:Zn(o,n,e),actorUID:s}}if(!a.length)return{spacingInNormalDirection:null,imageVolume:null,actorUID:null};const o={spacingInNormalDirection:1/0,imageVolume:null,actorUID:null},s=a.find(Yn);for(let t=0;t<a.length;t++){const i=a[t];if(s&&!Yn(i))continue;const l=Zn(i,n,e);l*Kn<o.spacingInNormalDirection&&(o.spacingInNormalDirection=l,o.imageVolume=i,o.actorUID=r[t].uid)}return o}function Zn(e,t,i){const{slabThickness:n}=i.getProperties();let r=n;return n||(r=En(e,t)),r}const Qn=function(e){const t=e.getCamera(),{spacingInNormalDirection:i,imageVolume:n}=Xn(e,t);if(!n)return;const{viewPlaneNormal:r,focalPoint:a}=t,o=e.getActors().find((e=>e.referenceId===n.volumeId||e.uid===n.volumeId));o||console.warn("No actor found for with actorUID of",n.volumeId);const s=Hn(o.actor,r,a),{min:l,max:c,current:d}=s,h=Math.round((c-l)/i)+1;let u=(d-l)/(c-l)*h;return u=Math.floor(u),u>h-1?u=h-1:u<0&&(u=0),{numberOfSlices:h,imageIndex:u}},Jn={};var $n=Z(807),er=Z.n($n);function tr(e,t,i){const[n,r,a]=e,[o,s,l]=t,[c,d,h,u]=i,g=o-n,m=s-r,p=l-a,v=-1*(c*n+d*r+h*a-u)/(c*g+d*m+h*p);return[g*v+n,m*v+r,p*v+a]}function ir(e,t){const[i,n,r]=e;return[i,n,r,i*t[0]+n*t[1]+r*t[2]]}function nr(e,t,i){const[n,r,a,o]=e,[s,l,c,d]=t,[h,u,g,m]=i,p=In.mat3.fromValues(n,s,h,r,l,u,a,c,g),v=In.mat3.fromValues(o,d,m,r,l,u,a,c,g),f=In.mat3.fromValues(n,s,h,o,d,m,a,c,g),w=In.mat3.fromValues(n,s,h,r,l,u,o,d,m);return[In.mat3.determinant(v)/In.mat3.determinant(p),In.mat3.determinant(f)/In.mat3.determinant(p),In.mat3.determinant(w)/In.mat3.determinant(p)]}function rr(e,t){let i=arguments.length>2&&void 0!==arguments[2]&&arguments[2];const[n,r,a,o]=e,[s,l,c]=t,d=n*s+r*l+a*c-o,h=Math.abs(d)/Math.sqrt(n*n+r*r+a*a);return(i?Math.sign(d):1)*h}function ar(e,t,i){return Math.abs(e-t)<=i}function or(e){return"number"==typeof e}function sr(e){return"length"in e&&"number"==typeof e[0]}function lr(e,t){let i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1e-5;return typeof e==typeof t&&null!==e&&null!==t&&(or(e)&&or(t)?ar(e,t,i):!(!sr(e)||!sr(t))&&function(e,t){let i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1e-5;if(e.length!==t.length)return!1;for(let n=0;n<e.length;n++)if(!ar(e[n],t[n],i))return!1;return!0}(e,t,i))}function cr(e){return Array.isArray(e)?e.some((e=>Number.isNaN(e))):Number.isNaN(e)}const dr=class{constructor(e){ce(this,"id",void 0),ce(this,"element",void 0),ce(this,"canvas",void 0),ce(this,"renderingEngineId",void 0),ce(this,"type",void 0),ce(this,"flipHorizontal",!1),ce(this,"flipVertical",!1),ce(this,"isDisabled",void 0),ce(this,"viewportStatus",j.NO_DATA),ce(this,"sx",void 0),ce(this,"sy",void 0),ce(this,"sWidth",void 0),ce(this,"sHeight",void 0),ce(this,"_actors",void 0),ce(this,"defaultOptions",void 0),ce(this,"options",void 0),ce(this,"newActorAdded",!1),ce(this,"_suppressCameraModifiedEvents",!1),ce(this,"suppressEvents",void 0),ce(this,"hasPixelSpacing",!0),ce(this,"calibration",void 0),ce(this,"initialCamera",void 0),ce(this,"fitToCanvasCamera",void 0),ce(this,"getRotation",void 0),ce(this,"getFrameOfReferenceUID",void 0),ce(this,"canvasToWorld",void 0),ce(this,"worldToCanvas",void 0),ce(this,"customRenderViewportToCanvas",void 0),ce(this,"resize",void 0),ce(this,"getProperties",void 0),ce(this,"updateRenderingPipeline",void 0),ce(this,"getNumberOfSlices",void 0),this.id=e.id,this.renderingEngineId=e.renderingEngineId,this.type=e.type,this.element=e.element,this.canvas=e.canvas,this.sx=e.sx,this.sy=e.sy,this.sWidth=e.sWidth,this.sHeight=e.sHeight,this._actors=new Map,this.element.setAttribute("data-viewport-uid",this.id),this.element.setAttribute("data-rendering-engine-uid",this.renderingEngineId),this.defaultOptions=se()(e.defaultOptions),this.suppressEvents=!!e.defaultOptions.suppressEvents&&e.defaultOptions.suppressEvents,this.options=se()(e.defaultOptions),this.isDisabled=!1}static get useCustomRenderingPipeline(){return!1}setRendered(){this.viewportStatus!==j.NO_DATA&&this.viewportStatus!==j.LOADING&&(this.viewportStatus=j.RENDERED)}getRenderingEngine(){return Ie.get(this.renderingEngineId)}getRenderer(){const e=this.getRenderingEngine();if(!e||e.hasBeenDestroyed)throw new Error("Rendering engine has been destroyed");return e.offscreenMultiRenderWindow.getRenderer(this.id)}render(){this.getRenderingEngine().renderViewport(this.id)}setOptions(e){var t;let i=arguments.length>1&&void 0!==arguments[1]&&arguments[1];var n;this.options=se()(e),null!==(t=this.options)&&void 0!==t&&t.displayArea&&this.setDisplayArea(null===(n=this.options)||void 0===n?void 0:n.displayArea),i&&this.render()}reset(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];this.options=se()(this.defaultOptions),e&&this.render()}flip(e){let{flipHorizontal:t,flipVertical:i}=e;const n=this.getDefaultImageData();if(!n)return;const r=this.getCamera(),{viewPlaneNormal:a,viewUp:o,focalPoint:s,position:l}=r,c=In.vec3.cross(In.vec3.create(),a,o);let d=In.vec3.copy(In.vec3.create(),o);const h=In.vec3.negate(In.vec3.create(),a),u=In.vec3.distance(l,s),g=n.getDimensions().map((e=>Math.floor(e/2))),m=[g[0],g[1],g[2]],p=n.indexToWorld(m,In.vec3.create()),v=this._getFocalPointForResetCamera(p,r,{resetPan:!0,resetToCenter:!1}),f=In.vec3.subtract(In.vec3.create(),s,v),w=In.vec3.length(f),I=e=>{const t=In.vec3.scale(In.vec3.create(),e,2*In.vec3.dot(f,e));return In.vec3.subtract(t,t,f),In.vec3.normalize(t,t),t};if(t){const e=I(d),t=In.vec3.scaleAndAdd(In.vec3.create(),v,e,w),i=In.vec3.scaleAndAdd(In.vec3.create(),t,h,u);this.setCamera({viewPlaneNormal:h,position:i,focalPoint:t}),this.flipHorizontal=!this.flipHorizontal}if(i){d=In.vec3.negate(d,o);const e=I(c),t=In.vec3.scaleAndAdd(In.vec3.create(),v,e,w),i=In.vec3.scaleAndAdd(In.vec3.create(),t,h,u);this.setCamera({focalPoint:t,viewPlaneNormal:h,viewUp:d,position:i}),this.flipVertical=!this.flipVertical}this.render()}getDefaultImageData(){const e=this.getDefaultActor();if(e&&yn(e))return e.actor.getMapper().getInputData()}getDefaultActor(){return this.getActors()[0]}getActors(){return Array.from(this._actors.values())}getActor(e){return this._actors.get(e)}getActorUIDByIndex(e){const t=this.getActors()[e];if(t)return t.uid}getActorByIndex(e){return this.getActors()[e]}setActors(e){this.removeAllActors(),this.addActors(e,!0)}_removeActor(e){const t=this.getActor(e);t?(this.getRenderer().removeViewProp(t.actor),this._actors.delete(e)):console.warn("Actor ".concat(e," does not exist for this viewport"))}removeActors(e){e.forEach((e=>{this._removeActor(e)}))}addActors(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];const i=this.getRenderingEngine();i&&!i.hasBeenDestroyed?(e.forEach((e=>this.addActor(e))),this.resetCamera(t,t)):console.warn("Viewport::addActors::Rendering engine has not been initialized or has been destroyed")}addActor(e){const{uid:t,actor:i}=e,n=this.getRenderingEngine();if(n&&!n.hasBeenDestroyed){if(!t||!i)throw new Error("Actors should have uid and vtk Actor properties");this.getActor(t)?console.warn("Actor ".concat(t," already exists for this viewport")):(this.getRenderer().addActor(i),this._actors.set(t,Object.assign({},e)),this.newActorAdded=!0)}else console.warn("Cannot add actor UID of ".concat(t," Rendering Engine has been destroyed"))}removeAllActors(){this.getRenderer().removeAllViewProps(),this._actors=new Map}resetCameraNoEvent(){this._suppressCameraModifiedEvents=!0,this.resetCamera(),this._suppressCameraModifiedEvents=!1}setCameraNoEvent(e){this._suppressCameraModifiedEvents=!0,this.setCamera(e),this._suppressCameraModifiedEvents=!1}_getViewImageDataIntersections(e,t,i){const n=i[0],r=i[1],a=i[2],o=n*t[0]+r*t[1]+a*t[2],s=e.getBounds(),l=this._getEdges(s),c=[];for(const e of l){const[[t,i,l],[d,h,u]]=e;if(n*(d-t)+r*(h-i)+a*(u-l)==0)continue;const g=tr([t,i,l],[d,h,u],[n,r,a,o]);this._isInBounds(g,s)&&c.push(g)}return c}setDisplayArea(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];const{storeAsInitialCamera:i}=e;this.setCamera(this.fitToCanvasCamera,!1);const{imageArea:n,imageCanvasPoint:r}=e;if(n){const[e,t]=n,r=Math.min(this.getZoom()/e,this.getZoom()/t);this.setZoom(r,i)}const a=this.getDefaultImageData();if(r&&a){var o;const{imagePoint:e,canvasPoint:t}=r,[n,s]=t,l=(null===(o=window)||void 0===o?void 0:o.devicePixelRatio)||1,c=this.sWidth/l*(n-.5),d=this.sHeight/l*(s-.5),h=a.getDimensions(),u=this.worldToCanvas([0,0,0]),g=this.worldToCanvas(h),m=[g[0]-u[0],g[1]-u[1]],[p,v]=m,[f,w]=e,I=[p*(.5-f)+c,v*(.5-w)+d];this.setPan(I,i)}if(i&&(this.options.displayArea=e),!t){const t={viewportId:this.id,displayArea:e,storeAsInitialCamera:i};Rt(this.element,m.DISPLAY_AREA_MODIFIED,t)}}getDisplayArea(){var e;return null===(e=this.options)||void 0===e?void 0:e.displayArea}resetCamera(){var e;let t=!(arguments.length>0&&void 0!==arguments[0])||arguments[0],i=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],n=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],r=!(arguments.length>3&&void 0!==arguments[3])||arguments[3];const a=this.getRenderer();this.setCamera({flipHorizontal:!1,flipVertical:!1});const o=se()(this.getCamera()),s=a.computeVisiblePropBounds(),l=[0,0,0],c=this.getDefaultImageData();if(c){const e=c.getSpacing();s[0]=s[0]+e[0]/2,s[1]=s[1]-e[0]/2,s[2]=s[2]+e[1]/2,s[3]=s[3]-e[1]/2,s[4]=s[4]+e[2]/2,s[5]=s[5]-e[2]/2}const d=this.getVtkActiveCamera(),h=d.getViewPlaneNormal(),u=d.getViewUp();if(l[0]=(s[0]+s[1])/2,l[1]=(s[2]+s[3])/2,l[2]=(s[4]+s[5])/2,c){const e=c.getDimensions().map((e=>Math.floor(e/2))),t=[e[0],e[1],e[2]];c.indexToWorld(t,l)}const{widthWorld:g,heightWorld:m}=this._getWorldDistanceViewUpAndViewRight(s,u,h),p=[this.sWidth,this.sHeight],v=g/m,f=p[0]/p[1];let w;w=v<f?m/2:m*(v/f)/2;const I=1.1*w;let C=s[1]-s[0],E=s[3]-s[2],y=s[5]-s[4];C*=C,E*=E,y*=y,w=C+E+y,w=0===w?1:w,w=.5*Math.sqrt(w);const R=1.1*w,P=Math.abs(er().dot(u,h))>.999?[-u[2],u[0],u[1]]:u,A=this._getFocalPointForResetCamera(l,o,{resetPan:t,resetToCenter:n}),T=[A[0]+R*h[0],A[1]+R*h[1],A[2]+R*h[2]];a.resetCameraClippingRange(s);const b=[-Y.MAXIMUM_RAY_DISTANCE,Y.MAXIMUM_RAY_DISTANCE];d.setPhysicalScale(w),d.setPhysicalTranslation(-A[0],-A[1],-A[2]),this.setCamera({parallelScale:i?I:o.parallelScale,focalPoint:A,position:T,viewAngle:90,viewUp:P,clippingRange:b});const O=se()(this.getCamera());this.setFitToCanvasCamera(se()(this.getCamera())),r&&this.setInitialCamera(O);const S={type:"ResetCameraEvent",renderer:a};var D;return a.invokeEvent(S),this.triggerCameraModifiedEventIfNecessary(o,O),c&&null!==(e=this.options)&&void 0!==e&&e.displayArea&&i&&t&&n&&this.setDisplayArea(null===(D=this.options)||void 0===D?void 0:D.displayArea),!0}setInitialCamera(e){this.initialCamera=e}setFitToCanvasCamera(e){this.fitToCanvasCamera=e}getPan(){const e=this.getVtkActiveCamera().getFocalPoint(),t=this.canvasToWorld([0,0]),i=this.worldToCanvas(In.vec3.subtract(In.vec3.create(),this.initialCamera.focalPoint,t)),n=this.worldToCanvas(In.vec3.subtract(In.vec3.create(),e,t));return In.vec2.subtract(In.vec2.create(),i,n)}setPan(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];const i=this.getCamera(),{focalPoint:n,position:r}=i,a=this.canvasToWorld([0,0]),o=In.vec2.subtract(In.vec2.create(),e,this.getPan());if(Math.abs(o[0])<1&&Math.abs(o[1])<1&&!t)return;const s=In.vec3.subtract(In.vec3.create(),this.canvasToWorld(o),a),l=In.vec3.subtract(In.vec3.create(),n,s),c=In.vec3.subtract(In.vec3.create(),r,s);this.setCamera({...i,focalPoint:l,position:c},t)}getZoom(){const e=this.getVtkActiveCamera(),{parallelScale:t}=this.initialCamera;return t/e.getParallelScale()}setZoom(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];const i=this.getCamera(),{parallelScale:n}=this.initialCamera,r=n/e;(i.parallelScale!==r||t)&&this.setCamera({...i,parallelScale:r},t)}_getFocalPointForViewPlaneReset(e){const{focalPoint:t,viewPlaneNormal:i}=this.getCamera(),n=this._getViewImageDataIntersections(e,t,i);let r=0,a=0,o=0;return n.forEach((e=>{let[t,i,n]=e;r+=t,a+=i,o+=n})),[r/n.length,a/n.length,o/n.length]}getCanvas(){return this.canvas}getVtkActiveCamera(){return this.getRenderer().getActiveCamera()}getCamera(){const e=this.getVtkActiveCamera();return{viewUp:e.getViewUp(),viewPlaneNormal:e.getViewPlaneNormal(),position:e.getPosition(),focalPoint:e.getFocalPoint(),parallelProjection:e.getParallelProjection(),parallelScale:e.getParallelScale(),viewAngle:e.getViewAngle(),flipHorizontal:this.flipHorizontal,flipVertical:this.flipVertical}}setCamera(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];const i=this.getVtkActiveCamera(),n=se()(this.getCamera()),r=Object.assign({},n,e),{viewUp:a,viewPlaneNormal:o,position:s,focalPoint:l,parallelScale:c,viewAngle:d,flipHorizontal:h,flipVertical:u,clippingRange:g}=e;if(void 0!==h){const e=h&&!this.flipHorizontal||!h&&this.flipHorizontal;e&&this.flip({flipHorizontal:e})}if(void 0!==u){const e=u&&!this.flipVertical||!u&&this.flipVertical;e&&this.flip({flipVertical:e})}void 0!==a&&i.setViewUp(a),void 0!==o&&i.setDirectionOfProjection(-o[0],-o[1],-o[2]),void 0!==s&&i.setPosition(...s),void 0!==l&&i.setFocalPoint(...l),void 0!==c&&i.setParallelScale(c),void 0!==d&&i.setViewAngle(d),void 0!==g&&i.setClippingRange(g);const m=n.focalPoint,p=n.viewUp;if(m&&l||p&&a){const e=i.getViewPlaneNormal(),t=i.getViewUp();let n=!1,o=!1;if(l){const t=[l[0]-m[0],l[1]-m[1],l[2]-m[2]];n=Math.abs(er().dot(t,e))>0}if(a&&(o=!lr(t,p)),n||o||this.newActorAdded){const e=this.getDefaultActor();if(null==e||!e.actor)return;Rn(e,"vtkActor")||this.updateClippingPlanesForActors(r),Rn(e,"vtkImageSlice")&&this.getRenderer().resetCameraClippingRange()}}t&&this.setInitialCamera(r),this.triggerCameraModifiedEventIfNecessary(n,this.getCamera())}triggerCameraModifiedEventIfNecessary(e,t){if(!this._suppressCameraModifiedEvents&&!this.suppressEvents){const i={previousCamera:e,camera:t,element:this.element,viewportId:this.id,renderingEngineId:this.renderingEngineId,rotation:this.getRotation()};Rt(this.element,m.CAMERA_MODIFIED,i)}}async updateClippingPlanesForActors(e){const t=this.getActors().map((async t=>{if(!t.actor)return;const i=t.actor.getMapper();let n=null!=t&&t.clippingFilter?t.clippingFilter.getClippingPlanes():i.getClippingPlanes();0===n.length&&null!=t&&t.clippingFilter&&(n=[wn().newInstance(),wn().newInstance()]);let r=Y.MINIMUM_SLAB_THICKNESS;t.slabThickness&&(r=t.slabThickness);const{viewPlaneNormal:a,focalPoint:o}=e;this.setOrientationOfClippingPlanes(n,r,a,o),Rt(this.element,m.CLIPPING_PLANES_UPDATED,{actorEntry:t,focalPoint:o,vtkPlanes:n,viewport:this})}));await Promise.all(t),this.posProcessNewActors()}posProcessNewActors(){this.newActorAdded=!1}setOrientationOfClippingPlanes(e,t,i,n){if(e.length<2)return;const r=[i[0],i[1],i[2]];er().multiplyScalar(r,t),e[0].setNormal(i);const a=[0,0,0];er().subtract(n,r,a),e[0].setOrigin(a),e[1].setNormal(-i[0],-i[1],-i[2]);const o=[0,0,0];er().add(n,r,o),e[1].setOrigin(o)}_getWorldDistanceViewUpAndViewRight(e,t,i){const n=this._getCorners(e),r=this._getCorners(e),a=In.vec3.cross(In.vec3.create(),t,i);let o=jn().buildFromDegree().identity().rotateFromDirections(t,[1,0,0]);n.forEach((e=>o.apply(e)));let s=1/0,l=-1/0;for(let e=0;e<8;e++){const t=n[e][0];t>l&&(l=t),t<s&&(s=t)}o=jn().buildFromDegree().identity().rotateFromDirections([a[0],a[1],a[2]],[1,0,0]),r.forEach((e=>o.apply(e)));let c=1/0,d=-1/0;for(let e=0;e<8;e++){const t=r[e][0];t>d&&(d=t),t<c&&(c=t)}return{widthWorld:d-c,heightWorld:l-s}}_shouldUseNativeDataType(){const{useNorm16Texture:e,preferSizeOverAccuracy:t}=gt().rendering;return e||t}_getCorners(e){return[[e[0],e[2],e[4]],[e[0],e[2],e[5]],[e[0],e[3],e[4]],[e[0],e[3],e[5]],[e[1],e[2],e[4]],[e[1],e[2],e[5]],[e[1],e[3],e[4]],[e[1],e[3],e[5]]]}_getFocalPointForResetCamera(e,t,i){let{resetPan:n=!0,resetToCenter:r=!0}=i;if(r&&n)return e;if(r&&!n)return cr(t.focalPoint)?e:t.focalPoint;if(!r&&n){const i=t,n=i.focalPoint,r=i.viewPlaneNormal,a=In.vec3.subtract(In.vec3.create(),e,n),o=In.vec3.dot(a,r),s=In.vec3.scaleAndAdd(In.vec3.create(),e,r,-1*o);return[s[0],s[1],s[2]]}return n||r?void 0:cr(t.focalPoint)?e:t.focalPoint}_isInBounds(e,t){const[i,n,r,a,o,s]=t,[l,c,d]=e;return!(l<i||l>n||c<r||c>a||d<o||d>s)}_getEdges(e){const[t,i,n,r,a,o,s,l]=this._getCorners(e);return[[t,i],[t,a],[t,n],[i,r],[i,o],[n,r],[n,s],[r,l],[a,s],[a,o],[o,l],[s,l]]}};var hr=Z(821),ur=Z.n(hr);const gr={isPerformingCoordinateTransformation:!1};function mr(e,t){let i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};Object.assign(t,gr,i),ur().extend(e,t,i),ue().setGet(e,t,["isPerformingCoordinateTransformation"]),function(e,t){t.classHierarchy.push("vtkSlabCamera");const i=In.mat4.identity(new Float64Array(16)),n=new Float64Array(3);e.getProjectionMatrix=(e,r,a)=>{const o=In.mat4.create();if(t.projectionMatrix){const e=1/t.physicalScale;return In.vec3.set(n,e,e,e),In.mat4.copy(o,t.projectionMatrix),In.mat4.scale(o,o,n),In.mat4.transpose(o,o),o}In.mat4.identity(i);let s=t.clippingRange[0],l=t.clippingRange[1];t.isPerformingCoordinateTransformation&&(s=t.distance,l=t.distance+.1);const c=l-s,d=[s+(r+1)*c/2,s+(a+1)*c/2];if(t.parallelProjection){const n=t.parallelScale*e,r=t.parallelScale,a=(t.windowCenter[0]-1)*n,o=(t.windowCenter[0]+1)*n,s=(t.windowCenter[1]-1)*r,l=(t.windowCenter[1]+1)*r;In.mat4.ortho(i,a,o,s,l,d[0],d[1]),In.mat4.transpose(i,i)}else{if(t.useOffAxisProjection)throw new Error("Off-Axis projection is not supported at this time");{const n=Math.tan(er().radiansFromDegrees(t.viewAngle)/2);let r,a;!0===t.useHorizontalViewAngle?(r=s*n,a=s*n/e):(r=s*n*e,a=s*n);const o=(t.windowCenter[0]-1)*r,l=(t.windowCenter[0]+1)*r,c=(t.windowCenter[1]-1)*a,h=(t.windowCenter[1]+1)*a,u=d[0],g=d[1];i[0]=2*u/(l-o),i[5]=2*u/(h-c),i[2]=(o+l)/(l-o),i[6]=(c+h)/(h-c),i[10]=-(u+g)/(g-u),i[14]=-1,i[11]=-2*u*g/(g-u),i[15]=0}}return In.mat4.copy(o,i),o}}(e,t)}const pr={newInstance:ue().newInstance(mr,"vtkSlabCamera"),extend:mr};function vr(e,t){return e.worldToIndex(t).map(Math.round)}function fr(e){const t=e.getSize(),i=[];for(let n=0;n<t;n++){const t=[];e.getNodeValue(n,t),i.push(t)}return i}function wr(e,t){null!=t&&t.length&&(e.removeAllPoints(),t.forEach((t=>{e.addRGBPoint(...t)})))}const Ir=class extends dr{constructor(e){if(super(e),ce(this,"useCPURendering",!1),ce(this,"useNativeDataType",!1),ce(this,"_FrameOfReferenceUID",void 0),ce(this,"initialTransferFunctionNodes",void 0),ce(this,"globalDefaultProperties",void 0),ce(this,"perVolumeIdDefaultProperties",new Map),ce(this,"viewportProperties",{}),ce(this,"getDefaultProperties",(e=>{let t;return void 0!==e&&(t=this.perVolumeIdDefaultProperties.get(e)),void 0!==t?t:{...this.globalDefaultProperties}})),ce(this,"getProperties",(e=>{if(!this._getApplicableVolumeActor(e))return;const{colormap:t,VOILUTFunction:i,interpolationType:n,invert:r,slabThickness:a}=this.viewportProperties,o=this.getActors().map((e=>{var t;const i=e.actor,n=e.uid;if(!Cn.getVolume(n))return null;const r=i.getProperty().getRGBTransferFunction(0),[a,o]="SIGMOID"===(null===(t=this.viewportProperties)||void 0===t?void 0:t.VOILUTFunction)?_n(r):r.getRange();return{volumeId:n,voiRange:{lower:a,upper:o}}})).filter(Boolean);return{colormap:t,voiRange:o.length?o[0].voiRange:null,VOILUTFunction:i,interpolationType:n,invert:r,slabThickness:a}})),ce(this,"getFrameOfReferenceUID",(()=>this._FrameOfReferenceUID)),ce(this,"canvasToWorld",(e=>{var t,i;const n=this.getVtkActiveCamera();null===(t=n.setIsPerformingCoordinateTransformation)||void 0===t||t.call(n,!0);const r=this.getRenderer(),a=this.getRenderingEngine().offscreenMultiRenderWindow.getOpenGLRenderWindow(),o=a.getSize(),s=window.devicePixelRatio||1,l=[e[0]*s,e[1]*s],c=[l[0]+this.sx,l[1]+this.sy];c[1]=o[1]-c[1];const d=a.displayToWorld(c[0],c[1],0,r);return null===(i=n.setIsPerformingCoordinateTransformation)||void 0===i||i.call(n,!1),[d[0],d[1],d[2]]})),ce(this,"worldToCanvas",(e=>{var t,i;const n=this.getVtkActiveCamera();null===(t=n.setIsPerformingCoordinateTransformation)||void 0===t||t.call(n,!0);const r=this.getRenderer(),a=this.getRenderingEngine().offscreenMultiRenderWindow.getOpenGLRenderWindow(),o=a.getSize(),s=a.worldToDisplay(...e,r);s[1]=o[1]-s[1];const l=[s[0]-this.sx,s[1]-this.sy],c=window.devicePixelRatio||1,d=[l[0]/c,l[1]/c];return null===(i=n.setIsPerformingCoordinateTransformation)||void 0===i||i.call(n,!1),d})),ce(this,"hasImageURI",(e=>this.getActors().filter((e=>Rn(e,"vtkVolume"))).some((t=>{let{uid:i}=t;const n=Cn.getVolume(i);return!(!n||!n.imageIds)&&n.imageIds.map(de).includes(e)})))),ce(this,"getImageIds",(e=>{const t=this._getApplicableVolumeActor(e);if(!t)throw new Error("No actor found for the given volumeId: ".concat(e));const i=t.volumeId,n=Cn.getVolume(i);if(!n)throw new Error("imageVolume with id: ".concat(i," does not exist in cache"));return n.imageIds})),this.useCPURendering=lt(),this.useNativeDataType=this._shouldUseNativeDataType(),this.useCPURendering)throw new Error("VolumeViewports cannot be used whilst CPU Fallback Rendering is enabled.");const t=this.getRenderer(),i=pr.newInstance();switch(t.setActiveCamera(i),this.type){case w.ORTHOGRAPHIC:case w.VOLUME_3D:i.setParallelProjection(!0);break;case w.PERSPECTIVE:i.setParallelProjection(!1);break;default:throw new Error("Unrecognized viewport type: ".concat(this.type))}this.initializeVolumeNewImageEventDispatcher()}static get useCustomRenderingPipeline(){return!1}applyViewOrientation(e){const{viewPlaneNormal:t,viewUp:i}=this._getOrientationVectors(e),n=this.getVtkActiveCamera();n.setDirectionOfProjection(-t[0],-t[1],-t[2]),n.setViewUpFrom(i),this.resetCamera()}initializeVolumeNewImageEventDispatcher(){const e=function(e){const{viewportId:t}=e.detail;t!==this.id||this.isDisabled||this.getImageData()&&function(e){const{renderingEngineId:t,viewportId:i}=e.detail,n=Ce(t).getViewport(i);if(!(n instanceof Ir))throw new Error("volumeNewImageEventDispatcher: viewport is not a BaseVolumeViewport");void 0===Jn[n.id]&&(Jn[n.id]=0);const r=Qn(n);if(!r)return void console.warn("volumeNewImageEventDispatcher: sliceData is undefined for viewport ".concat(n.id));const{numberOfSlices:a,imageIndex:o}=r;if(Jn[n.id]===o)return;Jn[n.id]=o;const s={imageIndex:o,viewportId:i,renderingEngineId:t,numberOfSlices:a};Rt(n.element,m.VOLUME_NEW_IMAGE,s)}(e)}.bind(this),t=function(i){const{viewportId:n}=i.detail;n===this.id&&(this.element.removeEventListener(m.CAMERA_MODIFIED,e),yt.removeEventListener(m.ELEMENT_DISABLED,t),function(e){void 0!==Jn[e]&&delete Jn[e]}(n))}.bind(this);this.element.removeEventListener(m.CAMERA_MODIFIED,e),this.element.addEventListener(m.CAMERA_MODIFIED,e),yt.addEventListener(m.ELEMENT_DISABLED,t)}resetVolumeViewportClippingRange(){const e=this.getVtkActiveCamera();e.getParallelProjection()?e.setClippingRange(-Y.MAXIMUM_RAY_DISTANCE,Y.MAXIMUM_RAY_DISTANCE):e.setClippingRange(Y.MINIMUM_SLAB_THICKNESS,Y.MAXIMUM_RAY_DISTANCE)}setVOILUTFunction(e,t,i){-1===Object.values(V).indexOf(e)&&(e=V.LINEAR);const{voiRange:n}=this.getProperties();this.setVOI(n,t,i),this.viewportProperties.VOILUTFunction=e}setColormap(e,t,i){const n=this._getApplicableVolumeActor(t);if(!n)return;const{volumeActor:r}=n;r.getMapper().setSampleDistance(1);const a=Tn().newInstance();let o=xn(e.name);const{name:s}=e;if(o||(o=On().getPresetByName(s)),!o)throw new Error("Colormap ".concat(e," not found"));const l=r.getProperty().getRGBTransferFunction(0).getRange();a.applyColorMap(o),a.setMappingRange(l[0],l[1]),r.getProperty().setRGBTransferFunction(0,a),this.viewportProperties.colormap=e}setOpacity(e,t){const i=this._getApplicableVolumeActor(t);if(!i)return;const{volumeActor:n}=i,r=Dn().newInstance();if("number"==typeof e.opacity){const t=n.getProperty().getRGBTransferFunction(0).getRange();r.addPoint(t[0],e.opacity),r.addPoint(t[1],e.opacity)}else e.opacity.forEach((e=>{let{opacity:t,value:i}=e;r.addPoint(i,t)}));n.getProperty().setScalarOpacity(0,r),this.viewportProperties.colormap.opacity=e.opacity}setInvert(e,t,i){const n=this._getApplicableVolumeActor(t);if(!n)return;const r=n.volumeId;Ln(this._getOrCreateColorTransferFunction(r));const{voiRange:a,VOILUTFunction:o,invert:s}=this.getProperties(r);if(this.viewportProperties.invert=s,!i){const e={viewportId:this.id,range:a,volumeId:r,VOILUTFunction:o,invert:s,invertStateChanged:!0};Rt(this.element,m.VOI_MODIFIED,e)}}_getOrCreateColorTransferFunction(e){const t=this._getApplicableVolumeActor(e);if(!t)return null;const{volumeActor:i}=t,n=i.getProperty().getRGBTransferFunction(0);if(n)return n;const r=Tn().newInstance();return i.getProperty().setRGBTransferFunction(0,r),r}setInterpolationType(e,t){const i=this._getApplicableVolumeActor(t);if(!i)return;const{volumeActor:n}=i;n.getProperty().setInterpolationType(e),this.viewportProperties.interpolationType=e}setVOI(e,t){let i=arguments.length>2&&void 0!==arguments[2]&&arguments[2];const n=this._getApplicableVolumeActor(t);if(!n)return;const{volumeActor:r}=n,a=n.volumeId;let o=e;if(void 0===o){const e=r.getMapper().getInputData().getPointData().getScalars().getRange();o={lower:e[0],upper:e[1]}}const{VOILUTFunction:s}=this.getProperties(a);if(s===V.SAMPLED_SIGMOID){const e=Un(o);r.getProperty().setRGBTransferFunction(0,e)}else{const{lower:e,upper:t}=o;if(r.getProperty().getRGBTransferFunction(0).setRange(e,t),!this.initialTransferFunctionNodes){const e=r.getProperty().getRGBTransferFunction(0);this.initialTransferFunctionNodes=fr(e)}}if(!i){const t={viewportId:this.id,range:e,volumeId:a,VOILUTFunction:s};Rt(this.element,m.VOI_MODIFIED,t)}this.viewportProperties.voiRange=o}setDefaultProperties(e,t){null==t?this.globalDefaultProperties=e:this.perVolumeIdDefaultProperties.set(t,e)}clearDefaultProperties(e){null==e?(this.globalDefaultProperties={},this.resetProperties()):(this.perVolumeIdDefaultProperties.delete(e),this.resetToDefaultProperties(e))}setProperties(){let{voiRange:e,VOILUTFunction:t,invert:i,colormap:n,preset:r,interpolationType:a,slabThickness:o}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},s=arguments.length>1?arguments[1]:void 0,l=arguments.length>2&&void 0!==arguments[2]&&arguments[2];null==this.globalDefaultProperties&&this.setDefaultProperties({voiRange:e,VOILUTFunction:t,invert:i,colormap:n,preset:r,slabThickness:o}),null!=n&&n.name&&this.setColormap(n,s,l),null!=(null==n?void 0:n.opacity)&&this.setOpacity(n,s),void 0!==e&&this.setVOI(e,s,l),void 0!==a&&this.setInterpolationType(a),void 0!==t&&this.setVOILUTFunction(t,s,l),void 0!==i&&this.viewportProperties.invert!==i&&this.setInvert(i,s,l),void 0!==r&&this.setPreset(r,s,l),void 0!==o&&(this.setSlabThickness(o),this.viewportProperties.slabThickness=o)}resetToDefaultProperties(e){var t,i;const n=this.globalDefaultProperties;null!==(t=n.colormap)&&void 0!==t&&t.name&&this.setColormap(n.colormap,e),null!=(null===(i=n.colormap)||void 0===i?void 0:i.opacity)&&this.setOpacity(n.colormap,e),void 0!==n.voiRange&&this.setVOI(n.voiRange,e),void 0!==n.VOILUTFunction&&this.setVOILUTFunction(n.VOILUTFunction,e),void 0!==n.invert&&this.setInvert(n.invert,e),void 0!==n.slabThickness&&(this.setSlabThickness(n.slabThickness),this.viewportProperties.slabThickness=n.slabThickness),this.render()}setPreset(e,t,i){const n=this._getApplicableVolumeActor(t);if(!n)return;const{volumeActor:r}=n,a=$.find((t=>t.name===e));a&&(Nn(r,a),this.viewportProperties.preset=e)}async setVolumes(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],i=arguments.length>2&&void 0!==arguments[2]&&arguments[2];const n=Cn.getVolume(e[0].volumeId);if(!n)throw new Error("imageVolume with id: ".concat(n.volumeId," does not exist"));const r=n.metadata.FrameOfReferenceUID;await this._isValidVolumeInputArray(e,r),this._FrameOfReferenceUID=r;const a=[];for(let t=0;t<e.length;t++){const{volumeId:n,actorUID:r,slabThickness:o}=e[t],s=await ui(e[t],this.element,this.id,i,this.useNativeDataType),l=r||n;a.push({uid:l,actor:s,slabThickness:o,referenceId:n})}this._setVolumeActors(a),this.viewportStatus=j.PRE_RENDER,Rt(this.element,m.VOLUME_VIEWPORT_NEW_VOLUME,{viewportId:this.id,volumeActors:a}),t&&this.render()}async addVolumes(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],i=arguments.length>2&&void 0!==arguments[2]&&arguments[2];const n=Cn.getVolume(e[0].volumeId);if(!n)throw new Error("imageVolume with id: ".concat(n.volumeId," does not exist"));const r=[];await this._isValidVolumeInputArray(e,this._FrameOfReferenceUID);for(let t=0;t<e.length;t++){const{volumeId:n,visibility:a,actorUID:o,slabThickness:s}=e[t],l=await ui(e[t],this.element,this.id,i,this.useNativeDataType);!1===a&&l.setVisibility(!1);const c=o||n;r.push({uid:c,actor:l,slabThickness:s,referenceId:n})}this.addActors(r),t&&this.render()}removeVolumeActors(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];this.removeActors(e),t&&this.render()}setOrientation(e){console.warn('Method "setOrientation" needs implementation')}_getApplicableVolumeActor(e){if(void 0!==e&&!this.getActor(e))return;const t=this.getActors();if(!t.length)return;let i;var n;return e&&(i=null===(n=this.getActor(e))||void 0===n?void 0:n.actor),i||(i=t[0].actor,e=t[0].uid),{volumeActor:i,volumeId:e}}async _isValidVolumeInputArray(e,t){const i=e.length;for(let n=1;n<i;n++){const i=e[n],r=await St(i.volumeId);if(!r)throw new Error("imageVolume with id: ".concat(r.volumeId," does not exist"));if(t!==r.metadata.FrameOfReferenceUID)throw new Error("Volumes being added to viewport ".concat(this.id," do not share the same FrameOfReferenceUID. This is not yet supported"))}return!0}getBounds(){return this.getRenderer().computeVisiblePropBounds()}flip(e){super.flip(e)}hasVolumeId(e){return this.getActors().some((t=>t.uid===e))}getImageData(e){var t,i;const n=this.getDefaultActor();if(!n)return;const{uid:r}=n;e=null!==(t=e)&&void 0!==t?t:r;const a=this.getActor(e);if(!Rn(a,"vtkVolume"))return;const o=a.actor,s=Cn.getVolume(e),l=o.getMapper().getInputData();return{dimensions:l.getDimensions(),spacing:l.getSpacing(),origin:l.getOrigin(),direction:l.getDirection(),scalarData:l.getPointData().getScalars().isDeleted()?null:l.getPointData().getScalars().getData(),imageData:o.getMapper().getInputData(),metadata:{Modality:null==s||null===(i=s.metadata)||void 0===i?void 0:i.Modality},scaling:null==s?void 0:s.scaling,hasPixelSpacing:!0}}_setVolumeActors(e){for(let t=0;t<e.length;t++)this.viewportProperties.invert=!1;this.setActors(e)}_getOrientationVectors(e){if("object"==typeof e){if(e.viewPlaneNormal&&e.viewUp)return e;throw new Error("Invalid orientation object. It must contain viewPlaneNormal and viewUp")}if("string"==typeof e&&J[e])return J[e];throw new Error("Invalid orientation: ".concat(e,". Valid orientations are: ").concat(Object.keys(J).join(", ")))}getSlabThickness(){const e=this.getActors();let t=Y.MINIMUM_SLAB_THICKNESS;return e.forEach((e=>{e.slabThickness>t&&(t=e.slabThickness)})),t}getIntensityFromWorld(e){const t=this.getDefaultActor();if(!Rn(t,"vtkVolume"))return;const{actor:i,uid:n}=t,r=i.getMapper().getInputData(),a=Cn.getVolume(n),{dimensions:o}=a,s=vr(r,e),l=s[2]*o[0]*o[1]+s[1]*o[0]+s[0];return a.getScalarData()[l]}},Cr=class extends Ir{constructor(e){super(e),ce(this,"_useAcquisitionPlaneForViewPlane",!1),ce(this,"getNumberOfSlices",(()=>{const{numberOfSlices:e}=Qn(this);return e})),ce(this,"getCurrentImageIdIndex",(e=>{const{viewPlaneNormal:t,focalPoint:i}=this.getCamera(),{origin:n,direction:r,spacing:a}=this.getImageData(e),o=En({direction:r,spacing:a},t),s=In.vec3.create();In.vec3.sub(s,i,n);const l=In.vec3.dot(s,t);return Math.round(Math.abs(l)/o)})),ce(this,"getCurrentImageId",(()=>{this.getActors().length>1&&console.warn("Using the first/default actor of ".concat(this.getActors().length," actors for getCurrentImageId."));const e=this.getDefaultActor();if(!e||!Rn(e,"vtkVolume"))return;const{uid:t}=e,i=Cn.getVolume(t);if(!i)return;const{viewPlaneNormal:n,focalPoint:r}=this.getCamera();return Pn(i,r,n)})),ce(this,"getRotation",(()=>0));const{orientation:t}=this.options;t&&t!==b.ACQUISITION?this.applyViewOrientation(t):this._useAcquisitionPlaneForViewPlane=!0}async setVolumes(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],i=arguments.length>2&&void 0!==arguments[2]&&arguments[2];const n=Cn.getVolume(e[0].volumeId);if(!n)throw new Error("imageVolume with id: ".concat(n.volumeId," does not exist"));return this._useAcquisitionPlaneForViewPlane&&(this._setViewPlaneToAcquisitionPlane(n),this._useAcquisitionPlaneForViewPlane=!1),super.setVolumes(e,t,i)}async addVolumes(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],i=arguments.length>2&&void 0!==arguments[2]&&arguments[2];const n=Cn.getVolume(e[0].volumeId);if(!n)throw new Error("imageVolume with id: ".concat(n.volumeId," does not exist"));return this._useAcquisitionPlaneForViewPlane&&(this._setViewPlaneToAcquisitionPlane(n),this._useAcquisitionPlaneForViewPlane=!1),super.addVolumes(e,t,i)}setOrientation(e){let t,i,n=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];if(J[e])({viewPlaneNormal:t,viewUp:i}=J[e]);else{if("acquisition"!==e)throw new Error("Invalid orientation: ".concat(e,". Use Enums.OrientationAxis instead."));({viewPlaneNormal:t,viewUp:i}=this._getAcquisitionPlaneOrientation())}this.setCamera({viewPlaneNormal:t,viewUp:i}),this.resetCamera(),n&&this.render()}_getAcquisitionPlaneOrientation(){const e=this.getDefaultActor();if(!e)return;const t=e.uid,i=Cn.getVolume(t);if(!i)throw new Error("imageVolume with id: ".concat(t," does not exist in cache"));const{direction:n}=i;return{viewPlaneNormal:n.slice(6,9).map((e=>-e)),viewUp:n.slice(3,6).map((e=>-e))}}_setViewPlaneToAcquisitionPlane(e){let t,i;if(e){const{direction:n}=e;t=n.slice(6,9).map((e=>-e)),i=n.slice(3,6).map((e=>-e))}else({viewPlaneNormal:t,viewUp:i}=this._getAcquisitionPlaneOrientation());this.setCamera({viewPlaneNormal:t,viewUp:i}),this.resetCamera()}setBlendMode(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],i=arguments.length>2&&void 0!==arguments[2]&&arguments[2],n=this.getActors();t&&t.length>0&&(n=n.filter((e=>t.includes(e.uid)))),n.forEach((t=>{const{actor:i}=t;i.getMapper().setBlendMode(e)})),i&&this.render()}resetCamera(){let e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0],t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],i=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];super.resetCamera(e,t,i),this.resetVolumeViewportClippingRange();const n=this.getVtkActiveCamera(),r=n.getViewPlaneNormal(),a=n.getFocalPoint();return this.getActors().forEach((e=>{if(!e.actor)return;const t=e.actor.getMapper();if(0===t.getClippingPlanes().length&&(null==e||!e.clippingFilter)){const i=wn().newInstance(),n=wn().newInstance(),o=[i,n];let s=Y.MINIMUM_SLAB_THICKNESS;e.slabThickness&&(s=e.slabThickness),this.setOrientationOfClippingPlanes(o,s,r,a),t.addClippingPlane(i),t.addClippingPlane(n)}})),!0}setSlabThickness(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];e<.1&&(e=.1);let i=this.getActors();t&&t.length>0&&(i=i.filter((e=>t.includes(e.uid)))),i.forEach((t=>{Rn(t,"vtkVolume")&&(t.slabThickness=e)}));const n=this.getCamera();this.updateClippingPlanesForActors(n),this.triggerCameraModifiedEventIfNecessary(n,n),this.viewportProperties.slabThickness=e}resetProperties(e){this._resetProperties(e)}_resetProperties(e){const t=e?this.getActor(e):this.getDefaultActor();if(!t)throw new Error("No actor found for the given volumeId: ".concat(e));t.slabThickness&&(t.slabThickness=Y.MINIMUM_SLAB_THICKNESS,this.viewportProperties.slabThickness=void 0,this.updateClippingPlanesForActors(this.getCamera()));const i=Cn.getVolume(t.uid);if(!i)throw new Error("imageVolume with id: ".concat(t.uid," does not exist in cache"));hi(t.actor,i,!1),yn(t)&&wr(t.actor.getProperty().getRGBTransferFunction(0),this.initialTransferFunctionNodes);const n=t.actor.getProperty().getRGBTransferFunction(0).getMappingRange(),r={viewportId:t.uid,range:{lower:n[0],upper:n[1]},volumeId:t.uid};Rt(this.element,m.VOI_MODIFIED,r)}};var Er=Z(896),yr=Z.n(Er),Rr=Z(861),Pr=Z.n(Rr);const Ar=new Map,Tr="imageRetrieveConfiguration",br={IMAGE_RETRIEVE_CONFIGURATION:Tr,clear:()=>{Ar.clear()},add:(e,t)=>{Ar.set(e,t)},get:(e,t)=>{const i=Array.isArray(t)?t:[t];if(e===Tr)return i.map((e=>Ar.get(e))).find((e=>void 0!==e))}};ni(br.get.bind(br));const Or=br;function Sr(){return window.performance?performance.now():Date.now()}function Dr(e,t,i){return i?function(e){const t=Math.max(...e.lut).toString(2).length-8,i=e.lut[0]>>t,n=e.lut[e.lut.length-1]>>t,r=e.firstValueMapped+e.lut.length-1;return function(a){return a<e.firstValueMapped?i:a>=r?n:e.lut[a-e.firstValueMapped]>>t}}(i):function(e,t){return function(i){const n=255*((i-(t-.5))/(e-1)+.5);return Math.min(Math.max(n,0),255)}}(e,t)}class _r{constructor(){ce(this,"m",void 0),this.reset()}getMatrix(){return this.m}reset(){this.m=[1,0,0,1,0,0]}clone(){const e=new _r;return e.m[0]=this.m[0],e.m[1]=this.m[1],e.m[2]=this.m[2],e.m[3]=this.m[3],e.m[4]=this.m[4],e.m[5]=this.m[5],e}multiply(e){const t=this.m[0]*e[0]+this.m[2]*e[1],i=this.m[1]*e[0]+this.m[3]*e[1],n=this.m[0]*e[2]+this.m[2]*e[3],r=this.m[1]*e[2]+this.m[3]*e[3],a=this.m[0]*e[4]+this.m[2]*e[5]+this.m[4],o=this.m[1]*e[4]+this.m[3]*e[5]+this.m[5];this.m[0]=t,this.m[1]=i,this.m[2]=n,this.m[3]=r,this.m[4]=a,this.m[5]=o}invert(){const e=1/(this.m[0]*this.m[3]-this.m[1]*this.m[2]),t=this.m[3]*e,i=-this.m[1]*e,n=-this.m[2]*e,r=this.m[0]*e,a=e*(this.m[2]*this.m[5]-this.m[3]*this.m[4]),o=e*(this.m[1]*this.m[4]-this.m[0]*this.m[5]);this.m[0]=t,this.m[1]=i,this.m[2]=n,this.m[3]=r,this.m[4]=a,this.m[5]=o}rotate(e){const t=Math.cos(e),i=Math.sin(e),n=this.m[0]*t+this.m[2]*i,r=this.m[1]*t+this.m[3]*i,a=this.m[0]*-i+this.m[2]*t,o=this.m[1]*-i+this.m[3]*t;this.m[0]=n,this.m[1]=r,this.m[2]=a,this.m[3]=o}translate(e,t){this.m[4]+=this.m[0]*e+this.m[2]*t,this.m[5]+=this.m[1]*e+this.m[3]*t}scale(e,t){this.m[0]*=e,this.m[1]*=e,this.m[2]*=t,this.m[3]*=t}transformPoint(e){const t=e[0],i=e[1];return[t*this.m[0]+i*this.m[2]+this.m[4],t*this.m[1]+i*this.m[3]+this.m[5]]}}function kr(e,t){const i=new _r;if(!e.viewport.displayedArea)return i;i.translate(e.canvas.width/2,e.canvas.height/2);const n=e.viewport.rotation;0!==n&&i.rotate(n*Math.PI/180);let r=e.viewport.scale,a=e.viewport.scale;const o=e.viewport.displayedArea.brhc.x-(e.viewport.displayedArea.tlhc.x-1),s=e.viewport.displayedArea.brhc.y-(e.viewport.displayedArea.tlhc.y-1);if("NONE"===e.viewport.displayedArea.presentationSizeMode)e.image.rowPixelSpacing<e.image.columnPixelSpacing?r*=e.image.columnPixelSpacing/e.image.rowPixelSpacing:e.image.columnPixelSpacing<e.image.rowPixelSpacing&&(a*=e.image.rowPixelSpacing/e.image.columnPixelSpacing);else if(r=e.viewport.displayedArea.columnPixelSpacing,a=e.viewport.displayedArea.rowPixelSpacing,"SCALE TO FIT"===e.viewport.displayedArea.presentationSizeMode){const t=e.canvas.height/(s*a),i=e.canvas.width/(o*r);r=a=Math.min(i,t),e.viewport.displayedArea.rowPixelSpacing<e.viewport.displayedArea.columnPixelSpacing?r*=e.viewport.displayedArea.columnPixelSpacing/e.viewport.displayedArea.rowPixelSpacing:e.viewport.displayedArea.columnPixelSpacing<e.viewport.displayedArea.rowPixelSpacing&&(a*=e.viewport.displayedArea.rowPixelSpacing/e.viewport.displayedArea.columnPixelSpacing)}return i.scale(r,a),0!==n&&i.rotate(-n*Math.PI/180),i.translate(e.viewport.translation.x,e.viewport.translation.y),0!==n&&i.rotate(n*Math.PI/180),void 0!==t&&i.scale(t,t),e.viewport.hflip&&i.scale(-1,1),e.viewport.vflip&&i.scale(1,-1),i.translate(-o/2,-s/2),i}function Mr(e,t,i){if(void 0===e)throw new Error("setToPixelCoordinateSystem: parameter enabledElement must not be undefined");if(void 0===t)throw new Error("setToPixelCoordinateSystem: parameter context must not be undefined");const n=kr(e,i).getMatrix();t.setTransform(n[0],n[1],n[2],n[3],n[4],n[5])}function xr(e,t){const i=e.renderingTools.lastRenderedImageId,n=e.renderingTools.lastRenderedViewport;return t.imageId!==i||!n||n.windowCenter!==e.viewport.voi.windowCenter||n.windowWidth!==e.viewport.voi.windowWidth||n.invert!==e.viewport.invert||n.rotation!==e.viewport.rotation||n.hflip!==e.viewport.hflip||n.vflip!==e.viewport.vflip||n.modalityLUT!==e.viewport.modalityLUT||n.voiLUT!==e.viewport.voiLUT||n.colormap!==e.viewport.colormap}function Vr(e,t){const i=e.renderingTools.renderCanvas;i.width=t.width,i.height=t.height;const n=i.getContext("2d");n.fillStyle="white",n.fillRect(0,0,i.width,i.height);const r=n.getImageData(0,0,t.width,t.height);e.renderingTools.renderCanvasContext=n,e.renderingTools.renderCanvasData=r}function Lr(e){const t=e.image.imageId,i=e.viewport,n=e.image.color;return e.renderingTools.lastRenderedImageId=t,e.renderingTools.lastRenderedIsColor=n,e.renderingTools.lastRenderedViewport={windowCenter:i.voi.windowCenter,windowWidth:i.voi.windowWidth,invert:i.invert,rotation:i.rotation,hflip:i.hflip,vflip:i.vflip,modalityLUT:i.modalityLUT,voiLUT:i.voiLUT,colormap:i.colormap},e.renderingTools}function Ur(e,t,i){const n=!0===e.renderingTools.lastRenderedIsColor;e.renderingTools.renderCanvas&&n||(e.renderingTools.renderCanvas=document.createElement("canvas"));const r=e.renderingTools.renderCanvas,{windowWidth:a,windowCenter:o}=e.viewport.voi;if((256===a||255===a)&&(128===o||127===o)&&!1===e.viewport.invert&&t.getCanvas&&t.getCanvas())return t.getCanvas();if(!1===xr(e,t)&&!0!==i)return r;r.width===t.width&&r.height===t.height||Vr(e,t);let s=Sr();const l=function(e,t){return void 0!==e.cachedLut&&e.cachedLut.windowCenter===t.voi.windowCenter&&e.cachedLut.windowWidth===t.voi.windowWidth&&e.cachedLut.invert===t.invert||(function(e,t,i,n,r){const a=e.maxPixelValue,o=e.minPixelValue,s=Math.min(o,0);if(void 0===e.cachedLut){const t=a-s+1;e.cachedLut={},e.cachedLut.lutArray=new Uint8ClampedArray(t)}const l=e.cachedLut.lutArray,c=Dr(Array.isArray(t)?t[0]:t,Array.isArray(i)?i[0]:i,void 0);if(!0===n)for(let e=o;e<=a;e++)l[e+-s]=255-c(e);else for(let e=o;e<=a;e++)l[e+-s]=c(e)}(e,t.voi.windowWidth,t.voi.windowCenter,t.invert),e.cachedLut.windowWidth=t.voi.windowWidth,e.cachedLut.windowCenter=t.voi.windowCenter,e.cachedLut.invert=t.invert),e.cachedLut.lutArray}(t,e.viewport);t.stats=t.stats||{},t.stats.lastLutGenerateTime=Sr()-s;const c=e.renderingTools.renderCanvasData,d=e.renderingTools.renderCanvasContext;return t.rgba?function(e,t,i){let n=Sr();const r=e.getPixelData();e.stats.lastGetPixelDataTime=Sr()-n;const a=e.minPixelValue;let o=0,s=0;const l=r.length;if(n=Sr(),a<0)for(;s<l;)i[o++]=t[r[s++]+-a],i[o++]=t[r[s++]+-a],i[o++]=t[r[s++]+-a],i[o++]=r[s++];else for(;s<l;)i[o++]=t[r[s++]],i[o++]=t[r[s++]],i[o++]=t[r[s++]],i[o++]=r[s++];e.stats.lastStoredPixelDataToCanvasImageDataTime=Sr()-n}(t,l,c.data):function(e,t,i){let n=Sr();const r=e.getPixelData();e.stats.lastGetPixelDataTime=Sr()-n;const a=e.minPixelValue;let o=0,s=0;const l=r.length;if(n=Sr(),a<0)for(;s<l;)i[o++]=t[r[s++]+-a],i[o++]=t[r[s++]+-a],i[o]=t[r[s]+-a],s+=2,o+=2;else for(;s<l;)i[o++]=t[r[s++]],i[o++]=t[r[s++]],i[o]=t[r[s]],s+=2,o+=2;e.stats.lastStoredPixelDataToCanvasImageDataTime=Sr()-n}(t,l,c.data),s=Sr(),d.putImageData(c,0,0),t.stats.lastPutImageDataTime=Sr()-s,r}function Nr(e,t){if(void 0===e)throw new Error("renderColorImage: enabledElement parameter must not be undefined");const i=e.image;if(void 0===i)throw new Error("renderColorImage: image must be loaded before it can be drawn");const n=e.canvas.getContext("2d");n.setTransform(1,0,0,1,0,0),n.fillStyle="black",n.fillRect(0,0,e.canvas.width,e.canvas.height),n.imageSmoothingEnabled=!e.viewport.pixelReplication,Mr(e,n);const r=Ur(e,i,t),a=e.viewport.displayedArea.tlhc.x-1,o=e.viewport.displayedArea.tlhc.y-1,s=e.viewport.displayedArea.brhc.x-a,l=e.viewport.displayedArea.brhc.y-o;n.drawImage(r,a,o,s,l,0,0,s,l),e.renderingTools=Lr(e)}function Fr(e,t){return!e&&!t||!(!e||!t)&&e.id===t.id}function jr(e,t,i){return void 0!==e.cachedLut&&e.cachedLut.windowCenter===t.voi.windowCenter&&e.cachedLut.windowWidth===t.voi.windowWidth&&Fr(e.cachedLut.modalityLUT,t.modalityLUT)&&Fr(e.cachedLut.voiLUT,t.voiLUT)&&e.cachedLut.invert===t.invert&&!0!==i||(function(e,t){if(function(e){return e.voiLUT&&e.voiLUT.lut&&e.voiLUT.lut.length>0||void 0!==e.voi.windowWidth&&void 0!==e.voi.windowCenter}(e))return;const i=t.maxPixelValue*t.slope+t.intercept,n=t.minPixelValue*t.slope+t.intercept,r=i-n,a=(i+n)/2;void 0===e.voi?e.voi={windowWidth:r,windowCenter:a}:(e.voi.windowWidth=r,e.voi.windowCenter=a)}(t,e),function(e,t,i,n,r,a){const o=e.maxPixelValue,s=e.minPixelValue,l=Math.min(s,0);if(void 0===e.cachedLut){const t=o-l+1;e.cachedLut={},e.cachedLut.lutArray=new Uint8ClampedArray(t)}const c=e.cachedLut.lutArray,d=function(e,t,i){return i?function(e){const t=e.lut[0],i=e.lut[e.lut.length-1],n=e.firstValueMapped+e.lut.length;return r=>r<e.firstValueMapped?t:r>=n?i:e.lut[r]}(i):function(e,t){return i=>i*e+t}(e,t)}(e.slope,e.intercept,r),h=Dr(t,i,a);if(e.isPreScaled)if(!0===n)for(let e=s;e<=o;e++)c[e+-l]=255-h(e);else for(let e=s;e<=o;e++)c[e+-l]=h(e);else if(!0===n)for(let e=s;e<=o;e++)c[e+-l]=255-h(d(e));else for(let e=s;e<=o;e++)c[e+-l]=h(d(e))}(e,t.voi.windowWidth,t.voi.windowCenter,t.invert,t.modalityLUT,t.voiLUT),e.cachedLut.windowWidth=t.voi.windowWidth,e.cachedLut.windowCenter=t.voi.windowCenter,e.cachedLut.invert=t.invert,e.cachedLut.voiLUT=t.voiLUT,e.cachedLut.modalityLUT=t.modalityLUT),e.cachedLut.lutArray}function Gr(e,t){if(void 0===e)throw new Error("drawImage: enabledElement parameter must not be undefined");const i=e.image;if(void 0===i)throw new Error("drawImage: image must be loaded before it can be drawn");const n=e.canvas.getContext("2d");n.setTransform(1,0,0,1,0,0),n.fillStyle="black",n.fillRect(0,0,e.canvas.width,e.canvas.height),n.imageSmoothingEnabled=!e.viewport.pixelReplication,Mr(e,n);const r=function(e,t,i){let n=!(arguments.length>3&&void 0!==arguments[3])||arguments[3];const r=!0===e.renderingTools.lastRenderedIsColor;e.renderingTools.renderCanvas&&!r||(e.renderingTools.renderCanvas=document.createElement("canvas"),Vr(e,t));const a=e.renderingTools.renderCanvas;if(!1===xr(e,t)&&!0!==i)return a;a.width===t.width&&a.height===t.height||Vr(e,t),t.stats=t.stats||{};const o=e.renderingTools.renderCanvasData,s=e.renderingTools.renderCanvasContext;let l=Sr();t.stats.lastLutGenerateTime=Sr()-l;const{viewport:c}=e;if("PT"===c.modality&&t.isPreScaled){const{windowWidth:e,windowCenter:i}=c.voi,n=i-e/2,r=255/(i+e/2-n);let a;a=c.invert?e=>255-(e-n)*r:e=>(e-n)*r,function(e,t,i){let n=Sr();const r=e.getPixelData();e.stats.lastGetPixelDataTime=Sr()-n;const a=r.length;let o=3,s=0;for(n=Sr();s<a;)i[o]=t(r[s++]),o+=4;e.stats.lastStoredPixelDataToCanvasImageDataTime=Sr()-n}(t,a,o.data)}else{const e=jr(t,c,i);n?function(e,t,i){let n=Sr();const r=e.getPixelData();e.stats.lastGetPixelDataTime=Sr()-n;const a=r.length,o=e.minPixelValue;let s=3,l=0;if(n=Sr(),r instanceof Int16Array)if(o<0)for(;l<a;)i[s]=t[r[l++]+-o],s+=4;else for(;l<a;)i[s]=t[r[l++]],s+=4;else if(r instanceof Uint16Array)for(;l<a;)i[s]=t[r[l++]],s+=4;else if(o<0)for(;l<a;)i[s]=t[r[l++]+-o],s+=4;else for(;l<a;)i[s]=t[r[l++]],s+=4;e.stats.lastStoredPixelDataToCanvasImageDataTime=Sr()-n}(t,e,o.data):function(e,t,i){let n=Sr();const r=e.getPixelData();e.stats.lastGetPixelDataTime=Sr()-n;const a=r.length,o=e.minPixelValue;let s,l=0,c=0;if(n=Sr(),r instanceof Int16Array)if(o<0)for(;c<a;)s=t[r[c++]+-o],i[l++]=s,i[l++]=s,i[l++]=s,i[l++]=255;else for(;c<a;)s=t[r[c++]],i[l++]=s,i[l++]=s,i[l++]=s,i[l++]=255;else if(r instanceof Uint16Array)for(;c<a;)s=t[r[c++]],i[l++]=s,i[l++]=s,i[l++]=s,i[l++]=255;else if(o<0)for(;c<a;)s=t[r[c++]+-o],i[l++]=s,i[l++]=s,i[l++]=s,i[l++]=255;else for(;c<a;)s=t[r[c++]],i[l++]=s,i[l++]=s,i[l++]=s,i[l++]=255;e.stats.lastStoredPixelDataToCanvasImageDataTime=Sr()-n}(t,e,o.data)}return l=Sr(),s.putImageData(o,0,0),t.stats.lastPutImageDataTime=Sr()-l,a}(e,i,t),a=e.viewport.displayedArea.tlhc.x-1,o=e.viewport.displayedArea.tlhc.y-1,s=e.viewport.displayedArea.brhc.x-a,l=e.viewport.displayedArea.brhc.y-o;n.drawImage(r,a,o,s,l,0,0,s,l),e.renderingTools=Lr(e)}function Wr(e,t,i){if(e>1)throw new Error("HSVToRGB expects hue < 1");const n=[];if(0===t)return n[0]=i,n[1]=i,n[2]=i,n;const r=Math.floor(6*e),a=6*e-r,o=i*(1-t),s=i*(1-t*a),l=i*(1-t*(1-a));switch(r){case 0:case 6:n[0]=i,n[1]=l,n[2]=o;break;case 1:n[0]=s,n[1]=i,n[2]=o;break;case 2:n[0]=o,n[1]=i,n[2]=l;break;case 3:n[0]=o,n[1]=s,n[2]=i;break;case 4:n[0]=l,n[1]=o,n[2]=i;break;case 5:n[0]=i,n[1]=o,n[2]=s}return n}const Br=class{constructor(){ce(this,"NumberOfColors",void 0),ce(this,"Ramp",void 0),ce(this,"TableRange",void 0),ce(this,"HueRange",void 0),ce(this,"SaturationRange",void 0),ce(this,"ValueRange",void 0),ce(this,"AlphaRange",void 0),ce(this,"NaNColor",void 0),ce(this,"BelowRangeColor",void 0),ce(this,"UseBelowRangeColor",void 0),ce(this,"AboveRangeColor",void 0),ce(this,"UseAboveRangeColor",void 0),ce(this,"InputRange",void 0),ce(this,"Table",void 0),this.NumberOfColors=256,this.Ramp="linear",this.TableRange=[0,255],this.HueRange=[0,.66667],this.SaturationRange=[1,1],this.ValueRange=[1,1],this.AlphaRange=[1,1],this.NaNColor=[128,0,0,255],this.BelowRangeColor=[0,0,0,255],this.UseBelowRangeColor=!0,this.AboveRangeColor=[255,255,255,255],this.UseAboveRangeColor=!0,this.InputRange=[0,255],this.Table=[]}setNumberOfTableValues(e){this.NumberOfColors=e}setRamp(e){this.Ramp=e}setTableRange(e,t){this.TableRange[0]=e,this.TableRange[1]=t}setHueRange(e,t){this.HueRange[0]=e,this.HueRange[1]=t}setSaturationRange(e,t){this.SaturationRange[0]=e,this.SaturationRange[1]=t}setValueRange(e,t){this.ValueRange[0]=e,this.ValueRange[1]=t}setRange(e,t){this.InputRange[0]=e,this.InputRange[1]=t}setAlphaRange(e,t){this.AlphaRange[0]=e,this.AlphaRange[1]=t}getColor(e){return this.mapValue(e)}build(e){if(this.Table.length>1&&!e)return;this.Table=[];const t=this.NumberOfColors-1;let i,n,r,a;t?(i=(this.HueRange[1]-this.HueRange[0])/t,n=(this.SaturationRange[1]-this.SaturationRange[0])/t,r=(this.ValueRange[1]-this.ValueRange[0])/t,a=(this.AlphaRange[1]-this.AlphaRange[0])/t):i=n=r=a=0;for(let e=0;e<=t;e++){const t=this.HueRange[0]+e*i,o=this.SaturationRange[0]+e*n,s=this.ValueRange[0]+e*r,l=this.AlphaRange[0]+e*a,c=Wr(t,o,s),d=[0,0,0,0];switch(this.Ramp){case"scurve":d[0]=Math.floor(127.5*(1+Math.cos((1-c[0])*Math.PI))),d[1]=Math.floor(127.5*(1+Math.cos((1-c[1])*Math.PI))),d[2]=Math.floor(127.5*(1+Math.cos((1-c[2])*Math.PI))),d[3]=Math.floor(255*l);break;case"linear":d[0]=Math.floor(255*c[0]+.5),d[1]=Math.floor(255*c[1]+.5),d[2]=Math.floor(255*c[2]+.5),d[3]=Math.floor(255*l+.5);break;case"sqrt":d[0]=Math.floor(255*Math.sqrt(c[0])+.5),d[1]=Math.floor(255*Math.sqrt(c[1])+.5),d[2]=Math.floor(255*Math.sqrt(c[2])+.5),d[3]=Math.floor(255*Math.sqrt(l)+.5);break;default:throw new Error("Invalid Ramp value (".concat(this.Ramp,")"))}this.Table.push(d)}this.buildSpecialColors()}buildSpecialColors(){const e=this.NumberOfColors,t=e+0,i=e+1,n=e+2;this.UseBelowRangeColor||0===e?this.Table[t]=this.BelowRangeColor:this.Table[t]=this.Table[0],this.UseAboveRangeColor||0===e?this.Table[i]=this.AboveRangeColor:this.Table[i]=this.Table[e-1],this.Table[n]=this.NaNColor}mapValue(e){const t=this.getIndex(e);if(t<0)return this.NaNColor;if(0===t){if(this.UseBelowRangeColor&&e<this.TableRange[0])return this.BelowRangeColor}else if(t===this.NumberOfColors-1&&this.UseAboveRangeColor&&e>this.TableRange[1])return this.AboveRangeColor;return this.Table[t]}getIndex(e){const t={Range:[],MaxIndex:this.NumberOfColors-1,Shift:-this.TableRange[0],Scale:1};if(this.TableRange[1]<=this.TableRange[0]?t.Scale=Number.MAX_VALUE:t.Scale=t.MaxIndex/(this.TableRange[1]-this.TableRange[0]),t.Range[0]=this.TableRange[0],t.Range[1]=this.TableRange[1],isNaN(e))return-1;let i=function(e,t){let i;return i=e<t.Range[0]?t.MaxIndex+0+1.5:e>t.Range[1]?t.MaxIndex+1+1.5:(e+t.Shift)*t.Scale,Math.floor(i)}(e,t);return i===this.NumberOfColors+0?i=0:i===this.NumberOfColors+1&&(i=this.NumberOfColors-1),i}setTableValue(e,t){if(5===arguments.length&&(t=Array.prototype.slice.call(arguments,1)),e<0)throw new Error("Can't set the table value for negative index (".concat(e,")"));e>=this.NumberOfColors&&new Error("Index ".concat(e," is greater than the number of colors ").concat(this.NumberOfColors)),this.Table[e]=t,0!==e&&e!==this.NumberOfColors-1||this.buildSpecialColors()}},qr=function(e,t,i,n){let r=Sr();const a=e.getPixelData();e.stats.lastGetPixelDataTime=Sr()-r;const o=a.length,s=e.minPixelValue;let l,c,d,h=0,u=0;if(r=Sr(),d=i instanceof Br?i.Table:i,s<0)for(;u<o;)l=t[a[u++]+-s],c=d[l],n[h++]=c[0],n[h++]=c[1],n[h++]=c[2],n[h++]=c[3];else for(;u<o;)l=t[a[u++]],c=d[l],n[h++]=c[0],n[h++]=c[1],n[h++]=c[2],n[h++]=c[3];e.stats.lastStoredPixelDataToCanvasImageDataTime=Sr()-r},zr=function(e,t,i,n){let r=Sr();const a=e.getPixelData();e.stats.lastGetPixelDataTime=Sr()-r;const o=a.length,s=e.minPixelValue;let l,c,d,h=0,u=0;if(r=Sr(),d=i instanceof Br?i.Table:i,s<0)for(;u<o;)l=t(a[u++]+-s),c=d[l],n[h++]=c[0],n[h++]=c[1],n[h++]=c[2],n[h++]=c[3];else for(;u<o;)l=t(a[u++]),c=d[l],n[h++]=c[0],n[h++]=c[1],n[h++]=c[2],n[h++]=c[3];e.stats.lastStoredPixelDataToCanvasImageDataTime=Sr()-r},Hr=[0,0,0,0];function Kr(e,t){let i=0,n=e.length-1;for(;i<=n;){const r=i+Math.floor((n-i)/2),a=e[r];if(a===t)return r;t<a?n=r-1:i=r+1}return i}function Yr(e,t,i){let n;const r=[],a=[],o=[],s=[];for(i=null===i?1:i,n=0;n<t.length;n++){const i=t[n];r.push((e-1)*i[0]),a.push(i[1]),o.push(i[1])}const l=function(e,t,i){const n=(1-e)/((i=null===i?100:i)-1),r=[];for(;i-- >0;)r.push(e),e+=n;return r[r.length-1]=1,r}(0,0,e);for(n=0;n<e;n++)l[n]=(e-1)*Math.pow(l[n],i);const c=function(e,t){let i;const n=[],r=t.length;for(e.sort((function(e,t){return e-t})),i=0;i<r;i++)n[i]=Kr(e,t[i]);return n}(r,l);for(n=1;n<e-1;n++){const e=c[n],t=(l[n]-r[e-1])/(r[e]-r[e-1]),i=a[e]-o[e-1];s[n]=t*i+o[e-1]}return s[0]=o[0],s[e-1]=a[t.length-1],s}function Xr(e,t){let i=H[e];return i||(i=H[e]=t||{name:"",colors:[]}),!i.colors&&i.segmentedData&&(i.colors=function(e,t,i){let n;const r=[];i=null===i?1:i;const a=Yr(t=null===t?256:t,e.red,i),o=Yr(t,e.green,i),s=Yr(t,e.blue,i);for(n=0;n<t;n++){const e=[Math.round(255*a[n]),Math.round(255*o[n]),Math.round(255*s[n]),255];r.push(e)}return r}(i.segmentedData,i.numColors,i.gamma)),{getId:()=>e,getColorSchemeName:()=>i.name,setColorSchemeName(e){i.name=e},getNumberOfColors:()=>i.colors.length,setNumberOfColors(e){for(;i.colors.length<e;)i.colors.push(Hr);i.colors.length=e},getColor(e){return this.isValidIndex(e)?i.colors[e]:Hr},getColorRepeating(e){const t=i.colors.length;return e=t?e%t:0,this.getColor(e)},setColor(e,t){this.isValidIndex(e)&&(i.colors[e]=t)},addColor(e){i.colors.push(e)},insertColor(e,t){this.isValidIndex(e)&&i.colors.splice(e,1,t)},removeColor(e){this.isValidIndex(e)&&i.colors.splice(e,1)},clearColors(){i.colors=[]},buildLookupTable(e){if(!e)return;const t=i.colors.length;e.setNumberOfTableValues(t);for(let n=0;n<t;n++)e.setTableValue(n,i.colors[n])},createLookupTable(){const e=new Br;return this.buildLookupTable(e),e},isValidIndex:e=>e>=0&&e<i.colors.length}}function Zr(e,t,i){return Math.max(t,Math.min(i,e))}function Qr(e,t){if(void 0===e)throw new Error("drawImage: enabledElement parameter must not be undefined");const i=e.image;if(void 0===i)throw new Error("drawImage: image must be loaded before it can be drawn");const n=e.canvas.getContext("2d");n.setTransform(1,0,0,1,0,0),n.fillStyle="black",n.fillRect(0,0,e.canvas.width,e.canvas.height),n.imageSmoothingEnabled=!e.viewport.pixelReplication,Mr(e,n);const r=function(e,t,i){e.renderingTools.renderCanvas||(e.renderingTools.renderCanvas=document.createElement("canvas"));const n=e.renderingTools.renderCanvas;let r=e.viewport.colormap||e.options.colormap;if(e.options&&e.options.colormap&&console.warn("enabledElement.options.colormap is deprecated. Use enabledElement.viewport.colormap instead"),r&&"string"==typeof r&&(r=Xr(r)),!r)throw new Error("renderPseudoColorImage: colormap not found.");const a=r.getId();if(!1===xr(e,t)&&!0!==i&&e.renderingTools.colormapId===a)return n;n.width===t.width&&n.height===t.height||Vr(e,t);let o=Sr();e.renderingTools.colorLUT&&!i&&e.renderingTools.colormapId===a||(r.setNumberOfColors(256),e.renderingTools.colorLUT=r.createLookupTable(),e.renderingTools.colormapId=a);const s=e.renderingTools.renderCanvasData,l=e.renderingTools.renderCanvasContext,{viewport:c}=e,d=e.renderingTools.colorLUT;if("PT"===c.modality){const{windowWidth:e,windowCenter:i}=c.voi,n=i-e/2,r=255/(i+e/2-n);let a;a=c.invert?e=>Zr(Math.floor(255-(e-n)*r),0,255):e=>Zr(Math.floor((e-n)*r),0,255),zr(t,a,d,s.data)}else{const n=jr(t,e.viewport,i);t.stats=t.stats||{},t.stats.lastLutGenerateTime=Sr()-o,qr(t,n,d,s.data)}return o=Sr(),l.putImageData(s,0,0),t.stats.lastPutImageDataTime=Sr()-o,n}(e,i,t),a=e.viewport.displayedArea.tlhc.x-1,o=e.viewport.displayedArea.tlhc.y-1,s=e.viewport.displayedArea.brhc.x-a,l=e.viewport.displayedArea.brhc.y-o;n.drawImage(r,a,o,s,l,0,0,s,l),e.renderingTools=Lr(e)}function Jr(e,t){const i=e.image;if(!e.canvas||!e.image)return;const n=Sr();if(i.stats={lastGetPixelDataTime:-1,lastStoredPixelDataToCanvasImageDataTime:-1,lastPutImageDataTime:-1,lastRenderTime:-1,lastLutGenerateTime:-1},i){let n=i.render;n||(n=e.viewport.colormap?Qr:i.color?Nr:Gr),n(e,t)}const r=Sr()-n;i.stats.lastRenderTime=r,e.invalid=!1,e.needsRedraw=!1}function $r(e){return kr(e)}function ea(e,t){const i=$r(e);return i.invert(),i.transformPoint(t)}function ta(e,t){return $r(e).transformPoint(t)}const ia={viewport:{}};function na(e,t){if(null==e)throw new Error(t)}function ra(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;return na(e,"getImageSize: parameter image must not be undefined"),na(e.width,"getImageSize: parameter image must have width"),na(e.height,"getImageSize: parameter image must have height"),function(e){return!(null==e||0===e||180===e)}(t)?{height:e.width,width:e.height}:{width:e.width,height:e.height}}function aa(e,t){let i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;na(e,"getImageScale: parameter canvas must not be undefined"),na(t,"getImageScale: parameter image must not be undefined");const n=ra(t,i),r=t.rowPixelSpacing||1,a=t.columnPixelSpacing||1;let o=1,s=1;r<a?s=a/r:o=r/a;const l=e.height/n.height/o,c=e.width/n.width/s;return{verticalScale:l,horizontalScale:c,scaleFactor:Math.min(c,l)}}function oa(e,t,i,n){if(void 0===e)throw new Error("getDefaultViewport: parameter canvas must not be undefined");if(void 0===t)return Object.assign({},{scale:1,translation:{x:0,y:0},voi:{windowWidth:void 0,windowCenter:void 0},invert:!1,pixelReplication:!1,rotation:0,hflip:!1,vflip:!1,modalityLUT:void 0,voiLUT:void 0,colormap:void 0,labelmap:!1,displayedArea:{tlhc:{x:1,y:1},brhc:{x:1,y:1},rowPixelSpacing:1,columnPixelSpacing:1,presentationSizeMode:"NONE"}},ia.viewport);const r=aa(e,t,0).scaleFactor;let a;return"PT"===i&&t.isPreScaled?a={windowWidth:5,windowCenter:2.5}:void 0!==t.windowWidth&&void 0!==t.windowCenter&&(a={windowWidth:Array.isArray(t.windowWidth)?t.windowWidth[0]:t.windowWidth,windowCenter:Array.isArray(t.windowCenter)?t.windowCenter[0]:t.windowCenter}),{scale:r,translation:{x:0,y:0},voi:a,invert:t.invert,pixelReplication:!1,rotation:0,hflip:!1,vflip:!1,modalityLUT:t.modalityLUT,modality:i,voiLUT:t.voiLUT,colormap:void 0!==n?n:t.colormap,displayedArea:{tlhc:{x:1,y:1},brhc:{x:t.columns,y:t.rows},rowPixelSpacing:void 0===t.rowPixelSpacing?1:t.rowPixelSpacing,columnPixelSpacing:void 0===t.columnPixelSpacing?1:t.columnPixelSpacing,presentationSizeMode:"NONE"}}}function sa(e){const t=Tn().newInstance();let i=0,n=1024;return e&&void 0!==e.lower&&void 0!==e.upper&&(i=e.lower,n=e.upper),t.addRGBPoint(i,0,0,0),t.addRGBPoint(n,1,1,1),t}const la=[{id:"initialImages",retrieveType:"single"},{id:"errorRetrieve"}],ca=[{offset:-1,imageQualityStatus:W.ADJACENT_REPLICATE},{offset:1,imageQualityStatus:W.ADJACENT_REPLICATE},{offset:2,imageQualityStatus:W.FAR_REPLICATE}],da=[{id:"initialImages",positions:[.5,0,-1],retrieveType:"default",requestType:v.Thumbnail,priority:5,nearbyFrames:ca},{id:"quarterThumb",decimate:4,offset:3,requestType:v.Thumbnail,retrieveType:"multipleFast",priority:6,nearbyFrames:ca},{id:"halfThumb",decimate:4,offset:1,priority:7,requestType:v.Thumbnail,retrieveType:"multipleFast",nearbyFrames:ca},{id:"quarterFull",decimate:4,offset:2,priority:8,requestType:v.Thumbnail,retrieveType:"multipleFinal"},{id:"halfFull",decimate:4,offset:0,priority:9,requestType:v.Thumbnail,retrieveType:"multipleFinal"},{id:"threeQuarterFull",decimate:4,offset:1,priority:10,requestType:v.Thumbnail,retrieveType:"multipleFinal"},{id:"finalFull",decimate:4,offset:3,priority:11,requestType:v.Thumbnail,retrieveType:"multipleFinal"},{id:"errorRetrieve"}];let ha;ha=Symbol.asyncIterator;class ua{constructor(e){ce(this,"done",void 0),ce(this,"name",void 0),ce(this,"nextValue",void 0),ce(this,"waiting",void 0),ce(this,"rejectReason",void 0),this.name=e||"unknown"}static as(e){if(e.iterator)return e.iterator;const t=new ua("as iterator");return e.then((e=>{try{t.add(e,!0)}catch(e){t.reject(e)}}),(e=>t.reject(e))),t}add(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];this.nextValue=e,this.done||(this.done=t),this.waiting&&(this.waiting.resolve(e),this.waiting=void 0)}resolve(){this.done=!0,this.waiting&&(this.waiting.resolve(this.nextValue),this.waiting=void 0)}reject(e){var t;this.rejectReason=e,null===(t=this.waiting)||void 0===t||t.reject(e)}getRecent(){if(this.rejectReason)throw this.rejectReason;return this.nextValue}async*[ha](){for(;!this.done;){if(this.rejectReason)throw this.rejectReason;if(void 0!==this.nextValue&&(yield this.nextValue,this.done))break;this.waiting||(this.waiting={},this.waiting.promise=new Promise(((e,t)=>{this.waiting.resolve=e,this.waiting.reject=t}))),await this.waiting.promise}yield this.nextValue}async forEach(e,t){let i=0;try{for await(const n of this){const{done:r}=this;try{await e(n,r,i),i++}catch(e){if(!r){console.warn("Caught exception in intermediate value",e);continue}if(!t)throw e;t(e,r)}}}catch(e){if(!t)throw e;t(e,!0)}}generate(e,t){return e(this,this.reject.bind(this)).then((()=>{this.done||this.resolve()}),(e=>{this.reject(e),t?t(e):console.warn("Couldn't process because",e)}))}async nextPromise(){for await(const e of this)if(e)return e;return this.nextValue}async donePromise(){for await(const e of this);return this.nextValue}getNextPromise(){const e=this.nextPromise();return e.iterator=this,e}getDonePromise(){const e=this.donePromise();return e.iterator=this,e}}function ga(e,t){const i=[];for(let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0;n<e.length;n+=t)i.push(n);return i}class ma{constructor(e){ce(this,"stages",void 0),ce(this,"retrieveOptions",void 0),this.stages=e.stages||la,this.retrieveOptions=e.retrieveOptions||{}}loadImages(e,t){return new pa(this,e,t).loadImages()}}ce(ma,"createProgressive",va),ce(ma,"interleavedRetrieveStages",{stages:da}),ce(ma,"singleRetrieveStages",{stages:la}),ce(ma,"sequentialRetrieveStages",{stages:[{id:"lossySequential",retrieveType:"singleFast"},{id:"finalSequential",retrieveType:"singleFinal"}]});class pa{constructor(e,t,i){ce(this,"imageIds",void 0),ce(this,"listener",void 0),ce(this,"stages",void 0),ce(this,"retrieveOptions",void 0),ce(this,"outstandingRequests",0),ce(this,"stageStatusMap",new Map),ce(this,"imageQualityStatusMap",new Map),ce(this,"displayedIterator",new ua("displayed")),this.stages=e.stages,this.retrieveOptions=e.retrieveOptions,this.imageIds=t,this.listener=i}async loadImages(){const e=this.createStageRequests();this.outstandingRequests=e.length;for(const t of e)this.addRequest(t);return 0===this.outstandingRequests?Promise.resolve(null):this.displayedIterator.getDonePromise()}sendRequest(e,t){const{imageId:i,next:n}=e,r=(t.loader||Yt)(i,t),a=ua.as(r);let o=!1;return a.forEach((async(n,r)=>{const a=this.imageQualityStatusMap.get(i);if(!n)return void console.warn("No image retrieved",i);const{imageQualityStatus:s}=n;o||(o=s===W.FULL_RESOLUTION),void 0!==a&&a>s?this.updateStageStatus(e.stage,null,!0):(this.listener.successCallback(i,n),this.imageQualityStatusMap.set(i,s),this.displayedIterator.add(n),r&&this.updateStageStatus(e.stage),function(e,t,i,n,r){var a;if(null==i||null===(a=i.nearbyRequests)||void 0===a||!a.length)return;const{arrayBuffer:o,offset:s,type:l,length:c}=r.targetBuffer;if(!o||void 0===s||!l)return;const d=new Float32Array(o),h=d.byteLength/d.length,u=r.targetBuffer.offset/h,g=d.slice(u,u+c);for(const r of i.nearbyRequests)try{const{itemId:i,imageQualityStatus:a}=r,o=t.get(i);if(void 0!==o&&o>=a)continue;const s=e.getLoaderImageOptions(i),{offset:l}=s.targetBuffer;d.set(g,l/h);const c={...n,imageQualityStatus:a};e.successCallback(i,c),t.set(i,a)}catch(e){console.log("Couldn't fill nearby item ",r.itemId,e)}}(this.listener,this.imageQualityStatusMap,e,n,t))}),((t,r)=>{this.listener.errorCallback(i,o||!n,t),r&&this.updateStageStatus(e.stage,t)})).finally((()=>{if(!o&&n)Cn.getImageLoadObject(i)&&Cn.removeImageLoadObject(i),this.addRequest(n,t.streamingData);else{o||this.listener.errorCallback(i,!0,"Couldn't decode"),this.outstandingRequests--;for(let e=n;e;e=e.next)this.updateStageStatus(e.stage,null,!0)}this.outstandingRequests<=0&&this.displayedIterator.resolve()})),a.getDonePromise().catch((e=>null))}addRequest(e){var t;let i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const{imageId:n,stage:r}=e,a=this.listener.getLoaderImageOptions(n);if(!a)return;const{retrieveType:o="default"}=r,{retrieveOptions:s}=this,l=s[o]||s.default,c={...a,retrieveType:o,retrieveOptions:l,streamingData:i},d=null!==(t=r.priority)&&void 0!==t?t:-5,h=r.requestType||v.Interaction,u={imageId:n};Bt.addRequest(this.sendRequest.bind(this,e,c),h,u,d)}updateStageStatus(e,t){let i=arguments.length>2&&void 0!==arguments[2]&&arguments[2];const{id:n}=e,r=this.stageStatusMap.get(n);if(r&&(r.imageLoadPendingCount--,t?r.imageLoadFailedCount++:i||r.totalImageCount++,i||r.stageStartTime||(r.stageStartTime=Date.now()),!r.imageLoadPendingCount)){const{imageLoadFailedCount:e,totalImageCount:t,stageStartTime:i=Date.now(),startTime:a}=r,o={stageId:n,numberOfFailures:e,numberOfImages:t,stageDurationInMS:i?Date.now()-i:null,startDurationInMS:Date.now()-a};Rt(yt,m.IMAGE_RETRIEVAL_STAGE,o),this.stageStatusMap.delete(n)}}createStageRequests(){const e=new Array,t=new Map,i=(i,n)=>{const r=n<0?this.imageIds.length+n:n<1?Math.floor((this.imageIds.length-1)*n):n,a=this.imageIds[r];if(!a)throw new Error("No value found to add to requests at ".concat(n));const o={imageId:a,stage:i,nearbyRequests:this.findNearbyRequests(r,i)};this.addStageStatus(i);const s=t.get(a);s?s.next=o:e.push(o),t.set(a,o)};for(const e of this.stages){var n;(e.positions||ga(this.imageIds,e.decimate||1,null!==(n=e.offset)&&void 0!==n?n:0)).forEach((t=>i(e,t)))}return e}findNearbyRequests(e,t){const i=new Array;if(!t.nearbyFrames)return i;for(const n of t.nearbyFrames){const t=e+n.offset;t<0||t>=this.imageIds.length||i.push({itemId:this.imageIds[t],imageQualityStatus:n.imageQualityStatus})}return i}addStageStatus(e){const{id:t}=e,i=this.stageStatusMap.get(t)||{stageId:t,startTime:Date.now(),stageStartTime:null,totalImageCount:0,imageLoadFailedCount:0,imageLoadPendingCount:0};return i.imageLoadPendingCount++,this.stageStatusMap.set(t,i),i}}function va(e){return new ma(e)}const fa=ma,wa=class extends dr{constructor(e){var t;super(e),t=this,ce(this,"imageIds",void 0),ce(this,"currentImageIdIndex",void 0),ce(this,"targetImageIdIndex",void 0),ce(this,"debouncedTimeout",void 0),ce(this,"imagesLoader",this),ce(this,"globalDefaultProperties",void 0),ce(this,"perImageIdDefaultProperties",new Map),ce(this,"colormap",void 0),ce(this,"voiRange",void 0),ce(this,"voiUpdatedWithSetProperties",!1),ce(this,"VOILUTFunction",void 0),ce(this,"invert",!1),ce(this,"initialInvert",!1),ce(this,"initialTransferFunctionNodes",null),ce(this,"interpolationType",void 0),ce(this,"_imageData",void 0),ce(this,"cameraFocalPointOnRender",void 0),ce(this,"stackInvalidated",!1),ce(this,"_publishCalibratedEvent",!1),ce(this,"_calibrationEvent",void 0),ce(this,"_cpuFallbackEnabledElement",void 0),ce(this,"useCPURendering",void 0),ce(this,"useNativeDataType",!1),ce(this,"cpuImagePixelData",void 0),ce(this,"cpuRenderingInvalidated",void 0),ce(this,"csImage",void 0),ce(this,"modality",void 0),ce(this,"scaling",void 0),ce(this,"initialViewUp",void 0),ce(this,"updateRenderingPipeline",(()=>{this._configureRenderingPipeline()})),ce(this,"getImageData",void 0),ce(this,"getCamera",void 0),ce(this,"setCamera",void 0),ce(this,"getRotation",void 0),ce(this,"unsetColormap",void 0),ce(this,"resetCamera",void 0),ce(this,"canvasToWorld",void 0),ce(this,"worldToCanvas",void 0),ce(this,"getRenderer",void 0),ce(this,"getDefaultActor",void 0),ce(this,"getActors",void 0),ce(this,"getActor",void 0),ce(this,"setActors",void 0),ce(this,"addActors",void 0),ce(this,"addActor",void 0),ce(this,"removeAllActors",void 0),ce(this,"setVOI",void 0),ce(this,"setInterpolationType",void 0),ce(this,"setInvertColor",void 0),ce(this,"setColormap",void 0),ce(this,"resize",(()=>{this.useCPURendering&&this._resizeCPU()})),ce(this,"_resizeCPU",(()=>{this._cpuFallbackEnabledElement.viewport&&function(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];const i=e.canvas.width,n=e.canvas.height;!function(e){const{canvas:t}=e,{clientWidth:i,clientHeight:n}=t;t.width===i&&t.height===n||(t.width=i,t.height=n)}(e),void 0!==e.image&&(t||function(e,t,i){const n=e.viewport.scale,r=ra(e.image,e.viewport.rotation),a=Math.round(r.width*n),o=Math.round(r.height*n),s=e.viewport.translation.x,l=e.viewport.translation.y;return a===t&&o<=i||a<=t&&o===i&&0===s&&0===l}(e,i,n)?function(e){const{image:t}=e;e.viewport.scale=aa(e.canvas,t,e.viewport.rotation).scaleFactor,e.viewport.translation.x=0,e.viewport.translation.y=0}(e):function(e,t,i){const n=e.viewport.scale,r=e.canvas.width/t,a=e.canvas.height/i,o=Math.sqrt(r*a);e.viewport.scale=o*n}(e,i,n))}(this._cpuFallbackEnabledElement)})),ce(this,"getFrameOfReferenceUID",(()=>{const e=this.getCurrentImageId();if(!e)return;const t=oi("imagePlaneModule",e);return t?t.frameOfReferenceUID:void 0})),ce(this,"getCornerstoneImage",(()=>this.csImage)),ce(this,"createActorMapper",(e=>{const t=yr().newInstance();t.setInputData(e);const i=Pr().newInstance();i.setMapper(t);const{preferSizeOverAccuracy:n}=gt().rendering;return n&&t.setPreferSizeOverAccuracy(!0),e.getPointData().getNumberOfComponents()>1&&i.getProperty().setIndependentComponents(!1),i})),ce(this,"getNumberOfSlices",(()=>this.imageIds.length)),ce(this,"getDefaultProperties",(e=>{let t;return void 0!==e&&(t=this.perImageIdDefaultProperties.get(e)),void 0!==t?t:{...this.globalDefaultProperties,rotation:this.getRotation()}})),ce(this,"getProperties",(()=>{const{colormap:e,voiRange:t,VOILUTFunction:i,interpolationType:n,invert:r,voiUpdatedWithSetProperties:a}=this;return{colormap:e,voiRange:t,VOILUTFunction:i,interpolationType:n,invert:r,rotation:this.getRotation(),isComputedVOI:!a}})),ce(this,"getRotationCPU",(()=>{const{viewport:e}=this._cpuFallbackEnabledElement;return e.rotation})),ce(this,"getRotationGPU",(()=>{const{viewUp:e,viewPlaneNormal:t,flipVertical:i}=this.getCamera(),n=i?In.vec3.negate(In.vec3.create(),this.initialViewUp):this.initialViewUp,r=180*In.vec3.angle(n,e)/Math.PI,a=In.vec3.cross(In.vec3.create(),n,e);return In.vec3.dot(a,t)>=0?r:(360-r)%360})),ce(this,"renderImageObject",(e=>{this._setCSImage(e),(this.useCPURendering?this._updateToDisplayImageCPU:this._updateActorToDisplayImageId).call(this,e)})),ce(this,"_setCSImage",(e=>{var t;e.isPreScaled=null===(t=e.preScale)||void 0===t?void 0:t.scaled,this.csImage=e})),ce(this,"canvasToWorldCPU",(e=>{if(!this._cpuFallbackEnabledElement.image)return;const[t,i]=ea(this._cpuFallbackEnabledElement,e),{origin:n,spacing:r,direction:a}=this.getImageData(),o=In.vec3.fromValues(0,0,0),s=a.slice(0,3),l=a.slice(3,6);return In.vec3.scaleAndAdd(o,n,s,t*r[0]),In.vec3.scaleAndAdd(o,o,l,i*r[1]),[o[0],o[1],o[2]]})),ce(this,"worldToCanvasCPU",(e=>{const{spacing:t,direction:i,origin:n}=this.getImageData(),r=i.slice(0,3),a=i.slice(3,6),o=In.vec3.subtract(In.vec3.create(),e,n),s=[In.vec3.dot(o,r)/t[0],In.vec3.dot(o,a)/t[1]];return ta(this._cpuFallbackEnabledElement,s)})),ce(this,"canvasToWorldGPU",(e=>{const t=this.getRenderer(),i=this.getVtkActiveCamera(),n=i.getClippingRange(),r=i.getDistance();i.setClippingRange(r,r+.1);const a=this.getRenderingEngine().offscreenMultiRenderWindow.getOpenGLRenderWindow(),o=a.getSize(),s=window.devicePixelRatio||1,l=[e[0]*s,e[1]*s],c=[l[0]+this.sx,l[1]+this.sy];c[1]=o[1]-c[1];const d=a.displayToWorld(c[0],c[1],0,t);return i.setClippingRange(n[0],n[1]),[d[0],d[1],d[2]]})),ce(this,"worldToCanvasGPU",(e=>{const t=this.getRenderer(),i=this.getVtkActiveCamera(),n=i.getClippingRange(),r=i.getDistance();i.setClippingRange(r,r+.1);const a=this.getRenderingEngine().offscreenMultiRenderWindow.getOpenGLRenderWindow(),o=a.getSize(),s=a.worldToDisplay(...e,t);s[1]=o[1]-s[1];const l=[s[0]-this.sx,s[1]-this.sy];i.setClippingRange(n[0],n[1]);const c=window.devicePixelRatio||1;return[l[0]/c,l[1]/c]})),ce(this,"getCurrentImageIdIndex",(()=>this.currentImageIdIndex)),ce(this,"getTargetImageIdIndex",(()=>this.targetImageIdIndex)),ce(this,"getImageIds",(()=>this.imageIds)),ce(this,"getCurrentImageId",(()=>this.imageIds[this.currentImageIdIndex])),ce(this,"hasImageId",(e=>this.imageIds.includes(e))),ce(this,"hasImageURI",(e=>{const t=this.imageIds;for(let i=0;i<t.length;i++)if(de(t[i])===e)return!0;return!1})),ce(this,"customRenderViewportToCanvas",(()=>{if(!this.useCPURendering)throw new Error("Custom cpu rendering pipeline should only be hit in CPU rendering mode");return this._cpuFallbackEnabledElement.image?(Jr(this._cpuFallbackEnabledElement,this.cpuRenderingInvalidated),this.cpuRenderingInvalidated=!1):this.fillWithBackgroundColor(),{canvas:this.canvas,element:this.element,viewportId:this.id,renderingEngineId:this.renderingEngineId,viewportStatus:this.viewportStatus}})),ce(this,"renderingPipelineFunctions",{getImageData:{cpu:this.getImageDataCPU,gpu:this.getImageDataGPU},setColormap:{cpu:this.setColormapCPU,gpu:this.setColormapGPU},getCamera:{cpu:this.getCameraCPU,gpu:super.getCamera},setCamera:{cpu:this.setCameraCPU,gpu:super.setCamera},getPan:{cpu:this.getPanCPU,gpu:super.getPan},setPan:{cpu:this.setPanCPU,gpu:super.setPan},getZoom:{cpu:this.getZoomCPU,gpu:super.getZoom},setZoom:{cpu:this.setZoomCPU,gpu:super.setZoom},setVOI:{cpu:this.setVOICPU,gpu:this.setVOIGPU},getRotation:{cpu:this.getRotationCPU,gpu:this.getRotationGPU},setInterpolationType:{cpu:this.setInterpolationTypeCPU,gpu:this.setInterpolationTypeGPU},setInvertColor:{cpu:this.setInvertColorCPU,gpu:this.setInvertColorGPU},resetCamera:{cpu:function(){let e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0],i=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];return t.resetCameraCPU(e,i),!0},gpu:function(){let e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0],i=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];return t.resetCameraGPU(e,i),!0}},canvasToWorld:{cpu:this.canvasToWorldCPU,gpu:this.canvasToWorldGPU},worldToCanvas:{cpu:this.worldToCanvasCPU,gpu:this.worldToCanvasGPU},getRenderer:{cpu:()=>this.getCPUFallbackError("getRenderer"),gpu:super.getRenderer},getDefaultActor:{cpu:()=>this.getCPUFallbackError("getDefaultActor"),gpu:super.getDefaultActor},getActors:{cpu:()=>this.getCPUFallbackError("getActors"),gpu:super.getActors},getActor:{cpu:()=>this.getCPUFallbackError("getActor"),gpu:super.getActor},setActors:{cpu:()=>this.getCPUFallbackError("setActors"),gpu:super.setActors},addActors:{cpu:()=>this.getCPUFallbackError("addActors"),gpu:super.addActors},addActor:{cpu:()=>this.getCPUFallbackError("addActor"),gpu:super.addActor},removeAllActors:{cpu:()=>this.getCPUFallbackError("removeAllActors"),gpu:super.removeAllActors},unsetColormap:{cpu:this.unsetColormapCPU,gpu:this.unsetColormapGPU}}),this.scaling={},this.modality=null,this.useCPURendering=lt(),this.useNativeDataType=this._shouldUseNativeDataType(),this._configureRenderingPipeline(),this.useCPURendering?this._resetCPUFallbackElement():this._resetGPUViewport(),this.imageIds=[],this.currentImageIdIndex=0,this.targetImageIdIndex=0,this.cameraFocalPointOnRender=[0,0,0],this.resetCamera(),this.initializeElementDisabledHandler()}setUseCPURendering(e){this.useCPURendering=e,this._configureRenderingPipeline(e)}static get useCustomRenderingPipeline(){return lt()}_configureRenderingPipeline(e){this.useNativeDataType=this._shouldUseNativeDataType(),this.useCPURendering=null!=e?e:lt();for(const[e,t]of Object.entries(this.renderingPipelineFunctions))this[e]=this.useCPURendering?t.cpu:t.gpu;this.useCPURendering?this._resetCPUFallbackElement():this._resetGPUViewport()}_resetCPUFallbackElement(){this._cpuFallbackEnabledElement={canvas:this.canvas,renderingTools:{},transform:new _r,viewport:{rotation:0}}}_resetGPUViewport(){const e=this.getRenderer(),t=ur().newInstance();e.setActiveCamera(t);const i=[0,0,-1];this.initialViewUp=[0,-1,0],t.setDirectionOfProjection(-i[0],-i[1],-i[2]),t.setViewUp(...this.initialViewUp),t.setParallelProjection(!0),t.setThicknessFromFocalPoint(.1),t.setFreezeFocalPoint(!0)}initializeElementDisabledHandler(){yt.addEventListener(m.ELEMENT_DISABLED,(function e(){clearTimeout(this.debouncedTimeout),yt.removeEventListener(m.ELEMENT_DISABLED,e)}))}getImageDataGPU(){const e=this.getDefaultActor();if(!e)return;if(!yn(e))return;const{actor:t}=e,i=t.getMapper().getInputData();return{dimensions:i.getDimensions(),spacing:i.getSpacing(),origin:i.getOrigin(),direction:i.getDirection(),scalarData:i.getPointData().getScalars().getData(),imageData:t.getMapper().getInputData(),metadata:{Modality:this.modality},scaling:this.scaling,hasPixelSpacing:this.hasPixelSpacing,calibration:this.calibration,preScale:{...this.csImage.preScale}}}getImageDataCPU(){const{metadata:e}=this._cpuFallbackEnabledElement,t=e.spacing;return{dimensions:e.dimensions,spacing:t,origin:e.origin,direction:e.direction,metadata:{Modality:this.modality},scaling:this.scaling,imageData:{getDirection:()=>e.direction,getDimensions:()=>e.dimensions,getScalarData:()=>this.cpuImagePixelData,getSpacing:()=>t,worldToIndex:e=>{const t=this.worldToCanvasCPU(e),i=ea(this._cpuFallbackEnabledElement,t);return[i[0],i[1],0]},indexToWorld:e=>{const t=ta(this._cpuFallbackEnabledElement,[e[0],e[1]]);return this.canvasToWorldCPU(t)}},scalarData:this.cpuImagePixelData,hasPixelSpacing:this.hasPixelSpacing,calibration:this.calibration,preScale:{...this.csImage.preScale}}}buildMetadata(e){const t=e.imageId,{pixelRepresentation:i,bitsAllocated:n,bitsStored:r,highBit:a,photometricInterpretation:o,samplesPerPixel:s}=oi("imagePixelModule",t),{windowWidth:l,windowCenter:c,voiLUTFunction:d}=e,{modality:h}=oi("generalSeriesModule",t),u=oi("scalingModule",t);"PT"===h&&u&&this._addScalingToViewport(u),this.modality=h;const g=this._getValidVOILUTFunction(d);this.VOILUTFunction=g,this.calibration=null;let m=this._getImagePlaneModule(t);return this.useCPURendering||(m=this.calibrateIfNecessary(t,m)),{imagePlaneModule:m,imagePixelModule:{bitsAllocated:n,bitsStored:r,samplesPerPixel:s,highBit:a,photometricInterpretation:o,pixelRepresentation:i,windowWidth:l,windowCenter:c,modality:h,voiLUTFunction:g}}}calibrateIfNecessary(e,t){const i=oi("calibratedPixelSpacing",e),n=this.calibration!==i,{scale:r}=i||{};return this.hasPixelSpacing=r>0||t.rowPixelSpacing>0,t.calibration=i,n?(this.calibration=i,this._publishCalibratedEvent=!0,this._calibrationEvent={scale:r,calibration:i},t):t}setDefaultProperties(e,t){null==t?this.globalDefaultProperties=e:(this.perImageIdDefaultProperties.set(t,e),this.getCurrentImageId()===t&&this.setProperties(e))}clearDefaultProperties(e){null==e?(this.globalDefaultProperties={},this.resetProperties()):(this.perImageIdDefaultProperties.delete(e),this.resetToDefaultProperties())}setProperties(){let{colormap:e,voiRange:t,VOILUTFunction:i,invert:n,interpolationType:r,rotation:a}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},o=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(this.viewportStatus=this.csImage?j.PRE_RENDER:j.LOADING,null==this.globalDefaultProperties&&this.setDefaultProperties({colormap:e,voiRange:t,VOILUTFunction:i,invert:n,interpolationType:r,rotation:a}),void 0!==e&&this.setColormap(e),void 0!==t){const e=!0;this.setVOI(t,{suppressEvents:o,voiUpdatedWithSetProperties:e})}void 0!==i&&this.setVOILUTFunction(i,o),void 0!==n&&this.setInvertColor(n),void 0!==r&&this.setInterpolationType(r),void 0!==a&&this.getRotation()!==a&&this.setRotation(a)}resetProperties(){this.cpuRenderingInvalidated=!0,this.voiUpdatedWithSetProperties=!1,this.viewportStatus=j.PRE_RENDER,this.fillWithBackgroundColor(),this.useCPURendering&&(this._cpuFallbackEnabledElement.renderingTools={}),this._resetProperties(),this.render()}_resetProperties(){let e;e=this._isCurrentImagePTPrescaled()?this._getDefaultPTPrescaledVOIRange():this._getVOIRangeForCurrentImage(),this.setVOI(e),0!==this.getRotation()&&this.setRotation(0),this.setInterpolationType(C.LINEAR),wr(this.getTransferFunction(),this.initialTransferFunctionNodes),this.setInvertColor(this.initialInvert)}resetToDefaultProperties(){var e;this.cpuRenderingInvalidated=!0,this.viewportStatus=j.PRE_RENDER,this.fillWithBackgroundColor(),this.useCPURendering&&(this._cpuFallbackEnabledElement.renderingTools={});const t=this.getCurrentImageId(),i=this.perImageIdDefaultProperties.get(t)||this.globalDefaultProperties;let n;null!==(e=i.colormap)&&void 0!==e&&e.name&&this.setColormap(i.colormap),n=null==i.voiRange?this._getVOIRangeForCurrentImage():i.voiRange,this.setVOI(n),0!==this.getRotation()&&this.setRotation(0),this.setInterpolationType(C.LINEAR),this.setInvertColor(!1),this.render()}_setPropertiesFromCache(){const{interpolationType:e,invert:t}=this;let i;if(this.voiUpdatedWithSetProperties)i=this.voiRange;else if(this._isCurrentImagePTPrescaled())i=this._getDefaultPTPrescaledVOIRange();else{var n;i=null!==(n=this._getVOIRangeForCurrentImage())&&void 0!==n?n:this.voiRange}this.setVOI(i),this.setInterpolationType(e),this.setInvertColor(t)}getCameraCPU(){const{metadata:e,viewport:t}=this._cpuFallbackEnabledElement,{direction:i}=e,n=i.slice(6,9).map((e=>-e));let r=i.slice(3,6).map((e=>-e));if(t.rotation){const e=In.mat4.fromRotation(In.mat4.create(),t.rotation*Math.PI/180,n);r=In.vec3.transformMat4(In.vec3.create(),r,e)}const a=[this.element.clientWidth/2,this.element.clientHeight/2],o=this.canvasToWorld(a),s=this.canvasToWorld([0,0]),l=this.canvasToWorld([0,this.element.clientHeight]);return{parallelProjection:!0,focalPoint:o,position:[0,0,0],parallelScale:In.vec3.distance(s,l)/2,scale:t.scale,viewPlaneNormal:[n[0],n[1],n[2]],viewUp:[r[0],r[1],r[2]],flipHorizontal:this.flipHorizontal,flipVertical:this.flipVertical}}setCameraCPU(e){const{viewport:t,image:i}=this._cpuFallbackEnabledElement,n=this.getCameraCPU(),{focalPoint:r,parallelScale:a,scale:o,flipHorizontal:s,flipVertical:l}=e,{clientHeight:c}=this.element;if(r){const e=this.worldToCanvasCPU(r),i=ea(this._cpuFallbackEnabledElement,e),a=this.worldToCanvasCPU(n.focalPoint),o=ea(this._cpuFallbackEnabledElement,a),s=In.vec2.create();In.vec2.subtract(s,In.vec2.fromValues(i[0],i[1]),In.vec2.fromValues(o[0],o[1]));const l=function(e,t){const{hflip:i,vflip:n,rotation:r}=t;if(e.x*=i?-1:1,e.y*=n?-1:1,0!==r){const t=r*Math.PI/180,i=Math.cos(t),n=Math.sin(t),a=e.x*i-e.y*n,o=e.x*n+e.y*i;e.x=a,e.y=o}return e}({x:s[0],y:s[1]},t);t.translation.x-=l.x,t.translation.y-=l.y}if(a){const{rowPixelSpacing:e}=i,n=c*e*.5/a;t.scale=n,t.parallelScale=a}if(o){const{rowPixelSpacing:e}=i;t.scale=o,t.parallelScale=c*e*.5/o}void 0===s&&void 0===l||this.setFlipCPU({flipHorizontal:s,flipVertical:l}),this._cpuFallbackEnabledElement.transform=kr(this._cpuFallbackEnabledElement);const d={previousCamera:n,camera:this.getCamera(),element:this.element,viewportId:this.id,renderingEngineId:this.renderingEngineId,rotation:this.getRotation()};Rt(this.element,m.CAMERA_MODIFIED,d)}getPanCPU(){const{viewport:e}=this._cpuFallbackEnabledElement;return[e.translation.x,e.translation.y]}setPanCPU(e){const t=this.getCameraCPU();this.setCameraCPU({...t,focalPoint:[...e.map((e=>-e)),0]})}getZoomCPU(){const{viewport:e}=this._cpuFallbackEnabledElement;return e.scale}setZoomCPU(e){const t=this.getCameraCPU();this.setCameraCPU({...t,scale:e})}setFlipCPU(e){let{flipHorizontal:t,flipVertical:i}=e;const{viewport:n}=this._cpuFallbackEnabledElement;void 0!==t&&(n.hflip=t,this.flipHorizontal=n.hflip),void 0!==i&&(n.vflip=i,this.flipVertical=n.vflip)}setRotation(e){const t=this.getCamera();this.useCPURendering?this.setRotationCPU(e):this.setRotationGPU(e);const i={previousCamera:t,camera:this.getCamera(),element:this.element,viewportId:this.id,renderingEngineId:this.renderingEngineId,rotation:e};Rt(this.element,m.CAMERA_MODIFIED,i)}setVOILUTFunction(e,t){if(this.useCPURendering)throw new Error("VOI LUT function is not supported in CPU rendering");const i=this._getValidVOILUTFunction(e);let n=!1;this.VOILUTFunction!==i&&(n=!0),this.VOILUTFunction=i;const{voiRange:r}=this.getProperties();this.setVOI(r,{suppressEvents:t,forceRecreateLUTFunction:n})}setRotationCPU(e){const{viewport:t}=this._cpuFallbackEnabledElement;t.rotation=e}setRotationGPU(e){const{flipVertical:t}=this.getCamera(),i=t?In.vec3.negate(In.vec3.create(),this.initialViewUp):this.initialViewUp;this.setCameraNoEvent({viewUp:i}),this.getVtkActiveCamera().roll(-e)}setInterpolationTypeGPU(e){const t=this.getDefaultActor();if(!t)return;if(!yn(t))return;const{actor:i}=t;i.getProperty().setInterpolationType(e),this.interpolationType=e}setInterpolationTypeCPU(e){const{viewport:t}=this._cpuFallbackEnabledElement;t.pixelReplication=e!==C.LINEAR,this.interpolationType=e}setInvertColorCPU(e){const{viewport:t}=this._cpuFallbackEnabledElement;t&&(t.invert=e,this.invert=e)}setInvertColorGPU(e){const t=this.getDefaultActor();if(t&&yn(t))if(Rn(t,"vtkVolume")){const i=t.actor.getProperty().getRGBTransferFunction(0);(!this.invert&&e||this.invert&&!e)&&Ln(i),this.invert=e}else if(Rn(t,"vtkImageSlice")){const i=t.actor.getProperty().getRGBTransferFunction(0);(!this.invert&&e||this.invert&&!e)&&Ln(i),this.invert=e}}setVOICPU(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const{suppressEvents:i=!1}=t,{viewport:n,image:r}=this._cpuFallbackEnabledElement;if(!n||!r)return;if(void 0===e){const{windowWidth:t,windowCenter:i}=r,a=Array.isArray(t)?t[0]:t,o=Array.isArray(i)?i[0]:i;n.voi={windowWidth:a,windowCenter:o};const{lower:s,upper:l}=li(a,o);e={lower:s,upper:l}}else{const{lower:t,upper:i}=e,{windowCenter:r,windowWidth:a}=si(t,i);n.voi||(n.voi={windowWidth:0,windowCenter:0}),n.voi.windowWidth=a,n.voi.windowCenter=r}this.voiRange=e;const a={viewportId:this.id,range:e};i||Rt(this.element,m.VOI_MODIFIED,a)}getTransferFunction(){const e=this.getDefaultActor();if(e&&yn(e))return e.actor.getProperty().getRGBTransferFunction(0)}setVOIGPU(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const{suppressEvents:i=!1,forceRecreateLUTFunction:n=!1,voiUpdatedWithSetProperties:r=!1}=t;if(e&&this.voiRange&&this.voiRange.lower===e.lower&&this.voiRange.upper===e.upper&&!n&&!this.stackInvalidated)return;const a=this.getDefaultActor();if(!a)return;if(!yn(a))return;const o=a.actor;let s=e;if(void 0===s){const e=o.getMapper().getInputData().getPointData().getScalars().getRange();s={lower:e[0],upper:e[1]}}o.getProperty().setUseLookupTableScalarRange(!0);let l=o.getProperty().getRGBTransferFunction(0);const c=this.VOILUTFunction===V.SAMPLED_SIGMOID;if((c||!l||n)&&(l=(c?Un:sa)(s),this.invert&&Ln(l),o.getProperty().setRGBTransferFunction(0,l),this.initialTransferFunctionNodes=fr(l)),c||l.setRange(s.lower,s.upper),this.voiRange=s,this.voiUpdatedWithSetProperties||(this.voiUpdatedWithSetProperties=r),i)return;const d={viewportId:this.id,range:s,VOILUTFunction:this.VOILUTFunction};Rt(this.element,m.VOI_MODIFIED,d)}_addScalingToViewport(e){if(this.scaling.PT)return;const{suvbw:t,suvlbm:i,suvbsa:n}=e,r={};i&&(r.suvbwToSuvlbm=i/t),n&&(r.suvbwToSuvbsa=n/t),this.scaling.PT=r}_getNumCompsFromPhotometricInterpretation(e){let t=1;return"RGB"!==e&&-1===e.indexOf("YBR")&&"PALETTE COLOR"!==e||(t=3),t}_getImageDataMetadata(e){const{imagePlaneModule:t,imagePixelModule:i}=this.buildMetadata(e);let n,r;n=t.rowCosines,r=t.columnCosines,null!=n&&null!=r||(n=[1,0,0],r=[0,1,0]);const a=In.vec3.fromValues(n[0],n[1],n[2]),o=In.vec3.fromValues(r[0],r[1],r[2]),s=In.vec3.create();In.vec3.cross(s,a,o);let l=t.imagePositionPatient;null==l&&(l=[0,0,0]);const c=t.columnPixelSpacing||e.columnPixelSpacing,d=t.rowPixelSpacing||e.rowPixelSpacing,h=e.columns,u=e.rows,g=e.numComps||this._getNumCompsFromPhotometricInterpretation(i.photometricInterpretation);return{bitsAllocated:i.bitsAllocated,numComps:g,origin:l,direction:[...a,...o,...s],dimensions:[h,u,1],spacing:[c,d,1],numVoxels:h*u*1,imagePlaneModule:t,imagePixelModule:i}}_getCameraOrientation(e){const t=e.slice(6,9).map((e=>-e)),i=e.slice(3,6).map((e=>-e));return{viewPlaneNormal:[t[0],t[1],t[2]],viewUp:[i[0],i[1],i[2]]}}_createVTKImageData(e){let{origin:t,direction:i,dimensions:n,spacing:r,numComps:a,pixelArray:o}=e;const s=new o.constructor(o.length),l=ae().newInstance({name:"Pixels",numberOfComponents:a,values:s});this._imageData=ne().newInstance(),this._imageData.setDimensions(n),this._imageData.setSpacing(r),this._imageData.setDirection(i),this._imageData.setOrigin(t),this._imageData.getPointData().setScalars(l)}async setStack(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;this._throwIfDestroyed(),this.imageIds=e,this.currentImageIdIndex=t,this.targetImageIdIndex=t;const i=oi(Or.IMAGE_RETRIEVE_CONFIGURATION,e[t],"stack");this.imagesLoader=i?(i.create||va)(i):this,this.stackInvalidated=!0,this.flipVertical=!1,this.flipHorizontal=!1,this.voiRange=null,this.interpolationType=C.LINEAR,this.invert=!1,this.viewportStatus=j.LOADING,this.fillWithBackgroundColor(),this.useCPURendering&&(this._cpuFallbackEnabledElement.renderingTools={},delete this._cpuFallbackEnabledElement.viewport.colormap);const n=await this._setImageIdIndex(t),r={imageIds:e,viewportId:this.id,element:this.element,currentImageIdIndex:t};return Rt(yt,m.STACK_VIEWPORT_NEW_STACK,r),n}_throwIfDestroyed(){if(this.isDisabled)throw new Error("The stack viewport has been destroyed and is no longer usable. Renderings will not be performed. If you are using the same viewportId and have re-enabled the viewport, you need to grab the new viewport instance using renderingEngine.getViewport(viewportId), instead of using your lexical scoped reference to the viewport instance.")}_checkVTKImageDataMatchesCornerstoneImage(e,t){if(!t)return!1;const[i,n]=t.getSpacing(),[r,a]=t.getDimensions(),o=this._getImagePlaneModule(e.imageId),s=t.getDirection(),l=s.slice(0,3),c=s.slice(3,6),d=t.getPointData().getScalars().getDataType(),h=lr(i,e.columnPixelSpacing),u=lr(n,e.rowPixelSpacing);return(h||null===e.columnPixelSpacing&&1===i)&&(u||null===e.rowPixelSpacing&&1===n)&&r===e.columns&&a===e.rows&&lr(o.rowCosines,l)&&lr(o.columnCosines,c)&&(!this.useNativeDataType||d===e.getPixelData().constructor.name)}_updateVTKImageDataFromCornerstoneImage(e){let t=this._getImagePlaneModule(e.imageId).imagePositionPatient;null==t&&(t=[0,0,0]),this._imageData.setOrigin(t),this._updatePixelData(e)}_updatePixelData(e){const t=e.getPixelData(),i=this._imageData.getPointData().getScalars().getData();if(e.color&&e.rgba){const n=new Uint8Array(e.columns*e.rows*3);for(let i=0;i<e.columns*e.rows;i++)n[3*i]=t[4*i],n[3*i+1]=t[4*i+1],n[3*i+2]=t[4*i+2];e.rgba=!1,e.getPixelData=()=>n,i.set(n)}else i.set(t);this._imageData.modified()}_loadAndDisplayImage(e,t){return this.useCPURendering?this._loadAndDisplayImageCPU(e,t):this._loadAndDisplayImageGPU(e,t)}_loadAndDisplayImageCPU(e,t){return new Promise(((i,n)=>{function r(e,t,n){if(this.currentImageIdIndex!==t)return;const r=e.getPixelData(),a=e.preScale,o=null==a?void 0:a.scalingParameters,s=(null==a?void 0:a.scaled)&&(null==o?void 0:o.rescaleIntercept)%1!=0||(null==o?void 0:o.rescaleSlope)%1!=0;if(r instanceof Float32Array&&s){const t={min:e.maxPixelValue,max:e.minPixelValue},i=Math.abs(t.max-t.min)/65535,n=t.min,a=r.length,o=new Uint16Array(a);let s=65535,l=0;for(let e=0;e<a;e++){const t=Math.floor((r[e]-n)/i);o[e]=t,s=Math.min(s,t),l=Math.max(l,t)}e.minPixelValue=s,e.maxPixelValue=l,e.slope=i,e.intercept=n,e.getPixelData=()=>o,e.preScale={...e.preScale,scaled:!1}}this._setCSImage(e),this.viewportStatus=j.PRE_RENDER;const l={image:e,imageId:n,imageIdIndex:t,viewportId:this.id,renderingEngineId:this.renderingEngineId};Rt(this.element,m.STACK_NEW_IMAGE,l),this._updateToDisplayImageCPU(e),this.render(),this.currentImageIdIndex=t,i(n)}function a(e,t,i){const r={error:e,imageIdIndex:t,imageId:i};this.suppressEvents||Rt(yt,m.IMAGE_LOAD_ERROR,r),n(e)}const o=v.Interaction,s={imageId:e,imageIdIndex:t},l={preScale:{enabled:!0},useRGBA:!0,requestType:o},c={imageId:e,imageIdIndex:t,viewportId:this.id,renderingEngineId:this.renderingEngineId};Rt(this.element,m.PRE_STACK_NEW_IMAGE,c),Bt.addRequest(function(e,t,i){return Yt(e,i).then((i=>{r.call(this,i,t,e)}),(i=>{a.call(this,i,t,e)}))}.bind(this,e,t,l),o,s,-5)}))}successCallback(e,t){var i,n;const r=this.imageIds.indexOf(e);if(this.currentImageIdIndex!==r)return;const a=null===(i=this.csImage)||void 0===i?void 0:i.imageFrame,o=null==t?void 0:t.imageFrame;(null==a?void 0:a.photometricInterpretation)===(null==o?void 0:o.photometricInterpretation)&&(null===(n=this.csImage)||void 0===n?void 0:n.photometricInterpretation)===(null==t?void 0:t.photometricInterpretation)||(this.stackInvalidated=!0),this._setCSImage(t);const s={image:t,imageId:e,imageIdIndex:r,viewportId:this.id,renderingEngineId:this.renderingEngineId};Rt(this.element,m.STACK_NEW_IMAGE,s),this._updateActorToDisplayImageId(t),this.render(),this.currentImageIdIndex=r}errorCallback(e,t,i){if(!t)return;const n={error:i,imageIdIndex:this.imageIds.indexOf(e),imageId:e};Rt(yt,m.IMAGE_LOAD_ERROR,n)}getLoaderImageOptions(e){const t=this.imageIds.indexOf(e),{transferSyntaxUID:i}=oi("transferSyntax",e)||{},n={imageId:e,imageIdIndex:t};return{targetBuffer:{type:this.useNativeDataType?void 0:"Float32Array"},preScale:{enabled:!0},useRGBA:!1,transferSyntaxUID:i,priority:5,requestType:v.Interaction,additionalDetails:n}}loadImages(e,t){return Promise.allSettled(e.map((e=>{const i=this.getLoaderImageOptions(e);return Yt(e,i).then((i=>(t.successCallback(e,i),e)),(i=>(t.errorCallback(e,!0,i),e)))})))}_loadAndDisplayImageGPU(e,t){const i={imageId:e,imageIdIndex:t,viewportId:this.id,renderingEngineId:this.renderingEngineId};return Rt(this.element,m.PRE_STACK_NEW_IMAGE,i),this.imagesLoader.loadImages([e],this).then((t=>e))}_updateToDisplayImageCPU(e){const t=this._getImageDataMetadata(e),i=oa(this.canvas,e,this.modality,this._cpuFallbackEnabledElement.viewport.colormap),{windowCenter:n,windowWidth:r}=i.voi;this.voiRange=li(r,n),this._cpuFallbackEnabledElement.image=e,this._cpuFallbackEnabledElement.metadata={...t},this.cpuImagePixelData=e.getPixelData();const a=Object.assign({},i,this._cpuFallbackEnabledElement.viewport);this._cpuFallbackEnabledElement.viewport=this.stackInvalidated?i:a,this.stackInvalidated=!1,this.cpuRenderingInvalidated=!0,this._cpuFallbackEnabledElement.transform=kr(this._cpuFallbackEnabledElement)}_updateActorToDisplayImageId(e){const t=this._checkVTKImageDataMatchesCornerstoneImage(e,this._imageData),i=this.getRenderer().getActiveCamera(),n=se()(this.getCamera());if(t&&!this.stackInvalidated){this._updateVTKImageDataFromCornerstoneImage(e);const t=this.getCamera(),r=In.vec3.subtract(In.vec3.create(),this.cameraFocalPointOnRender,t.focalPoint);this.resetCameraNoEvent(),this.setCameraNoEvent({flipHorizontal:n.flipHorizontal,flipVertical:n.flipVertical,viewUp:n.viewUp});const{focalPoint:a}=this.getCamera();return this.cameraFocalPointOnRender=a,i.setFreezeFocalPoint(!0),this._restoreCameraProps(t,n,r),void this._setPropertiesFromCache()}const{origin:r,direction:a,dimensions:o,spacing:s,numComps:l,imagePixelModule:c}=this._getImageDataMetadata(e);this._createVTKImageData({origin:r,direction:a,dimensions:o,spacing:s,numComps:l,pixelArray:e.getPixelData()}),this._updateVTKImageDataFromCornerstoneImage(e);const d=this.createActorMapper(this._imageData),h=this.getActors();h.length&&h[0].uid===this.id?h[0].actor=d:h.unshift({uid:this.id,actor:d}),this.setActors(h);const{viewPlaneNormal:u,viewUp:g}=this._getCameraOrientation(a);this.setCameraNoEvent({viewUp:g,viewPlaneNormal:u}),this.initialViewUp=g,this.resetCameraNoEvent(),this.triggerCameraEvent(this.getCamera(),n),i.setFreezeFocalPoint(!0);const m="MONOCHROME1"===c.photometricInterpretation;this.stackInvalidated=!0,this.setVOI(this._getInitialVOIRange(e),{forceRecreateLUTFunction:!!m}),this.initialInvert=!!m,this.setInvertColor(this.invert||this.initialInvert),this.cameraFocalPointOnRender=this.getCamera().focalPoint,this.stackInvalidated=!1,this._publishCalibratedEvent&&this.triggerCalibrationEvent()}_getInitialVOIRange(e){if(this.voiRange&&this.voiUpdatedWithSetProperties)return this.globalDefaultProperties.voiRange;const{windowCenter:t,windowWidth:i}=e;let n=this._getVOIRangeFromWindowLevel(i,t);return n=this._getPTPreScaledRange()||n,n}_getPTPreScaledRange(){if(this._isCurrentImagePTPrescaled())return this._getDefaultPTPrescaledVOIRange()}_isCurrentImagePTPrescaled(){var e;return!("PT"!==this.modality||!this.csImage.isPreScaled||null===(e=this.csImage.preScale)||void 0===e||null===(e=e.scalingParameters)||void 0===e||!e.suvbw)}_getDefaultPTPrescaledVOIRange(){return{lower:0,upper:5}}_getVOIRangeFromWindowLevel(e,t){let i,n;if("number"==typeof t&&"number"==typeof e?(i=t,n=e):Array.isArray(t)&&Array.isArray(e)&&(i=t[0],n=e[0]),void 0!==i&&void 0!==n)return li(n,i)}async _setImageIdIndex(e){if(e>=this.imageIds.length)throw new Error("ImageIdIndex provided ".concat(e," is invalid, the stack only has ").concat(this.imageIds.length," elements"));this.currentImageIdIndex=e,this.hasPixelSpacing=!0,this.viewportStatus=j.PRE_RENDER;const t=await this._loadAndDisplayImage(this.imageIds[e],e);if(this.perImageIdDefaultProperties.size>=1){const e=this.perImageIdDefaultProperties.get(t);void 0!==e?this.setProperties(e):void 0!==this.globalDefaultProperties&&this.setProperties(this.globalDefaultProperties)}return t}resetCameraCPU(e,t){const{image:i}=this._cpuFallbackEnabledElement;if(!i)return;!function(e){let t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],i=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];const{canvas:n,image:r,viewport:a}=e,o=aa(n,r,0).scaleFactor;a.vflip=!1,a.hflip=!1,t&&(a.translation.x=0,a.translation.y=0),i&&(a.displayedArea.tlhc.x=1,a.displayedArea.tlhc.y=1,a.displayedArea.brhc.x=r.columns,a.displayedArea.brhc.y=r.rows,a.scale=o)}(this._cpuFallbackEnabledElement,e,t);const{scale:n}=this._cpuFallbackEnabledElement.viewport,{clientWidth:r,clientHeight:a}=this.element,o=[r/2,a/2],s=this.canvasToWorldCPU(o);this.setCameraCPU({focalPoint:s,scale:n})}resetCameraGPU(e,t){return this.setCamera({flipHorizontal:!1,flipVertical:!1,viewUp:this.initialViewUp}),super.resetCamera(e,t,!0)}scroll(e){let t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],i=arguments.length>2&&void 0!==arguments[2]&&arguments[2];const n=this.imageIds,r=this.targetImageIdIndex,a=n.length;let o=r+e;o=Math.max(0,o),i?o%=a:o=Math.min(a-1,o),this.targetImageIdIndex=o;const s=n[o];Cn.isLoaded(s)||!t?this.setImageIdIndex(o):(clearTimeout(this.debouncedTimeout),this.debouncedTimeout=window.setTimeout((()=>{this.setImageIdIndex(o)}),40));const l={newImageIdIndex:o,imageId:s,direction:e};o!==r&&Rt(this.element,m.STACK_VIEWPORT_SCROLL,l)}setImageIdIndex(e){return this._throwIfDestroyed(),this.currentImageIdIndex===e?Promise.resolve(this.getCurrentImageId()):this._setImageIdIndex(e)}calibrateSpacing(e){const t=this.getImageIds().indexOf(e);this.stackInvalidated=!0,this._loadAndDisplayImage(e,t)}_restoreCameraProps(e,t,i){let{parallelScale:n}=e;const r=this.getRenderer(),{position:a,focalPoint:o}=this.getCamera(),s=In.vec3.subtract(In.vec3.create(),a,i),l=In.vec3.subtract(In.vec3.create(),o,i);this.setCameraNoEvent({parallelScale:n,position:s,focalPoint:l});const c=this.getCamera();this.triggerCameraEvent(c,t);const d={type:"ResetCameraEvent",renderer:r};r.invokeEvent(d)}triggerCameraEvent(e,t){const i={previousCamera:t,camera:e,element:this.element,viewportId:this.id,renderingEngineId:this.renderingEngineId};this.suppressEvents||Rt(this.element,m.CAMERA_MODIFIED,i)}triggerCalibrationEvent(){const{imageData:e}=this.getImageData(),t={element:this.element,viewportId:this.id,renderingEngineId:this.renderingEngineId,imageId:this.getCurrentImageId(),imageData:e,worldToIndex:e.getWorldToIndex(),...this._calibrationEvent};this.suppressEvents||Rt(this.element,m.IMAGE_SPACING_CALIBRATED,t),this._publishCalibratedEvent=!1}_getVOIRangeForCurrentImage(){const{windowCenter:e,windowWidth:t}=this.csImage;return this._getVOIRangeFromWindowLevel(t,e)}_getValidVOILUTFunction(e){return-1===Object.values(V).indexOf(e)&&(e=V.LINEAR),e}getCPUFallbackError(e){return new Error("method ".concat(e," cannot be used during CPU Fallback mode"))}fillWithBackgroundColor(){const e=this.getRenderingEngine();e&&e.fillCanvasWithBackgroundColor(this.canvas,this.options.background)}unsetColormapCPU(){delete this._cpuFallbackEnabledElement.viewport.colormap,this._cpuFallbackEnabledElement.renderingTools={},this.cpuRenderingInvalidated=!0,this.fillWithBackgroundColor(),this.render()}setColormapCPU(e){this.colormap=e;const t=Xr(e.name,e);this._cpuFallbackEnabledElement.viewport.colormap=t,this._cpuFallbackEnabledElement.renderingTools={},this.fillWithBackgroundColor(),this.cpuRenderingInvalidated=!0,this.render()}setColormapGPU(e){const t=this.getDefaultActor().actor.getProperty(),i=t.getRGBTransferFunction(),n=xn(e.name)||On().getPresetByName(e.name);if(i)i.applyColorMap(n),i.setMappingRange(this.voiRange.lower,this.voiRange.upper),t.setRGBTransferFunction(0,i);else{const e=Tn().newInstance();e.applyColorMap(n),e.setMappingRange(this.voiRange.lower,this.voiRange.upper),t.setRGBTransferFunction(0,e)}this.colormap=e,this.render()}unsetColormapGPU(){throw new Error("unsetColormapGPU not implemented.")}_getImagePlaneModule(e){const t=oi("imagePlaneModule",e);oi("calibratedPixelSpacing",e),this.calibration||(this.calibration=t.calibration);const i={...t};var n,r;return i.columnPixelSpacing||(i.columnPixelSpacing=1,this.hasPixelSpacing=(null===(n=this.calibration)||void 0===n?void 0:n.scale)>0),i.rowPixelSpacing||(i.rowPixelSpacing=1,this.hasPixelSpacing=(null===(r=this.calibration)||void 0===r?void 0:r.scale)>0),i.columnCosines||(i.columnCosines=[0,1,0]),i.rowCosines||(i.rowCosines=[1,0,0]),i.imagePositionPatient||(i.imagePositionPatient=[0,0,0]),i.imageOrientationPatient||(i.imageOrientationPatient=new Float32Array([1,0,0,0,1,0])),i}},Ia=class extends Ir{constructor(e){super(e),ce(this,"getRotation",(()=>0)),ce(this,"getCurrentImageIdIndex",(()=>{})),ce(this,"getCurrentImageId",(()=>null));const{parallelProjection:t,orientation:i}=this.options,n=this.getVtkActiveCamera();null!=t&&n.setParallelProjection(t),i&&i!==b.ACQUISITION&&this.applyViewOrientation(i)}resetCamera(){let e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0],t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],i=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];super.resetCamera(e,t,i),this.resetVolumeViewportClippingRange()}posProcessNewActors(){this.newActorAdded&&this.getRenderer().resetCameraClippingRange(),super.posProcessNewActors()}setSlabThickness(e,t){return null}setBlendMode(e,t,i){return null}resetProperties(e){return null}};class Ca extends dr{constructor(e){super({...e,canvas:e.canvas||pi(e.element)}),ce(this,"modality",void 0),ce(this,"imageId",void 0),ce(this,"uid",void 0),ce(this,"renderingEngineId",void 0),ce(this,"canvasContext",void 0),ce(this,"videoElement",void 0),ce(this,"videoWidth",0),ce(this,"videoHeight",0),ce(this,"loop",!0),ce(this,"mute",!0),ce(this,"isPlaying",!1),ce(this,"scrollSpeed",1),ce(this,"playbackRate",1),ce(this,"frameRange",[0,0]),ce(this,"metadata",void 0),ce(this,"fps",30),ce(this,"numberOfFrames",0),ce(this,"videoCamera",{panWorld:[0,0],parallelScale:1}),ce(this,"feFilter",void 0),ce(this,"averageWhite",void 0),ce(this,"voiRange",{lower:0,upper:255}),ce(this,"getProperties",(()=>({loop:this.videoElement.loop,muted:this.videoElement.muted,playbackRate:this.playbackRate,scrollSpeed:this.scrollSpeed,voiRange:{...this.voiRange}}))),ce(this,"resetCamera",(()=>(this.refreshRenderValues(),this.canvasContext.fillRect(0,0,this.canvas.width,this.canvas.height),!1===this.isPlaying&&this.renderFrame(),!0))),ce(this,"getNumberOfSlices",(()=>Math.round(this.videoElement.duration*this.fps/this.scrollSpeed))),ce(this,"getFrameOfReferenceUID",(()=>this.videoElement.src)),ce(this,"resize",(()=>{const e=this.canvas,{clientWidth:t,clientHeight:i}=e;e.width===t&&e.height===i||(e.width=t,e.height=i),this.refreshRenderValues(),!1===this.isPlaying&&this.renderFrame()})),ce(this,"canvasToWorld",(e=>{const t=this.videoCamera.panWorld,i=this.getWorldToCanvasRatio(),n=[t[0]*i,t[1]*i],r=[e[0]-n[0],e[1]-n[1]];return[r[0]/i,r[1]/i,0]})),ce(this,"worldToCanvas",(e=>{const t=this.videoCamera.panWorld,i=this.getWorldToCanvasRatio(),n=[(e[0]+t[0])*i,(e[1]+t[1])*i];return[n[0],n[1]]})),ce(this,"getRotation",(()=>0)),ce(this,"canvasToIndex",(e=>{const t=this.getTransform();return t.invert(),t.transformPoint(e)})),ce(this,"indexToCanvas",(e=>this.getTransform().transformPoint(e))),ce(this,"customRenderViewportToCanvas",(()=>{this.renderFrame()})),ce(this,"renderFrame",(()=>{const e=this.getTransform().getMatrix();this.canvasContext.transform(e[0],e[1],e[2],e[3],e[4],e[5]),this.canvasContext.drawImage(this.videoElement,0,0,this.videoWidth,this.videoHeight),this.canvasContext.resetTransform(),Rt(this.element,m.IMAGE_RENDERED,{element:this.element,viewportId:this.id,viewport:this,renderingEngineId:this.renderingEngineId,time:this.videoElement.currentTime,duration:this.videoElement.duration});const t=this.getFrameNumber();this.isPlaying&&(t<this.frameRange[0]?this.setFrameNumber(this.frameRange[0]):t>this.frameRange[1]&&(this.loop?this.setFrameNumber(this.frameRange[0]):this.pause()))})),ce(this,"renderWhilstPlaying",(()=>{this.renderFrame(),this.isPlaying&&requestAnimationFrame(this.renderWhilstPlaying)})),this.canvasContext=this.canvas.getContext("2d"),this.renderingEngineId=e.renderingEngineId,this.element.setAttribute("data-viewport-uid",this.id),this.element.setAttribute("data-rendering-engine-uid",this.renderingEngineId),this.videoElement=document.createElement("video"),this.videoElement.muted=this.mute,this.videoElement.loop=this.loop,this.videoElement.crossOrigin="anonymous",this.addEventListeners(),this.resize()}static get useCustomRenderingPipeline(){return!0}addEventListeners(){this.canvas.addEventListener(m.ELEMENT_DISABLED,this.elementDisabledHandler)}removeEventListeners(){this.canvas.removeEventListener(m.ELEMENT_DISABLED,this.elementDisabledHandler)}elementDisabledHandler(){this.removeEventListeners(),this.videoElement.remove()}_getImageDataMetadata(){const e=oi(z.IMAGE_PLANE,this.imageId);let t=e.rowCosines,i=e.columnCosines;null!=t&&null!=i||(t=[1,0,0],i=[0,1,0]);const n=In.vec3.fromValues(t[0],t[1],t[2]),r=In.vec3.fromValues(i[0],i[1],i[2]),a=In.vec3.create();In.vec3.cross(a,n,r);let o=e.imagePositionPatient;null==o&&(o=[0,0,0]);const s=e.columnPixelSpacing||1,l=e.rowPixelSpacing||1,c=e.columns,d=e.rows;return this.hasPixelSpacing=!!e.columnPixelSpacing,{bitsAllocated:8,numComps:3,origin:o,direction:[...n,...r,...a],dimensions:[c,d,1],spacing:[s,l,1],hasPixelSpacing:this.hasPixelSpacing,numVoxels:c*d*1,imagePlaneModule:e}}setVideo(e,t){this.imageId=Array.isArray(e)?e[0]:e;const{rendered:i}=oi(z.IMAGE_URL,e),n=oi(z.GENERAL_SERIES,e);return this.modality=null==n?void 0:n.Modality,this.metadata=this._getImageDataMetadata(),this.setVideoURL(i).then((()=>{let{cineRate:i,numberOfFrames:n}=oi(z.CINE,e);n||(n=Math.round(this.videoElement.duration*(i||30))),i||(i=Math.round(n/this.videoElement.duration)),this.fps=i,this.numberOfFrames=n,this.setFrameRange([1,n]),void 0!==t&&(this.pause(),this.setFrameNumber(t))}))}async setVideoURL(e){return new Promise((t=>{this.videoElement.src=e,this.videoElement.preload="auto";const i=()=>{this.videoWidth=this.videoElement.videoWidth,this.videoHeight=this.videoElement.videoHeight,this.videoElement.removeEventListener("loadedmetadata",i),this.refreshRenderValues(),t(!0)};this.videoElement.addEventListener("loadedmetadata",i)}))}togglePlayPause(){return this.isPlaying?(this.pause(),!1):(this.play(),!0)}play(){this.isPlaying||(this.videoElement.play(),this.isPlaying=!0,this.renderWhilstPlaying())}async pause(){await this.videoElement.pause(),this.isPlaying=!1}async scroll(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1;await this.pause();const t=this.videoElement,i=this.renderFrame,n=t.currentTime+e*this.scrollSpeed/this.fps;t.currentTime=n;const r=e=>{i(),t.removeEventListener("seeked",r)};t.addEventListener("seeked",r)}async start(){const e=this.videoElement,t=this.renderFrame;if(e.currentTime=0,e.paused){const i=n=>{t(),e.removeEventListener("seeked",i)};e.addEventListener("seeked",i)}}async end(){const e=this.videoElement,t=this.renderFrame;if(e.currentTime=e.duration,e.paused){const i=n=>{t(),e.removeEventListener("seeked",i)};e.addEventListener("seeked",i)}}async setTime(e){const t=this.videoElement,i=this.renderFrame;if(t.currentTime=e,t.paused){const e=n=>{i(),t.removeEventListener("seeked",e)};t.addEventListener("seeked",e)}}async setFrameNumber(e){this.setTime((e-1)/this.fps)}setFrameRange(e){e?2===e.length&&e[0]!==e[1]&&(this.frameRange=[e[0],e[1]]):this.frameRange=[1,this.numberOfFrames]}getFrameRange(){return this.frameRange}setProperties(e){void 0!==e.loop&&(this.videoElement.loop=e.loop),void 0!==e.muted&&(this.videoElement.muted=e.muted),void 0!==e.playbackRate&&this.setPlaybackRate(e.playbackRate),void 0!==e.scrollSpeed&&this.setScrollSpeed(e.scrollSpeed),e.voiRange&&this.setVOI(e.voiRange)}setPlaybackRate(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1;this.playbackRate=e,e<.0625?this.pause():this.videoElement&&(this.videoElement.playbackRate=e,this.play())}setScrollSpeed(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:B.FRAME;this.scrollSpeed=t===B.SECOND?e*this.fps:e}resetProperties(){this.setProperties({loop:!1,muted:!0})}getScalarData(){const e=document.createElement("canvas");e.width=this.videoWidth,e.height=this.videoHeight;const t=e.getContext("2d");t.drawImage(this.videoElement,0,0);const i=t.getImageData(0,0,this.videoWidth,this.videoHeight),{data:n}=i;return n.getRange=()=>[0,255],n}getImageData(){const{metadata:e}=this,t=e.spacing;return{dimensions:e.dimensions,spacing:t,origin:e.origin,direction:e.direction,metadata:{Modality:this.modality},getScalarData:()=>this.getScalarData(),imageData:{getDirection:()=>e.direction,getDimensions:()=>e.dimensions,getRange:()=>[0,255],getScalarData:()=>this.getScalarData(),getSpacing:()=>e.spacing,worldToIndex:e=>{const t=this.worldToCanvas(e),i=this.canvasToIndex(t);return[i[0],i[1],0]},indexToWorld:e=>{const t=this.indexToCanvas([e[0],e[1]]);return this.canvasToWorld(t)}},hasPixelSpacing:this.hasPixelSpacing,calibration:this.calibration,preScale:{scaled:!1}}}hasImageURI(e){const t=e.match(Ca.frameRangeExtractor),i=t?e.substring(0,t.index):e;return-1!==this.imageId.indexOf(i)}setVOI(e){this.voiRange=e,this.setColorTransform()}setWindowLevel(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:256,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:128;const i=t-e/2,n=t+e/2-1;this.setVOI({lower:i,upper:n}),this.setColorTransform()}setAverageWhite(e){this.averageWhite=e,this.setColorTransform()}setColorTransform(){if(!this.voiRange&&!this.averageWhite)return void(this.feFilter=null);const e=this.averageWhite||[255,255,255],t=Math.max(...e),i=e.map((e=>t/e)),{lower:n=0,upper:r=255}=this.voiRange||{},a=(r-n+1)/255,o=n/255;this.feFilter='url(\'data:image/svg+xml, <svg xmlns="http://www.w3.org/2000/svg"> <filter id="colour" color-interpolation-filters="linearRGB"> <feColorMatrix type="matrix" values=" '.concat(i[0]*a," 0 0 0 ").concat(o," 0 ").concat(i[1]*a," 0 0 ").concat(o," 0 0 ").concat(i[2]*a," 0 ").concat(o," 0 0 0 1 0\" /> </filter> </svg>#colour')"),this.canvas.style.filter=this.feFilter}setCamera(e){const{parallelScale:t,focalPoint:i}=e;if(void 0!==e.parallelScale&&(this.videoCamera.parallelScale=this.element.clientHeight/2/t),void 0!==i){const e=this.worldToCanvas(i),t=[this.element.clientWidth/2,this.element.clientHeight/2],n=[(e[0]-t[0])/this.videoCamera.parallelScale,(e[1]-t[1])/this.videoCamera.parallelScale];this.videoCamera.panWorld=[this.videoCamera.panWorld[0]-n[0],this.videoCamera.panWorld[1]-n[1]]}this.canvasContext.fillRect(0,0,this.canvas.width,this.canvas.height),!1===this.isPlaying&&this.renderFrame()}getCurrentImageId(){return this.imageId.replace("/frames/1",this.isPlaying?"/frames/1-".concat(this.numberOfFrames):"/frames/".concat(this.getFrameNumber()))}getFrameNumber(){return 1+Math.round(this.videoElement.currentTime*this.fps)}getCamera(){const{parallelScale:e}=this.videoCamera,t=[this.element.clientWidth/2,this.element.clientHeight/2];return{parallelProjection:!0,focalPoint:this.canvasToWorld(t),position:[0,0,0],viewUp:[0,-1,0],parallelScale:this.element.clientHeight/2/e,viewPlaneNormal:[0,0,1]}}getPan(){const e=this.videoCamera.panWorld;return[e[0],e[1]]}refreshRenderValues(){let e=this.canvas.width/this.videoWidth;this.videoHeight*e>this.canvas.height&&(e*=this.canvas.height/(this.videoHeight*e));const t=Math.floor(this.videoWidth*e),i=Math.floor(this.videoHeight*e),n=(this.canvas.width/2-t/2)/e,r=(this.canvas.height/2-i/2)/e;this.videoCamera.panWorld=[n,r],this.videoCamera.parallelScale=e}getWorldToCanvasRatio(){return this.videoCamera.parallelScale}getCanvasToWorldRatio(){return 1/this.videoCamera.parallelScale}getTransform(){const e=this.videoCamera.panWorld,t=this.getWorldToCanvasRatio(),i=this.getCanvasToWorldRatio(),n=[this.canvas.width/2,this.canvas.height/2],r=[n[0]*i,n[1]*i],a=new _r;return a.translate(n[0],n[1]),a.scale(t,t),a.translate(e[0],e[1]),a.translate(-r[0],-r[1]),a}}ce(Ca,"frameRangeExtractor",/(\/frames\/|[&?]frameNumber=)([^/&?]*)/i);const Ea=Ca,ya={[w.ORTHOGRAPHIC]:Cr,[w.PERSPECTIVE]:Cr,[w.STACK]:wa,[w.VOLUME_3D]:Ia,[w.VIDEO]:Ea};function Ra(e){return ya[e].useCustomRenderingPipeline}const Pa=class{constructor(e){if(ce(this,"id",void 0),ce(this,"hasBeenDestroyed",void 0),ce(this,"offscreenMultiRenderWindow",void 0),ce(this,"offScreenCanvasContainer",void 0),ce(this,"_viewports",void 0),ce(this,"_needsRender",new Set),ce(this,"_animationFrameSet",!1),ce(this,"_animationFrameHandle",null),ce(this,"useCPURendering",void 0),ce(this,"renderFrameOfReference",(e=>{const t=this._getViewportsAsArray().map((t=>{if(t.getFrameOfReferenceUID()===e)return t.id}));return this.renderViewports(t)})),ce(this,"_renderFlaggedViewports",(()=>{this._throwIfDestroyed(),this.useCPURendering||this.performVtkDrawCall();const e=this._getViewportsAsArray(),t=[];for(let i=0;i<e.length;i++){const n=e[i];if(this._needsRender.has(n.id)){const e=this.renderViewportUsingCustomOrVtkPipeline(n);if(t.push(e),n.setRendered(),this._needsRender.delete(n.id),0===this._needsRender.size)break}}this._animationFrameSet=!1,this._animationFrameHandle=null,t.forEach((e=>{null!=e&&e.element&&Rt(e.element,m.IMAGE_RENDERED,e)}))})),this.id=e||Ye(),this.useCPURendering=lt(),Ie.set(this),!ut())throw new Error("@cornerstonejs/core is not initialized, run init() first");this.useCPURendering||(this.offscreenMultiRenderWindow=vn.newInstance(),this.offScreenCanvasContainer=document.createElement("div"),this.offscreenMultiRenderWindow.setContainer(this.offScreenCanvasContainer)),this._viewports=new Map,this.hasBeenDestroyed=!1}enableElement(e){const t=this._normalizeViewportInputEntry(e);this._throwIfDestroyed();const{element:i,viewportId:n}=t;if(!i)throw new Error("No element provided");this.getViewport(n)&&(console.log("Viewport already exists, disabling it first"),this.disableElement(n),console.log("Viewport ".concat(n," disabled")));const{type:r}=t,a=Ra(r);this.useCPURendering||a?this.addCustomViewport(t):this.enableVTKjsDrivenViewport(t);const o=pi(i),{background:s}=t.defaultOptions;this.fillCanvasWithBackgroundColor(o,s)}disableElement(e){this._throwIfDestroyed();const t=this.getViewport(e);t?(this._resetViewport(t),Ra(t.type)||this.useCPURendering||this.offscreenMultiRenderWindow.removeRenderer(e),this._removeViewport(e),t.isDisabled=!0,this._needsRender.delete(e),this.getViewports().length||this._clearAnimationFrame(),this.resize(!0,!0)):console.warn("viewport ".concat(e," does not exist"))}setViewports(e){const t=this._normalizeViewportInputEntries(e);this._throwIfDestroyed(),this._reset();const i=[],n=[];t.forEach((e=>{this.useCPURendering||Ra(e.type)?n.push(e):i.push(e)})),this.setVtkjsDrivenViewports(i),this.setCustomViewports(n)}resize(){let e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0],t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];this._throwIfDestroyed();const i=this._getViewportsAsArray(),n=[],r=[];i.forEach((e=>{Ra(e.type)?r.push(e):n.push(e)})),n.length&&this._resizeVTKViewports(n,t,e),r.length&&this._resizeUsingCustomResizeHandler(r,t,e)}getViewport(e){return this._viewports.get(e)}getViewports(){return this._throwIfDestroyed(),this._getViewportsAsArray()}getStackViewports(){return this._throwIfDestroyed(),this.getViewports().filter((e=>e instanceof wa))}getVideoViewports(){return this._throwIfDestroyed(),this.getViewports().filter((e=>e instanceof Ea))}getVolumeViewports(){return this._throwIfDestroyed(),this.getViewports().filter((e=>e instanceof Ir))}render(){const e=this.getViewports().map((e=>e.id));this._setViewportsToBeRenderedNextFrame(e)}renderViewports(e){this._setViewportsToBeRenderedNextFrame(e)}renderViewport(e){this._setViewportsToBeRenderedNextFrame([e])}destroy(){this.hasBeenDestroyed||(this.useCPURendering||(this._getViewportsAsArray().forEach((e=>{this.offscreenMultiRenderWindow.removeRenderer(e.id)})),this.offscreenMultiRenderWindow.delete(),delete this.offscreenMultiRenderWindow),this._reset(),Ie.delete(this.id),this.hasBeenDestroyed=!0)}fillCanvasWithBackgroundColor(e,t){const i=e.getContext("2d");let n;if(t){const e=t.map((e=>Math.floor(255*e)));n="rgb(".concat(e[0],", ").concat(e[1],", ").concat(e[2],")")}else n="black";i.fillStyle=n,i.fillRect(0,0,e.width,e.height)}_normalizeViewportInputEntry(e){const{type:t,defaultOptions:i}=e;let n=i;return n&&0!==Object.keys(n).length||(n={background:[0,0,0],orientation:null,displayArea:null},t===w.ORTHOGRAPHIC&&(n={...n,orientation:b.AXIAL})),{...e,defaultOptions:n}}_normalizeViewportInputEntries(e){const t=[];return e.forEach((e=>{t.push(this._normalizeViewportInputEntry(e))})),t}_resizeUsingCustomResizeHandler(e){let t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],i=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];e.forEach((e=>{"function"==typeof e.resize&&e.resize()})),e.forEach((e=>{const i=e.getCamera();e.resetCamera(),t&&e.setCamera(i)})),!0===i&&this.render()}_resizeVTKViewports(e){let t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],i=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];const n=e.map((e=>e.canvas));if(n.length){const{offScreenCanvasWidth:t,offScreenCanvasHeight:i}=this._resizeOffScreenCanvas(n);this._resize(e,t,i)}e.forEach((e=>{const i=pi(e.element),n=i.getBoundingClientRect(),r=window.devicePixelRatio||1;i.width=n.width*r,i.height=n.height*r;const a=e.getCamera();e.resetCamera(),t&&e.setCamera(a)})),!0===i&&this.render()}enableVTKjsDrivenViewport(e){const t=this._getViewportsAsArray().filter((e=>!1===Ra(e.type))),i=t.map((e=>e.canvas)),n=pi(e.element);i.push(n);const r=window.devicePixelRatio||1,a=n.getBoundingClientRect();n.width=a.width*r,n.height=a.height*r;const{offScreenCanvasWidth:o,offScreenCanvasHeight:s}=this._resizeOffScreenCanvas(i),l=this._resize(t,o,s),c={...e,canvas:n};this.addVtkjsDrivenViewport(c,{offScreenCanvasWidth:o,offScreenCanvasHeight:s,xOffset:l})}_removeViewport(e){this.getViewport(e)?this._viewports.delete(e):console.warn("viewport ".concat(e," does not exist"))}addVtkjsDrivenViewport(e,t){const{element:i,canvas:n,viewportId:r,type:a,defaultOptions:o}=e;i.tabIndex=-1;const{offScreenCanvasWidth:s,offScreenCanvasHeight:l,xOffset:c}=t,{sxStartDisplayCoords:d,syStartDisplayCoords:h,sxEndDisplayCoords:u,syEndDisplayCoords:g,sx:p,sy:v,sWidth:f,sHeight:I}=this._getViewportCoordsOnOffScreenCanvas(e,s,l,c);this.offscreenMultiRenderWindow.addRenderer({viewport:[d,h,u,g],id:r,background:o.background?o.background:[0,0,0]});const C={id:r,element:i,renderingEngineId:this.id,type:a,canvas:n,sx:p,sy:v,sWidth:f,sHeight:I,defaultOptions:o||{}};let E;if(a===w.STACK)E=new wa(C);else if(a===w.ORTHOGRAPHIC||a===w.PERSPECTIVE)E=new Cr(C);else{if(a!==w.VOLUME_3D)throw new Error("Viewport Type ".concat(a," is not supported"));E=new Ia(C)}this._viewports.set(r,E);const y={element:i,viewportId:r,renderingEngineId:this.id};E.suppressEvents||Rt(yt,m.ELEMENT_ENABLED,y)}addCustomViewport(e){const{element:t,viewportId:i,type:n,defaultOptions:r}=e;t.tabIndex=-1;const a=pi(t),{clientWidth:o,clientHeight:s}=a;a.width===o&&a.height===s||(a.width=o,a.height=s);const l={id:i,renderingEngineId:this.id,element:t,type:n,canvas:a,sx:0,sy:0,sWidth:o,sHeight:s,defaultOptions:r||{}},c=new(0,ya[n])(l);this._viewports.set(i,c);const d={element:t,viewportId:i,renderingEngineId:this.id};Rt(yt,m.ELEMENT_ENABLED,d)}setCustomViewports(e){e.forEach((e=>this.addCustomViewport(e)))}setVtkjsDrivenViewports(e){if(e.length){const t=e.map((e=>pi(e.element)));t.forEach((e=>{const t=window.devicePixelRatio||1,i=e.getBoundingClientRect();e.width=i.width*t,e.height=i.height*t}));const{offScreenCanvasWidth:i,offScreenCanvasHeight:n}=this._resizeOffScreenCanvas(t);let r=0;for(let a=0;a<e.length;a++){const o=e[a],s=t[a],l={...o,canvas:s};this.addVtkjsDrivenViewport(l,{offScreenCanvasWidth:i,offScreenCanvasHeight:n,xOffset:r}),r+=s.width}}}_resizeOffScreenCanvas(e){const{offScreenCanvasContainer:t,offscreenMultiRenderWindow:i}=this,n=window.devicePixelRatio||1,r=Math.max(...e.map((e=>e.clientHeight*n)));let a=0;return e.forEach((e=>{a+=e.clientWidth*n})),t.width=a,t.height=r,i.resize(),{offScreenCanvasWidth:a,offScreenCanvasHeight:r}}_resize(e,t,i){let n=0;const r=window.devicePixelRatio||1;for(let a=0;a<e.length;a++){const o=e[a],{sxStartDisplayCoords:s,syStartDisplayCoords:l,sxEndDisplayCoords:c,syEndDisplayCoords:d,sx:h,sy:u,sWidth:g,sHeight:m}=this._getViewportCoordsOnOffScreenCanvas(o,t,i,n);n+=o.canvas.clientWidth*r,o.sx=h,o.sy=u,o.sWidth=g,o.sHeight=m,this.offscreenMultiRenderWindow.getRenderer(o.id).setViewport([s,l,c,d])}return n}_getViewportCoordsOnOffScreenCanvas(e,t,i,n){const{canvas:r}=e,{clientWidth:a,clientHeight:o}=r,s=window.devicePixelRatio||1,l=o*s,c=a*s,d=n/t,h=0+(i-l)/i;return{sxStartDisplayCoords:d,syStartDisplayCoords:h,sxEndDisplayCoords:d+c/t,syEndDisplayCoords:h+l/i,sx:n,sy:0,sWidth:c,sHeight:l}}_getViewportsAsArray(){return Array.from(this._viewports.values())}_setViewportsToBeRenderedNextFrame(e){e.forEach((e=>{this._needsRender.add(e)})),this._render()}_render(){this._needsRender.size>0&&!1===this._animationFrameSet&&(this._animationFrameHandle=window.requestAnimationFrame(this._renderFlaggedViewports),this._animationFrameSet=!0)}performVtkDrawCall(){const{offscreenMultiRenderWindow:e}=this,t=e.getRenderWindow(),i=e.getRenderers();if(i.length){for(let e=0;e<i.length;e++){const{renderer:t,id:n}=i[e];this._needsRender.has(n)?t.setDraw(!0):t.setDraw(!1)}t.render();for(let e=0;e<i.length;e++)i[e].renderer.setDraw(!1)}}renderViewportUsingCustomOrVtkPipeline(e){let t;if(!(e.sWidth<2||e.sHeight<2)){if(!0===Ra(e.type))t=e.customRenderViewportToCanvas();else{if(this.useCPURendering)throw new Error("GPU not available, and using a viewport with no custom render pipeline.");const{offscreenMultiRenderWindow:i}=this,n=i.getOpenGLRenderWindow().get3DContext().canvas;t=this._renderViewportFromVtkCanvasToOnscreenCanvas(e,n)}return t}console.warn("Viewport is too small",e.sWidth,e.sHeight)}_renderViewportFromVtkCanvasToOnscreenCanvas(e,t){const{element:i,canvas:n,sx:r,sy:a,sWidth:o,sHeight:s,id:l,renderingEngineId:c,suppressEvents:d}=e,{width:h,height:u}=n;return n.getContext("2d").drawImage(t,r,a,o,s,0,0,h,u),{element:i,suppressEvents:d,viewportId:l,renderingEngineId:c,viewportStatus:e.viewportStatus}}_resetViewport(e){const t=this.id,{element:i,canvas:n,id:r}=e,a={element:i,viewportId:r,renderingEngineId:t};Rt(yt,m.ELEMENT_DISABLED,a),i.removeAttribute("data-viewport-uid"),i.removeAttribute("data-rendering-engine-uid"),n.getContext("2d").clearRect(0,0,n.width,n.height)}_clearAnimationFrame(){window.cancelAnimationFrame(this._animationFrameHandle),this._needsRender.clear(),this._animationFrameSet=!1,this._animationFrameHandle=null}_reset(){this._getViewportsAsArray().forEach((e=>{this._resetViewport(e)})),this._clearAnimationFrame(),this._viewports=new Map}_throwIfDestroyed(){if(this.hasBeenDestroyed)throw new Error("this.destroy() has been manually called to free up memory, can not longer use this instance. Instead make a new one.")}_downloadOffScreenCanvas(){!function(e){const t=document.createElement("a");t.download="viewport.png",t.href=e,document.body.appendChild(t),t.click(),document.body.removeChild(t)}(this._debugRender())}_debugRender(){const{offscreenMultiRenderWindow:e}=this,t=e.getRenderWindow(),i=e.getRenderers();for(let e=0;e<i.length;e++)i[e].renderer.setDraw(!0);t.render();const n=e.getOpenGLRenderWindow().get3DContext().canvas,r=n.toDataURL();return this._getViewportsAsArray().forEach((e=>{const{sx:t,sy:i,sWidth:r,sHeight:a}=e,o=e.canvas,{width:s,height:l}=o;o.getContext("2d").drawImage(n,t,i,r,a,0,0,s,l)})),r}},Aa=new Xe("imageRetrievalPool");Aa.setMaxSimultaneousRequests(v.Interaction,200),Aa.setMaxSimultaneousRequests(v.Thumbnail,200),Aa.setMaxSimultaneousRequests(v.Prefetch,200),Aa.grabDelay=0;const Ta=Aa;function ba(e){if(!e)return;const{viewportUid:t,renderingEngineUid:i}=e.dataset;return Oa(t,i)}function Oa(e,t){if(!t||!e)return;const i=ye(t);if(!i||i.hasBeenDestroyed)return;const n=i.getViewport(e);if(!n)return;const r=n.getFrameOfReferenceUID();return{viewport:n,renderingEngine:i,viewportId:e,renderingEngineId:t,FrameOfReferenceUID:r}}function Sa(){const e=[];return Ee().forEach((t=>{t.getViewports().forEach((t=>{let{element:i}=t;e.push(ba(i))}))})),e}const Da=Symbol("DefaultSettings"),_a=Symbol("RuntimeSettings"),ka=Symbol("ObjectSettingsMap"),Ma=Symbol("Dictionary");class xa{constructor(e){const t=Object.create(e instanceof xa&&Ma in e?e[Ma]:null);Object.seal(Object.defineProperty(this,Ma,{value:t}))}set(e,t){return La(this[Ma],e,t,null)}get(e){return function(e,t){return e[t]}(this[Ma],e)}unset(e){return function(e,t){if(t.endsWith(".")){let i=0;const n=t,r=n.slice(0,-1),a=0===r.length;for(const t in e)Object.prototype.hasOwnProperty.call(e,t)&&(a||t.startsWith(n)||t===r)&&(delete e[t],++i);return i>0}return delete e[t]}(this[Ma],e+"")}forEach(e){Va(this[Ma],e)}extend(){return new xa(this)}import(e){Ua(e)&&Object.keys(e).forEach((t=>{La(this[Ma],t,e[t],null)}))}dump(){const e={};return Va(this[Ma],((t,i)=>{void 0!==i&&Na(e,t,i)})),e}static assert(e){return e instanceof xa?e:xa.getRuntimeSettings()}static getDefaultSettings(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,t=xa[Da];if(t instanceof xa||(t=new xa,xa[Da]=t),e){const i={};return t.forEach((n=>{if(n.startsWith(e)){const r=n.split("".concat(e,"."))[1];i[r]=t.get(n)}})),i}return t}static getRuntimeSettings(){let e=xa[_a];return e instanceof xa||(e=new xa(xa.getDefaultSettings()),xa[_a]=e),e}static getObjectSettings(e,t){let i=null;if(e instanceof xa)i=e;else if("object"==typeof e&&null!==e){let n=xa[ka];n instanceof WeakMap||(n=new WeakMap,xa[ka]=n),i=n.get(e),i instanceof xa||(i=new xa(xa.assert(xa.getObjectSettings(t))),n.set(e,i))}return i}static extendRuntimeSettings(){return xa.getRuntimeSettings().extend()}}function Va(e,t){for(const i in e)t(i,e[i])}function La(e,t,i,n){return!!function(e){let t,i,n;if("string"!=typeof e||(t=e.length-1)<0)return!1;for(n=-1;(i=e.indexOf(".",n+1))>=0;){if(i-n<2||i===t)return!1;n=i}return!0}(t)&&(Ua(i)?function(e,t,i,n){let r;if(n.has(i))return La(e,t,null,n);n.add(i),r=0;for(const a in i)Object.prototype.hasOwnProperty.call(i,a)&&(La(e,0===a.length?t:"".concat(t,".").concat(a),i[a],n)||++r);return n.delete(i),0===r}(e,t,i,n instanceof WeakSet?n:new WeakSet):(e[t]=i,!0))}function Ua(e){if("object"==typeof e&&null!==e){const t=Object.getPrototypeOf(e);if(t===Object.prototype||null===t)return!0}return!1}function Na(e,t,i){const n=t.indexOf(".");if(n>=0){const r=t.slice(0,n);let a=e[r];if("object"!=typeof a||null===a){const t=a;a={},void 0!==t&&(a[""]=t),e[r]=a}Na(a,t.slice(n+1,t.length),i)}else e[t]=i}xa.getDefaultSettings().set("useCursors",!0),Z(914);const Fa=class{constructor(e){ce(this,"id",void 0),ce(this,"sizeInBytes",void 0),ce(this,"points",void 0),ce(this,"color",void 0),ce(this,"type",void 0),ce(this,"segmentIndex",void 0);const{points:t,type:i}=e.data;this.id=e.id,this.points=t,this.type=i,this.color=e.color,this.segmentIndex=e.segmentIndex,this.sizeInBytes=this._getSizeInBytes()}_getSizeInBytes(){let e=0;return e+=3*this.points.length,e}getPoints(){return this.points}getFlatPointsArray(){return this.points.map((e=>[...e])).flat()}getColor(){return this.color}getType(){return this.type}};class ja{constructor(e){var t;ce(this,"id",void 0),ce(this,"sizeInBytes",void 0),ce(this,"frameOfReferenceUID",void 0),ce(this,"color",[200,0,0]),ce(this,"segmentIndex",void 0),ce(this,"polyData",void 0),ce(this,"centroid",void 0),ce(this,"contours",void 0),this.id=e.id,this.contours=[],this.color=null!==(t=e.color)&&void 0!==t?t:this.color,this.frameOfReferenceUID=e.frameOfReferenceUID,this.segmentIndex=e.segmentIndex,this._createEachContour(e.data),this.sizeInBytes=this._getSizeInBytes()}_createEachContour(e){e.forEach((e=>{const{points:t,type:i,color:n}=e,r=new Fa({id:"".concat(this.id,"-segment-").concat(this.segmentIndex),data:{points:t,type:i,segmentIndex:this.segmentIndex,color:null!=n?n:this.color},segmentIndex:this.segmentIndex,color:null!=n?n:this.color});this.contours.push(r)})),this._updateContourSetCentroid()}_updateContourSetCentroid(){const e=this.getTotalNumberOfPoints(),t=this.getFlatPointsArray(),i=t.reduce(((e,t)=>[e[0]+t[0],e[1]+t[1],e[2]+t[2]]),[0,0,0]),n=[i[0]/e,i[1]/e,i[2]/e],r=t.reduce(((e,t)=>this._getDistance(n,t)<this._getDistance(n,e)?t:e),t[0]);this.centroid=r}_getSizeInBytes(){return this.contours.reduce(((e,t)=>e+t.sizeInBytes),0)}getCentroid(){return this.centroid}getSegmentIndex(){return this.segmentIndex}getColor(){return this.color}getContours(){return this.contours}getSizeInBytes(){return this.sizeInBytes}getFlatPointsArray(){return this.contours.map((e=>e.getPoints())).flat()}getNumberOfContours(){return this.contours.length}getTotalNumberOfPoints(){return this.contours.reduce(((e,t)=>e+t.getPoints().length),0)}getNumberOfPointsArray(){return this.contours.reduce(((e,t,i)=>(e[i]=this.getNumberOfPointsInAContour(i),e)),[])}getPointsInContour(e){return this.contours[e].getPoints()}getNumberOfPointsInAContour(e){return this.getPointsInContour(e).length}_getDistance(e,t){return Math.sqrt((e[0]-t[0])**2+(e[1]-t[1])**2+(e[2]-t[2])**2)}}class Ga{constructor(e){var t;ce(this,"id",void 0),ce(this,"sizeInBytes",void 0),ce(this,"frameOfReferenceUID",void 0),ce(this,"color",[200,0,0]),ce(this,"points",void 0),ce(this,"polys",void 0),this.id=e.id,this.points=e.data.points,this.polys=e.data.polys,this.color=null!==(t=e.color)&&void 0!==t?t:this.color,this.frameOfReferenceUID=e.frameOfReferenceUID,this.sizeInBytes=this._getSizeInBytes()}_getSizeInBytes(){return 4*this.points.length+4*this.polys.length}getColor(){return this.color}getPoints(){return this.points}getPolys(){return this.polys}getSizeInBytes(){return this.sizeInBytes}}async function Wa(e,t){let i=Cn.getGeometry(e);if(i)return i;if(t.type===_.CONTOUR)i=function(e,t){!function(e){if(!e||0===e.data.length)throw new Error("Invalid contour set data, see publicContourSetData type for more info");if(!e.id)throw new Error("Invalid contour set data, each contour set must have an id");if(!e.data||!Array.isArray(e.data))throw new Error("Invalid contour set data, each contour set must have an array of contours");e.data.forEach((e=>{if(!e.points||!Array.isArray(e.points))throw new Error("Invalid contour set data, each contour must have an array of points");e.points.forEach((e=>{if(!e||!Array.isArray(e)||3!==e.length)throw new Error("Invalid contour set data, each point must be an array of length 3")}))}))}(t);const i=new ja({id:t.id,data:t.data,color:t.color,frameOfReferenceUID:t.frameOfReferenceUID,segmentIndex:1});return{id:e,type:_.CONTOUR,data:i,sizeInBytes:i.getSizeInBytes()}}(e,t.geometryData);else{if(t.type!==_.SURFACE)throw new Error("Unknown geometry type, Only CONTOUR is supported");i=function(e,t){!function(e){const{data:t}=e;if(!t.points||!t.polys)throw new Error("Invalid surface data")}(t);const i=new Ga({id:t.id,color:t.color,frameOfReferenceUID:t.frameOfReferenceUID,data:{points:t.data.points,polys:t.data.polys}});return{id:e,type:_.SURFACE,data:i,sizeInBytes:i.getSizeInBytes()}}(e,t.geometryData)}const n={promise:Promise.resolve(i)};return await Cn.putGeometryLoadObject(e,n),i}var Ba=function(e){return e[e.None=0]="None",e[e.Capture=1]="Capture",e[e.Bubble=2]="Bubble",e}(Ba||{});class qa{constructor(e){ce(this,"_target",void 0),ce(this,"_eventListeners",new Map),ce(this,"_children",new Map),this._target=e}get isEmpty(){return 0===this._eventListeners.size&&0===this._children.size}addEventListener(e,t,i){const n=e.indexOf(".");if(-1!==n){const r=e.substring(0,n);let a=this._children.get(r);a||(a=new qa(this._target),this._children.set(r,a)),e=e.substring(n+1),a.addEventListener(e,t,i)}else this._addEventListener(e,t,i)}removeEventListener(e,t,i){const n=e.indexOf(".");if(-1!==n){const r=e.substring(0,n),a=this._children.get(r);if(!a)return;e=e.substring(n+1),a.removeEventListener(e,t,i),a.isEmpty&&this._children.delete(r)}else this._removeEventListener(e,t,i)}reset(){Array.from(this._children.entries()).forEach((e=>{let[t,i]=e;if(i.reset(),!i.isEmpty)throw new Error("Child is not empty and cannot be removed");this._children.delete(t)})),this._unregisterAllEvents()}_addEventListener(e,t,i){var n,r;let a=this._eventListeners.get(e);a||(a=new Map,this._eventListeners.set(e,a));const o=null!==(n=null==i?void 0:i.capture)&&void 0!==n&&n?Ba.Capture:Ba.Bubble,s=null!==(r=a.get(t))&&void 0!==r?r:Ba.None;s&o?console.warn("A listener is already registered for this phase"):(a.set(t,s|o),this._target.addEventListener(e,t,i))}_removeEventListener(e,t,i){var n;const r=null!==(n=null==i?void 0:i.capture)&&void 0!==n&&n?Ba.Capture:Ba.Bubble,a=this._eventListeners.get(e);a&&((t?[t]:Array.from(a.keys())).forEach((t=>{var n;const o=null!==(n=a.get(t))&&void 0!==n?n:Ba.None;if(!(o&r))return;this._target.removeEventListener(e,t,i);const s=o^r;s===Ba.None?a.delete(t):a.set(t,s)})),a.size||this._eventListeners.delete(e))}_unregisterAllListeners(e,t){Array.from(t.entries()).forEach((t=>{let[i,n]=t;for(let t=Ba.Capture;n;t<<=1){if(!(n&t))continue;const r=t===Ba.Capture;this.removeEventListener(e,i,{capture:r}),n^=t}}))}_unregisterAllEvents(){Array.from(this._eventListeners.entries()).forEach((e=>{let[t,i]=e;return this._unregisterAllListeners(t,i)}))}}class za{constructor(){ce(this,"_targetsEventListeners",new Map)}addEventListener(e,t,i,n){let r=this._targetsEventListeners.get(e);r||(r=new qa(e),this._targetsEventListeners.set(e,r)),r.addEventListener(t,i,n)}removeEventListener(e,t,i,n){const r=this._targetsEventListeners.get(e);r&&(r.removeEventListener(t,i,n),r.isEmpty&&this._targetsEventListeners.delete(e))}reset(){Array.from(this._targetsEventListeners.entries()).forEach((e=>{let[t,i]=e;i.reset(),this._targetsEventListeners.delete(t)}))}}function Ha(e,t){const i=e.getSize();for(let n=0;n<i;n++){const i=[];e.getNodeValue(n,i),i[1]=i[1]*t,i[2]=i[2]*t,i[3]=i[3]*t,e.setNodeValue(n,i)}}const Ka=Symbol("LastRuntimeId"),Ya={},Xa=4294967295,Za="-";function Qa(e,t,i){return function(e,t,i){let n=e[t];n instanceof Array||(n=[0],Object.defineProperty(e,t,{value:n}));for(let e=!0,t=0;e&&t<n.length;++t){let r=0|n[t];r<i?(e=!1,r+=1):(r=0,t+1===n.length&&n.push(0)),n[t]=r}return n}(null!==e&&"object"==typeof e?e:Ya,Ka,("number"==typeof i&&i>0?i:Xa)>>>0).join("string"==typeof t?t:Za)}const Ja={},$a={add:(e,t)=>{const i=de(e);Ja[i]=t},get:(e,t)=>{if("calibratedPixelSpacing"===e){const e=de(t);return Ja[e]}}};function eo(e,t){let i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1e-5;return Math.abs(e[0]+t[0])<i&&Math.abs(e[1]+t[1])<i&&Math.abs(e[2]+t[2])<i}const to=function(e){if(!ht())throw new Error("Your page is NOT cross-origin isolated, see https://developer.mozilla.org/en-US/docs/Web/API/crossOriginIsolated");if(void 0===window.SharedArrayBuffer)throw new Error("SharedArrayBuffer is NOT supported in your browser see https://developer.chrome.com/blog/enabling-shared-array-buffer/");const t=new SharedArrayBuffer(e);return new Uint8Array(t)},io=function(e){if(!ht())throw new Error("Your page is NOT cross-origin isolated, see https://developer.mozilla.org/en-US/docs/Web/API/crossOriginIsolated");if(void 0===window.SharedArrayBuffer)throw new Error("SharedArrayBuffer is NOT supported in your browser see https://developer.chrome.com/blog/enabling-shared-array-buffer/");const t=new SharedArrayBuffer(4*e);return new Float32Array(t)},no=function(e){if(!window.crossOriginIsolated)throw new Error("Your page is NOT cross-origin isolated, see https://developer.mozilla.org/en-US/docs/Web/API/crossOriginIsolated");if(void 0===window.SharedArrayBuffer)throw new Error("SharedArrayBuffer is NOT supported in your browser see https://developer.chrome.com/blog/enabling-shared-array-buffer/");const t=new SharedArrayBuffer(2*e);return new Uint16Array(t)},ro=function(e){if(!window.crossOriginIsolated)throw new Error("Your page is NOT cross-origin isolated, see https://developer.mozilla.org/en-US/docs/Web/API/crossOriginIsolated");if(void 0===window.SharedArrayBuffer)throw new Error("SharedArrayBuffer is NOT supported in your browser see https://developer.chrome.com/blog/enabling-shared-array-buffer/");const t=new SharedArrayBuffer(2*e);return new Int16Array(t)};function ao(e,t){if(e instanceof wa)return e.modality;if(e instanceof Cr){var i,n,r;if(!(t=null!==(i=t)&&void 0!==i?i:null===(n=e.getDefaultActor())||void 0===n?void 0:n.uid))return;return null===(r=Cn.getVolume(t))||void 0===r?void 0:r.metadata.Modality}throw new Error("Invalid viewport type")}function oo(e,t){return!(e[0]<0||e[0]>=t[0]||e[1]<0||e[1]>=t[1]||e[2]<0||e[2]>=t[2])}const so=function(e,t){let i;i=t?[Ce(t)]:Ee();const n=[];return i.forEach((t=>{const i=e.getActors(),r=t.getVolumeViewports();for(const e of r){const t=e.getActors();t.length===i.length&&(i.every((e=>{let{uid:i}=e;return t.find((e=>i===e.uid))}))&&n.push(e))}})),n},lo=function(e,t){let i;i=t?[Ce(t)]:Ee();const n=[];return i.forEach((t=>{const i=t.getVolumeViewports().filter((t=>t.hasVolumeId(e)));n.push(...i)})),n},co=e=>{var t,i;return(null===(t=e.preScale)||void 0===t?void 0:t.scaled)&&(null===(i=e.preScale.scalingParameters)||void 0===i?void 0:i.suvbw)};function ho(e,t){let i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:void 0,n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"_thumbnails";if(!(e&&e instanceof HTMLCanvasElement))throw new Error("canvas element is required");const r=t.imageId,a="renderGPUViewport-".concat(r),o=t.imageId,s=document.createElement("div");s.style.width="".concat(e.width,"px"),s.style.height="".concat(e.height,"px"),s.style.visibility="hidden",s.style.position="absolute";const l=window.devicePixelRatio||1,c=e.width,d=e.height;e.width=c*l,e.height=d*l,e.style.width="".concat(c,"px"),e.style.height="".concat(d,"px"),document.body.appendChild(s);const h=a.split(":").join("-");s.setAttribute("viewport-id-for-remove",h);const u=Ce(n)||new Pa(n);let g=u.getViewport(a);if(!g){const e={viewportId:a,type:w.STACK,element:s,defaultOptions:{suppressEvents:!0}};u.enableElement(e),g=u.getViewport(a)}return new Promise((n=>{let r=!1;const l=t=>{if(r)return;const i=pi(s);e.getContext("2d").drawImage(i,0,0,i.width,i.height,0,0,e.width,e.height),r=!0,s.removeEventListener(m.IMAGE_RENDERED,l),setTimeout((()=>{u.disableElement(a),document.querySelectorAll('[viewport-id-for-remove="'.concat(h,'"]')).forEach((e=>{e.remove()}))}),0),n(o)};s.addEventListener(m.IMAGE_RENDERED,l),g.renderImageObject(t),g.resetCamera(),"PT"!==i||co(t)||g.setProperties({voiRange:{lower:t.minPixelValue,upper:t.maxPixelValue}}),g.render()}))}function uo(e,t,i,n){const r={canvas:e,viewport:oa(e,t,i),image:t,renderingTools:{}};return r.transform=kr(r),new Promise(((e,i)=>{Jr(r,!0),e(t.imageId)}))}function go(e){const{canvas:t,imageId:i,requestType:n=v.Thumbnail,priority:r=-5,renderingEngineId:a="_thumbnails",useCPURendering:o=!1}=e,s=o?uo:ho;return new Promise(((e,l)=>{function c(i,n){var r;const{modality:o}=oi("generalSeriesModule",n)||{};i.isPreScaled=i.isPreScaled||(null===(r=i.preScale)||void 0===r?void 0:r.scaled),s(t,i,o,a).then((()=>{e(n)}))}function d(e,t){console.error(e,t),l(e)}const{useNorm16Texture:h}=gt().rendering,u={targetBuffer:{type:h?void 0:"Float32Array"},preScale:{enabled:!0},useRGBA:!!o,requestType:n};Bt.addRequest(function(e,t,i){return Yt(e,i).then((t=>{c.call(this,t,e)}),(t=>{d.call(this,t,e)}))}.bind(null,i,null,u),n,{imageId:i},r)}))}const mo=function(e,t){const i=oi("imagePlaneModule",e);if(!i)throw new Error("No imagePlaneModule found for imageId: ".concat(e));const{columnCosines:n,rowCosines:r,imagePositionPatient:a}=i;let{columnPixelSpacing:o,rowPixelSpacing:s}=i;o||(o=1),s||(s=1);const l=In.vec3.create();In.vec3.scaleAndAdd(l,a,n,-o/2),In.vec3.scaleAndAdd(l,l,r,-s/2);const c=In.vec3.create();return In.vec3.sub(c,t,l),[In.vec3.dot(c,r)/s,In.vec3.dot(c,n)/o]};function po(e,t){const i=oi("imagePlaneModule",e);if(!i)throw new Error("No imagePlaneModule found for imageId: ".concat(e));const{columnCosines:n,rowCosines:r,imagePositionPatient:a}=i;let{columnPixelSpacing:o,rowPixelSpacing:s}=i;o||(o=1),s||(s=1);const l=In.vec3.create();return In.vec3.scaleAndAdd(l,a,r,s*(t[0]-.5)),In.vec3.scaleAndAdd(l,l,n,o*(t[1]-.5)),Array.from(l)}const vo=function(e,t){const i=e.getCamera(),{focalPoint:n,viewPlaneNormal:r}=i,{spacingInNormalDirection:a,actorUID:o}=Xn(e,i,t);if(!o)throw new Error("Could not find image volume with id ".concat(t," in the viewport"));const s=e.getActor(o);return s?{sliceRange:Hn(s.actor,r,n),spacingInNormalDirection:a,camera:i}:(console.warn("No actor found for with actorUID of",o),null)},fo=function(e,t){const{sliceRange:i,spacingInNormalDirection:n,camera:r}=vo(e,t),{min:a,max:o,current:s}=i,l=Math.round((o-a)/n),c=(s-a)/(o-a)*l;return{numScrollSteps:l,currentStepIndex:Math.round(c),sliceRangeInfo:{sliceRange:i,spacingInNormalDirection:n,camera:r}}};function wo(e,t,i,n,r,a){const{min:o,max:s,current:l}=i,c=In.vec3.create();In.vec3.sub(c,t,e);const d=Math.round((s-o)/r),h=(l-o)/(s-o)*d;let u=Math.round(h),g=[e[0]-n[0]*h*r,e[1]-n[1]*h*r,e[2]-n[2]*h*r];u+=a,u>d?u=d:u<0&&(u=0);const m=u*r;return g=[g[0]+n[0]*m,g[1]+n[1]*m,g[2]+n[2]*m],{newFocalPoint:g,newPosition:[g[0]+c[0],g[1]+c[1],g[2]+c[2]]}}function Io(e,t){let i;i=t?[ye(t)]:Ee();const n=[];return i.forEach((t=>{t.getViewports().forEach((t=>{t.hasImageURI(e)&&n.push(t)}))})),n}function Co(e,t){const i=function(e,t){var i;const n=t.getImageIds(),r=t.getCurrentImageIdIndex();if(0===n.length)return null;const a=t=>{const i=function(e){const t=oi("imagePlaneModule",e);if(!(t&&t.rowCosines instanceof Array&&3===t.rowCosines.length&&t.columnCosines instanceof Array&&3===t.columnCosines.length&&t.imagePositionPatient instanceof Array&&3===t.imagePositionPatient.length))return null;const{rowCosines:i,columnCosines:n,imagePositionPatient:r}=t,a=In.vec3.set(In.vec3.create(),...i),o=In.vec3.set(In.vec3.create(),...n);return{rowCosines:i,columnCosines:n,imagePositionPatient:r,planeNormal:In.vec3.cross(In.vec3.create(),a,o)}}(t);return i?rr(ir(i.planeNormal,i.imagePositionPatient),e):null},o={distance:null!==(i=a(n[r]))&&void 0!==i?i:1/0,index:r},s=n.slice(r+1);for(let e=0;e<s.length;e++){const t=a(s[e]);if(null!==t){if(!(t<=o.distance))break;o.distance=t,o.index=e+r+1}}const l=n.slice(0,r);for(let e=l.length-1;e>=0;e--){const t=a(l[e]);if(null!==t&&t!==o.distance){if(!(t<o.distance))break;o.distance=t,o.index=e}}return o.distance===1/0?null:o}(e,t);return i?i.index:null}const Eo={},yo={add:(e,t)=>{const[i,n]=e,r="".concat(i,"_").concat(n);Eo[r]||(Eo[r]={}),Eo[r]=t},get:(e,t)=>{if("spatialRegistrationModule"!==e)return;const[i,n]=t,r="".concat(i,"_").concat(n);if(Eo[r])return Eo[r];const a="".concat(n,"_").concat(i);return Eo[a]?In.mat4.invert(In.mat4.create(),Eo[a]):void 0}};ni(yo.get.bind(yo));const Ro=yo,Po=function(e,t){const i=e.getCurrentImageId(),n=t.getCurrentImageId(),r=oi("imagePlaneModule",i),a=oi("imagePlaneModule",n);if(!r||!a)return void console.log("Viewport spatial registration requires image plane module");const{imageOrientationPatient:o}=a;if(!r.imageOrientationPatient.every(((e,t)=>Math.abs(e-o[t])<.05)))return void console.log("Viewport spatial registration only supported for same orientation (hence translation only) for now",null==r?void 0:r.imageOrientationPatient,null==a?void 0:a.imageOrientationPatient);const s=r.imagePositionPatient,l=a.imagePositionPatient,c=In.vec3.subtract(In.vec3.create(),s,l),d=In.mat4.fromTranslation(In.mat4.create(),c);Ro.add([e.id,t.id],d)};function Ao(e){const{imageData:t,dimensions:i}=e.getImageData(),{canvas:n}=e,r=[n.width,0],a=[n.width,n.height],o=[0,n.height],s=e.canvasToWorld([0,0]),l=e.canvasToWorld(r),c=e.canvasToWorld(a),d=e.canvasToWorld(o),h=t.worldToIndex(s),u=t.worldToIndex(l),g=t.worldToIndex(c),m=t.worldToIndex(d);return function(e){let{dimensions:t,imageData:i,topLeftImage:n,topRightImage:r,bottomRightImage:a,bottomLeftImage:o,topLeftWorld:s,topRightWorld:l,bottomRightWorld:c,bottomLeftWorld:d}=e;const h=To(n,t)?s:i.indexToWorld([0,0,0]),u=To(r,t)?l:i.indexToWorld([t[0]-1,0,0]),g=To(a,t)?c:i.indexToWorld([t[0]-1,t[1]-1,0]);return[h,u,To(o,t)?d:i.indexToWorld([0,t[1]-1,0]),g]}({dimensions:i,imageData:t,topLeftImage:h,topRightImage:u,bottomRightImage:g,bottomLeftImage:m,topLeftWorld:s,topRightWorld:l,bottomRightWorld:c,bottomLeftWorld:d})}function To(e,t){return e[0]>0||e[0]<t[0]-1||e[1]>0||e[1]<t[1]-1||e[2]>0||e[2]<t[2]-1}function bo(e){const t=oi("modalityLutModule",e)||{},i=oi("generalSeriesModule",e)||{},{modality:n}=i,r={rescaleSlope:t.rescaleSlope,rescaleIntercept:t.rescaleIntercept,modality:n},a=oi("scalingModule",e)||{};return{...r,..."PT"===n&&{suvbw:a.suvbw,suvbsa:a.suvbsa,suvlbm:a.suvlbm}}}function Oo(e,t){let i;if(t&&t instanceof Uint8Array)i="Uint8Array";else if(t instanceof Float32Array)i="Float32Array";else if(t instanceof Int16Array)i="Int16Array";else{if(!(t instanceof Uint16Array))throw new Error("Unsupported array type");i="Uint16Array"}return i}const So=function(e){const t=ba(e);if(!t)return;const{viewport:i}=t;if(!(i instanceof wa))throw new Error("An image can only be fetched for a stack viewport and not for a viewport of type: ".concat(i.type));return i.getCornerstoneImage()},Do=new Set(["1.2.840.10008.1.2.4.100","1.2.840.10008.1.2.4.100.1","1.2.840.10008.1.2.4.101","1.2.840.10008.1.2.4.101.1","1.2.840.10008.1.2.4.102","1.2.840.10008.1.2.4.102.1","1.2.840.10008.1.2.4.103","1.2.840.10008.1.2.4.103.1","1.2.840.10008.1.2.4.104","1.2.840.10008.1.2.4.104.1","1.2.840.10008.1.2.4.105","1.2.840.10008.1.2.4.105.1","1.2.840.10008.1.2.4.106","1.2.840.10008.1.2.4.106.1","1.2.840.10008.1.2.4.107","1.2.840.10008.1.2.4.108"]);function _o(e){return!!e&&(Array.isArray(e)?e:[e]).find((e=>Do.has(e)))}const ko=async function(e,t,i){let n=arguments.length>3&&void 0!==arguments[3]&&arguments[3],r=arguments.length>4&&void 0!==arguments[4]&&arguments[4];i.forEach((t=>{const i=e.getViewport(t);if(!i)throw new Error("Viewport with Id ".concat(t," does not exist"));if(!(i instanceof Ir))throw new Error("setVolumesForViewports only supports VolumeViewport and VolumeViewport3D")}));const a=i.map((async i=>{const a=e.getViewport(i);await a.setVolumes(t,n,r)}));await Promise.all(a)},Mo=async function(e,t,i){let n=arguments.length>3&&void 0!==arguments[3]&&arguments[3],r=arguments.length>4&&void 0!==arguments[4]&&arguments[4];for(const t of i){const i=e.getViewport(t);if(!i)throw new Error("Viewport with Id ".concat(t," does not exist"));if(!(i instanceof Ir))return void console.warn("Viewport with Id ".concat(t," is not a BaseVolumeViewport. Cannot add volume to this viewport."))}const a=i.map((async i=>{const a=e.getViewport(i);await a.addVolumes(t,n,r)}));await Promise.all(a)}})(),Q})()));
|
|
3
2
|
//# sourceMappingURL=index.js.map
|