@cornerstonejs/tools 1.30.1 → 1.31.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/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("gl-matrix"),require("@cornerstonejs/core"),require("@kitware/vtk.js/Common/DataModel/PiecewiseFunction"),require("@kitware/vtk.js/Rendering/Core/ColorTransferFunction"),require("@kitware/vtk.js/Common/Core/CellArray"),require("@kitware/vtk.js/Common/Core/Points"),require("@kitware/vtk.js/Common/DataModel/PolyData"),require("@kitware/vtk.js/Common/Core/DataArray"),require("@kitware/vtk.js/Filters/General/AppendPolyData"),require("@kitware/vtk.js/Rendering/Core/Actor"),require("@kitware/vtk.js/Rendering/Core/Mapper"),require("@kitware/vtk.js/Filters/General/ClipClosedSurface"),require("@kitware/vtk.js/Common/Core/Math"),require("@kitware/vtk.js/Common/Core/MatrixBuilder"),require("@kitware/vtk.js/Interaction/Widgets/OrientationMarkerWidget"),require("@kitware/vtk.js/Rendering/Core/AnnotatedCubeActor"),require("@kitware/vtk.js/Rendering/Core/AxesActor"),require("@kitware/vtk.js/IO/XML/XMLPolyDataReader")):"function"==typeof define&&define.amd?define(["gl-matrix","@cornerstonejs/core","@kitware/vtk.js/Common/DataModel/PiecewiseFunction","@kitware/vtk.js/Rendering/Core/ColorTransferFunction","@kitware/vtk.js/Common/Core/CellArray","@kitware/vtk.js/Common/Core/Points","@kitware/vtk.js/Common/DataModel/PolyData","@kitware/vtk.js/Common/Core/DataArray","@kitware/vtk.js/Filters/General/AppendPolyData","@kitware/vtk.js/Rendering/Core/Actor","@kitware/vtk.js/Rendering/Core/Mapper","@kitware/vtk.js/Filters/General/ClipClosedSurface","@kitware/vtk.js/Common/Core/Math","@kitware/vtk.js/Common/Core/MatrixBuilder","@kitware/vtk.js/Interaction/Widgets/OrientationMarkerWidget","@kitware/vtk.js/Rendering/Core/AnnotatedCubeActor","@kitware/vtk.js/Rendering/Core/AxesActor","@kitware/vtk.js/IO/XML/XMLPolyDataReader"],t):"object"==typeof exports?exports.cornerstoneTools3D=t(require("gl-matrix"),require("@cornerstonejs/core"),require("@kitware/vtk.js/Common/DataModel/PiecewiseFunction"),require("@kitware/vtk.js/Rendering/Core/ColorTransferFunction"),require("@kitware/vtk.js/Common/Core/CellArray"),require("@kitware/vtk.js/Common/Core/Points"),require("@kitware/vtk.js/Common/DataModel/PolyData"),require("@kitware/vtk.js/Common/Core/DataArray"),require("@kitware/vtk.js/Filters/General/AppendPolyData"),require("@kitware/vtk.js/Rendering/Core/Actor"),require("@kitware/vtk.js/Rendering/Core/Mapper"),require("@kitware/vtk.js/Filters/General/ClipClosedSurface"),require("@kitware/vtk.js/Common/Core/Math"),require("@kitware/vtk.js/Common/Core/MatrixBuilder"),require("@kitware/vtk.js/Interaction/Widgets/OrientationMarkerWidget"),require("@kitware/vtk.js/Rendering/Core/AnnotatedCubeActor"),require("@kitware/vtk.js/Rendering/Core/AxesActor"),require("@kitware/vtk.js/IO/XML/XMLPolyDataReader")):e.cornerstoneTools3D=t(e.window,e.cornerstone3D,e["@kitware/vtk.js/Common/DataModel/PiecewiseFunction"],e["@kitware/vtk.js/Rendering/Core/ColorTransferFunction"],e["@kitware/vtk.js/Common/Core/CellArray"],e["@kitware/vtk.js/Common/Core/Points"],e["@kitware/vtk.js/Common/DataModel/PolyData"],e["@kitware/vtk.js/Common/Core/DataArray"],e["@kitware/vtk.js/Filters/General/AppendPolyData"],e["@kitware/vtk.js/Rendering/Core/Actor"],e["@kitware/vtk.js/Rendering/Core/Mapper"],e["@kitware/vtk.js/Filters/General/ClipClosedSurface"],e["@kitware/vtk.js/Common/Core/Math"],e["@kitware/vtk.js/Common/Core/MatrixBuilder"],e["@kitware/vtk.js/Interaction/Widgets/OrientationMarkerWidget"],e["@kitware/vtk.js/Rendering/Core/AnnotatedCubeActor"],e["@kitware/vtk.js/Rendering/Core/AxesActor"],e["@kitware/vtk.js/IO/XML/XMLPolyDataReader"])}(self,(function(e,t,n,r,o,a,i,l,s,c,d,u,v,f,g,h,p,m){return function(){var w={907:function(e,t,n){e=n.nmd(e);var r="__lodash_hash_undefined__",o=9007199254740991,a="[object Arguments]",i="[object Boolean]",l="[object Date]",s="[object Function]",c="[object GeneratorFunction]",d="[object Map]",u="[object Number]",v="[object Object]",f="[object Promise]",g="[object RegExp]",h="[object Set]",p="[object String]",m="[object Symbol]",w="[object WeakMap]",E="[object ArrayBuffer]",y="[object DataView]",I="[object Float32Array]",b="[object Float64Array]",C="[object Int8Array]",_="[object Int16Array]",T="[object Int32Array]",O="[object Uint8Array]",D="[object Uint8ClampedArray]",S="[object Uint16Array]",k="[object Uint32Array]",M=/\w*$/,x=/^\[object .+?Constructor\]$/,R=/^(?:0|[1-9]\d*)$/,P={};P[a]=P["[object Array]"]=P[E]=P[y]=P[i]=P[l]=P[I]=P[b]=P[C]=P[_]=P[T]=P[d]=P[u]=P[v]=P[g]=P[h]=P[p]=P[m]=P[O]=P[D]=P[S]=P[k]=!0,P["[object Error]"]=P[s]=P[w]=!1;var A="object"==typeof n.g&&n.g&&n.g.Object===Object&&n.g,N="object"==typeof self&&self&&self.Object===Object&&self,L=A||N||Function("return this")(),U=t&&!t.nodeType&&t,V=U&&e&&!e.nodeType&&e,j=V&&V.exports===U;function B(e,t){return e.set(t[0],t[1]),e}function W(e,t){return e.add(t),e}function F(e,t,n,r){var o=-1,a=e?e.length:0;for(r&&a&&(n=e[++o]);++o<a;)n=t(n,e[o],o,e);return n}function H(e){var t=!1;if(null!=e&&"function"!=typeof e.toString)try{t=!!(e+"")}catch(e){}return t}function G(e){var t=-1,n=Array(e.size);return e.forEach((function(e,r){n[++t]=[r,e]})),n}function q(e,t){return function(n){return e(t(n))}}function z(e){var t=-1,n=Array(e.size);return e.forEach((function(e){n[++t]=e})),n}var K,Y=Array.prototype,X=Function.prototype,Z=Object.prototype,J=L["__core-js_shared__"],$=(K=/[^.]+$/.exec(J&&J.keys&&J.keys.IE_PROTO||""))?"Symbol(src)_1."+K:"",Q=X.toString,ee=Z.hasOwnProperty,te=Z.toString,ne=RegExp("^"+Q.call(ee).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),re=j?L.Buffer:void 0,oe=L.Symbol,ae=L.Uint8Array,ie=q(Object.getPrototypeOf,Object),le=Object.create,se=Z.propertyIsEnumerable,ce=Y.splice,de=Object.getOwnPropertySymbols,ue=re?re.isBuffer:void 0,ve=q(Object.keys,Object),fe=Le(L,"DataView"),ge=Le(L,"Map"),he=Le(L,"Promise"),pe=Le(L,"Set"),me=Le(L,"WeakMap"),we=Le(Object,"create"),Ee=We(fe),ye=We(ge),Ie=We(he),be=We(pe),Ce=We(me),_e=oe?oe.prototype:void 0,Te=_e?_e.valueOf:void 0;function Oe(e){var t=-1,n=e?e.length:0;for(this.clear();++t<n;){var r=e[t];this.set(r[0],r[1])}}function De(e){var t=-1,n=e?e.length:0;for(this.clear();++t<n;){var r=e[t];this.set(r[0],r[1])}}function Se(e){var t=-1,n=e?e.length:0;for(this.clear();++t<n;){var r=e[t];this.set(r[0],r[1])}}function ke(e){this.__data__=new De(e)}function Me(e,t,n){var r=e[t];ee.call(e,t)&&Fe(r,n)&&(void 0!==n||t in e)||(e[t]=n)}function xe(e,t){for(var n=e.length;n--;)if(Fe(e[n][0],t))return n;return-1}function Re(e,t,n,r,o,f,w){var x;if(r&&(x=f?r(e,o,f,w):r(e)),void 0!==x)return x;if(!Ke(e))return e;var R=He(e);if(R){if(x=function(e){var t=e.length,n=e.constructor(t);return t&&"string"==typeof e[0]&&ee.call(e,"index")&&(n.index=e.index,n.input=e.input),n}(e),!t)return function(e,t){var n=-1,r=e.length;for(t||(t=Array(r));++n<r;)t[n]=e[n];return t}(e,x)}else{var A=Ve(e),N=A==s||A==c;if(qe(e))return function(e,t){if(t)return e.slice();var n=new e.constructor(e.length);return e.copy(n),n}(e,t);if(A==v||A==a||N&&!f){if(H(e))return f?e:{};if(x=function(e){return"function"!=typeof e.constructor||Be(e)?{}:Ke(t=ie(e))?le(t):{};var t}(N?{}:e),!t)return function(e,t){return Ae(e,Ue(e),t)}(e,function(e,t){return e&&Ae(t,Ye(t),e)}(x,e))}else{if(!P[A])return f?e:{};x=function(e,t,n,r){var o,a=e.constructor;switch(t){case E:return Pe(e);case i:case l:return new a(+e);case y:return function(e,t){var n=t?Pe(e.buffer):e.buffer;return new e.constructor(n,e.byteOffset,e.byteLength)}(e,r);case I:case b:case C:case _:case T:case O:case D:case S:case k:return function(e,t){var n=t?Pe(e.buffer):e.buffer;return new e.constructor(n,e.byteOffset,e.length)}(e,r);case d:return function(e,t,n){return F(t?n(G(e),!0):G(e),B,new e.constructor)}(e,r,n);case u:case p:return new a(e);case g:return function(e){var t=new e.constructor(e.source,M.exec(e));return t.lastIndex=e.lastIndex,t}(e);case h:return function(e,t,n){return F(t?n(z(e),!0):z(e),W,new e.constructor)}(e,r,n);case m:return o=e,Te?Object(Te.call(o)):{}}}(e,A,Re,t)}}w||(w=new ke);var L=w.get(e);if(L)return L;if(w.set(e,x),!R)var U=n?function(e){return function(e,t,n){var r=t(e);return He(e)?r:function(e,t){for(var n=-1,r=t.length,o=e.length;++n<r;)e[o+n]=t[n];return e}(r,n(e))}(e,Ye,Ue)}(e):Ye(e);return function(e,t){for(var n=-1,r=e?e.length:0;++n<r&&!1!==t(e[n],n););}(U||e,(function(o,a){U&&(o=e[a=o]),Me(x,a,Re(o,t,n,r,a,e,w))})),x}function Pe(e){var t=new e.constructor(e.byteLength);return new ae(t).set(new ae(e)),t}function Ae(e,t,n,r){n||(n={});for(var o=-1,a=t.length;++o<a;){var i=t[o],l=r?r(n[i],e[i],i,n,e):void 0;Me(n,i,void 0===l?e[i]:l)}return n}function Ne(e,t){var n,r,o=e.__data__;return("string"==(r=typeof(n=t))||"number"==r||"symbol"==r||"boolean"==r?"__proto__"!==n:null===n)?o["string"==typeof t?"string":"hash"]:o.map}function Le(e,t){var n=function(e,t){return null==e?void 0:e[t]}(e,t);return function(e){return!(!Ke(e)||(t=e,$&&$ in t))&&(ze(e)||H(e)?ne:x).test(We(e));var t}(n)?n:void 0}Oe.prototype.clear=function(){this.__data__=we?we(null):{}},Oe.prototype.delete=function(e){return this.has(e)&&delete this.__data__[e]},Oe.prototype.get=function(e){var t=this.__data__;if(we){var n=t[e];return n===r?void 0:n}return ee.call(t,e)?t[e]:void 0},Oe.prototype.has=function(e){var t=this.__data__;return we?void 0!==t[e]:ee.call(t,e)},Oe.prototype.set=function(e,t){return this.__data__[e]=we&&void 0===t?r:t,this},De.prototype.clear=function(){this.__data__=[]},De.prototype.delete=function(e){var t=this.__data__,n=xe(t,e);return!(n<0||(n==t.length-1?t.pop():ce.call(t,n,1),0))},De.prototype.get=function(e){var t=this.__data__,n=xe(t,e);return n<0?void 0:t[n][1]},De.prototype.has=function(e){return xe(this.__data__,e)>-1},De.prototype.set=function(e,t){var n=this.__data__,r=xe(n,e);return r<0?n.push([e,t]):n[r][1]=t,this},Se.prototype.clear=function(){this.__data__={hash:new Oe,map:new(ge||De),string:new Oe}},Se.prototype.delete=function(e){return Ne(this,e).delete(e)},Se.prototype.get=function(e){return Ne(this,e).get(e)},Se.prototype.has=function(e){return Ne(this,e).has(e)},Se.prototype.set=function(e,t){return Ne(this,e).set(e,t),this},ke.prototype.clear=function(){this.__data__=new De},ke.prototype.delete=function(e){return this.__data__.delete(e)},ke.prototype.get=function(e){return this.__data__.get(e)},ke.prototype.has=function(e){return this.__data__.has(e)},ke.prototype.set=function(e,t){var n=this.__data__;if(n instanceof De){var r=n.__data__;if(!ge||r.length<199)return r.push([e,t]),this;n=this.__data__=new Se(r)}return n.set(e,t),this};var Ue=de?q(de,Object):function(){return[]},Ve=function(e){return te.call(e)};function je(e,t){return!!(t=null==t?o:t)&&("number"==typeof e||R.test(e))&&e>-1&&e%1==0&&e<t}function Be(e){var t=e&&e.constructor;return e===("function"==typeof t&&t.prototype||Z)}function We(e){if(null!=e){try{return Q.call(e)}catch(e){}try{return e+""}catch(e){}}return""}function Fe(e,t){return e===t||e!=e&&t!=t}(fe&&Ve(new fe(new ArrayBuffer(1)))!=y||ge&&Ve(new ge)!=d||he&&Ve(he.resolve())!=f||pe&&Ve(new pe)!=h||me&&Ve(new me)!=w)&&(Ve=function(e){var t=te.call(e),n=t==v?e.constructor:void 0,r=n?We(n):void 0;if(r)switch(r){case Ee:return y;case ye:return d;case Ie:return f;case be:return h;case Ce:return w}return t});var He=Array.isArray;function Ge(e){return null!=e&&function(e){return"number"==typeof e&&e>-1&&e%1==0&&e<=o}(e.length)&&!ze(e)}var qe=ue||function(){return!1};function ze(e){var t=Ke(e)?te.call(e):"";return t==s||t==c}function Ke(e){var t=typeof e;return!!e&&("object"==t||"function"==t)}function Ye(e){return Ge(e)?function(e,t){var n=He(e)||function(e){return function(e){return function(e){return!!e&&"object"==typeof e}(e)&&Ge(e)}(e)&&ee.call(e,"callee")&&(!se.call(e,"callee")||te.call(e)==a)}(e)?function(e,t){for(var n=-1,r=Array(e);++n<e;)r[n]=t(n);return r}(e.length,String):[],r=n.length,o=!!r;for(var i in e)!t&&!ee.call(e,i)||o&&("length"==i||je(i,r))||n.push(i);return n}(e):function(e){if(!Be(e))return ve(e);var t=[];for(var n in Object(e))ee.call(e,n)&&"constructor"!=n&&t.push(n);return t}(e)}e.exports=function(e){return Re(e,!0,!0)}},485:function(e,t,n){var r,o="__lodash_hash_undefined__",a=1/0,i="[object Function]",l="[object GeneratorFunction]",s="[object Symbol]",c=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,d=/^\w*$/,u=/^\./,v=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,f=/\\(\\)?/g,g=/^\[object .+?Constructor\]$/,h="object"==typeof n.g&&n.g&&n.g.Object===Object&&n.g,p="object"==typeof self&&self&&self.Object===Object&&self,m=h||p||Function("return this")(),w=Array.prototype,E=Function.prototype,y=Object.prototype,I=m["__core-js_shared__"],b=(r=/[^.]+$/.exec(I&&I.keys&&I.keys.IE_PROTO||""))?"Symbol(src)_1."+r:"",C=E.toString,_=y.hasOwnProperty,T=y.toString,O=RegExp("^"+C.call(_).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),D=m.Symbol,S=w.splice,k=V(m,"Map"),M=V(Object,"create"),x=D?D.prototype:void 0,R=x?x.toString:void 0;function P(e){var t=-1,n=e?e.length:0;for(this.clear();++t<n;){var r=e[t];this.set(r[0],r[1])}}function A(e){var t=-1,n=e?e.length:0;for(this.clear();++t<n;){var r=e[t];this.set(r[0],r[1])}}function N(e){var t=-1,n=e?e.length:0;for(this.clear();++t<n;){var r=e[t];this.set(r[0],r[1])}}function L(e,t){for(var n,r,o=e.length;o--;)if((n=e[o][0])===(r=t)||n!=n&&r!=r)return o;return-1}function U(e,t){var n,r,o=e.__data__;return("string"==(r=typeof(n=t))||"number"==r||"symbol"==r||"boolean"==r?"__proto__"!==n:null===n)?o["string"==typeof t?"string":"hash"]:o.map}function V(e,t){var n=function(e,t){return null==e?void 0:e[t]}(e,t);return function(e){if(!H(e)||b&&b in e)return!1;var t=function(e){var t=H(e)?T.call(e):"";return t==i||t==l}(e)||function(e){var t=!1;if(null!=e&&"function"!=typeof e.toString)try{t=!!(e+"")}catch(e){}return t}(e)?O:g;return t.test(function(e){if(null!=e){try{return C.call(e)}catch(e){}try{return e+""}catch(e){}}return""}(e))}(n)?n:void 0}P.prototype.clear=function(){this.__data__=M?M(null):{}},P.prototype.delete=function(e){return this.has(e)&&delete this.__data__[e]},P.prototype.get=function(e){var t=this.__data__;if(M){var n=t[e];return n===o?void 0:n}return _.call(t,e)?t[e]:void 0},P.prototype.has=function(e){var t=this.__data__;return M?void 0!==t[e]:_.call(t,e)},P.prototype.set=function(e,t){return this.__data__[e]=M&&void 0===t?o:t,this},A.prototype.clear=function(){this.__data__=[]},A.prototype.delete=function(e){var t=this.__data__,n=L(t,e);return!(n<0||(n==t.length-1?t.pop():S.call(t,n,1),0))},A.prototype.get=function(e){var t=this.__data__,n=L(t,e);return n<0?void 0:t[n][1]},A.prototype.has=function(e){return L(this.__data__,e)>-1},A.prototype.set=function(e,t){var n=this.__data__,r=L(n,e);return r<0?n.push([e,t]):n[r][1]=t,this},N.prototype.clear=function(){this.__data__={hash:new P,map:new(k||A),string:new P}},N.prototype.delete=function(e){return U(this,e).delete(e)},N.prototype.get=function(e){return U(this,e).get(e)},N.prototype.has=function(e){return U(this,e).has(e)},N.prototype.set=function(e,t){return U(this,e).set(e,t),this};var j=W((function(e){var t;e=null==(t=e)?"":function(e){if("string"==typeof e)return e;if(G(e))return R?R.call(e):"";var t=e+"";return"0"==t&&1/e==-a?"-0":t}(t);var n=[];return u.test(e)&&n.push(""),e.replace(v,(function(e,t,r,o){n.push(r?o.replace(f,"$1"):t||e)})),n}));function B(e){if("string"==typeof e||G(e))return e;var t=e+"";return"0"==t&&1/e==-a?"-0":t}function W(e,t){if("function"!=typeof e||t&&"function"!=typeof t)throw new TypeError("Expected a function");var n=function(){var r=arguments,o=t?t.apply(this,r):r[0],a=n.cache;if(a.has(o))return a.get(o);var i=e.apply(this,r);return n.cache=a.set(o,i),i};return n.cache=new(W.Cache||N),n}W.Cache=N;var F=Array.isArray;function H(e){var t=typeof e;return!!e&&("object"==t||"function"==t)}function G(e){return"symbol"==typeof e||function(e){return!!e&&"object"==typeof e}(e)&&T.call(e)==s}e.exports=function(e,t,n){var r=null==e?void 0:function(e,t){var n;t=function(e,t){if(F(e))return!1;var n=typeof e;return!("number"!=n&&"symbol"!=n&&"boolean"!=n&&null!=e&&!G(e))||d.test(e)||!c.test(e)||null!=t&&e in Object(t)}(t,e)?[t]:F(n=t)?n:j(n);for(var r=0,o=t.length;null!=e&&r<o;)e=e[B(t[r++])];return r&&r==o?e:void 0}(e,t);return void 0===r?n:r}},396:function(e){"use strict";e.exports=o},785:function(e){"use strict";e.exports=l},807:function(e){"use strict";e.exports=v},847:function(e){"use strict";e.exports=f},348:function(e){"use strict";e.exports=a},441:function(e){"use strict";e.exports=n},70:function(e){"use strict";e.exports=i},127:function(e){"use strict";e.exports=s},448:function(e){"use strict";e.exports=u},614:function(e){"use strict";e.exports=m},518:function(e){"use strict";e.exports=g},474:function(e){"use strict";e.exports=c},744:function(e){"use strict";e.exports=h},424:function(e){"use strict";e.exports=p},795:function(e){"use strict";e.exports=r},610:function(e){"use strict";e.exports=d},953:function(e){"use strict";e.exports=t},976:function(t){"use strict";t.exports=e},609:function(e,t,n){var r=n(425).default;function o(){"use strict";e.exports=o=function(){return t},e.exports.__esModule=!0,e.exports.default=e.exports;var t={},n=Object.prototype,a=n.hasOwnProperty,i=Object.defineProperty||function(e,t,n){e[t]=n.value},l="function"==typeof Symbol?Symbol:{},s=l.iterator||"@@iterator",c=l.asyncIterator||"@@asyncIterator",d=l.toStringTag||"@@toStringTag";function u(e,t,n){return Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{u({},"")}catch(e){u=function(e,t,n){return e[t]=n}}function v(e,t,n,r){var o=t&&t.prototype instanceof h?t:h,a=Object.create(o.prototype),l=new S(r||[]);return i(a,"_invoke",{value:_(e,n,l)}),a}function f(e,t,n){try{return{type:"normal",arg:e.call(t,n)}}catch(e){return{type:"throw",arg:e}}}t.wrap=v;var g={};function h(){}function p(){}function m(){}var w={};u(w,s,(function(){return this}));var E=Object.getPrototypeOf,y=E&&E(E(k([])));y&&y!==n&&a.call(y,s)&&(w=y);var I=m.prototype=h.prototype=Object.create(w);function b(e){["next","throw","return"].forEach((function(t){u(e,t,(function(e){return this._invoke(t,e)}))}))}function C(e,t){function n(o,i,l,s){var c=f(e[o],e,i);if("throw"!==c.type){var d=c.arg,u=d.value;return u&&"object"==r(u)&&a.call(u,"__await")?t.resolve(u.__await).then((function(e){n("next",e,l,s)}),(function(e){n("throw",e,l,s)})):t.resolve(u).then((function(e){d.value=e,l(d)}),(function(e){return n("throw",e,l,s)}))}s(c.arg)}var o;i(this,"_invoke",{value:function(e,r){function a(){return new t((function(t,o){n(e,r,t,o)}))}return o=o?o.then(a,a):a()}})}function _(e,t,n){var r="suspendedStart";return function(o,a){if("executing"===r)throw new Error("Generator is already running");if("completed"===r){if("throw"===o)throw a;return{value:void 0,done:!0}}for(n.method=o,n.arg=a;;){var i=n.delegate;if(i){var l=T(i,n);if(l){if(l===g)continue;return l}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if("suspendedStart"===r)throw r="completed",n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);r="executing";var s=f(e,t,n);if("normal"===s.type){if(r=n.done?"completed":"suspendedYield",s.arg===g)continue;return{value:s.arg,done:n.done}}"throw"===s.type&&(r="completed",n.method="throw",n.arg=s.arg)}}}function T(e,t){var n=t.method,r=e.iterator[n];if(void 0===r)return t.delegate=null,"throw"===n&&e.iterator.return&&(t.method="return",t.arg=void 0,T(e,t),"throw"===t.method)||"return"!==n&&(t.method="throw",t.arg=new TypeError("The iterator does not provide a '"+n+"' method")),g;var o=f(r,e.iterator,t.arg);if("throw"===o.type)return t.method="throw",t.arg=o.arg,t.delegate=null,g;var a=o.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,g):a:(t.method="throw",t.arg=new TypeError("iterator result is not an object"),t.delegate=null,g)}function O(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 D(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function S(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(O,this),this.reset(!0)}function k(e){if(e){var t=e[s];if(t)return t.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var n=-1,r=function t(){for(;++n<e.length;)if(a.call(e,n))return t.value=e[n],t.done=!1,t;return t.value=void 0,t.done=!0,t};return r.next=r}}return{next:M}}function M(){return{value:void 0,done:!0}}return p.prototype=m,i(I,"constructor",{value:m,configurable:!0}),i(m,"constructor",{value:p,configurable:!0}),p.displayName=u(m,d,"GeneratorFunction"),t.isGeneratorFunction=function(e){var t="function"==typeof e&&e.constructor;return!!t&&(t===p||"GeneratorFunction"===(t.displayName||t.name))},t.mark=function(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,m):(e.__proto__=m,u(e,d,"GeneratorFunction")),e.prototype=Object.create(I),e},t.awrap=function(e){return{__await:e}},b(C.prototype),u(C.prototype,c,(function(){return this})),t.AsyncIterator=C,t.async=function(e,n,r,o,a){void 0===a&&(a=Promise);var i=new C(v(e,n,r,o),a);return t.isGeneratorFunction(n)?i:i.next().then((function(e){return e.done?e.value:i.next()}))},b(I),u(I,d,"Generator"),u(I,s,(function(){return this})),u(I,"toString",(function(){return"[object Generator]"})),t.keys=function(e){var t=Object(e),n=[];for(var r in t)n.push(r);return n.reverse(),function e(){for(;n.length;){var r=n.pop();if(r in t)return e.value=r,e.done=!1,e}return e.done=!0,e}},t.values=k,S.prototype={constructor:S,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(D),!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 n(n,r){return i.type="throw",i.arg=e,t.next=n,r&&(t.method="next",t.arg=void 0),!!r}for(var r=this.tryEntries.length-1;r>=0;--r){var o=this.tryEntries[r],i=o.completion;if("root"===o.tryLoc)return n("end");if(o.tryLoc<=this.prev){var l=a.call(o,"catchLoc"),s=a.call(o,"finallyLoc");if(l&&s){if(this.prev<o.catchLoc)return n(o.catchLoc,!0);if(this.prev<o.finallyLoc)return n(o.finallyLoc)}else if(l){if(this.prev<o.catchLoc)return n(o.catchLoc,!0)}else{if(!s)throw new Error("try statement without catch or finally");if(this.prev<o.finallyLoc)return n(o.finallyLoc)}}}},abrupt:function(e,t){for(var n=this.tryEntries.length-1;n>=0;--n){var r=this.tryEntries[n];if(r.tryLoc<=this.prev&&a.call(r,"finallyLoc")&&this.prev<r.finallyLoc){var o=r;break}}o&&("break"===e||"continue"===e)&&o.tryLoc<=t&&t<=o.finallyLoc&&(o=null);var i=o?o.completion:{};return i.type=e,i.arg=t,o?(this.method="next",this.next=o.finallyLoc,g):this.complete(i)},complete:function(e,t){if("throw"===e.type)throw e.arg;return"break"===e.type||"continue"===e.type?this.next=e.arg:"return"===e.type?(this.rval=this.arg=e.arg,this.method="return",this.next="end"):"normal"===e.type&&t&&(this.next=t),g},finish:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.finallyLoc===e)return this.complete(n.completion,n.afterLoc),D(n),g}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.tryLoc===e){var r=n.completion;if("throw"===r.type){var o=r.arg;D(n)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(e,t,n){return this.delegate={iterator:k(e),resultName:t,nextLoc:n},"next"===this.method&&(this.arg=void 0),g}},t}e.exports=o,e.exports.__esModule=!0,e.exports.default=e.exports},425:function(e){function t(n){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(n)}e.exports=t,e.exports.__esModule=!0,e.exports.default=e.exports},841:function(e,t,n){var r=n(609)();e.exports=r;try{regeneratorRuntime=r}catch(e){"object"==typeof globalThis?globalThis.regeneratorRuntime=r:Function("r","regeneratorRuntime = r")(r)}}},E={};function y(e){var t=E[e];if(void 0!==t)return t.exports;var n=E[e]={id:e,loaded:!1,exports:{}};return w[e](n,n.exports,y),n.loaded=!0,n.exports}y.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return y.d(t,{a:t}),t},y.d=function(e,t){for(var n in t)y.o(t,n)&&!y.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},y.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),y.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},y.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},y.nmd=function(e){return e.paths=[],e.children||(e.children=[]),e};var I={};return function(){"use strict";y.r(I),y.d(I,{AdvancedMagnifyTool:function(){return cp},AngleTool:function(){return zh},AnnotationDisplayTool:function(){return wd},AnnotationTool:function(){return Id},ArrowAnnotateTool:function(){return Hh},BaseTool:function(){return La},BidirectionalTool:function(){return jh},BrushTool:function(){return Qc},CONSTANTS:function(){return u},CircleROITool:function(){return Nh},CircleScissorsTool:function(){return bp},CobbAngleTool:function(){return $h},CrosshairsTool:function(){return gh},DragProbeTool:function(){return jg},EllipticalROITool:function(){return kh},Enums:function(){return Z},LengthTool:function(){return ah},MIPJumpToClickTool:function(){return th},MagnifyTool:function(){return tp},OrientationMarkerTool:function(){return Up},OverlayGridTool:function(){return yh},PaintFillTool:function(){return Wp},PanTool:function(){return Mg},PlanarFreehandROITool:function(){return If},PlanarRotateTool:function(){return Yg},ProbeTool:function(){return Lg},RectangleROIStartEndThresholdTool:function(){return Wd},RectangleROIThresholdTool:function(){return Vd},RectangleROITool:function(){return Ld},RectangleScissorsTool:function(){return yp},ReferenceCursors:function(){return up},ReferenceLines:function(){return mh},ReferenceLinesTool:function(){return mh},ScaleOverlayTool:function(){return gp},SegmentationDisplayTool:function(){return el},SegmentationIntersectionTool:function(){return _h},SphereScissorsTool:function(){return _p},StackScrollMouseWheelTool:function(){return Zg},StackScrollTool:function(){return qg},Synchronizer:function(){return Tl},SynchronizerManager:function(){return s},ToolGroupManager:function(){return d},TrackballRotateTool:function(){return Rg},Types:function(){return q},VideoRedactionTool:function(){return Hp},VolumeRotateMouseWheelTool:function(){return Qg},WindowLevelTool:function(){return Wg},ZoomTool:function(){return Hg},addTool:function(){return wl},annotation:function(){return K},cancelActiveManipulations:function(){return Il},cursors:function(){return G},destroy:function(){return hl},drawing:function(){return f},init:function(){return gl},removeTool:function(){return El},segmentation:function(){return X},state:function(){return Ke},synchronizers:function(){return v},utilities:function(){return H}});var e={};y.r(e),y.d(e,{checkAndDefineIsLockedProperty:function(){return ge},getAnnotationsLocked:function(){return ue},getAnnotationsLockedCount:function(){return fe},isAnnotationLocked:function(){return ve},setAnnotationLocked:function(){return ce},unlockAllAnnotations:function(){return de}});var t={};y.r(t),y.d(t,{deselectAnnotation:function(){return be},getAnnotationsSelected:function(){return Ce},getAnnotationsSelectedByToolName:function(){return _e},getAnnotationsSelectedCount:function(){return Oe},isAnnotationSelected:function(){return Te},setAnnotationSelected:function(){return Ie}});var n={};y.r(n),y.d(n,{checkAndDefineIsVisibleProperty:function(){return Ae},isAnnotationVisible:function(){return Pe},setAnnotationVisibility:function(){return xe},showAllAnnotations:function(){return Re}});var r={};y.r(r),y.d(r,{addAnnotation:function(){return rt},getAnnotation:function(){return it},getAnnotationManager:function(){return Qe},getAnnotations:function(){return nt},getNumberOfAnnotations:function(){return ot},removeAllAnnotations:function(){return lt},removeAnnotation:function(){return at},resetAnnotationManager:function(){return tt},setAnnotationManager:function(){return et}});var o={};y.r(o),y.d(o,{triggerSegmentationDataModified:function(){return St},triggerSegmentationModified:function(){return Dt},triggerSegmentationRemoved:function(){return _t},triggerSegmentationRepresentationModified:function(){return Ot},triggerSegmentationRepresentationRemoved:function(){return Tt}});var a={};y.r(a),y.d(a,{addColorLUT:function(){return Qt},addSegmentation:function(){return Nt},addSegmentationRepresentation:function(){return qt},getAllSegmentationRepresentations:function(){return Ut},getColorLUT:function(){return $t},getDefaultSegmentationStateManager:function(){return Rt},getGlobalConfig:function(){return zt},getSegmentSpecificRepresentationConfig:function(){return Ht},getSegmentation:function(){return Pt},getSegmentationRepresentationByUID:function(){return Yt},getSegmentationRepresentationSpecificConfig:function(){return Ft},getSegmentationRepresentations:function(){return Lt},getSegmentations:function(){return At},getToolGroupIdsWithSegmentation:function(){return Vt},getToolGroupSpecificConfig:function(){return jt},removeColorLUT:function(){return Jt},removeSegmentation:function(){return Xt},removeSegmentationRepresentation:function(){return Zt},setGlobalConfig:function(){return Kt},setSegmentSpecificRepresentationConfig:function(){return Gt},setSegmentationRepresentationSpecificConfig:function(){return Wt},setToolGroupSpecificConfig:function(){return Bt}});var i={};y.r(i),y.d(i,{copyPoints:function(){return $n},copyPointsList:function(){return Jn},getDeltaDistance:function(){return Yn},getDeltaDistanceBetweenIPoints:function(){return Zn},getDeltaPoints:function(){return Kn},getDeltaRotation:function(){return Xn},getMeanPoints:function(){return Qn},getMeanTouchPoints:function(){return er}});var l={};y.r(l),y.d(l,{getSegmentationVisibility:function(){return Ra},setSegmentVisibility:function(){return Aa},setSegmentationVisibility:function(){return xa},setSegmentsVisibility:function(){return Pa}});var s={};y.r(s),y.d(s,{createSynchronizer:function(){return Ol},destroy:function(){return Dl},destroySynchronizer:function(){return Ml},getAllSynchronizers:function(){return kl},getSynchronizer:function(){return Sl},getSynchronizersForViewport:function(){return la}});var c={};y.r(c),y.d(c,{hideElementCursor:function(){return gs},initElementCursor:function(){return us},resetElementCursor:function(){return fs},setElementCursor:function(){return vs}});var d={};y.r(d),y.d(d,{createToolGroup:function(){return Is},destroy:function(){return vl},destroyToolGroup:function(){return dl},getAllToolGroups:function(){return bs},getToolGroup:function(){return fa},getToolGroupForViewport:function(){return Fr},getToolGroupsWithToolName:function(){return Je}});var u={};y.r(u),y.d(u,{COLOR_LUT:function(){return vt}});var v={};y.r(v),y.d(v,{createCameraPositionSynchronizer:function(){return Ts},createStackImageSynchronizer:function(){return Hs},createVOISynchronizer:function(){return Ds},createZoomPanSynchronizer:function(){return Ms}});var f={};y.r(f),y.d(f,{draw:function(){return Wr},drawArrow:function(){return ac},drawCircle:function(){return Ks},drawEllipse:function(){return Ys},drawHandles:function(){return Xs},drawLine:function(){return Zs},drawLinkedTextBox:function(){return rc},drawPolyline:function(){return $s},drawRect:function(){return oc},drawRedactionRect:function(){return ic},drawTextBox:function(){return tc},setAttributesIfNecessary:function(){return qs},setNewAttributesIfValid:function(){return zs}});var g={};y.r(g),y.d(g,{getActiveSegmentationRepresentation:function(){return Wc},setActiveSegmentationRepresentation:function(){return Fc}});var h={};y.r(h),y.d(h,{getLockedSegments:function(){return qc},isSegmentIndexLocked:function(){return Hc},setSegmentIndexLocked:function(){return Gc}});var p={};y.r(p),y.d(p,{getActiveSegmentIndex:function(){return Kc},setActiveSegmentIndex:function(){return zc}});var m={};y.r(m),y.d(m,{addColorLUT:function(){return Yc},getColorForSegmentIndex:function(){return Zc},setColorForSegmentIndex:function(){return Jc},setColorLUT:function(){return Xc}});var w={};y.r(w),y.d(w,{createLabelmapVolumeForViewport:function(){return Jd},createMergedLabelmapForIndex:function(){return Yd},floodFill:function(){return tu},getBrushSizeForToolGroup:function(){return ru},getBrushThresholdForToolGroup:function(){return au},getDefaultRepresentationConfig:function(){return Zd},isValidRepresentationConfig:function(){return Xd},rectangleROIThresholdVolumeByRange:function(){return Kd},setBrushSizeForToolGroup:function(){return nu},setBrushThresholdForToolGroup:function(){return ou},thresholdSegmentationByRange:function(){return iu},thresholdVolumeByRange:function(){return rd},triggerSegmentationRender:function(){return ol}});var E={};y.r(E),y.d(E,{getTextBoxCoordsCanvas:function(){return Od}});var b={};y.r(b),y.d(b,{findClosestPoint:function(){return nc},liangBarksyClip:function(){return uu}});var C={};y.r(C),y.d(C,{getCanvasEllipseCorners:function(){return Rc},pointInEllipse:function(){return Pc}});var _={};y.r(_),y.d(_,{distanceToPoint:function(){return _d},distanceToPointSquared:function(){return Cd},intersectLine:function(){return fu}});var T={};y.r(T),y.d(T,{distanceToPoint:function(){return Td}});var O={};y.r(O),y.d(O,{addCanvasPointsToArray:function(){return Cu},calculateAreaOfPoints:function(){return Tu},getClosestIntersectionWithPolyline:function(){return hu},getFirstIntersectionWithPolyline:function(){return gu},getSubPixelSpacingAndXYDirections:function(){return Iu},pointCanProjectOnLine:function(){return _u},pointsAreWithinCloseContourProximity:function(){return bu}});var D={};y.r(D),y.d(D,{distanceToPoint:function(){return Ou}});var S={};y.r(S),y.d(S,{BasicStatsCalculator:function(){return Rd},Calculator:function(){return xd}});var k={};y.r(k),y.d(k,{BasicStatsCalculator:function(){return S},ellipse:function(){return C},lineSegment:function(){return _},point:function(){return D},polyline:function(){return O},rectangle:function(){return T},vec2:function(){return b}});var M={};y.r(M),y.d(M,{default:function(){return xu},filterAnnotationsForDisplay:function(){return hd},filterAnnotationsWithinSlice:function(){return gd},getPointInLineOfSightWithCriteria:function(){return ku},getWorldWidthAndHeightFromCorners:function(){return Dd}});var x={};y.r(x),y.d(x,{filterViewportsWithFrameOfReferenceUID:function(){return od},filterViewportsWithParallelNormals:function(){return dd},filterViewportsWithToolEnabled:function(){return sd},getViewportIdsWithToolToRender:function(){return ud}});var R={};y.r(R),y.d(R,{getOrientationStringLPS:function(){return Ru},invertOrientationStringLPS:function(){return Pu}});var P={};y.r(P),y.d(P,{Events:function(){return Nu},addToolState:function(){return Uu},getToolState:function(){return Vu},playClip:function(){return Gu},stopClip:function(){return qu}});var A={};y.r(A),y.d(A,{extend2DBoundingBoxInViewAxis:function(){return Fd},getBoundingBoxAroundShape:function(){return Cc}});var N={};y.r(N),y.d(N,{default:function(){return Cf},interpolateAnnotation:function(){return bf}});var L={};y.r(L),y.d(L,{getBoundsIJKFromRectangleAnnotations:function(){return Hd}});var U={};y.r(U),y.d(U,{isViewportPreScaled:function(){return kd},jumpToSlice:function(){return Us},jumpToWorld:function(){return Gf}});var V={};y.r(V),y.d(V,{generateImageFromTimeData:function(){return zf},getDataInTime:function(){return qf}});var j={};y.r(j),y.d(j,{getPoint:function(){return Yf},getPolyDataPointIndexes:function(){return Xf},getPolyDataPoints:function(){return Zf}});var B={};y.r(B),y.d(B,{ColorbarRangeTextPosition:function(){return Jf}});var W={};y.r(W),y.d(W,{Colorbar:function(){return gg},Enums:function(){return B},ViewportColorbar:function(){return Eg}});var F={};y.r(F),y.d(F,{colorbar:function(){return W}});var H={};y.r(H),y.d(H,{boundingBox:function(){return A},calibrateImageSpacing:function(){return hc},cine:function(){return P},clip:function(){return Rs},debounce:function(){return vc},drawing:function(){return E},dynamicVolume:function(){return V},getAnnotationNearPoint:function(){return sc},getAnnotationNearPointOnEnabledElement:function(){return cc},getCalibratedLengthUnits:function(){return Ic},getCalibratedScale:function(){return yc},isObject:function(){return uc},jumpToSlice:function(){return Us},math:function(){return k},orientation:function(){return R},planar:function(){return M},planarFreehandROITool:function(){return N},pointInShapeCallback:function(){return bc},pointInSurroundingSphereCallback:function(){return Tc},pointToString:function(){return $a},polyDataUtils:function(){return j},rectangleROITool:function(){return L},roundNumber:function(){return Oc},scroll:function(){return Ps},segmentation:function(){return w},stackContextPrefetch:function(){return Hf},stackPrefetch:function(){return Vf},throttle:function(){return fc},touch:function(){return i},triggerAnnotationRender:function(){return Zr},triggerAnnotationRenderForViewportIds:function(){return ca},triggerEvent:function(){return J.triggerEvent},viewport:function(){return U},viewportFilters:function(){return x},voi:function(){return F}});var G={};y.r(G),y.d(G,{CursorNames:function(){return Ig},CursorSVG:function(){return Xl},ImageMouseCursor:function(){return Wl},MouseCursor:function(){return Nl},SVGMouseCursor:function(){return as},elementCursor:function(){return c},registerCursor:function(){return Jl},setCursorForElement:function(){return yg}});var q={};y.r(q);var z={};y.r(z),y.d(z,{getFont:function(){return bg},getState:function(){return pd},style:function(){return ts}});var K={};y.r(K),y.d(K,{FrameOfReferenceSpecificAnnotationManager:function(){return Ge},config:function(){return z},locking:function(){return e},selection:function(){return t},state:function(){return r},visibility:function(){return n}});var Y={};y.r(Y),y.d(Y,{color:function(){return m},getGlobalConfig:function(){return Ia},getGlobalRepresentationConfig:function(){return Ca},getSegmentSpecificConfig:function(){return ka},getSegmentationRepresentationSpecificConfig:function(){return Da},getToolGroupSpecificConfig:function(){return Ta},setGlobalConfig:function(){return ba},setGlobalRepresentationConfig:function(){return _a},setSegmentSpecificConfig:function(){return Ma},setSegmentationRepresentationSpecificConfig:function(){return Sa},setToolGroupSpecificConfig:function(){return Oa},visibility:function(){return l}});var X={};y.r(X),y.d(X,{activeSegmentation:function(){return g},addSegmentationRepresentations:function(){return Sg},addSegmentations:function(){return _g},config:function(){return Y},removeSegmentationsFromToolGroup:function(){return cl},segmentIndex:function(){return p},segmentLocking:function(){return h},state:function(){return a},triggerSegmentationEvents:function(){return o}});var Z={};y.r(Z),y.d(Z,{AnnotationStyleStates:function(){return Bl},Events:function(){return Q},KeyboardBindings:function(){return yo},MouseBindings:function(){return Eo},SegmentationRepresentations:function(){return gt},Swipe:function(){return qn},ToolModes:function(){return Xe}});var J=y(953),$=function(e){return e.TOOL_ACTIVATED="CORNERSTONE_TOOLS_TOOL_ACTIVATED",e.TOOL_MODE_CHANGED="CORNERSTONE_TOOLS_TOOL_MODE_CHANGED",e.ANNOTATION_ADDED="CORNERSTONE_TOOLS_ANNOTATION_ADDED",e.ANNOTATION_COMPLETED="CORNERSTONE_TOOLS_ANNOTATION_COMPLETED",e.ANNOTATION_MODIFIED="CORNERSTONE_TOOLS_ANNOTATION_MODIFIED",e.ANNOTATION_REMOVED="CORNERSTONE_TOOLS_ANNOTATION_REMOVED",e.ANNOTATION_SELECTION_CHANGE="CORNERSTONE_TOOLS_ANNOTATION_SELECTION_CHANGE",e.ANNOTATION_LOCK_CHANGE="CORNERSTONE_TOOLS_ANNOTATION_LOCK_CHANGE",e.ANNOTATION_VISIBILITY_CHANGE="CORNERSTONE_TOOLS_ANNOTATION_VISIBILITY_CHANGE",e.ANNOTATION_RENDERED="CORNERSTONE_TOOLS_ANNOTATION_RENDERED",e.SEGMENTATION_MODIFIED="CORNERSTONE_TOOLS_SEGMENTATION_MODIFIED",e.SEGMENTATION_RENDERED="CORNERSTONE_TOOLS_SEGMENTATION_RENDERED",e.SEGMENTATION_REPRESENTATION_MODIFIED="CORNERSTONE_TOOLS_SEGMENTATION_REPRESENTATION_MODIFIED",e.SEGMENTATION_REMOVED="CORNERSTONE_TOOLS_SEGMENTATION_REMOVED",e.SEGMENTATION_REPRESENTATION_REMOVED="CORNERSTONE_TOOLS_SEGMENTATION_REPRESENTATION_REMOVED",e.SEGMENTATION_DATA_MODIFIED="CORNERSTONE_TOOLS_SEGMENTATION_DATA_MODIFIED",e.KEY_DOWN="CORNERSTONE_TOOLS_KEY_DOWN",e.KEY_UP="CORNERSTONE_TOOLS_KEY_UP",e.MOUSE_DOWN="CORNERSTONE_TOOLS_MOUSE_DOWN",e.MOUSE_UP="CORNERSTONE_TOOLS_MOUSE_UP",e.MOUSE_DOWN_ACTIVATE="CORNERSTONE_TOOLS_MOUSE_DOWN_ACTIVATE",e.MOUSE_DRAG="CORNERSTONE_TOOLS_MOUSE_DRAG",e.MOUSE_MOVE="CORNERSTONE_TOOLS_MOUSE_MOVE",e.MOUSE_CLICK="CORNERSTONE_TOOLS_MOUSE_CLICK",e.MOUSE_DOUBLE_CLICK="CORNERSTONE_TOOLS_MOUSE_DOUBLE_CLICK",e.MOUSE_WHEEL="CORNERSTONE_TOOLS_MOUSE_WHEEL",e.TOUCH_START="CORNERSTONE_TOOLS_TOUCH_START",e.TOUCH_START_ACTIVATE="CORNERSTONE_TOOLS_TOUCH_START_ACTIVATE",e.TOUCH_PRESS="CORNERSTONE_TOOLS_TOUCH_PRESS",e.TOUCH_DRAG="CORNERSTONE_TOOLS_TOUCH_DRAG",e.TOUCH_END="CORNERSTONE_TOOLS_TOUCH_END",e.TOUCH_TAP="CORNERSTONE_TOOLS_TAP",e.TOUCH_SWIPE="CORNERSTONE_TOOLS_SWIPE",e}($||{}),Q=$;function ee(e){return ee="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},ee(e)}function te(e){var t=function(e,t){if("object"!==ee(e)||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var r=n.call(e,"string");if("object"!==ee(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"===ee(t)?t:String(t)}function ne(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,te(r.key),r)}}function re(e,t,n){return t&&ne(e.prototype,t),n&&ne(e,n),Object.defineProperty(e,"prototype",{writable:!1}),e}function oe(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function ae(e,t,n){return(t=te(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var ie=y(907),le=y.n(ie),se=new Set;function ce(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],n=he();e&&(t?function(e,t,n){t.has(e)||(t.add(e),n.added.push(e))}(e,se,n):pe(e,se,n)),me(n,se)}function de(){var e=he();!function(e,t){e.forEach((function(n){pe(n,e,t)}))}(se,e),me(e,se)}function ue(){return Array.from(se)}function ve(e){return se.has(e)}function fe(){return se.size}function ge(e){if(e){var t=!!e.isLocked;(function(e){var t=Object.getOwnPropertyDescriptor(e,"isLocked");return t?t.configurable&&(t.set!==we||t.get!==Ee):Object.isExtensible(e)})(e)&&Object.defineProperty(e,"isLocked",{configurable:!1,enumerable:!0,set:we,get:Ee}),ce(e,t)}}function he(){return Object.freeze({added:[],removed:[],locked:[]})}function pe(e,t,n){t.delete(e)&&n.removed.push(e)}function me(e,t){(e.added.length>0||e.removed.length>0)&&(t.forEach((function(t){e.locked.push(t)})),(0,J.triggerEvent)(J.eventTarget,Q.ANNOTATION_LOCK_CHANGE,e))}function we(e){ce(this,e)}function Ee(){return ve(this)}var ye=new Set;function Ie(e){arguments.length>1&&void 0!==arguments[1]&&!arguments[1]?be(e):function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=De();t||Se(ye,n),e&&!ye.has(e)&&(ye.add(e),n.added.push(e)),ke(n,ye)}(e,arguments.length>2&&void 0!==arguments[2]&&arguments[2])}function be(e){var t=De();e?ye.delete(e)&&t.removed.push(e):Se(ye,t),ke(t,ye)}function Ce(){return Array.from(ye)}function _e(e){return Ce().filter((function(t){return it(t).metadata.toolName===e}))}function Te(e){return ye.has(e)}function Oe(){return ye.size}function De(){return Object.freeze({added:[],removed:[],selection:[]})}function Se(e,t){e.forEach((function(n){e.delete(n)&&t.removed.push(n)}))}function ke(e,t){(e.added.length>0||e.removed.length>0)&&(t.forEach((function(t){e.selection.push(t)})),(0,J.triggerEvent)(J.eventTarget,Q.ANNOTATION_SELECTION_CHANGE,e))}var Me=new Set;function xe(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],n=Ne();e&&(t?Le(e,Me,n):function(e,t,n){t.has(e)||(t.add(e),Te(e)&&be(e),n.lastHidden.push(e))}(e,Me,n)),Ue(n)}function Re(){var e=Ne();Me.forEach((function(t){Le(t,Me,e)})),Ue(e)}function Pe(e){if(it(e))return!Me.has(e)}function Ae(e){if(e){var t,n=null===(t=e.isVisible)||void 0===t||t;(function(e){var t=Object.getOwnPropertyDescriptor(e,"isVisible");return t?t.configurable&&(t.set!==Ve||t.get!==je):Object.isExtensible(e)})(e)&&Object.defineProperty(e,"isVisible",{configurable:!1,enumerable:!0,set:Ve,get:je}),xe(e.annotationUID,n)}}function Ne(){return Object.freeze({lastVisible:[],lastHidden:[],hidden:[]})}function Le(e,t,n){t.delete(e)&&n.lastVisible.push(e)}function Ue(e){(e.lastHidden.length>0||e.lastVisible.length>0)&&(Me.forEach((function(t){e.hidden.push(t)})),(0,J.triggerEvent)(J.eventTarget,Q.ANNOTATION_VISIBILITY_CHANGE,e))}function Ve(e){xe(this.annotationUID,e)}function je(){return Pe(this.annotationUID)}function Be(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=function(e,t){if(e){if("string"==typeof e)return We(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?We(e,t):void 0}}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var r=0,o=function(){};return{s:o,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,i=!0,l=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return i=e.done,e},e:function(e){l=!0,a=e},f:function(){try{i||null==n.return||n.return()}finally{if(l)throw a}}}}function We(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}var Fe=re((function e(t){var n=this;oe(this,e),ae(this,"annotations",void 0),ae(this,"uid",void 0),ae(this,"getGroupKey",(function(e){if("string"==typeof e)return e;var t=e,n=(0,J.getEnabledElement)(t);if(!n)throw new Error("Element not enabled, you must have an enabled element if you are not providing a FrameOfReferenceUID");return n.FrameOfReferenceUID})),ae(this,"_imageVolumeModifiedHandler",(function(e){var t=e.detail.FrameOfReferenceUID,r=n.annotations[t];r&&Object.keys(r).forEach((function(e){r[e].forEach((function(e){void 0!==e.invalidated&&(e.invalidated=!0)}))}))})),ae(this,"getFramesOfReference",(function(){return Object.keys(n.annotations)})),ae(this,"getAnnotations",(function(e,t){var r=n.annotations;return r[e]?t?r[e][t]:r[e]:[]})),ae(this,"getAnnotation",(function(e){var t=n.annotations;for(var r in t){var o=t[r];for(var a in o){var i,l=Be(o[a]);try{for(l.s();!(i=l.n()).done;){var s=i.value;if(e===s.annotationUID)return s}}catch(e){l.e(e)}finally{l.f()}}}})),ae(this,"getNumberOfAnnotations",(function(e,t){var r=n.getAnnotations(e,t);if(!r.length)return 0;if(t)return r.length;var o=0;for(var a in r)o+=r[a].length;return o})),ae(this,"addAnnotation",(function(e,t){var r=e.metadata,o=r.FrameOfReferenceUID,a=r.toolName;t=t||o;var i=n.annotations,l=i[t];l||(i[t]={},l=i[t]);var s=l[a];s||(l[a]=[],s=l[a]),s.push(e),ge(e),Ae(e)})),ae(this,"removeAnnotation",(function(e){var t=n.annotations;for(var r in t){var o=t[r];for(var a in o){var i=o[a],l=i.findIndex((function(t){return t.annotationUID===e}));-1!==l&&(i.splice(l,1),0===i.length&&delete o[a])}0===Object.keys(o).length&&delete t[r]}})),ae(this,"removeAnnotations",(function(e,t){var r=n.annotations;r[e]&&(t?delete r[e][t]:delete r[e])})),ae(this,"saveAnnotations",(function(e,t){var r=n.annotations;if(e&&t){var o=r[e];if(!o)return;var a=o[t];return le()(a)}if(e){var i=r[e];return le()(i)}return le()(r)})),ae(this,"restoreAnnotations",(function(e,t,r){var o=n.annotations;if(t&&r){var a=o[t];a||(o[t]={},a=o[t]),a[r]=e}else t?o[t]=e:n.annotations=le()(e)})),ae(this,"getNumberOfAllAnnotations",(function(){var e=0,t=n.annotations;for(var r in t){var o=t[r];for(var a in o)e+=o[a].length}return e})),ae(this,"removeAllAnnotations",(function(){n.annotations={}})),t||(t=J.utilities.uuidv4()),this.annotations={},this.uid=t,J.eventTarget.addEventListener(J.Enums.Events.IMAGE_VOLUME_MODIFIED,this._imageVolumeModifiedHandler)})),He=new Fe("DEFAULT"),Ge=Fe,qe={},ze={isInteractingWithTool:!1,isMultiPartToolActive:!1,tools:{},toolGroups:[],synchronizers:[],svgNodeCache:qe,enabledElements:[],handleRadius:6},Ke={isInteractingWithTool:!1,isMultiPartToolActive:!1,tools:{},toolGroups:[],synchronizers:[],svgNodeCache:qe,enabledElements:[],handleRadius:6};var Ye=function(e){return e.Active="Active",e.Passive="Passive",e.Enabled="Enabled",e.Disabled="Disabled",e}(Ye||{}),Xe=Ye,Ze=[Xe.Active,Xe.Passive,Xe.Enabled],Je=function(e){return Ke.toolGroups.filter((function(t){for(var n=t.toolOptions,r=Object.keys(n),o=0;o<r.length;o++)if(e===r[o]&&n[e]&&Ze.includes(n[e].mode))return!0;return!1}))},$e=He;function Qe(){return $e}function et(e){$e=e}function tt(){$e=He}function nt(e,t){var n=Qe(),r=n.getGroupKey(t);return n.getAnnotations(r,e)}function rt(e,t){void 0===e.annotationUID&&(e.annotationUID=J.utilities.uuidv4());var n=Qe(),r=n.getGroupKey(t);return n.addAnnotation(e,r),t instanceof HTMLDivElement?function(e,t){var n=(0,J.getEnabledElement)(t),r=n.renderingEngine,o=n.viewportId,a=Q.ANNOTATION_ADDED,i={annotation:e,viewportId:o,renderingEngineId:r.id};(0,J.triggerEvent)(J.eventTarget,a,i)}(e,t):function(e){var t=e.metadata.toolName,n=Je(t);if(n.length){var r=[];if(n.forEach((function(t){t.viewportsInfo.forEach((function(t){var n=t.renderingEngineId,o=t.viewportId,a=(0,J.getEnabledElementByIds)(o,n).FrameOfReferenceUID;e.metadata.FrameOfReferenceUID===a&&r.push(t)}))})),r.length){var o=Q.ANNOTATION_ADDED;r.forEach((function(t){var n=t.renderingEngineId,r=t.viewportId,a={annotation:e,viewportId:r,renderingEngineId:n};(0,J.triggerEvent)(J.eventTarget,o,a)}))}}}(e),e.annotationUID}function ot(e,t){var n=Qe(),r=n.getGroupKey(t);return n.getNumberOfAnnotations(r,e)}function at(e){var t=Qe(),n=t.getAnnotation(e);if(n){t.removeAnnotation(e);var r=Q.ANNOTATION_REMOVED,o={annotation:n,annotationManagerUID:t.uid};(0,J.triggerEvent)(J.eventTarget,r,o)}}function it(e){return Qe().getAnnotation(e)}function lt(){Qe().removeAllAnnotations()}function st(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function ct(e,t){if(e){if("string"==typeof e)return st(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?st(e,t):void 0}}function dt(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,o,a,i,l=[],s=!0,c=!1;try{if(a=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;s=!1}else for(;!(s=(r=a.call(n)).done)&&(l.push(r.value),l.length!==t);s=!0);}catch(e){c=!0,o=e}finally{try{if(!s&&null!=n.return&&(i=n.return(),Object(i)!==i))return}finally{if(c)throw o}}return l}}(e,t)||ct(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 ut,vt=[[0,0,0,0],[221,84,84,255],[77,228,121,255],[166,70,235,255],[189,180,116,255],[109,182,196,255],[204,101,157,255],[123,211,94,255],[93,87,218,255],[225,128,80,255],[73,232,172,255],[181,119,186,255],[176,193,112,255],[105,153,200,255],[208,97,120,255],[90,215,101,255],[135,83,222,255],[229,178,76,255],[122,183,181,255],[190,115,171,255],[149,197,108,255],[100,118,205,255],[212,108,93,255],[86,219,141,255],[183,79,226,255],[233,233,72,255],[118,167,187,255],[194,111,146,255],[116,201,104,255],[115,96,209,255],[216,147,89,255],[82,223,188,255],[230,75,224,255],[163,184,121,255],[114,143,191,255],[198,107,114,255],[99,206,122,255],[153,92,213,255],[220,192,85,255],[78,215,227,255],[234,71,173,255],[141,188,117,255],[110,113,195,255],[202,128,103,255],[95,210,157,255],[195,88,217,255],[206,224,81,255],[74,166,231,255],[185,120,139,255],[113,192,113,255],[133,106,199,255],[207,162,98,255],[91,214,198,255],[221,84,198,255],[159,228,77,255],[70,111,235,255],[189,119,116,255],[109,196,138,255],[165,101,204,255],[211,201,94,255],[87,191,218,255],[225,80,153,255],[106,232,73,255],[124,119,186,255],[193,142,112,255],[105,200,168,255],[203,97,208,255],[184,215,90,255],[83,147,222,255],[229,76,101,255],[122,183,130,255],[146,115,190,255],[197,171,108,255],[100,205,205,255],[212,93,177,255],[141,219,86,255],[79,97,226,255],[233,99,72,255],[118,187,150,255],[173,111,194,255],[197,201,104,255],[96,171,209,255],[216,89,137,255],[94,223,82,255],[107,75,230,255],[184,153,121,255],[114,191,175,255],[198,107,191,255],[166,206,99,255],[92,132,213,255],[220,85,91,255],[78,227,115,255],[159,71,234,255],[188,176,117,255],[110,185,195,255],[202,103,161,255],[129,210,95,255],[88,88,217,255],[224,123,81,255],[74,231,166,255],[177,120,185,255],[179,192,113,255],[106,156,199,255],[207,98,125,255],[91,214,96,255],[130,84,221,255],[228,171,77,255],[70,235,221,255],[189,116,174,255],[153,196,109,255],[101,123,204,255],[211,104,94,255],[87,218,136,255],[177,80,225,255],[232,225,73,255],[119,169,186,255],[193,112,149,255],[121,200,105,255],[111,97,208,255],[215,142,90,255],[83,222,181,255],[229,76,229,255],[165,183,122,255],[115,146,190,255],[197,108,119,255],[100,205,118,255],[148,93,212,255],[219,186,86,255],[79,220,226,255],[233,72,179,255],[144,187,118,255],[111,118,194,255],[201,124,104,255],[96,209,153,255],[189,89,216,255],[211,223,82,255],[75,172,230,255],[184,121,142,255],[117,191,114,255],[130,107,198,255],[206,157,99,255],[92,213,193,255],[220,85,203,255],[165,227,78,255],[71,118,234,255],[188,117,117,255],[110,195,135,255],[161,103,202,255],[210,195,95,255],[88,195,217,255],[224,81,158,255],[113,231,74,255],[123,120,185,255],[192,139,113,255],[106,199,164,255],[198,98,207,255],[188,214,91,255],[84,153,221,255],[228,77,108,255],[70,235,84,255],[143,116,189,255],[196,167,109,255],[101,204,199,255],[211,94,182,255],[147,218,87,255],[80,104,225,255],[232,93,73,255],[119,186,147,255],[170,112,193,255],[200,200,105,255],[97,175,208,255],[215,90,142,255],[100,222,83,255],[101,76,229,255],[183,150,122,255],[115,190,171,255],[197,108,194,255],[170,205,100,255],[93,138,212,255],[219,86,97,255],[79,226,110,255],[153,72,233,255],[187,173,118,255],[111,187,194,255],[201,104,165,255],[134,209,96,255],[89,95,216,255],[223,117,82,255],[75,230,159,255],[174,121,184,255],[182,191,114,255],[107,160,198,255],[206,99,130,255],[92,213,92,255],[124,85,220,255],[227,165,78,255],[71,234,214,255],[188,117,176,255],[156,195,110,255],[103,128,202,255],[210,100,95,255],[88,217,131,255],[170,81,224,255],[231,218,74,255],[120,172,185,255],[192,113,153,255],[125,199,106,255],[107,98,207,255],[214,137,91,255],[84,221,175,255],[222,77,228,255],[194,235,70,255],[116,149,189,255],[196,109,123,255],[101,204,114,255],[143,94,211,255],[218,180,87,255],[80,225,225,255],[232,73,186,255],[147,186,119,255],[112,122,193,255],[200,121,105,255],[97,208,148,255],[184,90,215,255],[216,222,83,255],[76,178,229,255],[183,122,145,255],[121,190,115,255],[126,108,197,255],[205,153,100,255],[93,212,187,255],[219,86,208,255],[171,226,79,255],[72,126,233,255],[187,118,121,255],[111,194,132,255],[157,104,201,255],[209,190,96,255],[89,200,216,255],[223,82,164,255],[120,230,75,255],[121,121,184,255],[191,136,114,255],[107,198,160,255],[192,99,206,255],[193,213,92,255],[85,158,220,255],[227,78,115,255],[71,234,78,255],[141,117,188,255],[195,163,110,255],[103,202,194,255],[210,95,186,255],[153,217,88,255],[81,111,224,255]],ft=function(e){return e.Labelmap="LABELMAP",e.Contour="CONTOUR",e.Surface="SURFACE",e}(ft||{}),gt=ft,ht={renderOutline:!0,outlineWidthActive:2,outlineWidthInactive:2,outlineOpacity:1,outlineOpacityInactive:.85,renderFill:!0,fillAlpha:1,fillAlphaInactive:0},pt={renderOutline:!0,outlineWidthActive:3,outlineWidthInactive:2,renderFill:!0,renderFillInactive:!0,fillAlpha:.7,fillAlphaInactive:.65,outlineOpacity:1,outlineOpacityInactive:.85},mt=function(){return pt};function wt(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function Et(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?wt(Object(n),!0).forEach((function(t){ae(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):wt(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}var yt=mt(),It=ht,bt={colorLUT:[],segmentations:[],globalConfig:{renderInactiveSegmentations:!0,representations:(ut={},ae(ut,gt.Labelmap,yt),ae(ut,gt.Contour,It),ut)},toolGroups:{}},Ct=new(function(){function e(t){oe(this,e),ae(this,"state",void 0),ae(this,"uid",void 0),t||(t=J.utilities.uuidv4()),this.state=le()(bt),this.uid=t}return re(e,[{key:"getState",value:function(){return this.state}},{key:"getToolGroups",value:function(){return Object.keys(this.state.toolGroups)}},{key:"getColorLUT",value:function(e){return this.state.colorLUT[e]}},{key:"resetState",value:function(){this.state=le()(bt)}},{key:"getSegmentation",value:function(e){return this.state.segmentations.find((function(t){return t.segmentationId===e}))}},{key:"addSegmentation",value:function(e){if(this._initDefaultColorLUTIfNecessary(),this.getSegmentation(e.segmentationId))throw new Error("Segmentation with id ".concat(e.segmentationId," already exists"));this.state.segmentations.push(e)}},{key:"getSegmentationRepresentations",value:function(e){var t=this.state.toolGroups[e];if(t)return t.segmentationRepresentations}},{key:"getAllSegmentationRepresentations",value:function(){var e={};return Object.entries(this.state.toolGroups).forEach((function(t){var n=dt(t,2),r=n[0],o=n[1];e[r]=o.segmentationRepresentations})),e}},{key:"addSegmentationRepresentation",value:function(e,t){this.state.toolGroups[e]||(this.state.toolGroups[e]={segmentationRepresentations:[],config:{}}),this.state.toolGroups[e].segmentationRepresentations.push(t),this._handleActiveSegmentation(e,t)}},{key:"getGlobalConfig",value:function(){return this.state.globalConfig}},{key:"setGlobalConfig",value:function(e){this.state.globalConfig=e}},{key:"getSegmentationRepresentationByUID",value:function(e,t){return this.getSegmentationRepresentations(e).find((function(e){return e.segmentationRepresentationUID===t}))}},{key:"removeSegmentation",value:function(e){this.state.segmentations=this.state.segmentations.filter((function(t){return t.segmentationId!==e}))}},{key:"removeSegmentationRepresentation",value:function(e,t){var n=this.getSegmentationRepresentations(e);if(!n||!n.length)throw new Error("No viewport specific segmentation state found for viewport ".concat(e));var r=n.findIndex((function(e){return e.segmentationRepresentationUID===t}));-1===r&&console.warn("No viewport specific segmentation state data found for viewport ".concat(e," and segmentation data UID ").concat(t));var o=n[r];n.splice(r,1),this._handleActiveSegmentation(e,o)}},{key:"setActiveSegmentationRepresentation",value:function(e,t){var n=this.getSegmentationRepresentations(e);if(!n||!n.length)throw new Error("No segmentation data found for toolGroupId: ".concat(e));var r=n.find((function(e){return e.segmentationRepresentationUID===t}));if(!r)throw new Error("No segmentation data found for segmentation data UID ".concat(t));r.active=!0,this._handleActiveSegmentation(e,r)}},{key:"getToolGroupSpecificConfig",value:function(e){var t=this.state.toolGroups[e];if(t)return t.config}},{key:"getSegmentationRepresentationSpecificConfig",value:function(e,t){var n=this.getSegmentationRepresentationByUID(e,t);if(n)return n.segmentationRepresentationSpecificConfig}},{key:"setSegmentationRepresentationSpecificConfig",value:function(e,t,n){var r=this.getSegmentationRepresentationByUID(e,t);r&&(r.segmentationRepresentationSpecificConfig=n)}},{key:"getSegmentSpecificConfig",value:function(e,t,n){var r=this.getSegmentationRepresentationByUID(e,t);if(r)return r.segmentSpecificConfig[n]}},{key:"setSegmentSpecificConfig",value:function(e,t,n){var r=this.getSegmentationRepresentationByUID(e,t);r&&(r.segmentSpecificConfig=n)}},{key:"setSegmentationRepresentationConfig",value:function(e,t){var n=this.state.toolGroups[e];n||(this.state.toolGroups[e]={segmentationRepresentations:[],config:{renderInactiveSegmentations:!0,representations:{}}},n=this.state.toolGroups[e]),n.config=Et(Et({},n.config),t)}},{key:"addColorLUT",value:function(e,t){this.state.colorLUT[t]&&console.log("Color LUT table already exists, overwriting"),this.state.colorLUT[t]=e}},{key:"removeColorLUT",value:function(e){delete this.state.colorLUT[e]}},{key:"_handleActiveSegmentation",value:function(e,t){var n=this.getSegmentationRepresentations(e);0!==n.length&&(1!==n.length&&0!==n.filter((function(e){return e.active})).length?t.active&&n.forEach((function(e){e.segmentationRepresentationUID!==t.segmentationRepresentationUID&&(e.active=!1)})):n[0].active=!0)}},{key:"_initDefaultColorLUTIfNecessary",value:function(){0!==this.state.colorLUT.length&&this.state.colorLUT[0]||this.addColorLUT(vt,0)}}]),e}())("DEFAULT");function _t(e){var t={segmentationId:e};(0,J.triggerEvent)(J.eventTarget,Q.SEGMENTATION_REMOVED,t)}function Tt(e,t){var n={toolGroupId:e,segmentationRepresentationUID:t};(0,J.triggerEvent)(J.eventTarget,Q.SEGMENTATION_REPRESENTATION_REMOVED,n)}function Ot(e,t){var n={toolGroupId:e,segmentationRepresentationUID:t};t?(0,J.triggerEvent)(J.eventTarget,Q.SEGMENTATION_REPRESENTATION_MODIFIED,n):(Lt(e)||[]).forEach((function(t){var n=t.segmentationRepresentationUID,r={toolGroupId:e,segmentationRepresentationUID:n};(0,J.triggerEvent)(J.eventTarget,Q.SEGMENTATION_REPRESENTATION_MODIFIED,r)}))}function Dt(e){(e?[e]:At().map((function(e){return e.segmentationId}))).forEach((function(e){var t={segmentationId:e};(0,J.triggerEvent)(J.eventTarget,Q.SEGMENTATION_MODIFIED,t)}))}function St(e,t){var n={segmentationId:e,modifiedSlicesToUse:t};(0,J.triggerEvent)(J.eventTarget,Q.SEGMENTATION_DATA_MODIFIED,n)}function kt(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function Mt(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?kt(Object(n),!0).forEach((function(t){ae(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):kt(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}var xt=function(e){var t=e.segmentationId,n=e.representation;return{segmentationId:t,cachedStats:{},segmentLabels:{},label:null,segmentsLocked:new Set,type:n.type,activeSegmentIndex:1,representationData:ae({},n.type,Mt({},n.data))}};function Rt(){return Ct}function Pt(e){return Rt().getSegmentation(e)}function At(){return Rt().getState().segmentations}function Nt(e,t){var n=Rt(),r=xt(e);n.addSegmentation(r),t||Dt(r.segmentationId)}function Lt(e){return Rt().getSegmentationRepresentations(e)}function Ut(){return Rt().getAllSegmentationRepresentations()}function Vt(e){if(!e)throw new Error("getToolGroupIdsWithSegmentation: segmentationId is empty");var t=Rt(),n=t.getState(),r=Object.keys(n.toolGroups),o=[];return r.forEach((function(n){t.getSegmentationRepresentations(n).forEach((function(t){t.segmentationId===e&&o.push(n)}))})),o}function jt(e){return Rt().getToolGroupSpecificConfig(e)}function Bt(e,t,n){Rt().setSegmentationRepresentationConfig(e,t),n||Ot(e)}function Wt(e,t,n){var r=arguments.length>3&&void 0!==arguments[3]&&arguments[3];Rt().setSegmentationRepresentationSpecificConfig(e,t,n),r||Ot(e,t)}function Ft(e,t){return Rt().getSegmentationRepresentationSpecificConfig(e,t)}function Ht(e,t,n){return Rt().getSegmentSpecificConfig(e,t,n)}function Gt(e,t,n){var r=arguments.length>3&&void 0!==arguments[3]&&arguments[3];Rt().setSegmentSpecificConfig(e,t,n),r||Ot(e,t)}function qt(e,t,n){Rt().addSegmentationRepresentation(e,t),n||Ot(e,t.segmentationRepresentationUID)}function zt(){return Rt().getGlobalConfig()}function Kt(e,t){Rt().setGlobalConfig(e),t||Dt()}function Yt(e,t){return Rt().getSegmentationRepresentationByUID(e,t)}function Xt(e){Rt().removeSegmentation(e),_t(e)}function Zt(e,t){Rt().removeSegmentationRepresentation(e,t),Tt(e,t)}function Jt(e){Rt().removeColorLUT(e)}function $t(e){return Rt().getColorLUT(e)}function Qt(e,t){Rt().addColorLUT(e,t)}function en(e,t){var n=t||e.currentTarget,r=(0,J.getEnabledElement)(n).viewport,o=function(e){return[e.clientX,e.clientY]}(e),a=function(e){return[e.pageX,e.pageY]}(e),i=function(e,t){var n=e.getBoundingClientRect();return[t[0]-n.left-window.pageXOffset,t[1]-n.top-window.pageYOffset]}(n,a);return{page:a,client:o,canvas:i,world:r.canvasToWorld(i)}}var tn=function(e){var t=e.currentTarget,n=(0,J.getEnabledElement)(t),r=n.viewportId,o=n.renderingEngineId,a=en(e,t),i={event:e,eventName:Q.MOUSE_DOUBLE_CLICK,viewportId:r,renderingEngineId:o,camera:{},element:t,startPoints:a,lastPoints:a,currentPoints:a,deltaPoints:{page:[0,0],client:[0,0],canvas:[0,0],world:[0,0,0]}};!(0,J.triggerEvent)(t,Q.MOUSE_DOUBLE_CLICK,i)&&(e.stopImmediatePropagation(),e.preventDefault())},nn=Q.MOUSE_MOVE,rn=function(e){var t=e.currentTarget,n=(0,J.getEnabledElement)(t),r={renderingEngineId:n.renderingEngineId,viewportId:n.viewportId,camera:{},element:t,currentPoints:en(e),eventName:nn,event:e};!(0,J.triggerEvent)(t,nn,r)&&(e.stopImmediatePropagation(),e.preventDefault())},on=Q.MOUSE_DOWN,an=Q.MOUSE_DOWN_ACTIVATE,ln=Q.MOUSE_CLICK,sn=Q.MOUSE_UP,cn=Q.MOUSE_DRAG,dn=3,un={mouseButton:void 0,element:null,renderingEngineId:void 0,viewportId:void 0,isClickEvent:!0,clickDelay:200,preventClickTimeout:null,startPoints:{page:[0,0],client:[0,0],canvas:[0,0],world:[0,0,0]},lastPoints:{page:[0,0],client:[0,0],canvas:[0,0],world:[0,0,0]}},vn={mouseButton:void 0,renderingEngineId:void 0,viewportId:void 0,isClickEvent:!0,clickDelay:200,element:null,preventClickTimeout:null,startPoints:{page:[0,0],client:[0,0],canvas:[0,0],world:[0,0,0]},lastPoints:{page:[0,0],client:[0,0],canvas:[0,0],world:[0,0,0]}},fn={doubleClickTimeout:null,mouseDownEvent:null,mouseUpEvent:null,ignoreDoubleClick:!1};function gn(e){var t=en(e,vn.element),n=Cn(vn.element,vn.lastPoints),r=_n(t,n);if(fn.doubleClickTimeout){if(!mn(r.canvas))return;En()}var o={event:e,eventName:cn,mouseButton:vn.mouseButton,renderingEngineId:vn.renderingEngineId,viewportId:vn.viewportId,camera:{},element:vn.element,startPoints:bn(vn.startPoints),lastPoints:bn(n),currentPoints:t,deltaPoints:r};!(0,J.triggerEvent)(vn.element,cn,o)&&(e.stopImmediatePropagation(),e.preventDefault()),vn.lastPoints=bn(t)}function hn(e){if(clearTimeout(vn.preventClickTimeout),fn.doubleClickTimeout)fn.mouseUpEvent?In():(fn.mouseUpEvent=e,vn.element.addEventListener("mousemove",pn));else{var t=vn.isClickEvent?ln:sn,n=en(e,vn.element),r=_n(n,vn.lastPoints),o={event:e,eventName:t,mouseButton:vn.mouseButton,element:vn.element,renderingEngineId:vn.renderingEngineId,viewportId:vn.viewportId,camera:{},startPoints:bn(vn.startPoints),lastPoints:bn(vn.lastPoints),currentPoints:n,deltaPoints:r};(0,J.triggerEvent)(o.element,t,o),In()}document.removeEventListener("mousemove",gn)}function pn(e){mn(_n(en(e,vn.element),Cn(vn.element,vn.lastPoints)).canvas)&&(En(),rn(e))}function mn(e){return Math.abs(e[0])+Math.abs(e[1])>dn}function wn(){vn.isClickEvent=!1}function En(){fn.ignoreDoubleClick=!0;var e,t,n,r=fn.mouseDownEvent,o=fn.mouseUpEvent;yn(),e=r,t=_n(vn.startPoints,vn.startPoints),n={event:e,eventName:on,element:vn.element,mouseButton:vn.mouseButton,renderingEngineId:vn.renderingEngineId,viewportId:vn.viewportId,camera:{},startPoints:vn.startPoints,lastPoints:vn.startPoints,currentPoints:vn.startPoints,deltaPoints:t},vn.lastPoints=bn(n.lastPoints),(0,J.triggerEvent)(n.element,on,n)&&(0,J.triggerEvent)(n.element,an,n),o&&hn(o)}function yn(){fn.doubleClickTimeout&&(clearTimeout(fn.doubleClickTimeout),fn.doubleClickTimeout=null),fn.mouseDownEvent=null,fn.mouseUpEvent=null}function In(){var e,t;document.removeEventListener("mouseup",hn),null===(e=vn.element)||void 0===e||e.removeEventListener("mousemove",pn),null===(t=vn.element)||void 0===t||t.addEventListener("mousemove",rn),yn(),vn=JSON.parse(JSON.stringify(un))}function bn(e){return JSON.parse(JSON.stringify(e))}function Cn(e,t){var n=(0,J.getEnabledElement)(e).viewport.canvasToWorld(t.canvas);return{page:t.page,client:t.client,canvas:t.canvas,world:n}}function _n(e,t){return{page:Tn(e.page,t.page),client:Tn(e.client,t.client),canvas:Tn(e.canvas,t.canvas),world:(n=e.world,r=t.world,[n[0]-r[0],n[1]-r[1],n[2]-r[2]])};var n,r}function Tn(e,t){return[e[0]-t[0],e[1]-t[1]]}function On(e){fn.ignoreDoubleClick?(fn.ignoreDoubleClick=!1,e.stopImmediatePropagation(),e.preventDefault()):In()}var Dn=function(e){if(fn.doubleClickTimeout){if(e.buttons===fn.mouseDownEvent.buttons)return;return fn.mouseDownEvent=e,void En()}fn.doubleClickTimeout=setTimeout(En,1===e.buttons?400:150),fn.mouseDownEvent=e,fn.ignoreDoubleClick=!1,vn.element=e.currentTarget,vn.mouseButton=e.buttons;var t=(0,J.getEnabledElement)(vn.element),n=t.renderingEngineId,r=t.viewportId;vn.renderingEngineId=n,vn.viewportId=r,vn.preventClickTimeout=setTimeout(wn,vn.clickDelay),vn.element.removeEventListener("mousemove",rn);var o=en(e,vn.element);vn.startPoints=bn(o),vn.lastPoints=bn(o),document.addEventListener("mouseup",hn),document.addEventListener("mousemove",gn)};function Sn(e){e.removeEventListener("dblclick",tn),e.removeEventListener("mousedown",Dn),e.removeEventListener("mousemove",rn),e.removeEventListener("dblclick",On,{capture:!0})}var kn={enable:function(e){Sn(e),e.addEventListener("dblclick",tn),e.addEventListener("mousedown",Dn),e.addEventListener("mousemove",rn),e.addEventListener("dblclick",On,{capture:!0})},disable:Sn},Mn=function(e){var t=e.currentTarget,n=(0,J.getEnabledElement)(t),r=n.renderingEngineId,o=n.viewportId;if(!(e.deltaY>-1&&e.deltaY<1)){e.preventDefault();var a=function(e){var t=0,n=0,r=0,o=0;return"detail"in e&&(n=e.detail),"wheelDelta"in e&&(n=-e.wheelDelta/120),"wheelDeltaY"in e&&(n=-e.wheelDeltaY/120),"wheelDeltaX"in e&&(t=-e.wheelDeltaX/120),r=10*t,o=10*n,"deltaY"in e&&(o=e.deltaY),"deltaX"in e&&(r=e.deltaX),(r||o)&&e.deltaMode&&(1===e.deltaMode?(r*=40,o*=40):(r*=800,o*=800)),r&&!t&&(t=r<1?-1:1),o&&!n&&(n=o<1?-1:1),{spinX:t,spinY:n,pixelX:r,pixelY:o}}(e),i=a.spinX,l=a.spinY,s=a.pixelX,c=a.pixelY,d=l<0?-1:1,u={event:e,eventName:Q.MOUSE_WHEEL,renderingEngineId:r,viewportId:o,element:t,camera:{},detail:e,wheel:{spinX:i,spinY:l,pixelX:s,pixelY:c,direction:d},points:en(e)};(0,J.triggerEvent)(t,Q.MOUSE_WHEEL,u)}};function xn(e){e.removeEventListener("wheel",Mn)}var Rn,Pn,An={enable:function(e){xn(e),e.addEventListener("wheel",Mn,{passive:!1})},disable:xn},Nn={mouse:0,touch:1};function Ln(e,t){var n=Date.now();if(e!==Rn){if(n-Pn<=2e3)return t.preventDefault(),t.stopPropagation(),t.stopImmediatePropagation(),!1;Rn=e}Pn=n}var Un=Ln.bind(null,Nn.mouse),Vn=Ln.bind(null,Nn.touch);function jn(e,t,n){var r=n?Un:Vn;t.forEach((function(t){e.addEventListener(t,r,{passive:!1})}))}function Bn(e,t,n){var r=n?Un:Vn;t.forEach((function(t){e.removeEventListener(t,r)}))}var Wn=["mousedown","mouseup","mousemove"],Fn=["touchstart","touchend"];function Hn(e){Bn(e,Wn,Nn.mouse),Bn(e,Fn,Nn.touch)}var Gn={enable:function(e){Hn(e),jn(e,Wn,Nn.mouse),jn(e,Fn,Nn.touch)},disable:Hn},qn=function(e){return e.UP="UP",e.DOWN="DOWN",e.LEFT="LEFT",e.RIGHT="RIGHT",e}(qn||{});function zn(e,t){var n=t||e.currentTarget,r="touchend"===e.type?e.changedTouches:e.touches;return Object.keys(r).map((function(e){var t=function(e){return[e.clientX,e.clientY]}(r[e]),o=function(e){return[e.pageX,e.pageY]}(r[e]),a=function(e,t){var n=e.getBoundingClientRect();return[t[0]-n.left-window.pageXOffset,t[1]-n.top-window.pageYOffset]}(n,o);return{page:o,client:t,canvas:a,world:(0,J.getEnabledElement)(n).viewport.canvasToWorld(a),touch:{identifier:e,radiusX:r[e].radiusX,radiusY:r[e].radiusY,force:r[e].force,rotationAngle:r[e].rotationAngle}}}))}function Kn(e,t){var n,r,o=Qn(e),a=Qn(t);return{page:tr(o.page,a.page),client:tr(o.client,a.client),canvas:tr(o.canvas,a.canvas),world:(n=o.world,r=a.world,[n[0]-r[0],n[1]-r[1],n[2]-r[2]])}}function Yn(e,t){var n=Qn(e),r=Qn(t);return{page:rr(n.page,r.page),client:rr(n.client,r.client),canvas:rr(n.canvas,r.canvas),world:or(n.world,r.world)}}function Xn(e,t){}function Zn(e,t){var n=nr(e),r=nr(t);return{page:n.page-r.page,client:n.client-r.client,canvas:n.canvas-r.canvas,world:n.world-r.world}}function Jn(e){return JSON.parse(JSON.stringify(e))}function $n(e){return JSON.parse(JSON.stringify(e))}function Qn(e){return e.reduce((function(t,n){return{page:[t.page[0]+n.page[0]/e.length,t.page[1]+n.page[1]/e.length],client:[t.client[0]+n.client[0]/e.length,t.client[1]+n.client[1]/e.length],canvas:[t.canvas[0]+n.canvas[0]/e.length,t.canvas[1]+n.canvas[1]/e.length],world:[t.world[0]+n.world[0]/e.length,t.world[1]+n.world[1]/e.length,t.world[2]+n.world[2]/e.length]}}),{page:[0,0],client:[0,0],canvas:[0,0],world:[0,0,0]})}function er(e){return e.reduce((function(t,n){return{page:[t.page[0]+n.page[0]/e.length,t.page[1]+n.page[1]/e.length],client:[t.client[0]+n.client[0]/e.length,t.client[1]+n.client[1]/e.length],canvas:[t.canvas[0]+n.canvas[0]/e.length,t.canvas[1]+n.canvas[1]/e.length],world:[t.world[0]+n.world[0]/e.length,t.world[1]+n.world[1]/e.length,t.world[2]+n.world[2]/e.length],touch:{identifier:null,radiusX:t.touch.radiusX+n.touch.radiusX/e.length,radiusY:t.touch.radiusY+n.touch.radiusY/e.length,force:t.touch.force+n.touch.force/e.length,rotationAngle:t.touch.rotationAngle+n.touch.rotationAngle/e.length}}}),{page:[0,0],client:[0,0],canvas:[0,0],world:[0,0,0],touch:{identifier:null,radiusX:0,radiusY:0,force:0,rotationAngle:0}})}function tr(e,t){return[e[0]-t[0],e[1]-t[1]]}function nr(e){for(var t=[],n=0;n<e.length;n++)for(var r=0;r<e.length;r++)n<r&&t.push({page:rr(e[n].page,e[r].page),client:rr(e[n].client,e[r].client),canvas:rr(e[n].canvas,e[r].canvas),world:or(e[n].world,e[r].world)});return t.reduce((function(e,n){return{page:e.page+n.page/t.length,client:e.client+n.client/t.length,canvas:e.canvas+n.canvas/t.length,world:e.world+n.world/t.length}}),{page:0,client:0,canvas:0,world:0})}function rr(e,t){return Math.sqrt(Math.pow(e[0]-t[0],2)+Math.pow(e[1]-t[1],2))}function or(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))}function ar(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function ir(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?ar(Object(n),!0).forEach((function(t){ae(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):ar(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}J.Settings.getRuntimeSettings();var lr=Q.TOUCH_START,sr=Q.TOUCH_START_ACTIVATE,cr=Q.TOUCH_PRESS,dr=Q.TOUCH_DRAG,ur=Q.TOUCH_END,vr=Q.TOUCH_TAP,fr=Q.TOUCH_SWIPE,gr={page:[0,0],client:[0,0],canvas:[0,0],world:[0,0,0]},hr={page:0,client:0,canvas:0,world:0},pr={renderingEngineId:void 0,viewportId:void 0,element:null,startPointsList:[ir(ir({},gr),{},{touch:null})],lastPointsList:[ir(ir({},gr),{},{touch:null})],isTouchStart:!1,startTime:null,pressTimeout:null,pressDelay:700,pressMaxDistance:5,accumulatedDistance:hr,swipeDistanceThreshold:48,swiped:!1,swipeToleranceMs:300},mr={renderingEngineId:void 0,viewportId:void 0,element:null,startPointsList:[ir(ir({},gr),{},{touch:null})],taps:0,tapTimeout:null,tapMaxDistance:24,tapToleranceMs:300},wr=JSON.parse(JSON.stringify(pr)),Er=JSON.parse(JSON.stringify(mr));function yr(e,t,n){return(0,J.triggerEvent)(e,t,n)}function Ir(e){var t=zn(e,wr.element),n=Cr(wr.element,wr.lastPointsList),r=t.length===n.length?Kn(t,n):gr,o=t.length===n.length?Zn(t,n):hr,a=t.length===n.length?Yn(t,wr.lastPointsList):hr;wr.accumulatedDistance={page:wr.accumulatedDistance.page+a.page,client:wr.accumulatedDistance.client+a.client,canvas:wr.accumulatedDistance.canvas+a.canvas,world:wr.accumulatedDistance.world+a.world};var i={event:e,eventName:dr,renderingEngineId:wr.renderingEngineId,viewportId:wr.viewportId,camera:{},element:wr.element,startPoints:er(wr.startPointsList),lastPoints:er(n),currentPoints:er(t),startPointsList:Jn(wr.startPointsList),lastPointsList:Jn(n),currentPointsList:t,deltaPoints:r,deltaDistance:o};yr(wr.element,dr,i),function(e,t){var n=(new Date).getTime(),r=wr.startTime.getTime();if(!(wr.swiped||n-r>wr.swipeToleranceMs)){var o=dt(t.canvas,2),a=o[0],i=o[1],l={event:e,eventName:fr,renderingEngineId:wr.renderingEngineId,viewportId:wr.viewportId,camera:{},element:wr.element,swipe:null};Math.abs(a)>wr.swipeDistanceThreshold&&(l.swipe=a>0?qn.RIGHT:qn.LEFT,yr(l.element,fr,l),wr.swiped=!0),Math.abs(i)>wr.swipeDistanceThreshold&&(l.swipe=i>0?qn.DOWN:qn.UP,yr(l.element,fr,l),wr.swiped=!0)}}(e,r),wr.lastPointsList=Jn(t)}function br(e){clearTimeout(wr.pressTimeout);var t=zn(e,wr.element),n=Cr(wr.element,wr.lastPointsList),r=t.length===n.length?Kn(t,n):Kn(t,t),o=t.length===n.length?Zn(t,n):Zn(t,t),a={event:e,eventName:ur,element:wr.element,renderingEngineId:wr.renderingEngineId,viewportId:wr.viewportId,camera:{},startPointsList:Jn(wr.startPointsList),lastPointsList:Jn(n),currentPointsList:t,startPoints:er(wr.startPointsList),lastPoints:er(n),currentPoints:er(t),deltaPoints:r,deltaDistance:o};yr(a.element,ur,a),function(e){if(!((new Date).getTime()-wr.startTime.getTime()>Er.tapToleranceMs||(0===Er.taps&&(Er.element=wr.element,Er.renderingEngineId=wr.renderingEngineId,Er.viewportId=wr.viewportId,Er.startPointsList=wr.startPointsList),Er.taps>0&&(Er.element!=wr.element||Er.renderingEngineId!=wr.renderingEngineId||Er.viewportId!=wr.viewportId)))){var t=zn(e,Er.element);Yn(t,Er.startPointsList).canvas>Er.tapMaxDistance||(clearTimeout(Er.tapTimeout),Er.taps+=1,Er.tapTimeout=setTimeout((function(){var n={event:e,eventName:vr,element:Er.element,renderingEngineId:Er.renderingEngineId,viewportId:Er.viewportId,camera:{},currentPointsList:t,currentPoints:er(t),taps:Er.taps};yr(n.element,vr,n),Er=JSON.parse(JSON.stringify(mr))}),Er.tapToleranceMs))}}(e),wr=JSON.parse(JSON.stringify(pr)),document.removeEventListener("touchmove",Ir),document.removeEventListener("touchend",br)}function Cr(e,t){var n=(0,J.getEnabledElement)(e).viewport;return t.map((function(e){var t=n.canvasToWorld(e.canvas);return{page:e.page,client:e.client,canvas:e.canvas,world:t,touch:e.touch}}))}var _r=function(e){wr.element=e.currentTarget;var t=(0,J.getEnabledElement)(wr.element),n=t.renderingEngineId,r=t.viewportId;wr.renderingEngineId=n,wr.viewportId=r,wr.isTouchStart||(clearTimeout(wr.pressTimeout),wr.pressTimeout=setTimeout((function(){return function(e){if(!(wr.accumulatedDistance.canvas>wr.pressMaxDistance)){var t={event:e,eventName:cr,renderingEngineId:wr.renderingEngineId,viewportId:wr.viewportId,camera:{},element:wr.element,startPointsList:Jn(wr.startPointsList),lastPointsList:Jn(wr.lastPointsList),startPoints:$n(er(wr.startPointsList)),lastPoints:$n(er(wr.lastPointsList))};yr(t.element,cr,t)}}(e)}),wr.pressDelay),function(e){wr.isTouchStart=!0,wr.startTime=new Date;var t=zn(e,wr.element),n=er(t),r=gr,o=hr,a={event:e,eventName:lr,element:wr.element,renderingEngineId:wr.renderingEngineId,viewportId:wr.viewportId,camera:{},startPointsList:t,lastPointsList:t,currentPointsList:t,startPoints:n,lastPoints:n,currentPoints:n,deltaPoints:r,deltaDistance:o};wr.startPointsList=Jn(a.startPointsList),wr.lastPointsList=Jn(a.lastPointsList),yr(a.element,lr,a)&&yr(a.element,sr,a)}(e),document.addEventListener("touchmove",Ir),document.addEventListener("touchend",br))};function Tr(e){Gn.disable(e),e.removeEventListener("touchstart",_r)}var Or={enable:function(e){Tr(e),Gn.enable(e),e.addEventListener("touchstart",_r,{passive:!1})},disable:Tr},Dr={renderingEngineId:void 0,viewportId:void 0,key:void 0,keyCode:void 0,element:null},Sr={renderingEngineId:void 0,viewportId:void 0,key:void 0,keyCode:void 0,element:null};function kr(e){Sr.element=e.currentTarget;var t=(0,J.getEnabledElement)(Sr.element),n=t.renderingEngineId,r=t.viewportId;Sr.renderingEngineId=n,Sr.viewportId=r,Sr.key=e.key,Sr.keyCode=e.keyCode,e.preventDefault();var o={renderingEngineId:Sr.renderingEngineId,viewportId:Sr.viewportId,element:Sr.element,key:Sr.key,keyCode:Sr.keyCode};(0,J.triggerEvent)(o.element,Q.KEY_DOWN,o),document.addEventListener("keyup",xr),document.addEventListener("visibilitychange",Mr),Sr.element.removeEventListener("keydown",kr)}function Mr(){document.removeEventListener("visibilitychange",Mr),"hidden"===document.visibilityState&&Rr()}function xr(e){var t={renderingEngineId:Sr.renderingEngineId,viewportId:Sr.viewportId,element:Sr.element,key:Sr.key,keyCode:Sr.keyCode};document.removeEventListener("keyup",xr),document.removeEventListener("visibilitychange",Mr),Sr.element.addEventListener("keydown",kr),Sr=le()(Dr),(0,J.triggerEvent)(t.element,Q.KEY_UP,t)}function Rr(){Sr.keyCode=void 0}var Pr=kr;function Ar(e){e.removeEventListener("keydown",Pr)}var Nr={enable:function(e){Ar(e),e.addEventListener("keydown",Pr)},disable:Ar,getModifierKey:function(){return Sr.keyCode}};function Lr(e){return function(e){if(Array.isArray(e))return st(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||ct(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function Ur(e,t){if(Ke.svgNodeCache[e])return Ke.svgNodeCache[e][t]?Ke.svgNodeCache[e][t].domRef:void 0}function Vr(e,t,n,r){if(!Ke.svgNodeCache[t])return null;Ke.svgNodeCache[t][r]={touched:!0,domRef:n},e.appendChild(n)}function jr(e,t){Ke.svgNodeCache[e]&&Ke.svgNodeCache[e][t]&&(Ke.svgNodeCache[e][t].touched=!0)}function Br(e,t){Ke.svgNodeCache[t]&&Object.keys(Ke.svgNodeCache[t]).forEach((function(n){var r=Ke.svgNodeCache[t][n];!r.touched&&r.domRef&&(e.removeChild(r.domRef),delete Ke.svgNodeCache[t][n])}))}var Wr=function(e,t){var n=function(e){var t=(0,J.getEnabledElement)(e),n=t.viewportId,r=t.renderingEngineId,o="".concat(n,":").concat(r),a=function(e){var t=".".concat("viewport-element");return e.querySelector(t).querySelector(":scope > .svg-layer")}(e);return Object.keys(Ke.svgNodeCache[o]).forEach((function(e){Ke.svgNodeCache[o][e].touched=!1})),{svgLayerElement:a,svgNodeCacheForCanvas:Ke.svgNodeCache,getSvgNode:Ur.bind(this,o),appendNode:Vr.bind(this,a,o),setNodeTouched:jr.bind(this,o),clearUntouched:Br.bind(this,a,o)}}(e);t(n),n.clearUntouched()},Fr=function(e,t){var n=Ke.toolGroups.filter((function(n){return n.viewportsInfo.some((function(n){return n.renderingEngineId===t&&(!n.viewportId||n.viewportId===e)}))}));if(n.length){if(n.length>1)throw new Error("Multiple tool groups found for renderingEngineId: ".concat(t," and viewportId: ").concat(e,". You should only\n have one tool group per viewport in a renderingEngine."));return n[0]}};function Hr(e,t){var n=(0,J.getEnabledElement)(e),r=n.renderingEngineId,o=n.viewportId,a=Fr(o,r);if(!a)return[];for(var i=[],l=Object.keys(a.toolOptions),s=0;s<l.length;s++){var c=l[s],d=a.toolOptions[c];if(d&&t.includes(d.mode)){var u=a.getToolInstance(c);i.push(u)}}return i}function Gr(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}var qr=Xe.Active,zr=Xe.Passive,Kr=Xe.Enabled,Yr=function(){function e(){var t=this;oe(this,e),ae(this,"hasBeenDestroyed",void 0),ae(this,"_needsRender",new Set),ae(this,"_animationFrameSet",!1),ae(this,"_animationFrameHandle",null),ae(this,"_viewportElements",void 0),ae(this,"_renderFlaggedViewports",(function(){t._throwIfDestroyed();for(var e=Array.from(t._viewportElements.values()),n=0;n<e.length;n++){var r=e[n];if(t._needsRender.has(r)&&(t._triggerRender(r),t._needsRender.delete(r),0===t._needsRender.size))return t._animationFrameSet=!1,void(t._animationFrameHandle=null)}})),this._viewportElements=new Map}return re(e,[{key:"addViewportElement",value:function(e,t){this._viewportElements.set(e,t)}},{key:"removeViewportElement",value:function(e,t){this._viewportElements.delete(e),this._needsRender.delete(t),this._reset()}},{key:"renderViewport",value:function(e){this._setViewportsToBeRenderedNextFrame([e])}},{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:"_setAllViewportsToBeRenderedNextFrame",value:function(){var e=this;Lr(this._viewportElements.values()).forEach((function(t){e._needsRender.add(t)})),this._renderFlaggedViewports()}},{key:"_setViewportsToBeRenderedNextFrame",value:function(e){var t=this,n=Lr(this._viewportElements.values());e.forEach((function(e){-1!==n.indexOf(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:"_triggerRender",value:function(e){var t=(0,J.getEnabledElement)(e);if(t)if((0,J.getRenderingEngine)(t.renderingEngineId)){var n=Hr(e,[qr,zr,Kr]),r=t.renderingEngineId,o=t.viewportId,a={element:e,renderingEngineId:r,viewportId:o};Wr(e,(function(r){var o=!1;n.forEach((function(e){if(e.renderAnnotation){var n=e.renderAnnotation(t,r);o=o||n}})),o&&(0,J.triggerEvent)(e,Q.ANNOTATION_RENDERED,function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Gr(Object(n),!0).forEach((function(t){ae(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Gr(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}({},a))}))}else console.warn("rendering Engine has been destroyed");else console.warn("Element has been disabled")}},{key:"_reset",value:function(){window.cancelAnimationFrame(this._animationFrameHandle),this._needsRender.clear(),this._animationFrameSet=!1,this._animationFrameHandle=null,this._setAllViewportsToBeRenderedNextFrame()}}]),e}(),Xr=new Yr,Zr=function(e){Xr.renderViewport(e)},Jr=function(e){Zr(e.detail.element)},$r={enable:function(e){e.addEventListener(J.Enums.Events.IMAGE_RENDERED,Jr)},disable:function(e){e.removeEventListener(J.Enums.Events.IMAGE_RENDERED,Jr)}};function Qr(e,t,n){var r=e.detail,o=r.renderingEngineId,a=r.viewportId,i=Fr(a,o);if(!i)return[];for(var l=[],s=Object.keys(i.toolOptions),c=0;c<s.length;c++){var d=s[c],u=i.toolOptions[d],v=null!=n&&u.bindings.length&&u.bindings.some((function(e){return e.mouseButton===n}));if(t.includes(u.mode)&&(!n||v)){var f=i.getToolInstance(d);l.push(f)}}return l}var eo=Xe.Active,to=Xe.Passive,no=Xe.Enabled,ro=function(e){Qr(e,[eo,to,no]).forEach((function(t){t.onCameraModified&&t.onCameraModified(e)}))},oo={enable:function(e){e.addEventListener(J.Enums.Events.CAMERA_MODIFIED,ro)},disable:function(e){e.removeEventListener(J.Enums.Events.CAMERA_MODIFIED,ro)}},ao=Xe.Active,io=Xe.Passive,lo=Xe.Enabled,so=function(e){Qr(e,[ao,io,lo]).forEach((function(t){t.onImageSpacingCalibrated&&t.onImageSpacingCalibrated(e)}))},co={enable:function(e){e.addEventListener(J.Enums.Events.IMAGE_SPACING_CALIBRATED,so)},disable:function(e){e.removeEventListener(J.Enums.Events.IMAGE_SPACING_CALIBRATED,so)}},uo=Xe.Active;function vo(e,t,n){if(Ke.isInteractingWithTool)return!1;var r,o=n.detail,a=o.renderingEngineId,i=o.viewportId,l=Fr(i,a);if(!l)return!1;for(var s=Object.keys(l.toolOptions),c=0;c<s.length;c++){var d=s[c],u=l.toolOptions[d],v=l.getToolInstance(d);if(u.mode===uo&&"function"==typeof v[t]){r=l.getToolInstance(d);break}}r&&r[t](n)}var fo=vo.bind(null,"Mouse","mouseClickCallback");function go(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function ho(e,t,n){var r="touch"===(arguments.length>3&&void 0!==arguments[3]?arguments[3]:"mouse")?36:6,o=[];return t.forEach((function(t){var a,i=t.tool,l=function(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=function(e,t){if(e){if("string"==typeof e)return go(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?go(e,t):void 0}}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var r=0,o=function(){};return{s:o,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,i=!0,l=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return i=e.done,e},e:function(e){l=!0,a=e},f:function(){try{i||null==n.return||n.return()}finally{if(l)throw a}}}}(t.annotations);try{for(l.s();!(a=l.n()).done;){var s=a.value;if(!s.isLocked&&s.isVisible){var c=i.getHandleNearImagePoint(e,s,n,r);if(c){o.push({tool:i,annotation:s,handle:c});break}}}}catch(e){l.e(e)}finally{l.f()}})),o}function po(e,t){for(var n=[],r=0;r<t.length;r++){var o,a=t[r];if(a){var i=nt(a.constructor.toolName,e);null!==(o=i)&&void 0!==o&&o.length&&("function"==typeof a.filterInteractableAnnotationsForElement&&(i=a.filterInteractableAnnotationsForElement(e,i)),i.length>0&&n.push({tool:a,annotations:i}))}else console.warn("undefined tool in filterToolsWithAnnotationsForElement")}return n}function mo(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function wo(e,t,n){var r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"mouse",o="touch"===r?36:6,a=[];return t.forEach((function(t){var i,l=t.tool,s=function(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=function(e,t){if(e){if("string"==typeof e)return mo(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?mo(e,t):void 0}}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var r=0,o=function(){};return{s:o,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,i=!0,l=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return i=e.done,e},e:function(e){l=!0,a=e},f:function(){try{i||null==n.return||n.return()}finally{if(l)throw a}}}}(t.annotations);try{for(s.s();!(i=s.n()).done;){var c=i.value;if(!c.isLocked&&c.isVisible&&l.isPointNearTool(e,c,n,o,r)){a.push({tool:l,annotation:c});break}}}catch(e){s.e(e)}finally{s.f()}})),a}var Eo=function(e){return e[e.Primary=1]="Primary",e[e.Secondary=2]="Secondary",e[e.Primary_And_Secondary=3]="Primary_And_Secondary",e[e.Auxiliary=4]="Auxiliary",e[e.Primary_And_Auxiliary=5]="Primary_And_Auxiliary",e[e.Secondary_And_Auxiliary=6]="Secondary_And_Auxiliary",e[e.Primary_And_Secondary_And_Auxiliary=7]="Primary_And_Secondary_And_Auxiliary",e[e.Fourth_Button=8]="Fourth_Button",e[e.Fifth_Button=16]="Fifth_Button",e}(Eo||{}),yo=function(e){return e[e.Shift=16]="Shift",e[e.Ctrl=17]="Ctrl",e[e.Alt=18]="Alt",e[e.Meta=91]="Meta",e[e.ShiftCtrl=1617]="ShiftCtrl",e[e.ShiftAlt=1618]="ShiftAlt",e[e.ShiftMeta=1691]="ShiftMeta",e[e.CtrlAlt=1718]="CtrlAlt",e[e.CtrlMeta=1791]="CtrlMeta",e[e.AltMeta=1891]="AltMeta",e}(yo||{}),Io=function(e){return e.shiftKey?e.ctrlKey?yo.ShiftCtrl:e.altKey?yo.ShiftAlt:e.metaKey?yo.ShiftMeta:yo.Shift:e.ctrlKey?e.altKey?yo.CtrlAlt:e.metaKey?yo.CtrlMeta:yo.Ctrl:e.altKey?e.metaKey&&yo.AltMeta||yo.Alt:e.metaKey?yo.Meta:void 0},bo=Xe.Active;function Co(e){var t=e.detail,n=t.renderingEngineId,r=t.viewportId,o=e.detail.event,a=Io(o)||Nr.getModifierKey(),i=Fr(r,n);if(!i)return null;for(var l=Object.keys(i.toolOptions),s=i.getDefaultMousePrimary(),c=0;c<l.length;c++){var d=l[c],u=i.toolOptions[d],v=u.bindings.length&&u.bindings.some((function(e){return e.mouseButton===(o?o.buttons:s)&&e.modifierKey===a}));if(u.mode===bo&&v)return i.getToolInstance(d)}}var _o=Xe.Active,To=Xe.Passive;var Oo=Xe.Active,Do=Xe.Passive;function So(e){if(!Ke.isInteractingWithTool){var t=Co(e);if(t&&"function"==typeof t.preMouseDownCallback&&t.preMouseDownCallback(e))return;var n=1===e.detail.event.buttons,r=Qr(e,[Oo],e.detail.event.buttons),o=n?Qr(e,[Do]):void 0,a=[].concat(Lr(r||[]),Lr(o||[])),i=e.detail,l=i.element,s=po(l,a),c=i.currentPoints.canvas,d=ho(l,s,c,"mouse"),u=!!e.detail.event.shiftKey;if(d.length>0){var v=ko(d),f=v.tool,g=v.annotation,h=v.handle;return Mo(g.annotationUID,u),void f.handleSelectedCallback(e,g,h,"Mouse")}var p=wo(l,s,c,"mouse");if(p.length>0){var m=ko(p),w=m.tool,E=m.annotation;return Mo(E.annotationUID,u),void w.toolSelectedCallback(e,E,"Mouse",c)}if(t&&"function"==typeof t.postMouseDownCallback&&t.postMouseDownCallback(e))return;!function(e){if(Ke.isInteractingWithTool)return!1;var t=e.detail,n=t.element,r=(0,J.getEnabledElement)(n),o=t.currentPoints.canvas;if(!r)return!1;var a=function(e,t){var n,r=new Map,o=e.detail,a=o.renderingEngineId,i=o.viewportId,l=Fr(i,a);if(!l)return r;for(var s=Object.keys(l.toolOptions),c=l.getDefaultMousePrimary(),d=e.detail.event,u=null!==(n=null==d?void 0:d.buttons)&&void 0!==n?n:c,v=Io(d)||Nr.getModifierKey(),f=0;f<s.length;f++){var g,h=s[f],p=l.getToolInstance(h),m=null===(g=p.configuration)||void 0===g?void 0:g.actions;if(null!=m&&m.length&&t.includes(p.mode)){var w=m.find((function(e){return e.bindings.length&&e.bindings.some((function(e){return e.mouseButton===u&&e.modifierKey===v}))}));w&&r.set(p,w)}}return r}(e,[_o,To]),i=wo(n,po(n,Array.from(a.keys())),o);if(i.length>0){var l=i[0],s=l.tool,c=l.annotation,d=a.get(s);return("string"==typeof d.method?s[d.method]:d.method).call(s,e,c),!0}}(e)}}function ko(e){return e.length>1&&e.find((function(e){return!ve(e.annotation)&&Pe(e.annotation.annotationUID)}))||e[0]}function Mo(e){arguments.length>1&&void 0!==arguments[1]&&arguments[1]?Te(e)?Ie(e,!1):Ie(e,!0,!0):Ie(e,!0,!1)}function xo(e){if(!Ke.isInteractingWithTool){var t=Co(e);t&&(Ke.isMultiPartToolActive||t.addNewAnnotation&&Ie(t.addNewAnnotation(e,"mouse").annotationUID))}}var Ro=vo.bind(null,"Mouse","doubleClickCallback");function Po(e){if(!Ke.isInteractingWithTool){var t=Co(e);!t||"function"!=typeof t.mouseDragCallback||t.mouseDragCallback(e)}}function Ao(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}var No=Xe.Active,Lo=Xe.Passive;function Uo(e){if(!Ke.isInteractingWithTool&&!Ke.isMultiPartToolActive){var t,n=Qr(e,[No,Lo]),r=e.detail.element,o=po(r,n),a=n.filter((function(e){return!o.some((function(t){return t.tool.getToolName()===e.getToolName()}))})),i=!1,l=function(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=function(e,t){if(e){if("string"==typeof e)return Ao(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?Ao(e,t):void 0}}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var r=0,o=function(){};return{s:o,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,i=!0,l=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return i=e.done,e},e:function(e){l=!0,a=e},f:function(){try{i||null==n.return||n.return()}finally{if(l)throw a}}}}(o);try{for(l.s();!(t=l.n()).done;){var s=t.value,c=s.tool,d=s.annotations;"function"==typeof c.mouseMoveCallback&&(i=c.mouseMoveCallback(e,d)||i)}}catch(e){l.e(e)}finally{l.f()}a.forEach((function(t){"function"==typeof t.mouseMoveCallback&&t.mouseMoveCallback(e)})),!0===i&&Zr(r)}}var Vo=vo.bind(null,"Mouse","mouseUpCallback"),jo=vo.bind(null,"MouseWheel","mouseWheelCallback"),Bo={enable:function(e){e.addEventListener(Q.MOUSE_CLICK,fo),e.addEventListener(Q.MOUSE_DOWN,So),e.addEventListener(Q.MOUSE_DOWN_ACTIVATE,xo),e.addEventListener(Q.MOUSE_DOUBLE_CLICK,Ro),e.addEventListener(Q.MOUSE_DRAG,Po),e.addEventListener(Q.MOUSE_MOVE,Uo),e.addEventListener(Q.MOUSE_UP,Vo),e.addEventListener(Q.MOUSE_WHEEL,jo)},disable:function(e){e.removeEventListener(Q.MOUSE_CLICK,fo),e.removeEventListener(Q.MOUSE_DOWN,So),e.removeEventListener(Q.MOUSE_DOWN_ACTIVATE,xo),e.removeEventListener(Q.MOUSE_DOUBLE_CLICK,Ro),e.removeEventListener(Q.MOUSE_DRAG,Po),e.removeEventListener(Q.MOUSE_MOVE,Uo),e.removeEventListener(Q.MOUSE_UP,Vo),e.removeEventListener(Q.MOUSE_WHEEL,jo)}},Wo=Xe.Active;function Fo(e){var t=e.detail,n=t.renderingEngineId,r=t.viewportId,o=vn.mouseButton,a=Nr.getModifierKey(),i=Fr(r,n);if(!i)return null;for(var l=Object.keys(i.toolOptions),s=i.getDefaultMousePrimary(),c=0;c<l.length;c++){var d=l[c],u=i.toolOptions[d],v=u.bindings.length&&u.bindings.some((function(e){return e.mouseButton===(null!=o?o:s)&&e.modifierKey===a}));if(u.mode===Wo&&v)return i.getToolInstance(d)}}function Ho(e){var t=Fo(e);if(t){var n=e.detail,r=n.renderingEngineId,o=n.viewportId,a=Fr(o,r),i=t.getToolName();Object.keys(a.toolOptions).includes(i)&&a.setViewportsCursorByToolName(i)}}function Go(e){var t=Fo(e);if(t){var n=e.detail,r=n.renderingEngineId,o=n.viewportId,a=Fr(o,r);Rr();var i=t.getToolName();Object.keys(a.toolOptions).includes(i)&&a.setViewportsCursorByToolName(i)}}var qo={enable:function(e){e.addEventListener(Q.KEY_DOWN,Ho),e.addEventListener(Q.KEY_UP,Go)},disable:function(e){e.removeEventListener(Q.KEY_DOWN,Ho),e.removeEventListener(Q.KEY_UP,Go)}},zo=Xe.Active;function Ko(e){var t=e.detail,n=t.renderingEngineId,r=t.viewportId,o=e.detail.event,a=Fr(r,n);if(!a)return null;for(var i=Object.keys(a.toolOptions),l=Object.keys(o.touches).length,s=Io(o)||Nr.getModifierKey(),c=a.getDefaultMousePrimary(),d=0;d<i.length;d++){var u=i[d],v=a.toolOptions[u],f=v.bindings.length&&v.bindings.some((function(e){return(e.numTouchPoints===l||1===l&&e.mouseButton===c)&&e.modifierKey===s}));if(v.mode===zo&&f)return a.getToolInstance(u)}}function Yo(e,t,n){var r=e.detail,o=r.renderingEngineId,a=r.viewportId,i=Fr(a,o);if(!i)return[];for(var l=[],s=Object.keys(i.toolOptions),c=0;c<s.length;c++){var d=s[c],u=i.toolOptions[d],v=null!=n&&u.bindings.length&&u.bindings.some((function(e){return e.numTouchPoints===n}));if(t.includes(u.mode)&&(!n||v)){var f=i.getToolInstance(d);l.push(f)}}return l}var Xo=Xe.Active,Zo=Xe.Passive;function Jo(e){if(!Ke.isInteractingWithTool){var t=Ko(e);if(t&&"function"==typeof t.preTouchStartCallback&&t.preTouchStartCallback(e))return;var n=1===Object.keys(e.detail.event.touches).length,r=Yo(e,[Xo],Object.keys(e.detail.event.touches).length),o=n?Yo(e,[Zo]):void 0,a=[].concat(Lr(r||[]),Lr(o||[]),[t]),i=e.detail,l=i.element,s=po(l,a),c=i.currentPoints.canvas,d=ho(l,s,c,"touch");if(d.length>0){var u=$o(d),v=u.tool,f=u.annotation,g=u.handle;return Qo(f.annotationUID,!1),void v.handleSelectedCallback(e,f,g,"Touch")}var h=wo(l,s,c,"touch");if(h.length>0){var p=$o(h),m=p.tool,w=p.annotation;return Qo(w.annotationUID,!1),void m.toolSelectedCallback(e,w,"Touch")}if(t&&"function"==typeof t.postTouchStartCallback&&t.postTouchStartCallback(e))return}}function $o(e){return e.length>1&&e.find((function(e){return!ve(e.annotation)&&Pe(e.annotation.annotationUID)}))||e[0]}function Qo(e){arguments.length>1&&void 0!==arguments[1]&&arguments[1]?Te(e)?Ie(e,!1):Ie(e,!0,!0):Ie(e,!0,!1)}function ea(e){if(!Ke.isInteractingWithTool){var t=Ko(e);t&&(Ke.isMultiPartToolActive||t.addNewAnnotation&&Ie(t.addNewAnnotation(e,"touch").annotationUID))}}function ta(e){if(!Ke.isInteractingWithTool){var t=Ko(e);!t||"function"!=typeof t.touchDragCallback||t.touchDragCallback(e)}}var na=vo.bind(null,"Touch","touchEndCallback"),ra=vo.bind(null,"Touch","touchTapCallback"),oa=vo.bind(null,"Touch","touchPressCallback"),aa={enable:function(e){e.addEventListener(Q.TOUCH_START,Jo),e.addEventListener(Q.TOUCH_START_ACTIVATE,ea),e.addEventListener(Q.TOUCH_DRAG,ta),e.addEventListener(Q.TOUCH_END,na),e.addEventListener(Q.TOUCH_TAP,ra),e.addEventListener(Q.TOUCH_PRESS,oa)},disable:function(e){e.removeEventListener(Q.TOUCH_START,Jo),e.removeEventListener(Q.TOUCH_START_ACTIVATE,ea),e.removeEventListener(Q.TOUCH_DRAG,ta),e.removeEventListener(Q.TOUCH_END,na),e.removeEventListener(Q.TOUCH_PRESS,oa)}};function ia(e){var t,n=e.detail,r=n.element,o=n.viewportId,a=function(e){var t="http://www.w3.org/2000/svg",n=document.createElementNS(t,"svg"),r="svg-layer-".concat(e);n.classList.add("svg-layer"),n.setAttribute("id",r),n.setAttribute("xmlns","http://www.w3.org/2000/svg"),n.style.width="100%",n.style.height="100%",n.style.pointerEvents="none",n.style.position="absolute";var o=document.createElementNS(t,"defs"),a=document.createElementNS(t,"filter"),i=document.createElementNS(t,"feOffset"),l=document.createElementNS(t,"feColorMatrix"),s=document.createElementNS(t,"feBlend");return a.setAttribute("id","shadow-".concat(r)),a.setAttribute("filterUnits","userSpaceOnUse"),i.setAttribute("result","offOut"),i.setAttribute("in","SourceGraphic"),i.setAttribute("dx","0.5"),i.setAttribute("dy","0.5"),l.setAttribute("result","matrixOut"),l.setAttribute("in","offOut"),l.setAttribute("in2","matrix"),l.setAttribute("values","0.2 0 0 0 0 0 0.2 0 0 0 0 0 0.2 0 0 0 0 0 1 0"),s.setAttribute("in","SourceGraphic"),s.setAttribute("in2","matrixOut"),s.setAttribute("mode","normal"),a.appendChild(i),a.appendChild(l),a.appendChild(s),o.appendChild(a),n.appendChild(o),n}(o);!function(e){var t=e.dataset,n=t.viewportUid,r=t.renderingEngineUid,o="".concat(n,":").concat(r);Ke.svgNodeCache[o]={}}(r),t=a,r.querySelector("div.viewport-element").appendChild(t),Xr.addViewportElement(o,r),kn.enable(r),An.enable(r),Or.enable(r),Nr.enable(r),$r.enable(r),oo.enable(r),co.enable(r),Bo.enable(r),qo.enable(r),aa.enable(r),Ke.enabledElements.push(r)}var la=function(e,t){var n=[];if(!t&&!e)throw new Error("At least one of renderingEngineId or viewportId should be given");for(var r=0;r<Ke.synchronizers.length;r++){var o=Ke.synchronizers[r],a=!o.isDisabled(),i=o.hasSourceViewport(t,e),l=o.hasTargetViewport(t,e);a&&(i||l)&&n.push(o)}return n},sa=function(e){var t=e.detail,n=t.element,r=t.viewportId;!function(e){var t=e.dataset,n=t.viewportUid,r=t.renderingEngineUid,o="".concat(n,":").concat(r);delete Ke.svgNodeCache[o]}(n),function(e){var t=e.querySelector("div.".concat("viewport-element")),n=t.querySelector("svg");n&&t.removeChild(n)}(n),Xr.removeViewportElement(r,n),kn.disable(n),An.disable(n),Or.disable(n),Nr.disable(n),$r.disable(n),oo.disable(n),co.disable(n),Bo.disable(n),qo.disable(n),aa.disable(n),function(e){var t=(0,J.getEnabledElement)(e);la(t.viewportId,t.renderingEngineId).forEach((function(e){e.remove(t)}))}(n),function(e){var t=(0,J.getEnabledElement)(e),n=t.renderingEngineId,r=t.viewportId,o=Fr(r,n);o&&o.removeViewports(n,r)}(n),function(e){var t=Ke.enabledElements.findIndex((function(t){return t===e}));t>-1&&Ke.enabledElements.splice(t,1)}(n)},ca=function(e,t){t.length&&t.forEach((function(t){var n=e.getViewport(t).element;Zr(n)}))},da=function(e){var t=e.detail,n=t.viewportId,r=t.renderingEngineId,o=(0,J.getRenderingEngine)(r);ca(o,[n])},ua=function(e){e.detail.removed.length&&(0,J.getRenderingEngines)().forEach((function(e){var t=e.getViewports().map((function(e){return e.id}));ca(e,t)}))},va=function(e){var t=e.detail.segmentationId;Vt(t).forEach((function(e){Lt(e).forEach((function(n){n.segmentationId===t&&Ot(e,n.segmentationRepresentationUID)}))}))},fa=function(e){return Ke.toolGroups.find((function(t){return t.id===e}))};function ga(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function ha(e,t){return ha=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},ha(e,t)}function pa(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&&ha(e,t)}function ma(e,t){if(t&&("object"===ee(t)||"function"==typeof t))return t;if(void 0!==t)throw new TypeError("Derived constructors may only return object or undefined");return ga(e)}function wa(e){return wa=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},wa(e)}function Ea(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function ya(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Ea(Object(n),!0).forEach((function(t){ae(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Ea(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function Ia(){return zt()}function ba(e){Kt(e)}function Ca(e){return Ia().representations[e]}function _a(e,t){var n=Ia();ba(ya(ya({},n),{},{representations:ya(ya({},n.representations),{},ae({},e,ya(ya({},n.representations[e]),t)))}))}function Ta(e){return jt(e)}function Oa(e,t){Bt(e,t)}function Da(e,t){return Ft(e,t)}function Sa(e,t,n){Wt(e,t,n)}function ka(e,t,n){return Ht(e,t,n)}function Ma(e,t,n){Gt(e,t,n)}function xa(e,t,n){var r=Lt(e);if(r){var o=r.find((function(e){return e.segmentationRepresentationUID===t}));if(o){var a=o.segmentsHidden,i=function(e){var t=Pt(e);if(t.type===gt.Labelmap){for(var n=J.cache.getVolume(e).getScalarData(),r={},o=0;o<n.length;o++){var a=n[o];0===a||r[a]||(r[a]=!0)}return Object.keys(r).map((function(e){return parseInt(e,10)}))}if(t.type===gt.Contour){var i,l=null===(i=t.representationData.CONTOUR)||void 0===i?void 0:i.geometryIds;if(!l)throw new Error("No geometryIds found for segmentationId ".concat(e));return l.map((function(e){return J.cache.getGeometry(e).data.getSegmentIndex()}))}}(o.segmentationId);n?a.clear():i.forEach((function(e){a.add(e)})),Ot(e,o.segmentationRepresentationUID)}}}function Ra(e,t){var n=Lt(e).find((function(e){return e.segmentationRepresentationUID===t}));if(n)return 0===n.segmentsHidden.size}function Pa(e,t,n,r){var o=Yt(e,t);o&&(n.forEach((function(e){r?o.segmentsHidden.delete(e):o.segmentsHidden.add(e)})),Ot(e,t))}function Aa(e,t,n,r){var o=Yt(e,t);o&&(r?o.segmentsHidden.delete(n):o.segmentsHidden.add(n),Ot(e,t))}var Na=function(){function e(t,n){oe(this,e),ae(this,"supportedInteractionTypes",void 0),ae(this,"configuration",void 0),ae(this,"toolGroupId",void 0),ae(this,"mode",void 0);var r=J.utilities.deepMerge(n,t),o=r.configuration,a=void 0===o?{}:o,i=r.supportedInteractionTypes,l=r.toolGroupId;a.strategies||(a.strategies={},a.defaultStrategy=void 0,a.activeStrategy=void 0,a.strategyOptions={}),this.toolGroupId=l,this.supportedInteractionTypes=i||[],this.configuration=Object.assign({},a),this.mode=Xe.Disabled}return re(e,[{key:"getToolName",value:function(){return this.constructor.toolName}},{key:"applyActiveStrategy",value:function(e,t){var n=this.configuration;return n.strategies[n.activeStrategy].call(this,e,t)}},{key:"setConfiguration",value:function(e){this.configuration=J.utilities.deepMerge(this.configuration,e)}},{key:"setActiveStrategy",value:function(e){this.setConfiguration({activeStrategy:e})}},{key:"getTargetVolumeId",value:function(e){var t;if(this.configuration.volumeId)return this.configuration.volumeId;var n=e.getActors();return n?null===(t=n.find((function(e){return"vtkVolume"===e.actor.getClassName()})))||void 0===t?void 0:t.uid:void 0}},{key:"getTargetIdImage",value:function(e,t){if(e.startsWith("imageId:")){var n=e.split("imageId:")[1],r=J.utilities.imageIdToURI(n),o=J.utilities.getViewportsWithImageURI(r,t.id);if(!o||!o.length)return;if(!(o=o.filter((function(e){return e.getCurrentImageId()===n})))||!o.length)return;return o[0].getImageData()}if(e.startsWith("volumeId:")){var a=e.split("volumeId:")[1],i=J.utilities.getViewportsWithVolumeId(a,t.id);if(!i||!i.length)return;return i[0].getImageData()}throw new Error('getTargetIdImage: targetId must start with "imageId:" or "volumeId:"')}},{key:"getTargetId",value:function(e){if(e instanceof J.StackViewport)return"imageId:".concat(e.getCurrentImageId());if(e instanceof J.BaseVolumeViewport)return"volumeId:".concat(this.getTargetVolumeId(e));if(e instanceof J.VideoViewport)return"";throw new Error("getTargetId: viewport must be a StackViewport or VolumeViewport")}}]),e}();ae(Na,"toolName",void 0),Na.toolName="BaseTool";var La=Na;function Ua(e,t,n,r,o,a,i){try{var l=e[a](i),s=l.value}catch(e){return void n(e)}l.done?t(s):Promise.resolve(s).then(r,o)}function Va(e){return function(){var t=this,n=arguments;return new Promise((function(r,o){var a=e.apply(t,n);function i(e){Ua(a,r,o,i,l,"next",e)}function l(e){Ua(a,r,o,i,l,"throw",e)}i(void 0)}))}}var ja=y(841),Ba=y.n(ja),Wa=function(e,t){var n=(0,J.getEnabledElement)(e).viewport,r=n.getActors().map((function(e){var n=e.uid;return n.startsWith(t)?n:void 0})).filter(Boolean);n.removeActors(r)},Fa=y(610),Ha=y.n(Fa),Ga=y(474),qa=y.n(Ga),za=y(448),Ka=y.n(za),Ya=y(70),Xa=y.n(Ya),Za=y(396),Ja=y.n(Za);function $a(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:5;return parseFloat(e[0]).toFixed(t)+","+parseFloat(e[1]).toFixed(t)+","+parseFloat(e[2]).toFixed(t)+","}var Qa=new Map;function ei(e){var t=e.detail,n=t.actorEntry,r=t.vtkPlanes,o=t.viewport;if(null!=n&&n.clippingFilter){var a=n.actor.getMapper(),i=o.getCamera().viewPlaneNormal,l=o.getCurrentImageIdIndex(),s="".concat(o.id,"-").concat($a(i),"-").concat(l),c=Qa.get(n.uid);c||(c=new Map,Qa.set(n.uid,c));var d=c.get(s);if(!d){var u=n.clippingFilter;u.setClippingPlanes(r);try{u.update(),d=u.getOutputData(),c.set(s,d)}catch(e){console.error("Error clipping surface",e)}}a.setInputData(d)}}var ti=function(e,t,n){var r=(0,J.getEnabledElement)(e).viewport,o=t.getPoints(),a=t.getPolys(),i=t.getColor(),l=Xa().newInstance();l.getPoints().setData(o,3);var s=Ja().newInstance({values:Float32Array.from(a)});l.setPolys(s);var c,d=Ha().newInstance({});if(r instanceof J.VolumeViewport3D)d.setInputData(l);else{(c=Ka().newInstance({clippingPlanes:[],activePlaneId:2,passPointData:!1})).setInputData(l),c.setGenerateOutline(!0),c.setGenerateFaces(!1),c.update();var u=c.getOutputData();d.setInputData(u)}var v=qa().newInstance();v.setMapper(d),v.getProperty().setColor(i[0]/255,i[1]/255,i[2]/255),r.addActor({actor:v,uid:n,clippingFilter:c}),e.addEventListener(J.Enums.Events.CLIPPING_PLANES_UPDATED,ei)};function ni(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function ri(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?ni(Object(n),!0).forEach((function(t){ae(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):ni(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function oi(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function ai(){return(ai=Va(Ba().mark((function e(t,n,r){var o,a,i,l,s,c;return Ba().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return o=n.segmentationId,a=J.utilities.uuidv4(),i=new Set,l={segmentationId:o,segmentationRepresentationUID:a,type:gt.Surface,segmentsHidden:i,colorLUTIndex:0,active:!0,segmentationRepresentationSpecificConfig:{},segmentSpecificConfig:{},config:{}},r&&(s=Ta(t),c=J.utilities.deepMerge(s,r),Oa(t,{renderInactiveSegmentations:c.renderInactiveSegmentations||!0,representations:ri({},c.representations)})),qt(t,l),e.abrupt("return",a);case 9:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function ii(){return(ii=Va(Ba().mark((function e(t,n,r){var o,a,i,l,s,c,d,u;return Ba().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(n.colorLUTIndex,n.active,o=n.segmentationId,a=n.segmentationRepresentationUID,n.segmentsHidden,i=Pt(o),l=i.representationData[gt.Surface],(s=l.geometryId)||console.warn("No Surfaces found for segmentationId ".concat(o,". Skipping render.")),c=J.cache.getGeometry(s)){e.next=8;break}throw new Error("No Surfaces found for geometryId ".concat(s));case 8:if(c.type===J.Enums.GeometryType.SURFACE){e.next=10;break}throw new Error("Geometry type ".concat(c.type," not supported for rendering."));case 10:if(c.data){e.next=13;break}return console.warn("No Surfaces found for geometryId ".concat(s,". Skipping render.")),e.abrupt("return");case 13:d=c.data,u="".concat(a,"_").concat(d.id,"}"),li(t,d,u),t.resetCamera(),t.render();case 18:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function li(e,t,n){var r=n;if(e.getActor(r))throw new Error("Not implemented yet. (Update surface)");ti(e.element,t,r)}var si={render:function(e,t,n){return ii.apply(this,arguments)},addSegmentationRepresentation:function(e,t,n){return ai.apply(this,arguments)},removeSegmentationRepresentation:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]&&arguments[2];(function(e,t){var n=fa(e);if(void 0===n)throw new Error("ToolGroup with ToolGroupId ".concat(e," does not exist"));var r,o=function(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=function(e,t){if(e){if("string"==typeof e)return oi(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?oi(e,t):void 0}}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var r=0,o=function(){};return{s:o,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,i=!0,l=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return i=e.done,e},e:function(e){l=!0,a=e},f:function(){try{i||null==n.return||n.return()}finally{if(l)throw a}}}}(n.viewportsInfo);try{for(o.s();!(r=o.n()).done;){var a=r.value,i=a.viewportId,l=a.renderingEngineId,s=(0,J.getEnabledElementByIds)(i,l);Wa(s.viewport.element,t)}}catch(e){o.e(e)}finally{o.f()}})(e,t),Zt(e,t),n&&fa(e).getViewportsInfo().forEach((function(e){var t=e.viewportId,n=e.renderingEngineId;(0,J.getEnabledElementByIds)(t,n).viewport.render()}))}},ci=y(785),di=y.n(ci),ui=y(127),vi=y.n(ui),fi=y(348),gi=y.n(fi);function hi(e,t,n){var r,o,a=null===(r=e.segmentSpecificConfig)||void 0===r?void 0:r[t];return a||(a=null===(o=e.segmentSpecificConfig)||void 0===o?void 0:o[n]),a?a.CONTOUR:null}var pi=new Map;function mi(e){return pi.get(e)}function wi(e,t){pi.set(e,t)}function Ei(e,t,n,r,o){var a=n.segmentationRepresentationUID,i=n.segmentsHidden,l=vi().newInstance(),s=new Map,c=new Map;t.forEach((function(e){var t=J.cache.getGeometry(e);if(t){var r=t.data.getSegmentIndex();!function(e){if(!e)throw new Error("No contours found for geometryId ".concat(e.id));var t=e.id;if(e.type!==J.Enums.GeometryType.CONTOUR)throw new Error("Geometry type ".concat(e.type," not supported for rendering."));e.data||console.warn("No contours found for geometryId ".concat(t,". Skipping render."))}(t);for(var o=hi(n,e,r),a=t.data,d=function(e){var t=[],n=gi().newInstance(),r=Ja().newInstance(),o=0;e.getContours().forEach((function(e){var n=e.getPoints(),a=e.getFlatPointsArray(),i=e.getType(),l=n.map((function(e,t){return t+o}));i===J.Enums.ContourType.CLOSED_PLANAR&&l.push(l[0]);var s=Float32Array.from(a);t.push.apply(t,Lr(s)),r.insertNextCell(Lr(l)),o+=n.length})),n.setData(t,3);var a=Xa().newInstance();return a.setPoints(n),a.setLines(r),a}(a),u=a.getColor(),v=d.getPoints().getNumberOfPoints(),f=di().newInstance({size:4*v,numberOfComponents:4,dataType:"Uint8Array"}),g=0;g<v;++g)f.setTuple(g,[].concat(Lr(u),[255]));d.getPointData().setScalars(f),o&&c.set(r,o),s.set(r,[].concat(Lr(u),[i.has(r)?0:255])),0===r?l.setInputData(d):l.addInputData(d)}else console.warn("No geometry found for geometryId ".concat(e,". Skipping render."))}));var d=l.getOutputData(),u=r.representations.CONTOUR.outlineWidthActive,v=Ha().newInstance();v.setInputData(d);var f=qa().newInstance();f.setMapper(v),f.getProperty().setLineWidth(u),wi(a,Object.assign({},mi(a),{segmentsHidden:new Set(i),segmentSpecificMap:c,outlineWidthActive:u})),f.setForceOpaque(!0),e.addActor({uid:o,actor:f}),e.resetCamera(),e.render()}function yi(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=function(e,t){if(e){if("string"==typeof e)return Ii(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?Ii(e,t):void 0}}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var r=0,o=function(){};return{s:o,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,i=!0,l=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return i=e.done,e},e:function(e){l=!0,a=e},f:function(){try{i||null==n.return||n.return()}finally{if(l)throw a}}}}function Ii(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function bi(e,t,n,r,o){var a=n.segmentationRepresentationUID,i=n.segmentsHidden,l=r.representations.CONTOUR,s=mi(a),c=e.getActor(o);if(c){var d=c.actor,u=l.outlineWidthActive;(null==s?void 0:s.outlineWidthActive)!==u&&(d.getProperty().setLineWidth(u),wi(a,Object.assign({},s,{outlineWidthActive:u})));var v,f=d.getMapper(),g=f.getLookupTable(),h=[],p=[],m=yi(i);try{for(m.s();!(v=m.n()).done;){var w=v.value;s.segmentsHidden.has(w)||h.push(w)}}catch(e){m.e(e)}finally{m.f()}var E,y=yi(s.segmentsHidden);try{for(y.s();!(E=y.n()).done;){var I=E.value;i.has(I)||p.push(I)}}catch(e){y.e(e)}finally{y.f()}var b=Array.from(s.segmentsHidden).filter((function(e){return!p.includes(e)})).concat(h),C=t.reduce((function(e,t){var r=J.cache.getGeometry(t).data,o=r.getSegmentIndex(),a=hi(n,t,o);return e.contourSets.push(r),e.segmentSpecificConfigs[o]=null!=a?a:{},e}),{contourSets:[],segmentSpecificConfigs:{}}),_=C.contourSets,T=C.segmentSpecificConfigs,O=[].concat(Lr(b),p),D=Object.values(T).some((function(e){return Object.keys(e).length>0})),S=!1;if(O.length||D){var k=f.getInputData(),M=k.getPointData().getScalars().getData(),x=0;_.forEach((function(e){var t,n=e.getSegmentIndex(),r=e.getTotalNumberOfPoints();if(O.includes(n)||null!==(t=T[n])&&void 0!==t&&t.fillAlpha){var o=e.getColor(),a=b.includes(n)?0:255,i=T[n];void 0!==i.fillAlpha&&(a=255*i.fillAlpha);for(var l=0;l<r;++l)M[x+4*l]=o[0],M[x+4*l+1]=o[1],M[x+4*l+2]=o[2],M[x+4*l+3]=a;S=!0}x+=4*r})),S&&k.modified(),wi(a,Object.assign({},s,{segmentsHidden:new Set(i)})),f.setLookupTable(g)}e.render()}else console.warn("No contour actor found for actorUID ".concat(o,". Skipping render."))}function Ci(e,t,n,r){var o=n.segmentationRepresentationUID,a="CONTOUR_".concat(o);(e.getActor(a)?bi:Ei)(e,t,n,r,a)}var _i=function(e,t){var n=(0,J.getEnabledElement)(e).viewport,r=n.getActors().map((function(e){var n=e.uid;return n.includes(t)?n:void 0})).filter(Boolean);n.removeActors(r)};function Ti(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function Oi(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Ti(Object(n),!0).forEach((function(t){ae(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Ti(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function Di(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function Si(){return(Si=Va(Ba().mark((function e(t,n,r){var o,a,i,l,s,c;return Ba().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return o=n.segmentationId,a=J.utilities.uuidv4(),i=new Set,l={segmentationId:o,segmentationRepresentationUID:a,type:gt.Contour,segmentsHidden:i,colorLUTIndex:0,active:!0,segmentationRepresentationSpecificConfig:{},segmentSpecificConfig:{},config:{}},r&&(s=Ta(t),c=J.utilities.deepMerge(s,r),Oa(t,{renderInactiveSegmentations:c.renderInactiveSegmentations||!0,representations:Oi({},c.representations)})),qt(t,l),e.abrupt("return",a);case 10:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function ki(){return(ki=Va(Ba().mark((function e(t,n,r){var o,a,i,l;return Ba().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(o=n.segmentationId,a=Pt(o),i=a.representationData[gt.Contour],l=i.geometryIds,!(t instanceof J.StackViewport)){e.next=6;break}return e.abrupt("return");case 6:null!=l&&l.length||console.warn("No contours found for segmentationId ".concat(o,". Skipping render.")),Ci(t,l,n,r);case 8:case"end":return e.stop()}}),e)})))).apply(this,arguments)}var Mi={render:function(e,t,n){return ki.apply(this,arguments)},addSegmentationRepresentation:function(e,t,n){return Si.apply(this,arguments)},removeSegmentationRepresentation:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]&&arguments[2];(function(e,t){var n=fa(e);if(void 0===n)throw new Error("ToolGroup with ToolGroupId ".concat(e," does not exist"));var r,o=function(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=function(e,t){if(e){if("string"==typeof e)return Di(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?Di(e,t):void 0}}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var r=0,o=function(){};return{s:o,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,i=!0,l=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return i=e.done,e},e:function(e){l=!0,a=e},f:function(){try{i||null==n.return||n.return()}finally{if(l)throw a}}}}(n.viewportsInfo);try{for(o.s();!(r=o.n()).done;){var a=r.value,i=a.viewportId,l=a.renderingEngineId,s=(0,J.getEnabledElementByIds)(i,l);_i(s.viewport.element,t)}}catch(e){o.e(e)}finally{o.f()}})(e,t),Zt(e,t),function(e){pi.delete(e)}(t),n&&fa(e).getViewportsInfo().forEach((function(e){var t=e.viewportId,n=e.renderingEngineId;(0,J.getEnabledElementByIds)(t,n).viewport.render()}))}},xi=y(441),Ri=y.n(xi),Pi=y(795),Ai=y.n(Pi);function Ni(){return(Ni=Va(Ba().mark((function e(t,n,r){var o,a,i,l,s;return Ba().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return o=(0,J.getEnabledElement)(t),a=o.renderingEngine,i=o.viewport,l=i.id,s=[{volumeId:n,actorUID:r,visibility:!0,blendMode:J.Enums.BlendModes.MAXIMUM_INTENSITY_BLEND}],e.next=9,(0,J.addVolumesToViewports)(a,s,[l],!1,!0);case 9:case"end":return e.stop()}}),e)})))).apply(this,arguments)}var Li=function(e,t,n){return Ni.apply(this,arguments)},Ui=function(e,t){var n=(0,J.getEnabledElement)(e).viewport;n instanceof J.StackViewport||n.removeVolumeActors([t])};function Vi(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function ji(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function Bi(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?ji(Object(n),!0).forEach((function(t){ae(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):ji(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}var Wi=255,Fi=new Map;function Hi(){return(Hi=Va(Ba().mark((function e(t,n,r){var o,a,i,l,s,c,d,u;return Ba().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return o=n.segmentationId,a=J.utilities.uuidv4(),i=new Set,l=Ai().newInstance(),(s=Ri().newInstance()).addPoint(0,0),c={segmentationId:o,segmentationRepresentationUID:a,type:gt.Labelmap,segmentsHidden:i,colorLUTIndex:0,active:!0,segmentationRepresentationSpecificConfig:{},segmentSpecificConfig:{},config:{cfun:l,ofun:s}},r&&(d=Ta(t),u=J.utilities.deepMerge(d,r),Oa(t,{renderInactiveSegmentations:u.renderInactiveSegmentations||!0,representations:Bi({},u.representations)})),qt(t,c),e.abrupt("return",a);case 12:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function Gi(e,t){if(!t)return!0;var n=e.getDefaultActor();if(!n)return!1;var r=n.uid,o=J.cache.getVolume(r);if(o){var a=J.cache.getVolume(t);if(a&&o.metadata.FrameOfReferenceUID===a.metadata.FrameOfReferenceUID)return!0}return!1}function qi(){return(qi=Va(Ba().mark((function e(t,n,r){var o,a,i,l,s,c,d,u,v,f,g,h,p,m,w,E;return Ba().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(o=n.colorLUTIndex,a=n.active,i=n.segmentationId,l=n.segmentationRepresentationUID,s=n.segmentsHidden,c=n.config,d=Pt(i),u=d.representationData[gt.Labelmap],v=u.volumeId,J.cache.getVolume(v)){e.next=7;break}throw new Error("No Labelmap found for volumeId: ".concat(v));case 7:if(Gi(t,null==u?void 0:u.referencedVolumeId)){e.next=9;break}return e.abrupt("return");case 9:if(f=t.getActor(l)){e.next=16;break}return g=Pt(i),h=g.representationData[gt.Labelmap].volumeId,e.next=15,Xi(t,h,l);case 15:f=t.getActor(l);case 16:if(f){e.next=18;break}return e.abrupt("return");case 18:m=(p=c).cfun,w=p.ofun,E=r.renderInactiveSegmentations,zi(t.id,f,m,w,o,r.representations[gt.Labelmap],n,a,E,s);case 21:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function zi(e,t,n,r,o,a,i,l,s,c){for(var d=i.segmentSpecificConfig,u=i.segmentationRepresentationSpecificConfig[gt.Labelmap],v=$t(o),f=Math.min(256,v.length),g=t.actor,h=t.uid,p=Ki(a,u,l),m=p.outlineWidth,w=p.renderOutline,E=p.outlineOpacity,y=0;y<f;y++){var I,b=y,C=v[b],_=Ki(a,u,l,null===(I=d[b])||void 0===I?void 0:I[gt.Labelmap]),T=_.fillAlpha,O=_.outlineWidth,D=_.renderFill,S=Yi(e,h,b,{fillAlpha:T,renderFill:D,renderOutline:_.renderOutline,segmentColor:C,outlineWidth:O,segmentsHidden:c}),k=S.forceOpacityUpdate;if(S.forceColorUpdate&&n.addRGBPoint(b,C[0]/Wi,C[1]/Wi,C[2]/Wi),k)if(D){var M=c.has(b)?0:C[3]/255*T;r.removePoint(b),r.addPointLong(b,M,.5,1)}else r.addPointLong(b,.01,.5,1)}g.getProperty().setRGBTransferFunction(0,n),r.setClamping(!1),g.getProperty().setScalarOpacity(0,r),g.getProperty().setInterpolationTypeToNearest(),g.getProperty().setUseLabelOutline(w),g.getProperty().setLabelOutlineOpacity(E),g.getProperty().setLabelOutlineThickness(m);var x=l||s;g.setVisibility(x)}function Ki(e,t,n,r){var o=r||{},a=Bi(Bi(Bi({},e),t),o);return{fillAlpha:n?a.fillAlpha:a.fillAlphaInactive,outlineWidth:n?a.outlineWidthActive:a.outlineWidthInactive,renderFill:n?a.renderFill:a.renderFillInactive,renderOutline:a.renderOutline,outlineOpacity:n?a.outlineOpacity:a.outlineOpacityInactive}}function Yi(e,t,n,r){var o=r.fillAlpha,a=r.renderFill,i=r.renderOutline,l=r.segmentColor,s=r.outlineWidth,c=r.segmentsHidden,d="".concat(e,"-").concat(t,"-").concat(n),u=Fi.get(d);if(!u)return Fi.set(d,{fillAlpha:o,renderFill:a,renderOutline:i,outlineWidth:s,segmentColor:l.slice(),segmentsHidden:new Set(c)}),{forceOpacityUpdate:!0,forceColorUpdate:!0};var v=u.fillAlpha,f=u.renderFill,g=u.renderOutline,h=u.outlineWidth,p=u.segmentColor,m=u.segmentsHidden,w=p[0]!==l[0]||p[1]!==l[1]||p[2]!==l[2],E=p[3]!==l[3]||v!==o||f!==a||g!==i||h!==s||m.has(n)!==c.has(n);return Fi.set(d,{fillAlpha:o,renderFill:a,renderOutline:i,outlineWidth:s,segmentColor:l.slice(),segmentsHidden:new Set(c)}),{forceOpacityUpdate:E,forceColorUpdate:w}}function Xi(e,t,n){return Zi.apply(this,arguments)}function Zi(){return(Zi=Va(Ba().mark((function e(t,n,r){return Ba().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Li(t.element,n,r);case 2:case"end":return e.stop()}}),e)})))).apply(this,arguments)}var Ji={render:function(e,t,n){return qi.apply(this,arguments)},addSegmentationRepresentation:function(e,t,n){return Hi.apply(this,arguments)},removeSegmentationRepresentation:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]&&arguments[2];(function(e,t){var n=fa(e);if(void 0===n)throw new Error("ToolGroup with ToolGroupId ".concat(e," does not exist"));var r,o=function(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=function(e,t){if(e){if("string"==typeof e)return Vi(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?Vi(e,t):void 0}}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var r=0,o=function(){};return{s:o,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,i=!0,l=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return i=e.done,e},e:function(e){l=!0,a=e},f:function(){try{i||null==n.return||n.return()}finally{if(l)throw a}}}}(n.viewportsInfo);try{for(o.s();!(r=o.n()).done;){var a=r.value,i=a.viewportId,l=a.renderingEngineId,s=(0,J.getEnabledElementByIds)(i,l);Ui(s.viewport.element,t)}}catch(e){o.e(e)}finally{o.f()}})(e,t),Zt(e,t),n&&fa(e).getViewportsInfo().forEach((function(e){var t=e.viewportId,n=e.renderingEngineId;(0,J.getEnabledElementByIds)(t,n).viewport.render()}))}};function $i(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}var Qi=function(e){pa(o,e);var t,n,r=(t=o,n=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,r=wa(t);if(n){var o=wa(this).constructor;e=Reflect.construct(r,arguments,o)}else e=r.apply(this,arguments);return ma(this,e)});function o(){var e,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{configuration:{}};return oe(this,o),ae(ga(e=r.call(this,t,n)),"renderSegmentation",(function(t){var n=fa(t);if(n){var r=Lt(t);if(r&&0!==r.length){var o=n.viewportsInfo.map((function(e){var t=e.renderingEngineId,n=e.viewportId,r=(0,J.getEnabledElementByIds)(n,t);if(r)return r.viewport})),a=r.map((function(n){var r,a,i=e._getMergedRepresentationsConfig(t),l=[],s=(ae(r={},gt.Labelmap,Ji),ae(r,gt.Contour,Mi),ae(r,gt.Surface,si),r)[n.type],c=function(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=function(e,t){if(e){if("string"==typeof e)return $i(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?$i(e,t):void 0}}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var r=0,o=function(){};return{s:o,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,i=!0,l=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return i=e.done,e},e:function(e){l=!0,a=e},f:function(){try{i||null==n.return||n.return()}finally{if(l)throw a}}}}(o);try{for(c.s();!(a=c.n()).done;){var d=a.value,u=s.render(d,n,i);l.push(u)}}catch(e){c.e(e)}finally{c.f()}return l}));Promise.allSettled(a).then((function(){o.forEach((function(e){e.render()}))}))}}})),e}return re(o,[{key:"onSetToolEnabled",value:function(){var e=this.toolGroupId,t=Lt(e);t&&0!==t.length&&t.forEach((function(t){xa(e,t.segmentationRepresentationUID,!0)}))}},{key:"onSetToolDisabled",value:function(){var e=this.toolGroupId,t=Lt(e);t&&0!==t.length&&t.forEach((function(t){xa(e,t.segmentationRepresentationUID,!1)}))}},{key:"_getMergedRepresentationsConfig",value:function(e){var t=Ta(e),n=Ia();return J.utilities.deepMerge(n,t)}}]),o}(La);ae(Qi,"toolName",void 0),Qi.toolName="SegmentationDisplay";var el=Qi;function tl(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}var nl=function(){function e(){var t=this;oe(this,e),ae(this,"_needsRender",new Set),ae(this,"_animationFrameSet",!1),ae(this,"_animationFrameHandle",null),ae(this,"hasBeenDestroyed",void 0),ae(this,"_renderFlaggedToolGroups",(function(){t._throwIfDestroyed();for(var e=0,n=Array.from(t._needsRender.values());e<n.length;e++){var r=n[e];if(t._triggerRender(r),t._needsRender.delete(r),0===t._needsRender.size)return t._animationFrameSet=!1,void(t._animationFrameHandle=null)}}))}return re(e,[{key:"removeToolGroup",value:function(e){this._needsRender.delete(e),0===this._needsRender.size&&this._reset()}},{key:"renderToolGroupSegmentations",value:function(e){this._setToolGroupSegmentationToBeRenderedNextFrame([e])}},{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:"_setToolGroupSegmentationToBeRenderedNextFrame",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._renderFlaggedToolGroups),this._animationFrameSet=!0)}},{key:"_triggerRender",value:function(e){var t=fa(e);if(t){var n=t.viewportsInfo,r=[];n.forEach((function(e){var t=e.viewportId,n=e.renderingEngineId,o=(0,J.getRenderingEngine)(n);o?r.push(o.getViewport(t)):console.warn("rendering Engine has been destroyed")}));var o=t.getToolInstance(el.toolName);o?(r.forEach((function(e){e.element.addEventListener(J.Enums.Events.IMAGE_RENDERED,a)})),o.renderSegmentation(e)):console.warn("No segmentation tool found inside",e)}else console.warn("No tool group found with toolGroupId: ".concat(e));function a(e){var t=e.detail,n=t.element,r=t.viewportId,o=t.renderingEngineId;n.removeEventListener(J.Enums.Events.IMAGE_RENDERED,a);var i=Fr(r,o);if(i){var l={toolGroupId:i.id,viewportId:r};(0,J.triggerEvent)(J.eventTarget,Q.SEGMENTATION_RENDERED,function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?tl(Object(n),!0).forEach((function(t){ae(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):tl(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}({},l))}else console.warn("toolGroup has been destroyed")}}},{key:"_reset",value:function(){window.cancelAnimationFrame(this._animationFrameHandle),this._needsRender.clear(),this._animationFrameSet=!1,this._animationFrameHandle=null}}]),e}(),rl=new nl;function ol(e){rl.renderToolGroupSegmentations(e)}var al=ol,il=function(e){var t=e.detail,n=t.segmentationId,r=t.modifiedSlicesToUse,o=Pt(n),a=o.representationData,i=o.type;if(i!==gt.Labelmap)throw new Error("onSegmentationDataModified: representationType ".concat(i," not supported yet"));var l=J.cache.getVolume(a[i].volumeId);if(l){var s,c=l.imageData,d=l.vtkOpenGLTexture;if(r&&Array.isArray(r))s=r;else{var u=c.getDimensions()[2];s=Lr(Array(u).keys())}s.forEach((function(e){d.setUpdatedFrame(e)})),c.modified(),Vt(n).forEach((function(e){al(e)}))}else console.warn("segmentation not found in cache")},ll=function(e){var t=e.detail.toolGroupId;al(t)},sl=function(e){var t=e.detail,n=t.toolGroupId;t.segmentationRepresentationUID,al(n)},cl=function(e,t,n){var r=Lt(e);if(r&&0!==r.length){var o=r.map((function(e){return e.segmentationRepresentationUID})),a=t;if(a){var i=t.filter((function(e){return!o.includes(e)}));if(i.length>0)throw new Error("The following segmentationRepresentationUIDs are not part of the toolGroup: ".concat(JSON.stringify(i)))}else a=o;a.forEach((function(t){!function(e,t,n){var r=Yt(e,t).type;if(r===gt.Labelmap)Ji.removeSegmentationRepresentation(e,t,n);else{if(r!==gt.Contour)throw new Error("The representation ".concat(r," is not supported yet"));Mi.removeSegmentationRepresentation(e,t,n)}}(e,t,n)}))}},dl=function(e){var t=Ke.toolGroups.findIndex((function(t){return t.id===e}));t>-1&&(rl.removeToolGroup(e),cl(e),Ke.toolGroups.splice(t,1))};function ul(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}var vl=function(){var e,t=function(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=function(e,t){if(e){if("string"==typeof e)return ul(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?ul(e,t):void 0}}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var r=0,o=function(){};return{s:o,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,i=!0,l=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return i=e.done,e},e:function(e){l=!0,a=e},f:function(){try{i||null==n.return||n.return()}finally{if(l)throw a}}}}(Lr(Ke.toolGroups));try{for(t.s();!(e=t.n()).done;){var n=e.value;dl(n.id)}}catch(e){t.e(e)}finally{t.f()}Ke.toolGroups=[]},fl=!1;function gl(){fl||(function(){pl();var e=J.Enums.Events.ELEMENT_ENABLED,t=J.Enums.Events.ELEMENT_DISABLED;J.eventTarget.addEventListener(e,ia),J.eventTarget.addEventListener(t,sa)}(),ml(),J.eventTarget.addEventListener(Q.ANNOTATION_MODIFIED,da),J.eventTarget.addEventListener(Q.ANNOTATION_SELECTION_CHANGE,ua),J.eventTarget.addEventListener(Q.ANNOTATION_SELECTION_CHANGE,ua),J.eventTarget.addEventListener(Q.SEGMENTATION_MODIFIED,va),J.eventTarget.addEventListener(Q.SEGMENTATION_DATA_MODIFIED,il),J.eventTarget.addEventListener(Q.SEGMENTATION_REPRESENTATION_MODIFIED,ll),J.eventTarget.addEventListener(Q.SEGMENTATION_REPRESENTATION_REMOVED,sl),fl=!0)}function hl(){pl(),ml(),vl(),qe={},Ke=le()(ze);var e=Qe(),t=Rt();e.restoreAnnotations({}),t.resetState(),fl=!1}function pl(){var e=J.Enums.Events.ELEMENT_ENABLED,t=J.Enums.Events.ELEMENT_DISABLED;J.eventTarget.removeEventListener(e,ia),J.eventTarget.removeEventListener(t,sa)}function ml(){J.eventTarget.removeEventListener(Q.ANNOTATION_MODIFIED,da),J.eventTarget.removeEventListener(Q.ANNOTATION_SELECTION_CHANGE,ua),J.eventTarget.removeEventListener(Q.ANNOTATION_SELECTION_CHANGE,ua),J.eventTarget.removeEventListener(Q.SEGMENTATION_MODIFIED,va),J.eventTarget.removeEventListener(Q.SEGMENTATION_DATA_MODIFIED,il),J.eventTarget.removeEventListener(Q.SEGMENTATION_REPRESENTATION_MODIFIED,ll),J.eventTarget.removeEventListener(Q.SEGMENTATION_REPRESENTATION_REMOVED,sl)}function wl(e){var t=e.toolName,n=void 0!==Ke.tools[t];if(!t)throw new Error("No Tool Found for the ToolClass ".concat(e.name));if(n)throw new Error("".concat(t," has already been added globally"));Ke.tools[t]={toolClass:e}}function El(e){var t=e.toolName;if(!t)throw new Error("No tool found for: ".concat(e.name));if(void 0===!Ke.tools[t])throw new Error("".concat(t," cannot be removed because it has not been added"));delete Ke.tools[t]}function yl(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function Il(e){var t,n=function(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=function(e,t){if(e){if("string"==typeof e)return yl(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?yl(e,t):void 0}}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var r=0,o=function(){};return{s:o,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,i=!0,l=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return i=e.done,e},e:function(e){l=!0,a=e},f:function(){try{i||null==n.return||n.return()}finally{if(l)throw a}}}}(po(e,Hr(e,[Xe.Active,Xe.Passive])));try{for(n.s();!(t=n.n()).done;){var r=t.value.tool.cancel(e);if(r)return r}}catch(e){n.e(e)}finally{n.f()}}var bl=function(){function e(t,n,r,o){var a=this;oe(this,e),ae(this,"_enabled",void 0),ae(this,"_eventName",void 0),ae(this,"_eventHandler",void 0),ae(this,"_ignoreFiredEvents",void 0),ae(this,"_sourceViewports",void 0),ae(this,"_targetViewports",void 0),ae(this,"_viewportOptions",{}),ae(this,"_options",void 0),ae(this,"id",void 0),ae(this,"_onEvent",(function(e){if(!0!==a._ignoreFiredEvents&&a._targetViewports.length){var t=(0,J.getEnabledElement)(e.currentTarget);if(t){var n=t.renderingEngineId,r=t.viewportId;a._sourceViewports.find((function(e){return e.viewportId===r}))&&a.fireEvent({renderingEngineId:n,viewportId:r},e)}}})),this._enabled=!0,this._eventName=n,this._eventHandler=r,this._ignoreFiredEvents=!1,this._sourceViewports=[],this._targetViewports=[],this._options=o||{},this.id=t}return re(e,[{key:"isDisabled",value:function(){return!this._enabled||!this._hasSourceElements()}},{key:"setOptions",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};this._viewportOptions[e]=t}},{key:"getOptions",value:function(e){return this._viewportOptions[e]}},{key:"add",value:function(e){this.addTarget(e),this.addSource(e)}},{key:"addSource",value:function(e){if(!_l(this._sourceViewports,e)){var t=e.renderingEngineId,n=e.viewportId;(0,J.getRenderingEngine)(t).getViewport(n).element.addEventListener(this._eventName,this._onEvent.bind(this)),this._updateDisableHandlers(),this._sourceViewports.push(e)}}},{key:"addTarget",value:function(e){_l(this._targetViewports,e)||(this._targetViewports.push(e),this._updateDisableHandlers())}},{key:"getSourceViewports",value:function(){return this._sourceViewports}},{key:"getTargetViewports",value:function(){return this._targetViewports}},{key:"destroy",value:function(){var e=this;this._sourceViewports.forEach((function(t){return e.removeSource(t)})),this._targetViewports.forEach((function(t){return e.removeTarget(t)}))}},{key:"remove",value:function(e){this.removeTarget(e),this.removeSource(e)}},{key:"removeSource",value:function(e){var t=Cl(this._sourceViewports,e);if(-1!==t){var n=function(e){var t=(0,J.getRenderingEngine)(e.renderingEngineId);if(!t)throw new Error("No RenderingEngine for Id: ".concat(e.renderingEngineId));return t.getViewport(e.viewportId).element}(e);this._sourceViewports.splice(t,1),n.removeEventListener(this._eventName,this._eventHandler),this._updateDisableHandlers()}}},{key:"removeTarget",value:function(e){var t=Cl(this._targetViewports,e);-1!==t&&(this._targetViewports.splice(t,1),this._updateDisableHandlers())}},{key:"hasSourceViewport",value:function(e,t){return _l(this._sourceViewports,{renderingEngineId:e,viewportId:t})}},{key:"hasTargetViewport",value:function(e,t){return _l(this._targetViewports,{renderingEngineId:e,viewportId:t})}},{key:"fireEvent",value:function(e,t){var n=this;if(!this.isDisabled()&&!this._ignoreFiredEvents){this._ignoreFiredEvents=!0;var r=[];try{for(var o=0;o<this._targetViewports.length;o++){var a=this._targetViewports[o];if(e.viewportId!==a.viewportId){var i=this._eventHandler(this,e,a,t,this._options);i instanceof Promise&&r.push(i)}}}catch(e){console.warn("Synchronizer, for: ".concat(this._eventName),e)}finally{r.length?Promise.allSettled(r).then((function(){n._ignoreFiredEvents=!1})):this._ignoreFiredEvents=!1}}}},{key:"_hasSourceElements",value:function(){return 0!==this._sourceViewports.length}},{key:"_updateDisableHandlers",value:function(){var e=function(e,t){for(var n=[],r=e.concat(t),o=function(){var e=r[a];n.some((function(t){return e.renderingEngineId===t.renderingEngineId&&e.viewportId===t.viewportId}))||n.push(e)},a=0;a<r.length;a++)o();return n}(this._sourceViewports,this._targetViewports),t=this.remove,n=function(e){t(e.detail.element)};e.forEach((function(e){var t=(0,J.getRenderingEngine)(e.renderingEngineId).getViewport(e.viewportId);if(t){var r=t.element;r.removeEventListener(J.Enums.Events.ELEMENT_DISABLED,n),r.addEventListener(J.Enums.Events.ELEMENT_DISABLED,n)}}))}}]),e}();function Cl(e,t){return e.findIndex((function(e){return t.renderingEngineId===e.renderingEngineId&&t.viewportId===e.viewportId}))}function _l(e,t){return e.some((function(e){return e.renderingEngineId===t.renderingEngineId&&e.viewportId===t.viewportId}))}var Tl=bl,Ol=function(e,t,n,r){if(Ke.synchronizers.some((function(t){return t.id===e})))throw new Error("Synchronizer with id '".concat(e,"' already exists."));var o=new Tl(e,t,n,r);return Ke.synchronizers.push(o),o},Dl=function(){for(;Ke.synchronizers.length>0;)Ke.synchronizers.pop().destroy()},Sl=function(e){return Ke.synchronizers.find((function(t){return t.id===e}))},kl=function(){return Ke.synchronizers},Ml=function(e){var t=Ke.synchronizers.findIndex((function(t){return t.id===e}));t>-1&&(Ke.synchronizers[t].destroy(),Ke.synchronizers.splice(t,1))},xl=y(485),Rl=y.n(xl),Pl=Symbol("DefinedCursors"),Al=new Set(["alias","all-scroll","auto","cell","col-resize","context-menu","copy","crosshair","default","e-resize","ew-resize","grab","grabbing","help","move","ne-resize","nesw-resize","no-drop","none","not-allowed","n-resize","ns-resize","nw-resize","nwse-resize","pointer","progress","row-resize","se-resize","s-resize","sw-resize","text","vertical-text","wait","w-resize","zoom-in","zoom-out"]),Nl=function(){function e(t,n){oe(this,e),ae(this,"name",void 0),ae(this,"fallback",void 0),this.name=t+"",this.fallback=n}return re(e,[{key:"getName",value:function(){return this.name+""}},{key:"addFallbackStyleProperty",value:function(t){var n=this.fallback;return n instanceof e?"".concat(t,", ").concat(n.getStyleProperty()):t+""}},{key:"getStyleProperty",value:function(){return this.addFallbackStyleProperty(this.name)+""}}],[{key:"getDefinedCursor",value:function(t){var n=Ll(e,Pl),r=n.get(t);return r instanceof e?r:Al.has(t)?(r=new e(t),n.set(t,r),r):void 0}},{key:"setDefinedCursor",value:function(t,n){return n instanceof e&&(Ll(e,Pl).set(t,n),!0)}}]),e}();function Ll(e,t){var n=e[t];return n instanceof Map||(n=new Map,Object.defineProperty(e,t,{value:n})),n}var Ul=Al.values();function Vl(){return Vl="undefined"!=typeof Reflect&&Reflect.get?Reflect.get.bind():function(e,t,n){var r=function(e,t){for(;!Object.prototype.hasOwnProperty.call(e,t)&&null!==(e=wa(e)););return e}(e,t);if(r){var o=Object.getOwnPropertyDescriptor(r,t);return o.get?o.get.call(arguments.length<3?e:n):o.value}},Vl.apply(this,arguments)}var jl=function(e){return e.Default="",e.Highlighted="Highlighted",e.Selected="Selected",e.Locked="Locked",e}(jl||{}),Bl=jl;var Wl=function(e){pa(o,e);var t,n,r=(t=o,n=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,r=wa(t);if(n){var o=wa(this).constructor;e=Reflect.construct(r,arguments,o)}else e=r.apply(this,arguments);return ma(this,e)});function o(e,t,n,a,i){var l;return oe(this,o),ae(ga(l=r.call(this,a||o.getUniqueInstanceName("image-cursor"),i)),"url",void 0),ae(ga(l),"x",void 0),ae(ga(l),"y",void 0),l.url=e,l.x=Number(t)||0,l.y=Number(n)||0,l}return re(o,[{key:"getStyleProperty",value:function(){var e=this.url,t=this.x,n=this.y,r="url('".concat(e,"')");return t>=0&&n>=0&&(t>0||n>0)&&(r+=" ".concat(t," ").concat(n)),this.addFallbackStyleProperty(r)}}],[{key:"getUniqueInstanceName",value:function(e){return"".concat(e,"-").concat(J.utilities.getRuntimeId(o))}}]),o}(Nl),Fl={iconContent:"",iconSize:16,viewBox:{x:16,y:16},mousePoint:{x:8,y:8},mousePointerGroupString:'\n <path stroke="{{color}}" d="M8 16L8 0"></path>\n <path stroke="{{color}}" d="M16 8L0 8"></path>\n '},Hl={x:127,y:60},Gl='\n<rect fill="{{color}}" x="80.19" y="25.03" width="47.14" height="15.85"/>\n',ql='\n<rect fill="{{color}}" x="80.19" y="25.03" width="47.14" height="15.85"/>\n<rect fill="{{color}}" x="95.84" y="9.38" width="15.85" height="47.14"/>\n',zl='<path fill="{{color}}" d="M82.89,10a12.09,12.09,0,0,0-16.8-2.5l-27.5,20.4-8.5-6.3a2.93,2.93,0,0,1-1.1-3,14.66,14.66,0,0,0,.1-6.6,14.08,14.08,0,1,0-6.5,15.2,2.87,2.87,0,0,1,3.2.2l8.2,6.1-8.2,6.1a2.87,2.87,0,0,1-3.2.2,14.16,14.16,0,1,0,6.7,14.4,14,14,0,0,0-.3-5.8,2.93,2.93,0,0,1,1.1-3l8.5-6.3,27.5,20.4A11.91,11.91,0,0,0,82.89,57l-31.7-23.5ZM15.29,21a5.9,5.9,0,1,1,5.9-5.9A5.91,5.91,0,0,1,15.29,21Zm0,36.8a5.9,5.9,0,1,1,5.9-5.9A5.91,5.91,0,0,1,15.29,57.77Zm28.3-21.5a2.8,2.8,0,1,1,2.8-2.8A2.8,2.8,0,0,1,43.59,36.27Z" transform="translate(-1.17 -0.96)"/>',Kl='<path fill="{{color}}" d="M8.86,2.25V66.08H72.69V2.25H8.86ZM65.28,58.67h-49v-49h49v49Z" transform="translate(-8.86 -2.25)"/>',Yl='<path fill="{{color}}" d="M40.77,2.25A31.92,31.92,0,1,0,72.69,34.16,31.92,31.92,0,0,0,40.77,2.25Zm0,57.63A25.71,25.71,0,1,1,66.48,34.16,25.71,25.71,0,0,1,40.77,59.87Z" transform="translate(-8.86 -2.25)"/>',Xl={Angle:Zl(Fl,{iconContent:'<path fill="{{color}}" d="M1203 544q0 13-10 23l-393 393 393 393q10 10 10 23t-10 23l-50\n 50q-10 10-23 10t-23-10l-466-466q-10-10-10-23t10-23l466-466q10-10 23-10t23\n 10l50 50q10 10 10 23z" />',viewBox:{x:1792,y:1792}}),ArrowAnnotate:Zl(Fl,{iconContent:'<g id="arrowAnnotate-group" fill="none" stroke-width="1" stroke="{{color}}" stroke-linecap="round" stroke-linejoin="round">\n <path id="arrowAnnotate-arrow" d="M23,7 l-15,15 M7,17 l0,6 6,0" stroke-width="2" />\n </g>',viewBox:{x:24,y:24}}),Bidirectional:Zl(Fl,{iconContent:'<g fill="{{color}}" stroke-width="3" stroke="{{color}}">\n <path d="M27.63 3.21L3.12 28.81"></path>\n <path d="M27.63 15.75L15.27 4.43"></path>\n <path d="M16.5 4.28C16.5 4.96 15.95 5.51 15.27 5.51C14.59 5.51 14.03 4.96 14.03 4.28C14.03 3.59 14.59 3.04 15.27 3.04C15.95 3.04 16.5 3.59 16.5 4.28Z" ></path>\n <path d="M28.87 3.19C28.87 3.87 28.31 4.43 27.63 4.43C26.95 4.43 26.4 3.87 26.4 3.19C26.4 2.51 26.95 1.95 27.63 1.95C28.31 1.95 28.87 2.51 28.87 3.19Z"></path>\n <path d="M28.87 15.75C28.87 16.43 28.31 16.99 27.63 16.99C26.95 16.99 26.4 16.43 26.4 15.75C26.4 15.07 26.95 14.51 27.63 14.51C28.31 14.51 28.87 15.07 28.87 15.75Z"></path>\n <path d="M4.73 28.44C4.73 29.12 4.17 29.68 3.49 29.68C2.81 29.68 2.25 29.12 2.25 28.44C2.25 27.76 2.81 27.2 3.49 27.2C4.17 27.2 4.73 27.76 4.73 28.44Z"></path>\n </g>',viewBox:{x:48,y:48}}),CobbAngle:Zl(Fl,{iconContent:'<g stroke="{{color}}" stroke-width="3">\n <path d="M28.59 2.34L3.82 12.32"></path>\n <path d="M28.59 29.66L3.82 19.68"></path>\n <path stroke-dasharray="2" fill-opacity="0" d="M12.37\n 23.06C12.67 22.36 12.85 21.93 12.92 21.76C14.6 17.8 14.68 13.35 13.15\n 9.33C13.11 9.24 13.02 9 12.88 8.63">\n </path>\n </g>',viewBox:{x:32,y:32}}),CircleROI:Zl(Fl,{iconContent:'<circle stroke="{{color}}" fill="none" stroke-width="3" cx="16" cy="16" r="14" />',viewBox:{x:32,y:32}}),EllipticalROI:Zl(Fl,{iconContent:'<path stroke="{{color}}" fill="none" stroke-width="3" d="M30.74 15.76C30.74 20.99 24.14 25.23 16\n 25.23C7.86 25.23 1.26 20.99 1.26 15.76C1.26 10.54 7.86 6.3 16 6.3C24.14\n 6.3 30.74 10.54 30.74 15.76Z" />',viewBox:{x:32,y:32}}),FreehandROI:Zl(Fl,{iconContent:'<g fill="{{color}}" stroke="{{color}}" stroke-width="2">\n <ellipse ry="1" rx="1" id="svg_3" cy="4.240343" cx="14.306499"/>\n <line id="svg_4" y2="3.58462" x2="12.242186" y1="3.997482" x1="13.432202"/>\n <line id="svg_5" y2="3.268901" x2="10.857882" y1="3.608906" x1="12.387902"/>\n <line id="svg_6" y2="3.147471" x2="9.740724" y1="3.293187" x1="10.955026"/>\n <line id="svg_7" y2="3.147471" x2="8.089274" y1="3.196043" x1="9.983585"/>\n <line id="svg_8" y2="3.268901" x2="6.874972" y1="3.123185" x1="8.307848"/>\n <line id="svg_9" y2="3.657478" x2="5.587812" y1="3.220329" x1="7.020688"/>\n <line id="svg_10" y2="4.046054" x2="4.737801" y1="3.560334" x1="5.854959"/>\n <line id="svg_11" y2="4.337487" x2="4.300652" y1="3.997482" x1="4.834945"/>\n <line id="svg_12" y2="4.726063" x2="3.88779" y1="4.191771" x1="4.470655"/>\n <line id="svg_15" y2="5.3575" x2="3.377783" y1="4.604633" x1="3.960648"/>\n <line id="svg_16" y2="6.183226" x2="2.916348" y1="5.138926" x1="3.547785"/>\n <line id="svg_17" y2="6.960379" x2="2.770632" y1="5.867507" x1="3.037779"/>\n <line id="svg_18" y2="7.713246" x2="2.673488" y1="6.741804" x1="2.819204"/>\n <line id="svg_19" y2="8.684687" x2="2.697774" y1="7.616102" x1="2.673488"/>\n <line id="svg_20" y2="9.753273" x2="2.892062" y1="8.611829" x1="2.697774"/>\n <line id="svg_21" y2="10.724714" x2="3.134923" y1="9.534698" x1="2.84349"/>\n <line id="svg_23" y2="11.647583" x2="3.596357" y1="10.578998" x1="3.086351"/>\n <line id="svg_25" y2="12.521881" x2="4.276366" y1="11.501867" x1="3.499213"/>\n <line id="svg_26" y2="13.930471" x2="5.830673" y1="12.376165" x1="4.13065"/>\n <line id="svg_28" y2="14.707624" x2="7.263549" y1="13.881899" x1="5.733528"/>\n <line id="svg_29" y2="15.339061" x2="8.963571" y1="14.61048" x1="7.06926"/>\n <line id="svg_30" y2="15.581921" x2="10.882168" y1="15.314775" x1="8.817855"/>\n <line id="svg_31" y2="15.460491" x2="12.023612" y1="15.581921" x1="10.785024"/>\n <line id="svg_33" y2="15.120487" x2="13.092197" y1="15.484777" x1="11.877895"/>\n <line id="svg_34" y2="14.586194" x2="13.86935" y1="15.217631" x1="12.897909"/>\n <line id="svg_35" y2="13.833327" x2="14.597931" y1="14.756196" x1="13.699348"/>\n <line id="svg_37" y2="12.716169" x2="15.180796" y1="13.881899" x1="14.549359"/>\n <line id="svg_39" y2="11.429009" x2="15.520801" y1="12.813313" x1="15.15651"/>\n <ellipse ry="1" rx="1" id="svg_40" cy="10.967574" cx="15.520801"/>\n </g>',viewBox:{x:18,y:18}}),FreehandROISculptor:Zl(Fl,{iconContent:'<g id="icon-freehand-sculpt" fill="none" stroke-width="1.5" stroke="{{color}}" stroke-linecap="round" stroke-linejoin="round">\n <line id="svg_1" y2="2.559367" x2="10.184807" y1="4.467781" x1="8.81711"/>\n <line id="svg_4" y2="1.493836" x2="11.727442" y1="2.766112" x1="10.089386"/>\n <line id="svg_7" y2="1.080346" x2="13.047428" y1="1.748291" x1="11.345759"/>\n <line id="svg_8" y2="1.000829" x2="14.351511" y1="1.112153" x1="12.77707"/>\n <line id="svg_9" y2="1.350705" x2="15.242104" y1="0.905408" x1="13.969828"/>\n <line id="svg_10" y2="2.098167" x2="15.862339" y1="1.14396" x1="14.955842"/>\n <line id="svg_11" y2="3.195505" x2="16.41896" y1="1.939133" x1="15.766918"/>\n <line id="svg_12" y2="4.292843" x2="16.530284" y1="2.925147" x1="16.387153"/>\n <line id="svg_16" y2="5.644637" x2="16.196311" y1="3.831643" x1="16.593898"/>\n <line id="svg_18" y2="7.266789" x2="15.623787" y1="5.19934" x1="16.275829"/>\n <line id="svg_19" y2="10.813258" x2="14.526449" y1="6.726071" x1="15.766918"/>\n <line id="svg_20" y2="5.056209" x2="8.085552" y1="4.181519" x1="8.976145"/>\n <line id="svg_23" y2="5.326568" x2="7.481221" y1="4.78585" x1="8.403621"/>\n <line id="svg_24" y2="5.565119" x2="6.749662" y1="5.294761" x1="7.624352"/>\n <line id="svg_25" y2="5.994512" x2="5.429675" y1="5.533312" x1="6.956407"/>\n <line id="svg_27" y2="6.551133" x2="4.284627" y1="5.962706" x1="5.572807"/>\n <line id="svg_28" y2="7.584858" x2="3.044158" y1="6.392099" x1="4.427758"/>\n <line id="svg_29" y2="8.84123" x2="2.185372" y1="7.489437" x1="3.219096"/>\n <line id="svg_31" y2="10.606513" x2="1.644654" y1="8.602678" x1="2.280792"/>\n <line id="svg_32" y2="13.214679" x2="1.48562" y1="10.352058" x1="1.724171"/>\n <line id="svg_33" y2="14.375631" x2="1.676461" y1="12.992031" x1="1.453813"/>\n <line id="svg_34" y2="15.298031" x2="2.264889" y1="14.152983" x1="1.517427"/>\n <line id="svg_35" y2="16.172721" x2="3.521261" y1="14.948155" x1="1.915013"/>\n <line id="svg_36" y2="16.824762" x2="5.207027" y1="15.997783" x1="3.28271"/>\n <line id="svg_38" y2="17.063314" x2="7.035924" y1="16.745245" x1="4.968475"/>\n <line id="svg_39" y2="16.888376" x2="9.278311" y1="17.047411" x1="6.733758"/>\n <line id="svg_40" y2="16.284045" x2="10.661911" y1="16.983797" x1="8.992048"/>\n <line id="svg_41" y2="15.313934" x2="11.647925" y1="16.395369" x1="10.455166"/>\n <line id="svg_44" y2="13.898527" x2="12.82478" y1="15.425259" x1="11.504794"/>\n <line id="svg_45" y2="12.037824" x2="14.144766" y1="14.312017" x1="12.522614"/>\n <line id="svg_47" y2="10.59061" x2="14.605966" y1="12.228665" x1="13.953925"/>\n <ellipse ry="1" rx="1" id="svg_48" cy="3.982726" cx="13.460918"/>\n </g>',viewBox:{x:18,y:18}}),Length:Zl(Fl,{iconContent:'<g id="length-group" fill="none" stroke-width="1" stroke="{{color}}" stroke-linecap="round" stroke-linejoin="round">\n <path id="length-dashes" d="m22.5,6 -16.5,16.5" stroke-width="3" stroke-dasharray="0.6666,5" />\n </g>',viewBox:{x:24,y:24}}),Probe:Zl(Fl,{iconContent:'<path fill="{{color}}" d="M1152 896q0 106-75 181t-181 75-181-75-75-181 75-181 181-75 181 75\n 75 181zm-256-544q-148 0-273 73t-198 198-73 273 73 273 198 198 273 73 273-73\n 198-198 73-273-73-273-198-198-273-73zm768 544q0 209-103 385.5t-279.5\n 279.5-385.5 103-385.5-103-279.5-279.5-103-385.5 103-385.5 279.5-279.5\n 385.5-103 385.5 103 279.5 279.5 103 385.5z" />',viewBox:{x:1792,y:1792}}),RectangleROI:Zl(Fl,{iconContent:'<path fill="{{color}}" d="M1312 256h-832q-66 0-113 47t-47 113v832q0 66 47\n 113t113 47h832q66 0 113-47t47-113v-832q0-66-47-113t-113-47zm288 160v832q0\n 119-84.5 203.5t-203.5 84.5h-832q-119 0-203.5-84.5t-84.5-203.5v-832q0-119\n 84.5-203.5t203.5-84.5h832q119 0 203.5 84.5t84.5 203.5z" />',viewBox:{x:1792,y:1792}}),TextMarker:Zl(Fl,{iconContent:'<path fill="{{color}}" d="M789 559l-170 450q33 0 136.5 2t160.5 2q19 0\n 57-2-87-253-184-452zm-725 1105l2-79q23-7 56-12.5t57-10.5 49.5-14.5 44.5-29\n 31-50.5l237-616 280-724h128q8 14 11 21l205 480q33 78 106 257.5t114 274.5q15\n 34 58 144.5t72 168.5q20 45 35 57 19 15 88 29.5t84 20.5q6 38 6 57 0 5-.5\n 13.5t-.5 12.5q-63 0-190-8t-191-8q-76 0-215 7t-178 8q0-43 4-78l131-28q1 0\n 12.5-2.5t15.5-3.5 14.5-4.5 15-6.5 11-8 9-11\n 2.5-14q0-16-31-96.5t-72-177.5-42-100l-450-2q-26 58-76.5 195.5t-50.5 162.5q0\n 22 14 37.5t43.5 24.5 48.5 13.5 57 8.5 41 4q1 19 1 58 0 9-2 27-58\n 0-174.5-10t-174.5-10q-8 0-26.5 4t-21.5 4q-80 14-188 14z" />',viewBox:{x:1792,y:1792}}),Crosshairs:Zl(Fl,{iconContent:'<path fill="{{color}}" d="M1325 1024h-109q-26 0-45-19t-19-45v-128q0-26\n 19-45t45-19h109q-32-108-112.5-188.5t-188.5-112.5v109q0 26-19 45t-45\n 19h-128q-26 0-45-19t-19-45v-109q-108 32-188.5 112.5t-112.5 188.5h109q26\n 0 45 19t19 45v128q0 26-19 45t-45 19h-109q32 108 112.5 188.5t188.5\n 112.5v-109q0-26 19-45t45-19h128q26 0 45 19t19 45v109q108-32\n 188.5-112.5t112.5-188.5zm339-192v128q0 26-19 45t-45 19h-143q-37 161-154.5\n 278.5t-278.5 154.5v143q0 26-19 45t-45 19h-128q-26\n 0-45-19t-19-45v-143q-161-37-278.5-154.5t-154.5-278.5h-143q-26\n 0-45-19t-19-45v-128q0-26 19-45t45-19h143q37-161\n 154.5-278.5t278.5-154.5v-143q0-26 19-45t45-19h128q26 0 45 19t19 45v143q161\n 37 278.5 154.5t154.5 278.5h143q26 0 45 19t19 45z" />',viewBox:{x:1792,y:1792}}),Eraser:Zl(Fl,{iconContent:'<path transform="translate(0,1792) scale(1,-1)" fill="{{color}}" d="M960 1408l336-384h-768l-336 384h768zm1013-1077q15\n 34 9.5 71.5t-30.5 65.5l-896 1024q-38 44-96 44h-768q-38\n 0-69.5-20.5t-47.5-54.5q-15-34-9.5-71.5t30.5-65.5l896-1024q38-44 96-44h768q38\n 0 69.5 20.5t47.5 54.5z" />',viewBox:{x:2048,y:1792}}),Magnify:Zl(Fl,{iconContent:'<path fill="{{color}}" d="M508.5 481.6l-129-129c-2.3-2.3-5.3-3.5-8.5-3.5h-10.3C395\n 312 416 262.5 416 208 416 93.1 322.9 0 208 0S0 93.1 0 208s93.1 208 208 208c54.5\n 0 104-21 141.1-55.2V371c0 3.2 1.3 6.2 3.5 8.5l129 129c4.7 4.7 12.3 4.7 17\n 0l9.9-9.9c4.7-4.7 4.7-12.3 0-17zM208 384c-97.3 0-176-78.7-176-176S110.7 32 208\n 32s176 78.7 176 176-78.7 176-176 176z" />',viewBox:{x:512,y:512}}),Pan:Zl(Fl,{iconContent:'<path fill="{{color}}" d="M1411 541l-355 355 355 355 144-144q29-31 70-14 39 17\n 39 59v448q0 26-19 45t-45 19h-448q-42 0-59-40-17-39 14-69l144-144-355-355-355\n 355 144 144q31 30 14 69-17 40-59 40h-448q-26 0-45-19t-19-45v-448q0-42 40-59\n 39-17 69 14l144 144 355-355-355-355-144 144q-19 19-45 19-12\n 0-24-5-40-17-40-59v-448q0-26 19-45t45-19h448q42 0 59 40 17 39-14 69l-144\n 144 355 355 355-355-144-144q-31-30-14-69 17-40 59-40h448q26 0 45 19t19\n 45v448q0 42-39 59-13 5-25 5-26 0-45-19z" />',viewBox:{x:1792,y:1792}}),Rotate:Zl(Fl,{iconContent:'<path fill="{{color}}" d="M1664 256v448q0 26-19 45t-45 19h-448q-42 0-59-40-17-39\n 14-69l138-138q-148-137-349-137-104 0-198.5 40.5t-163.5 109.5-109.5\n 163.5-40.5 198.5 40.5 198.5 109.5 163.5 163.5 109.5 198.5 40.5q119 0\n 225-52t179-147q7-10 23-12 15 0 25 9l137 138q9 8 9.5 20.5t-7.5 22.5q-109\n 132-264 204.5t-327 72.5q-156 0-298-61t-245-164-164-245-61-298 61-298\n 164-245 245-164 298-61q147 0 284.5 55.5t244.5 156.5l130-129q29-31 70-14\n 39 17 39 59z" />',viewBox:{x:1792,y:1792}}),StackScroll:Zl(Fl,{iconContent:'<path fill="{{color}}" d="M24 21v2c0 0.547-0.453 1-1 1h-22c-0.547\n 0-1-0.453-1-1v-2c0-0.547 0.453-1 1-1h22c0.547 0 1 0.453 1 1zM24 13v2c0\n 0.547-0.453 1-1 1h-22c-0.547 0-1-0.453-1-1v-2c0-0.547 0.453-1 1-1h22c0.547\n 0 1 0.453 1 1zM24 5v2c0 0.547-0.453 1-1 1h-22c-0.547\n 0-1-0.453-1-1v-2c0-0.547 0.453-1 1-1h22c0.547 0 1 0.453 1 1z" />',viewBox:{x:24,y:28}}),WindowLevelRegion:Zl(Fl,{iconContent:'<path fill="{{color}}" d="M1664 416v960q0 119-84.5 203.5t-203.5 84.5h-960q-119\n 0-203.5-84.5t-84.5-203.5v-960q0-119 84.5-203.5t203.5-84.5h960q119 0 203.5\n 84.5t84.5 203.5z" />',viewBox:{x:1792,y:1792}}),WindowLevel:Zl(Fl,{iconContent:'\n <path fill="{{color}}" d="M14.5,3.5 a1 1 0 0 1 -11,11 Z" stroke="none" opacity="0.8" />\n <circle cx="9" cy="9" r="8" fill="none" stroke-width="2" stroke="{{color}}" />',viewBox:{x:18,y:18}}),Zoom:Zl(Fl,{iconContent:'\n <path fill="{{color}}" d="M508.5 481.6l-129-129c-2.3-2.3-5.3-3.5-8.5-3.5h-10.3C395\n 312 416 262.5 416 208 416 93.1 322.9 0 208 0S0 93.1 0 208s93.1 208 208 208c54.5\n 0 104-21 141.1-55.2V371c0 3.2 1.3 6.2 3.5 8.5l129 129c4.7 4.7 12.3 4.7 17\n 0l9.9-9.9c4.7-4.7 4.7-12.3 0-17zM208 384c-97.3 0-176-78.7-176-176S110.7 32 208\n 32s176 78.7 176 176-78.7 176-176 176z" />\n <path fill="{{color}}" transform="scale(0.22,0.22) translate(1400,0)" d="M1216\n 320q0 26-19 45t-45 19h-128v1024h128q26 0 45 19t19 45-19 45l-256 256q-19\n 19-45 19t-45-19l-256-256q-19-19-19-45t19-45 45-19h128v-1024h-128q-26\n 0-45-19t-19-45 19-45l256-256q19-19 45-19t45 19l256 256q19 19 19 45z" />',viewBox:{x:640,y:512}}),SegmentationFreeHandEraseInside:Zl(Fl,{iconContent:"".concat(zl," ").concat(Gl),viewBox:Hl}),SegmentationFreeHandFillInside:Zl(Fl,{iconContent:"".concat(zl," ").concat(ql),viewBox:Hl}),SegmentationFreeHandEraseOutside:Zl(Fl,{iconContent:"".concat(zl," ").concat(Gl),viewBox:Hl}),SegmentationFreeHandFillOutside:Zl(Fl,{iconContent:"".concat(zl," ").concat(ql),viewBox:Hl}),SegmentationRectangleEraseInside:Zl(Fl,{iconContent:"".concat(Kl," ").concat(Gl),viewBox:Hl}),RectangleScissor:Zl(Fl,{iconContent:"".concat(Kl," ").concat(ql),viewBox:Hl}),"RectangleScissor.FILL_INSIDE":Zl(Fl,{iconContent:"".concat(Kl," ").concat(ql),viewBox:Hl}),"RectangleScissor.FILL_OUTSIDE":Zl(Fl,{iconContent:"".concat(Kl," ").concat(ql),viewBox:Hl}),"RectangleScissor.ERASE_OUTSIDE":Zl(Fl,{iconContent:"".concat(Kl," ").concat(Gl),viewBox:Hl}),"RectangleScissor.ERASE_INSIDE":Zl(Fl,{iconContent:"".concat(Kl," ").concat(Gl),viewBox:Hl}),CircleScissor:Zl(Fl,{iconContent:"".concat(Yl," ").concat(ql),viewBox:Hl}),"CircleScissor.FILL_INSIDE":Zl(Fl,{iconContent:"".concat(Yl," ").concat(ql),viewBox:Hl}),"CircleScissor.ERASE_OUTSIDE":Zl(Fl,{iconContent:"".concat(Yl," ").concat(Gl),viewBox:Hl}),"CircleScissor.FILL_OUTSIDE":Zl(Fl,{iconContent:"".concat(Yl," ").concat(ql),viewBox:Hl})};function Zl(e,t){return Object.assign(Object.create(e),t)}function Jl(e,t,n){Xl[e]=Zl(Fl,{iconContent:t,viewBox:n})}var $l=Object.keys(Xl);function Ql(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function es(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Ql(Object(n),!0).forEach((function(t){ae(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Ql(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}var ts=new(function(){function e(){oe(this,e),ae(this,"config",void 0),this._initializeConfig({color:"rgb(255, 255, 0)",colorHighlighted:"rgb(0, 255, 0)",colorSelected:"rgb(0, 220, 0)",colorLocked:"rgb(255, 255, 0)",lineWidth:"1",lineDash:"",shadow:!0,textBoxVisibility:!0,textBoxFontFamily:"Helvetica Neue, Helvetica, Arial, sans-serif",textBoxFontSize:"14px",textBoxColor:"rgb(255, 255, 0)",textBoxColorHighlighted:"rgb(0, 255, 0)",textBoxColorSelected:"rgb(0, 255, 0)",textBoxColorLocked:"rgb(255, 255, 0)",textBoxBackground:"",textBoxLinkLineWidth:"1",textBoxLinkLineDash:"2,3",textBoxShadow:!0})}return re(e,[{key:"getAnnotationToolStyles",value:function(e){return this.config.annotations&&this.config.annotations[e]}},{key:"getViewportToolStyles",value:function(e){return this.config.viewports&&this.config.viewports[e]}},{key:"getToolGroupToolStyles",value:function(e){return this.config.toolGroups&&this.config.toolGroups[e]}},{key:"getDefaultToolStyles",value:function(){return this.config.default}},{key:"setAnnotationStyles",value:function(e,t){var n=this.config.annotations;n||(this.config=es(es({},this.config),{},{annotations:{}}),n=this.config.annotations),n[e]=t}},{key:"setViewportToolStyles",value:function(e,t){var n=this.config.viewports;n||(this.config=es(es({},this.config),{},{viewports:{}}),n=this.config.viewports),n[e]=t}},{key:"setToolGroupToolStyles",value:function(e,t){var n=this.config.toolGroups;n||(this.config=es(es({},this.config),{},{toolGroups:{}}),n=this.config.toolGroups),n[e]=t}},{key:"setDefaultToolStyles",value:function(e){this.config.default=e}},{key:"getStyleProperty",value:function(e,t){var n=t.annotationUID,r=t.viewportId,o=t.toolGroupId,a=t.toolName;return this._getToolStyle(e,n,r,o,a)}},{key:"_getToolStyle",value:function(e,t,n,r,o){if(t){var a=this.getAnnotationToolStyles(t);if(a&&void 0!==a[e])return a[e]}if(n){var i=this.getViewportToolStyles(n);if(i){if(i[o]&&void 0!==i[o][e])return i[o][e];if(i.global&&void 0!==i.global[e])return i.global[e]}}if(r){var l=this.getToolGroupToolStyles(r);if(l){if(l[o]&&void 0!==l[o][e])return l[o][e];if(l.global&&void 0!==l.global[e])return l.global[e]}}var s=this.getDefaultToolStyles();return s[o]&&void 0!==s[o][e]?s[o][e]:s.global&&void 0!==s.global[e]?s.global[e]:void 0}},{key:"_initializeConfig",value:function(e){var t={};for(var n in e)t[n]=e[n];this.config={default:{global:t}}}}]),e}());function ns(e,t,n,r){for(var o=function(e,t,n){var r=["".concat(e)];return t&&r.push("".concat(r[0]).concat(t)),n&&r.push("".concat(r[r.length-1]).concat(n)),r}(e,n,r),a=o.length-1;a>=0;--a){var i=ts.getStyleProperty(o[a],t);if(void 0!==i)return i}}var rs=Bl.Highlighted,os=Xe.Active,as=function(e){pa(o,e);var t,n,r=(t=o,n=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,r=wa(t);if(n){var o=wa(this).constructor;e=Reflect.construct(r,arguments,o)}else e=r.apply(this,arguments);return ma(this,e)});function o(e,t,n,a,i){return oe(this,o),r.call(this,e,t,n,a,i)}return re(o,null,[{key:"getDefinedCursor",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=arguments.length>2?arguments[2]:void 0;n||(n=ns("color",{},rs,os));var r=function(e,t,n){return"".concat(t?"pointer":"cursor",":").concat(e,"/").concat(n)}(e,t,n),a=Vl(wa(o),"getDefinedCursor",this).call(this,r);if(!a){var i=function(e){return Xl[e]}(e);i&&(a=ls(i,r,t,n,Vl(wa(o),"getDefinedCursor",this).call(this,"default")),Vl(wa(o),"setDefinedCursor",this).call(this,r,a))}return a}}]),o}(Wl);function is(e,t){var n=Object(t),r=Object.prototype.hasOwnProperty.bind(n);return(e+"").replace(/\{\{(\w+)\}\}/g,(function(e,t){return r(t)?n[t]+"":""}))}function ls(e,t,n,r,o){var a=e.mousePoint,i=a.x,l=a.y;return new as(function(e,t,n){return URL.createObjectURL(function(e,t,n){var r=(t?cs:ss)(e,n);return new Blob([r],{type:"image/svg+xml"})}(e,t,n))}(e,n,{color:r}),i,l,t,o)}function ss(e,t){var n=e.iconContent,r=e.iconSize,o=e.viewBox;return is('\n <svg data-icon="cursor" role="img" xmlns="http://www.w3.org/2000/svg"\n width="'.concat(r,'" height="').concat(r,'" viewBox="0 0\n ').concat(o.x," ").concat(o.y,'">\n ').concat(n,"\n </svg>"),t)}function cs(e,t){var n=e.iconContent,r=e.iconSize,o=e.viewBox,a=e.mousePointerGroupString,i=r/Math.max(o.x,o.y,1),l=16+r;return is('\n <svg data-icon="cursor" role="img" xmlns="http://www.w3.org/2000/svg"\n width="'.concat(l,'" height="').concat(l,'" viewBox="0 0 ').concat(l," ").concat(l,'">\n <g>').concat(a,'</g>\n <g transform="translate(16, 16) scale(').concat(i,')">').concat(n,"</g>\n </svg>"),t)}var ds=Symbol("ElementCursorsMap");function us(e,t){hs(e)[0]=t,vs(e,t)}function vs(e,t){var n=hs(e);n[1]=n[0],n[0]=t,e.style.cursor=(t instanceof Nl?t:Nl.getDefinedCursor("auto")).getStyleProperty()}function fs(e){vs(e,hs(e)[1])}function gs(e){vs(e,Nl.getDefinedCursor("none"))}function hs(e){var t=hs[ds];t instanceof WeakMap||(t=new WeakMap,Object.defineProperty(hs,ds,{value:t}));var n=t.get(e);return n||(n=[null,null],t.set(e,n)),n}var ps=Xe.Active,ms=Xe.Passive,ws=Xe.Enabled,Es=Xe.Disabled,ys=function(){function e(t){oe(this,e),ae(this,"id",void 0),ae(this,"viewportsInfo",[]),ae(this,"toolOptions",{}),ae(this,"_toolInstances",{}),this.id=t}return re(e,[{key:"getViewportIds",value:function(){return this.viewportsInfo.map((function(e){return e.viewportId}))}},{key:"getViewportsInfo",value:function(){return this.viewportsInfo.slice()}},{key:"getToolInstance",value:function(e){var t=this._toolInstances[e];if(t)return t;console.warn("'".concat(e,"' is not registered with this toolGroup (").concat(this.id,")."))}},{key:"addTool",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=Ke.tools[e],r=void 0!==e&&""!==e,o=this.toolOptions[e];if(r)if(n)if(o)console.warn("'".concat(e,"' is already registered for ToolGroup ").concat(this.id,"."));else{var a=new(0,n.toolClass)({name:e,toolGroupId:this.id,configuration:t});this._toolInstances[e]=a}else console.warn("'".concat(e,"' is not registered with the library. You need to use cornerstoneTools.addTool to register it."));else console.warn("Tool with configuration did not produce a toolName: ",t)}},{key:"addToolInstance",value:function(e,t){var n,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},o=null===(n=Ke.tools[e])||void 0===n?void 0:n.toolClass;if(!o){var a=function(e){pa(o,e);var t,n,r=(t=o,n=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,r=wa(t);if(n){var o=wa(this).constructor;e=Reflect.construct(r,arguments,o)}else e=r.apply(this,arguments);return ma(this,e)});function o(){return oe(this,o),r.apply(this,arguments)}return re(o)}(Ke.tools[t].toolClass);a.toolName=e,o=a,Ke.tools[e]={toolClass:a}}this.addTool(o.toolName,r)}},{key:"addViewport",value:function(e,t){var n=(0,J.getRenderingEngines)();if(!t&&n.length>1)throw new Error("You must specify a renderingEngineId when there are multiple rendering engines.");var r=t||n[0].id;this.viewportsInfo.some((function(t){return t.viewportId===e}))||this.viewportsInfo.push({viewportId:e,renderingEngineId:r});var o=this.getActivePrimaryMouseButtonTool();J.Settings.getRuntimeSettings().get("useCursors")&&this.setViewportsCursorByToolName(o)}},{key:"removeViewports",value:function(e,t){var n=[];if(this.viewportsInfo.forEach((function(r,o){var a=!1;r.renderingEngineId===e&&(a=!0,t&&r.viewportId!==t&&(a=!1)),a&&n.push(o)})),n.length)for(var r=n.length-1;r>=0;r--)this.viewportsInfo.splice(n[r],1)}},{key:"setActiveStrategy",value:function(e,t){var n=this._toolInstances[e];void 0!==n?n.setActiveStrategy(t):console.warn("Tool ".concat(e," not added to toolGroup, can't set tool configuration."))}},{key:"setToolMode",value:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};e?t!==Xe.Active?t!==Xe.Passive?t!==Xe.Enabled?t!==Xe.Disabled?console.warn("setToolMode: mode must be defined"):this.setToolDisabled(e):this.setToolEnabled(e):this.setToolPassive(e):this.setToolActive(e,n):console.warn("setToolMode: toolName must be defined")}},{key:"setToolActive",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=this._toolInstances[e];if(void 0!==n)if(n){var r=this.toolOptions[e]?this.toolOptions[e].bindings:[],o=t.bindings?t.bindings:[],a={bindings:[].concat(Lr(r),Lr(o)).reduce((function(e,t){var n=void 0!==t.numTouchPoints,r=void 0!==t.mouseButton;return e.some((function(e){return r=t,(n=e).mouseButton===r.mouseButton&&n.modifierKey===r.modifierKey;var n,r}))||!n&&!r||e.push(t),e}),[]),mode:ps};this.toolOptions[e]=a,this._toolInstances[e].mode=ps;var i=J.Settings.getRuntimeSettings().get("useCursors");if(this._hasMousePrimaryButtonBinding(t)&&i)this.setViewportsCursorByToolName(e);else if(!this.getActivePrimaryMouseButtonTool()&&i){var l=Nl.getDefinedCursor("default");this._setCursorForViewports(l)}"function"==typeof n.onSetToolActive&&n.onSetToolActive(),this._renderViewports();var s={toolGroupId:this.id,toolName:e,toolBindingsOptions:t};(0,J.triggerEvent)(J.eventTarget,Q.TOOL_ACTIVATED,s),this._triggerToolModeChangedEvent(e,ps,t)}else console.warn("'".concat(e,"' instance ").concat(n," is not registered with this toolGroup, can't set tool mode."));else console.warn("Tool ".concat(e," not added to toolGroup, can't set tool mode."))}},{key:"setToolPassive",value:function(e){var t=this._toolInstances[e];if(void 0!==t){var n=this.getToolOptions(e),r=Object.assign({bindings:n?n.bindings:[]},n,{mode:ms}),o=this.getDefaultMousePrimary();r.bindings=r.bindings.filter((function(e){return e.mouseButton!==o||e.modifierKey}));var a=ms;0!==r.bindings.length&&(a=ps,r.mode=a),this.toolOptions[e]=r,t.mode=a,"function"==typeof t.onSetToolPassive&&t.onSetToolPassive(),this._renderViewports(),this._triggerToolModeChangedEvent(e,ms)}else console.warn("Tool ".concat(e," not added to toolGroup, can't set tool mode."))}},{key:"setToolEnabled",value:function(e){var t=this._toolInstances[e];if(void 0!==t){var n={bindings:[],mode:ws};this.toolOptions[e]=n,t.mode=ws,"function"==typeof t.onSetToolEnabled&&t.onSetToolEnabled(),this._renderViewports(),this._triggerToolModeChangedEvent(e,ws)}else console.warn("Tool ".concat(e," not added to toolGroup, can't set tool mode."))}},{key:"setToolDisabled",value:function(e){var t=this._toolInstances[e];if(void 0!==t){var n={bindings:[],mode:Es};this.toolOptions[e]=n,t.mode=Es,"function"==typeof t.onSetToolDisabled&&t.onSetToolDisabled(),this._renderViewports(),this._triggerToolModeChangedEvent(e,Es)}else console.warn("Tool ".concat(e," not added to toolGroup, can't set tool mode."))}},{key:"getToolOptions",value:function(e){var t=this.toolOptions[e];if(void 0!==t)return t}},{key:"getActivePrimaryMouseButtonTool",value:function(){var e=this;return Object.keys(this.toolOptions).find((function(t){var n=e.toolOptions[t];return n.mode===ps&&e._hasMousePrimaryButtonBinding(n)}))}},{key:"setViewportsCursorByToolName",value:function(e,t){var n=this._getCursor(e,t);this._setCursorForViewports(n)}},{key:"_getCursor",value:function(e,t){var n,r;return t&&(n="".concat(e,".").concat(t),r=as.getDefinedCursor(n,!0))?r:(n="".concat(e),(r=as.getDefinedCursor(n,!0))?r:(n=e,(r=as.getDefinedCursor(n,!0))||Nl.getDefinedCursor("default")))}},{key:"_setCursorForViewports",value:function(e){this.viewportsInfo.forEach((function(t){var n=t.renderingEngineId,r=t.viewportId,o=(0,J.getEnabledElementByIds)(r,n);o&&us(o.viewport.element,e)}))}},{key:"setToolConfiguration",value:function(e,t,n){return void 0===this._toolInstances[e]?(console.warn("Tool ".concat(e," not present, can't set tool configuration.")),!1):(r=n?t:Object.assign(this._toolInstances[e].configuration,t),this._toolInstances[e].configuration=r,this._renderViewports(),!0);var r}},{key:"getDefaultMousePrimary",value:function(){return Eo.Primary}},{key:"getToolConfiguration",value:function(e,t){if(void 0!==this._toolInstances[e]){var n=Rl()(this._toolInstances[e].configuration,t);return le()(n)}console.warn("Tool ".concat(e," not present, can't set tool configuration."))}},{key:"clone",value:function(e){var t,n=this,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,o=fa(e);return o?(console.warn("ToolGroup ".concat(e," already exists")),o):(o=Is(e),r=null!==(t=r)&&void 0!==t?t:function(){return!0},Object.keys(this._toolInstances).filter(r).forEach((function(e){var t,r=n._toolInstances[e],a=n.toolOptions[e],i=r.mode;o.addTool(e),o.setToolMode(e,i,{bindings:null!==(t=a.bindings)&&void 0!==t?t:[]})})),o)}},{key:"_hasMousePrimaryButtonBinding",value:function(e){var t,n=this.getDefaultMousePrimary();return null==e||null===(t=e.bindings)||void 0===t?void 0:t.some((function(e){return e.mouseButton===n&&void 0===e.modifierKey}))}},{key:"_renderViewports",value:function(){this.viewportsInfo.forEach((function(e){var t=e.renderingEngineId,n=e.viewportId;(0,J.getRenderingEngine)(t).renderViewport(n)}))}},{key:"_triggerToolModeChangedEvent",value:function(e,t,n){var r={toolGroupId:this.id,toolName:e,mode:t,toolBindingsOptions:n};(0,J.triggerEvent)(J.eventTarget,Q.TOOL_MODE_CHANGED,r)}}]),e}(),Is=function(e){if(!Ke.toolGroups.some((function(t){return t.id===e}))){var t=new ys(e);return Ke.toolGroups.push(t),t}console.warn("'".concat(e,"' already exists."))},bs=function(){return Ke.toolGroups};function Cs(e,t,n,r){var o=r.detail.camera,a=(0,J.getRenderingEngine)(n.renderingEngineId);if(!a)throw new Error("No RenderingEngine for Id: ".concat(n.renderingEngineId));var i=a.getViewport(n.viewportId);i.setCamera(o),i.render()}var _s=J.Enums.Events.CAMERA_MODIFIED;function Ts(e){return Ol(e,_s,Cs)}function Os(e,t,n,r,o){var a=r.detail,i=a.volumeId,l=a.range,s=a.invertStateChanged,c=a.invert,d=(0,J.getRenderingEngine)(n.renderingEngineId);if(!d)throw new Error("Rendering Engine does not exist: ".concat(n.renderingEngineId));var u=d.getViewport(n.viewportId),v={voiRange:l};if(null!=o&&o.syncInvertState&&s&&(v.invert=c),u instanceof J.BaseVolumeViewport)u.setProperties(v,i);else{if(!(u instanceof J.StackViewport))throw new Error("Viewport type not supported.");u.setProperties(v)}u.render()}function Ds(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{syncInvertState:!0};return Ol(e,J.Enums.Events.VOI_MODIFIED,Os,t)}function Ss(e,t,n){var r=(0,J.getRenderingEngine)(n.renderingEngineId);if(!r)throw new Error("No RenderingEngine for Id: ".concat(n.renderingEngineId));var o=e.getOptions(n.viewportId),a=r.getViewport(n.viewportId),i=r.getViewport(t.viewportId);if(!1!==(null==o?void 0:o.syncZoom)){var l=i.getZoom();a.setZoom(l)}if(!1!==(null==o?void 0:o.syncPan)){var s=i.getPan();a.setPan(s)}a.render()}var ks=J.Enums.Events.CAMERA_MODIFIED;function Ms(e){return Ol(e,ks,Ss)}var xs=y(976);var Rs=function(e,t,n){return Math.min(Math.max(t,e),n)};function Ps(e,t){if(!(0,J.getEnabledElement)(e.element))throw new Error("Scroll::Viewport is not enabled (it might be disabled)");if(e instanceof J.StackViewport&&0===e.getImageIds().length)throw new Error("Scroll::Stack Viewport has no images");var n=e.type,r=t.volumeId,o=t.delta;if(e instanceof J.StackViewport)e.scroll(o,t.debounceLoading,t.loop);else if(e instanceof J.VolumeViewport)!function(e,t,n){var r=J.utilities.getVolumeViewportScrollInfo(e,t),o=r.numScrollSteps,a=r.currentStepIndex,i=r.sliceRangeInfo;if(i){var l=i.sliceRange,s=i.spacingInNormalDirection,c=i.camera,d=c.focalPoint,u=c.viewPlaneNormal,v=c.position,f=J.utilities.snapFocalPointToSlice(d,v,l,u,s,n),g=f.newFocalPoint,h=f.newPosition;e.setCamera({focalPoint:g,position:h}),e.render();var p=a+n;if((p>o||p<0)&&e.getCurrentImageId()){var m={volumeId:t,viewport:e,delta:n,desiredStepIndex:p,currentStepIndex:a,numScrollSteps:o,currentImageId:e.getCurrentImageId()};J.utilities.triggerEvent(J.eventTarget,J.EVENTS.VOLUME_SCROLL_OUT_OF_BOUNDS,m)}}}(e,r,o);else{if(!(e instanceof J.VideoViewport))throw new Error("Not implemented for Viewport Type: ".concat(n));e.scroll(o)}}function As(){return As=Va(Ba().mark((function e(t){var n,r,o,a,i,l,s,c,d,u,v=arguments;return Ba().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(r=(n=v.length>1&&void 0!==v[1]?v[1]:{}).imageIndex,o=n.debounceLoading,a=n.volumeId,i=(0,J.getEnabledElement)(t)){e.next=5;break}throw new Error("Element has been disabled");case 5:l=i.viewport,s=Ns(l,o),c=s.imageIndex,d=s.numberOfSlices,u=Ls(d,r),Ps(l,{delta:u-c,debounceLoading:o,volumeId:a});case 10:case"end":return e.stop()}}),e)}))),As.apply(this,arguments)}function Ns(e,t){if(e instanceof J.StackViewport)return{numberOfSlices:e.getImageIds().length,imageIndex:t?e.getTargetImageIdIndex():e.getCurrentImageIdIndex()};if(e instanceof J.VolumeViewport)return J.utilities.getImageSliceDataForVolumeViewport(e);throw new Error("Unsupported viewport type")}function Ls(e,t){return Rs(t,0,e-1)}var Us=function(e){return As.apply(this,arguments)},Vs=function(e,t){return J.utilities.spatialRegistrationMetadataProvider.get("spatialRegistrationModule",[e,t])};function js(e,t,n){return Bs.apply(this,arguments)}function Bs(){return(Bs=Va(Ba().mark((function e(t,n,r){var o,a,i,l,s,c,d,u,v,f,g,h,p;return Ba().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(o=(0,J.getRenderingEngine)(r.renderingEngineId)){e.next=3;break}throw new Error("No RenderingEngine for Id: ".concat(r.renderingEngineId));case 3:if(a=o.getViewport(n.viewportId),null==(i=t.getOptions(r.viewportId))||!i.disabled){e.next=7;break}return e.abrupt("return");case 7:if(l=o.getViewport(r.viewportId),s=a.getCurrentImageId(),c=J.metaData.get("imagePlaneModule",s),d=c.imagePositionPatient,u=l.getImageIds(),m=l,void 0,void 0,void 0,w=a.getCamera().viewPlaneNormal,E=m.getCamera().viewPlaneNormal,y=xs.vec3.dot(w,E),Math.abs(y)>.9){e.next=14;break}return e.abrupt("return");case 14:if(v=Vs(r.viewportId,n.viewportId)){e.next=21;break}if(f=a.getFrameOfReferenceUID(),g=l.getFrameOfReferenceUID(),f===g&&!1!==(null==i?void 0:i.useInitialPosition)?v=xs.mat4.identity(xs.mat4.create()):(J.utilities.calculateViewportsSpatialRegistration(a,l),v=Vs(r.viewportId,n.viewportId)),v){e.next=21;break}return e.abrupt("return");case 21:if(h=xs.vec3.transformMat4(xs.vec3.create(),d,v),-1===(p=Ws(h,u)).index||l.getCurrentImageIdIndex()===p.index){e.next=26;break}return e.next=26,Us(l.element,{imageIndex:p.index});case 26:case"end":return e.stop()}var m,w,E,y}),e)})))).apply(this,arguments)}function Ws(e,t){return t.reduce((function(t,n,r){var o=J.metaData.get("imagePlaneModule",n).imagePositionPatient,a=xs.vec3.distance(o,e);return a<t.distance?{distance:a,index:r}:t}),{distance:1/0,index:-1})}var Fs=J.Enums.Events.STACK_NEW_IMAGE;function Hs(e){return Ol(e,Fs,js)}var Gs=function(e,t,n){return"".concat(e,"::").concat(t,"::").concat(n)},qs=function(e,t){Object.keys(e).forEach((function(n){var r=t.getAttribute(n),o=e[n];void 0===o||""===o?t.removeAttribute(n):r!==o&&t.setAttribute(n,o)}))},zs=function(e,t){Object.keys(e).forEach((function(n){var r=e[n];void 0!==r&&""!==r&&t.setAttribute(n,r)}))},Ks=function(e,t,n,r,o){var a=arguments.length>5&&void 0!==arguments[5]?arguments[5]:{},i=arguments.length>6&&void 0!==arguments[6]?arguments[6]:"",l=Object.assign({color:"dodgerblue",fill:"transparent",width:"2",lineDash:void 0,lineWidth:void 0,strokeOpacity:1,fillOpacity:1},a),s=l.color,c=l.fill,d=l.width,u=l.lineWidth,v=l.lineDash,f=l.fillOpacity,g=l.strokeOpacity,h=u||d,p=Gs(t,"circle",n),m=e.getSvgNode(p),w={cx:"".concat(r[0]),cy:"".concat(r[1]),r:"".concat(o),stroke:s,fill:c,"stroke-width":h,"stroke-dasharray":v,"fill-opacity":f,"stroke-opacity":g};if(m)qs(w,m),e.setNodeTouched(p);else{var E=document.createElementNS("http://www.w3.org/2000/svg","circle");""!==i&&E.setAttribute("data-id",i),zs(w,E),e.appendNode(E,p)}},Ys=function(e,t,n,r,o){var a=arguments.length>5&&void 0!==arguments[5]?arguments[5]:{},i=arguments.length>6&&void 0!==arguments[6]?arguments[6]:"",l=Object.assign({color:"dodgerblue",width:"2",lineWidth:void 0,lineDash:void 0},a),s=l.color,c=l.width,d=l.lineWidth,u=l.lineDash,v=d||c,f=Gs(t,"ellipse",n),g=e.getSvgNode(f),h=Math.abs(r[0]-o[0]),p=Math.abs(r[1]-o[1]),m=[Math.min(r[0],o[0])+h/2,Math.min(r[1],o[1])+p/2],w=h/2,E=p/2,y={cx:"".concat(m[0]),cy:"".concat(m[1]),rx:"".concat(w),ry:"".concat(E),stroke:s,fill:"transparent","stroke-width":v,"stroke-dasharray":u};if(g)qs(y,g),e.setNodeTouched(f);else{var I=document.createElementNS("http://www.w3.org/2000/svg","ellipse");""!==i&&I.setAttribute("data-id",i),zs(y,I),e.appendNode(I,f)}},Xs=function(e,t,n,r){for(var o=arguments.length>4&&void 0!==arguments[4]?arguments[4]:{},a=Object.assign({color:"dodgerblue",handleRadius:"6",width:"2",lineWidth:void 0,fill:"transparent",type:"circle",opacity:1},o),i=a.color,l=a.handleRadius,s=a.width,c=a.lineWidth,d=a.fill,u=a.type,v=a.opacity,f=c||s,g=0;g<r.length;g++){var h=r[g],p=Gs(t,"handle","hg-".concat(n,"-index-").concat(g)),m=void 0;if("circle"===u)m={cx:"".concat(h[0]),cy:"".concat(h[1]),r:l,stroke:i,fill:d,"stroke-width":f,opacity:v};else{if("rect"!==u)throw new Error("Unsupported handle type: ".concat(u));var w=1.5*parseFloat(l),E=h[0]-.5*w,y=h[1]-.5*w;m={x:"".concat(E),y:"".concat(y),width:"".concat(w),height:"".concat(w),stroke:i,fill:d,"stroke-width":f,rx:"".concat(.1*w),opacity:v}}var I=e.getSvgNode(p);if(I)qs(m,I),e.setNodeTouched(p);else{var b=document.createElementNS("http://www.w3.org/2000/svg",u);zs(m,b),e.appendNode(b,p)}}};function Zs(e,t,n,r,o){var a=arguments.length>5&&void 0!==arguments[5]?arguments[5]:{},i=arguments.length>6&&void 0!==arguments[6]?arguments[6]:"";if(!(isNaN(r[0])||isNaN(r[1])||isNaN(o[0])||isNaN(o[1]))){var l=Object.assign({color:"dodgerblue",width:"2",lineWidth:void 0,lineDash:void 0,shadow:void 0},a),s=l.color,c=l.width,d=l.lineWidth,u=l.lineDash,v=l.shadow,f=d||c,g=Gs(t,"line",n),h=e.getSvgNode(g),p=v?"filter:url(#shadow-".concat(e.svgLayerElement.id,");"):"",m={x1:"".concat(r[0]),y1:"".concat(r[1]),x2:"".concat(o[0]),y2:"".concat(o[1]),stroke:s,style:p,"stroke-width":f,"stroke-dasharray":u};if(h)qs(m,h),e.setNodeTouched(g);else{var w=document.createElementNS("http://www.w3.org/2000/svg","line");""!==i&&w.setAttribute("data-id",i),zs(m,w),e.appendNode(w,g)}}}function Js(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function $s(e,t,n,r,o){if(!(r.length<2)){var a,i=Object.assign({color:"dodgerblue",width:"2",fillColor:"none",fillOpacity:0,lineWidth:void 0,lineDash:void 0,connectLastToFirst:!1},o),l=i.fillColor,s=i.fillOpacity,c=i.color,d=i.width,u=i.lineWidth,v=i.lineDash,f=u||d,g=Gs(t,"polyline",n),h=e.getSvgNode(g),p="",m=function(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=function(e,t){if(e){if("string"==typeof e)return Js(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?Js(e,t):void 0}}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var r=0,o=function(){};return{s:o,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,i=!0,l=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return i=e.done,e},e:function(e){l=!0,a=e},f:function(){try{i||null==n.return||n.return()}finally{if(l)throw a}}}}(r);try{for(m.s();!(a=m.n()).done;){var w=a.value;p+="".concat(w[0],", ").concat(w[1]," ")}}catch(e){m.e(e)}finally{m.f()}if(o.connectLastToFirst){var E=r[0];p+="".concat(E[0],", ").concat(E[1])}var y={points:p,stroke:c,fill:l,"fill-opacity":s,"stroke-width":f,"stroke-dasharray":v};if(h)qs(y,h),e.setNodeTouched(g);else{var I=document.createElementNS("http://www.w3.org/2000/svg","polyline");zs(y,I),e.appendNode(I,g)}}}function Qs(e){var t=document.createElementNS("http://www.w3.org/2000/svg","tspan");return t.setAttribute("x","0"),t.setAttribute("dy","1.2em"),t.textContent=e,t}function ec(e,t){var n=e.querySelector("rect.background");if(!t)return n&&e.removeChild(n),e.getBBox();n||((n=document.createElementNS("http://www.w3.org/2000/svg","rect")).setAttribute("class","background"),e.insertBefore(n,e.firstChild));var r=e.getBBox(),o={x:"".concat(r.x),y:"".concat(r.y),width:"".concat(r.width),height:"".concat(r.height),fill:t};return qs(o,n),r}var tc=function(e,t,n,r,o){var a=arguments.length>5&&void 0!==arguments[5]?arguments[5]:{},i=function(e,t,n){var r,o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:[""],a=arguments.length>4?arguments[4]:void 0,i=arguments.length>5?arguments[5]:void 0,l=i.padding,s=i.color,c=i.fontFamily,d=i.fontSize,u=i.background,v=a[0]+l,f=a[1]+l,g=Gs(t,"text",n),h=e.getSvgNode(g);if(h){for(var p=h.querySelector("text"),m=Array.from(p.children),w=0;w<m.length;w++){var E=m[w],y=o[w]||"";E.textContent=y}if(o.length>m.length){for(var I=0;I<o.length-m.length;I++){var b=Qs(o[I+m.length]);p.appendChild(b)}h.appendChild(p),e.appendNode(h,g)}var C={fill:s,"font-size":d,"font-family":c},_={transform:"translate(".concat(v," ").concat(f,")")};qs(C,p),qs(_,h),r=ec(h,u),e.setNodeTouched(g)}else{var T=document.createElementNS("http://www.w3.org/2000/svg","g");T.setAttribute("transform","translate(".concat(v," ").concat(f,")"));for(var O=function(e,t){var n=t.color,r=t.fontFamily,o=t.fontSize,a=document.createElementNS("http://www.w3.org/2000/svg","text"),i="filter:url(#shadow-".concat(e.svgLayerElement.id,");"),l="".concat("user-select: none; pointer-events: none; -webkit-tap-highlight-color: rgba(255, 255, 255, 0);").concat(i);return a.setAttribute("x","0"),a.setAttribute("y","0"),a.setAttribute("fill",n),a.setAttribute("font-family",r),a.setAttribute("font-size",o),a.setAttribute("style",l),a}(e,i),D=0;D<o.length;D++){var S=Qs(o[D]);O.appendChild(S)}T.appendChild(O),e.appendNode(T,g),r=ec(T,u)}return Object.assign({},r,{x:v,y:f,height:r.height+l,width:r.width+l})}(e,t,n,r,o,Object.assign({fontFamily:"Helvetica, Arial, sans-serif",fontSize:"14px",color:"rgb(255, 255, 0)",background:"",padding:25,centerX:!1,centerY:!0},a));return i};function nc(e,t){var n=[0,0],r=Number.MAX_SAFE_INTEGER;return e.forEach((function(e){var o,a,i,l,s,c,d,u=(o=e,i=(a=dt(t,2))[0],l=a[1],c=(s=dt(o,2))[0],d=s[1],Math.sqrt(Math.pow(i-c,2)+Math.pow(l-d,2)));u<r&&(r=u,n=Lr(e))})),n}var rc=function(e,t,n,r,o,a,i){var l=arguments.length>7&&void 0!==arguments[7]?arguments[7]:{},s=Object.assign({handleRadius:"6",centering:{x:!1,y:!0}},l),c=tc(e,t,n,r,o,s);return function(e,t,n,r,o,a){var i=arguments.length>6&&void 0!==arguments[6]?arguments[6]:{},l=r.length>0?nc(r,o):o,s=nc(function(e){var t=e.x,n=e.y,r=e.height,o=e.width,a=o/2,i=r/2;return[[t+a,n],[t,n+i],[t+a,n+r],[t+o,n+i]]}(a),l),c=Object.assign({color:"rgb(255, 255, 0)",lineWidth:"1",lineDash:"2,3"},i);Zs(e,t,"link-".concat(n),l,s,c)}(e,t,n,a,o,c,s),c};function oc(e,t,n,r,o){var a=arguments.length>5&&void 0!==arguments[5]?arguments[5]:{},i=arguments.length>6&&void 0!==arguments[6]?arguments[6]:"",l=Object.assign({color:"dodgerblue",width:"2",lineWidth:void 0,lineDash:void 0},a),s=l.color,c=l.width,d=l.lineWidth,u=l.lineDash,v=d||c,f=Gs(t,"rect",n),g=e.getSvgNode(f),h=[Math.min(r[0],o[0]),Math.min(r[1],o[1])],p=Math.abs(r[0]-o[0]),m=Math.abs(r[1]-o[1]),w={x:"".concat(h[0]),y:"".concat(h[1]),width:"".concat(p),height:"".concat(m),stroke:s,fill:"transparent","stroke-width":v,"stroke-dasharray":u};if(g)qs(w,g),e.setNodeTouched(f);else{var E=document.createElementNS("http://www.w3.org/2000/svg","rect");""!==i&&E.setAttribute("data-id",i),zs(w,E),e.appendNode(E,f)}}function ac(e,t,n,r,o){var a=arguments.length>5&&void 0!==arguments[5]?arguments[5]:{};if(!(isNaN(r[0])||isNaN(r[1])||isNaN(o[0])||isNaN(o[1]))){var i=Object.assign({color:"dodgerblue",width:"2",lineWidth:void 0,lineDash:void 0},a),l=i.color,s=i.width,c=i.lineWidth;Zs(e,t,n,r,o,{color:l,width:s,lineWidth:c,lineDash:i.lineDash});var d=Math.atan2(o[1]-r[1],o[0]-r[0]),u={start:[o[0]-10*Math.cos(d-Math.PI/7),o[1]-10*Math.sin(d-Math.PI/7)],end:o},v={start:[o[0]-10*Math.cos(d+Math.PI/7),o[1]-10*Math.sin(d+Math.PI/7)],end:o};Zs(e,t,"2",u.start,u.end,{color:l,width:s,lineWidth:c}),Zs(e,t,"3",v.start,v.end,{color:l,width:s,lineWidth:c})}}function ic(e,t,n,r,o){var a=arguments.length>5&&void 0!==arguments[5]?arguments[5]:{},i=Object.assign({color:"dodgerblue",width:"2",lineWidth:void 0,lineDash:void 0},a),l=i.color,s=i.width,c=i.lineWidth,d=i.lineDash,u=c||s,v=Gs(t,"rect",n),f=e.getSvgNode(v),g=[Math.min(r[0],o[0]),Math.min(r[1],o[1])],h=Math.abs(r[0]-o[0]),p=Math.abs(r[1]-o[1]),m={x:"".concat(g[0]),y:"".concat(g[1]),width:"".concat(h),height:"".concat(p),stroke:l,fill:"black","stroke-width":u,"stroke-dasharray":d};if(f)qs(m,f),e.setNodeTouched(v);else{var w=document.createElementNS("http://www.w3.org/2000/svg","rect");zs(m,w),e.appendNode(w,v)}}function lc(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function sc(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:5,r=(0,J.getEnabledElement)(e);if(!r)throw new Error("getAnnotationNearPoint: enabledElement not found");return cc(r,t,n)}function cc(e,t,n){var r=e.renderingEngineId,o=e.viewportId,a=Fr(o,r);if(!a)return null;var i=a._toolInstances;for(var l in i){var s=dc(i[l],e,t,n);if(s)return s}return null}function dc(e,t,n,r){var o,a=t.viewport,i=nt(e.constructor.toolName,null==a?void 0:a.element),l=null==a||null===(o=a.getCurrentImageId)||void 0===o?void 0:o.call(a);if(null!=i&&i.length){var s,c=t.viewport.element,d=function(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=function(e,t){if(e){if("string"==typeof e)return lc(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?lc(e,t):void 0}}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var r=0,o=function(){};return{s:o,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,i=!0,l=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return i=e.done,e},e:function(e){l=!0,a=e},f:function(){try{i||null==n.return||n.return()}finally{if(l)throw a}}}}(i);try{for(d.s();!(s=d.n()).done;){var u,v=s.value,f=null===(u=v.metadata)||void 0===u?void 0:u.referencedImageId;if(!(l&&f&&l!==f||!e.isPointNearTool)&&(e.isPointNearTool(c,v,n,r,"")||e.getHandleNearImagePoint(c,v,n,r)))return v}}catch(e){d.e(e)}finally{d.f()}}return null}var uc=function(e){var t=ee(e);return null!==e&&("object"===t||"function"===t)},vc=function(e,t,n){var r,o,a,i,l,s,c=0,d=!1,u=!1,v=!0,f=!t&&0!==t&&"function"==typeof window.requestAnimationFrame;if("function"!=typeof e)throw new TypeError("Expected a function");function g(t){var n=r,a=o;return r=o=void 0,c=t,i=e.apply(a,n)}function h(e,t){return f?window.requestAnimationFrame(e):setTimeout(e,t)}function p(e){var n=e-s;return void 0===s||n>=t||n<0||u&&e-c>=a}function m(){var e=Date.now();if(p(e))return w(e);l=h(m,function(e){var n=e-c,r=t-(e-s);return u?Math.min(r,a-n):r}(e))}function w(e){return l=void 0,v&&r?g(e):(r=o=void 0,i)}function E(){for(var e=Date.now(),n=p(e),a=arguments.length,v=new Array(a),f=0;f<a;f++)v[f]=arguments[f];if(r=v,o=this,s=e,n){if(void 0===l)return function(e){return c=e,l=h(m,t),d?g(e):i}(s);if(u)return l=h(m,t),g(s)}return void 0===l&&(l=h(m,t)),i}return t=Number(t)||0,uc(n)&&(d=Boolean(n.leading),a=(u="maxWait"in n)?Math.max(Number(n.maxWait)||0,t):a,v="trailing"in n?Boolean(n.trailing):v),E.cancel=function(){void 0!==l&&function(e){if(f)return window.cancelAnimationFrame(e);clearTimeout(e)}(l),c=0,r=s=o=l=void 0},E.flush=function(){return void 0===l?i:w(Date.now())},E.pending=function(){return void 0!==l},E},fc=function(e,t,n){var r=!0,o=!0;if("function"!=typeof e)throw new TypeError("Expected a function");return uc(n)&&(r="leading"in n?Boolean(n.leading):r,o="trailing"in n?Boolean(n.trailing):o),vc(e,t,{leading:r,trailing:o,maxWait:t})},gc=J.utilities.calibratedPixelSpacingMetadataProvider;function hc(e,t,n){"number"==typeof n&&(n={type:J.Enums.CalibrationTypes.USER,scale:n}),gc.add(e,n),t.getStackViewports().forEach((function(t){t.getImageIds().includes(e)&&t.calibrateSpacing(e)}))}var pc=J.Enums.CalibrationTypes,mc="px",wc=function(e,t){var n=t.calibration,r=t.hasPixelSpacing?"mm":mc;return n&&n.type?n.type===pc.UNCALIBRATED?mc:n.SequenceOfUltrasoundRegions?"US Region":"".concat(r," ").concat(n.type):r},Ec=function(e,t){var n=t.calibration,r=(t.hasPixelSpacing?"mm":mc)+"²";return n&&n.type?n.SequenceOfUltrasoundRegions?"US Region":"".concat(r," ").concat(n.type):r},yc=function(e){var t;return(null===(t=e.calibration)||void 0===t?void 0:t.scale)||1},Ic=wc;function bc(e,t,n,r){var o,a,i,l,s,c,d;d=e.getScalarData?e.getScalarData():e.getPointData().getScalars().getData();var u=e.getDimensions();if(r){var v=dt(r,3),f=dt(v[0],2);o=f[0],a=f[1];var g=dt(v[1],2);i=g[0],l=g[1];var h=dt(v[2],2);s=h[0],c=h[1]}else o=0,a=u[0],i=0,l=u[1],s=0,c=u[2];for(var p=xs.vec3.fromValues(o,i,s),m=e.getDirection(),w=m.slice(0,3),E=m.slice(3,6),y=m.slice(6,9),I=dt(e.getSpacing(),3),b=I[0],C=I[1],_=I[2],T=e.indexToWorld(p),O=xs.vec3.fromValues(w[0]*b,w[1]*b,w[2]*b),D=xs.vec3.fromValues(E[0]*C,E[1]*C,E[2]*C),S=xs.vec3.fromValues(y[0]*_,y[1]*_,y[2]*_),k=u[0],M=u[0]*u[1],x=[],R=s;R<=c;R++)for(var P=i;P<=l;P++)for(var A=o;A<=a;A++){var N=[A,P,R],L=A-o,U=P-i,V=R-s,j=T,B=[j[0]+L*O[0]+U*D[0]+V*S[0],j[1]+L*O[1]+U*D[1]+V*S[1],j[2]+L*O[2]+U*D[2]+V*S[2]];if(t(B,N)){var W=R*M+P*k+A,F=d[W];x.push({value:F,index:W,pointIJK:N,pointLPS:B}),null!==n&&n({value:F,index:W,pointIJK:N,pointLPS:B})}}return x}var Cc=function(e,t){var n=1/0,r=0,o=1/0,a=0,i=1/0,l=0;if(e.forEach((function(e){n=Math.min(e[0],n),r=Math.max(e[0],r),o=Math.min(e[1],o),a=Math.max(e[1],a),i=Math.min(e[2],i),l=Math.max(e[2],l)})),n=Math.floor(n),r=Math.floor(r),o=Math.floor(o),a=Math.floor(a),i=Math.floor(i),l=Math.floor(l),t){var s=dt(t,3),c=s[0],d=s[1],u=s[2];n=Math.max(0,n),r=Math.min(c-1,r),o=Math.max(0,o),a=Math.min(d-1,a),i=Math.max(0,i),l=Math.min(u-1,l)}return[[n,r],[o,a],[i,l]]},_c=J.utilities.transformWorldToIndex;function Tc(e,t,n,r){var o=function(e,t,n){var r,o=dt(e,2),a=o[0],i=o[1],l=xs.vec3.fromValues((a[0]+i[0])/2,(a[1]+i[1])/2,(a[2]+i[2])/2),s=xs.vec3.distance(a,i)/2;if(!n){var c=_c(t,l),d=t.getSpacing(),u=Math.min.apply(Math,Lr(d)),v=Math.ceil(s/u);return{boundsIJK:r=[[c[0]-v,c[0]+v],[c[1]-v,c[1]+v],[c[2]-v,c[2]+v]],centerWorld:l,radiusWorld:s}}return r=function(e,t,n,r,o){var a=dt(n,2),i=a[0],l=a[1],s=e.getDimensions(),c=t.getCamera(),d=xs.vec3.fromValues(c.viewUp[0],c.viewUp[1],c.viewUp[2]),u=xs.vec3.fromValues(c.viewPlaneNormal[0],c.viewPlaneNormal[1],c.viewPlaneNormal[2]),v=xs.vec3.create();xs.vec3.cross(v,d,u);var f=xs.vec3.create(),g=xs.vec3.create();xs.vec3.scaleAndAdd(f,l,u,o),xs.vec3.scaleAndAdd(g,i,u,-o),xs.vec3.scaleAndAdd(f,f,v,-o),xs.vec3.scaleAndAdd(g,g,v,o);var h=[_c(e,f),_c(e,g)];return Cc(h,s)}(t,n,e,0,s),{boundsIJK:r,centerWorld:l,radiusWorld:s}}(t,e,r),a=o.boundsIJK,i={center:o.centerWorld,radius:o.radiusWorld};bc(e,(function(e){return function(e,t){var n=e.center,r=e.radius;return Math.pow(t[0]-n[0],2)+Math.pow(t[1]-n[1],2)+Math.pow(t[2]-n[2],2)<=Math.pow(r,2)}(i,e)}),n,a)}var Oc=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:2;if(null==e||""===e)return"NaN";if((e=Number(e))<1e-4)return"".concat(e);var n=e>=100?t-2:e>=10?t-1:e>=1?t:e>=.1?t+1:e>=.01?t+2:e>=.001?t+3:t+4;return e.toFixed(n)},Dc=function(e,t,n){var r=n.THRESHOLD_INSIDE_CIRCLE,o=t.getScalarData()[e],a=r.threshold;return a[0]<=o&&o<=a[1]};function Sc(e,t){var n,r=arguments.length>3&&void 0!==arguments[3]&&arguments[3],o=e.viewport,a=t.volume,i=t.segmentsLocked,l=t.segmentIndex,s=t.imageVolume,c=t.strategySpecificConfiguration,d=t.segmentationId,u=t.points,v=a.imageData,f=a.dimensions,g=a.getScalarData(),h=[];n=r?function(e){var t=e.value,n=e.index;e.pointIJK,i.includes(t)||Dc(n,s,c)&&(g[n]=l,h.push(n))}:function(e){var t=e.index,n=e.value;i.includes(n)||(g[t]=l,h.push(t))},Tc(v,[u[0],u[1]],n,o);var p=f[0]*f[1],m=Math.floor(h[0]/p),w=Math.floor(h[h.length-1]/p);St(d,Array.from({length:w-m+1},(function(e,t){return t+m})))}function kc(e,t){Sc(e,t,!0)}function Mc(e,t){var n=t.volume,r=t.imageVolume;if(!J.utilities.isEqual(n.dimensions,r.dimensions)||!J.utilities.isEqual(n.direction,r.direction))throw new Error("Only source data the same dimensions/size/orientation as the segmentation currently supported.");Sc(e,t,!0,!0)}function xc(e,t){kc(e,Object.assign({},t,{segmentIndex:0}))}function Rc(e){var t=dt(e,4),n=t[0],r=t[1],o=t[2],a=t[3];return[[o[0],r[1]],[a[0],n[1]]]}function Pc(e,t){var n=e.center,r=e.xRadius,o=e.yRadius,a=e.zRadius,i=dt(t,3),l=i[0],s=i[1],c=i[2],d=dt(n,3),u=d[0],v=d[1],f=d[2],g=0;return 0!==r&&(g+=(l-u)*(l-u)/(r*r)),0!==o&&(g+=(s-v)*(s-v)/(o*o)),0!==a&&(g+=(c-f)*(c-f)/(a*a)),g<=1}var Ac=J.utilities.transformWorldToIndex;function Nc(e,t){var n=arguments.length>2&&void 0!==arguments[2]&&arguments[2],r=t.volume,o=t.imageVolume,a=t.points,i=t.segmentsLocked,l=t.segmentIndex,s=t.segmentationId,c=t.strategySpecificConfiguration,d=r.imageData,u=r.dimensions,v=r.getScalarData(),f=e.viewport,g=xs.vec3.fromValues(0,0,0);a.forEach((function(e){xs.vec3.add(g,g,e)})),xs.vec3.scale(g,g,1/a.length);var h=dt(Rc(a.map((function(e){return f.worldToCanvas(e)}))),2),p=h[0],m=h[1],w=f.canvasToWorld(p),E=f.canvasToWorld(m),y=[Ac(d,w),Ac(d,E)],I=Cc(y,u),b={center:g,xRadius:Math.abs(w[0]-E[0])/2,yRadius:Math.abs(w[1]-E[1])/2,zRadius:Math.abs(w[2]-E[2])/2},C=new Set;bc(d,(function(e,t){return Pc(b,e)}),n?function(e){var t=e.value,n=e.index,r=e.pointIJK;i.includes(t)||Dc(n,o,c)&&(v[n]=l,C.add(r[2]))}:function(e){var t=e.value,n=e.index,r=e.pointIJK;i.includes(t)||(v[n]=l,C.add(r[2]))},I),St(s,Array.from(C))}function Lc(e,t){Nc(e,t,!1)}function Uc(e,t){var n=t.volume,r=t.imageVolume;if(!J.utilities.isEqual(n.dimensions,r.dimensions)||!J.utilities.isEqual(n.direction,r.direction))throw new Error("Only source data the same dimensions/size/orientation as the segmentation currently supported.");Nc(e,t,!0)}function Vc(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function jc(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Vc(Object(n),!0).forEach((function(t){ae(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Vc(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function Bc(e,t){Lc(e,jc(jc({},t),{},{segmentIndex:0}))}function Wc(e){var t=Rt().getSegmentationRepresentations(e);if(t)return t.find((function(e){return e.active}))}function Fc(e,t){Rt().setActiveSegmentationRepresentation(e,t),Ot(e,t)}function Hc(e,t){var n=Pt(e);if(!n)throw new Error("No segmentation state found for ".concat(e));return n.segmentsLocked.has(t)}function Gc(e,t){var n=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],r=Pt(e);if(!r)throw new Error("No segmentation state found for ".concat(e));var o=r.segmentsLocked;n?o.add(t):o.delete(t),Dt(e)}function qc(e){var t=Pt(e);if(!t)throw new Error("No segmentation state found for ".concat(e));var n=t.segmentsLocked;return Array.from(n)}function zc(e,t){var n=Pt(e);(null==n?void 0:n.activeSegmentIndex)!==t&&(n.activeSegmentIndex=t,Dt(e))}function Kc(e){var t=Pt(e);if(t)return t.activeSegmentIndex}function Yc(e,t){if(!e)throw new Error("addColorLUT: colorLUT is required");J.utilities.isEqual(e[0],[0,0,0,0])||(console.warn("addColorLUT: [0, 0, 0, 0] color is not provided for the background color (segmentIndex =0), automatically adding it"),e.unshift([0,0,0,0])),Qt(e,t)}function Xc(e,t,n){var r=Yt(e,t);if(!r)throw new Error("setColorLUT: could not find segmentation representation with UID ".concat(t));if(!$t(n))throw new Error("setColorLUT: could not find colorLUT with index ".concat(n));r.colorLUTIndex=n,Ot(e,t)}function Zc(e,t,n){var r=Yt(e,t);if(!r)throw new Error("segmentation representation with UID ".concat(t," does not exist for tool group ").concat(e));return $t(r.colorLUTIndex)[n]}function Jc(e,t,n,r){for(var o=Zc(e,t,n),a=0;a<r.length;a++)o[a]=r[a];Ot(e,t)}var $c=function(e){pa(o,e);var t,n,r=(t=o,n=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,r=wa(t);if(n){var o=wa(this).constructor;e=Reflect.construct(r,arguments,o)}else e=r.apply(this,arguments);return ma(this,e)});function o(){var e,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{supportedInteractionTypes:["Mouse","Touch"],configuration:{strategies:{FILL_INSIDE_CIRCLE:Lc,ERASE_INSIDE_CIRCLE:Bc,FILL_INSIDE_SPHERE:kc,ERASE_INSIDE_SPHERE:xc,THRESHOLD_INSIDE_CIRCLE:Uc,THRESHOLD_INSIDE_SPHERE:Mc},strategySpecificConfiguration:{THRESHOLD_INSIDE_CIRCLE:{threshold:[-150,-70]}},defaultStrategy:"FILL_INSIDE_CIRCLE",activeStrategy:"FILL_INSIDE_CIRCLE",brushSize:25}};return oe(this,o),ae(ga(e=r.call(this,t,n)),"_editData",void 0),ae(ga(e),"_hoverData",void 0),ae(ga(e),"onSetToolPassive",(function(){e.disableCursor()})),ae(ga(e),"onSetToolEnabled",(function(){e.disableCursor()})),ae(ga(e),"onSetToolDisabled",(function(){e.disableCursor()})),ae(ga(e),"preMouseDownCallback",(function(t){var n=t.detail.element,r=(0,J.getEnabledElement)(n),o=r.viewport,a=r.renderingEngine;if(o instanceof J.StackViewport)throw new Error("Not implemented yet");var i=Wc(e.toolGroupId);if(!i)throw new Error("No active segmentation detected, create one before using the brush tool");var l=i.segmentationId,s=i.type,c=qc(l),d=Pt(l).representationData[s].volumeId,u=J.cache.getVolume(d),v=o.getActors()[0].uid,f=J.cache.getVolume(v),g=[o.id];return e._editData={segmentation:u,imageVolume:f,segmentsLocked:c},e._activateDraw(n),gs(n),t.preventDefault(),ca(a,g),!0})),ae(ga(e),"mouseMoveCallback",(function(t){e.mode===Xe.Active&&e.updateCursor(t)})),ae(ga(e),"_dragCallback",(function(t){var n=t.detail.element,r=(0,J.getEnabledElement)(n),o=r.renderingEngine,a=e._editData,i=a.imageVolume,l=a.segmentation,s=a.segmentsLocked;e.updateCursor(t);var c=e._hoverData,d=c.segmentIndex,u=c.segmentationId,v=c.segmentationRepresentationUID,f=c.brushCursor,g=c.viewportIdsToRender,h=f.data,p=f.metadata,m=p.viewPlaneNormal,w=p.viewUp;ca(o,g);var E={points:h.handles.points,volume:l,imageVolume:i,segmentIndex:d,segmentsLocked:s,viewPlaneNormal:m,toolGroupId:e.toolGroupId,segmentationId:u,segmentationRepresentationUID:v,viewUp:w,strategySpecificConfiguration:e.configuration.strategySpecificConfiguration};e.applyActiveStrategy(r,E)})),ae(ga(e),"_endCallback",(function(t){var n=t.detail.element,r=e._editData,o=r.imageVolume,a=r.segmentation,i=r.segmentsLocked,l=e._hoverData,s=l.segmentIndex,c=l.segmentationId,d=l.segmentationRepresentationUID,u=l.brushCursor,v=u.data,f=u.metadata,g=f.viewPlaneNormal,h=f.viewUp;e._deactivateDraw(n),fs(n);var p=(0,J.getEnabledElement)(n),m=p.viewport;if(e._editData=null,e.updateCursor(t),m instanceof J.StackViewport)throw new Error("Not implemented yet");var w={points:v.handles.points,volume:a,imageVolume:o,segmentIndex:s,segmentsLocked:i,viewPlaneNormal:g,toolGroupId:e.toolGroupId,segmentationId:c,segmentationRepresentationUID:d,viewUp:h,strategySpecificConfiguration:e.configuration.strategySpecificConfiguration};e.applyActiveStrategy(p,w)})),ae(ga(e),"_activateDraw",(function(t){t.addEventListener(Q.MOUSE_UP,e._endCallback),t.addEventListener(Q.MOUSE_DRAG,e._dragCallback),t.addEventListener(Q.MOUSE_CLICK,e._endCallback)})),ae(ga(e),"_deactivateDraw",(function(t){t.removeEventListener(Q.MOUSE_UP,e._endCallback),t.removeEventListener(Q.MOUSE_DRAG,e._dragCallback),t.removeEventListener(Q.MOUSE_CLICK,e._endCallback)})),e}return re(o,[{key:"disableCursor",value:function(){this._hoverData=void 0}},{key:"updateCursor",value:function(e){var t=e.detail,n=t.element,r=t.currentPoints.canvas,o=(0,J.getEnabledElement)(n),a=o.renderingEngine,i=o.viewport,l=i.getCamera(),s=l.viewPlaneNormal,c=l.viewUp,d=this.toolGroupId,u=Wc(d);if(u){var v=u.segmentationRepresentationUID,f=u.segmentationId,g=Kc(f),h=Zc(d,v,g),p=[i.id],m={metadata:{viewPlaneNormal:Lr(s),viewUp:Lr(c),FrameOfReferenceUID:i.getFrameOfReferenceUID(),referencedImageId:"",toolName:this.getToolName(),segmentColor:h},data:{}};this._hoverData={brushCursor:m,centerCanvas:r,segmentIndex:g,segmentationId:f,segmentationRepresentationUID:v,segmentColor:h,viewportIdsToRender:p},this._calculateCursor(n,r),ca(a,p)}else console.warn("No active segmentation detected, create one before using the brush tool")}},{key:"_calculateCursor",value:function(e,t){var n=(0,J.getEnabledElement)(e).viewport,r=n.canvasToWorld,o=n.getCamera(),a=this.configuration.brushSize,i=xs.vec3.fromValues(o.viewUp[0],o.viewUp[1],o.viewUp[2]),l=xs.vec3.fromValues(o.viewPlaneNormal[0],o.viewPlaneNormal[1],o.viewPlaneNormal[2]),s=xs.vec3.create();xs.vec3.cross(s,i,l);for(var c=r([t[0],t[1]]),d=xs.vec3.create(),u=xs.vec3.create(),v=xs.vec3.create(),f=xs.vec3.create(),g=0;g<=2;g++)d[g]=c[g]-i[g]*a,u[g]=c[g]+i[g]*a,v[g]=c[g]-s[g]*a,f[g]=c[g]+s[g]*a;var h=this._hoverData.brushCursor.data;void 0===h.handles&&(h.handles={}),h.handles.points=[d,u,v,f],h.invalidated=!1}},{key:"invalidateBrushCursor",value:function(){void 0!==this._hoverData&&(this._hoverData.brushCursor.data.invalidated=!0)}},{key:"renderAnnotation",value:function(e,t){if(this._hoverData){var n=e.viewport;if(this._hoverData.viewportIdsToRender.includes(n.id)){var r=this._hoverData.brushCursor;if(!0===r.data.invalidated){var o=this._hoverData.centerCanvas,a=n.element;this._calculateCursor(a,o)}var i=r.metadata,l=i.brushCursorUID,s=r.data.handles.points.map((function(e){return n.worldToCanvas(e)})),c=s[0],d=s[1],u=[Math.floor((c[0]+d[0])/2),Math.floor((c[1]+d[1])/2)],v=Math.abs(c[1]-Math.floor((c[1]+d[1])/2)),f="rgb(".concat(i.segmentColor.slice(0,3),")");n.getRenderingEngine()?Ks(t,l,"0",u,v,{color:f}):console.warn("Rendering Engine has been destroyed")}}}}]),o}(La);ae($c,"toolName",void 0),$c.toolName="Brush";var Qc=$c;function ed(e,t){var n=fa(e);if(void 0!==n){var r=n._toolInstances;if(Object.keys(r).length)return t&&r[t]?[r[t]]:Object.values(r).filter((function(e){return e instanceof Qc}))}}function td(e,t,n,r){for(var o=[],a=0;a<2;a++)for(var i=0;i<2;i++)for(var l=0;l<2;l++){var s=Lr(r);s[0]=s[0]+(2*a-1)*n[0]/2,s[1]=s[1]+(2*i-1)*n[1]/2,s[2]=s[2]+(2*l-1)*n[2]/2,o.push(s)}var c=o.map((function(t){return J.utilities.transformWorldToIndex(e,t)}));return Cc(c,t)}function nd(e,t){for(var n=e.spacing,r=e.getScalarData(),o=[],a=0,i=0;i<t.length;i++){var l=t[i].volume,s=l.imageData,c=l.spacing,d=l.dimensions,u=t[i].volume.getScalarData().length;u===r.length&&(h=c,p=n,JSON.stringify(h)===JSON.stringify(p))&&(a=i);var v=s.getPointData().getScalars().getData(),f=t[i].lower,g=t[i].upper;o.push({imageData:s,referenceValues:v,lower:f,upper:g,spacing:c,dimensions:d,volumeSize:u})}var h,p;return{volumeInfoList:o,baseVolumeIdx:a}}var rd=function(e,t,n){var r=e.imageData,o=e.getScalarData(),a=n.overwrite,i=n.boundsIJK,l=(null==n?void 0:n.overlapType)||0;if(a)for(var s=0;s<o.length;s++)o[s]=0;var c,d,u,v=nd(e,t),f=v.baseVolumeIdx,g=v.volumeInfoList,h=function(e,t,n){var r=e.imageData,o=e.dimensions,a=e.lower,i=e.upper,s=td(r,o,t,n);d=0,c=0,u={lower:a,upper:i};var v=!1;return bc(r,(function(){return!0}),(function(e){var t=e.value;d+=1,t>=u.lower&&t<=u.upper&&(c+=1)}),s),0===l?v=c>0:1==l&&(v=c===d),v},p=function(e,t){var n=e.imageData,r=e.referenceValues,o=e.lower,a=e.upper,i=r[n.computeOffsetIndex(t)];return!(i<=o||i>=a)};return bc(r,(function(){return!0}),(function(e){for(var t=e.index,n=e.pointIJK,r=e.pointLPS,a=g.length>0,i=0;i<g.length&&(a=g[i].volumeSize===o.length?p(g[i],n):h(g[i],g[f].spacing,r));i++);a&&(o[t]=1)}),i),St(e.volumeId),e};function od(e,t){for(var n=e.length,r=[],o=0;o<n;o++){var a=e[o];a.getFrameOfReferenceUID()===t&&r.push(a)}return r}var ad=Xe.Active,id=Xe.Passive,ld=Xe.Enabled;function sd(e,t){for(var n=e.length,r=[],o=0;o<n;o++){var a=e[o],i=Fr(a.id,a.renderingEngineId);i&&cd(i,t)&&r.push(a)}return r}function cd(e,t){var n=e.toolOptions[t];if(!n)return!1;var r=n.mode;return r===ad||r===id||r===ld}var dd=function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:.999;return e.filter((function(e){var r=e.getCamera();return Math.abs(xs.vec3.dot(r.viewPlaneNormal,t.viewPlaneNormal))>n}))};function ud(e,t){var n=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],r=(0,J.getEnabledElement)(e),o=r.renderingEngine,a=r.FrameOfReferenceUID,i=o.getViewports();i=sd(i=od(i,a),t);var l=o.getViewport(r.viewportId);return n&&(i=dd(i,l.getCamera())),i.map((function(e){return e.id}))}function vd(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}var fd=1-J.CONSTANTS.EPSILON;function gd(e,t,n){var r=t.viewPlaneNormal,o=e.filter((function(e){var t=e.metadata.viewPlaneNormal;if(!t){var n=e.metadata.referencedImageId,o=J.metaData.get("imagePlaneModule",n).imageOrientationPatient,a=xs.vec3.fromValues(o[0],o[1],o[2]),i=xs.vec3.fromValues(o[3],o[4],o[5]);t=xs.vec3.create(),xs.vec3.cross(t,a,i),e.metadata.viewPlaneNormal=t}var l=Math.abs(xs.vec3.dot(r,t))>fd;return t&&l}));if(!o.length)return[];var a,i=n/2,l=t.focalPoint,s=[],c=function(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=function(e,t){if(e){if("string"==typeof e)return vd(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?vd(e,t):void 0}}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var r=0,o=function(){};return{s:o,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,i=!0,l=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return i=e.done,e},e:function(e){l=!0,a=e},f:function(){try{i||null==n.return||n.return()}finally{if(l)throw a}}}}(o);try{for(c.s();!(a=c.n()).done;){var d=a.value,u=d.data.handles.points[0];if(d.isVisible){var v=xs.vec3.create();xs.vec3.sub(v,l,u);var f=xs.vec3.dot(v,r);Math.abs(f)<i&&s.push(d)}}}catch(e){c.e(e)}finally{c.f()}return s}function hd(e,t){if(e instanceof J.StackViewport){var n=e.getCurrentImageId(),r=n.indexOf(":"),o=n.substring(r+1);return t.filter((function(e){if(!e.isVisible)return!1;var t=e.metadata.referencedImageId;if(void 0===t)return!1;var n=t.indexOf(":");return t.substring(n+1)===o}))}if(e instanceof J.VideoViewport){var a=e.getFrameOfReferenceUID();return t.filter((function(e){return e.metadata.FrameOfReferenceUID===a}))}if(e instanceof J.VolumeViewport){var i=e.getCamera();return gd(t,i,J.utilities.getTargetVolumeAndSpacingInNormalDir(e,i).spacingInNormalDirection)}throw new Error("Viewport Type ".concat(e.type," not supported"))}var pd=function(e){if(e){if(e.data&&e.highlighted)return Bl.Highlighted;if(Te(e.annotationUID))return Bl.Selected;if(ve(e))return Bl.Locked}return Bl.Default};var md=function(e){pa(o,e);var t,n,r=(t=o,n=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,r=wa(t);if(n){var o=wa(this).constructor;e=Reflect.construct(r,arguments,o)}else e=r.apply(this,arguments);return ma(this,e)});function o(){var e;oe(this,o);for(var t=arguments.length,n=new Array(t),a=0;a<t;a++)n[a]=arguments[a];return ae(ga(e=r.call.apply(r,[this].concat(n))),"onImageSpacingCalibrated",(function(t){var n=t.detail,r=n.element,o=n.imageId,a=J.utilities.imageIdToURI(o),i=Qe();i.getFramesOfReference().forEach((function(t){var n=i.getAnnotations(t)[e.getToolName()];n&&n.length&&(n.forEach((function(e){var t;null!==(t=e.metadata)&&void 0!==t&&t.referencedImageId&&J.utilities.imageIdToURI(e.metadata.referencedImageId)===a&&(e.invalidated=!0,e.data.cachedStats={})})),Zr(r))}))})),e}return re(o,[{key:"filterInteractableAnnotationsForElement",value:function(e,t){if(t&&t.length)return hd((0,J.getEnabledElement)(e).viewport,t)}},{key:"getReferencedImageId",value:function(e,t,n,r){var o,a=this.getTargetId(e);if(e instanceof J.StackViewport||e instanceof J.VideoViewport)o=a.split("imageId:")[1];else{var i=a.split("volumeId:")[1],l=J.cache.getVolume(i);o=J.utilities.getClosestImageId(l,t,n)}return o}},{key:"getStyle",value:function(e,t,n){return ns(e,t,pd(n),this.mode)}}]),o}(La);ae(md,"toolName",void 0),md.toolName="AnnotationDisplayTool";var wd=md;function Ed(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}var yd=function(e){pa(o,e);var t,n,r=(t=o,n=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,r=wa(t);if(n){var o=wa(this).constructor;e=Reflect.construct(r,arguments,o)}else e=r.apply(this,arguments);return ma(this,e)});function o(e,t){var n,a,i;return oe(this,o),ae(ga(i=r.call(this,e,t)),"mouseMoveCallback",(function(e,t){if(!t)return!1;var n,r=e.detail,o=r.element,a=r.currentPoints.canvas,l=!1,s=function(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=function(e,t){if(e){if("string"==typeof e)return Ed(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?Ed(e,t):void 0}}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var r=0,o=function(){};return{s:o,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,i=!0,l=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return i=e.done,e},e:function(e){l=!0,a=e},f:function(){try{i||null==n.return||n.return()}finally{if(l)throw a}}}}(t);try{for(s.s();!(n=s.n()).done;){var c=n.value;if(!ve(c)&&Pe(c.annotationUID)){var d=c.data,u=d.handles?d.handles.activeHandleIndex:void 0,v=i._imagePointNearToolOrHandle(o,c,a,6),f=v&&!c.highlighted,g=!v&&c.highlighted;f||g?(c.highlighted=!c.highlighted,l=!0):d.handles&&d.handles.activeHandleIndex!==u&&(l=!0)}}}catch(e){s.e(e)}finally{s.f()}return l})),null!==(n=e.configuration)&&void 0!==n&&n.getTextLines&&(i.configuration.getTextLines=e.configuration.getTextLines),null!==(a=e.configuration)&&void 0!==a&&a.statsCalculator&&(i.configuration.statsCalculator=e.configuration.statsCalculator),i}return re(o,[{key:"getHandleNearImagePoint",value:function(e,t,n,r){var o=(0,J.getEnabledElement)(e).viewport,a=t.data,i=a.handles,l=i.points,s=i.textBox;if(s){var c=s.worldBoundingBox;if(c){var d={topLeft:o.worldToCanvas(c.topLeft),topRight:o.worldToCanvas(c.topRight),bottomLeft:o.worldToCanvas(c.bottomLeft),bottomRight:o.worldToCanvas(c.bottomRight)};if(n[0]>=d.topLeft[0]&&n[0]<=d.bottomRight[0]&&n[1]>=d.topLeft[1]&&n[1]<=d.bottomRight[1])return a.handles.activeHandleIndex=null,s}}for(var u=0;u<l.length;u++){var v=l[u],f=o.worldToCanvas(v);if(!0==xs.vec2.distance(n,f)<r)return a.handles.activeHandleIndex=u,v}a.handles.activeHandleIndex=null}},{key:"getLinkedTextBoxStyle",value:function(e,t){return{visibility:this.getStyle("textBoxVisibility",e,t),fontFamily:this.getStyle("textBoxFontFamily",e,t),fontSize:this.getStyle("textBoxFontSize",e,t),color:this.getStyle("textBoxColor",e,t),shadow:this.getStyle("textBoxShadow",e,t),background:this.getStyle("textBoxBackground",e,t),lineWidth:this.getStyle("textBoxLinkLineWidth",e,t),lineDash:this.getStyle("textBoxLinkLineDash",e,t)}}},{key:"isSuvScaled",value:function(e,t,n){if(e instanceof J.BaseVolumeViewport){var r,o=t.split("volumeId:")[1];return void 0!==(null===(r=J.cache.getVolume(o).scaling)||void 0===r?void 0:r.PT)}if(e instanceof J.StackViewport){var a=n&&J.metaData.get("scalingModule",n);return"number"==typeof(null==a?void 0:a.suvbw)}throw new Error("Viewport is not a valid type")}},{key:"_imagePointNearToolOrHandle",value:function(e,t,n,r){return!!this.getHandleNearImagePoint(e,t,n,r)||!!this.isPointNearTool(e,t,n,r,"mouse")||void 0}}]),o}(wd);ae(yd,"toolName",void 0),yd.toolName="AnnotationTool";var Id=yd;function bd(e,t){return(e[0]-t[0])*(e[0]-t[0])+(e[1]-t[1])*(e[1]-t[1])}function Cd(e,t,n){var r=bd(e,t);if(0===r)return bd(n,e);var o=((n[0]-e[0])*(t[0]-e[0])+(n[1]-e[1])*(t[1]-e[1]))/r;return bd(n,o<0?e:o>1?t:[e[0]+o*(t[0]-e[0]),e[1]+o*(t[1]-e[1])])}function _d(e,t,n){if(2!==e.length||2!==t.length||2!==n.length)throw Error("lineStart, lineEnd, and point should have 2 elements of [x, y]");return Math.sqrt(Cd(e,t,n))}function Td(e,t){if(4!==e.length||2!==t.length)throw Error("rectangle:[left, top, width, height] or point: [x,y] not defined correctly");var n=dt(e,4),r=n[0],o=n[1],a=n[2],i=n[3],l=655535,s=function(e,t,n,r){return{top:[[e,t],[e+n,t]],right:[[e+n,t],[e+n,t+r]],bottom:[[e+n,t+r],[e,t+r]],left:[[e,t+r],[e,t]]}}(r,o,a,i);return Object.keys(s).forEach((function(e){var n=dt(s[e],2),r=_d(n[0],n[1],t);r<l&&(l=r)})),l}function Od(e){var t,n,r,o,a=(n=[(t=e)[0],t[1]].sort((function(e,t){return e[0]<t[0]?-1:1})),r=[t[0],t[1]].sort((function(e,t){return e[1]<t[1]?-1:1})),o=n[n.length-1],{top:r[0],bottom:r[r.length-1],right:o}),i=(a.top[1]+a.bottom[1])/2;return[a.right[0],i]}function Dd(e,t,n,r){var o=xs.vec3.create();xs.vec3.cross(o,t,e);var a=xs.vec3.fromValues.apply(xs.vec3,Lr(n)),i=xs.vec3.fromValues.apply(xs.vec3,Lr(r)),l=xs.vec3.create();xs.vec3.subtract(l,a,i);var s=xs.vec3.length(l);if(s<1e-4)return{worldWidth:0,worldHeight:0};var c=xs.vec3.dot(l,o)/(s*xs.vec3.length(o));return{worldWidth:Math.sqrt(1-c*c)*s,worldHeight:c*s}}function Sd(e,t,n){return"CT"===e?"HU":"PT"===e?function(e,t){if(!t.isPreScaled)return"raw";if(t.isSuvScaled)return"SUV";var n=J.metaData.get("generalSeriesModule",e);if("PT"===(null==n?void 0:n.modality)){var r=J.metaData.get("petSeriesModule",e);return(null==r?void 0:r.units)||"unitless"}}(t,n):""}function kd(e,t){if(e instanceof J.BaseVolumeViewport){var n=t.split("volumeId:"),r=n.length>1?n[1]:n[0],o=J.cache.getVolume(r);return!(null==o||!o.scaling)&&Object.keys(o.scaling).length>0}if(e instanceof J.StackViewport){var a=(e.getImageData()||{}).preScale;return!(null==a||!a.scaled)}throw new Error("Viewport is not a valid type")}var Md=re((function e(){oe(this,e)}));ae(Md,"run",void 0),ae(Md,"getStatistics",void 0);var xd=Md;var Rd=function(e){pa(o,e);var t,n,r=(t=o,n=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,r=wa(t);if(n){var o=wa(this).constructor;e=Reflect.construct(r,arguments,o)}else e=r.apply(this,arguments);return ma(this,e)});function o(){return oe(this,o),r.apply(this,arguments)}return re(o)}(xd);ae(Rd,"max",-1/0),ae(Rd,"currentMax",0),ae(Rd,"sum",0),ae(Rd,"sumSquares",0),ae(Rd,"squaredDiffSum",0),ae(Rd,"count",0),ae(Rd,"statsCallback",(function(e){var t=e.value;t>Rd.max&&(Rd.max=t,Rd.currentMax=t),Rd.count+=1,Rd.sum+=t,Rd.sumSquares+=Math.pow(t,2),Rd.squaredDiffSum+=Math.pow(t-Rd.sum/Rd.count,2)})),ae(Rd,"getStatistics",(function(){var e=Rd.sum/Rd.count,t=Math.sqrt(Rd.squaredDiffSum/Rd.count),n=Math.sqrt(Rd.sumSquares/Rd.count-Math.pow(e,2));return Rd.max=-1/0,Rd.sum=0,Rd.sumSquares=0,Rd.squaredDiffSum=0,Rd.count=0,[{name:"max",value:Rd.currentMax,unit:null},{name:"mean",value:e,unit:null},{name:"stdDev",value:t,unit:null},{name:"stdDevWithSumSquare",value:n,unit:null}]}));var Pd=J.utilities.transformWorldToIndex,Ad=function(e){pa(o,e);var t,n,r=(t=o,n=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,r=wa(t);if(n){var o=wa(this).constructor;e=Reflect.construct(r,arguments,o)}else e=r.apply(this,arguments);return ma(this,e)});function o(){var e,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{supportedInteractionTypes:["Mouse","Touch"],configuration:{shadow:!0,preventHandleOutsideImage:!1,getTextLines:Nd,statsCalculator:Rd}};return oe(this,o),ae(ga(e=r.call(this,t,n)),"_throttledCalculateCachedStats",void 0),ae(ga(e),"editData",void 0),ae(ga(e),"isDrawing",void 0),ae(ga(e),"isHandleOutsideImage",void 0),ae(ga(e),"addNewAnnotation",(function(t){var n=t.detail,r=n.currentPoints,o=n.element,a=r.world,i=(0,J.getEnabledElement)(o),l=i.viewport,s=i.renderingEngine;e.isDrawing=!0;var c=l.getCamera(),d=c.viewPlaneNormal,u=c.viewUp,v=e.getReferencedImageId(l,a,d,u),f=l.getFrameOfReferenceUID(),g={invalidated:!0,highlighted:!0,metadata:{toolName:e.getToolName(),viewPlaneNormal:Lr(d),viewUp:Lr(u),FrameOfReferenceUID:f,referencedImageId:v},data:{label:"",handles:{points:[Lr(a),Lr(a),Lr(a),Lr(a)],textBox:{hasMoved:!1,worldPosition:[0,0,0],worldBoundingBox:{topLeft:[0,0,0],topRight:[0,0,0],bottomLeft:[0,0,0],bottomRight:[0,0,0]}},activeHandleIndex:null},cachedStats:{}}};rt(g,o);var h=ud(o,e.getToolName());return e.editData={annotation:g,viewportIdsToRender:h,handleIndex:3,movingTextBox:!1,newAnnotation:!0,hasMoved:!1},e._activateDraw(o),gs(o),t.preventDefault(),ca(s,h),g})),ae(ga(e),"isPointNearTool",(function(t,n,r,o){var a=(0,J.getEnabledElement)(t).viewport,i=n.data.handles.points,l=a.worldToCanvas(i[0]),s=a.worldToCanvas(i[3]),c=e._getRectangleImageCoordinates([l,s]),d=[r[0],r[1]];return Td([c.left,c.top,c.width,c.height],d)<=o})),ae(ga(e),"toolSelectedCallback",(function(t,n){var r=t.detail.element;n.highlighted=!0;var o=ud(r,e.getToolName());e.editData={annotation:n,viewportIdsToRender:o,movingTextBox:!1},e._activateModify(r),gs(r);var a=(0,J.getEnabledElement)(r).renderingEngine;ca(a,o),t.preventDefault()})),ae(ga(e),"handleSelectedCallback",(function(t,n,r){var o=t.detail.element,a=n.data;n.highlighted=!0;var i,l=!1;r.worldPosition?l=!0:i=a.handles.points.findIndex((function(e){return e===r}));var s=ud(o,e.getToolName());e.editData={annotation:n,viewportIdsToRender:s,handleIndex:i,movingTextBox:l},e._activateModify(o),gs(o);var c=(0,J.getEnabledElement)(o).renderingEngine;ca(c,s),t.preventDefault()})),ae(ga(e),"_endCallback",(function(t){var n=t.detail.element,r=e.editData,o=r.annotation,a=r.viewportIdsToRender,i=r.newAnnotation,l=r.hasMoved,s=o.data;if(!i||l){s.handles.activeHandleIndex=null,e._deactivateModify(n),e._deactivateDraw(n),fs(n);var c=(0,J.getEnabledElement)(n).renderingEngine;if(e.editData=null,e.isDrawing=!1,e.isHandleOutsideImage&&e.configuration.preventHandleOutsideImage&&at(o.annotationUID),ca(c,a),i){var d=Q.ANNOTATION_COMPLETED,u={annotation:o};(0,J.triggerEvent)(J.eventTarget,d,u)}}})),ae(ga(e),"_dragCallback",(function(t){e.isDrawing=!0;var n=t.detail,r=n.element,o=e.editData,a=o.annotation,i=o.viewportIdsToRender,l=o.handleIndex,s=o.movingTextBox,c=a.data;if(s){var d=n.deltaPoints.world,u=c.handles.textBox,v=u.worldPosition;v[0]+=d[0],v[1]+=d[1],v[2]+=d[2],u.hasMoved=!0}else if(void 0===l){var f=n.deltaPoints.world;c.handles.points.forEach((function(e){e[0]+=f[0],e[1]+=f[1],e[2]+=f[2]})),a.invalidated=!0}else{var g,h,p,m,w,E,y,I,b=n.currentPoints,C=(0,J.getEnabledElement)(r).viewport,_=C.worldToCanvas,T=C.canvasToWorld,O=b.world,D=c.handles.points;switch(D[l]=Lr(O),l){case 0:case 3:g=_(D[0]),h=[(m=_(D[3]))[0],g[1]],p=[g[0],m[1]],E=T(h),y=T(p),D[1]=E,D[2]=y;break;case 1:case 2:h=_(D[1]),g=[(p=_(D[2]))[0],h[1]],m=[h[0],p[1]],w=T(g),I=T(m),D[0]=w,D[3]=I}a.invalidated=!0}e.editData.hasMoved=!0;var S=(0,J.getEnabledElement)(r).renderingEngine;ca(S,i)})),ae(ga(e),"cancel",(function(t){if(e.isDrawing){e.isDrawing=!1,e._deactivateDraw(t),e._deactivateModify(t),fs(t);var n=e.editData,r=n.annotation,o=n.viewportIdsToRender,a=n.newAnnotation,i=r.data;r.highlighted=!1,i.handles.activeHandleIndex=null;var l=(0,J.getEnabledElement)(t).renderingEngine;if(ca(l,o),a){var s=Q.ANNOTATION_COMPLETED,c={annotation:r};(0,J.triggerEvent)(J.eventTarget,s,c)}return e.editData=null,r.annotationUID}})),ae(ga(e),"_activateDraw",(function(t){Ke.isInteractingWithTool=!0,t.addEventListener(Q.MOUSE_UP,e._endCallback),t.addEventListener(Q.MOUSE_DRAG,e._dragCallback),t.addEventListener(Q.MOUSE_MOVE,e._dragCallback),t.addEventListener(Q.MOUSE_CLICK,e._endCallback),t.addEventListener(Q.TOUCH_END,e._endCallback),t.addEventListener(Q.TOUCH_DRAG,e._dragCallback),t.addEventListener(Q.TOUCH_TAP,e._endCallback)})),ae(ga(e),"_deactivateDraw",(function(t){Ke.isInteractingWithTool=!1,t.removeEventListener(Q.MOUSE_UP,e._endCallback),t.removeEventListener(Q.MOUSE_DRAG,e._dragCallback),t.removeEventListener(Q.MOUSE_MOVE,e._dragCallback),t.removeEventListener(Q.MOUSE_CLICK,e._endCallback),t.removeEventListener(Q.TOUCH_END,e._endCallback),t.removeEventListener(Q.TOUCH_DRAG,e._dragCallback),t.removeEventListener(Q.TOUCH_TAP,e._endCallback)})),ae(ga(e),"_activateModify",(function(t){Ke.isInteractingWithTool=!0,t.addEventListener(Q.MOUSE_UP,e._endCallback),t.addEventListener(Q.MOUSE_DRAG,e._dragCallback),t.addEventListener(Q.MOUSE_CLICK,e._endCallback),t.addEventListener(Q.TOUCH_END,e._endCallback),t.addEventListener(Q.TOUCH_DRAG,e._dragCallback),t.addEventListener(Q.TOUCH_TAP,e._endCallback)})),ae(ga(e),"_deactivateModify",(function(t){Ke.isInteractingWithTool=!1,t.removeEventListener(Q.MOUSE_UP,e._endCallback),t.removeEventListener(Q.MOUSE_DRAG,e._dragCallback),t.removeEventListener(Q.MOUSE_CLICK,e._endCallback),t.removeEventListener(Q.TOUCH_END,e._endCallback),t.removeEventListener(Q.TOUCH_DRAG,e._dragCallback),t.removeEventListener(Q.TOUCH_TAP,e._endCallback)})),ae(ga(e),"renderAnnotation",(function(t,n){var r,o,a=!1,i=t.viewport,l=i.element,s=nt(e.getToolName(),l);if(null===(r=s)||void 0===r||!r.length)return a;if(null===(o=s=e.filterInteractableAnnotationsForElement(l,s))||void 0===o||!o.length)return a;for(var c=e.getTargetId(i),d=i.getRenderingEngine(),u={toolGroupId:e.toolGroupId,toolName:e.getToolName(),viewportId:t.viewport.id},v=function(){var r=s[f],o=r.annotationUID,l=r.data,v=l.handles,g=v.points,h=v.activeHandleIndex,p=g.map((function(e){return i.worldToCanvas(e)}));u.annotationUID=o;var m,w=e.getStyle("lineWidth",u,r),E=e.getStyle("lineDash",u,r),y=e.getStyle("color",u,r),I=i.getCamera(),b=I.viewPlaneNormal,C=I.viewUp;if(l.cachedStats[c]&&null!=l.cachedStats[c].areaUnit){if(r.invalidated&&(e._throttledCalculateCachedStats(r,b,C,d,t),i instanceof J.VolumeViewport)){var _=r.metadata.referencedImageId;for(var T in l.cachedStats)T.startsWith("imageId")&&d.getStackViewports().find((function(e){var t=J.utilities.imageIdToURI(_),n=e.hasImageURI(t),r=J.utilities.imageIdToURI(e.getCurrentImageId());return n&&r!==t}))&&delete l.cachedStats[T]}}else l.cachedStats[c]={Modality:null,area:null,max:null,mean:null,stdDev:null,areaUnit:null},e._calculateCachedStats(r,b,C,d,t);if(!i.getRenderingEngine())return console.warn("Rendering Engine has been destroyed"),{v:a};if(!Pe(o))return"continue";ve(r)||e.editData||null===h||(m=[p[h]]),m&&Xs(n,o,"0",m,{color:y});var O="".concat(o,"-rect");oc(n,o,"0",p[0],p[3],{color:y,lineDash:E,lineWidth:w},O),a=!0;var D=e.getLinkedTextBoxStyle(u,r);if(!D.visibility)return l.handles.textBox={hasMoved:!1,worldPosition:[0,0,0],worldBoundingBox:{topLeft:[0,0,0],topRight:[0,0,0],bottomLeft:[0,0,0],bottomRight:[0,0,0]}},"continue";var S=e.configuration.getTextLines(l,c);if(!S||0===S.length)return"continue";if(!l.handles.textBox.hasMoved){var k=Od(p);l.handles.textBox.worldPosition=i.canvasToWorld(k)}var M=i.worldToCanvas(l.handles.textBox.worldPosition),x=rc(n,o,"1",S,M,p,{},D),R=x.x,P=x.y,A=x.width,N=x.height;l.handles.textBox.worldBoundingBox={topLeft:i.canvasToWorld([R,P]),topRight:i.canvasToWorld([R+A,P]),bottomLeft:i.canvasToWorld([R,P+N]),bottomRight:i.canvasToWorld([R+A,P+N])}},f=0;f<s.length;f++){var g=v();if("continue"!==g&&"object"===ee(g))return g.v}return a})),ae(ga(e),"_getRectangleImageCoordinates",(function(e){var t=dt(e,2),n=t[0],r=t[1];return{left:Math.min(n[0],r[0]),top:Math.min(n[1],r[1]),width:Math.abs(n[0]-r[0]),height:Math.abs(n[1]-r[1])}})),ae(ga(e),"_calculateCachedStats",(function(t,n,r,o,a){for(var i=t.data,l=a.viewportId,s=a.renderingEngineId,c=a.viewport,d=i.handles.points[0],u=i.handles.points[3],v=i.cachedStats,f=Object.keys(v),g=0;g<f.length;g++){var h=f[g],p=e.getTargetIdImage(h,o);if(p){var m=p.dimensions,w=p.imageData,E=p.metadata,y=("getScalarData"in p?p.getScalarData():p.scalarData,Pd(w,d));y[0]=Math.floor(y[0]),y[1]=Math.floor(y[1]),y[2]=Math.floor(y[2]);var I=Pd(w,u);if(I[0]=Math.floor(I[0]),I[1]=Math.floor(I[1]),I[2]=Math.floor(I[2]),e._isInsideVolume(y,I,m)){var b,C,_;e.isHandleOutsideImage=!1;var T=[[Math.min(y[0],I[0]),Math.max(y[0],I[0])],[Math.min(y[1],I[1]),Math.max(y[1],I[1])],[Math.min(y[2],I[2]),Math.max(y[2],I[2])]],O=Dd(n,r,d,u),D=O.worldWidth,S=O.worldHeight,k=yc(p),M=Math.abs(D*S)/(k*k),x={isPreScaled:kd(c,h),isSuvScaled:e.isSuvScaled(c,h,t.metadata.referencedImageId)},R=Sd(E.Modality,t.metadata.referencedImageId,x),P=bc(w,(function(){return!0}),e.configuration.statsCalculator.statsCallback,T),A=e.configuration.statsCalculator.getStatistics();v[h]={Modality:E.Modality,area:M,mean:null===(b=A[1])||void 0===b?void 0:b.value,stdDev:null===(C=A[2])||void 0===C?void 0:C.value,max:null===(_=A[0])||void 0===_?void 0:_.value,statsArray:A,pointsInShape:P,areaUnit:Ec(0,p),modalityUnit:R}}else e.isHandleOutsideImage=!0,v[h]={Modality:E.Modality}}}t.invalidated=!1;var N=Q.ANNOTATION_MODIFIED,L={annotation:t,viewportId:l,renderingEngineId:s};return(0,J.triggerEvent)(J.eventTarget,N,L),v})),ae(ga(e),"_isInsideVolume",(function(e,t,n){return J.utilities.indexWithinDimensions(e,n)&&J.utilities.indexWithinDimensions(t,n)})),e._throttledCalculateCachedStats=fc(e._calculateCachedStats,100,{trailing:!0}),e}return re(o)}(Id);function Nd(e,t){var n=e.cachedStats[t],r=n.area,o=n.mean,a=n.max,i=n.stdDev,l=n.areaUnit,s=n.modalityUnit;if(void 0!==o){var c=[];return c.push("Area: ".concat(Oc(r)," ").concat(l)),c.push("Mean: ".concat(Oc(o)," ").concat(s)),c.push("Max: ".concat(Oc(a)," ").concat(s)),c.push("Std Dev: ".concat(Oc(i)," ").concat(s)),c}}ae(Ad,"toolName",void 0),Ad.toolName="RectangleROI";var Ld=Ad;var Ud=function(e){pa(o,e);var t,n,r=(t=o,n=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,r=wa(t);if(n){var o=wa(this).constructor;e=Reflect.construct(r,arguments,o)}else e=r.apply(this,arguments);return ma(this,e)});function o(){var e,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{supportedInteractionTypes:["Mouse","Touch"],configuration:{shadow:!0,preventHandleOutsideImage:!1}};return oe(this,o),ae(ga(e=r.call(this,t,n)),"_throttledCalculateCachedStats",void 0),ae(ga(e),"editData",void 0),ae(ga(e),"isDrawing",void 0),ae(ga(e),"isHandleOutsideImage",void 0),ae(ga(e),"addNewAnnotation",(function(t){var n=t.detail,r=n.currentPoints,o=n.element,a=r.world,i=(0,J.getEnabledElement)(o),l=i.viewport,s=i.renderingEngine;e.isDrawing=!0;var c,d,u=l.getCamera(),v=u.viewPlaneNormal,f=u.viewUp,g=e.getTargetId(l);if(l instanceof J.StackViewport)c=g.split("imageId:")[1];else{d=g.split("volumeId:")[1];var h=J.cache.getVolume(d);c=J.utilities.getClosestImageId(h,a,v)}var p=l.getFrameOfReferenceUID(),m={highlighted:!0,invalidated:!0,metadata:{viewPlaneNormal:Lr(v),enabledElement:i,viewUp:Lr(f),FrameOfReferenceUID:p,referencedImageId:c,toolName:e.getToolName(),volumeId:d},data:{label:"",handles:{textBox:{hasMoved:!1,worldPosition:null,worldBoundingBox:null},points:[Lr(a),Lr(a),Lr(a),Lr(a)],activeHandleIndex:null},segmentationId:null}};rt(m,o);var w=ud(o,e.getToolName());return e.editData={annotation:m,viewportIdsToRender:w,handleIndex:3,newAnnotation:!0,hasMoved:!1},e._activateDraw(o),gs(o),t.preventDefault(),ca(s,w),m})),ae(ga(e),"renderAnnotation",(function(t,n){var r,o,a=!1,i=t.viewport,l=t.renderingEngineId,s=i.element,c=nt(e.getToolName(),s);if(null===(r=c)||void 0===r||!r.length)return a;if(null===(o=c=e.filterInteractableAnnotationsForElement(s,c))||void 0===o||!o.length)return a;for(var d={toolGroupId:e.toolGroupId,toolName:e.getToolName(),viewportId:t.viewport.id},u=0;u<c.length;u++){var v=c[u],f=v.annotationUID,g=v.data.handles,h=g.points,p=g.activeHandleIndex,m=h.map((function(e){return i.worldToCanvas(e)}));d.annotationUID=f;var w=e.getStyle("lineWidth",d,v),E=e.getStyle("lineDash",d,v),y=e.getStyle("color",d,v);if(!i.getRenderingEngine())return console.warn("Rendering Engine has been destroyed"),a;var I=Q.ANNOTATION_MODIFIED,b={annotation:v,viewportId:i.id,renderingEngineId:l};(0,J.triggerEvent)(J.eventTarget,I,b);var C=void 0;Pe(f)&&(ve(v)||e.editData||null===p||(C=[m[p]]),C&&Xs(n,f,"0",C,{color:y}),oc(n,f,"0",m[0],m[3],{color:y,lineDash:E,lineWidth:w}),a=!0)}return a})),e}return re(o)}(Ld);ae(Ud,"toolName",void 0),Ud.toolName="RectangleROIThreshold";var Vd=Ud;var jd=J.utilities.transformWorldToIndex,Bd=function(e){pa(o,e);var t,n,r=(t=o,n=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,r=wa(t);if(n){var o=wa(this).constructor;e=Reflect.construct(r,arguments,o)}else e=r.apply(this,arguments);return ma(this,e)});function o(){var e,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{configuration:{numSlicesToPropagate:10}};return oe(this,o),ae(ga(e=r.call(this,t,n)),"_throttledCalculateCachedStats",void 0),ae(ga(e),"editData",void 0),ae(ga(e),"isDrawing",void 0),ae(ga(e),"isHandleOutsideImage",void 0),ae(ga(e),"addNewAnnotation",(function(t){var n=t.detail,r=n.currentPoints,o=n.element,a=r.world,i=(0,J.getEnabledElement)(o),l=i.viewport,s=i.renderingEngine;e.isDrawing=!0;var c,d,u,v=l.getCamera(),f=v.viewPlaneNormal,g=v.viewUp;if(l instanceof J.StackViewport)throw new Error("Stack Viewport Not implemented");if(u=e.getTargetId(l).split("volumeId:")[1],d=J.cache.getVolume(u),!(c=J.utilities.getClosestImageId(d,a,f)))throw new Error("This tool does not work on non-acquisition planes");var h=l.getCurrentImageIdIndex(),p=J.utilities.getSpacingInNormalDirection(d,f),m=e._getEndSliceIndex(d,a,p,f),w=l.getFrameOfReferenceUID(),E={highlighted:!0,invalidated:!0,metadata:{viewPlaneNormal:Lr(f),enabledElement:i,viewUp:Lr(g),FrameOfReferenceUID:w,referencedImageId:c,toolName:e.getToolName(),volumeId:u,spacingInNormal:p},data:{label:"",startSlice:h,endSlice:m,cachedStats:{projectionPoints:[],projectionPointsImageIds:[c]},handles:{textBox:{hasMoved:!1,worldPosition:null,worldBoundingBox:null},points:[Lr(a),Lr(a),Lr(a),Lr(a)],activeHandleIndex:null},labelmapUID:null}};e._computeProjectionPoints(E,d),rt(E,o);var y=ud(o,e.getToolName());return e.editData={annotation:E,viewportIdsToRender:y,handleIndex:3,newAnnotation:!0,hasMoved:!1},e._activateDraw(o),gs(o),t.preventDefault(),ca(s,y),E})),ae(ga(e),"renderAnnotation",(function(t,n){var r=!1,o=t.viewport,a=nt(e.getToolName(),o.element);if(null==a||!a.length)return r;for(var i=o.getCurrentImageIdIndex(),l={toolGroupId:e.toolGroupId,toolName:e.getToolName(),viewportId:t.viewport.id},s=0;s<a.length;s++){var c=a[s],d=c.annotationUID,u=c.data,v=u.startSlice,f=u.endSlice,g=u.handles,h=g.points,p=g.activeHandleIndex,m=h.map((function(e){return o.worldToCanvas(e)}));l.annotationUID=d;var w=e.getStyle("lineWidth",l,c),E=e.getStyle("lineDash",l,c),y=e.getStyle("color",l,c);if(!(i<Math.min(v,f)||i>Math.max(v,f))){c.invalidated&&e._throttledCalculateCachedStats(c,t);var I=!1;if(i!==v&&i!==f||(I=!0),!o.getRenderingEngine())return console.warn("Rendering Engine has been destroyed"),r;var b=void 0;if(Pe(d)){ve(c)||e.editData||null===p||!I||(b=[m[p]]),b&&Xs(n,d,"0",b,{color:y});var C=E;I||(C=2),oc(n,d,"0",m[0],m[3],{color:y,lineDash:C,lineWidth:w}),r=!0}}}return r})),e._throttledCalculateCachedStats=fc(e._calculateCachedStatsTool,100,{trailing:!0}),e}return re(o,[{key:"_computeProjectionPoints",value:function(e,t){var n=e.data,r=e.metadata,o=r.viewPlaneNormal,a=r.spacingInNormal,i=t.imageData,l=n.startSlice,s=n.endSlice,c=n.handles.points,d=jd(i,c[0]);if(d[2]!==l)throw new Error("Start slice does not match");var u=xs.vec3.fromValues(d[0],d[1],s),v=xs.vec3.create();i.indexToWorldVec3(d,v);var f=xs.vec3.create();i.indexToWorldVec3(u,f);for(var g=xs.vec3.distance(v,f),h=[],p=function(e){h.push(c.map((function(t){var n=xs.vec3.create();return xs.vec3.scaleAndAdd(n,t,o,e),Array.from(n)})))},m=0;m<g;m+=a)p(m);n.cachedStats.projectionPoints=h;for(var w=[],E=0,y=h;E<y.length;E++){var I=y[E],b=J.utilities.getClosestImageId(t,I[0],o);w.push(b)}n.cachedStats.projectionPointsImageIds=w}},{key:"_calculateCachedStatsTool",value:function(e,t){var n=e.data,r=t.viewportId,o=t.renderingEngineId,a=t.viewport,i=n.cachedStats,l=this.getTargetId(a),s=J.cache.getVolume(l.split("volumeId:")[1]);this._computeProjectionPoints(e,s),e.invalidated=!1;var c=Q.ANNOTATION_MODIFIED,d={annotation:e,viewportId:r,renderingEngineId:o};return(0,J.triggerEvent)(J.eventTarget,c,d),i}},{key:"_getEndSliceIndex",value:function(e,t,n,r){var o=this.configuration.numSlicesToPropagate,a=xs.vec3.create();xs.vec3.scaleAndAdd(a,t,r,o*n);for(var i,l=n/2,s=e.imageIds,c=0;c<s.length;c++){var d=s[c],u=J.metaData.get("imagePlaneModule",d).imagePositionPatient,v=xs.vec3.create();xs.vec3.sub(v,a,u);var f=xs.vec3.dot(v,r);Math.abs(f)<l&&(i=c)}return i}}]),o}(Ld);ae(Bd,"toolName",void 0),Bd.toolName="RectangleROIStartEndThreshold";var Wd=Bd,Fd=function(e,t){var n=e.findIndex((function(e){var t=dt(e,2);return t[0]===t[1]}));if(-1===n)throw new Error("3D bounding boxes not supported in an oblique plane");return e[n][0]-=t,e[n][1]+=t,e},Hd=function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=[];return e.forEach((function(e){var o,a,i=e.data,l=i.handles.points,s=t.imageData,c=t.dimensions,d=l;if(null!==(o=i.cachedStats)&&void 0!==o&&o.projectionPoints){var u,v=i.cachedStats.projectionPoints;d=(u=[]).concat.apply(u,Lr(v))}var f=d.map((function(e){return J.utilities.transformWorldToIndex(s,e)})),g=Cc(f,c);!n.numSlicesToProject||null!==(a=i.cachedStats)&&void 0!==a&&a.projectionPoints||(g=Fd(g,n.numSlicesToProject)),r.push(g)})),1===r.length?r[0]:r.reduce((function(e,t){return{iMin:Math.min(e.iMin,t.iMin),jMin:Math.min(e.jMin,t.jMin),kMin:Math.min(e.kMin,t.kMin),iMax:Math.max(e.iMax,t.iMax),jMax:Math.max(e.jMax,t.jMax),kMax:Math.max(e.kMax,t.kMax)}}),{iMin:1/0,jMin:1/0,kMin:1/0,iMax:-1/0,jMax:-1/0,kMax:-1/0})};function Gd(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function qd(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function zd(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?qd(Object(n),!0).forEach((function(t){ae(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):qd(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}var Kd=function(e,t,n,r){var o,a=e.map((function(e){return it(e)}));!function(e){var t,n=[Vd.toolName,Wd.toolName],r=function(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=function(e,t){if(e){if("string"==typeof e)return Gd(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?Gd(e,t):void 0}}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var r=0,o=function(){};return{s:o,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,i=!0,l=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return i=e.done,e},e:function(e){l=!0,a=e},f:function(){try{i||null==n.return||n.return()}finally{if(l)throw a}}}}(e);try{for(r.s();!(t=r.n()).done;){var o=t.value.metadata.toolName;if(!n.includes(o))throw new Error("rectangleROIThresholdVolumeByRange only supports RectangleROIThreshold and RectangleROIStartEndThreshold annotations")}}catch(e){r.e(e)}finally{r.f()}}(a);for(var i=0;i<n.length;i++)n[i].volume.getScalarData().length!==t.getScalarData().length&&0!==i||(o=Hd(a,n[i].volume,r));return rd(t,n,zd(zd({},r),{},{boundsIJK:o}))},Yd=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"mergedLabelmap";e.forEach((function(t){var n=t.direction,r=t.dimensions,o=t.origin,a=t.spacing;if(!(J.utilities.isEqual(r,e[0].dimensions)&&J.utilities.isEqual(n,e[0].direction)&&J.utilities.isEqual(a,e[0].spacing)&&J.utilities.isEqual(o,e[0].origin)))throw new Error("labelmaps must have the same size and shape")}));var r=e[0],o=new(0,r.getScalarData().constructor)(r.getScalarData().length);e.forEach((function(e){for(var n=e.getScalarData(),r=0;r<n.length;r++)n[r]===t&&(o[r]=t)}));var a={scalarData:o,metadata:r.metadata,spacing:r.spacing,origin:r.origin,direction:r.direction,dimensions:r.dimensions};return J.volumeLoader.createLocalVolume(a,n,!0)};function Xd(e,t){if(e===gt.Labelmap)return function(e){return e&&"boolean"==typeof e.renderOutline&&"number"==typeof e.outlineWidthActive&&"number"==typeof e.outlineWidthInactive&&"boolean"==typeof e.renderFill&&"boolean"==typeof e.renderFillInactive&&"number"==typeof e.fillAlpha&&"number"==typeof e.fillAlphaInactive&&"number"==typeof e.outlineOpacity&&"number"==typeof e.outlineOpacityInactive}(t);throw new Error("Unknown representation type: ".concat(e))}function Zd(e){var t=e.type;if(t===gt.Labelmap)return mt();throw new Error("Unknown representation type: ".concat(t))}function Jd(e){return $d.apply(this,arguments)}function $d(){return($d=Va(Ba().mark((function e(t){var n,r,o,a,i,l,s,c,d,u,v,f;return Ba().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(n=t.viewportId,r=t.renderingEngineId,o=t.options,a=t.segmentationId,i=(0,J.getEnabledElementByIds)(n,r)){e.next=5;break}throw new Error("element disabled");case 5:if((l=i.viewport)instanceof J.VolumeViewport){e.next=8;break}throw new Error("Segmentation only supports VolumeViewport");case 8:if(s=l.getDefaultActor(),c=s.uid,void 0===a&&(a="".concat(c,"-based-segmentation-").concat(null!==(d=null==o?void 0:o.volumeId)&&void 0!==d?d:J.utilities.uuidv4().slice(0,8))),!o){e.next=16;break}return u=(0,ie._cloneDeep)(o),e.next=14,J.volumeLoader.createLocalVolume(u,a);case 14:e.next=19;break;case 16:return v=l.getDefaultActor(),f=v.uid,e.next=19,J.volumeLoader.createAndCacheDerivedVolume(f,{volumeId:a});case 19:return e.abrupt("return",a);case 20:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function Qd(e,t){return e===t}function eu(e,t,n){return(new Array(n+1).join(t)+e).slice(-n)}var tu=function(e,t){var n,r,o,a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},i=a.onFlood,l=a.onBoundary,s=a.equals||Qd,c=a.diagonals||!1,d=p(t),u=function(e){for(var t=[],n=function(e){return e.split("").map((function(e){return parseInt(e,10)-1}))},r=0;r<Math.pow(3,e);r+=1){var o=eu(r.toString(3),"0",e);t.push(n(o))}return t}(t.length).filter((function(e){var t=function(e){for(var t=0,n=0;n<e.length;n+=1)0!==e[n]&&(t+=1);return t}(e);return 0!==t&&(1===t||c)})),v=[],f=[],g={},h={};for(v.push({currentArgs:t});v.length>0;)n=v.pop(),r=void 0,o=void 0,r=n.currentArgs,o=n.previousArgs,!0!==g[r]&&(g[r]=!0,function(e){var t=m(p,[e]);return m(s,[t,d])}(r)?(function(e){f.push(e),i&&i.apply(void 0,Lr(e))}(r),function(e){for(var t=0;t<u.length;t+=1){for(var n=u[t],r=e.slice(0),o=0;o<e.length;o+=1)r[o]+=n[o];v.push({currentArgs:r,previousArgs:e})}}(r)):function(e){h[e]=e,l&&l.apply(void 0,Lr(e))}(o));return{flooded:f,boundaries:function(){var e=[];for(var t in h)void 0!==h[t]&&e.unshift(h[t]);return e}()};function p(t){return e.apply(void 0,Lr(t))}function m(e,t){try{return e.apply(void 0,Lr(t))}catch(e){return}}};function nu(e,t,n){var r=fa(e);if(void 0!==r){ed(e,n).forEach((function(e){e.configuration.brushSize=t,e.invalidateBrushCursor()}));var o=r.getViewportsInfo(),a=Object.keys(o).map((function(e){return o[e]}));if(a.length){var i=a[0].renderingEngineId,l=r.getViewportIds(),s=(0,J.getRenderingEngine)(i);ca(s,l)}}}function ru(e,t){var n=fa(e);if(void 0!==n){var r=n._toolInstances;if(Object.keys(r).length){var o=ed(e,t)[0];if(o)return o.configuration.brushSize}}}function ou(e,t){var n=fa(e);if(void 0!==n){ed(e).forEach((function(e){e.configuration.strategySpecificConfiguration.THRESHOLD_INSIDE_CIRCLE.threshold=t}));var r=n.getViewportsInfo();if(r.length){var o=r[0].renderingEngineId,a=n.getViewportIds(),i=(0,J.getRenderingEngine)(o);ca(i,a)}}}function au(e){var t=fa(e);if(void 0!==t){var n=t._toolInstances;if(Object.keys(n).length){var r=ed(e)[0];if(r)return r.configuration.strategySpecificConfiguration.THRESHOLD_INSIDE_CIRCLE.threshold}}}var iu=function(e,t,n,r){var o=e.getScalarData(),a=nd(e,n),i=a.baseVolumeIdx,l=a.volumeInfoList;return l.forEach((function(e){e.volumeSize===o.length?function(e,t,n){for(var r=n.referenceValues,o=n.lower,a=n.upper,i=0;i<e.length;i++)if(e[i]===t){var l=r[i];e[i]=l>=o&&l<=a?t:0}}(o,t,e):function(e,t,n,r,o,a){for(var i,l,s,c=n.imageData,d=n.lower,u=n.upper,v=n.dimensions,f=0;f<e.length;f++)if(e[f]===t){var g=td(c,v,r[o].spacing,r[o].imageData.getPoint(f));i=0,l=0,s={lower:d,upper:u};var h;bc(c,(function(){return!0}),(function(e){var t=e.value;i+=1,t>=s.lower&&t<=s.upper&&(l+=1)}),g),h=0===a?l>0:l===i,e[f]=h?t:0}}(o,t,e,l,i,r)})),St(e.volumeId),e},lu=1e-6,su=1,cu=0;function du(e,t,n){var r=dt(n,2),o=r[0],a=r[1];if(Math.abs(t)<lu)return e<0;var i=e/t;if(t>0){if(i>a)return 0;i>o&&(n[0]=i)}else{if(i<o)return 0;i<a&&(n[1]=i)}return 1}function uu(e,t,n,r,o){var a=dt(e,2),i=a[0],l=a[1],s=dt(t,2),c=s[0]-i,d=s[1]-l;if(void 0===r||void 0===o?(r=e,o=t):(r[0]=e[0],r[1]=e[1],o[0]=t[0],o[1]=t[1]),Math.abs(c)<lu&&Math.abs(d)<lu&&i>=n[0]&&i<=n[2]&&l>=n[1]&&l<=n[3])return su;var u=[0,1];if(du(n[0]-i,c,u)&&du(i-n[2],-c,u)&&du(n[1]-l,d,u)&&du(l-n[3],-d,u)){var v=u[0],f=u[1];return f<1&&(o[0]=i+f*c,o[1]=l+f*d),v>0&&(r[0]+=v*c,r[1]+=v*d),su}return cu}function vu(e){return"number"==typeof e?e?e<0?-1:1:e==e?0:NaN:NaN}function fu(e,t,n,r){var o=dt(e,2),a=o[0],i=o[1],l=dt(t,2),s=l[0],c=l[1],d=dt(n,2),u=d[0],v=d[1],f=dt(r,2),g=f[0],h=f[1],p=c-i,m=a-s,w=s*i-a*c,E=p*u+m*v+w,y=p*g+m*h+w;if(0===E||0===y||vu(E)!==vu(y)){var I=h-v,b=u-g,C=g*v-u*h,_=I*a+b*i+C,T=I*s+b*c+C;if(0===_||0===T||vu(_)!==vu(T)){var O=p*b-I*m;return[(m*C-b*w)/O,(I*w-p*C)/O]}}}function gu(e,t,n){var r,o;arguments.length>3&&void 0!==arguments[3]&&!arguments[3]?(o=0,r=1):(o=e.length-1,r=0);for(var a=r;a<e.length;a++){if(pu(t,n,e[o],e[a]))return[o,a];o=a}}function hu(e,t,n){var r,o;arguments.length>3&&void 0!==arguments[3]&&!arguments[3]?(o=0,r=1):(o=e.length-1,r=0);for(var a=[],i=r;i<e.length;i++){var l=e[o],s=e[i];pu(t,n,l,s)&&a.push([o,i]),o=i}if(0!==a.length){var c=[];a.forEach((function(n){var r=[e[n[0]],e[n[1]]],o=[(r[0][0]+r[1][0])/2,(r[0][1]+r[1][1])/2];c.push(xs.vec2.distance(o,t))}));var d=Math.min.apply(Math,c);return{segment:a[c.indexOf(d)],distance:d}}}function pu(e,t,n,r){var o=!1,a=[mu(e,t,n),mu(e,t,r),mu(n,r,e),mu(n,r,t)];return a[0]!==a[1]&&a[2]!==a[3]||((0===a[0]&&wu(e,n,t)||0===a[1]&&wu(e,r,t)||0===a[2]&&wu(n,e,r)||0===a[3]&&wu(n,t,r))&&(o=!0),o)}function mu(e,t,n){var r=(t[1]-e[1])*(n[0]-t[0])-(t[0]-e[0])*(n[1]-t[1]);return 0===r?0:r>0?1:2}function wu(e,t,n){return t[0]<=Math.max(e[0],n[0])&&t[0]>=Math.min(e[0],n[0])&&t[1]<=Math.max(e[1],n[1])&&t[1]>=Math.min(e[1],n[1])}function Eu(e,t,n,r){var o=(r[1]-n[1])*(t[0]-e[0])-(r[0]-n[0])*(t[1]-e[1]);if(0!=o){var a=e[1]-n[1],i=e[0]-n[0],l=(r[0]-n[0])*a-(r[1]-n[1])*i,s=(t[0]-e[0])*a-(t[1]-e[1])*i;return a=l/o,i=s/o,[e[0]+a*(t[0]-e[0]),e[1]+a*(t[1]-e[1])]}}var yu=.001,Iu=function(e,t){var n,r,o;if(e instanceof J.StackViewport){var a=e.getImageData();r=a.direction.slice(0,3),o=a.direction.slice(3,6),n=a.spacing}else{var i=e.getImageData(),l=i.direction,s=i.spacing,c=e.getCamera(),d=c.viewPlaneNormal,u=c.viewUp,v=l.slice(0,3),f=l.slice(3,6),g=l.slice(6,9),h=xs.vec3.create();xs.vec3.cross(h,u,d);var p,m=Math.abs(xs.vec3.dot(h,v)),w=Math.abs(xs.vec3.dot(h,f)),E=Math.abs(xs.vec3.dot(h,g));if(Math.abs(1-m)<yu)p=s[0],r=v;else if(Math.abs(1-w)<yu)p=s[1],r=f;else{if(!(Math.abs(1-E)<yu))throw new Error("No support yet for oblique plane planar contours");p=s[2],r=g}var y,I=Math.abs(xs.vec3.dot(u,v)),b=Math.abs(xs.vec3.dot(u,f)),C=Math.abs(xs.vec3.dot(u,g));if(Math.abs(1-I)<yu)y=s[0],o=v;else if(Math.abs(1-b)<yu)y=s[1],o=f;else{if(!(Math.abs(1-C)<yu))throw new Error("No support yet for oblique plane planar contours");y=s[2],o=g}n=[p,y]}return{spacing:[n[0]/t,n[1]/t],xDir:r,yDir:o}},bu=function(e,t,n){return xs.vec2.dist(e,t)<n},Cu=function(e,t,n,r){var o=r.xDir,a=r.yDir,i=r.spacing,l=(0,J.getEnabledElement)(e).viewport,s=l.canvasToWorld(t[t.length-1]),c=l.canvasToWorld(n),d=xs.vec3.create();xs.vec3.subtract(d,c,s);var u=Math.abs(xs.vec3.dot(d,o)),v=Math.abs(xs.vec3.dot(d,a)),f=Math.max(Math.floor(u/i[0]),Math.floor(v/i[0]));if(f>1){var g=t[t.length-1],h=xs.vec2.dist(g,n),p=xs.vec2.create();xs.vec2.subtract(p,n,g),xs.vec2.set(p,p[0]/h,p[1]/h);for(var m=h/f,w=1;w<=f;w++)t.push([g[0]+m*p[0]*w,g[1]+m*p[1]*w])}else t.push(n);return f},_u=function(e,t,n,r){var o=[e[0]-t[0],e[1]-t[1]],a=[n[0]-t[0],n[1]-t[1]],i=o[0]*a[0]+o[1]*a[1];if(i<0)return!1;var l=Math.sqrt(a[0]*a[0]+a[1]*a[1]);if(0===l)return!1;var s=i/l,c=[a[0]/l,a[1]/l],d=[c[0]*s,c[1]*s],u=[t[0]+d[0],t[1]+d[1]];return!(xs.vec2.distance(e,u)>r||xs.vec2.distance(t,u)>xs.vec2.distance(t,n))};function Tu(e){for(var t=e.length,n=0,r=t-1,o=0;o<t;o++)n+=(e[r][0]+e[o][0])*(e[r][1]-e[o][1]),r=o;return Math.abs(n/2)}function Ou(e,t){if(e.length!==t.length)throw Error("Both points should have the same dimensionality");var n=dt(e,3),r=n[0],o=n[1],a=n[2],i=void 0===a?0:a,l=dt(t,3),s=l[0],c=l[1],d=l[2],u=void 0===d?0:d;return Math.sqrt(Math.pow(r-s,2)+Math.pow(o-c,2)+Math.pow(i-u,2))}var Du=y(807),Su=y.n(Du);function ku(e,t,n,r){var o,a=arguments.length>4&&void 0!==arguments[4]?arguments[4]:.25,i=e.getCamera(),l=i.position,s=J.utilities.getTargetVolumeAndSpacingInNormalDir(e,i,n).spacingInNormalDirection*a,c=e.getBounds(),d=c[0],u=c[1],v=[0,0,0],f=[0,0,0];Su().subtract(t,l,v);for(var g=d;g<=u;g+=s){f=[g,0,0];var h=(g-l[0])/v[0];if(f[1]=h*v[1]+l[1],f[2]=h*v[2]+l[2],Mu(f,c)){var p=r(e.getIntensityFromWorld(f),f);p&&(o=p)}}return o}var Mu=function(e,t){var n=dt(t,6),r=n[0],o=n[1],a=n[2],i=n[3],l=n[4],s=n[5];return e[0]>r&&e[0]<o&&e[1]>a&&e[1]<i&&e[2]>l&&e[2]<s},xu={filterAnnotationsWithinSlice:gd,getWorldWidthAndHeightFromCorners:Dd,filterAnnotationsForDisplay:hd,getPointInLineOfSightWithCriteria:ku};function Ru(e){for(var t="",n=e[0]<0?"R":"L",r=e[1]<0?"A":"P",o=e[2]<0?"F":"H",a=[Math.abs(e[0]),Math.abs(e[1]),Math.abs(e[2])],i=1e-4,l=0;l<3;l++)if(a[0]>i&&a[0]>a[1]&&a[0]>a[2])t+=n,a[0]=0;else if(a[1]>i&&a[1]>a[0]&&a[1]>a[2])t+=r,a[1]=0;else if(a[2]>i&&a[2]>a[0]&&a[2]>a[1])t+=o,a[2]=0;else if(a[0]>i&&a[1]>i&&a[0]===a[1])t+=n+r,a[0]=0,a[1]=0;else if(a[0]>i&&a[2]>i&&a[0]===a[2])t+=n+o,a[0]=0,a[2]=0;else{if(!(a[1]>i&&a[2]>i&&a[1]===a[2]))break;t+=r+o,a[1]=0,a[2]=0}return t}function Pu(e){var t=e.replace("H","f");return(t=(t=(t=(t=(t=t.replace("F","h")).replace("R","l")).replace("L","r")).replace("A","p")).replace("P","a")).toUpperCase()}var Au=function(e){return e.CLIP_STOPPED="CORNERSTONE_CINE_TOOL_STOPPED",e.CLIP_STARTED="CORNERSTONE_CINE_TOOL_STARTED",e}(Au||{}),Nu=Au,Lu={};function Uu(e,t){var n=(0,J.getEnabledElement)(e).viewportId;Lu[n]=t}function Vu(e){var t=(0,J.getEnabledElement)(e).viewportId;return Lu[t]}var ju=J.Enums.ViewportStatus,Bu=J.utilities.triggerEvent,Wu=!0,Fu=!0,Hu=new Map;function Gu(e,t){var n,r,o;if(void 0===e)throw new Error("playClip: element must not be undefined");var a=(0,J.getEnabledElement)(e);if(!a)throw new Error("playClip: element must be a valid Cornerstone enabled element");t.dynamicCineEnabled=null===(n=t.dynamicCineEnabled)||void 0===n||n;var i,l,s,c,d=a.viewport,u=Yu(d),v=function(e,t){var n;if(e instanceof J.StackViewport)return function(e,t){var n=e.getImageIds();return{get numScrollSteps(){return n.length},get currentStepIndex(){return e.getTargetImageIdIndex()},get frameTimeVectorEnabled(){return!0},waitForRenderedCount:0,scroll:function(n){this.waitForRenderedCount<=t&&e.viewportStatus!==ju.RENDERED?this.waitForRenderedCount++:(this.waitForRenderedCount=0,Ps(e,{delta:n,debounceLoading:Wu}))}}}(e,null!==(n=t.waitForRendered)&&void 0!==n?n:30);if(e instanceof J.VolumeViewport){var r=Yu(e);return t.dynamicCineEnabled&&null!=r&&r.isDynamicVolume()?function(e){return{get numScrollSteps(){return e.numTimePoints},get currentStepIndex(){return e.timePointIndex},get frameTimeVectorEnabled(){return!1},scroll:function(t){e.timePointIndex+=t}}}(r):function(e,t){var n=t.volumeId,r={viewPlaneNormal:xs.vec3.create(),scrollInfo:null},o=function(){var t=e.getCamera();if(!r.scrollInfo||!xs.vec3.equals(t.viewPlaneNormal,r.viewPlaneNormal)){var o=J.utilities.getVolumeViewportScrollInfo(e,n);r.viewPlaneNormal=t.viewPlaneNormal,r.scrollInfo=o}return r.scrollInfo};return{get numScrollSteps(){return o().numScrollSteps},get currentStepIndex(){return o().currentStepIndex},get frameTimeVectorEnabled(){var n=e.getCamera(),r=t.direction.slice(6,9).map((function(e){return-e})),o=xs.vec3.dot(r,n.viewPlaneNormal);return xs.glMatrix.equals(o,1)},scroll:function(t){o().currentStepIndex+=t,Ps(e,{delta:t})}}}(e,r)}throw new Error("Unknown viewport type")}(d,t),f=Vu(e),g=t.dynamicCineEnabled&&(null==u?void 0:u.isDynamicVolume());if(g&&Ku(e),f?zu(e,g):(f={intervalId:void 0,framesPerSecond:30,lastFrameTimeStamp:void 0,ignoreFrameTimeVector:!1,usingFrameTimeVector:!1,frameTimeVector:null!==(i=t.frameTimeVector)&&void 0!==i?i:void 0,speed:null!==(l=t.frameTimeVectorSpeedMultiplier)&&void 0!==l?l:1,reverse:null!==(s=t.reverse)&&void 0!==s&&s,loop:null===(c=t.loop)||void 0===c||c},Uu(e,f)),f.dynamicCineEnabled=t.dynamicCineEnabled,(t.framesPerSecond<0||t.framesPerSecond>0)&&(f.framesPerSecond=Number(t.framesPerSecond),f.reverse=f.framesPerSecond<0,f.ignoreFrameTimeVector=!0),!0!==f.ignoreFrameTimeVector&&f.frameTimeVector&&f.frameTimeVector.length===v.numScrollSteps&&v.frameTimeVectorEnabled){var h=function(e,t){var n,r,o,a=0,i=e.length,l=[],s=!1;for(("number"!=typeof t||t<=0)&&(t=1),n=1;n<i;n++)o=Number(e[n])/t|0,l.push(o),1===n?r=o:o!==r&&(s=!0),a+=o;return l.length>0&&(o=s?a/l.length|0:l[0],l.push(o)),{timeouts:l,isTimeVarying:s}}(f.frameTimeVector,f.speed),p=h.timeouts,m=h.isTimeVarying;r=p,o=m}var w=function(){var t=v.numScrollSteps,n=v.currentStepIndex,r=n+(f.reverse?-1:1);if(Fu||!(r<0||r>=t)){r>=t?r=0:r<0&&(r=t-1);var o=r-n;o&&v.scroll(o)}else{zu(e,g);var a={element:e};Bu(e,Nu.CLIP_STOPPED,a)}};g&&Hu.set(u.volumeId,e),r&&r.length>0&&o?(f.usingFrameTimeVector=!0,f.intervalId=window.setTimeout((function e(){f.intervalId=window.setTimeout(e,r[v.currentStepIndex]),w()}),0)):(f.usingFrameTimeVector=!1,f.intervalId=window.setInterval(w,1e3/Math.abs(f.framesPerSecond)));var E={element:e};Bu(e,Nu.CLIP_STARTED,E)}function qu(e){zu(e,!0)}function zu(e,t){var n=(0,J.getEnabledElement)(e);if(n){var r,o,a=n.viewport,i=Vu(a.element);i&&void 0!==(o=(r=i).intervalId)&&(r.intervalId=void 0,r.usingFrameTimeVector?clearTimeout(o):clearInterval(o)),t&&a instanceof J.BaseVolumeViewport&&Ku(e)}}function Ku(e){var t=Yu((0,J.getEnabledElement)(e).viewport);if(null!=t&&t.isDynamicVolume()){var n=Hu.get(t.volumeId);Hu.delete(t.volumeId),n&&n!==e&&qu(n)}}function Yu(e){var t=function(e){return e.getActors().map((function(e){return J.cache.getVolume(e.uid)})).filter((function(e){return!!e}))}(e),n=t.find((function(e){return e.isDynamicVolume()}));return null!=n?n:t[0]}function Xu(e){var t=e.length-1;return function(n){var r=n<=0?n=0:n>=1?(n=1,t-1):Math.floor(n*t),o=e[r],a=e[r+1],i=r>0?e[r-1]:2*o-a,l=r<t-1?e[r+2]:2*a-o;return function(e,t,n,r,o){var a=e*e,i=a*e;return((1-3*e+3*a-i)*t+(4-6*a+3*i)*n+(1+3*e+3*a-3*i)*r+i*o)/6}((n-r/t)*t,i,o,a,l)}}function Zu(e,t){for(var n=new Array(t),r=0;r<t;++r)n[r]=e(r/(t-1));return n}function Ju(e){return e.length}function $u(){return function(e){if(!(o=e.length))return[];for(var t=-1,n=function(e,t){let n;if(void 0===t)for(const t of e)null!=t&&(n>t||void 0===n&&t>=t)&&(n=t);else{let r=-1;for(let o of e)null!=(o=t(o,++r,e))&&(n>o||void 0===n&&o>=o)&&(n=o)}return n}(e,Ju),r=new Array(n);++t<n;)for(var o,a=-1,i=r[t]=new Array(o);++a<o;)i[a]=e[a][t];return r}(arguments)}function Qu(e,t,n,r){var o,a,i=n-t+1,l=null!==(o=Math.floor(r/100*i))&&void 0!==o?o:1,s=null!==(a=Math.floor(i/l))&&void 0!==a?a:1;if(isNaN(i)||!i||!s)return e;if(i/s<2)return e;var c=Math.max(0,t),d=Math.min(e.length-1,n),u=e.slice(0,c),v=e.slice(d+1,e.length),f=function(e,t){if(!t||0===t.length||t.length===e.length)return e;var n,r=t[t.length-1]-t[0]+1,o=Xu(t.map((function(t){return e[t][0]}))),a=Xu(t.map((function(t){return e[t][1]})));if(3===(null===(n=e[0])||void 0===n?void 0:n.length)){var i=Xu(t.map((function(t){return e[t][2]})));return $u(Zu(o,r),Zu(a,r),Zu(i,r))}return $u(Zu(o,r),Zu(a,r))}(e,function(e,t){for(var n=[],r=dt(t,2),o=r[0],a=r[1],i=a-o+1,l=Math.floor(i/e),s=0,c=Math.round((i-1)/(l-1)*s)+o;c<=a;)n.push(c),s++,c=Math.round((i-1)/(l-1)*s)+o;return n}(s,[c,d]));return[].concat(Lr(u),Lr(f),Lr(v))}function ev(e){var t,n;return!0===(null==e||null===(t=e.interpolation)||void 0===t?void 0:t.interpolateOnAdd)||!0===(null==e||null===(n=e.interpolation)||void 0===n?void 0:n.interpolateOnEdit)}function tv(e,t,n){return(e+t+n)%t}function nv(e,t,n,r){var o=dt(e,3),a=o[1],i=o[2],l=dt(t,3),s=l[1],c=l[2],d=i.length,u=c.length,v=e[0],f=t[0];if(!(i[v]&&c[f]&&i[a]&&c[s]))return[void 0,void 0];for(;v!==a&&f!==s;){if(n(c[f],i[v]))return[v,f];v=tv(v,d,r),f=tv(f,u,r)}return[void 0,void 0]}function rv(e,t,n){var r=e.interpolation,o=t;if(r){var a=r.knotsRatioPercentageOnAdd,i=r.knotsRatioPercentageOnEdit,l=r.interpolateOnAdd,s=void 0!==l&&l,c=r.interpolateOnEdit,d=n?i:a;if(n?void 0!==c&&c:s){var u=dt(n?function(e,t){var n=function(e,t){for(var n=0;n<e.length;n++)for(var r=0;r<t.length;r++)if(0===Ou(e[n],t[r]))return[n,r]}(e,t)||[],r=dt(n,2),o=r[0],a=r[1],i=function(e,t){return!1===function(e,t){return Ou(e,t)<.001}(e,t)},l=dt(nv([tv(o,e.length,1),o,e],[tv(a,t.length,1),a,t],i,1),2),s=l[0],c=l[1];return[s,dt(nv([tv(s,e.length,-1),s,e],[tv(c,t.length,-1),c,t],i,-1),1)[0]]}(t,n):[0,t.length-1],2),v=u[0],f=u[1];return t[v]&&t[f]?Qu(t,v,f,d):t}}return o}function ov(e,t){var n=e[0],r=e[e.length-1],o=xs.vec2.create();xs.vec2.set(o,r[0]-n[0],r[1]-n[1]),xs.vec2.normalize(o,o);var a=xs.vec2.create(),i=xs.vec2.create();xs.vec2.set(a,-o[1],o[0]),xs.vec2.set(i,o[1],-o[0]);for(var l=[(n[0]+r[0])/2,(n[1]+r[1])/2],s={dist:0,index:null},c=0;c<e.length;c++){var d=e[c],u=xs.vec2.dist(d,l);u>s.dist&&(s.dist=u,s.index=c)}return[e[s.index],l].map(t.canvasToWorld)}var av=Cu,iv=bu,lv=gu,sv=Iu;function cv(e,t,n){this.isDrawing=!0;var r=e.detail,o=r.currentPoints,a=r.element,i=o.canvas,l=(0,J.getEnabledElement)(a).viewport,s=sv(l,this.configuration.subPixelResolution),c=s.spacing,d=s.xDir,u=s.yDir;this.drawData={canvasPoints:[i],polylineIndex:0},this.commonData={annotation:t,viewportIdsToRender:n,spacing:c,xDir:d,yDir:u,movingTextBox:!1},Ke.isInteractingWithTool=!0,a.addEventListener(Q.MOUSE_UP,this.mouseUpDrawCallback),a.addEventListener(Q.MOUSE_DRAG,this.mouseDragDrawCallback),a.addEventListener(Q.MOUSE_CLICK,this.mouseUpDrawCallback),a.addEventListener(Q.TOUCH_END,this.mouseUpDrawCallback),a.addEventListener(Q.TOUCH_DRAG,this.mouseDragDrawCallback),a.addEventListener(Q.TOUCH_TAP,this.mouseUpDrawCallback),gs(a)}function dv(e){Ke.isInteractingWithTool=!1,e.removeEventListener(Q.MOUSE_UP,this.mouseUpDrawCallback),e.removeEventListener(Q.MOUSE_DRAG,this.mouseDragDrawCallback),e.removeEventListener(Q.MOUSE_CLICK,this.mouseUpDrawCallback),e.removeEventListener(Q.TOUCH_END,this.mouseUpDrawCallback),e.removeEventListener(Q.TOUCH_DRAG,this.mouseDragDrawCallback),e.removeEventListener(Q.TOUCH_TAP,this.mouseUpDrawCallback),fs(e)}function uv(e){var t=e.detail,n=t.currentPoints,r=t.element,o=n.world,a=n.canvas,i=(0,J.getEnabledElement)(r),l=i.renderingEngine,s=i.viewport,c=this.commonData,d=c.annotation,u=c.viewportIdsToRender,v=c.xDir,f=c.yDir,g=c.spacing,h=c.movingTextBox,p=this.drawData,m=p.polylineIndex,w=p.canvasPoints,E=w[w.length-1],y=s.canvasToWorld(E),I=xs.vec3.create();xs.vec3.subtract(I,o,y);var b=Math.abs(xs.vec3.dot(I,v)),C=Math.abs(xs.vec3.dot(I,f));if(!(b<=g[0]&&C<=g[1])){if(h){this.isDrawing=!1;var _=t.deltaPoints.world,T=d.data.handles.textBox,O=T.worldPosition;O[0]+=_[0],O[1]+=_[1],O[2]+=_[2],T.hasMoved=!0}else{var D=this.findCrossingIndexDuringCreate(e);if(void 0!==D)this.applyCreateOnCross(e,D);else{var S=av(r,w,a,this.commonData);this.drawData.polylineIndex=m+S}}ca(l,u)}}function vv(e){var t=this.configuration.allowOpenContours,n=this.drawData.canvasPoints,r=n[0],o=n[n.length-1],a=e.detail.element;t&&!iv(r,o,this.configuration.closeContourProximity)?this.completeDrawOpenContour(a):this.completeDrawClosedContour(a)}function fv(e){this.removeCrossedLinesOnCompleteDraw();var t=this.drawData.canvasPoints;if(this.haltDrawing(e,t))return!1;var n=this.commonData,r=n.annotation,o=n.viewportIdsToRender,a=(0,J.getEnabledElement)(e),i=a.viewport,l=a.renderingEngine;av(e,t,t[0],this.commonData),t.pop();var s=(ev(this.configuration)?rv(this.configuration,t):t).map((function(e){return i.canvasToWorld(e)}));return r.data.polyline=s,r.data.isOpenContour=!1,r.data.handles.textBox.hasMoved||this.triggerAnnotationCompleted(r),this.isDrawing=!1,this.drawData=void 0,this.commonData=void 0,ca(l,o),this.deactivateDraw(e),!0}function gv(){var e=this.drawData.canvasPoints,t=e.length,n=[e[0],e[t-1]],r=e.slice(0,-1).slice(1),o=lv(r,n[0],n[1],!1);if(o){var a=o[1];this.drawData.canvasPoints=e.splice(0,a)}}function hv(e){var t=this.drawData.canvasPoints;if(this.haltDrawing(e,t))return!1;var n=this.commonData,r=n.annotation,o=n.viewportIdsToRender,a=(0,J.getEnabledElement)(e),i=a.viewport,l=a.renderingEngine,s=(ev(this.configuration)?rv(this.configuration,t):t).map((function(e){return i.canvasToWorld(e)}));r.data.polyline=s,r.data.isOpenContour=!0;var c=r.data.handles.textBox;return r.data.handles.points=[s[0],s[s.length-1]],r.data.isOpenUShapeContour&&(r.data.openUShapeContourVectorToPeak=ov(t,i)),c.hasMoved||this.triggerAnnotationCompleted(r),this.isDrawing=!1,this.drawData=void 0,this.commonData=void 0,ca(l,o),this.deactivateDraw(e),!0}function pv(e){var t=e.detail,n=t.currentPoints,r=t.lastPoints,o=n.canvas,a=r.canvas,i=this.drawData.canvasPoints.slice(0,-1),l=lv(i,o,a,!1);if(void 0!==l)return l[0]}function mv(e,t){var n=e.detail.element,r=this.drawData.canvasPoints,o=this.commonData,a=o.annotation,i=o.viewportIdsToRender;av(n,r,r[t],this.commonData),r.pop();for(var l=0;l<t;l++)r.shift();this.completeDrawClosedContour(n)&&this.activateClosedContourEdit(e,a,i)}function wv(e){var t=this.configuration.allowOpenContours,n=this.drawData.canvasPoints,r=n[0],o=n[n.length-1];t&&!iv(r,o,this.configuration.closeContourProximity)?this.completeDrawOpenContour(e):this.completeDrawClosedContour(e)}function Ev(e,t){if(function(e,t){var n=Math.max(3*t,3);return e.length<n}(t,this.configuration.subPixelResolution)){var n=this.commonData,r=n.annotation,o=n.viewportIdsToRender,a=(0,J.getEnabledElement)(e).renderingEngine;return at(r.annotationUID),this.isDrawing=!1,this.drawData=void 0,this.commonData=void 0,ca(a,o),this.deactivateDraw(e),!0}return!1}var yv=function(e){e.activateDraw=cv.bind(e),e.deactivateDraw=dv.bind(e),e.applyCreateOnCross=mv.bind(e),e.findCrossingIndexDuringCreate=pv.bind(e),e.completeDrawOpenContour=hv.bind(e),e.removeCrossedLinesOnCompleteDraw=gv.bind(e),e.mouseDragDrawCallback=uv.bind(e),e.mouseUpDrawCallback=vv.bind(e),e.completeDrawClosedContour=fv.bind(e),e.cancelDrawing=wv.bind(e),e.haltDrawing=Ev.bind(e)},Iv=Cu,bv=gu;function Cv(e,t){var n=e.detail,r=n.element,o=n.currentPoints,a=n.lastPoints,i=o.canvas,l=a.canvas,s=this.editData,c=s.editCanvasPoints,d=s.prevCanvasPoints,u=bv(d,i,l,t);if(u)this.editData.startCrossingIndex=u[0],this.removePointsUpUntilFirstCrossing(t);else if(d.length>=2)if(c.length>this.configuration.checkCanvasEditFallbackProximity){for(var v=c[0],f=[],g=0;g<d.length;g++){var h=d[g],p=xs.vec2.distance(h,v);f.push({distance:p,index:g})}f.sort((function(e,t){return e.distance-t.distance}));var m=[f[0],f[1]],w=Math.min(m[0].index,m[1].index);this.editData.startCrossingIndex=w}else{var E=xs.vec2.create();xs.vec2.subtract(E,c[1],c[0]),xs.vec2.normalize(E,E);var y=[c[0][0]-6*E[0],c[0][1]-6*E[1]],I=bv(d,y,c[0],t);if(I){var b=[y];Iv(r,b,c[0],this.commonData),c.unshift.apply(c,b),this.removePointsUpUntilFirstCrossing(t),this.editData.editIndex=c.length-1,this.editData.startCrossingIndex=I[0]}}}function _v(e){for(var t=this.editData,n=t.editCanvasPoints,r=t.prevCanvasPoints,o=0,a=0;a<n.length-1;a++){var i=[n[a],n[a+1]];if(o++,bv(r,i[0],i[1],e))break}n.splice(0,o),this.editData.editIndex=n.length-1}function Tv(e,t){var n=e.detail,r=n.currentPoints,o=n.lastPoints,a=r.canvas,i=o.canvas,l=this.editData.prevCanvasPoints;return!!bv(l,a,i,t)}function Ov(e){for(var t=this.editData,n=t.prevCanvasPoints,r=t.editCanvasPoints,o=r.length-1;o>0;o--){var a=[r[o],r[o-1]],i=!!bv(n,a[0],a[1],e);if(r.pop(),i)break}}function Dv(){var e=this.editData,t=e.editCanvasPoints,n=e.prevCanvasPoints;if(void 0!==e.startCrossingIndex){for(var r=t[t.length-1],o=[],a=0;a<n.length;a++){var i=n[a],l=xs.vec2.distance(i,r);o.push({distance:l,index:a})}o.sort((function(e,t){return e.distance-t.distance}));for(var s=t.slice(0,-1),c=0;c<o.length;c++){var d=o[c].index,u=n[d],v=t[t.length-1];if(!bv(s,u,v,!1))return d}return-1}}function Sv(e){var t=e.detail,n=t.currentPoints,r=t.lastPoints,o=n.canvas,a=r.canvas,i=this.editData.editCanvasPoints,l=i.slice(0,-2),s=bv(l,o,a,!1);if(s)for(var c=s[0],d=i.length-c,u=0;u<d;u++)i.pop()}var kv=function(e){e.checkForFirstCrossing=Cv.bind(e),e.removePointsUpUntilFirstCrossing=_v.bind(e),e.checkForSecondCrossing=Tv.bind(e),e.findSnapIndex=Dv.bind(e),e.removePointsAfterSecondCrossing=Ov.bind(e),e.checkAndRemoveCrossesOnEditLine=Sv.bind(e)},Mv=Iu,xv=Cu,Rv=Tu;function Pv(e,t,n){this.isEditingClosed=!0;var r=e.detail,o=r.currentPoints,a=r.element,i=o.canvas,l=(0,J.getEnabledElement)(a).viewport,s=t.data.polyline.map(l.worldToCanvas),c=Mv(l,this.configuration.subPixelResolution),d=c.spacing,u=c.xDir,v=c.yDir;this.editData={prevCanvasPoints:s,editCanvasPoints:[i],startCrossingIndex:void 0,editIndex:0},this.commonData={annotation:t,viewportIdsToRender:n,spacing:d,xDir:u,yDir:v,movingTextBox:!1},Ke.isInteractingWithTool=!0,a.addEventListener(Q.MOUSE_UP,this.mouseUpClosedContourEditCallback),a.addEventListener(Q.MOUSE_DRAG,this.mouseDragClosedContourEditCallback),a.addEventListener(Q.MOUSE_CLICK,this.mouseUpClosedContourEditCallback),a.addEventListener(Q.TOUCH_END,this.mouseUpClosedContourEditCallback),a.addEventListener(Q.TOUCH_DRAG,this.mouseDragClosedContourEditCallback),a.addEventListener(Q.TOUCH_TAP,this.mouseUpClosedContourEditCallback),gs(a)}function Av(e){Ke.isInteractingWithTool=!1,e.removeEventListener(Q.MOUSE_UP,this.mouseUpClosedContourEditCallback),e.removeEventListener(Q.MOUSE_DRAG,this.mouseDragClosedContourEditCallback),e.removeEventListener(Q.MOUSE_CLICK,this.mouseUpClosedContourEditCallback),e.removeEventListener(Q.TOUCH_END,this.mouseUpClosedContourEditCallback),e.removeEventListener(Q.TOUCH_DRAG,this.mouseDragClosedContourEditCallback),e.removeEventListener(Q.TOUCH_TAP,this.mouseUpClosedContourEditCallback),fs(e)}function Nv(e){var t=e.detail,n=t.currentPoints,r=t.element,o=n.world,a=n.canvas,i=(0,J.getEnabledElement)(r),l=i.renderingEngine,s=i.viewport,c=this.commonData,d=c.viewportIdsToRender,u=c.xDir,v=c.yDir,f=c.spacing,g=this.editData,h=g.editIndex,p=g.editCanvasPoints,m=g.startCrossingIndex,w=p[p.length-1],E=s.canvasToWorld(w),y=xs.vec3.create();xs.vec3.subtract(y,o,E);var I=Math.abs(xs.vec3.dot(y,u)),b=Math.abs(xs.vec3.dot(y,v));if(!(I<=f[0]&&b<=f[1])){void 0!==m&&this.checkAndRemoveCrossesOnEditLine(e);var C=h+xv(r,p,a,this.commonData);this.editData.editIndex=C,void 0===m&&p.length>1&&this.checkForFirstCrossing(e,!0),this.editData.snapIndex=this.findSnapIndex(),-1!==this.editData.snapIndex?(this.editData.fusedCanvasPoints=this.fuseEditPointsWithClosedContour(e),void 0!==m&&this.checkForSecondCrossing(e,!0)&&(this.removePointsAfterSecondCrossing(!0),this.finishEditAndStartNewEdit(e)),ca(l,d)):this.finishEditAndStartNewEdit(e)}}function Lv(e){var t=e.detail.element,n=(0,J.getEnabledElement)(t),r=n.viewport,o=n.renderingEngine,a=this.commonData,i=a.annotation,l=a.viewportIdsToRender,s=this.editData,c=s.fusedCanvasPoints,d=s.editCanvasPoints,u=c.map((function(e){return r.canvasToWorld(e)}));i.data.polyline=u,i.data.isOpenContour=!1,this.triggerAnnotationModified(i,n);var v=d.pop();this.editData={prevCanvasPoints:c,editCanvasPoints:[v],startCrossingIndex:void 0,editIndex:0,snapIndex:void 0},ca(o,l)}function Uv(e){var t=this.editData,n=t.prevCanvasPoints,r=t.editCanvasPoints,o=t.startCrossingIndex,a=t.snapIndex;if(void 0!==o&&void 0!==a){var i,l,s=e.detail.element,c=Lr(r);xv(s,c,n[a],this.commonData),c.length>r.length&&c.pop(),o>a?(i=a,l=o):(i=o,l=a);for(var d=xs.vec2.distance(n[i],c[0]),u=xs.vec2.distance(n[i],c[c.length-1]),v=xs.vec2.distance(n[l],c[0]),f=xs.vec2.distance(n[l],c[c.length-1]),g=[],h=0;h<i;h++){var p=n[h];g.push([p[0],p[1]])}var m=d+f,w=u+v;if(m<w)for(var E=0;E<c.length;E++){var y=c[E];g.push([y[0],y[1]])}else for(var I=c.length-1;I>=0;I--){var b=c[I];g.push([b[0],b[1]])}for(var C=l;C<n.length;C++){var _=n[C];g.push([_[0],_[1]])}for(var T=[],O=i;O<l;O++){var D=n[O];T.push([D[0],D[1]])}if((m=v+u)<(w=f+d))for(var S=0;S<c.length;S++){var k=c[S];T.push([k[0],k[1]])}else for(var M=c.length-1;M>=0;M--){var x=c[M];T.push([x[0],x[1]])}return Rv(g)>Rv(T)?g:T}}function Vv(e){var t=e.detail.element;this.completeClosedContourEdit(t)}function jv(e){var t=(0,J.getEnabledElement)(e),n=t.viewport,r=t.renderingEngine,o=this.commonData,a=o.annotation,i=o.viewportIdsToRender,l=this.editData,s=l.fusedCanvasPoints,c=l.prevCanvasPoints;if(s){var d=(ev(this.configuration)?rv(this.configuration,s,c):s).map((function(e){return n.canvasToWorld(e)}));a.data.polyline=d,a.data.isOpenContour=!1,a.invalidated=!0,this.triggerAnnotationModified(a,t)}this.isEditingClosed=!1,this.editData=void 0,this.commonData=void 0,ca(r,i),this.deactivateClosedContourEdit(e)}function Bv(e){this.completeClosedContourEdit(e)}var Wv=function(e){e.activateClosedContourEdit=Pv.bind(e),e.deactivateClosedContourEdit=Av.bind(e),e.mouseDragClosedContourEditCallback=Nv.bind(e),e.mouseUpClosedContourEditCallback=Vv.bind(e),e.finishEditAndStartNewEdit=Lv.bind(e),e.fuseEditPointsWithClosedContour=Uv.bind(e),e.cancelClosedContourEdit=Bv.bind(e),e.completeClosedContourEdit=jv.bind(e)},Fv=Cu,Hv=Iu;function Gv(e,t,n){this.isEditingOpen=!0;var r=e.detail,o=r.currentPoints,a=r.element,i=o.canvas,l=(0,J.getEnabledElement)(a).viewport,s=t.data.polyline.map(l.worldToCanvas),c=Hv(l,this.configuration.subPixelResolution),d=c.spacing,u=c.xDir,v=c.yDir;this.editData={prevCanvasPoints:s,editCanvasPoints:[i],startCrossingIndex:void 0,editIndex:0},this.commonData={annotation:t,viewportIdsToRender:n,spacing:d,xDir:u,yDir:v,movingTextBox:!1},Ke.isInteractingWithTool=!0,a.addEventListener(Q.MOUSE_UP,this.mouseUpOpenContourEditCallback),a.addEventListener(Q.MOUSE_DRAG,this.mouseDragOpenContourEditCallback),a.addEventListener(Q.MOUSE_CLICK,this.mouseUpOpenContourEditCallback),a.addEventListener(Q.TOUCH_END,this.mouseUpOpenContourEditCallback),a.addEventListener(Q.TOUCH_DRAG,this.mouseDragOpenContourEditCallback),a.addEventListener(Q.TOUCH_TAP,this.mouseUpOpenContourEditCallback),gs(a)}function qv(e){Ke.isInteractingWithTool=!1,e.removeEventListener(Q.MOUSE_UP,this.mouseUpOpenContourEditCallback),e.removeEventListener(Q.MOUSE_DRAG,this.mouseDragOpenContourEditCallback),e.removeEventListener(Q.MOUSE_CLICK,this.mouseUpOpenContourEditCallback),e.removeEventListener(Q.TOUCH_END,this.mouseUpOpenContourEditCallback),e.removeEventListener(Q.TOUCH_DRAG,this.mouseDragOpenContourEditCallback),e.removeEventListener(Q.TOUCH_TAP,this.mouseUpOpenContourEditCallback),fs(e)}function zv(e){var t=e.detail,n=t.currentPoints,r=t.element,o=n.world,a=n.canvas,i=(0,J.getEnabledElement)(r),l=i.renderingEngine,s=i.viewport,c=this.commonData,d=c.viewportIdsToRender,u=c.xDir,v=c.yDir,f=c.spacing,g=this.editData,h=g.editIndex,p=g.editCanvasPoints,m=g.startCrossingIndex,w=p[p.length-1],E=s.canvasToWorld(w),y=xs.vec3.create();xs.vec3.subtract(y,o,E);var I=Math.abs(xs.vec3.dot(y,u)),b=Math.abs(xs.vec3.dot(y,v));if(!(I<=f[0]&&b<=f[1])){void 0!==m&&this.checkAndRemoveCrossesOnEditLine(e);var C=h+Fv(r,p,a,this.commonData);this.editData.editIndex=C,void 0===m&&p.length>1&&this.checkForFirstCrossing(e,!1),this.editData.snapIndex=this.findSnapIndex(),this.editData.fusedCanvasPoints=this.fuseEditPointsWithOpenContour(e),void 0!==m&&this.checkForSecondCrossing(e,!1)?(this.removePointsAfterSecondCrossing(!1),this.finishEditOpenOnSecondCrossing(e)):this.checkIfShouldOverwriteAnEnd(e)&&this.openContourEditOverwriteEnd(e),ca(l,d)}}function Kv(e){var t=e.detail.element,n=(0,J.getEnabledElement)(t),r=n.viewport,o=this.commonData,a=o.annotation,i=o.viewportIdsToRender,l=this.fuseEditPointsForOpenContourEndEdit().map((function(e){return r.canvasToWorld(e)}));a.data.polyline=l,a.data.isOpenContour=!0,a.data.handles.points=[l[0],l[l.length-1]],a.data.handles.activeHandleIndex=1,this.triggerAnnotationModified(a,n),this.isEditingOpen=!1,this.editData=void 0,this.commonData=void 0,this.deactivateOpenContourEdit(t),this.activateOpenContourEndEdit(e,a,i,null)}function Yv(e){var t=e.detail,n=t.currentPoints,r=t.lastPoints,o=n.canvas,a=r.canvas,i=this.editData,l=i.snapIndex,s=i.prevCanvasPoints;if(void 0===i.startCrossingIndex||void 0===l)return!1;if(-1===l)return!0;if(0!==l&&l!==s.length-1)return!1;var c=o,d=a,u=s[l],v=xs.vec2.create(),f=xs.vec2.create();xs.vec2.set(v,c[0]-d[0],c[1]-d[1]),xs.vec2.set(f,c[0]-u[0],c[1]-u[1]);var g=xs.vec2.dot(v,f),h=Math.sqrt(v[0]*v[0]+v[1]*v[1]),p=Math.sqrt(f[0]*f[0]+f[1]*f[1]);return Math.acos(g/(h*p))<Math.PI/2}function Xv(){var e=this.editData,t=e.snapIndex,n=e.prevCanvasPoints,r=e.editCanvasPoints,o=e.startCrossingIndex,a=[];if(0===t)for(var i=n.length-1;i>=o;i--){var l=n[i];a.push([l[0],l[1]])}else for(var s=0;s<o;s++){var c=n[s];a.push([c[0],c[1]])}if(xs.vec2.distance(n[o],r[0])<xs.vec2.distance(n[o],r[r.length-1]))for(var d=0;d<r.length;d++){var u=r[d];a.push([u[0],u[1]])}else for(var v=r.length-1;v>=0;v--){var f=r[v];a.push([f[0],f[1]])}return a}function Zv(e){var t=this.editData,n=t.prevCanvasPoints,r=t.editCanvasPoints,o=t.startCrossingIndex,a=t.snapIndex;if(void 0!==o&&void 0!==a){var i,l,s=e.detail.element,c=Lr(r);Fv(s,c,n[a],this.commonData),c.length>r.length&&c.pop(),o>a?(i=a,l=o):(i=o,l=a);for(var d=xs.vec2.distance(n[i],c[0]),u=xs.vec2.distance(n[i],c[c.length-1]),v=xs.vec2.distance(n[l],c[0]),f=xs.vec2.distance(n[l],c[c.length-1]),g=[],h=0;h<i;h++){var p=n[h];g.push([p[0],p[1]])}if(d+f<u+v)for(var m=0;m<c.length;m++){var w=c[m];g.push([w[0],w[1]])}else for(var E=c.length-1;E>=0;E--){var y=c[E];g.push([y[0],y[1]])}for(var I=l;I<n.length;I++){var b=n[I];g.push([b[0],b[1]])}return g}}function Jv(e){var t=e.detail.element,n=(0,J.getEnabledElement)(t),r=n.viewport,o=n.renderingEngine,a=this.commonData,i=a.annotation,l=a.viewportIdsToRender,s=this.editData,c=s.fusedCanvasPoints,d=s.editCanvasPoints,u=c.map((function(e){return r.canvasToWorld(e)}));i.data.polyline=u,i.data.isOpenContour=!0,i.data.handles.points=[u[0],u[u.length-1]],this.triggerAnnotationModified(i,n);var v=d.pop();this.editData={prevCanvasPoints:c,editCanvasPoints:[v],startCrossingIndex:void 0,editIndex:0},ca(o,l)}function $v(e){var t=e.detail.element;this.completeOpenContourEdit(t)}function Qv(e){var t=(0,J.getEnabledElement)(e),n=t.viewport,r=t.renderingEngine,o=this.commonData,a=o.annotation,i=o.viewportIdsToRender,l=this.editData,s=l.fusedCanvasPoints,c=l.prevCanvasPoints;if(s){var d=(ev(this.configuration)?rv(this.configuration,s,c):s).map((function(e){return n.canvasToWorld(e)}));a.data.polyline=d,a.data.isOpenContour=!0,a.data.handles.points=[d[0],d[d.length-1]],a.data.isOpenUShapeContour&&(a.data.openUShapeContourVectorToPeak=ov(s,n)),a.invalidated=!0,this.triggerAnnotationModified(a,t)}this.isEditingOpen=!1,this.editData=void 0,this.commonData=void 0,ca(r,i),this.deactivateOpenContourEdit(e)}function ef(e){this.completeOpenContourEdit(e)}var tf=function(e){e.activateOpenContourEdit=Gv.bind(e),e.deactivateOpenContourEdit=qv.bind(e),e.mouseDragOpenContourEditCallback=zv.bind(e),e.mouseUpOpenContourEditCallback=$v.bind(e),e.fuseEditPointsWithOpenContour=Zv.bind(e),e.finishEditOpenOnSecondCrossing=Jv.bind(e),e.checkIfShouldOverwriteAnEnd=Yv.bind(e),e.fuseEditPointsForOpenContourEndEdit=Xv.bind(e),e.openContourEditOverwriteEnd=Kv.bind(e),e.cancelOpenContourEdit=ef.bind(e),e.completeOpenContourEdit=Qv.bind(e)},nf=Iu;function rf(e,t,n,r){this.isDrawing=!0;var o=e.detail.element,a=(0,J.getEnabledElement)(o).viewport,i=nf(a,this.configuration.subPixelResolution),l=i.spacing,s=i.xDir,c=i.yDir,d=t.data.polyline.map(a.worldToCanvas);0===t.data.handles.activeHandleIndex&&d.reverse();var u=!1;r.worldPosition&&(u=!0),this.drawData={canvasPoints:d,polylineIndex:d.length-1},this.commonData={annotation:t,viewportIdsToRender:n,spacing:l,xDir:s,yDir:c,movingTextBox:u},Ke.isInteractingWithTool=!0,o.addEventListener(Q.MOUSE_UP,this.mouseUpDrawCallback),o.addEventListener(Q.MOUSE_DRAG,this.mouseDragDrawCallback),o.addEventListener(Q.MOUSE_CLICK,this.mouseUpDrawCallback),o.addEventListener(Q.TOUCH_END,this.mouseUpDrawCallback),o.addEventListener(Q.TOUCH_DRAG,this.mouseDragDrawCallback),o.addEventListener(Q.TOUCH_TAP,this.mouseUpDrawCallback),gs(o)}var of=function(e){e.activateOpenContourEndEdit=rf.bind(e)},af=bu;function lf(e,t){var n={toolGroupId:this.toolGroupId,toolName:this.getToolName(),viewportId:e.viewport.id,annotationUID:t.annotationUID},r=this.getStyle("lineWidth",n,t),o=this.getStyle("lineDash",n,t),a=this.getStyle("color",n,t);return{color:void 0===a?void 0:a,width:void 0===r?void 0:r,lineDash:void 0===o?void 0:o,connectLastToFirst:!t.data.isOpenContour}}function sf(e,t,n){var r;null!=e&&null!==(r=e.viewport)&&void 0!==r&&r.getImageData()&&(n.data.isOpenContour?n.data.isOpenUShapeContour?(function(e,t){t.data.openUShapeContourVectorToPeak||(t.data.openUShapeContourVectorToPeak=function(e,t){var n=e.viewport;return ov(t.data.polyline.map(n.worldToCanvas),n)}(e,t))}(e,n),this.renderOpenUShapedContour(e,t,n)):this.renderOpenContour(e,t,n):this.renderClosedContour(e,t,n))}function cf(e,t,n){var r=e.viewport,o=this._getRenderingOptions(e,n),a=n.data.polyline.map((function(e){return r.worldToCanvas(e)}));$s(t,n.annotationUID,"1",a,o)}function df(e,t,n){var r,o=e.viewport,a=this._getRenderingOptions(e,n),i=n.data.polyline.map((function(e){return o.worldToCanvas(e)}));$s(t,n.annotationUID,"1",i,a);var l=n.data.handles.activeHandleIndex;if(!0===(null===(r=this.configuration.alwaysRenderOpenContourHandles)||void 0===r?void 0:r.enabled)){var s=this.configuration.alwaysRenderOpenContourHandles.radius,c=[i[0],i[i.length-1]];0===l?c.shift():1===l&&c.pop(),Xs(t,n.annotationUID,"0",c,{color:a.color,handleRadius:s})}if(null!==l){var d=i[0===l?0:i.length-1];Xs(t,n.annotationUID,"1",[d],{color:a.color})}}function uf(e,t,n){var r=e.viewport,o=n.data,a=o.polyline,i=o.openUShapeContourVectorToPeak;if(this.renderOpenContour(e,t,n),i){var l=r.worldToCanvas(a[0]),s=r.worldToCanvas(a[a.length-1]),c=[r.worldToCanvas(i[0]),r.worldToCanvas(i[1])],d=this._getRenderingOptions(e,n);$s(t,n.annotationUID,"first-to-last",[l,s],{color:d.color,width:d.width,connectLastToFirst:!1,lineDash:"2,2"}),$s(t,n.annotationUID,"midpoint-to-open-contour",[c[0],c[1]],{color:d.color,width:d.width,connectLastToFirst:!1,lineDash:"2,2"})}}function vf(e,t,n){var r=this._getRenderingOptions(e,n),o=this.configuration.allowOpenContours,a=this.drawData.canvasPoints;if(r.connectLastToFirst=!1,$s(t,n.annotationUID,"1",a,r),o){var i=a[0],l=a[a.length-1];af(i,l,this.configuration.closeContourProximity)?$s(t,n.annotationUID,"2",[l,i],r):Xs(t,n.annotationUID,"0",[i],{color:r.color,handleRadius:2})}}function ff(e,t,n){var r=this.editData.fusedCanvasPoints;if(void 0!==r){var o=this._getRenderingOptions(e,n);$s(t,n.annotationUID,"preview-1",r,o)}else this.renderClosedContour(e,t,n)}function gf(e,t,n){var r=this.editData.fusedCanvasPoints;if(void 0!==r){var o=this._getRenderingOptions(e,n);$s(t,n.annotationUID,"preview-1",r,o)}else this.renderOpenContour(e,t,n)}var hf=function(e){e.renderContour=sf.bind(e),e.renderClosedContour=cf.bind(e),e.renderOpenContour=df.bind(e),e.renderOpenUShapedContour=uf.bind(e),e.renderContourBeingDrawn=vf.bind(e),e.renderClosedContourBeingEdited=ff.bind(e),e.renderOpenContourBeingEdited=gf.bind(e),e._getRenderingOptions=lf.bind(e)};function pf(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}var mf=_u,wf=1-J.CONSTANTS.EPSILON,Ef=function(e){pa(o,e);var t,n,r=(t=o,n=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,r=wa(t);if(n){var o=wa(this).constructor;e=Reflect.construct(r,arguments,o)}else e=r.apply(this,arguments);return ma(this,e)});function o(){var e,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{supportedInteractionTypes:["Mouse","Touch"],configuration:{shadow:!0,preventHandleOutsideImage:!1,alwaysRenderOpenContourHandles:{enabled:!1,radius:2},allowOpenContours:!0,closeContourProximity:10,checkCanvasEditFallbackProximity:6,subPixelResolution:4,interpolation:{interpolateOnAdd:!1,interpolateOnEdit:!1,knotsRatioPercentageOnAdd:40,knotsRatioPercentageOnEdit:40},calculateStats:!1,getTextLines:yf,statsCalculator:Rd}};return oe(this,o),ae(ga(e=r.call(this,t,n)),"touchDragCallback",void 0),ae(ga(e),"mouseDragCallback",void 0),ae(ga(e),"_throttledCalculateCachedStats",void 0),ae(ga(e),"commonData",void 0),ae(ga(e),"isDrawing",!1),ae(ga(e),"isEditingClosed",!1),ae(ga(e),"isEditingOpen",!1),ae(ga(e),"activateDraw",void 0),ae(ga(e),"activateClosedContourEdit",void 0),ae(ga(e),"activateOpenContourEdit",void 0),ae(ga(e),"activateOpenContourEndEdit",void 0),ae(ga(e),"cancelDrawing",void 0),ae(ga(e),"cancelClosedContourEdit",void 0),ae(ga(e),"cancelOpenContourEdit",void 0),ae(ga(e),"renderContour",void 0),ae(ga(e),"renderContourBeingDrawn",void 0),ae(ga(e),"renderClosedContourBeingEdited",void 0),ae(ga(e),"renderOpenContourBeingEdited",void 0),ae(ga(e),"addNewAnnotation",(function(t){var n=t.detail,r=n.currentPoints,o=n.element,a=r.world,i=(0,J.getEnabledElement)(o),l=i.viewport,s=i.renderingEngine,c=l.getCamera(),d=c.viewPlaneNormal,u=c.viewUp,v=e.getReferencedImageId(l,a,d,u),f=ud(o,e.getToolName()),g=l.getFrameOfReferenceUID(),h={highlighted:!0,invalidated:!0,metadata:{viewPlaneNormal:Lr(d),viewUp:Lr(u),FrameOfReferenceUID:g,referencedImageId:v,toolName:e.getToolName()},data:{handles:{points:[],activeHandleIndex:null,textBox:{hasMoved:!1,worldPosition:[0,0,0],worldBoundingBox:{topLeft:[0,0,0],topRight:[0,0,0],bottomLeft:[0,0,0],bottomRight:[0,0,0]}}},polyline:[Lr(a)],label:"",cachedStats:{}}};return rt(h,o),e.activateDraw(t,h,f),t.preventDefault(),ca(s,f),h})),ae(ga(e),"handleSelectedCallback",(function(t,n,r){var o=ud(t.detail.element,e.getToolName());e.activateOpenContourEndEdit(t,n,o,r)})),ae(ga(e),"toolSelectedCallback",(function(t,n){var r=ud(t.detail.element,e.getToolName());n.data.isOpenContour?e.activateOpenContourEdit(t,n,r):e.activateClosedContourEdit(t,n,r)})),ae(ga(e),"isPointNearTool",(function(e,t,n,r){for(var o=(0,J.getEnabledElement)(e).viewport,a=t.data.polyline,i=o.worldToCanvas(a[0]),l=1;l<a.length;l++){var s=i,c=o.worldToCanvas(a[l]);if(!0===mf(n,s,c,r))return!0;i=c}if(t.data.isOpenContour)return!1;var d=o.worldToCanvas(a[0]),u=o.worldToCanvas(a[a.length-1]);return!0===mf(n,d,u,r)})),ae(ga(e),"cancel",(function(t){var n=e.isDrawing,r=e.isEditingOpen,o=e.isEditingClosed;n?e.cancelDrawing(t):r?e.cancelOpenContourEdit(t):o&&e.cancelClosedContourEdit(t)})),ae(ga(e),"triggerAnnotationModified",(function(e,t){var n=t.viewportId,r=t.renderingEngineId,o=Q.ANNOTATION_MODIFIED,a={annotation:e,viewportId:n,renderingEngineId:r};(0,J.triggerEvent)(J.eventTarget,o,a)})),ae(ga(e),"triggerAnnotationCompleted",(function(e){var t=Q.ANNOTATION_COMPLETED,n={annotation:e};(0,J.triggerEvent)(J.eventTarget,t,n)})),ae(ga(e),"renderAnnotation",(function(t,n){var r,o,a=!1,i=t.viewport,l=t.renderingEngine,s=i.element,c=e.getTargetId(i),d=nt(e.getToolName(),s);if(null===(r=d)||void 0===r||!r.length)return a;if(null===(o=d=e.filterInteractableAnnotationsForElement(s,d))||void 0===o||!o.length)return a;var u=e.isDrawing,v=e.isEditingOpen,f=e.isEditingClosed;if(u||v||f){var g=e.commonData.annotation.annotationUID;d.forEach((function(r){if(r.annotationUID===g)if(u)e.renderContourBeingDrawn(t,n,r);else if(f)e.renderClosedContourBeingEdited(t,n,r);else{if(!v)throw new Error("Unknown ".concat(e.getToolName()," annotation rendering state"));e.renderOpenContourBeingEdited(t,n,r)}else e.renderContour(t,n,r)})),a=!0}else d.forEach((function(r){e.renderContour(t,n,r)}));return e.configuration.calculateStats?(d.forEach((function(r){var o,a,s,d=null===(o=e.commonData)||void 0===o?void 0:o.annotation.annotationUID;if(r.annotationUID!==d||null!==(a=e.commonData)&&void 0!==a&&a.movingTextBox){if(null===(s=e.commonData)||void 0===s||!s.movingTextBox){var u=r.data;u.cachedStats[c]&&null!=u.cachedStats[c].areaUnit?r.invalidated&&e._throttledCalculateCachedStats(r,i,l,t):(u.cachedStats[c]={Modality:null,area:null,max:null,mean:null,stdDev:null,areaUnit:null},e._calculateCachedStats(r,i,l,t))}e._renderStats(r,i,t,n)}})),a):void 0})),ae(ga(e),"_calculateCachedStats",(function(t,n,r,o){for(var a=t.data,i=a.cachedStats,l=a.polyline,s=Object.keys(i),c=function(){var o,a,c,u=s[d],v=e.getTargetIdImage(u,r);if(!v)return"continue";var f=v.imageData,g=v.metadata,h=l.map((function(e){return n.worldToCanvas(e)})),p=h[0],m=n.canvasToWorld(p),w=n.canvasToWorld([p[0]+1,p[1]]),E=n.canvasToWorld([p[0],p[1]+1]),y=xs.vec3.distance(m,w),I=xs.vec3.distance(m,E),b=yc(v),C=Tu(h)/b/b;C*=y*I;var _=J.utilities.transformWorldToIndex(f,l[0]);_[0]=Math.floor(_[0]),_[1]=Math.floor(_[1]),_[2]=Math.floor(_[2]);for(var T=_[0],O=_[0],D=_[1],S=_[1],k=_[2],M=_[2],x=1;x<l.length;x++){var R=J.utilities.transformWorldToIndex(f,l[x]);R[0]=Math.floor(R[0]),R[1]=Math.floor(R[1]),R[2]=Math.floor(R[2]),T=Math.min(T,R[0]),O=Math.max(O,R[0]),D=Math.min(D,R[1]),S=Math.max(S,R[1]),k=Math.min(k,R[2]),M=Math.max(M,R[2])}var P=.01*(O-T),A=.01*(S-D),N=.01*(M-k),L=[[T=Math.floor(T-P),O=Math.ceil(O+P)],[D=Math.floor(D-A),S=Math.ceil(S+A)],[k=Math.floor(k-N),M=Math.ceil(M+N)]],U=f.indexToWorld([O,S,M]),V=n.worldToCanvas(U),j=0,B=[],W=0,F=bc(f,(function(e,t){var r=!0,o=n.worldToCanvas(e);return o[1]!=j&&(W=0,j=o[1],(B=function(e,t,n){for(var r=[],o=function(e,t,n){var r,o,a=[];arguments.length>3&&void 0!==arguments[3]&&!arguments[3]?(o=0,r=1):(o=e.length-1,r=0);for(var i=r;i<e.length;i++)pu(t,n,e[o],e[i])&&a.push([o,i]),o=i;return a}(e,t,n,!(arguments.length>3&&void 0!==arguments[3])||arguments[3]),a=0;a<o.length;a++){var i=Eu(t,n,e[o[a][0]],e[o[a][1]]);r.push(i)}return r}(h,o,[V[0],o[1]])).sort((function(e,t){return e[0]===t[0]?0:e[0]<t[0]?-1:1}))),B.length&&o[0]>B[0][0]&&(B.shift(),W++),W%2==0&&(r=!1),r}),e.configuration.statsCalculator.statsCallback,L),H={isPreScaled:kd(n,u),isSuvScaled:e.isSuvScaled(n,u,t.metadata.referencedImageId)},G=Sd(g.Modality,t.metadata.referencedImageId,H),q=e.configuration.statsCalculator.getStatistics();i[u]={Modality:g.Modality,area:C,mean:null===(o=q[1])||void 0===o?void 0:o.value,max:null===(a=q[0])||void 0===a?void 0:a.value,stdDev:null===(c=q[3])||void 0===c?void 0:c.value,statsArray:q,pointsInShape:F,areaUnit:Ec(0,v),modalityUnit:G}},d=0;d<s.length;d++)c();return e.triggerAnnotationModified(t,o),t.invalidated=!1,i})),ae(ga(e),"_renderStats",(function(t,n,r,o){var a,i=t.data,l=e.getTargetId(n),s={toolGroupId:e.toolGroupId,toolName:e.getToolName(),viewportId:r.viewport.id},c=e.getLinkedTextBoxStyle(s,t);if(c.visibility){var d=e.configuration.getTextLines(i,l);if(d&&0!==d.length){var u=i.polyline.map((function(e){return n.worldToCanvas(e)}));if(!i.handles.textBox.hasMoved){var v=Od(u);i.handles.textBox.worldPosition=n.canvasToWorld(v)}var f=n.worldToCanvas(i.handles.textBox.worldPosition),g=rc(o,null!==(a=t.annotationUID)&&void 0!==a?a:"","1",d,f,u,{},c),h=g.x,p=g.y,m=g.width,w=g.height;i.handles.textBox.worldBoundingBox={topLeft:n.canvasToWorld([h,p]),topRight:n.canvasToWorld([h+m,p]),bottomLeft:n.canvasToWorld([h,p+w]),bottomRight:n.canvasToWorld([h+m,p+w])}}}})),yv(ga(e)),kv(ga(e)),Wv(ga(e)),tf(ga(e)),of(ga(e)),hf(ga(e)),e._throttledCalculateCachedStats=fc(e._calculateCachedStats,100,{trailing:!0}),e}return re(o,[{key:"filterInteractableAnnotationsForElement",value:function(e,t){if(t&&t.length){var n,r=(0,J.getEnabledElement)(e).viewport;if(r instanceof J.StackViewport)n=hd(r,t);else{if(!(r instanceof J.VolumeViewport))throw new Error("Viewport Type ".concat(r.type," not supported"));var o=r.getCamera(),a=J.utilities.getTargetVolumeAndSpacingInNormalDir(r,o).spacingInNormalDirection;n=this.filterAnnotationsWithinSlice(t,o,a)}return n}}},{key:"filterAnnotationsWithinSlice",value:function(e,t,n){var r=t.viewPlaneNormal,o=e.filter((function(e){var t=e.metadata.viewPlaneNormal,n=Math.abs(xs.vec3.dot(r,t))>wf;return t&&n}));if(!o.length)return[];var a,i=n/2,l=t.focalPoint,s=[],c=function(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=function(e,t){if(e){if("string"==typeof e)return pf(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?pf(e,t):void 0}}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var r=0,o=function(){};return{s:o,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,i=!0,l=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return i=e.done,e},e:function(e){l=!0,a=e},f:function(){try{i||null==n.return||n.return()}finally{if(l)throw a}}}}(o);try{for(c.s();!(a=c.n()).done;){var d=a.value,u=d.data.polyline[0];if(d.isVisible){var v=xs.vec3.create();xs.vec3.sub(v,l,u);var f=xs.vec3.dot(v,r);Math.abs(f)<i&&s.push(d)}}}catch(e){c.e(e)}finally{c.f()}return s}}]),o}(Id);function yf(e,t){var n=e.cachedStats[t],r=n.area,o=n.mean,a=n.stdDev,i=n.max,l=n.isEmptyArea,s=n.areaUnit,c=n.modalityUnit,d=[];if(r){var u=l?"Area: Oblique not supported":"Area: ".concat(Oc(r)," ").concat(s);d.push(u)}return o&&d.push("Mean: ".concat(Oc(o)," ").concat(c)),i&&d.push("Max: ".concat(Oc(i)," ").concat(c)),a&&d.push("Std Dev: ".concat(Oc(a)," ").concat(c)),d}ae(Ef,"toolName",void 0),Ef.toolName="PlanarFreehandROI";var If=Ef;function bf(e,t,n){if(function(e,t,n){var r;if(null==t||null===(r=t.data)||void 0===r||!r.polyline||n<=0)return!0;if(!e.viewport)return!0;var o=e.renderingEngineId,a=e.viewportId,i=e.FrameOfReferenceUID,l=Fr(a,o);if(t.metadata.FrameOfReferenceUID!==i)return!0;if(!l)return!0;var s=l.getToolInstance(t.metadata.toolName);return!(s instanceof If)||s.isDrawing||s.isEditingOpen||s.isEditingClosed}(e,t,n))return!1;var r=e.viewport,o=t.data.polyline.map(r.worldToCanvas),a=Qu(o,0,o.length,n);return a!==o&&(t.data.polyline=a.map(r.canvasToWorld),!0)}var Cf={interpolateAnnotation:bf},_f={};function Tf(e,t){var n=(0,J.getEnabledElement)(e).viewportId;_f[n]=t}function Of(e){var t=(0,J.getEnabledElement)(e).viewportId;return _f[t]}var Df=J.Enums.RequestType.Prefetch,Sf=0;function kf(e,t){e=Math.round(e)||0;var n=[],r=(t=Math.round(t)||0)-e+1;if(r<=0)return n;for(;r--;)n[r]=t--;return n}function Mf(e){var t=(0,J.getEnabledElement)(e);if(!t)return null;var n=t.viewport;if(!(n instanceof J.StackViewport))throw new Error("stackPrefetch: element must be a StackViewport, VolumeViewport stackPrefetch not yet implemented");return{currentImageIdIndex:n.getCurrentImageIdIndex(),imageIds:n.getImageIds()}}function xf(e){return function(t){var n,r=t.detail;try{n=Mf(e)}catch(e){return}if(n&&n.imageIds&&0!==n.imageIds.length){var o=n.imageIds.indexOf(r.imageId);if(!(o<0)){var a=Of(e);a&&a.data&&a.data.length&&a.indicesToRequest.push(o)}}}}var Rf,Pf=function(e){var t=new Set(e.imageIds);return function(e){return e.type!==Df||!t.has(e.additionalDetails.imageId)}},Af={maxImagesToPrefetch:1/0,preserveExistingPool:!0};function Nf(e){var t,n,r=Of(e);if(r){var o=r||{},a=Mf(e);if(null!=a&&null!==(t=a.imageIds)&&void 0!==t&&t.length){var i=a.currentImageIdIndex;if(o.enabled&&(o.enabled=null===(n=o.indicesToRequest)||void 0===n?void 0:n.length),!1!==o.enabled&&(r.indicesToRequest.sort((function(e,t){return e-t})),o.indicesToRequest.slice().forEach((function(e){var t=a.imageIds[e];t&&(Math.abs(i-e)<6?J.cache.getImageLoadObject(t):J.cache.isLoaded(t))&&function(e){var t=o.indicesToRequest.indexOf(e);t>-1&&o.indicesToRequest.splice(t,1)}(e)})),o.indicesToRequest.length)){Af.preserveExistingPool||J.imageLoadPoolManager.clearRequestStack(Df);for(var l,s,c,d,u,v,f=(l=o.indicesToRequest,s=a.currentImageIdIndex,c=0,d=l.length-1,l.forEach((function(e,t){e<s?c=Math.max(t,c):e>s&&(d=Math.min(t,d))})),{low:c,high:d}),g=f.low,h=f.high,p=[];g>=0||h<o.indicesToRequest.length;){var m=a.currentImageIdIndex,w=!(m-o.indicesToRequest[g]>Af.maxImagesToPrefetch)&&g>=0,E=!(o.indicesToRequest[h]-m>Af.maxImagesToPrefetch)&&h<o.indicesToRequest.length;if(!E&&!w)break;w&&(v=o.indicesToRequest[g--],u=a.imageIds[v],p.push(u)),E&&(v=o.indicesToRequest[h++],u=a.imageIds[v],p.push(u))}var y=function(e,t){return J.imageLoader.loadAndCacheImage(e,t)},I=(0,J.getConfiguration)().rendering.useNorm16Texture;p.forEach((function(e){var t={targetBuffer:{type:I?void 0:"Float32Array"},preScale:{enabled:!0},requestType:Df};J.imageLoadPoolManager.addRequest(y.bind(null,e,t),Df,{imageId:e},Sf)}))}}else console.warn("CornerstoneTools.stackPrefetch: No images in stack.")}}function Lf(e){clearTimeout(Rf),Rf=setTimeout((function(){var t=e.target;try{Nf(t)}catch(e){return}}),10)}var Uf,Vf={enable:function(e){var t=Mf(e);if(t&&t.imageIds&&0!==t.imageIds.length){var n={indicesToRequest:kf(0,t.imageIds.length-1),enabled:!0,direction:1},r=n.indicesToRequest.indexOf(t.currentImageIdIndex);n.indicesToRequest.splice(r,1),Tf(e,n),Nf(e),e.removeEventListener(J.Enums.Events.STACK_NEW_IMAGE,Lf),e.addEventListener(J.Enums.Events.STACK_NEW_IMAGE,Lf);var o=xf(e);J.eventTarget.removeEventListener(J.Enums.Events.IMAGE_CACHE_IMAGE_REMOVED,o),J.eventTarget.addEventListener(J.Enums.Events.IMAGE_CACHE_IMAGE_REMOVED,o)}else console.warn("CornerstoneTools.stackPrefetch: No images in stack.")},disable:function(e){clearTimeout(Rf),e.removeEventListener(J.Enums.Events.STACK_NEW_IMAGE,Lf);var t=xf(e);J.eventTarget.removeEventListener(J.Enums.Events.IMAGE_CACHE_IMAGE_REMOVED,t);var n=Of(e);n&&n.indicesToRequest.length&&(n.enabled=!1,J.imageLoadPoolManager.clearRequestStack(Df))},getConfiguration:function(){return Af},setConfiguration:function(e){Af=e}},jf={maxImagesToPrefetch:1/0,minBefore:2,maxAfter:2,directionExtraImages:10,preserveExistingPool:!1};function Bf(e){var t,n,r=Mf(e);if(null!=r&&null!==(t=r.imageIds)&&void 0!==t&&t.length){var o=Of(e);if(o){var a=o||{};if(a.enabled&&(a.enabled=null===(n=a.indicesToRequest)||void 0===n?void 0:n.length),!1!==a.enabled){var i=a.indicesToRequest.slice(),l=r.currentImageIdIndex;if(i.forEach((function(e){var t=r.imageIds[e];t&&(Math.abs(l-e)<6?J.cache.getImageLoadObject(t):J.cache.isLoaded(t))&&d(e)})),a.indicesToRequest.length){jf.preserveExistingPool||J.imageLoadPoolManager.filterRequests(Pf(r));var s=function(t,n){return J.imageLoader.loadAndCacheImage(t,n).then((function(){return function(t){var n;d(r.imageIds.indexOf(t));var o=J.cache.getCachedImageBasedOnImageURI(t),i=a.stats,l=(null==o||null===(n=o.image)||void 0===n?void 0:n.decodeTimeInMS)||0;if(l){var s;i.imageIds.set(t,l),i.decodeTimeInMS+=l;var c=(null==o||null===(s=o.image)||void 0===s?void 0:s.loadTimeInMS)||0;i.loadTimeInMS+=c}if(!a.indicesToRequest.length&&null!=o&&o.sizeInBytes){var u=o.sizeInBytes,v=J.cache.getMaxCacheSize()/4/u;if(a.cacheFill){if(i.imageIds.size){i.fillTime=Date.now()-i.start;var f=i.imageIds.size;i.fillSize=f,console.log("Done cache fill",i.fillTime,"ms",f,"items","average total time",Oc(i.fillTime/f),"ms","average load",Oc(i.loadTimeInMS/f),"ms","average decode",Oc(i.decodeTimeInMS/f),"ms")}}else i.initialTime=Date.now()-i.start,i.initialSize=i.imageIds.size,Ff(e,v),Bf(e)}}(t)}))},c=(0,J.getConfiguration)().rendering.useNorm16Texture;i.forEach((function(e){var t=r.imageIds[e],n={targetBuffer:{type:c?void 0:"Float32Array"},preScale:{enabled:!0},requestType:Df};J.imageLoadPoolManager.addRequest(s.bind(null,t,n),Df,{imageId:t},Sf)}))}}}}else console.warn("CornerstoneTools.stackPrefetch: No images in stack.");function d(e){var t=a.indicesToRequest.indexOf(e);t>-1&&a.indicesToRequest.splice(t,1)}}function Wf(e){clearTimeout(Uf),Uf=setTimeout((function(){var t=e.target;try{Ff(t),Bf(t)}catch(e){return}}),5)}var Ff=function(e,t){var n=Mf(e);if(n&&n.imageIds&&0!==n.imageIds.length){var r=n.currentImageIdIndex,o=jf,a=o.maxAfter,i=void 0===a?2:a,l=o.minBefore,s=void 0===l?2:l,c=jf.directionExtraImages,d=void 0===c?10:c,u=Of(e)||{indicesToRequest:[],currentImageIdIndex:r,stackCount:0,enabled:!0,direction:1,stats:{start:Date.now(),imageIds:new Map,decodeTimeInMS:0,loadTimeInMS:0,totalBytes:0}},v=r-u.currentImageIdIndex;if(u.direction=v<0?-1:1,u.currentImageIdIndex=r,u.enabled=!0,u.stackCount<100&&(u.stackCount+=d),Math.abs(v)>i||!v)if(u.stackCount=0,t){var f=r/n.imageIds.length;s=Math.ceil(t*f),i=Math.ceil(t*(1-f)),u.cacheFill=!0}else u.cacheFill=!1;else v<0?(s+=u.stackCount,i=0):(i+=u.stackCount,s=0);for(var g=Math.max(0,r-s),h=Math.min(n.imageIds.length-1,r+i),p=[],m=r+1;m<=h;m++)p.push(m);for(var w=r-1;w>=g;w--)p.push(w);u.indicesToRequest=p,Tf(e,u)}else console.warn("CornerstoneTools.stackPrefetch: No images in stack.")},Hf={enable:function(e){var t=Mf(e);if(t&&t.imageIds&&0!==t.imageIds.length){Ff(e),Bf(e),e.removeEventListener(J.Enums.Events.STACK_NEW_IMAGE,Wf),e.addEventListener(J.Enums.Events.STACK_NEW_IMAGE,Wf);var n=xf(e);J.eventTarget.removeEventListener(J.Enums.Events.IMAGE_CACHE_IMAGE_REMOVED,n),J.eventTarget.addEventListener(J.Enums.Events.IMAGE_CACHE_IMAGE_REMOVED,n)}else console.warn("CornerstoneTools.stackPrefetch: No images in stack.")},disable:function(e){clearTimeout(Uf),e.removeEventListener(J.Enums.Events.STACK_NEW_IMAGE,Wf);var t=xf(e);J.eventTarget.removeEventListener(J.Enums.Events.IMAGE_CACHE_IMAGE_REMOVED,t);var n=Of(e);n&&n.data.length&&(n.enabled=!1)},getConfiguration:function(){return jf},setConfiguration:function(e){jf=e}};function Gf(e,t){if(e instanceof J.VolumeViewport){var n=e.getCamera().focalPoint,r=[0,0,0];return xs.vec3.sub(r,t,n),function(e,t){var n=e.getCamera(),r=n.viewPlaneNormal,o=xs.vec3.dot(t,r),a=xs.vec3.fromValues(r[0],r[1],r[2]);if(xs.vec3.scale(a,a,o),Math.abs(a[0])>.001||Math.abs(a[1])>.001||Math.abs(a[2])>.001){var i=[0,0,0],l=[0,0,0];xs.vec3.add(i,n.focalPoint,a),xs.vec3.add(l,n.position,a),e.setCamera({focalPoint:i,position:l}),e.render()}}(e,r),!0}}var qf=function(e,t){var n=t.frameNumbers||Lr(Array(e.numTimePoints).keys());if(!t.maskVolumeId&&!t.imageCoordinate)throw new Error("You should provide either maskVolumeId or imageCoordinate");if(t.maskVolumeId&&t.imageCoordinate)throw new Error("You can only use one of maskVolumeId or imageCoordinate");if(t.maskVolumeId){var r=function(e,t,n){var r=n.imageData,o=n.getScalarData(),a=o.length,i=[];i.length=a;for(var l=[],s=n.dimensions,c=0,d=0,u=o.length;d<u;d++)0!==o[d]&&(l.push([d%s[0],Math.floor(d/s[0]%s[1]),Math.floor(d/(s[0]*s[1]))]),i[c++]=d);i.length=c;var v=t.getScalarDataArrays(),f=[];if(v[0].length===a&&JSON.stringify(t.spacing)===JSON.stringify(n.spacing)){for(var g=function(t){var n=[];e.forEach((function(e){var r=v[e];n.push(r[i[t]])})),f.push(n)},h=0;h<i.length;h++)g(h);return[f,l]}return bc(r,(function(){return!0}),(function(n){var r=n.pointLPS,o=n.value,a=n.pointIJK;if(0!==o){var i=td(t.imageData,t.dimensions,t.spacing,r),s=0,c=new Map;e.forEach((function(e){return c.set(e,0)}));bc(t.imageData,(function(){return!0}),(function(t){for(var n=t.index,r=0;r<e.length;r++){var o=v[r][n],a=e[r];c.set(a,c.get(a)+o)}s++}),i);var d=[];c.forEach((function(e){d.push(e/s)})),l.push(a),f.push(d)}})),[f,l]}(n,e,J.cache.getVolume(t.maskVolumeId)),o=dt(r,2);return[o[0],o[1]]}if(t.imageCoordinate){var a=function(e,t,n){var r=n.dimensions,o=n.imageData.worldToIndex(t);if(o[0]=Math.floor(o[0]),o[1]=Math.floor(o[1]),o[2]=Math.floor(o[2]),!J.utilities.indexWithinDimensions(o,r))throw new Error("outside bounds");var a=r[0],i=r[0]*r[1],l=n.getScalarDataArrays(),s=[];return e.forEach((function(e){var t=l[e],n=o[2]*i+o[1]*a+o[0];s.push(t[n])})),s}(n,t.imageCoordinate,e);return a}},zf=function(e,t,n){var r=n||Lr(Array(e.numTimePoints).keys()),o=r.length;if(r.length<=1)throw new Error("Please provide two or more time points");var a=e.getScalarDataArrays(),i=a[0].length,l=new Float32Array(i);if(t===J.Enums.DynamicOperatorType.SUM){for(var s=0;s<o;s++)for(var c=a[r[s]],d=0;d<i;d++)l[d]+=c[d];return l}if(t===J.Enums.DynamicOperatorType.SUBTRACT){if(r.length>2)throw new Error("Please provide only 2 time points for subtraction.");for(var u=0;u<i;u++)l[u]+=a[r[0]][u]-a[r[1]][u];return l}if(t===J.Enums.DynamicOperatorType.AVERAGE){for(var v=0;v<o;v++)for(var f=a[r[v]],g=0;g<i;g++)l[g]+=f[g];for(var h=0;h<i;h++)l[h]=l[h]/o;return l}};function Kf(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function Yf(e,t){if(t<e.length/3)return[e[3*t],e[3*t+1],e[3*t+2]]}function Xf(e){for(var t=e.getLines().getData(),n=0,r=new Map;n<t.length;){for(var o=t[n++],a=[],i=0;i<o;i++)a.push(t[n+i]);r.set(a[0],a),n+=o}for(var l=[],s=function(e){var t,n=function(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=function(e,t){if(e){if("string"==typeof e)return Kf(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?Kf(e,t):void 0}}(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var r=0,o=function(){};return{s:o,n:function(){return r>=e.length?{done:!0}:{done:!1,value:e[r++]}},e:function(e){throw e},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a,i=!0,l=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return i=e.done,e},e:function(e){l=!0,a=e},f:function(){try{i||null==n.return||n.return()}finally{if(l)throw a}}}}(e.entries());try{for(n.s();!(t=n.n()).done;){var r=dt(t.value,2),o=r[0];if(void 0!==r[1])return o}}catch(e){n.e(e)}finally{n.f()}return-1},c=s(r);-1!==c;){for(var d=[c];r.has(c);){var u=r.get(c)[1];r.has(u)&&d.push(u),r.delete(c),c=u}l.push(d),c=s(r)}return l.length?l:void 0}function Zf(e){var t=Xf(e);if(t){var n=e.getPoints().getData();return t.map((function(e){return e.map((function(e){return Yf(n,e)}))}))}}var Jf=function(e){return e.Top="top",e.Left="left",e.Bottom="bottom",e.Right="right",e}({}),$f=function(e){return e&&e.upper>e.lower},Qf=function(e,t){return!!e&&!!t&&e.lower===t.lower&&e.upper===t.upper},eg=function(e){return!!e&&e.width>0&&e.height>0},tg=function(e,t){return!!e&&!!t&&e.width===t.width&&e.height===t.height};function ng(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function rg(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?ng(Object(n),!0).forEach((function(t){ae(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):ng(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}var og=J.utilities.clamp,ag=function(){function e(t){oe(this,e),ae(this,"_canvas",void 0),ae(this,"_imageRange",void 0),ae(this,"_voiRange",void 0),ae(this,"_colormap",void 0),ae(this,"_showFullImageRange",void 0),e.validateProps(t);var n=t.colormap,r=t.size,o=void 0===r?{width:20,height:100}:r,a=t.imageRange,i=void 0===a?{lower:0,upper:1}:a,l=t.voiRange,s=void 0===l?{lower:0,upper:1}:l,c=t.container,d=t.showFullPixelValueRange,u=void 0!==d&&d;this._colormap=n,this._imageRange=i,this._voiRange=s,this._showFullImageRange=u,this._canvas=this._createRootElement(o),c&&this.appendTo(c)}return re(e,[{key:"colormap",get:function(){return this._colormap},set:function(e){this._colormap=e,this.render()}},{key:"size",get:function(){var e=this._canvas;return{width:e.width,height:e.height}},set:function(e){var t=this._canvas;eg(e)&&!tg(t,e)&&(this._setCanvasSize(t,e),this.render())}},{key:"imageRange",get:function(){return rg({},this._imageRange)},set:function(e){$f(e)&&!Qf(e,this._imageRange)&&(this._imageRange=e,this.render())}},{key:"voiRange",get:function(){return rg({},this._voiRange)},set:function(e){$f(e)&&!Qf(e,this._voiRange)&&(this._voiRange=e,this.render())}},{key:"showFullImageRange",get:function(){return this._showFullImageRange},set:function(e){e!==this._showFullImageRange&&(this._showFullImageRange=e,this.render())}},{key:"appendTo",value:function(e){e.appendChild(this._canvas),this.render()}},{key:"dispose",value:function(){var e=this._canvas,t=e.parentElement;null==t||t.removeChild(e)}},{key:"_setCanvasSize",value:function(e,t){var n=t.width,r=t.height;e.width=n,e.height=r,Object.assign(e.style,{width:"".concat(n,"px"),height:"".concat(r,"px")})}},{key:"_createRootElement",value:function(e){var t=document.createElement("canvas");return Object.assign(t.style,{position:"absolute",top:"0",left:"0",pointerEvents:"none",boxSizing:"border-box"}),this._setCanvasSize(t,e),t}},{key:"render",value:function(){if(this._canvas.isConnected)for(var e,t,n,r=this._colormap.RGBPoints,o=r.length/4,a=function(e){var t=4*e;if(!(e<0||e>=o))return{index:e,position:r[t],color:[r[t+1],r[t+2],r[t+3]]}},i=this._canvas,l=i.width,s=i.height,c=this._canvas.getContext("2d"),d=l>s,u=d?l:s,v=this._voiRange,f=this._showFullImageRange?this._imageRange:rg({},v),g=J.utilities.windowLevel.toWindowLevel(v.lower,v.upper).windowWidth,h=void 0,p=a(0),m=(f.upper-f.lower)/(u-1),w=f.lower,E=0;E<u;E++){var y=(w-v.lower)/g;if(p)for(var I=p.index;I<o&&!(y<=p.position);I++)h=p,p=a(I+1);var b=void 0;if(h)if(p){var C=(y-h.position)/(p.position-h.position);e=h.color,t=p.color,n=C,b=[e[0]*(1-n)+t[0]*n,e[1]*(1-n)+t[1]*n,e[2]*(1-n)+t[2]*n]}else b=Lr(h.color);else b=Lr(p.color);var _=b.map((function(e){return og(Math.round(255*e),0,255)}));c.fillStyle="rgb(".concat(_[0],", ").concat(_[1],", ").concat(_[2],")"),d?c.fillRect(E,0,1,s):c.fillRect(0,s-E-1,l,1),w+=m}}}],[{key:"validateProps",value:function(e){var t=e.size,n=e.imageRange,r=e.voiRange;if(t&&!eg(t))throw new Error('Invalid "size"');if(n&&!$f(n))throw new Error('Invalid "imageRange"');if(r&&!$f(r))throw new Error('Invalid "voiRange"')}}]),e}();function ig(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function lg(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?ig(Object(n),!0).forEach((function(t){ae(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):ig(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}var sg={FONT:"10px Arial",COLOR:"white",TICK_SIZE:5,TICK_WIDTH:1,TICK_LABEL_MARGIN:3,MAX_NUM_TICKS:8,TICKS_STEPS:[1,2.5,5,10]},cg=function(){function e(t){var n,r,o,a,i,l;oe(this,e),ae(this,"_canvas",void 0),ae(this,"_imageRange",void 0),ae(this,"_voiRange",void 0),ae(this,"_color",void 0),ae(this,"_tickSize",void 0),ae(this,"_tickWidth",void 0),ae(this,"_labelMargin",void 0),ae(this,"_maxNumTicks",void 0),ae(this,"_rangeTextPosition",void 0),ae(this,"_showFullPixelValueRange",void 0),ae(this,"_font",void 0),e.validateProps(t);var s=t.top,c=void 0===s?0:s,d=t.left,u=void 0===d?0:d,v=t.size,f=void 0===v?{width:20,height:100}:v,g=t.imageRange,h=void 0===g?{lower:0,upper:1}:g,p=t.voiRange,m=void 0===p?{lower:0,upper:1}:p,w=t.ticks,E=t.container,y=t.showFullPixelValueRange,I=void 0!==y&&y,b=null!=w?w:{},C=b.style,_=b.position;this._imageRange=h,this._voiRange=m,this._font=null!==(n=null==C?void 0:C.font)&&void 0!==n?n:sg.FONT,this._color=null!==(r=null==C?void 0:C.color)&&void 0!==r?r:sg.COLOR,this._tickSize=null!==(o=null==C?void 0:C.tickSize)&&void 0!==o?o:sg.TICK_SIZE,this._tickWidth=null!==(a=null==C?void 0:C.tickWidth)&&void 0!==a?a:sg.TICK_WIDTH,this._labelMargin=null!==(i=null==C?void 0:C.labelMargin)&&void 0!==i?i:sg.TICK_LABEL_MARGIN,this._maxNumTicks=null!==(l=null==C?void 0:C.maxNumTicks)&&void 0!==l?l:sg.MAX_NUM_TICKS,this._rangeTextPosition=null!=_?_:Jf.Right,this._showFullPixelValueRange=I,this._canvas=this._createCanvasElement(f,c,u),E&&this.appendTo(E)}return re(e,[{key:"size",get:function(){var e=this._canvas;return{width:e.width,height:e.height}},set:function(e){var t=this._canvas;eg(e)&&!tg(t,e)&&(this._setCanvasSize(t,e),this.render())}},{key:"top",get:function(){return Number.parseInt(this._canvas.style.top)},set:function(e){var t=this._canvas;e!==this.top&&(t.style.top="".concat(e,"px"),this.render())}},{key:"left",get:function(){return Number.parseInt(this._canvas.style.left)},set:function(e){var t=this._canvas;e!==this.left&&(t.style.left="".concat(e,"px"),this.render())}},{key:"imageRange",get:function(){return lg({},this._imageRange)},set:function(e){$f(e)&&!Qf(e,this._imageRange)&&(this._imageRange=e,this.render())}},{key:"voiRange",get:function(){return lg({},this._voiRange)},set:function(e){$f(e)&&!Qf(e,this._voiRange)&&(this._voiRange=e,this.render())}},{key:"tickSize",get:function(){return this._tickSize},set:function(e){e!==this._tickSize&&(this._tickSize=e,this.render())}},{key:"tickWidth",get:function(){return this._tickWidth},set:function(e){e!==this._tickWidth&&(this._tickWidth=e,this.render())}},{key:"color",get:function(){return this._color},set:function(e){e!==this._color&&(this._color=e,this.render())}},{key:"showFullPixelValueRange",get:function(){return this._showFullPixelValueRange},set:function(e){e!==this._showFullPixelValueRange&&(this._showFullPixelValueRange=e,this.render())}},{key:"visible",get:function(){return"block"===this._canvas.style.display},set:function(e){e!==this.visible&&(this._canvas.style.display=e?"block":"none",e&&this.render())}},{key:"appendTo",value:function(e){e.appendChild(this._canvas),this.render()}},{key:"_setCanvasSize",value:function(e,t){var n=t.width,r=t.height;e.width=n,e.height=r,Object.assign(e.style,{width:"".concat(n,"px"),height:"".concat(r,"px")})}},{key:"_createCanvasElement",value:function(e,t,n){var r=document.createElement("canvas");return Object.assign(r.style,{display:"none",position:"absolute",boxSizing:"border-box",top:"".concat(t,"px"),left:"".concat(n,"px")}),this._setCanvasSize(r,e),r}},{key:"_getTicks",value:function(e){for(var t=e.lower,n=e.upper,r=(n-t)/(this._maxNumTicks-1),o=Math.pow(10,-Math.floor(Math.log10(Math.abs(r)))),a=r*o,i=sg.TICKS_STEPS.find((function(e){return e>=a}))/o,l=Math.ceil(n/i)*i,s=Math.floor(t/i)*i,c=Math.round((l-s)/i)+1,d=[],u=0;u<c;u++)d.push(s+u*i);return{scaleMin:s,scaleMax:l,step:i,ticks:d}}},{key:"_getLeftTickInfo",value:function(e){var t=e.position,n=e.labelMeasure,r=this._canvas.width;return{labelPoint:[r-this.tickSize-n.width-this._labelMargin,t],tickPoints:{start:[r-this._tickSize,t],end:[r,t]}}}},{key:"_getRightTickInfo",value:function(e){var t=e.position;return{labelPoint:[this._tickSize+this._labelMargin,t],tickPoints:{start:[0,t],end:[this._tickSize,t]}}}},{key:"_getTopTickInfo",value:function(e){throw e.position,e.labelMeasure,new Error("Not implemented")}},{key:"_getBottomTickInfo",value:function(e){throw e.position,e.labelMeasure,new Error("Not implemented")}},{key:"render",value:function(){var e=this,t=this._canvas;if(t.isConnected&&this.visible){var n=t.width,r=t.height,o=n>=r,a=o?n:r,i=t.getContext("2d"),l=this._voiRange,s=this._showFullPixelValueRange?this._imageRange:lg({},l),c=s.upper-s.lower,d=this._getTicks(s).ticks;i.clearRect(0,0,n,r),i.font=this._font,i.textBaseline="middle",i.fillStyle=this._color,i.strokeStyle=this._color,i.lineWidth=this.tickWidth,d.forEach((function(t){var n=Math.round(a*((t-s.lower)/c));if(o||(n=r-n),!(n<0||n>a)){var l=t.toString(),d=i.measureText(l),u=o?e._rangeTextPosition===Jf.Top?e._getTopTickInfo({position:n,labelMeasure:d}):e._getBottomTickInfo({position:n,labelMeasure:d}):e._rangeTextPosition===Jf.Left?e._getLeftTickInfo({position:n,labelMeasure:d}):e._getRightTickInfo({position:n}),v=u.labelPoint,f=u.tickPoints,g=f.start,h=f.end;return i.beginPath(),i.moveTo(g[0],g[1]),i.lineTo(h[0],h[1]),i.fillText(l,v[0],v[1]),i.stroke(),n}}))}}}],[{key:"validateProps",value:function(e){var t=e.size,n=e.imageRange,r=e.voiRange;if(t&&!eg(t))throw new Error('Invalid "size"');if(n&&!$f(n))throw new Error('Invalid "imageRange"');if(r&&!$f(r))throw new Error('Invalid "voiRange"')}}]),e}();function dg(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}var ug=function(){function e(t){var n=this,r=t.id,o=t.container;oe(this,e),ae(this,"_id",void 0),ae(this,"_rootElement",void 0),ae(this,"_containerSize",void 0),ae(this,"_containerResizeObserver",void 0),ae(this,"_containerResizeCallback",(function(e){var t,r,o=e[0],a=o.contentRect,i=o.contentBoxSize;a?(t=a.width,r=a.height):null!=i&&i.length&&(t=i[0].inlineSize,r=i[0].blockSize),n._containerSize={width:t,height:r},n.onContainerResize()})),this._id=r,this._containerSize={width:0,height:0},this._rootElement=this.createRootElement(r),this._containerResizeObserver=new ResizeObserver(this._containerResizeCallback),o&&this.appendTo(o)}return re(e,[{key:"id",get:function(){return this._id}},{key:"rootElement",get:function(){return this._rootElement}},{key:"appendTo",value:function(e){var t=this._rootElement,n=this._containerResizeObserver,r=t.parentElement;e&&e!==r&&(r&&n.unobserve(r),e.appendChild(t),n.observe(e))}},{key:"destroy",value:function(){var e=this._rootElement,t=this._containerResizeObserver,n=e.parentElement;null==n||n.removeChild(e),t.disconnect()}},{key:"containerSize",get:function(){return function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?dg(Object(n),!0).forEach((function(t){ae(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):dg(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}({},this._containerSize)}},{key:"createRootElement",value:function(e){var t=document.createElement("div");return t.id=e,t.classList.add("widget"),Object.assign(t.style,{width:"100%",height:"100%"}),t}},{key:"onContainerResize",value:function(){}}]),e}();function vg(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}var fg={MULTIPLIER:1,RANGE_TEXT_POSITION:Jf.Right,TICKS_BAR_SIZE:50},gg=function(e){pa(o,e);var t,n,r=(t=o,n=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,r=wa(t);if(n){var o=wa(this).constructor;e=Reflect.construct(r,arguments,o)}else e=r.apply(this,arguments);return ma(this,e)});function o(e){var t,n,a;return oe(this,o),ae(ga(a=r.call(this,e)),"_colormaps",void 0),ae(ga(a),"_activeColormapName",void 0),ae(ga(a),"_eventListenersManager",void 0),ae(ga(a),"_canvas",void 0),ae(ga(a),"_ticksBar",void 0),ae(ga(a),"_rangeTextPosition",void 0),ae(ga(a),"_isMouseOver",!1),ae(ga(a),"_isInteracting",!1),ae(ga(a),"_mouseOverCallback",(function(e){a._isMouseOver=!0,a.showTicks(),e.stopPropagation()})),ae(ga(a),"_mouseOutCallback",(function(e){a._isMouseOver=!1,a.hideTicks(),e.stopPropagation()})),ae(ga(a),"_mouseDownCallback",(function(e){a._isInteracting=!0,a.showTicks(),a._addVOIEventListeners(e),e.stopPropagation()})),ae(ga(a),"_mouseDragCallback",(function(e,t){var n=a.getVOIMultipliers(),r=a._getPointsFromMouseEvent(e),o=t.points,i=t.voiRange,l=xs.vec2.sub(xs.vec2.create(),r.local,o.local),s=l[0]*n[0],c=l[1]*n[1];if(s||c){var d=i.lower,u=i.upper,v=J.utilities.windowLevel.toWindowLevel(d,u),f=v.windowWidth,g=v.windowCenter;f=Math.max(f+s,1),g+=c;var h=J.utilities.windowLevel.toLowHighRange(f,g);a.voiRange=h,e.stopPropagation(),e.preventDefault()}})),ae(ga(a),"_mouseUpCallback",(function(e){a._isInteracting=!1,a.hideTicks(),a._removeVOIEventListeners(),e.stopPropagation()})),a._eventListenersManager=new J.utilities.eventListener.MultiTargetEventListenerManager,a._colormaps=o.getColormapsMap(e),a._activeColormapName=o.getInitialColormapName(e),a._canvas=a._createCanvas(e),a._ticksBar=a._createTicksBar(e),a._rangeTextPosition=null!==(t=null===(n=e.ticks)||void 0===n?void 0:n.position)&&void 0!==t?t:fg.RANGE_TEXT_POSITION,a._canvas.appendTo(a.rootElement),a._ticksBar.appendTo(a.rootElement),a._addRootElementEventListeners(),a}return re(o,[{key:"activeColormapName",get:function(){return this._activeColormapName},set:function(e){if(e!==this._activeColormapName){var t=this._colormaps.get(e);t?(this._activeColormapName=e,this._canvas.colormap=t):console.warn("Invalid colormap name (".concat(e,")"))}}},{key:"imageRange",get:function(){return this._canvas.imageRange},set:function(e){this._canvas.imageRange=e,this._ticksBar.imageRange=e}},{key:"voiRange",get:function(){return this._canvas.voiRange},set:function(e){var t=this._canvas.voiRange;$f(e)&&!Qf(e,t)&&(this._canvas.voiRange=e,this._ticksBar.voiRange=e,this.onVoiChange(e))}},{key:"showFullImageRange",get:function(){return this._canvas.showFullImageRange},set:function(e){this._canvas.showFullImageRange=e,this._ticksBar.showFullPixelValueRange=e}},{key:"destroy",value:function(){Vl(wa(o.prototype),"destroy",this).call(this),this._eventListenersManager.reset()}},{key:"createRootElement",value:function(){var e=document.createElement("div");return Object.assign(e.style,{position:"relative",fontSize:"0",width:"100%",height:"100%"}),e}},{key:"onContainerResize",value:function(){Vl(wa(o.prototype),"onContainerResize",this).call(this),this.updateTicksBar(),this._canvas.size=this.containerSize}},{key:"getVOIMultipliers",value:function(){return[fg.MULTIPLIER,fg.MULTIPLIER]}},{key:"onVoiChange",value:function(e){}},{key:"showTicks",value:function(){this.updateTicksBar(),this._ticksBar.visible=!0}},{key:"hideTicks",value:function(){this._isInteracting||this._isMouseOver||(this._ticksBar.visible=!1)}},{key:"_createCanvas",value:function(e){var t=e.imageRange,n=e.voiRange,r=e.showFullPixelValueRange,o=this._colormaps.get(this._activeColormapName);return new ag({colormap:o,imageRange:t,voiRange:n,showFullPixelValueRange:r})}},{key:"_createTicksBar",value:function(e){var t=e.ticks;return new cg({imageRange:e.imageRange,voiRange:e.voiRange,ticks:t,showFullPixelValueRange:e.showFullPixelValueRange})}},{key:"_getPointsFromMouseEvent",value:function(e){var t=this.rootElement,n=[e.clientX,e.clientY],r=[e.pageX,e.pageY],o=t.getBoundingClientRect();return{client:n,page:r,local:[r[0]-o.left-window.pageXOffset,r[1]-o.top-window.pageYOffset]}}},{key:"updateTicksBar",value:function(){var e=this.containerSize,t=e.width,n=e.height;if(0!==t||0!==n){var r,o,a=this._ticksBar,i=this._rangeTextPosition,l=t>=n,s=l?t:fg.TICKS_BAR_SIZE,c=l?fg.TICKS_BAR_SIZE:n;if(!function(e,t,n){return(e>=t?[Jf.Top,Jf.Bottom]:[Jf.Left,Jf.Right]).includes(n)}(t,n,i))throw new Error("Invalid rangeTextPosition value for the current colobar orientation");a.size={width:s,height:c},l?(o=0,r=i===Jf.Top?-c:n):(r=0,o=i===Jf.Left?-s:t),a.top=r,a.left=o}}},{key:"_addRootElementEventListeners",value:function(){var e=this._eventListenersManager,t=this.rootElement;e.addEventListener(t,"mouseover",this._mouseOverCallback),e.addEventListener(t,"mouseout",this._mouseOutCallback),e.addEventListener(t,"mousedown",this._mouseDownCallback)}},{key:"_addVOIEventListeners",value:function(e){var t=this,n=this._eventListenersManager,r=this._getPointsFromMouseEvent(e),o=function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?vg(Object(n),!0).forEach((function(t){ae(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):vg(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}({},this._canvas.voiRange),a={points:r,voiRange:o};this._removeVOIEventListeners(),n.addEventListener(document,"voi.mouseup",this._mouseUpCallback),n.addEventListener(document,"voi.mousemove",(function(e){return t._mouseDragCallback(e,a)}))}},{key:"_removeVOIEventListeners",value:function(){var e=this._eventListenersManager;e.removeEventListener(document,"voi.mouseup"),e.removeEventListener(document,"voi.mousemove")}}],[{key:"getColormapsMap",value:function(e){return e.colormaps.reduce((function(e,t){return e.set(t.Name,t)}),new Map)}},{key:"getInitialColormapName",value:function(e){var t=e.activeColormapName,n=e.colormaps;return t&&n.some((function(e){return e.Name===t}))?t:n[0].Name}}]),o}(ug);function hg(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function pg(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?hg(Object(n),!0).forEach((function(t){ae(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):hg(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}var mg=J.Enums.Events,wg={lower:-1e3,upper:1e3},Eg=function(e){pa(o,e);var t,n,r=(t=o,n=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,r=wa(t);if(n){var o=wa(this).constructor;e=Reflect.construct(r,arguments,o)}else e=r.apply(this,arguments);return ma(this,e)});function o(e){var t;oe(this,o);var n=e.element,a=e.volumeId,i=o._getImageRange(n,a),l=o._getVOIRange(n,a);return ae(ga(t=r.call(this,pg(pg({},e),{},{imageRange:i,voiRange:l}))),"_element",void 0),ae(ga(t),"_volumeId",void 0),ae(ga(t),"_hideTicksTime",void 0),ae(ga(t),"_hideTicksTimeoutId",void 0),ae(ga(t),"autoHideTicks",(function(){if(!t._hideTicksTimeoutId){var e=t._hideTicksTime-Date.now();e<=0?t.hideTicks():t._hideTicksTimeoutId=window.setTimeout((function(){t._hideTicksTimeoutId=0,t.autoHideTicks()}),e)}})),ae(ga(t),"_stackNewImageCallback",(function(){t.imageRange=o._getImageRange(t._element)})),ae(ga(t),"_imageVolumeModifiedCallback",(function(e){var n=e.detail.imageVolume.volumeId;if(n===t._volumeId){var r=ga(t)._element;t.imageRange=o._getImageRange(r,n)}})),ae(ga(t),"_viewportVOIModifiedCallback",(function(e){var n=e.detail,r=n.viewportId,o=n.volumeId,a=n.range;r===t.enabledElement.viewport.id&&o===t._volumeId&&(t.voiRange=a,t.showAndAutoHideTicks())})),t._element=n,t._volumeId=a,t._addCornerstoneEventListener(),t}return re(o,[{key:"element",get:function(){return this._element}},{key:"enabledElement",get:function(){return(0,J.getEnabledElement)(this._element)}},{key:"getVOIMultipliers",value:function(){return function(e,t,n){if("PT"===J.utilities.getViewportModality(e,t)){var r=e.element,o=r.clientWidth,a=r.clientHeight,i=5/Math.max(o,a),l=kd(e,t),s={}.fixedPTWindowWidth,c=void 0===s||s?0:i;return l?[c,i]:[c,4]}return[4,4]}(this.enabledElement.viewport,this._volumeId)}},{key:"onVoiChange",value:function(e){Vl(wa(o.prototype),"onVoiChange",this).call(this,e);var t=this.enabledElement.viewport;if(t instanceof J.StackViewport)t.setProperties({voiRange:e}),t.render();else if(t instanceof J.VolumeViewport){var n=this._volumeId,r=J.utilities.getViewportsWithVolumeId(n,t.renderingEngineId);t.setProperties({voiRange:e},n),r.forEach((function(e){return e.render()}))}}},{key:"showAndAutoHideTicks",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1e3;this._hideTicksTime=Date.now()+e,this.showTicks(),this.autoHideTicks()}},{key:"_addCornerstoneEventListener",value:function(){var e=this._element;J.eventTarget.addEventListener(mg.IMAGE_VOLUME_MODIFIED,this._imageVolumeModifiedCallback),e.addEventListener(mg.STACK_NEW_IMAGE,this._stackNewImageCallback),e.addEventListener(mg.VOI_MODIFIED,this._viewportVOIModifiedCallback)}}],[{key:"_getImageRange",value:function(e,t){var n=(0,J.getEnabledElement)(e).viewport,r=t?n.getActor(t):n.getDefaultActor();if(!r)return wg;var o=r.actor.getMapper().getInputData().getPointData().getScalars().getRange();return 0===o[0]&&0===o[1]?wg:{lower:o[0],upper:o[1]}}},{key:"_getVOIRange",value:function(e,t){var n=(0,J.getEnabledElement)(e).viewport,r=t?n.getActor(t):n.getDefaultActor();if(!r||!J.utilities.isImageActor(r))return wg;var o=r.actor.getProperty().getRGBTransferFunction(0).getRange();return 0===o[0]&&0===o[1]?wg:{lower:o[0],upper:o[1]}}}]),o}(gg),yg=function(e,t){var n=as.getDefinedCursor(t,!0);n||(n=Nl.getDefinedCursor(t)),n||(console.log("Cursor ".concat(t," is not defined either as SVG or as a standard cursor.")),n=Nl.getDefinedCursor(t)),vs(e,n)},Ig=[].concat(Lr($l),Lr(Ul)),bg=function(e,t,n){var r=ns("textBoxFontSize",e,t,n),o=ns("textBoxFontFamily",e,t,n);return"".concat(r,"px ").concat(o)},Cg=function(e){if(!e||!e.length)throw new Error("The segmentationInputArray is undefined or empty array");e.forEach((function(e){if(void 0===e.segmentationId)throw new Error("The segmentationInput.segmentationId is undefined, please provide a valid segmentationId");if(void 0===e.representation)throw new Error("The segmentationInput.representation is undefined, please provide a valid representation");e.representation.type===gt.Labelmap&&function(e){if(!e.representation.data)throw new Error("The segmentationInput.representationData.data is undefined, please provide a valid representationData.data");var t=e.representation.data;if(!t.volumeId)throw new Error("The segmentationInput.representationData.volumeId is undefined, please provide a valid representationData.volumeId");if(!J.cache.getVolume(t.volumeId))throw new Error("volumeId of ".concat(t.volumeId," not found in cache, you should load and cache volume before adding segmentation"))}(e)}))},_g=function(e){Cg(e),e.map((function(e){Nt(le()(e))}))};function Tg(){return(Tg=Va(Ba().mark((function e(t,n,r){var o,a;return Ba().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(fa(t)){e.next=3;break}throw new Error("No tool group found for toolGroupId: ".concat(t));case 3:return o=n.map((function(e){return Og(t,e,r)})),e.next=6,Promise.all(o);case 6:return a=e.sent,e.abrupt("return",a);case 8:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function Og(e,t,n){return Dg.apply(this,arguments)}function Dg(){return(Dg=Va(Ba().mark((function e(t,n,r){var o;return Ba().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(n.type!==gt.Labelmap){e.next=6;break}return e.next=3,Ji.addSegmentationRepresentation(t,n,r);case 3:case 9:case 15:o=e.sent,e.next=19;break;case 6:if(n.type!==gt.Contour){e.next=12;break}return e.next=9,Mi.addSegmentationRepresentation(t,n,r);case 12:if(n.type!==gt.Surface){e.next=18;break}return e.next=15,si.addSegmentationRepresentation(t,n,r);case 18:throw new Error("The representation type ".concat(n.type," is not supported"));case 19:return e.abrupt("return",o);case 20:case"end":return e.stop()}}),e)})))).apply(this,arguments)}var Sg=function(e,t,n){return Tg.apply(this,arguments)};var kg=function(e){pa(o,e);var t,n,r=(t=o,n=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,r=wa(t);if(n){var o=wa(this).constructor;e=Reflect.construct(r,arguments,o)}else e=r.apply(this,arguments);return ma(this,e)});function o(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{supportedInteractionTypes:["Mouse","Touch"]};return oe(this,o),r.call(this,e,t)}return re(o,[{key:"touchDragCallback",value:function(e){this._dragCallback(e)}},{key:"mouseDragCallback",value:function(e){this._dragCallback(e)}},{key:"_dragCallback",value:function(e){var t=e.detail,n=t.element,r=t.deltaPoints,o=(0,J.getEnabledElement)(n),a=r.world,i=o.viewport.getCamera(),l=i.focalPoint,s=i.position,c=[s[0]-a[0],s[1]-a[1],s[2]-a[2]],d=[l[0]-a[0],l[1]-a[1],l[2]-a[2]];o.viewport.setCamera({focalPoint:d,position:c}),o.viewport.render()}}]),o}(La);ae(kg,"toolName",void 0),kg.toolName="Pan";var Mg=kg;var xg=function(e){pa(o,e);var t,n,r=(t=o,n=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,r=wa(t);if(n){var o=wa(this).constructor;e=Reflect.construct(r,arguments,o)}else e=r.apply(this,arguments);return ma(this,e)});function o(){var e,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{supportedInteractionTypes:["Mouse","Touch"],configuration:{rotateIncrementDegrees:2}};return oe(this,o),ae(ga(e=r.call(this,t,n)),"touchDragCallback",void 0),ae(ga(e),"mouseDragCallback",void 0),ae(ga(e),"rotateCamera",(function(e,t,n,r){var o=e.getVtkActiveCamera(),a=o.getViewUp(),i=o.getFocalPoint(),l=o.getPosition(),s=[0,0,0],c=[0,0,0],d=[0,0,0],u=xs.mat4.identity(new Float32Array(16));xs.mat4.translate(u,u,t),xs.mat4.rotate(u,u,r,n),xs.mat4.translate(u,u,[-t[0],-t[1],-t[2]]),xs.vec3.transformMat4(s,l,u),xs.vec3.transformMat4(c,i,u),xs.mat4.identity(u),xs.mat4.rotate(u,u,r,n),xs.vec3.transformMat4(d,a,u),e.setCamera({position:s,viewUp:d,focalPoint:c})})),e.touchDragCallback=e._dragCallback.bind(ga(e)),e.mouseDragCallback=e._dragCallback.bind(ga(e)),e}return re(o,[{key:"_dragCallback",value:function(e){var t=e.detail,n=t.element,r=t.currentPoints,o=t.lastPoints,a=r.canvas,i=o.canvas,l=this.configuration.rotateIncrementDegrees,s=(0,J.getEnabledElement)(n).viewport,c=s.getCamera(),d=n.clientWidth,u=n.clientHeight,v=[a[0]/d,a[1]/u],f=[i[0]/d,i[1]/u],g=[.5*d,.5*u],h=s.canvasToWorld(g),p=Math.pow(1+Math.abs(.5),2),m=[f[0],0,0],w=[v[0],0,0],E=Math.pow(m[0],2),y=Math.pow(w[0],2),I=E>p?0:Math.sqrt(p-E),b=y>p?0:Math.sqrt(p-y),C=[m[0],0,I];Su().normalize(C);var _=[w[0],0,b];Su().normalize(_);var T=Su().dot(C,_);if(Math.abs(T)>1e-4){var O=-2*Math.acos(Su().clampValue(T,-1,1))*Math.sign(v[0]-f[0])*l,D=c.viewUp,S=c.viewPlaneNormal,k=[0,0,0],M=[0,0,0];Su().cross(D,S,k),Su().normalize(k),Su().cross(S,k,M),Su().normalize(M),Su().normalize(D),this.rotateCamera(s,h,M,O);var x=(f[1]-v[1])*l;this.rotateCamera(s,h,k,x),s.render()}}}]),o}(La);ae(xg,"toolName",void 0),xg.toolName="TrackballRotate";var Rg=xg;var Pg=J.utilities.transformWorldToIndex,Ag=function(e){pa(o,e);var t,n,r=(t=o,n=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,r=wa(t);if(n){var o=wa(this).constructor;e=Reflect.construct(r,arguments,o)}else e=r.apply(this,arguments);return ma(this,e)});function o(){var e,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{supportedInteractionTypes:["Mouse","Touch"],configuration:{shadow:!0,preventHandleOutsideImage:!1,getTextLines:Ng}};return oe(this,o),ae(ga(e=r.call(this,t,n)),"touchDragCallback",void 0),ae(ga(e),"mouseDragCallback",void 0),ae(ga(e),"editData",void 0),ae(ga(e),"eventDispatchDetail",void 0),ae(ga(e),"isDrawing",void 0),ae(ga(e),"isHandleOutsideImage",void 0),ae(ga(e),"addNewAnnotation",(function(t){var n=t.detail,r=n.currentPoints,o=n.element,a=r.world,i=(0,J.getEnabledElement)(o),l=i.viewport,s=i.renderingEngine;e.isDrawing=!0;var c=l.getCamera(),d=c.viewPlaneNormal,u=c.viewUp,v=e.getReferencedImageId(l,a,d,u),f=l.getFrameOfReferenceUID(),g={invalidated:!0,highlighted:!0,metadata:{toolName:e.getToolName(),viewPlaneNormal:Lr(d),viewUp:Lr(u),FrameOfReferenceUID:f,referencedImageId:v},data:{label:"",handles:{points:[Lr(a)]},cachedStats:{}}};rt(g,o);var h=ud(o,e.getToolName());return e.editData={annotation:g,newAnnotation:!0,viewportIdsToRender:h},e._activateModify(o),gs(o),t.preventDefault(),ca(s,h),g})),ae(ga(e),"_endCallback",(function(t){var n=t.detail.element,r=e.editData,o=r.annotation,a=r.viewportIdsToRender,i=r.newAnnotation,l=(0,J.getEnabledElement)(n),s=l.renderingEngine,c=l.viewportId;if(e.eventDispatchDetail={viewportId:c,renderingEngineId:s.id},e._deactivateModify(n),fs(n),e.editData=null,e.isDrawing=!1,e.isHandleOutsideImage&&e.configuration.preventHandleOutsideImage&&at(o.annotationUID),ca(s,a),i){var d=Q.ANNOTATION_COMPLETED,u={annotation:o};(0,J.triggerEvent)(J.eventTarget,d,u)}})),ae(ga(e),"_dragCallback",(function(t){e.isDrawing=!0;var n=t.detail,r=n.currentPoints,o=n.element,a=r.world,i=e.editData,l=i.annotation,s=i.viewportIdsToRender;l.data.handles.points[0]=Lr(a),l.invalidated=!0;var c=(0,J.getEnabledElement)(o).renderingEngine;ca(c,s)})),ae(ga(e),"cancel",(function(t){if(e.isDrawing){e.isDrawing=!1,e._deactivateModify(t),fs(t);var n=e.editData,r=n.annotation,o=n.viewportIdsToRender,a=n.newAnnotation,i=r.data;r.highlighted=!1,i.handles.activeHandleIndex=null;var l=(0,J.getEnabledElement)(t).renderingEngine;if(ca(l,o),a){var s=Q.ANNOTATION_COMPLETED,c={annotation:r};(0,J.triggerEvent)(J.eventTarget,s,c)}return e.editData=null,r.annotationUID}})),ae(ga(e),"_activateModify",(function(t){Ke.isInteractingWithTool=!0,t.addEventListener(Q.MOUSE_UP,e._endCallback),t.addEventListener(Q.MOUSE_DRAG,e._dragCallback),t.addEventListener(Q.MOUSE_CLICK,e._endCallback),t.addEventListener(Q.TOUCH_END,e._endCallback),t.addEventListener(Q.TOUCH_DRAG,e._dragCallback),t.addEventListener(Q.TOUCH_TAP,e._endCallback)})),ae(ga(e),"_deactivateModify",(function(t){Ke.isInteractingWithTool=!1,t.removeEventListener(Q.MOUSE_UP,e._endCallback),t.removeEventListener(Q.MOUSE_DRAG,e._dragCallback),t.removeEventListener(Q.MOUSE_CLICK,e._endCallback),t.removeEventListener(Q.TOUCH_END,e._endCallback),t.removeEventListener(Q.TOUCH_DRAG,e._dragCallback),t.removeEventListener(Q.TOUCH_TAP,e._endCallback)})),ae(ga(e),"renderAnnotation",(function(t,n){var r,o,a=!1,i=t.viewport,l=i.element,s=nt(e.getToolName(),l);if(null===(r=s)||void 0===r||!r.length)return a;if(null===(o=s=e.filterInteractableAnnotationsForElement(l,s))||void 0===o||!o.length)return a;for(var c=e.getTargetId(i),d=i.getRenderingEngine(),u={toolGroupId:e.toolGroupId,toolName:e.getToolName(),viewportId:t.viewport.id},v=function(){var r=s[f],o=r.annotationUID,l=r.data,v=l.handles.points[0],g=i.worldToCanvas(v);u.annotationUID=o;var h=e.getStyle("color",u,r);if(l.cachedStats[c]&&null!=l.cachedStats[c].value){if(r.invalidated&&(e._calculateCachedStats(r,d,t),i instanceof J.VolumeViewport)){var p=r.metadata.referencedImageId;for(var m in l.cachedStats)m.startsWith("imageId")&&d.getStackViewports().find((function(e){var t=J.utilities.imageIdToURI(p),n=e.hasImageURI(t),r=J.utilities.imageIdToURI(e.getCurrentImageId());return n&&r!==t}))&&delete l.cachedStats[m]}}else l.cachedStats[c]={Modality:null,index:null,value:null},e._calculateCachedStats(r,d,t);if(!i.getRenderingEngine())return console.warn("Rendering Engine has been destroyed"),{v:a};Xs(n,o,"0",[g],{color:h}),a=!0;var w=e.getLinkedTextBoxStyle(u,r);if(!w.visibility)return"continue";var E=e.configuration.getTextLines(l,c);if(E){var y=[g[0]+6,g[1]-6];tc(n,o,"0",E,[y[0],y[1]],w)}},f=0;f<s.length;f++){var g=v();if("continue"!==g&&"object"===ee(g))return g.v}return a})),e}return re(o,[{key:"isPointNearTool",value:function(){return!1}},{key:"toolSelectedCallback",value:function(){}},{key:"getHandleNearImagePoint",value:function(e,t,n,r){var o=(0,J.getEnabledElement)(e).viewport,a=t.data.handles.points[0],i=o.worldToCanvas(a);if(!0==xs.vec2.distance(n,i)<r)return a}},{key:"handleSelectedCallback",value:function(e,t){var n=e.detail.element;t.highlighted=!0;var r=ud(n,this.getToolName());this.editData={annotation:t,viewportIdsToRender:r},this._activateModify(n),gs(n);var o=(0,J.getEnabledElement)(n).renderingEngine;ca(o,r),e.preventDefault()}},{key:"_calculateCachedStats",value:function(e,t,n){for(var r=e.data,o=n.viewportId,a=n.renderingEngineId,i=n.viewport,l=r.handles.points[0],s=r.cachedStats,c=Object.keys(s),d=0;d<c.length;d++){var u=c[d],v={isPreScaled:kd(i,u),isSuvScaled:this.isSuvScaled(i,u,e.metadata.referencedImageId)},f=this.getTargetIdImage(u,t);if(f){var g=f.dimensions,h=f.imageData,p=f.metadata,m="getScalarData"in f?f.getScalarData():f.scalarData,w=p.Modality,E=Pg(h,l);if(E[0]=Math.round(E[0]),E[1]=Math.round(E[1]),E[2]=Math.round(E[2]),J.utilities.indexWithinDimensions(E,g)){this.isHandleOutsideImage=!1;var y=g[0],I=g[0]*g[1],b=m[E[2]*I+E[1]*y+E[0]];if(u.startsWith("imageId:")){var C=u.split("imageId:")[1],_=J.utilities.imageIdToURI(C),T=J.utilities.getViewportsWithImageURI(_,a)[0];E[2]=T.getCurrentImageIdIndex()}var O=Sd(w,e.metadata.referencedImageId,v);s[u]={index:E,value:b,Modality:w,modalityUnit:O}}else this.isHandleOutsideImage=!0,s[u]={index:E,Modality:w};e.invalidated=!1;var D=Q.ANNOTATION_MODIFIED,S={annotation:e,viewportId:o,renderingEngineId:a};(0,J.triggerEvent)(J.eventTarget,D,S)}}return s}}]),o}(Id);function Ng(e,t){var n=e.cachedStats[t],r=n.index,o=n.value,a=n.modalityUnit;if(void 0!==o){var i=[];return i.push("(".concat(r[0],", ").concat(r[1],", ").concat(r[2],")")),i.push("".concat(o.toFixed(2)," ").concat(a)),i}}ae(Ag,"toolName",void 0),Ag.toolName="Probe";var Lg=Ag;var Ug=function(e){pa(o,e);var t,n,r=(t=o,n=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,r=wa(t);if(n){var o=wa(this).constructor;e=Reflect.construct(r,arguments,o)}else e=r.apply(this,arguments);return ma(this,e)});function o(){var e,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{supportedInteractionTypes:["Mouse","Touch"],configuration:{shadow:!0,preventHandleOutsideImage:!1,getTextLines:Vg}};return oe(this,o),ae(ga(e=r.call(this,t,n)),"touchDragCallback",void 0),ae(ga(e),"mouseDragCallback",void 0),ae(ga(e),"editData",void 0),ae(ga(e),"eventDispatchDetail",void 0),ae(ga(e),"isDrawing",void 0),ae(ga(e),"isHandleOutsideImage",void 0),ae(ga(e),"postMouseDownCallback",(function(t){var n=t.detail,r=n.currentPoints,o=n.element,a=r.world,i=(0,J.getEnabledElement)(o),l=i.viewport,s=i.renderingEngine;e.isDrawing=!0;var c=l.getCamera(),d=c.viewPlaneNormal,u=c.viewUp,v=e.getReferencedImageId(l,a,d,u),f={invalidated:!0,highlighted:!0,isVisible:!0,metadata:{toolName:e.getToolName(),viewPlaneNormal:Lr(d),viewUp:Lr(u),FrameOfReferenceUID:l.getFrameOfReferenceUID(),referencedImageId:v},data:{label:"",handles:{points:[Lr(a)]},cachedStats:{}}},g=ud(o,e.getToolName());return e.editData={annotation:f,newAnnotation:!0,viewportIdsToRender:g},e._activateModify(o),gs(o),t.preventDefault(),ca(s,g),f})),ae(ga(e),"postTouchStartCallback",(function(t){return e.postMouseDownCallback(t)})),ae(ga(e),"renderAnnotation",(function(t,n){var r=!1,o=t.viewport;if(!e.editData)return r;var a=e.filterInteractableAnnotationsForElement(o.element,[e.editData.annotation]);if(null==a||!a.length)return r;var i=e.getTargetId(o),l=o.getRenderingEngine(),s={toolGroupId:e.toolGroupId,toolName:e.getToolName(),viewportId:t.viewport.id},c=e.editData.annotation,d=c.annotationUID,u=c.data,v=u.handles.points[0],f=o.worldToCanvas(v);s.annotationUID=d;var g=e.getStyle("color",s,c);if(kd(o,i),e.isSuvScaled(o,i,c.metadata.referencedImageId),u.cachedStats[i]&&null!=u.cachedStats[i].value?c.invalidated&&e._calculateCachedStats(c,l,t):(u.cachedStats[i]={Modality:null,index:null,value:null},e._calculateCachedStats(c,l,t)),!o.getRenderingEngine())return console.warn("Rendering Engine has been destroyed"),r;Xs(n,d,"0",[f],{color:g}),r=!0;var h=e.configuration.getTextLines(u,i);if(h){var p=[f[0]+6,f[1]-6];tc(n,d,"0",h,[p[0],p[1]],e.getLinkedTextBoxStyle(s,c))}return r})),e}return re(o)}(Lg);function Vg(e,t){var n=e.cachedStats[t],r=n.index,o=n.value,a=n.modalityUnit;if(void 0!==o){var i=[];return i.push("(".concat(r[0],", ").concat(r[1],", ").concat(r[2],")")),i.push("".concat(o.toFixed(2)," ").concat(a)),i}}ae(Ug,"toolName",void 0),Ug.toolName="DragProbe";var jg=Ug;var Bg=function(e){pa(o,e);var t,n,r=(t=o,n=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,r=wa(t);if(n){var o=wa(this).constructor;e=Reflect.construct(r,arguments,o)}else e=r.apply(this,arguments);return ma(this,e)});function o(){var e,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{supportedInteractionTypes:["Mouse","Touch"]};return oe(this,o),ae(ga(e=r.call(this,t,n)),"_getImageDynamicRangeFromMiddleSlice",(function(t,n){var r,o,a=Math.floor(n[2]/2),i=n[0]*n[1];t instanceof Float32Array?(r=4,o=Float32Array):t instanceof Uint8Array?(r=1,o=Uint8Array):t instanceof Uint16Array?(r=2,o=Uint16Array):t instanceof Int16Array&&(r=2,o=Int16Array);var l=new o(t.buffer,a*i*r,i),s=e._getMinMax(l,i);return s.max-s.min})),e}return re(o,[{key:"touchDragCallback",value:function(e){this.mouseDragCallback(e)}},{key:"mouseDragCallback",value:function(e){var t,n,r,o,a,i,l=e.detail,s=l.element,c=l.deltaPoints,d=(0,J.getEnabledElement)(s),u=d.renderingEngine,v=d.viewport,f=!1,g=v.getProperties();if(v instanceof J.VolumeViewport){t=this.getTargetId(v).split("volumeId:")[1],i=J.utilities.getViewportsWithVolumeId(t,u.id);var h=g.voiRange;n=h.lower,r=h.upper;var p=J.cache.getVolume(t);if(!p)throw new Error("Volume not found "+t);o=p.metadata.Modality,f=p.scaling&&Object.keys(p.scaling).length>0}else{if(!g.voiRange)throw new Error("Viewport is not a valid type");var m,w;o=v.modality;var E=g.voiRange;n=E.lower,r=E.upper;var y=((null===(m=v.getImageData)||void 0===m?void 0:m.call(v))||{}).preScale,I=void 0===y?{scaled:!1}:y;f=I.scaled&&void 0!==(null===(w=I.scalingParameters)||void 0===w?void 0:w.suvbw)}a="PT"===o?this.getPTScaledNewRange({deltaPointsCanvas:c.canvas,lower:n,upper:r,clientHeight:s.clientHeight,isPreScaled:f,viewport:v,volumeId:t}):this.getNewRange({viewport:v,deltaPointsCanvas:c.canvas,volumeId:t,lower:n,upper:r}),v.setProperties({voiRange:a}),v.render(),v instanceof J.VolumeViewport&&i.forEach((function(e){v!==e&&e.render()}))}},{key:"getPTScaledNewRange",value:function(e){var t,n=e.deltaPointsCanvas,r=e.lower,o=e.upper,a=e.clientHeight,i=e.viewport,l=e.volumeId,s=e.isPreScaled;return t=s?5/a:this._getMultiplierFromDynamicRange(i,l)||4,o-=n[1]*t,{lower:r,upper:o=s?Math.max(o,.1):o}}},{key:"getNewRange",value:function(e){var t=e.viewport,n=e.deltaPointsCanvas,r=e.volumeId,o=e.lower,a=e.upper,i=this._getMultiplierFromDynamicRange(t,r)||4,l=n[0]*i,s=n[1]*i,c=J.utilities.windowLevel.toWindowLevel(o,a),d=c.windowWidth,u=c.windowCenter;return d+=l,u+=s,d=Math.max(d,1),J.utilities.windowLevel.toLowHighRange(d,u)}},{key:"_getMultiplierFromDynamicRange",value:function(e,t){var n;if(t){var r,o=J.cache.getVolume(t),a=o.dimensions,i=o.getScalarData(),l=this._getImageDynamicRangeFromMiddleSlice(i,a),s=null==o||null===(r=o.metadata)||void 0===r?void 0:r.BitsStored,c=s?Math.pow(2,s):1/0;n=Math.min(l,c)}else n=this._getImageDynamicRangeFromViewport(e);var d=n/1024,u=4;return d>1&&(u=Math.round(d)),u}},{key:"_getImageDynamicRangeFromViewport",value:function(e){var t,n,r=e.getImageData().imageData,o=r.getDimensions();if(r.getRange)return r.getRange();if(t=r.getScalarData?r.getScalarData():r.getPointData().getScalars(),1!==o[2])return this._getImageDynamicRangeFromMiddleSlice(t,o);if(t.getRange)n=t.getRange();else{var a=this._getMinMax(t,t.length);n=[a.min,a.max]}return n[1]-n[0]}},{key:"_getMinMax",value:function(e,t){for(var n=1/0,r=-1/0,o=0;o<t;o++){var a=e[o];a<n&&(n=a),a>r&&(r=a)}return{max:r,min:n}}}]),o}(La);ae(Bg,"toolName",void 0),Bg.toolName="WindowLevel";var Wg=Bg;var Fg=function(e){pa(o,e);var t,n,r=(t=o,n=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,r=wa(t);if(n){var o=wa(this).constructor;e=Reflect.construct(r,arguments,o)}else e=r.apply(this,arguments);return ma(this,e)});function o(){var e,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{supportedInteractionTypes:["Mouse","Touch"],configuration:{zoomToCenter:!1,minZoomScale:.1,maxZoomScale:30,pinchToZoom:!0,pan:!0,invert:!1}};return oe(this,o),ae(ga(e=r.call(this,t,n)),"touchDragCallback",void 0),ae(ga(e),"mouseDragCallback",void 0),ae(ga(e),"initialMousePosWorld",void 0),ae(ga(e),"dirVec",void 0),ae(ga(e),"preMouseDownCallback",(function(t){var n=t.detail,r=n.element,o=n.currentPoints.world,a=(0,J.getEnabledElement)(r).viewport.getCamera().focalPoint;e.initialMousePosWorld=o;var i=xs.vec3.fromValues(a[0]-o[0],a[1]-o[1],a[2]-o[2]);return i=xs.vec3.normalize(xs.vec3.create(),i),e.dirVec=i,!1})),ae(ga(e),"preTouchStartCallback",(function(t){if(!e.configuration.pinchToZoom)return e.preMouseDownCallback(t)})),ae(ga(e),"_dragParallelProjection",(function(t,n,r){var o=arguments.length>3&&void 0!==arguments[3]&&arguments[3],a=t.detail,i=a.element,l=a.deltaPoints,s=o?t.detail.deltaDistance.canvas:l.canvas[1],c=[i.clientWidth,i.clientHeight],d=r.parallelScale,u=r.focalPoint,v=r.position,f=s*(5/c[1])*(e.configuration.invert?-1:1),g=(1-f)*d,h=u,p=v;if(!e.configuration.zoomToCenter){var m=xs.vec3.distance(u,e.initialMousePosWorld);p=xs.vec3.scaleAndAdd(xs.vec3.create(),v,e.dirVec,-m*f),h=xs.vec3.scaleAndAdd(xs.vec3.create(),u,e.dirVec,-m*f)}var w=n.getImageData(),E=[1,1,1];w&&(E=w.spacing);var y=e.configuration,I=y.minZoomScale,b=y.maxZoomScale,C=i.clientHeight*E[1]*.5,_=C/g,T=g,O=!1;w&&(_<I?(T=C/I,O=!0):_>=b&&(T=C/b,O=!0)),n.setCamera({parallelScale:T,focalPoint:O?u:h,position:O?v:p})})),ae(ga(e),"_dragPerspectiveProjection",(function(t,n,r){var o=arguments.length>3&&void 0!==arguments[3]&&arguments[3],a=t.detail,i=a.element,l=a.deltaPoints,s=o?t.detail.deltaDistance.canvas:l.canvas[1],c=[i.clientWidth,i.clientHeight],d=r.position,u=r.focalPoint,v=r.viewPlaneNormal,f=Su().distance2BetweenPoints(d,u),g=Math.sqrt(f)/c[1],h=[-v[0],-v[1],-v[2]],p=e.configuration.invert?s/g:s*g,m=p*h[0];d[0]+=m,u[0]+=m,m=p*h[1],d[1]+=m,u[1]+=m,m=p*h[2],d[2]+=m,u[2]+=m,n.setCamera({position:d,focalPoint:u})})),e.initialMousePosWorld=[0,0,0],e.dirVec=[0,0,0],e.configuration.pinchToZoom?e.touchDragCallback=e._pinchCallback.bind(ga(e)):e.touchDragCallback=e._dragCallback.bind(ga(e)),e.mouseDragCallback=e._dragCallback.bind(ga(e)),e}return re(o,[{key:"_pinchCallback",value:function(e){if(e.detail.currentPointsList.length>1){var t=e.detail,n=t.element,r=t.currentPoints,o=(0,J.getEnabledElement)(n).viewport,a=o.getCamera(),i=r.world,l=a.focalPoint;this.initialMousePosWorld=i;var s=xs.vec3.fromValues(l[0]-i[0],l[1]-i[1],l[2]-i[2]);s=xs.vec3.normalize(xs.vec3.create(),s),this.dirVec=s,a.parallelProjection?this._dragParallelProjection(e,o,a,!0):this._dragPerspectiveProjection(e,o,a,!0),o.render()}this.configuration.pan&&this._panCallback(e)}},{key:"_dragCallback",value:function(e){var t=e.detail.element,n=(0,J.getEnabledElement)(t).viewport,r=n.getCamera();r.parallelProjection?this._dragParallelProjection(e,n,r):this._dragPerspectiveProjection(e,n,r),n.render()}},{key:"_panCallback",value:function(e){var t=e.detail,n=t.element,r=t.deltaPoints,o=(0,J.getEnabledElement)(n),a=r.world,i=o.viewport.getCamera(),l=i.focalPoint,s=i.position,c=[s[0]-a[0],s[1]-a[1],s[2]-a[2]],d=[l[0]-a[0],l[1]-a[1],l[2]-a[2]];o.viewport.setCamera({focalPoint:d,position:c}),o.viewport.render()}}]),o}(La);ae(Fg,"toolName",void 0),Fg.toolName="Zoom";var Hg=Fg;var Gg=function(e){pa(o,e);var t,n,r=(t=o,n=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,r=wa(t);if(n){var o=wa(this).constructor;e=Reflect.construct(r,arguments,o)}else e=r.apply(this,arguments);return ma(this,e)});function o(){var e,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{supportedInteractionTypes:["Mouse","Touch"],configuration:{invert:!1,debounceIfNotLoaded:!0,loop:!1}};return oe(this,o),ae(ga(e=r.call(this,t,n)),"deltaY",void 0),e.deltaY=1,e}return re(o,[{key:"mouseDragCallback",value:function(e){this._dragCallback(e)}},{key:"touchDragCallback",value:function(e){this._dragCallback(e)}},{key:"_dragCallback",value:function(e){var t,n=e.detail,r=n.deltaPoints,o=n.viewportId,a=n.renderingEngineId,i=(0,J.getEnabledElementByIds)(o,a).viewport,l=this.getTargetId(i),s=this.configuration,c=s.debounceIfNotLoaded,d=s.invert,u=s.loop,v=r.canvas[1];i instanceof J.VolumeViewport&&(t=l.split("volumeId:")[1]);var f=this._getPixelPerImage(i),g=v+this.deltaY;if(f)if(Math.abs(g)>=f){var h=Math.round(g/f);Ps(i,{delta:d?-h:h,volumeId:t,debounceLoading:c,loop:u}),this.deltaY=g%f}else this.deltaY=g}},{key:"_getPixelPerImage",value:function(e){var t=e.element,n=e.getNumberOfSlices();return Math.max(2,t.offsetHeight/Math.max(n,8))}}]),o}(La);ae(Gg,"toolName",void 0),Gg.toolName="StackScroll";var qg=Gg;function zg(e,t){return 3===e[0].length?function(e,t){var n=dt(e,2),r=n[0],o=n[1],a=dt(t,2),i=a[0],l=a[1],s=xs.vec3.sub(xs.vec3.create(),o,r),c=xs.vec3.sub(xs.vec3.create(),i,l),d=xs.vec3.dot(s,c)/(xs.vec3.length(s)*xs.vec3.length(c));return 180*Math.acos(d)/Math.PI}(e,t):function(e,t){var n=dt(e,2),r=n[0],o=n[1],a=dt(t,2),i=a[0],l=a[1],s=xs.vec2.sub(xs.vec2.create(),o,r),c=xs.vec2.sub(xs.vec2.create(),i,l),d=xs.vec2.dot(s,c)/(xs.vec2.length(s)*xs.vec2.length(c));return Math.acos(d)*(180/Math.PI)}(e,t)}var Kg=function(e){pa(o,e);var t,n,r=(t=o,n=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,r=wa(t);if(n){var o=wa(this).constructor;e=Reflect.construct(r,arguments,o)}else e=r.apply(this,arguments);return ma(this,e)});function o(){var e,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{supportedInteractionTypes:["Mouse","Touch"]};return oe(this,o),ae(ga(e=r.call(this,t,n)),"touchDragCallback",void 0),ae(ga(e),"mouseDragCallback",void 0),e.touchDragCallback=e._dragCallback.bind(ga(e)),e.mouseDragCallback=e._dragCallback.bind(ga(e)),e}return re(o,[{key:"_dragCallback",value:function(e){var t=e.detail,n=t.element,r=t.currentPoints,o=t.startPoints,a=r.world,i=o.world,l=(0,J.getEnabledElement)(n).viewport,s=l.getCamera(),c=[.5*n.clientWidth,.5*n.clientHeight],d=l.canvasToWorld(c),u=zg([i,d],[d,a]),v=s.viewPlaneNormal,f=s.viewUp,g=xs.vec3.sub(xs.vec3.create(),d,i),h=xs.vec3.sub(xs.vec3.create(),d,a),p=xs.vec3.cross(xs.vec3.create(),g,h);if(xs.vec3.dot(v,p)>0&&(u=-u),!Number.isNaN(u)){if(l instanceof J.BaseVolumeViewport){var m=u*Math.PI/180,w=xs.mat4.identity(new Float32Array(16));xs.mat4.rotate(w,w,m,v);var E=xs.vec3.transformMat4(xs.vec3.create(),f,w);l.setCamera({viewUp:E})}else{var y=l.getProperties().rotation;l.setProperties({rotation:y+u})}l.render()}}}]),o}(La);ae(Kg,"toolName",void 0),Kg.toolName="PlanarRotate";var Yg=Kg;var Xg=function(e){pa(o,e);var t,n,r=(t=o,n=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,r=wa(t);if(n){var o=wa(this).constructor;e=Reflect.construct(r,arguments,o)}else e=r.apply(this,arguments);return ma(this,e)});function o(){var e,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{supportedInteractionTypes:["Mouse","Touch"],configuration:{invert:!1,debounceIfNotLoaded:!0,loop:!1}};return oe(this,o),ae(ga(e=r.call(this,t,n)),"_configuration",void 0),e}return re(o,[{key:"mouseWheelCallback",value:function(e){var t=e.detail,n=t.wheel,r=t.element,o=n.direction,a=this.configuration.invert,i=(0,J.getEnabledElement)(r).viewport,l=o*(a?-1:1),s=this.getTargetId(i).split("volumeId:")[1];Ps(i,{delta:l,debounceLoading:this.configuration.debounceIfNotLoaded,loop:this.configuration.loop,volumeId:s})}}]),o}(La);ae(Xg,"toolName",void 0),Xg.toolName="StackScrollMouseWheel";var Zg=Xg;var Jg={X:[1,0,0],Y:[0,1,0],Z:[0,0,1],CUSTOM:[]},$g=function(e){pa(o,e);var t,n,r=(t=o,n=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,r=wa(t);if(n){var o=wa(this).constructor;e=Reflect.construct(r,arguments,o)}else e=r.apply(this,arguments);return ma(this,e)});function o(){var e,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{supportedInteractionTypes:["Mouse","Touch"],configuration:{direction:Jg.Z,rotateIncrementDegrees:.5}};return oe(this,o),ae(ga(e=r.call(this,t,n)),"_configuration",void 0),e}return re(o,[{key:"mouseWheelCallback",value:function(e){var t=e.detail,n=t.element,r=t.wheel,o=(0,J.getEnabledElement)(n).viewport,a=this.configuration,i=a.direction,l=a.rotateIncrementDegrees,s=o.getCamera(),c=s.viewUp,d=s.position,u=s.focalPoint,v=r.direction,f=dt(u,3),g=f[0],h=f[1],p=f[2],m=dt(i,3),w=m[0],E=m[1],y=m[2],I=v*l,b=[0,0,0],C=[0,0,0],_=[0,0,0],T=xs.mat4.identity(new Float32Array(16));xs.mat4.translate(T,T,[g,h,p]),xs.mat4.rotate(T,T,I,[w,E,y]),xs.mat4.translate(T,T,[-g,-h,-p]),xs.vec3.transformMat4(b,d,T),xs.vec3.transformMat4(C,u,T),xs.mat4.identity(T),xs.mat4.rotate(T,T,I,[w,E,y]),xs.vec3.transformMat4(_,c,T),o.setCamera({position:b,viewUp:_,focalPoint:C}),o.render()}}]),o}(La);ae($g,"toolName",void 0),$g.toolName="VolumeRotateMouseWheel";var Qg=$g;var eh=function(e){pa(o,e);var t,n,r=(t=o,n=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,r=wa(t);if(n){var o=wa(this).constructor;e=Reflect.construct(r,arguments,o)}else e=r.apply(this,arguments);return ma(this,e)});function o(){var e,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{supportedInteractionTypes:["Mouse","Touch"],configuration:{targetViewportIds:[]}};return oe(this,o),ae(ga(e=r.call(this,t,n)),"_bounds",void 0),e}return re(o,[{key:"mouseClickCallback",value:function(e){var t=e.detail,n=t.element,r=t.currentPoints,o=(0,J.getEnabledElement)(n),a=o.viewport,i=o.renderingEngine,l=this.getTargetId(a);if(!l.startsWith("volumeId"))throw new Error("MIPJumpToClickTool: targetId is not a volumeId, you should only use MIPJumpToClickTool with a volumeId as the targetId");var s=l.split("volumeId:")[1],c=-1/0,d=ku(a,r.world,s,(function(e,t){if(e>c)return c=e,t}));if(d&&d.length){var u=this.configuration,v=u.targetViewportIds,f=u.toolGroupId;i.getViewports().filter((function(e){if((null==v?void 0:v.indexOf(e.id))>=0)return!0;var t=Fr(e.id,i.id);return!(!f||f!==(null==t?void 0:t.id))})).forEach((function(e){e instanceof J.VolumeViewport?Gf(e,d):console.warn("Cannot jump to specified world coordinates for a viewport that is not a VolumeViewport")}))}}}]),o}(La);ae(eh,"toolName",void 0),eh.toolName="MIPJumpToClickTool";var th=eh;var nh=J.utilities.transformWorldToIndex,rh=function(e){pa(o,e);var t,n,r=(t=o,n=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,r=wa(t);if(n){var o=wa(this).constructor;e=Reflect.construct(r,arguments,o)}else e=r.apply(this,arguments);return ma(this,e)});function o(){var e,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{supportedInteractionTypes:["Mouse","Touch"],configuration:{preventHandleOutsideImage:!1,getTextLines:oh}};return oe(this,o),ae(ga(e=r.call(this,t,n)),"touchDragCallback",void 0),ae(ga(e),"mouseDragCallback",void 0),ae(ga(e),"_throttledCalculateCachedStats",void 0),ae(ga(e),"editData",void 0),ae(ga(e),"isDrawing",void 0),ae(ga(e),"isHandleOutsideImage",void 0),ae(ga(e),"addNewAnnotation",(function(t){var n=t.detail,r=n.currentPoints,o=n.element,a=r.world,i=(0,J.getEnabledElement)(o),l=i.viewport,s=i.renderingEngine;gs(o),e.isDrawing=!0;var c=l.getCamera(),d=c.viewPlaneNormal,u=c.viewUp,v=e.getReferencedImageId(l,a,d,u),f=l.getFrameOfReferenceUID(),g={highlighted:!0,invalidated:!0,metadata:{toolName:e.getToolName(),viewPlaneNormal:Lr(d),viewUp:Lr(u),FrameOfReferenceUID:f,referencedImageId:v},data:{handles:{points:[Lr(a),Lr(a)],activeHandleIndex:null,textBox:{hasMoved:!1,worldPosition:[0,0,0],worldBoundingBox:{topLeft:[0,0,0],topRight:[0,0,0],bottomLeft:[0,0,0],bottomRight:[0,0,0]}}},label:"",cachedStats:{}}};rt(g,o);var h=ud(o,e.getToolName());return e.editData={annotation:g,viewportIdsToRender:h,handleIndex:1,movingTextBox:!1,newAnnotation:!0,hasMoved:!1},e._activateDraw(o),t.preventDefault(),ca(s,h),g})),ae(ga(e),"isPointNearTool",(function(e,t,n,r){var o=(0,J.getEnabledElement)(e).viewport,a=dt(t.data.handles.points,2),i=a[0],l=a[1],s=o.worldToCanvas(i),c=o.worldToCanvas(l),d={start:{x:s[0],y:s[1]},end:{x:c[0],y:c[1]}};return _d([d.start.x,d.start.y],[d.end.x,d.end.y],[n[0],n[1]])<=r})),ae(ga(e),"toolSelectedCallback",(function(t,n){var r=t.detail.element;n.highlighted=!0;var o=ud(r,e.getToolName());e.editData={annotation:n,viewportIdsToRender:o,movingTextBox:!1},e._activateModify(r),gs(r);var a=(0,J.getEnabledElement)(r).renderingEngine;ca(a,o),t.preventDefault()})),ae(ga(e),"_endCallback",(function(t){var n=t.detail.element,r=e.editData,o=r.annotation,a=r.viewportIdsToRender,i=r.newAnnotation,l=r.hasMoved,s=o.data;if(!i||l){s.handles.activeHandleIndex=null,e._deactivateModify(n),e._deactivateDraw(n),fs(n);var c=(0,J.getEnabledElement)(n).renderingEngine;if(e.isHandleOutsideImage&&e.configuration.preventHandleOutsideImage&&at(o.annotationUID),ca(c,a),i){var d=Q.ANNOTATION_COMPLETED,u={annotation:o};(0,J.triggerEvent)(J.eventTarget,d,u)}e.editData=null,e.isDrawing=!1}})),ae(ga(e),"_dragCallback",(function(t){e.isDrawing=!0;var n=t.detail,r=n.element,o=e.editData,a=o.annotation,i=o.viewportIdsToRender,l=o.handleIndex,s=o.movingTextBox,c=a.data;if(s){var d=n.deltaPoints.world,u=c.handles.textBox,v=u.worldPosition;v[0]+=d[0],v[1]+=d[1],v[2]+=d[2],u.hasMoved=!0}else if(void 0===l){var f=n.deltaPoints.world;c.handles.points.forEach((function(e){e[0]+=f[0],e[1]+=f[1],e[2]+=f[2]})),a.invalidated=!0}else{var g=n.currentPoints.world;c.handles.points[l]=Lr(g),a.invalidated=!0}e.editData.hasMoved=!0;var h=(0,J.getEnabledElement)(r).renderingEngine;ca(h,i)})),ae(ga(e),"cancel",(function(t){if(e.isDrawing){e.isDrawing=!1,e._deactivateDraw(t),e._deactivateModify(t),fs(t);var n=e.editData,r=n.annotation,o=n.viewportIdsToRender,a=n.newAnnotation,i=r.data;r.highlighted=!1,i.handles.activeHandleIndex=null;var l=(0,J.getEnabledElement)(t).renderingEngine;if(ca(l,o),a){var s=Q.ANNOTATION_COMPLETED,c={annotation:r};(0,J.triggerEvent)(J.eventTarget,s,c)}return e.editData=null,r.annotationUID}})),ae(ga(e),"_activateModify",(function(t){Ke.isInteractingWithTool=!0,t.addEventListener(Q.MOUSE_UP,e._endCallback),t.addEventListener(Q.MOUSE_DRAG,e._dragCallback),t.addEventListener(Q.MOUSE_CLICK,e._endCallback),t.addEventListener(Q.TOUCH_END,e._endCallback),t.addEventListener(Q.TOUCH_DRAG,e._dragCallback),t.addEventListener(Q.TOUCH_TAP,e._endCallback)})),ae(ga(e),"_deactivateModify",(function(t){Ke.isInteractingWithTool=!1,t.removeEventListener(Q.MOUSE_UP,e._endCallback),t.removeEventListener(Q.MOUSE_DRAG,e._dragCallback),t.removeEventListener(Q.MOUSE_CLICK,e._endCallback),t.removeEventListener(Q.TOUCH_END,e._endCallback),t.removeEventListener(Q.TOUCH_DRAG,e._dragCallback),t.removeEventListener(Q.TOUCH_TAP,e._endCallback)})),ae(ga(e),"_activateDraw",(function(t){Ke.isInteractingWithTool=!0,t.addEventListener(Q.MOUSE_UP,e._endCallback),t.addEventListener(Q.MOUSE_DRAG,e._dragCallback),t.addEventListener(Q.MOUSE_MOVE,e._dragCallback),t.addEventListener(Q.MOUSE_CLICK,e._endCallback),t.addEventListener(Q.TOUCH_END,e._endCallback),t.addEventListener(Q.TOUCH_DRAG,e._dragCallback),t.addEventListener(Q.TOUCH_TAP,e._endCallback)})),ae(ga(e),"_deactivateDraw",(function(t){Ke.isInteractingWithTool=!1,t.removeEventListener(Q.MOUSE_UP,e._endCallback),t.removeEventListener(Q.MOUSE_DRAG,e._dragCallback),t.removeEventListener(Q.MOUSE_MOVE,e._dragCallback),t.removeEventListener(Q.MOUSE_CLICK,e._endCallback),t.removeEventListener(Q.TOUCH_END,e._endCallback),t.removeEventListener(Q.TOUCH_DRAG,e._dragCallback),t.removeEventListener(Q.TOUCH_TAP,e._endCallback)})),ae(ga(e),"renderAnnotation",(function(t,n){var r,o,a=!1,i=t.viewport,l=i.element,s=nt(e.getToolName(),l);if(null===(r=s)||void 0===r||!r.length)return a;if(null===(o=s=e.filterInteractableAnnotationsForElement(l,s))||void 0===o||!o.length)return a;for(var c=e.getTargetId(i),d=i.getRenderingEngine(),u={toolGroupId:e.toolGroupId,toolName:e.getToolName(),viewportId:t.viewport.id},v=0;v<s.length;v++){var f=s[v],g=f.annotationUID,h=f.data,p=h.handles,m=p.points,w=p.activeHandleIndex;u.annotationUID=g;var E=e.getStyle("lineWidth",u,f),y=e.getStyle("lineDash",u,f),I=e.getStyle("color",u,f),b=e.getStyle("shadow",u,f),C=m.map((function(e){return i.worldToCanvas(e)})),_=void 0;if(h.cachedStats[c]&&null!=h.cachedStats[c].unit?f.invalidated&&e._throttledCalculateCachedStats(f,d,t):(h.cachedStats[c]={length:null,unit:null},e._calculateCachedStats(f,d,t)),Pe(g)){ve(f)||e.editData||null===w||(_=[C[w]]),_&&Xs(n,g,"0",C,{color:I,lineDash:y,lineWidth:E});var T="".concat(g,"-line");if(Zs(n,g,"1",C[0],C[1],{color:I,width:E,lineDash:y,shadow:b},T),a=!0,!i.getRenderingEngine())return console.warn("Rendering Engine has been destroyed"),a;var O=e.getLinkedTextBoxStyle(u,f);if(O.visibility){var D=e.configuration.getTextLines(h,c);if(!h.handles.textBox.hasMoved){var S=Od(C);h.handles.textBox.worldPosition=i.canvasToWorld(S)}var k=i.worldToCanvas(h.handles.textBox.worldPosition),M=rc(n,g,"1",D,k,C,{},O),x=M.x,R=M.y,P=M.width,A=M.height;h.handles.textBox.worldBoundingBox={topLeft:i.canvasToWorld([x,R]),topRight:i.canvasToWorld([x+P,R]),bottomLeft:i.canvasToWorld([x,R+A]),bottomRight:i.canvasToWorld([x+P,R+A])}}else h.handles.textBox={hasMoved:!1,worldPosition:[0,0,0],worldBoundingBox:{topLeft:[0,0,0],topRight:[0,0,0],bottomLeft:[0,0,0],bottomRight:[0,0,0]}}}}return a})),e._throttledCalculateCachedStats=fc(e._calculateCachedStats,100,{trailing:!0}),e}return re(o,[{key:"handleSelectedCallback",value:function(e,t,n){var r=e.detail.element,o=t.data;t.highlighted=!0;var a,i=!1;n.worldPosition?i=!0:a=o.handles.points.findIndex((function(e){return e===n}));var l=ud(r,this.getToolName());this.editData={annotation:t,viewportIdsToRender:l,handleIndex:a,movingTextBox:i},this._activateModify(r),gs(r);var s=(0,J.getEnabledElement)(r).renderingEngine;ca(s,l),e.preventDefault()}},{key:"_calculateLength",value:function(e,t){var n=e[0]-t[0],r=e[1]-t[1],o=e[2]-t[2];return Math.sqrt(n*n+r*r+o*o)}},{key:"_calculateCachedStats",value:function(e,t,n){for(var r=e.data,o=n.viewportId,a=n.renderingEngineId,i=r.handles.points[0],l=r.handles.points[1],s=r.cachedStats,c=Object.keys(s),d=0;d<c.length;d++){var u=c[d],v=this.getTargetIdImage(u,t);if(v){var f=v.imageData,g=v.dimensions,h=yc(v),p=this._calculateLength(i,l)/h,m=nh(f,i),w=nh(f,l);this._isInsideVolume(m,w,g)?this.isHandleOutsideImage=!1:this.isHandleOutsideImage=!0,s[u]={length:p,unit:wc(0,v)}}}e.invalidated=!1;var E=Q.ANNOTATION_MODIFIED,y={annotation:e,viewportId:o,renderingEngineId:a};return(0,J.triggerEvent)(J.eventTarget,E,y),s}},{key:"_isInsideVolume",value:function(e,t,n){return J.utilities.indexWithinDimensions(e,n)&&J.utilities.indexWithinDimensions(t,n)}}]),o}(Id);function oh(e,t){var n=e.cachedStats[t],r=n.length,o=n.unit;if(null!=r&&!isNaN(r))return["".concat(Oc(r)," ").concat(o)]}ae(rh,"toolName",void 0),rh.toolName="Length";var ah=rh,ih=y(847),lh=y.n(ih);var sh=J.CONSTANTS.RENDERING_DEFAULTS;function ch(){return"rgb(0, 200, 0)"}function dh(){return!0}function uh(){return!0}function vh(){return!0}var fh=function(e){pa(o,e);var t,n,r=(t=o,n=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,r=wa(t);if(n){var o=wa(this).constructor;e=Reflect.construct(r,arguments,o)}else e=r.apply(this,arguments);return ma(this,e)});function o(){var e,t,n,a,i,l=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},s=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{supportedInteractionTypes:["Mouse"],configuration:{shadow:!0,viewportIndicators:!0,autoPan:{enabled:!1,panSize:10},referenceLinesCenterGapRadius:20,filterActorUIDsToSetSlabThickness:[],slabThicknessBlendMode:J.Enums.BlendModes.MAXIMUM_INTENSITY_BLEND,mobile:{enabled:!1,opacity:.8,handleRadius:9}}};return oe(this,o),ae(ga(i=r.call(this,l,s)),"toolCenter",[0,0,0]),ae(ga(i),"_getReferenceLineColor",void 0),ae(ga(i),"_getReferenceLineControllable",void 0),ae(ga(i),"_getReferenceLineDraggableRotatable",void 0),ae(ga(i),"_getReferenceLineSlabThicknessControlsOn",void 0),ae(ga(i),"editData",void 0),ae(ga(i),"initializeViewport",(function(e){var t=e.renderingEngineId,n=e.viewportId,r=(0,J.getEnabledElementByIds)(n,t),o=r.FrameOfReferenceUID,a=r.viewport,l=a.element,s=a.getCamera(),c=s.position,d=s.focalPoint,u=s.viewPlaneNormal,v=i._getAnnotations(r);return(v=i.filterInteractableAnnotationsForElement(l,v)).length&&at(v[0].annotationUID),rt({highlighted:!1,metadata:{cameraPosition:Lr(c),cameraFocalPoint:Lr(d),FrameOfReferenceUID:o,toolName:i.getToolName()},data:{handles:{rotationPoints:[],slabThicknessPoints:[],toolCenter:i.toolCenter},activeOperation:null,activeViewportIds:[],viewportId:n}},l),{normal:u,point:a.canvasToWorld([a.canvas.clientWidth/2,a.canvas.clientHeight/2])}})),ae(ga(i),"_getViewportsInfo",(function(){return fa(i.toolGroupId).viewportsInfo})),ae(ga(i),"computeToolCenter",(function(e){if(!e.length||1===e.length)throw new Error("For crosshairs to operate, at least two viewports must be given.");var t=dt(e,3),n=t[0],r=t[1],o=t[2],a=i.initializeViewport(n),l=a.normal,s=a.point,c=i.initializeViewport(r),d=c.normal,u=c.point,v=[0,0,0],f=xs.vec3.create();if(o){var g=i.initializeViewport(o);v=g.normal,f=g.point}else xs.vec3.add(f,s,u),xs.vec3.scale(f,f,.5),xs.vec3.cross(v,l,d);var h=J.utilities.planar.planeEquation(l,s),p=J.utilities.planar.planeEquation(d,u),m=J.utilities.planar.planeEquation(v,f);i.toolCenter=J.utilities.planar.threePlaneIntersection(h,p,m);var w=(0,J.getEnabledElementByIds)(e[0].viewportId,e[0].renderingEngineId).renderingEngine;ca(w,e.map((function(e){return e.viewportId})))})),ae(ga(i),"addNewAnnotation",(function(e){var t=e.detail,n=t.element,r=t.currentPoints.world,o=(0,J.getEnabledElement)(n),a=o.viewport;i._jump(o,r);for(var l=i._getAnnotations(o),s=i.filterInteractableAnnotationsForElement(a.element,l),c=s[0].data,d=c.handles.rotationPoints,u=[],v=0;v<d.length-1;++v){var f=d[v][1],g=i._getReferenceLineControllable(f.id),h=i._getReferenceLineDraggableRotatable(f.id);g&&h&&(u.push(f.id),v++)}return c.activeViewportIds=[].concat(u),c.handles.activeOperation=1,e.preventDefault(),gs(n),i._activateModify(n),s[0]})),ae(ga(i),"cancel",(function(){console.log("Not implemented yet")})),ae(ga(i),"handleSelectedCallback",(function(e,t){var n=e.detail.element;t.highlighted=!0,i._activateModify(n),gs(n),e.preventDefault()})),ae(ga(i),"isPointNearTool",(function(e,t,n,r){return!!i._pointNearTool(e,t,n,6)})),ae(ga(i),"toolSelectedCallback",(function(e,t,n){var r=e.detail.element;t.highlighted=!0,i._activateModify(r),gs(r),e.preventDefault()})),ae(ga(i),"onCameraModified",(function(e){var t,n=e.detail.element,r=(0,J.getEnabledElement)(n),o=r.renderingEngine,a=r.viewport,l=i._getAnnotations(r),s=i.filterInteractableAnnotationsForElement(n,l)[0];if(s){var c=a.getCamera(),d=s.metadata.cameraPosition,u=[0,0,0];Su().subtract(c.position,d,u);var v=s.metadata.cameraFocalPoint,f=[0,0,0];Su().subtract(c.focalPoint,v,f),s.metadata.cameraPosition=Lr(c.position),s.metadata.cameraFocalPoint=Lr(c.focalPoint);var g=i._getReferenceLineControllable(a.id),h=i._getReferenceLineDraggableRotatable(a.id);if(!J.utilities.isEqual(c.position,d,.001)&&g&&h){var p=!1;J.utilities.isEqual(u,f,.001)||(p=!0);var m=Math.abs(Su().dot(u,c.viewPlaneNormal))<.01;p||m||(i.toolCenter[0]+=u[0],i.toolCenter[1]+=u[1],i.toolCenter[2]+=u[2])}null!==(t=i.configuration.autoPan)&&void 0!==t&&t.enabled&&Fr(a.id,o.id).getViewportIds().filter((function(e){return e!==a.id})).forEach((function(e){i._autoPanViewportIfNecessary(e,o)}));var w=ud(n,i.getToolName(),!1);ca(o,w)}})),ae(ga(i),"mouseMoveCallback",(function(e,t){for(var n=e.detail,r=n.element,o=n.currentPoints.canvas,a=!1,l=0;l<t.length;l++){var s=t[l];if(!ve(s)){var c=s.data,d=s.highlighted;if(c.handles){var u=c.handles.activeOperation,v=c.activeViewportIds&&c.activeViewportIds.length>0?Lr(c.activeViewportIds):[];c.activeViewportIds=[],c.handles.activeOperation=null;var f;(f=!!i.getHandleNearImagePoint(r,s,o,6)||i._pointNearTool(r,s,o,6))&&!d||!f&&d?(s.highlighted=!d,a=!0):c.handles.activeOperation===u&&i._areViewportIdArraysEqual(c.activeViewportIds,v)||(a=!0)}}}return a})),ae(ga(i),"filterInteractableAnnotationsForElement",(function(e,t){if(!t||!t.length)return[];var n=(0,J.getEnabledElement)(e).viewportId;return t.filter((function(e){return e.data.viewportId===n}))})),ae(ga(i),"renderAnnotation",(function(e,t){var n=!1,r=e.viewport,o=e.renderingEngine,a=r.element,l=i._getAnnotations(e),s=r.getCamera(),c=i.filterInteractableAnnotationsForElement(a,l)[0];if(null==l||!l.length||null==c||!c.data)return n;var d=c.annotationUID,u=r.canvas,v=u.clientWidth,f=u.clientHeight,g=Math.sqrt(v*v+f*f),h=Math.min(v,f),p=c.data,m=r.worldToCanvas(i.toolCenter),w=i._filterAnnotationsByUniqueViewportOrientations(e,l),E=[],y=[0,0,v,f];w.forEach((function(e){var t=e.data;t.handles.toolCenter=i.toolCenter;var n=o.getViewport(t.viewportId),a=n.getCamera(),l=i._getReferenceLineControllable(n.id),c=i._getReferenceLineDraggableRotatable(n.id),d=i._getReferenceLineSlabThicknessControlsOn(n.id),u=n.canvas,v=u.clientWidth,f=u.clientHeight,p=Math.sqrt(v*v+f*f),I=[.5*v,.5*f],b=n.canvasToWorld(I),C=[0,0,0];Su().cross(s.viewPlaneNormal,a.viewPlaneNormal,C),Su().normalize(C),Su().multiplyScalar(C,p);var _=[0,0,0];Su().add(b,C,_);var T=[0,0,0];Su().subtract(b,C,T);var O=r.worldToCanvas(_),D=r.worldToCanvas(b),S=xs.vec2.create();xs.vec2.subtract(S,O,D),xs.vec2.normalize(S,S);var k=xs.vec2.create();xs.vec2.scale(k,S,100*g);var M=xs.vec2.create();xs.vec2.scale(M,S,.4*h);var x=xs.vec2.create();xs.vec2.scale(x,S,.2*h);var R=xs.vec2.create(),P=i.configuration.referenceLinesCenterGapRadius;xs.vec2.scale(R,S,2===w.length?P:0);var A=xs.vec2.create(),N=xs.vec2.create(),L=xs.vec2.create(),U=xs.vec2.create(),V=xs.vec2.clone(m);c&&l||(V=xs.vec2.clone(D)),xs.vec2.add(A,V,R),xs.vec2.add(N,V,k),xs.vec2.subtract(L,V,R),xs.vec2.subtract(U,V,k),uu(A,N,y),uu(L,U,y);var j=xs.vec2.create();xs.vec2.subtract(j,m,M);var B=xs.vec2.create();xs.vec2.add(B,m,M);var W=xs.vec2.clone(m);!c&&d&&(W=xs.vec2.clone(D));var F=Lr(i.toolCenter);!c&&d&&(F=Lr(b));var H=[0,0,0];Su().subtract(_,T,H),Su().normalize(H);var G=s.viewPlaneNormal,q=lh().buildFromDegree().rotate(90,G).matrix,z=[0,0,0];xs.vec3.transformMat4(z,H,q);var K=n.getSlabThickness(),Y=[].concat(z);Su().multiplyScalar(Y,K);var X=[0,0,0];Su().add(F,Y,X);var Z=r.worldToCanvas(X),J=xs.vec2.create();xs.vec2.subtract(J,W,Z);var $=xs.vec2.create();xs.vec2.subtract($,W,k),xs.vec2.add($,$,J);var Q=xs.vec2.create();xs.vec2.add(Q,W,k),xs.vec2.add(Q,Q,J),uu($,Q,y);var ee=xs.vec2.create();xs.vec2.add(ee,W,k),xs.vec2.subtract(ee,ee,J);var te=xs.vec2.create();xs.vec2.subtract(te,W,k),xs.vec2.subtract(te,te,J),uu(ee,te,y);var ne=xs.vec2.create(),re=xs.vec2.create(),oe=xs.vec2.create(),ae=xs.vec2.create();xs.vec2.subtract(ne,W,x),xs.vec2.add(ne,ne,J),xs.vec2.add(re,W,x),xs.vec2.add(re,re,J),xs.vec2.subtract(oe,W,x),xs.vec2.subtract(oe,oe,J),xs.vec2.add(ae,W,x),xs.vec2.subtract(ae,ae,J),E.push([n,A,N,L,U,$,Q,ee,te,j,B,ne,re,oe,ae])}));var I=[],b=[],C=i._getReferenceLineColor(r.id),_=void 0!==C?C:"rgb(200, 200, 200)";return E.forEach((function(e,n){var o,a,l=e[0],s=i._getReferenceLineColor(l.id),c=i._getReferenceLineControllable(l.id),u=i._getReferenceLineDraggableRotatable(l.id)||(null===(o=i.configuration.mobile)||void 0===o?void 0:o.enabled),v=i._getReferenceLineSlabThicknessControlsOn(l.id)||(null===(a=i.configuration.mobile)||void 0===a?void 0:a.enabled),f=p.activeViewportIds.find((function(e){return e===l.id})),g=void 0!==s?s:"rgb(200, 200, 200)",h=1,m=null!==p.handles.activeOperation&&1===p.handles.activeOperation&&f;m&&(h=2.5);var w="".concat(n);if(c&&u?(w="".concat(n,"One"),Zs(t,d,w,e[1],e[2],{color:g,lineWidth:h}),w="".concat(n,"Two"),Zs(t,d,w,e[3],e[4],{color:g,lineWidth:h})):Zs(t,d,w,e[2],e[4],{color:g,lineWidth:h}),c){var E;g=void 0!==s?s:"rgb(200, 200, 200)";var y=2===p.handles.activeOperation,C=[e[9],e[10]],_=[r.canvasToWorld(e[9]),l,e[1],e[2]],T=[r.canvasToWorld(e[10]),l,e[3],e[4]];I.push(_,T);var O=3===p.handles.activeOperation,D=[e[11],e[12],e[13],e[14]],S=[r.canvasToWorld(e[11]),l,e[5],e[6]],k=[r.canvasToWorld(e[12]),l,e[5],e[6]],M=[r.canvasToWorld(e[13]),l,e[7],e[8]],x=[r.canvasToWorld(e[14]),l,e[7],e[8]];if(b.push(S,k,M,x),(m||null!==(E=i.configuration.mobile)&&void 0!==E&&E.enabled)&&!y&&!O&&u&&v){var R,P,A,N,L,U,V,j,B="".concat(n,"One");Xs(t,d,B,C,{color:g,handleRadius:null!==(R=i.configuration.mobile)&&void 0!==R&&R.enabled?null===(P=i.configuration.mobile)||void 0===P?void 0:P.handleRadius:3,opacity:null!==(A=i.configuration.mobile)&&void 0!==A&&A.enabled?null===(N=i.configuration.mobile)||void 0===N?void 0:N.opacity:1,type:"circle"}),B="".concat(n,"Two"),Xs(t,d,B,D,{color:g,handleRadius:null!==(L=i.configuration.mobile)&&void 0!==L&&L.enabled?null===(U=i.configuration.mobile)||void 0===U?void 0:U.handleRadius:3,opacity:null!==(V=i.configuration.mobile)&&void 0!==V&&V.enabled?null===(j=i.configuration.mobile)||void 0===j?void 0:j.opacity:1,type:"rect"})}else if(m&&!y&&!O&&u){var W,F,H,G,q="".concat(n);Xs(t,d,q,C,{color:g,handleRadius:null!==(W=i.configuration.mobile)&&void 0!==W&&W.enabled?null===(F=i.configuration.mobile)||void 0===F?void 0:F.handleRadius:3,opacity:null!==(H=i.configuration.mobile)&&void 0!==H&&H.enabled?null===(G=i.configuration.mobile)||void 0===G?void 0:G.opacity:1,type:"circle"})}else if(f&&!y&&!O&&v){var z,K,Y,X,Z="".concat(n);Xs(t,d,Z,D,{color:g,handleRadius:null!==(z=i.configuration.mobile)&&void 0!==z&&z.enabled?null===(K=i.configuration.mobile)||void 0===K?void 0:K.handleRadius:3,opacity:null!==(Y=i.configuration.mobile)&&void 0!==Y&&Y.enabled?null===(X=i.configuration.mobile)||void 0===X?void 0:X.opacity:1,type:"rect"})}else if(y&&u){var J="".concat(n);Xs(t,d,J,C,{color:g,handleRadius:2,fill:g,type:"circle"})}else O&&f&&v&&Xs(t,d,w,D,{color:g,handleRadius:2,fill:g,type:"rect"});l.getSlabThickness()>.5&&v&&(w="".concat(n,"STOne"),Zs(t,d,w,e[5],e[6],{color:g,width:1,lineDash:[2,3]}),w="".concat(n,"STTwo"),Zs(t,d,w,e[7],e[8],{color:g,width:e,lineDash:[2,3]}))}})),n=!0,p.handles.rotationPoints=I,p.handles.slabThicknessPoints=b,i.configuration.viewportIndicators&&Ks(t,d,"0",[.95*v,.05*f],.01*g,{color:_,fill:_}),n})),ae(ga(i),"_getAnnotations",(function(e){var t=e.viewport,n=nt(i.getToolName(),t.element)||[],r=i._getViewportsInfo().map((function(e){return e.viewportId}));return n.filter((function(e){var t=e.data;return r.includes(t.viewportId)}))})),ae(ga(i),"_onNewVolume",(function(e){var t=i._getViewportsInfo();i.computeToolCenter(t)})),ae(ga(i),"_areViewportIdArraysEqual",(function(e,t){return e.length===t.length&&(e.forEach((function(e){for(var n=!1,r=0;r<t.length;++r)if(e===t[r]){n=!0;break}if(!1===n)return!1})),!0)})),ae(ga(i),"_getAnnotationsForViewportsWithDifferentCameras",(function(e,t){var n=e.viewportId,r=e.renderingEngine,o=e.viewport,a=t.filter((function(e){return e.data.viewportId!==n}));if(!a||!a.length)return[];var i=o.getCamera(),l=i.viewPlaneNormal,s=i.position,c=a.filter((function(e){var t=e.data.viewportId,n=r.getViewport(t).getCamera();return!(J.utilities.isEqual(n.viewPlaneNormal,l,.01)&&J.utilities.isEqual(n.position,s,1))}));return c})),ae(ga(i),"_filterViewportWithSameOrientation",(function(e,t,n){var r=e.renderingEngine,o=t.data,a=r.getViewport(o.viewportId),l=n.filter((function(e){var t=e.data,n=r.getViewport(t.viewportId);return!0===i._getReferenceLineControllable(n.id)}));if(!l||!l.length)return[];var s=a.getCamera(),c=s.viewPlaneNormal;return Su().normalize(c),l.filter((function(e){var t=e.data.viewportId,n=r.getViewport(t).getCamera(),o=n.viewPlaneNormal;return Su().normalize(o),J.utilities.isEqual(c,o,.01)&&J.utilities.isEqual(s.viewUp,n.viewUp,.01)}))})),ae(ga(i),"_filterAnnotationsByUniqueViewportOrientations",(function(e,t){var n=e.renderingEngine,r=e.viewport,o=r.getCamera().viewPlaneNormal;Su().normalize(o);for(var a=t.filter((function(e){var t=e.data,o=n.getViewport(t.viewportId),a=i._getReferenceLineControllable(o.id);return r!==o&&!0===a})),l=[],s=0;s<a.length;++s){var c=a[s],d=c.data.viewportId,u=n.getViewport(d).getCamera(),v=u.viewPlaneNormal;if(Su().normalize(v),!J.utilities.isEqual(o,v,.01)&&!J.utilities.isOpposite(o,v,.01)){for(var f=!1,g=0;g<l.length;++g){var h=l[g].data.viewportId,p=n.getViewport(h).getCamera();J.utilities.isEqual(p.viewPlaneNormal,u.viewPlaneNormal,.01)&&J.utilities.isEqual(p.position,u.position,1)&&(f=!0)}f||l.push(c)}}for(var m=t.filter((function(e){var t=e.data,o=n.getViewport(t.viewportId),a=i._getReferenceLineControllable(o.id);return r!==o&&!0!==a})),w=0;w<m.length;++w){var E=m[w],y=E.data.viewportId,I=n.getViewport(y).getCamera(),b=I.viewPlaneNormal;if(Su().normalize(b),!J.utilities.isEqual(o,b,.01)&&!J.utilities.isOpposite(o,b,.01)){for(var C=!1,_=0;_<l.length;++_){var T=l[_].data.viewportId,O=n.getViewport(T).getCamera();J.utilities.isEqual(O.viewPlaneNormal,I.viewPlaneNormal,.01)&&J.utilities.isEqual(O.position,I.position,1)&&(C=!0)}C||l.push(E)}}for(var D=i._getAnnotationsForViewportsWithDifferentCameras(e,t),S=function(){var e=D[k];if(l.some((function(t){return t===e})))return"continue";var t=e.data.viewportId,r=n.getViewport(t).getCamera(),a=r.viewPlaneNormal;if(Su().normalize(a),J.utilities.isEqual(o,a,.01)||J.utilities.isOpposite(o,a,.01))return"continue";for(var i=!1,s=0;s<l.length;++s){var c=l[s].data.viewportId,d=n.getViewport(c).getCamera();J.utilities.isEqual(d.viewPlaneNormal,r.viewPlaneNormal,.01)&&J.utilities.isEqual(d.position,r.position,1)&&(i=!0)}i||l.push(e)},k=0;k<D.length;++k)S();return l})),ae(ga(i),"_checkIfViewportsRenderingSameScene",(function(e,t){var n=e.getActors(),r=t.getActors(),o=!0;return n.forEach((function(e){n.length===r.length&&void 0!==r.find((function(t){return t.uid===e.uid}))||(o=!1)})),o})),ae(ga(i),"_jump",(function(e,t){Ke.isInteractingWithTool=!0;var n=e.viewport,r=e.renderingEngine,o=i._getAnnotations(e),a=[0,0,0];Su().subtract(t,i.toolCenter,a);var l=i._getAnnotationsForViewportsWithDifferentCameras(e,o).filter((function(e){var t=e.data,o=r.getViewport(t.viewportId),a=i._checkIfViewportsRenderingSameScene(n,o);return i._getReferenceLineControllable(o.id)&&i._getReferenceLineDraggableRotatable(o.id)&&a}));return 0===l.length?(Ke.isInteractingWithTool=!1,!1):(i._applyDeltaShiftToSelectedViewportCameras(r,l,a),Ke.isInteractingWithTool=!1,!0)})),ae(ga(i),"_activateModify",(function(e){var t;Ke.isInteractingWithTool=!(null!==(t=i.configuration.mobile)&&void 0!==t&&t.enabled),e.addEventListener(Q.MOUSE_UP,i._endCallback),e.addEventListener(Q.MOUSE_DRAG,i._dragCallback),e.addEventListener(Q.MOUSE_CLICK,i._endCallback),e.addEventListener(Q.TOUCH_END,i._endCallback),e.addEventListener(Q.TOUCH_DRAG,i._dragCallback),e.addEventListener(Q.TOUCH_TAP,i._endCallback)})),ae(ga(i),"_deactivateModify",(function(e){Ke.isInteractingWithTool=!1,e.removeEventListener(Q.MOUSE_UP,i._endCallback),e.removeEventListener(Q.MOUSE_DRAG,i._dragCallback),e.removeEventListener(Q.MOUSE_CLICK,i._endCallback),e.removeEventListener(Q.TOUCH_END,i._endCallback),e.removeEventListener(Q.TOUCH_DRAG,i._dragCallback),e.removeEventListener(Q.TOUCH_TAP,i._endCallback)})),ae(ga(i),"_endCallback",(function(e){var t=e.detail.element;i.editData.annotation.data.handles.activeOperation=null,i.editData.annotation.data.activeViewportIds=[],i._deactivateModify(t),fs(t),i.editData=null;var n=(0,J.getEnabledElement)(t).renderingEngine,r=ud(t,i.getToolName(),!1);ca(n,r)})),ae(ga(i),"_dragCallback",(function(e){var t=e.detail,n=t.deltaPoints.world;if(!(Math.abs(n[0])<.001&&Math.abs(n[1])<.001&&Math.abs(n[2])<.001)){var r=t.element,o=(0,J.getEnabledElement)(r),a=o.renderingEngine,l=o.viewport,s=i._getAnnotations(o),c=i.filterInteractableAnnotationsForElement(r,s)[0];if(c){var d=c.data.handles,u=e.detail.currentPoints.canvas;if(1===d.activeOperation){var v=i._getAnnotationsForViewportsWithDifferentCameras(o,s).filter((function(e){var t=e.data,n=a.getViewport(t.viewportId),r=i._getReferenceLineControllable(n.id),o=i._getReferenceLineDraggableRotatable(n.id);return!0===r&&!0===o&&c.data.activeViewportIds.find((function(e){return e===n.id}))}));i._applyDeltaShiftToSelectedViewportCameras(a,v,n)}else if(2===d.activeOperation){var f=i._getAnnotationsForViewportsWithDifferentCameras(o,s).filter((function(e){var t=e.data,n=a.getViewport(t.viewportId),r=i._getReferenceLineControllable(n.id),o=i._getReferenceLineDraggableRotatable(n.id);return!0===r&&!0===o})),g=xs.vec2.create(),h=xs.vec2.create(),p=[i.toolCenter[0],i.toolCenter[1],i.toolCenter[2]],m=l.worldToCanvas(p),w=t.currentPoints.canvas,E=xs.vec2.create();xs.vec2.sub(E,w,t.deltaPoints.canvas),xs.vec2.sub(g,E,m),xs.vec2.sub(h,w,m);var y=xs.vec2.angle(g,h);i._isClockWise(m,E,w)&&(y*=-1),y=Math.round(100*y)/100;var I=l.getCamera().viewPlaneNormal,b=lh().buildFromRadian().translate(p[0],p[1],p[2]).rotate(y,I).translate(-p[0],-p[1],-p[2]).matrix,C=[];f.forEach((function(e){var t=e.data;t.handles.toolCenter=p;var n=a.getViewport(t.viewportId),r=n.getCamera(),o=r.viewUp,i=r.position,l=r.focalPoint;o[0]+=i[0],o[1]+=i[1],o[2]+=i[2],xs.vec3.transformMat4(l,l,b),xs.vec3.transformMat4(i,i,b),xs.vec3.transformMat4(o,o,b),o[0]-=i[0],o[1]-=i[1],o[2]-=i[2],n.setCamera({position:i,viewUp:o,focalPoint:l}),C.push(n.id)})),a.renderViewports(C)}else if(3===d.activeOperation){var _=i._getAnnotationsForViewportsWithDifferentCameras(o,s).filter((function(e){var t=e.data,n=a.getViewport(t.viewportId),r=i._getReferenceLineControllable(n.id),o=i._getReferenceLineSlabThicknessControlsOn(n.id);return!0===r&&!0===o&&c.data.activeViewportIds.find((function(e){return e===n.id}))}));if(0===_.length)return;var T=i._filterViewportWithSameOrientation(o,_[0],s),O=[];O.push(l.id),T.forEach((function(e){var r=e.data,o=a.getViewport(r.viewportId),s=o.getCamera().viewPlaneNormal,d=Su().dot(n,s),v=Lr(s);if(Su().multiplyScalar(v,d),Math.abs(v[0])>.001||Math.abs(v[1])>.001||Math.abs(v[2])>.001){var f=Math.sqrt(v[0]*v[0]+v[1]*v[1]+v[2]*v[2]),g=t.lastPoints.world,h=[0,0,0],p=[i.toolCenter[0],i.toolCenter[1],i.toolCenter[2]];if(!i._getReferenceLineDraggableRotatable(o.id)){var m=i.editData.annotation.data.handles.rotationPoints.filter((function(e){return e[1].uid===o.id}));if(2===m.length){var w=l.canvasToWorld(m[0][3]),E=l.canvasToWorld(m[1][3]);Su().add(w,E,p),Su().multiplyScalar(p,.5)}}Su().subtract(g,p,h);var y=Su().dot(h,s),I=Lr(s);Su().multiplyScalar(I,y);var b=[I[0],I[1],I[2]];xs.vec3.normalize(b,b);var C=[v[0],v[1],v[2]];xs.vec3.normalize(C,C);var _=o.getSlabThickness();J.utilities.isOpposite(b,C,.001)?_-=f:_+=f,_=Math.abs(_),_=Math.max(sh.MINIMUM_SLAB_THICKNESS,_),i._pointNearReferenceLine(c,u,6,o)&&(_=sh.MINIMUM_SLAB_THICKNESS),Fr(o.id,a.id).getToolInstance(i.getToolName()).setSlabThickness(o,_),O.push(o.id)}})),a.renderViewports(O)}}}})),ae(ga(i),"_pointNearReferenceLine",(function(e,t,n,r){for(var o=e.data.handles.rotationPoints,a=0;a<o.length-1;++a){var l=o[a][1];if(l.id===r.id&&i._getReferenceLineControllable(l.id)){var s={start:{x:o[a][2][0],y:o[a][2][1]},end:{x:o[a][3][0],y:o[a][3][1]}},c=_d([s.start.x,s.start.y],[s.end.x,s.end.y],[t[0],t[1]]),d={start:{x:o[a+1][2][0],y:o[a+1][2][1]},end:{x:o[a+1][3][0],y:o[a+1][3][1]}},u=_d([d.start.x,d.start.y],[d.end.x,d.end.y],[t[0],t[1]]);if(c<=n||u<=n)return!0;a++}}return!1})),i._getReferenceLineColor=(null===(e=l.configuration)||void 0===e?void 0:e.getReferenceLineColor)||ch,i._getReferenceLineControllable=(null===(t=l.configuration)||void 0===t?void 0:t.getReferenceLineControllable)||dh,i._getReferenceLineDraggableRotatable=(null===(n=l.configuration)||void 0===n?void 0:n.getReferenceLineDraggableRotatable)||uh,i._getReferenceLineSlabThicknessControlsOn=(null===(a=l.configuration)||void 0===a?void 0:a.getReferenceLineSlabThicknessControlsOn)||vh,i}return re(o,[{key:"onSetToolActive",value:function(){var e=this._getViewportsInfo();this._unsubscribeToViewportNewVolumeSet(e),this._subscribeToViewportNewVolumeSet(e),this.computeToolCenter(e)}},{key:"onSetToolPassive",value:function(){var e=this._getViewportsInfo();this.computeToolCenter(e)}},{key:"onSetToolEnabled",value:function(){var e=this._getViewportsInfo();this.computeToolCenter(e)}},{key:"onSetToolDisabled",value:function(){var e=this,t=this._getViewportsInfo();this._unsubscribeToViewportNewVolumeSet(t),t.forEach((function(t){var n=t.renderingEngineId,r=t.viewportId,o=(0,J.getEnabledElementByIds)(r,n);if(o){var a=e._getAnnotations(o);null!=a&&a.length&&a.forEach((function(e){at(e.annotationUID)}))}}))}},{key:"getHandleNearImagePoint",value:function(e,t,n,r){var o=(0,J.getEnabledElement)(e).viewport,a=this._getRotationHandleNearImagePoint(o,t,n,r);return null!==a||null!==(a=this._getSlabThicknessHandleNearImagePoint(o,t,n,r))?a:void 0}},{key:"_unsubscribeToViewportNewVolumeSet",value:function(e){var t=this;e.forEach((function(e){var n=e.viewportId,r=e.renderingEngineId;(0,J.getEnabledElementByIds)(n,r).viewport.element.removeEventListener(J.Enums.Events.VOLUME_VIEWPORT_NEW_VOLUME,t._onNewVolume)}))}},{key:"_subscribeToViewportNewVolumeSet",value:function(e){var t=this;e.forEach((function(e){var n=e.viewportId,r=e.renderingEngineId;(0,J.getEnabledElementByIds)(n,r).viewport.element.addEventListener(J.Enums.Events.VOLUME_VIEWPORT_NEW_VOLUME,t._onNewVolume)}))}},{key:"_autoPanViewportIfNecessary",value:function(e,t){var n=t.getViewport(e),r=n.canvas,o=r.clientWidth,a=r.clientHeight,i=n.worldToCanvas(this.toolCenter),l=this.configuration.autoPan.panSize,s=[i[0],i[1]];if(i[0]<0?s[0]=l:i[0]>o&&(s[0]=o-l),i[1]<0?s[1]=l:i[1]>a&&(s[1]=a-l),s[0]!==i[0]||s[1]!==i[1]){var c=n.canvasToWorld(s),d=[c[0]-this.toolCenter[0],c[1]-this.toolCenter[1],c[2]-this.toolCenter[2]],u=n.getCamera(),v=u.focalPoint,f=u.position,g=[f[0]-d[0],f[1]-d[1],f[2]-d[2]],h=[v[0]-d[0],v[1]-d[1],v[2]-d[2]];n.setCamera({focalPoint:h,position:g}),n.render()}}},{key:"setSlabThickness",value:function(e,t){var n,r=this.configuration.filterActorUIDsToSetSlabThickness;r&&r.length>0&&(n=r);var o=this.configuration.slabThicknessBlendMode;t===sh.MINIMUM_SLAB_THICKNESS&&(o=J.Enums.BlendModes.COMPOSITE),e.setBlendMode(o,n,!1),e.setSlabThickness(t,n)}},{key:"_isClockWise",value:function(e,t,n){return(t[0]-e[0])*(n[1]-e[1])-(t[1]-e[1])*(n[0]-e[0])>0}},{key:"_applyDeltaShiftToSelectedViewportCameras",value:function(e,t,n){var r=this;t.forEach((function(t){r._applyDeltaShiftToViewportCamera(e,t,n)}))}},{key:"_applyDeltaShiftToViewportCamera",value:function(e,t,n){var r=t.data,o=e.getViewport(r.viewportId),a=o.getCamera(),i=a.viewPlaneNormal,l=Su().dot(n,i),s=Lr(i);if(Su().multiplyScalar(s,l),Math.abs(s[0])>.001||Math.abs(s[1])>.001||Math.abs(s[2])>.001){var c=[0,0,0],d=[0,0,0];Su().add(a.focalPoint,s,c),Su().add(a.position,s,d),o.setCamera({focalPoint:c,position:d}),o.render()}}},{key:"_getRotationHandleNearImagePoint",value:function(e,t,n,r){for(var o=t.data,a=o.handles.rotationPoints,i=0;i<a.length;i++){var l=a[i][0],s=a[i][1];if(this._getReferenceLineControllable(s.id)&&this._getReferenceLineDraggableRotatable(s.id)){var c=e.worldToCanvas(l);if(xs.vec2.distance(n,c)<r)return o.handles.activeOperation=2,this.editData={annotation:t},l}}return null}},{key:"_getSlabThicknessHandleNearImagePoint",value:function(e,t,n,r){for(var o=t.data,a=o.handles.slabThicknessPoints,i=0;i<a.length;i++){var l=a[i][0],s=a[i][1];if(this._getReferenceLineControllable(s.id)&&this._getReferenceLineSlabThicknessControlsOn(s.id)){var c=e.worldToCanvas(l);if(xs.vec2.distance(n,c)<r)return o.handles.activeOperation=3,o.activeViewportIds=[s.id],this.editData={annotation:t},l}}return null}},{key:"_pointNearTool",value:function(e,t,n,r){for(var o=this,a=(0,J.getEnabledElement)(e).viewport.canvas,i=a.clientWidth,l=a.clientHeight,s=Math.sqrt(i*i+l*l),c=t.data,d=c.handles.rotationPoints,u=c.handles.slabThicknessPoints,v=[],f=0;f<d.length-1;++f){var g=d[f][1],h=this._getReferenceLineControllable(g.id),p=this._getReferenceLineDraggableRotatable(g.id);if(h&&p){var m={start:{x:d[f][2][0],y:d[f][2][1]},end:{x:d[f][3][0],y:d[f][3][1]}},w=_d([m.start.x,m.start.y],[m.end.x,m.end.y],[n[0],n[1]]),E={start:{x:d[f+1][2][0],y:d[f+1][2][1]},end:{x:d[f+1][3][0],y:d[f+1][3][1]}},y=_d([E.start.x,E.start.y],[E.end.x,E.end.y],[n[0],n[1]]);(w<=r||y<=r)&&(v.push(g.id),c.handles.activeOperation=1),f++}}for(var I=function(e){var t=u[e][1];if(v.find((function(e){return e===t.id})))return b=e,"continue";var a=o._getReferenceLineControllable(t.id),i=o._getReferenceLineSlabThicknessControlsOn(t.id);if(!a||!i)return b=e,"continue";var l=u[e][2],d=u[e][3],f=xs.vec2.create();xs.vec2.add(f,l,d),xs.vec2.scale(f,f,.5);var g=xs.vec2.create();xs.vec2.subtract(g,l,f),xs.vec2.normalize(g,g);var h=xs.vec2.create();xs.vec2.scale(h,g,.05*s);var p=xs.vec2.create(),m=xs.vec2.create();xs.vec2.add(p,f,h),xs.vec2.subtract(m,f,h);var w={start:{x:p[0],y:p[1]},end:{x:l[0],y:l[1]}},E=_d([w.start.x,w.start.y],[w.end.x,w.end.y],[n[0],n[1]]),y={start:{x:m[0],y:m[1]},end:{x:d[0],y:d[1]}},I=_d([y.start.x,y.start.y],[y.end.x,y.end.y],[n[0],n[1]]);(E<=r||I<=r)&&(v.push(t.id),c.handles.activeOperation=null),e++,b=e},b=0;b<u.length-1;++b)I(b);return c.activeViewportIds=[].concat(v),this.editData={annotation:t},1===c.handles.activeOperation}}]),o}(Id);ae(fh,"toolName",void 0),fh.toolName="Crosshairs";var gh=fh;var hh=J.CONSTANTS.EPSILON,ph=function(e){pa(o,e);var t,n,r=(t=o,n=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,r=wa(t);if(n){var o=wa(this).constructor;e=Reflect.construct(r,arguments,o)}else e=r.apply(this,arguments);return ma(this,e)});function o(){var e,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{supportedInteractionTypes:["Mouse","Touch"],configuration:{sourceViewportId:"",showFullDimension:!1}};return oe(this,o),ae(ga(e=r.call(this,t,n)),"touchDragCallback",void 0),ae(ga(e),"mouseDragCallback",void 0),ae(ga(e),"_throttledCalculateCachedStats",void 0),ae(ga(e),"editData",{}),ae(ga(e),"isDrawing",void 0),ae(ga(e),"isHandleOutsideImage",void 0),ae(ga(e),"_init",(function(){var t=(0,J.getRenderingEngines)()[0];if(t){var n=t.getViewports();n=sd(n,e.getToolName());var r=t.getViewport(e.configuration.sourceViewportId);if(r&&r.getImageData()){var o=r.element,a=r.getCamera(),i=a.viewUp,l=a.viewPlaneNormal,s=J.utilities.getViewportImageCornersInWorld(r),c=e.editData.annotation,d=r.getFrameOfReferenceUID();if(c)e.editData.annotation.data.handles.points=s;else{var u={highlighted:!0,invalidated:!0,metadata:{toolName:e.getToolName(),viewPlaneNormal:Lr(l),viewUp:Lr(i),FrameOfReferenceUID:d,referencedImageId:null},data:{handles:{points:s}}};rt(u,o),c=u}e.editData={sourceViewport:r,renderingEngine:t,annotation:c},ca(t,n.filter((function(e){return e.id!==r.id})).map((function(e){return e.id})))}}})),ae(ga(e),"onSetToolEnabled",(function(){e._init()})),ae(ga(e),"onCameraModified",(function(t){e._init()})),ae(ga(e),"renderAnnotation",(function(t,n){var r,o,a=t.viewport,i=e.editData,l=i.annotation,s=i.sourceViewport,c=!1;if(!s)return c;if(s.id===a.id)return c;if(!l||null==l||null===(r=l.data)||void 0===r||null===(o=r.handles)||void 0===o||!o.points)return c;var d={toolGroupId:e.toolGroupId,toolName:e.getToolName(),viewportId:t.viewport.id},u=l.data.handles.points[0],v=l.data.handles.points[1],f=l.data.handles.points[2],g=l.data.handles.points[3],h=a.getCamera(),p=h.focalPoint,m=h.viewPlaneNormal,w=h.viewUp,E=s.getCamera().viewPlaneNormal;if(e.isParallel(m,E))return c;var y=J.utilities.planar.planeEquation(m,p),I=[u,f,v,g],b=[u,v,f,g],C=I,_=xs.vec3.subtract(xs.vec3.create(),I[0],I[1]);_=xs.vec3.normalize(xs.vec3.create(),_);var T=xs.vec3.subtract(xs.vec3.create(),I[2],I[0]);T=xs.vec3.normalize(xs.vec3.create(),T);var O=xs.vec3.cross(xs.vec3.create(),_,T);if(e.isParallel(O,m))return c;e.isPerpendicular(_,m)&&(C=b);var D=J.utilities.planar.linePlaneIntersection(C[0],C[1],y),S=J.utilities.planar.linePlaneIntersection(C[2],C[3],y),k=l.annotationUID;d.annotationUID=k;var M=e.getStyle("lineWidth",d,l),x=e.getStyle("lineDash",d,l),R=e.getStyle("color",d,l),P=e.getStyle("shadow",d,l),A=[D,S].map((function(e){return a.worldToCanvas(e)}));e.configuration.showFullDimension&&(A=e.handleFullDimension(a,D,m,w,S,A));var N="".concat(k,"-line");return Zs(n,k,"1",A[0],A[1],{color:R,width:M,lineDash:x,shadow:P},N),!0})),ae(ga(e),"isPerpendicular",(function(e,t){var n=xs.vec3.dot(e,t);return Math.abs(n)<hh})),e}return re(o,[{key:"handleFullDimension",value:function(e,t,n,r,o,a){var i=this,l=e.getRenderingEngine(),s=this.getTargetId(e),c=this.getTargetIdImage(s,l),d=this.getReferencedImageId(e,t,n,r);if(d&&c)try{var u=c.imageData,v=c.dimensions,f=dt([u.indexToWorld([0,0,0]),u.indexToWorld([v[0]-1,0,0]),u.indexToWorld([v[0]-1,v[1]-1,0]),u.indexToWorld([0,v[1]-1,0])].map((function(e){return J.utilities.worldToImageCoords(d,e)})),4),g=f[0],h=f[1],p=f[2],m=f[3],w=dt([t,o].map((function(e){return J.utilities.worldToImageCoords(d,e)})),2),E=w[0],y=w[1];a=[[g,h],[h,p],[m,p],[g,m]].map((function(e){var t=dt(e,2),n=t[0],r=t[1];return i.intersectInfiniteLines(n,r,E,y)})).filter((function(e){return e&&i.isInBound(e,v)})).map((function(t){var n=J.utilities.imageToWorldCoords(d,t);return e.worldToCanvas(n)}))}catch(e){console.log(e)}return a}},{key:"intersectInfiniteLines",value:function(e,t,n,r){var o=dt(e,2),a=o[0],i=o[1],l=dt(t,2),s=l[0],c=l[1],d=dt(n,2),u=d[0],v=d[1],f=dt(r,2),g=f[0],h=f[1],p=c-i,m=a-s,w=s*i-a*c,E=h-v,y=u-g,I=g*v-u*h;if(!(Math.abs(p*y-E*m)<hh))return[(m*I-y*w)/(p*y-E*m),(E*w-p*I)/(p*y-E*m)]}},{key:"isParallel",value:function(e,t){return Math.abs(xs.vec3.dot(e,t))>1-hh}},{key:"isInBound",value:function(e,t){return e[0]>=0&&e[0]<=t[0]&&e[1]>=0&&e[1]<=t[1]}}]),o}(wd);ae(ph,"toolName",void 0),ph.toolName="ReferenceLines";var mh=ph;var wh=J.CONSTANTS.EPSILON,Eh=function(e){pa(o,e);var t,n,r=(t=o,n=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,r=wa(t);if(n){var o=wa(this).constructor;e=Reflect.construct(r,arguments,o)}else e=r.apply(this,arguments);return ma(this,e)});function o(){var e,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{supportedInteractionTypes:["Mouse","Touch"],configuration:{sourceImageIds:[]}};return oe(this,o),ae(ga(e=r.call(this,t,n)),"touchDragCallback",void 0),ae(ga(e),"mouseDragCallback",void 0),ae(ga(e),"_throttledCalculateCachedStats",void 0),ae(ga(e),"isDrawing",void 0),ae(ga(e),"isHandleOutsideImage",void 0),ae(ga(e),"onSetToolEnabled",(function(){e._init()})),ae(ga(e),"onSetToolActive",(function(){e._init()})),ae(ga(e),"_init",(function(){var t=e.configuration.sourceImageIds;if(null!=t&&t.length){var n=J.metaData.get("imagePlaneModule",t[0]);if(n){var r=n.frameOfReferenceUID,o=fa(e.toolGroupId).viewportsInfo;if(null!=o&&o.length){var a=nt(e.getToolName(),r);if(null==a||!a.length){var i=t.map((function(t){return e.calculateImageIdPointSets(t)}));rt({highlighted:!0,invalidated:!0,metadata:{toolName:e.getToolName(),FrameOfReferenceUID:r,referencedImageId:null},data:{viewportData:new Map,pointSets:i}},r)}ca((0,J.getRenderingEngine)(o[0].renderingEngineId),o.map((function(e){return e.viewportId})))}else console.warn("OverlayGridTool: No viewports found")}else console.warn("OverlayGridTool: No imagePlaneModule found for sourceImageIds")}else console.warn("OverlayGridTool: No sourceImageIds provided in configuration")})),ae(ga(e),"calculateImageIdPointSets",(function(e){var t=J.metaData.get("imagePlaneModule",e),n=t.imagePositionPatient,r=t.rows,o=t.columns,a=t.rowCosines,i=t.columnCosines,l=t.rowPixelSpacing,s=t.columnPixelSpacing,c=Lr(n),d=Lr(n),u=Lr(n),v=Lr(n);return xs.vec3.scaleAndAdd(d,n,i,o*s),xs.vec3.scaleAndAdd(u,n,a,r*l),xs.vec3.scaleAndAdd(v,u,i,o*s),{pointSet1:[c,u,d,v],pointSet2:[c,d,u,v]}})),ae(ga(e),"renderAnnotation",(function(t,n){var r=e.configuration.sourceImageIds,o=!1;if(null==r||!r.length)return o;var a=t.viewport,i=t.FrameOfReferenceUID;if(a.getImageIds().length<2)return o;var l=nt(e.getToolName(),i);if(null==l||!l.length)return o;var s=l[0],c=s.annotationUID,d=a.getCamera(),u=d.focalPoint,v=d.viewPlaneNormal,f={toolGroupId:e.toolGroupId,toolName:e.getToolName(),viewportId:t.viewport.id},g=e.getImageIdNormal(r[0]);if(e.isParallel(v,g))return o;for(var h=J.utilities.planar.planeEquation(v,u),p=s.data.pointSets,m=s.data.viewportData,w=0;w<r.length;w++){var E=p[w],y=E.pointSet1,I=E.pointSet2,b=m.get(a.id)||e.initializeViewportData(m,a.id);if(!b.pointSetsToUse[w]){var C=y,_=xs.vec3.subtract(xs.vec3.create(),y[0],y[1]);_=xs.vec3.normalize(xs.vec3.create(),_),e.isPerpendicular(_,v)&&(C=I),b.pointSetsToUse[w]=C,b.lineStartsWorld[w]=J.utilities.planar.linePlaneIntersection(C[0],C[1],h),b.lineEndsWorld[w]=J.utilities.planar.linePlaneIntersection(C[2],C[3],h)}var T=b.lineStartsWorld[w],O=b.lineEndsWorld[w];f.annotationUID=c;var D=e.getStyle("lineWidth",f,s),S=e.getStyle("lineDash",f,s),k=e.getStyle("color",f,s),M=e.getStyle("shadow",f,s),x=[T,O].map((function(e){return a.worldToCanvas(e)})),R="".concat(c,"-line");Zs(n,c,"".concat(w),x[0],x[1],{color:k,width:D,lineDash:S,shadow:M},R)}return!0})),ae(ga(e),"initializeViewportData",(function(e,t){return e.set(t,{pointSetsToUse:[],lineStartsWorld:[],lineEndsWorld:[]}),e.get(t)})),ae(ga(e),"isPerpendicular",(function(e,t){var n=xs.vec3.dot(e,t);return Math.abs(n)<wh})),e}return re(o,[{key:"isParallel",value:function(e,t){return Math.abs(xs.vec3.dot(e,t))>1-wh}},{key:"getImageIdNormal",value:function(e){var t=J.metaData.get("imagePlaneModule",e).imageOrientationPatient,n=xs.vec3.fromValues(t[0],t[1],t[2]),r=xs.vec3.fromValues(t[3],t[4],t[5]);return xs.vec3.cross(xs.vec3.create(),n,r)}}]),o}(wd);ae(Eh,"toolName",void 0),Eh.toolName="OverlayGrid";var yh=Eh;var Ih=function(e){pa(o,e);var t,n,r=(t=o,n=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,r=wa(t);if(n){var o=wa(this).constructor;e=Reflect.construct(r,arguments,o)}else e=r.apply(this,arguments);return ma(this,e)});function o(){var e,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{configuration:{opacity:.5}};return oe(this,o),ae(ga(e=r.call(this,t,n)),"_init",(function(){var t,n=fa(e.toolGroupId).viewportsInfo;if(null!=n&&n.length){var r=null===(t=(0,J.getRenderingEngine)(n[0].renderingEngineId))||void 0===t?void 0:t.getViewport(n[0].viewportId);if(r){var o=r.getFrameOfReferenceUID(),a=nt(e.getToolName(),o);if(null==a||!a.length){var i=new Map;!function(e,t){t.forEach((function(t){var n,r=t.viewportId,o=t.renderingEngineId,a=null===(n=(0,J.getRenderingEngine)(o))||void 0===n?void 0:n.getViewport(r);bh(e,a)}))}(i,n),rt({highlighted:!0,invalidated:!0,metadata:{toolName:e.getToolName(),FrameOfReferenceUID:o,referencedImageId:null},data:{actorsWorldPointsMap:i}},o)}ca((0,J.getRenderingEngine)(n[0].renderingEngineId),n.map((function(e){return e.viewportId})))}}else console.warn(e.getToolName()+"Tool: No viewports found")})),ae(ga(e),"onSetToolEnabled",(function(){e._init()})),ae(ga(e),"onCameraModified",(function(t){e._init()})),ae(ga(e),"renderAnnotation",(function(t,n){var r=t.viewport,o=t.FrameOfReferenceUID,a=!1,i=nt(e.getToolName(),o);if(null==i||!i.length)return a;var l=i[0],s=l.annotationUID,c=l.data.actorsWorldPointsMap;bh(c,r);var d=r.getActors(),u=Ch(r);return d.forEach((function(t){if(null!=t&&t.clippingFilter){var o=c.get(t.uid);if(o&&o.get(u))for(var a=1,i=o.get(u),l=i.worldPointsSet,d=i.color,v=0;v<l.length;v++){var f=l[v].map((function(e){return r.worldToCanvas(e)})),g={color:d,fillColor:d,fillOpacity:e.configuration.opacity,connectLastToFirst:!0},h=t.uid+"#"+a;$s(n,s,h,f,g),a++}}})),!0})),e}return re(o)}(wd);function bh(e,t){var n=t.getActors(),r=Ch(t);n.forEach((function(t){if(null!=t&&t.clippingFilter){var n=e.get(t.uid);if(n||(n=new Map,e.set(t.uid,n)),!n.get(r)){var o=Zf(t.clippingFilter.getOutputData());if(!o)return;var a=function(e){function t(e){var t=Math.floor(255*e).toString(16);return 1===t.length&&(t="0"+t),t}return"#"+t(e[0])+t(e[1])+t(e[2])}(t.actor.getProperty().getColor());n.set(r,{worldPointsSet:o,color:a})}}}))}function Ch(e){var t=e.getCamera().viewPlaneNormal,n=e.getCurrentImageIdIndex();return"".concat(e.id,"-").concat($a(t),"-").concat(n)}ae(Ih,"toolName",void 0),Ih.toolName="SegmentationIntersection";var _h=Ih;function Th(e,t,n,r){var o=xs.vec3.create();xs.vec3.cross(o,t,e);var a=xs.vec3.fromValues.apply(xs.vec3,Lr(n)),i=xs.vec3.fromValues.apply(xs.vec3,Lr(r)),l=xs.vec3.create();xs.vec3.subtract(l,a,i);var s=xs.vec3.length(l);if(s<1e-4)return{worldWidth:0,worldHeight:0};var c=xs.vec3.dot(l,o)/(s*xs.vec3.length(o));return{worldWidth:Math.sqrt(1-c*c)*s,worldHeight:c*s}}var Oh=J.utilities.transformWorldToIndex,Dh=function(e){pa(o,e);var t,n,r=(t=o,n=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,r=wa(t);if(n){var o=wa(this).constructor;e=Reflect.construct(r,arguments,o)}else e=r.apply(this,arguments);return ma(this,e)});function o(){var e,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{supportedInteractionTypes:["Mouse","Touch"],configuration:{shadow:!0,preventHandleOutsideImage:!1,centerPointRadius:0,getTextLines:Sh,statsCalculator:Rd}};return oe(this,o),ae(ga(e=r.call(this,t,n)),"touchDragCallback",void 0),ae(ga(e),"mouseDragCallback",void 0),ae(ga(e),"_throttledCalculateCachedStats",void 0),ae(ga(e),"editData",void 0),ae(ga(e),"isDrawing",void 0),ae(ga(e),"isHandleOutsideImage",!1),ae(ga(e),"addNewAnnotation",(function(t){var n=t.detail,r=n.currentPoints,o=n.element,a=r.world,i=(r.canvas,(0,J.getEnabledElement)(o)),l=i.viewport,s=i.renderingEngine;e.isDrawing=!0;var c=l.getCamera(),d=c.viewPlaneNormal,u=c.viewUp,v=e.getReferencedImageId(l,a,d,u),f=l.getFrameOfReferenceUID(),g={highlighted:!0,invalidated:!0,metadata:{toolName:e.getToolName(),viewPlaneNormal:Lr(d),viewUp:Lr(u),FrameOfReferenceUID:f,referencedImageId:v},data:{label:"",handles:{textBox:{hasMoved:!1,worldPosition:[0,0,0],worldBoundingBox:{topLeft:[0,0,0],topRight:[0,0,0],bottomLeft:[0,0,0],bottomRight:[0,0,0]}},points:[Lr(a),Lr(a),Lr(a),Lr(a)],activeHandleIndex:null},cachedStats:{},initialRotation:l.getRotation()}};rt(g,o);var h=ud(o,e.getToolName());return e.editData={annotation:g,viewportIdsToRender:h,centerWorld:a,newAnnotation:!0,hasMoved:!1},e._activateDraw(o),gs(o),t.preventDefault(),ca(s,h),g})),ae(ga(e),"isPointNearTool",(function(t,n,r,o){var a=(0,J.getEnabledElement)(t).viewport,i=dt(Rc(n.data.handles.points.map((function(e){return a.worldToCanvas(e)}))),2),l=i[0],s=i[1],c={left:Math.min(l[0],s[0])+o/2,top:Math.min(l[1],s[1])+o/2,width:Math.abs(l[0]-s[0])-o,height:Math.abs(l[1]-s[1])-o},d={left:Math.min(l[0],s[0])-o/2,top:Math.min(l[1],s[1])-o/2,width:Math.abs(l[0]-s[0])+o,height:Math.abs(l[1]-s[1])+o},u=e._pointInEllipseCanvas(c,r);return!(!e._pointInEllipseCanvas(d,r)||u)})),ae(ga(e),"toolSelectedCallback",(function(t,n){var r=t.detail.element;n.highlighted=!0;var o=ud(r,e.getToolName());e.editData={annotation:n,viewportIdsToRender:o,movingTextBox:!1},gs(r),e._activateModify(r);var a=(0,J.getEnabledElement)(r).renderingEngine;ca(a,o),t.preventDefault()})),ae(ga(e),"handleSelectedCallback",(function(t,n,r){var o=t.detail.element,a=n.data;n.highlighted=!0;var i,l,s,c,d,u=!1;if(r.worldPosition)u=!0;else{var v=a.handles.points,f=(0,J.getEnabledElement)(o).viewport,g=f.worldToCanvas,h=f.canvasToWorld;i=v.findIndex((function(e){return e===r}));var p=v.map(g);d=p[i],s=Math.abs(p[2][0]-p[3][0]),c=Math.abs(p[0][1]-p[1][1]),l=h([(p[2][0]+p[3][0])/2,(p[0][1]+p[1][1])/2])}var m=ud(o,e.getToolName());e.editData={annotation:n,viewportIdsToRender:m,handleIndex:i,canvasWidth:s,canvasHeight:c,centerWorld:l,originalHandleCanvas:d,movingTextBox:u},e._activateModify(o),gs(o);var w=(0,J.getEnabledElement)(o).renderingEngine;ca(w,m),t.preventDefault()})),ae(ga(e),"_endCallback",(function(t){var n=t.detail.element,r=e.editData,o=r.annotation,a=r.viewportIdsToRender,i=r.newAnnotation,l=r.hasMoved,s=o.data;if(!i||l){o.highlighted=!1,s.handles.activeHandleIndex=null,e._deactivateModify(n),e._deactivateDraw(n),fs(n);var c=(0,J.getEnabledElement)(n).renderingEngine;if(e.editData=null,e.isDrawing=!1,e.isHandleOutsideImage&&e.configuration.preventHandleOutsideImage&&at(o.annotationUID),ca(c,a),i){var d=Q.ANNOTATION_COMPLETED,u={annotation:o};(0,J.triggerEvent)(J.eventTarget,d,u)}}})),ae(ga(e),"_dragDrawCallback",(function(t){e.isDrawing=!0;var n=t.detail,r=n.element,o=n.currentPoints.canvas,a=(0,J.getEnabledElement)(r),i=a.renderingEngine,l=a.viewport,s=l.canvasToWorld,c=e.editData,d=c.annotation,u=c.viewportIdsToRender,v=c.centerWorld,f=l.worldToCanvas(v),g=d.data,h=Math.abs(o[0]-f[0]),p=Math.abs(o[1]-f[1]),m=[f[0],f[1]-p],w=[f[0],f[1]+p],E=[f[0]-h,f[1]],y=[f[0]+h,f[1]];g.handles.points=[s(m),s(w),s(E),s(y)],d.invalidated=!0,e.editData.hasMoved=!0,ca(i,u)})),ae(ga(e),"_dragModifyCallback",(function(t){e.isDrawing=!0;var n=t.detail,r=n.element,o=e.editData,a=o.annotation,i=o.viewportIdsToRender,l=o.handleIndex,s=o.movingTextBox,c=a.data;if(s){var d=n.deltaPoints.world,u=c.handles.textBox,v=u.worldPosition;v[0]+=d[0],v[1]+=d[1],v[2]+=d[2],u.hasMoved=!0}else if(void 0===l){var f=n.deltaPoints.world;c.handles.points.forEach((function(e){e[0]+=f[0],e[1]+=f[1],e[2]+=f[2]})),a.invalidated=!0}else e._dragHandle(t),a.invalidated=!0;var g=(0,J.getEnabledElement)(r).renderingEngine;ca(g,i)})),ae(ga(e),"_dragHandle",(function(t){var n=t.detail,r=n.element,o=(0,J.getEnabledElement)(r).viewport,a=o.canvasToWorld,i=(o.worldToCanvas,e.editData),l=i.annotation,s=i.canvasWidth,c=i.canvasHeight,d=i.handleIndex,u=i.centerWorld,v=i.originalHandleCanvas,f=o.worldToCanvas(u),g=l.data.handles.points,h=n.currentPoints.canvas;if(0===d||1===d){var p=Math.abs(h[1]-f[1]),m=[f[0],f[1]-p],w=[f[0],f[1]+p];g[0]=a(m),g[1]=a(w);var E=s/2+(h[0]-v[0]),y=[f[0]-E,f[1]],I=[f[0]+E,f[1]];g[2]=a(y),g[3]=a(I)}else{var b=Math.abs(h[0]-f[0]),C=[f[0]-b,f[1]],_=[f[0]+b,f[1]];g[2]=a(C),g[3]=a(_);var T=c/2+(h[1]-v[1]),O=[f[0],f[1]-T],D=[f[0],f[1]+T];g[0]=a(O),g[1]=a(D)}})),ae(ga(e),"cancel",(function(t){if(e.isDrawing){e.isDrawing=!1,e._deactivateDraw(t),e._deactivateModify(t),fs(t);var n=e.editData,r=n.annotation,o=n.viewportIdsToRender,a=n.newAnnotation,i=r.data;r.highlighted=!1,i.handles.activeHandleIndex=null;var l=(0,J.getEnabledElement)(t).renderingEngine;if(ca(l,o),a){var s=Q.ANNOTATION_COMPLETED,c={annotation:r};(0,J.triggerEvent)(J.eventTarget,s,c)}return e.editData=null,r.annotationUID}})),ae(ga(e),"_activateModify",(function(t){Ke.isInteractingWithTool=!0,t.addEventListener(Q.MOUSE_UP,e._endCallback),t.addEventListener(Q.MOUSE_DRAG,e._dragModifyCallback),t.addEventListener(Q.MOUSE_CLICK,e._endCallback),t.addEventListener(Q.TOUCH_END,e._endCallback),t.addEventListener(Q.TOUCH_DRAG,e._dragModifyCallback),t.addEventListener(Q.TOUCH_TAP,e._endCallback)})),ae(ga(e),"_deactivateModify",(function(t){Ke.isInteractingWithTool=!1,t.removeEventListener(Q.MOUSE_UP,e._endCallback),t.removeEventListener(Q.MOUSE_DRAG,e._dragModifyCallback),t.removeEventListener(Q.MOUSE_CLICK,e._endCallback),t.removeEventListener(Q.TOUCH_END,e._endCallback),t.removeEventListener(Q.TOUCH_DRAG,e._dragModifyCallback),t.removeEventListener(Q.TOUCH_TAP,e._endCallback)})),ae(ga(e),"_activateDraw",(function(t){Ke.isInteractingWithTool=!0,t.addEventListener(Q.MOUSE_UP,e._endCallback),t.addEventListener(Q.MOUSE_DRAG,e._dragDrawCallback),t.addEventListener(Q.MOUSE_MOVE,e._dragDrawCallback),t.addEventListener(Q.MOUSE_CLICK,e._endCallback),t.addEventListener(Q.TOUCH_END,e._endCallback),t.addEventListener(Q.TOUCH_DRAG,e._dragDrawCallback),t.addEventListener(Q.TOUCH_TAP,e._endCallback)})),ae(ga(e),"_deactivateDraw",(function(t){Ke.isInteractingWithTool=!1,t.removeEventListener(Q.MOUSE_UP,e._endCallback),t.removeEventListener(Q.MOUSE_DRAG,e._dragDrawCallback),t.removeEventListener(Q.MOUSE_MOVE,e._dragDrawCallback),t.removeEventListener(Q.MOUSE_CLICK,e._endCallback),t.removeEventListener(Q.TOUCH_END,e._endCallback),t.removeEventListener(Q.TOUCH_DRAG,e._dragDrawCallback),t.removeEventListener(Q.TOUCH_TAP,e._endCallback)})),ae(ga(e),"renderAnnotation",(function(t,n){var r,o,a=!1,i=t.viewport,l=i.element,s=nt(e.getToolName(),l);if(null===(r=s)||void 0===r||!r.length)return a;if(null===(o=s=e.filterInteractableAnnotationsForElement(l,s))||void 0===o||!o.length)return a;for(var c=e.getTargetId(i),d=i.getRenderingEngine(),u={toolGroupId:e.toolGroupId,toolName:e.getToolName(),viewportId:t.viewport.id},v=function(){var r=s[f],o=r.annotationUID,l=r.data,v=l.handles,g=v.points,h=v.activeHandleIndex;u.annotationUID=o;var p,m=e.getStyle("lineWidth",u,r),w=e.getStyle("lineDash",u,r),E=e.getStyle("color",u,r),y=g.map((function(e){return i.worldToCanvas(e)})),I=Math.abs(i.getRotation()-(l.initialRotation||0));p=Rc(90==I||270==I?[y[2],y[3],y[0],y[1]]:y);var b,C=e.configuration.centerPointRadius;if(l.cachedStats[c]&&null!=l.cachedStats[c].areaUnit){if(r.invalidated&&(e._throttledCalculateCachedStats(r,i,d,t),i instanceof J.VolumeViewport)){var _=r.metadata.referencedImageId;for(var T in l.cachedStats)T.startsWith("imageId")&&d.getStackViewports().find((function(e){var t=J.utilities.imageIdToURI(_),n=e.hasImageURI(t),r=J.utilities.imageIdToURI(e.getCurrentImageId());return n&&r!==t}))&&delete l.cachedStats[T]}}else l.cachedStats[c]={Modality:null,area:null,max:null,mean:null,stdDev:null,areaUnit:null},e._calculateCachedStats(r,i,d,t);if(!i.getRenderingEngine())return console.warn("Rendering Engine has been destroyed"),{v:a};if(!Pe(o))return"continue";ve(r)||e.editData||null===h||(b=[y[h]]),b&&Xs(n,o,"0",b,{color:E});var O="".concat(o,"-ellipse");if(Ys(n,o,"0",p[0],p[1],{color:E,lineDash:w,lineWidth:m},O),C>0&&Math.min(Math.abs(p[0][0]-p[1][0])/2,Math.abs(p[0][1]-p[1][1])/2)>3*C){var D=e._getCanvasEllipseCenter(y);Ks(n,o,"".concat("0","-center"),D,C,{color:E,lineDash:w,lineWidth:m})}a=!0;var S=e.getLinkedTextBoxStyle(u,r);if(!S.visibility)return l.handles.textBox={hasMoved:!1,worldPosition:[0,0,0],worldBoundingBox:{topLeft:[0,0,0],topRight:[0,0,0],bottomLeft:[0,0,0],bottomRight:[0,0,0]}},"continue";var k,M=e.configuration.getTextLines(l,c);if(!M||0===M.length)return"continue";l.handles.textBox.hasMoved||(k=Od(p),l.handles.textBox.worldPosition=i.canvasToWorld(k));var x=i.worldToCanvas(l.handles.textBox.worldPosition),R=rc(n,o,"1",M,x,y,{},S),P=R.x,A=R.y,N=R.width,L=R.height;l.handles.textBox.worldBoundingBox={topLeft:i.canvasToWorld([P,A]),topRight:i.canvasToWorld([P+N,A]),bottomLeft:i.canvasToWorld([P,A+L]),bottomRight:i.canvasToWorld([P+N,A+L])}},f=0;f<s.length;f++){var g=v();if("continue"!==g&&"object"===ee(g))return g.v}return a})),ae(ga(e),"_calculateCachedStats",(function(t,n,r,o){for(var a=t.data,i=o.viewportId,l=o.renderingEngineId,s=a.handles.points.map((function(e){return n.worldToCanvas(e)})),c=n.getCamera(),d=c.viewPlaneNormal,u=c.viewUp,v=dt(Rc(s),2),f=v[0],g=v[1],h=n.canvasToWorld(f),p=n.canvasToWorld(g),m=a.cachedStats,w=Object.keys(m),E=h,y=p,I=function(){var o=w[b],a=e.getTargetIdImage(o,r);if(!a)return"continue";var i=a.dimensions,l=a.imageData,s=a.metadata,c=(a.hasPixelSpacing,Oh(l,E));c[0]=Math.floor(c[0]),c[1]=Math.floor(c[1]),c[2]=Math.floor(c[2]);var v=Oh(l,y);if(v[0]=Math.floor(v[0]),v[1]=Math.floor(v[1]),v[2]=Math.floor(v[2]),e._isInsideVolume(c,v,i)){var f,g,I,C=[[Math.min(c[0],v[0]),Math.max(c[0],v[0])],[Math.min(c[1],v[1]),Math.max(c[1],v[1])],[Math.min(c[2],v[2]),Math.max(c[2],v[2])]],_={center:[(h[0]+p[0])/2,(h[1]+p[1])/2,(h[2]+p[2])/2],xRadius:Math.abs(h[0]-p[0])/2,yRadius:Math.abs(h[1]-p[1])/2,zRadius:Math.abs(h[2]-p[2])/2},T=Th(d,u,E,y),O=T.worldWidth,D=T.worldHeight,S=0===O&&0===D,k=yc(a),M=Math.abs(Math.PI*(O/2)*(D/2))/k/k,x={isPreScaled:kd(n,o),isSuvScaled:e.isSuvScaled(n,o,t.metadata.referencedImageId)},R=Sd(s.Modality,t.metadata.referencedImageId,x),P=bc(l,(function(e,t){return Pc(_,e)}),e.configuration.statsCalculator.statsCallback,C),A=e.configuration.statsCalculator.getStatistics();m[o]={Modality:s.Modality,area:M,mean:null===(f=A[1])||void 0===f?void 0:f.value,max:null===(g=A[0])||void 0===g?void 0:g.value,stdDev:null===(I=A[2])||void 0===I?void 0:I.value,statsArray:A,pointsInShape:P,isEmptyArea:S,areaUnit:Ec(0,a),modalityUnit:R}}else e.isHandleOutsideImage=!0,m[o]={Modality:s.Modality}},b=0;b<w.length;b++)I();t.invalidated=!1;var C=Q.ANNOTATION_MODIFIED,_={annotation:t,viewportId:i,renderingEngineId:l};return(0,J.triggerEvent)(J.eventTarget,C,_),m})),ae(ga(e),"_isInsideVolume",(function(e,t,n){return J.utilities.indexWithinDimensions(e,n)&&J.utilities.indexWithinDimensions(t,n)})),e._throttledCalculateCachedStats=fc(e._calculateCachedStats,100,{trailing:!0}),e}return re(o,[{key:"_pointInEllipseCanvas",value:function(e,t){var n=e.width/2,r=e.height/2;if(n<=0||r<=0)return!1;var o=[e.left+n,e.top+r],a=[t[0]-o[0],t[1]-o[1]];return a[0]*a[0]/(n*n)+a[1]*a[1]/(r*r)<=1}},{key:"_getCanvasEllipseCenter",value:function(e){var t=dt(e,4),n=t[0],r=t[1],o=t[2],a=t[3],i=[o[0],r[1]],l=[a[0],n[1]];return[(i[0]+l[0])/2,(i[1]+l[1])/2]}}]),o}(Id);function Sh(e,t){var n=e.cachedStats[t],r=n.area,o=n.mean,a=n.stdDev,i=n.max,l=n.isEmptyArea,s=n.areaUnit,c=n.modalityUnit,d=[];if(r){var u=l?"Area: Oblique not supported":"Area: ".concat(Oc(r)," ").concat(s);d.push(u)}return o&&d.push("Mean: ".concat(Oc(o)," ").concat(c)),i&&d.push("Max: ".concat(Oc(i)," ").concat(c)),a&&d.push("Std Dev: ".concat(Oc(a)," ").concat(c)),d}ae(Dh,"toolName",void 0),Dh.toolName="EllipticalROI";var kh=Dh;function Mh(e){var t=dt(e,2);return Ou(t[0],t[1])}function xh(e){var t=dt(e,2),n=t[0],r=Ou(n,t[1]);return[[n[0]-r,n[1]-r],[n[0]+r,n[1]+r]]}var Rh=J.utilities.transformWorldToIndex,Ph=function(e){pa(o,e);var t,n,r=(t=o,n=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,r=wa(t);if(n){var o=wa(this).constructor;e=Reflect.construct(r,arguments,o)}else e=r.apply(this,arguments);return ma(this,e)});function o(){var e,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{supportedInteractionTypes:["Mouse","Touch"],configuration:{shadow:!0,preventHandleOutsideImage:!1,centerPointRadius:0,getTextLines:Ah,statsCalculator:Rd}};return oe(this,o),ae(ga(e=r.call(this,t,n)),"touchDragCallback",void 0),ae(ga(e),"mouseDragCallback",void 0),ae(ga(e),"_throttledCalculateCachedStats",void 0),ae(ga(e),"editData",void 0),ae(ga(e),"isDrawing",void 0),ae(ga(e),"isHandleOutsideImage",!1),ae(ga(e),"addNewAnnotation",(function(t){var n=t.detail,r=n.currentPoints,o=n.element,a=r.world,i=(r.canvas,(0,J.getEnabledElement)(o)),l=i.viewport,s=i.renderingEngine;e.isDrawing=!0;var c=l.getCamera(),d=c.viewPlaneNormal,u=c.viewUp,v=e.getReferencedImageId(l,a,d,u),f=l.getFrameOfReferenceUID(),g={highlighted:!0,invalidated:!0,metadata:{toolName:e.getToolName(),viewPlaneNormal:Lr(d),viewUp:Lr(u),FrameOfReferenceUID:f,referencedImageId:v},data:{label:"",handles:{textBox:{hasMoved:!1,worldPosition:[0,0,0],worldBoundingBox:{topLeft:[0,0,0],topRight:[0,0,0],bottomLeft:[0,0,0],bottomRight:[0,0,0]}},points:[Lr(a),Lr(a)],activeHandleIndex:null},cachedStats:{}}};rt(g,o);var h=ud(o,e.getToolName());return e.editData={annotation:g,viewportIdsToRender:h,newAnnotation:!0,hasMoved:!1},e._activateDraw(o),gs(o),t.preventDefault(),ca(s,h),g})),ae(ga(e),"isPointNearTool",(function(e,t,n,r){var o=(0,J.getEnabledElement)(e).viewport,a=t.data.handles.points.map((function(e){return o.worldToCanvas(e)})),i=Mh(a),l=Mh([a[0],n]);return Math.abs(l-i)<r/2})),ae(ga(e),"toolSelectedCallback",(function(t,n){var r=t.detail.element;n.highlighted=!0;var o=ud(r,e.getToolName());e.editData={annotation:n,viewportIdsToRender:o,movingTextBox:!1},gs(r),e._activateModify(r);var a=(0,J.getEnabledElement)(r).renderingEngine;ca(a,o),t.preventDefault()})),ae(ga(e),"handleSelectedCallback",(function(t,n,r){var o=t.detail.element,a=n.data;n.highlighted=!0;var i,l=!1;r.worldPosition?l=!0:i=a.handles.points.findIndex((function(e){return e===r}));var s=ud(o,e.getToolName());e.editData={annotation:n,viewportIdsToRender:s,handleIndex:i,movingTextBox:l},e._activateModify(o),gs(o);var c=(0,J.getEnabledElement)(o).renderingEngine;ca(c,s),t.preventDefault()})),ae(ga(e),"_endCallback",(function(t){var n=t.detail.element,r=e.editData,o=r.annotation,a=r.viewportIdsToRender,i=r.newAnnotation,l=r.hasMoved,s=o.data;if(!i||l){o.highlighted=!1,s.handles.activeHandleIndex=null,e._deactivateModify(n),e._deactivateDraw(n),fs(n);var c=(0,J.getEnabledElement)(n).renderingEngine;if(e.editData=null,e.isDrawing=!1,e.isHandleOutsideImage&&e.configuration.preventHandleOutsideImage&&at(o.annotationUID),ca(c,a),i){var d=Q.ANNOTATION_COMPLETED,u={annotation:o};(0,J.triggerEvent)(J.eventTarget,d,u)}}})),ae(ga(e),"_dragDrawCallback",(function(t){e.isDrawing=!0;var n=t.detail,r=n.element,o=n.currentPoints.canvas,a=(0,J.getEnabledElement)(r),i=a.renderingEngine,l=a.viewport.canvasToWorld,s=e.editData,c=s.annotation,d=s.viewportIdsToRender,u=c.data;u.handles.points=[u.handles.points[0],l(o)],c.invalidated=!0,e.editData.hasMoved=!0,ca(i,d)})),ae(ga(e),"_dragModifyCallback",(function(t){e.isDrawing=!0;var n=t.detail,r=n.element,o=e.editData,a=o.annotation,i=o.viewportIdsToRender,l=o.handleIndex,s=o.movingTextBox,c=a.data;if(s){var d=n.deltaPoints.world,u=c.handles.textBox,v=u.worldPosition;v[0]+=d[0],v[1]+=d[1],v[2]+=d[2],u.hasMoved=!0}else if(void 0===l){var f=n.deltaPoints.world;c.handles.points.forEach((function(e){e[0]+=f[0],e[1]+=f[1],e[2]+=f[2]})),a.invalidated=!0}else e._dragHandle(t),a.invalidated=!0;var g=(0,J.getEnabledElement)(r).renderingEngine;ca(g,i)})),ae(ga(e),"_dragHandle",(function(t){var n=t.detail,r=n.element,o=(0,J.getEnabledElement)(r).viewport,a=o.canvasToWorld,i=o.worldToCanvas,l=e.editData,s=l.annotation,c=l.handleIndex,d=s.data.handles.points,u=d.map((function(e){return i(e)})),v=n.currentPoints.canvas;if(0===c){var f=v[0]-u[0][0],g=v[1]-u[0][1],h=v,p=[u[1][0]+f,u[1][1]+g];d[0]=a(h),d[1]=a(p)}else d[1]=a(v)})),ae(ga(e),"cancel",(function(t){if(e.isDrawing){e.isDrawing=!1,e._deactivateDraw(t),e._deactivateModify(t),fs(t);var n=e.editData,r=n.annotation,o=n.viewportIdsToRender,a=n.newAnnotation,i=r.data;r.highlighted=!1,i.handles.activeHandleIndex=null;var l=(0,J.getEnabledElement)(t).renderingEngine;if(ca(l,o),a){var s=Q.ANNOTATION_COMPLETED,c={annotation:r};(0,J.triggerEvent)(J.eventTarget,s,c)}return e.editData=null,r.annotationUID}})),ae(ga(e),"_activateModify",(function(t){Ke.isInteractingWithTool=!0,t.addEventListener(Q.MOUSE_UP,e._endCallback),t.addEventListener(Q.MOUSE_DRAG,e._dragModifyCallback),t.addEventListener(Q.MOUSE_CLICK,e._endCallback),t.addEventListener(Q.TOUCH_END,e._endCallback),t.addEventListener(Q.TOUCH_DRAG,e._dragModifyCallback),t.addEventListener(Q.TOUCH_TAP,e._endCallback)})),ae(ga(e),"_deactivateModify",(function(t){Ke.isInteractingWithTool=!1,t.removeEventListener(Q.MOUSE_UP,e._endCallback),t.removeEventListener(Q.MOUSE_DRAG,e._dragModifyCallback),t.removeEventListener(Q.MOUSE_CLICK,e._endCallback),t.removeEventListener(Q.TOUCH_END,e._endCallback),t.removeEventListener(Q.TOUCH_DRAG,e._dragModifyCallback),t.removeEventListener(Q.TOUCH_TAP,e._endCallback)})),ae(ga(e),"_activateDraw",(function(t){Ke.isInteractingWithTool=!0,t.addEventListener(Q.MOUSE_UP,e._endCallback),t.addEventListener(Q.MOUSE_DRAG,e._dragDrawCallback),t.addEventListener(Q.MOUSE_MOVE,e._dragDrawCallback),t.addEventListener(Q.MOUSE_CLICK,e._endCallback),t.addEventListener(Q.TOUCH_END,e._endCallback),t.addEventListener(Q.TOUCH_DRAG,e._dragDrawCallback),t.addEventListener(Q.TOUCH_TAP,e._endCallback)})),ae(ga(e),"_deactivateDraw",(function(t){Ke.isInteractingWithTool=!1,t.removeEventListener(Q.MOUSE_UP,e._endCallback),t.removeEventListener(Q.MOUSE_DRAG,e._dragDrawCallback),t.removeEventListener(Q.MOUSE_MOVE,e._dragDrawCallback),t.removeEventListener(Q.MOUSE_CLICK,e._endCallback),t.removeEventListener(Q.TOUCH_END,e._endCallback),t.removeEventListener(Q.TOUCH_DRAG,e._dragDrawCallback),t.removeEventListener(Q.TOUCH_TAP,e._endCallback)})),ae(ga(e),"renderAnnotation",(function(t,n){var r,o,a=!1,i=t.viewport,l=i.element,s=nt(e.getToolName(),l);if(null===(r=s)||void 0===r||!r.length)return a;if(null===(o=s=e.filterInteractableAnnotationsForElement(l,s))||void 0===o||!o.length)return a;for(var c=e.getTargetId(i),d=i.getRenderingEngine(),u={toolGroupId:e.toolGroupId,toolName:e.getToolName(),viewportId:t.viewport.id},v=function(){var r=s[f],o=r.annotationUID,l=r.data,v=l.handles,g=v.points,h=v.activeHandleIndex;u.annotationUID=o;var p,m=e.getStyle("lineWidth",u,r),w=e.getStyle("lineDash",u,r),E=e.getStyle("color",u,r),y=g.map((function(e){return i.worldToCanvas(e)})),I=y[0],b=Mh(y),C=xh(y),_=e.configuration.centerPointRadius;if(l.cachedStats[c]&&null!=l.cachedStats[c].areaUnit){if(r.invalidated&&(e._throttledCalculateCachedStats(r,i,d,t),i instanceof J.VolumeViewport)){var T=r.metadata.referencedImageId;for(var O in l.cachedStats)O.startsWith("imageId")&&d.getStackViewports().find((function(e){var t=J.utilities.imageIdToURI(T),n=e.hasImageURI(t),r=J.utilities.imageIdToURI(e.getCurrentImageId());return n&&r!==t}))&&delete l.cachedStats[O]}}else l.cachedStats[c]={Modality:null,area:null,max:null,mean:null,stdDev:null,areaUnit:null,radius:null,radiusUnit:null,perimeter:null},e._calculateCachedStats(r,i,d,t);if(!i.getRenderingEngine())return console.warn("Rendering Engine has been destroyed"),{v:a};if(!Pe(o))return"continue";ve(r)||e.editData||null===h||(p=[y[h]]),p&&Xs(n,o,"0",p,{color:E});var D="".concat(o,"-circle");Ks(n,o,"0",I,b,{color:E,lineDash:w,lineWidth:m},D),_>0&&b>3*_&&Ks(n,o,"".concat("0","-center"),I,_,{color:E,lineDash:w,lineWidth:m}),a=!0;var S=e.getLinkedTextBoxStyle(u,r);if(!S.visibility)return l.handles.textBox={hasMoved:!1,worldPosition:[0,0,0],worldBoundingBox:{topLeft:[0,0,0],topRight:[0,0,0],bottomLeft:[0,0,0],bottomRight:[0,0,0]}},"continue";var k,M=e.configuration.getTextLines(l,c);if(!M||0===M.length)return"continue";l.handles.textBox.hasMoved||(k=Od(C),l.handles.textBox.worldPosition=i.canvasToWorld(k));var x=i.worldToCanvas(l.handles.textBox.worldPosition),R=rc(n,o,"1",M,x,y,{},S),P=R.x,A=R.y,N=R.width,L=R.height;l.handles.textBox.worldBoundingBox={topLeft:i.canvasToWorld([P,A]),topRight:i.canvasToWorld([P+N,A]),bottomLeft:i.canvasToWorld([P,A+L]),bottomRight:i.canvasToWorld([P+N,A+L])}},f=0;f<s.length;f++){var g=v();if("continue"!==g&&"object"===ee(g))return g.v}return a})),ae(ga(e),"_calculateCachedStats",(function(t,n,r,o){for(var a=t.data,i=o.viewportId,l=o.renderingEngineId,s=a.handles.points.map((function(e){return n.worldToCanvas(e)})),c=n.getCamera(),d=c.viewPlaneNormal,u=c.viewUp,v=dt(xh(s),2),f=v[0],g=v[1],h=n.canvasToWorld(f),p=n.canvasToWorld(g),m=a.cachedStats,w=Object.keys(m),E=h,y=p,I=function(){var o=w[b],a=e.getTargetIdImage(o,r);if(!a)return"continue";var i=a.dimensions,l=a.imageData,s=a.metadata,c=(a.hasPixelSpacing,Rh(l,E));c[0]=Math.floor(c[0]),c[1]=Math.floor(c[1]),c[2]=Math.floor(c[2]);var v=Rh(l,y);if(v[0]=Math.floor(v[0]),v[1]=Math.floor(v[1]),v[2]=Math.floor(v[2]),e._isInsideVolume(c,v,i)){var f,g,I,C=[[Math.min(c[0],v[0]),Math.max(c[0],v[0])],[Math.min(c[1],v[1]),Math.max(c[1],v[1])],[Math.min(c[2],v[2]),Math.max(c[2],v[2])]],_={center:[(h[0]+p[0])/2,(h[1]+p[1])/2,(h[2]+p[2])/2],xRadius:Math.abs(h[0]-p[0])/2,yRadius:Math.abs(h[1]-p[1])/2,zRadius:Math.abs(h[2]-p[2])/2},T=Th(d,u,E,y),O=T.worldWidth,D=T.worldHeight,S=0===O&&0===D,k=yc(a),M=function(e){var t;return(null===(t=e.calibration)||void 0===t?void 0:t.aspect)||1}(a),x=Math.abs(Math.PI*(O/k/2)*(D/M/k/2)),R={isPreScaled:kd(n,o),isSuvScaled:e.isSuvScaled(n,o,t.metadata.referencedImageId)},P=Sd(s.Modality,t.metadata.referencedImageId,R),A=bc(l,(function(e,t){return Pc(_,e)}),e.configuration.statsCalculator.statsCallback,C),N=e.configuration.statsCalculator.getStatistics();m[o]={Modality:s.Modality,area:x,mean:null===(f=N[1])||void 0===f?void 0:f.value,max:null===(g=N[0])||void 0===g?void 0:g.value,stdDev:null===(I=N[2])||void 0===I?void 0:I.value,statsArray:N,pointsInShape:A,isEmptyArea:S,areaUnit:Ec(0,a),radius:O/2/k,radiusUnit:wc(0,a),perimeter:2*Math.PI*(O/2)/k,modalityUnit:P}}else e.isHandleOutsideImage=!0,m[o]={Modality:s.Modality}},b=0;b<w.length;b++)I();t.invalidated=!1;var C=Q.ANNOTATION_MODIFIED,_={annotation:t,viewportId:i,renderingEngineId:l};return(0,J.triggerEvent)(J.eventTarget,C,_),m})),ae(ga(e),"_isInsideVolume",(function(e,t,n){return J.utilities.indexWithinDimensions(e,n)&&J.utilities.indexWithinDimensions(t,n)})),e._throttledCalculateCachedStats=fc(e._calculateCachedStats,100,{trailing:!0}),e}return re(o)}(Id);function Ah(e,t){var n=e.cachedStats[t],r=n.radius,o=n.radiusUnit,a=n.area,i=n.mean,l=n.stdDev,s=n.max,c=n.isEmptyArea,d=(n.Modality,n.areaUnit),u=n.modalityUnit,v=[];if(r){var f=c?"Radius: Oblique not supported":"Radius: ".concat(Oc(r)," ").concat(o);v.push(f)}if(a){var g=c?"Area: Oblique not supported":"Area: ".concat(Oc(a)," ").concat(d);v.push(g)}return i&&v.push("Mean: ".concat(Oc(i)," ").concat(u)),s&&v.push("Max: ".concat(Oc(s)," ").concat(u)),l&&v.push("Std Dev: ".concat(Oc(l)," ").concat(u)),v}ae(Ph,"toolName",void 0),Ph.toolName="CircleROI";var Nh=Ph;var Lh=J.utilities.transformWorldToIndex,Uh=function(e){pa(o,e);var t,n,r=(t=o,n=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,r=wa(t);if(n){var o=wa(this).constructor;e=Reflect.construct(r,arguments,o)}else e=r.apply(this,arguments);return ma(this,e)});function o(){var e,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{supportedInteractionTypes:["Mouse","Touch"],configuration:{preventHandleOutsideImage:!1,getTextLines:Vh}};return oe(this,o),ae(ga(e=r.call(this,t,n)),"touchDragCallback",void 0),ae(ga(e),"mouseDragCallback",void 0),ae(ga(e),"_throttledCalculateCachedStats",void 0),ae(ga(e),"editData",void 0),ae(ga(e),"isDrawing",void 0),ae(ga(e),"isHandleOutsideImage",void 0),ae(ga(e),"preventHandleOutsideImage",void 0),ae(ga(e),"isPointNearTool",(function(e,t,n,r){var o=(0,J.getEnabledElement)(e).viewport,a=t.data.handles.points,i=o.worldToCanvas(a[0]),l=o.worldToCanvas(a[1]),s={start:{x:i[0],y:i[1]},end:{x:l[0],y:l[1]}},c=_d([s.start.x,s.start.y],[s.end.x,s.end.y],[n[0],n[1]]);return c<=r||(i=o.worldToCanvas(a[2]),l=o.worldToCanvas(a[3]),(c=_d([(s={start:{x:i[0],y:i[1]},end:{x:l[0],y:l[1]}}).start.x,s.start.y],[s.end.x,s.end.y],[n[0],n[1]]))<=r)})),ae(ga(e),"toolSelectedCallback",(function(t,n){var r=t.detail.element;n.highlighted=!0;var o=ud(r,e.getToolName());e.editData={annotation:n,viewportIdsToRender:o,movingTextBox:!1},e._activateModify(r);var a=(0,J.getEnabledElement)(r).renderingEngine;ca(a,o),gs(r),t.preventDefault()})),ae(ga(e),"handleSelectedCallback",(function(t,n,r){var o=t.detail.element,a=n.data;n.highlighted=!0;var i,l=!1;r.worldPosition?l=!0:i=a.handles.points.findIndex((function(e){return e===r}));var s=ud(o,e.getToolName());gs(o),e.editData={annotation:n,viewportIdsToRender:s,handleIndex:i,movingTextBox:l},e._activateModify(o);var c=(0,J.getEnabledElement)(o).renderingEngine;ca(c,s),t.preventDefault()})),ae(ga(e),"_endCallback",(function(t){var n=t.detail.element,r=e.editData,o=r.annotation,a=r.viewportIdsToRender,i=r.newAnnotation,l=r.hasMoved,s=o.data;if(!i||l){s.handles.activeHandleIndex=null,e._deactivateModify(n),e._deactivateDraw(n),fs(n);var c=(0,J.getEnabledElement)(n).renderingEngine;if(void 0!==e.editData.handleIndex){var d=s.handles.points,u=xs.vec3.distance(d[0],d[1]);if(xs.vec3.distance(d[2],d[3])>u){var v=[Lr(d[2]),Lr(d[3])],f=Lr(d[0]),g=Lr(d[1]),h=xs.vec2.create();xs.vec2.set(h,v[1][0]-v[0][0],v[1][1]-v[1][0]);var p=xs.vec2.create();xs.vec2.set(p,-h[1],h[0]);var m,w=xs.vec2.create();xs.vec2.set(w,g[0]-f[0],g[1]-f[0]),m=xs.vec2.dot(w,p)>0?[f,g]:[g,f],s.handles.points=[v[0],v[1],m[0],m[1]]}}if(e.isHandleOutsideImage&&e.configuration.preventHandleOutsideImage&&at(o.annotationUID),ca(c,a),i){var E=Q.ANNOTATION_COMPLETED,y={annotation:o};(0,J.triggerEvent)(J.eventTarget,E,y)}e.editData=null,e.isDrawing=!1}})),ae(ga(e),"_dragDrawCallback",(function(t){e.isDrawing=!0;var n=t.detail,r=n.currentPoints,o=n.element,a=(0,J.getEnabledElement)(o),i=a.renderingEngine,l=a.viewport,s=l.worldToCanvas,c=e.editData,d=c.annotation,u=c.viewportIdsToRender,v=c.handleIndex,f=d.data,g=r.world;f.handles.points[v]=Lr(g);var h=f.handles.points.map(s),p={x:h[0][0],y:h[0][1]},m={x:h[1][0],y:h[1][1]},w=(h[2][0],h[2][1],h[3][0],h[3][1],xs.vec2.distance(h[0],h[1])/3),E=p.x-m.x,y=p.y-m.y,I=Math.sqrt(E*E+y*y),b=E/I,C=y/I,_=(p.x+m.x)/2,T=(p.y+m.y)/2,O=_+w*C,D=T-w*b,S=_-w*C,k=T+w*b;f.handles.points[2]=l.canvasToWorld([O,D]),f.handles.points[3]=l.canvasToWorld([S,k]),d.invalidated=!0,ca(i,u),e.editData.hasMoved=!0})),ae(ga(e),"_dragModifyCallback",(function(t){e.isDrawing=!0;var n=t.detail,r=n.element,o=(0,J.getEnabledElement)(r).renderingEngine,a=e.editData,i=a.annotation,l=a.viewportIdsToRender,s=a.handleIndex,c=a.movingTextBox,d=i.data;if(c){var u=n.deltaPoints.world,v=d.handles.textBox,f=v.worldPosition;f[0]+=u[0],f[1]+=u[1],f[2]+=u[2],v.hasMoved=!0}else if(void 0===s){var g=n.deltaPoints.world;d.handles.points.forEach((function(e){e[0]+=g[0],e[1]+=g[1],e[2]+=g[2]})),i.invalidated=!0}else e._dragModifyHandle(t),i.invalidated=!0;ca(o,l)})),ae(ga(e),"_dragModifyHandle",(function(t){var n=t.detail,r=n.currentPoints,o=n.element,a=(0,J.getEnabledElement)(o).viewport,i=e.editData,l=i.annotation,s=i.handleIndex,c=l.data,d=r.world,u=[a.worldToCanvas(c.handles.points[0]),a.worldToCanvas(c.handles.points[1]),a.worldToCanvas(c.handles.points[2]),a.worldToCanvas(c.handles.points[3])],v={start:{x:u[0][0],y:u[0][1]},end:{x:u[1][0],y:u[1][1]}},f={start:{x:u[2][0],y:u[2][1]},end:{x:u[3][0],y:u[3][1]}},g=Lr(d),h=a.worldToCanvas(g);if(0===s||1===s){var p=u[0===s?1:0],m=xs.vec2.set(xs.vec2.create(),h[0]-p[0],h[1]-p[1]),w=xs.vec2.set(xs.vec2.create(),u[s][0]-p[0],u[s][1]-p[1]);xs.vec2.normalize(m,m),xs.vec2.normalize(w,w);var E={start:{x:p[0],y:p[1]},end:{x:h[0],y:h[1]}};if(e._movingLongAxisWouldPutItThroughShortAxis(E,f))return;var y=p,I=e._getSignedAngle(w,m),b=u[2][0],C=u[2][1],_=u[3][0],T=u[3][1];b-=y[0],C-=y[1],_-=y[0],T-=y[1];var O=b*Math.cos(I)-C*Math.sin(I),D=b*Math.sin(I)+C*Math.cos(I),S=_*Math.cos(I)-T*Math.sin(I),k=_*Math.sin(I)+T*Math.cos(I);b=O+y[0],C=D+y[1],_=S+y[0],T=k+y[1];var M=a.canvasToWorld([b,C]),x=a.canvasToWorld([_,T]);c.handles.points[s]=g,c.handles.points[2]=M,c.handles.points[3]=x}else{var R=2===s?3:2,P={longLineSegment:{start:v.start,end:v.end},shortLineSegment:{start:f.start,end:f.end}},A=xs.vec2.subtract(xs.vec2.create(),[P.longLineSegment.end.x,P.longLineSegment.end.y],[P.longLineSegment.start.x,P.longLineSegment.start.y]),N=xs.vec2.normalize(xs.vec2.create(),A),L=xs.vec2.subtract(xs.vec2.create(),[h[0],h[1]],[u[s][0],u[s][1]]),U=xs.vec2.length(L),V=e._getSignedAngle(N,L),j=Math.cos(V)*U,B=xs.vec2.scaleAndAdd(xs.vec2.create(),[u[R][0],u[R][1]],N,j);if(e._movingLongAxisWouldPutItThroughShortAxis({start:{x:h[0],y:h[1]},end:{x:B[0],y:B[1]}},{start:{x:P.longLineSegment.start.x,y:P.longLineSegment.start.y},end:{x:P.longLineSegment.end.x,y:P.longLineSegment.end.y}}))return;if(!fu([h[0],h[1]],[B[0],B[1]],[v.start.x,v.start.y],[v.end.x,v.end.y]))return;c.handles.points[R]=a.canvasToWorld(B),c.handles.points[s]=g}})),ae(ga(e),"cancel",(function(t){if(e.isDrawing){e.isDrawing=!1,e._deactivateDraw(t),e._deactivateModify(t),fs(t);var n=e.editData,r=n.annotation,o=n.viewportIdsToRender,a=n.newAnnotation,i=r.data;r.highlighted=!1,i.handles.activeHandleIndex=null;var l=(0,J.getEnabledElement)(t).renderingEngine;if(ca(l,o),a){var s=Q.ANNOTATION_COMPLETED,c={annotation:r};(0,J.triggerEvent)(J.eventTarget,s,c)}return e.editData=null,r.annotationUID}})),ae(ga(e),"_activateDraw",(function(t){Ke.isInteractingWithTool=!0,t.addEventListener(Q.MOUSE_UP,e._endCallback),t.addEventListener(Q.MOUSE_DRAG,e._dragDrawCallback),t.addEventListener(Q.MOUSE_MOVE,e._dragDrawCallback),t.addEventListener(Q.MOUSE_CLICK,e._endCallback),t.addEventListener(Q.TOUCH_TAP,e._endCallback),t.addEventListener(Q.TOUCH_END,e._endCallback),t.addEventListener(Q.TOUCH_DRAG,e._dragDrawCallback)})),ae(ga(e),"_deactivateDraw",(function(t){Ke.isInteractingWithTool=!1,t.removeEventListener(Q.MOUSE_UP,e._endCallback),t.removeEventListener(Q.MOUSE_DRAG,e._dragDrawCallback),t.removeEventListener(Q.MOUSE_MOVE,e._dragDrawCallback),t.removeEventListener(Q.MOUSE_CLICK,e._endCallback),t.removeEventListener(Q.TOUCH_TAP,e._endCallback),t.removeEventListener(Q.TOUCH_END,e._endCallback),t.removeEventListener(Q.TOUCH_DRAG,e._dragDrawCallback)})),ae(ga(e),"_activateModify",(function(t){Ke.isInteractingWithTool=!0,t.addEventListener(Q.MOUSE_UP,e._endCallback),t.addEventListener(Q.MOUSE_DRAG,e._dragModifyCallback),t.addEventListener(Q.MOUSE_CLICK,e._endCallback),t.addEventListener(Q.TOUCH_END,e._endCallback),t.addEventListener(Q.TOUCH_DRAG,e._dragModifyCallback),t.addEventListener(Q.TOUCH_TAP,e._endCallback)})),ae(ga(e),"_deactivateModify",(function(t){Ke.isInteractingWithTool=!1,t.removeEventListener(Q.MOUSE_UP,e._endCallback),t.removeEventListener(Q.MOUSE_DRAG,e._dragModifyCallback),t.removeEventListener(Q.MOUSE_CLICK,e._endCallback),t.removeEventListener(Q.TOUCH_END,e._endCallback),t.removeEventListener(Q.TOUCH_DRAG,e._dragModifyCallback),t.removeEventListener(Q.TOUCH_TAP,e._endCallback)})),ae(ga(e),"renderAnnotation",(function(t,n){var r,o,a=!0,i=t.viewport,l=i.element,s=nt(e.getToolName(),l);if(null===(r=s)||void 0===r||!r.length)return a;if(null===(o=s=e.filterInteractableAnnotationsForElement(l,s))||void 0===o||!o.length)return a;for(var c=e.getTargetId(i),d=i.getRenderingEngine(),u={toolGroupId:e.toolGroupId,toolName:e.getToolName(),viewportId:t.viewport.id},v=0;v<s.length;v++){var f=s[v],g=f.annotationUID,h=f.data,p=h.handles,m=p.points,w=p.activeHandleIndex,E=m.map((function(e){return i.worldToCanvas(e)}));u.annotationUID=g;var y=e.getStyle("lineWidth",u,f),I=e.getStyle("lineDash",u,f),b=e.getStyle("color",u,f),C=e.getStyle("shadow",u,f);if(h.cachedStats[c]&&null!=h.cachedStats[c].unit?f.invalidated&&e._throttledCalculateCachedStats(f,d,t):(h.cachedStats[c]={length:null,width:null,unit:null},e._calculateCachedStats(f,d,t)),!i.getRenderingEngine())return console.warn("Rendering Engine has been destroyed"),a;var _=void 0;if(Pe(g)){ve(f)||e.editData||null===w||(_=[E[w]]),_&&Xs(n,g,"0",_,{color:b});var T="".concat(g,"-line-1"),O="".concat(g,"-line-2");Zs(n,g,"0",E[0],E[1],{color:b,lineDash:I,lineWidth:y,shadow:C},T),Zs(n,g,"1",E[2],E[3],{color:b,lineDash:I,lineWidth:y,shadow:C},O),a=!0;var D=e.getLinkedTextBoxStyle(u,f);if(D.visibility){var S=e.configuration.getTextLines(h,c);if(S&&0!==S.length){var k=void 0;h.handles.textBox.hasMoved||(k=Od(E),h.handles.textBox.worldPosition=i.canvasToWorld(k));var M=i.worldToCanvas(h.handles.textBox.worldPosition),x=rc(n,g,"1",S,M,E,{},D),R=x.x,P=x.y,A=x.width,N=x.height;h.handles.textBox.worldBoundingBox={topLeft:i.canvasToWorld([R,P]),topRight:i.canvasToWorld([R+A,P]),bottomLeft:i.canvasToWorld([R,P+N]),bottomRight:i.canvasToWorld([R+A,P+N])}}}else h.handles.textBox={hasMoved:!1,worldPosition:[0,0,0],worldBoundingBox:{topLeft:[0,0,0],topRight:[0,0,0],bottomLeft:[0,0,0],bottomRight:[0,0,0]}}}}return a})),ae(ga(e),"_movingLongAxisWouldPutItThroughShortAxis",(function(e,t){var n=xs.vec2.create();xs.vec2.set(n,t.end.x-t.start.x,t.end.y-t.start.y),xs.vec2.normalize(n,n);var r={start:{x:t.start.x-10*n[0],y:t.start.y-10*n[1]},end:{x:t.end.x+10*n[0],y:t.end.y+10*n[1]}};return!fu([r.start.x,r.start.y],[r.end.x,r.end.y],[e.start.x,e.start.y],[e.end.x,e.end.y])})),ae(ga(e),"_calculateCachedStats",(function(t,n,r){for(var o=t.data,a=r.viewportId,i=r.renderingEngineId,l=o.handles.points[0],s=o.handles.points[1],c=o.handles.points[2],d=o.handles.points[3],u=o.cachedStats,v=Object.keys(u),f=0;f<v.length;f++){var g=v[f],h=e.getTargetIdImage(g,n);if(h){var p=h.imageData,m=h.dimensions,w=yc(h),E=e._calculateLength(l,s)/w,y=e._calculateLength(c,d)/w,I=E>y?E:y,b=E>y?y:E,C=Lh(p,l),_=Lh(p,s),T=Lh(p,c),O=Lh(p,d);e._isInsideVolume(C,_,T,O,m)?e.isHandleOutsideImage=!1:e.isHandleOutsideImage=!0,u[g]={length:I,width:b,unit:wc(0,h)}}}t.invalidated=!1;var D=Q.ANNOTATION_MODIFIED,S={annotation:t,viewportId:a,renderingEngineId:i};return(0,J.triggerEvent)(J.eventTarget,D,S),u})),ae(ga(e),"_isInsideVolume",(function(e,t,n,r,o){return J.utilities.indexWithinDimensions(e,o)&&J.utilities.indexWithinDimensions(t,o)&&J.utilities.indexWithinDimensions(n,o)&&J.utilities.indexWithinDimensions(r,o)})),ae(ga(e),"_getSignedAngle",(function(e,t){return Math.atan2(e[0]*t[1]-e[1]*t[0],e[0]*t[0]+e[1]*t[1])})),e._throttledCalculateCachedStats=fc(e._calculateCachedStats,100,{trailing:!0}),e}return re(o,[{key:"addNewAnnotation",value:function(e){var t=e.detail,n=t.currentPoints,r=t.element,o=n.world,a=(0,J.getEnabledElement)(r),i=a.viewport,l=a.renderingEngine;this.isDrawing=!0;var s=i.getCamera(),c=s.viewPlaneNormal,d=s.viewUp,u=this.getReferencedImageId(i,o,c,d),v=i.getFrameOfReferenceUID(),f={highlighted:!0,invalidated:!0,metadata:{toolName:this.getToolName(),viewPlaneNormal:Lr(c),viewUp:Lr(d),FrameOfReferenceUID:v,referencedImageId:u},data:{handles:{points:[Lr(o),Lr(o),Lr(o),Lr(o)],textBox:{hasMoved:!1,worldPosition:[0,0,0],worldBoundingBox:{topLeft:[0,0,0],topRight:[0,0,0],bottomLeft:[0,0,0],bottomRight:[0,0,0]}},activeHandleIndex:null},label:"",cachedStats:{}}};rt(f,r);var g=ud(r,this.getToolName());return this.editData={annotation:f,viewportIdsToRender:g,handleIndex:1,movingTextBox:!1,newAnnotation:!0,hasMoved:!1},this._activateDraw(r),gs(r),e.preventDefault(),ca(l,g),f}},{key:"_calculateLength",value:function(e,t){var n=e[0]-t[0],r=e[1]-t[1],o=e[2]-t[2];return Math.sqrt(n*n+r*r+o*o)}}]),o}(Id);function Vh(e,t){var n=e.cachedStats[t],r=n.length,o=n.width,a=n.unit;if(void 0!==r)return["L: ".concat(Oc(r)," ").concat(a),"W: ".concat(Oc(o)," ").concat(a)]}ae(Uh,"toolName",void 0),Uh.toolName="Bidirectional";var jh=Uh;var Bh=function(e){pa(o,e);var t,n,r=(t=o,n=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,r=wa(t);if(n){var o=wa(this).constructor;e=Reflect.construct(r,arguments,o)}else e=r.apply(this,arguments);return ma(this,e)});function o(){var e,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{supportedInteractionTypes:["Mouse","Touch"],configuration:{shadow:!0,getTextCallback:Wh,changeTextCallback:Fh,preventHandleOutsideImage:!1,arrowFirst:!0}};return oe(this,o),ae(ga(e=r.call(this,t,n)),"touchDragCallback",void 0),ae(ga(e),"mouseDragCallback",void 0),ae(ga(e),"_throttledCalculateCachedStats",void 0),ae(ga(e),"editData",void 0),ae(ga(e),"isDrawing",void 0),ae(ga(e),"isHandleOutsideImage",void 0),ae(ga(e),"addNewAnnotation",(function(t){var n=t.detail,r=n.currentPoints,o=n.element,a=r.world,i=(0,J.getEnabledElement)(o),l=i.viewport,s=i.renderingEngine;gs(o),e.isDrawing=!0;var c=l.getCamera(),d=c.viewPlaneNormal,u=c.viewUp,v=e.getReferencedImageId(l,a,d,u),f=e.configuration.arrowFirst,g=l.getFrameOfReferenceUID(),h={highlighted:!0,invalidated:!0,metadata:{toolName:e.getToolName(),viewPlaneNormal:Lr(d),viewUp:Lr(u),FrameOfReferenceUID:g,referencedImageId:v},data:{text:"",handles:{points:[Lr(a),Lr(a)],activeHandleIndex:null,arrowFirst:f,textBox:{hasMoved:!1,worldPosition:[0,0,0],worldBoundingBox:{topLeft:[0,0,0],topRight:[0,0,0],bottomLeft:[0,0,0],bottomRight:[0,0,0]}}},label:""}};rt(h,o);var p=ud(o,e.getToolName());return e.editData={annotation:h,viewportIdsToRender:p,handleIndex:1,movingTextBox:!1,newAnnotation:!0,hasMoved:!1},e._activateDraw(o),t.preventDefault(),ca(s,p),h})),ae(ga(e),"isPointNearTool",(function(e,t,n,r){var o=(0,J.getEnabledElement)(e).viewport,a=dt(t.data.handles.points,2),i=a[0],l=a[1],s=o.worldToCanvas(i),c=o.worldToCanvas(l),d={start:{x:s[0],y:s[1]},end:{x:c[0],y:c[1]}};return _d([d.start.x,d.start.y],[d.end.x,d.end.y],[n[0],n[1]])<=r})),ae(ga(e),"toolSelectedCallback",(function(t,n){var r=t.detail.element;n.highlighted=!0;var o=ud(r,e.getToolName());e.editData={annotation:n,viewportIdsToRender:o,movingTextBox:!1},e._activateModify(r),gs(r);var a=(0,J.getEnabledElement)(r).renderingEngine;ca(a,o),t.preventDefault()})),ae(ga(e),"_endCallback",(function(t){var n=t.detail.element,r=e.editData,o=r.annotation,a=r.viewportIdsToRender,i=r.newAnnotation,l=r.hasMoved,s=o.data;if(!i||l){s.handles.activeHandleIndex=null,e._deactivateModify(n),e._deactivateDraw(n),fs(n);var c=(0,J.getEnabledElement)(n),d=c.viewportId,u=c.renderingEngineId,v=c.renderingEngine;if(e.isHandleOutsideImage&&e.configuration.preventHandleOutsideImage&&at(o.annotationUID),i)e.configuration.getTextCallback((function(t){if(!t)return at(o.annotationUID),ca(v,a),e.editData=null,void(e.isDrawing=!1);o.data.text=t;var n=Q.ANNOTATION_COMPLETED,r={annotation:o};(0,J.triggerEvent)(J.eventTarget,n,r),ca(v,a)}));else{var f=Q.ANNOTATION_MODIFIED,g={annotation:o,viewportId:d,renderingEngineId:u};(0,J.triggerEvent)(J.eventTarget,f,g)}e.editData=null,e.isDrawing=!1}})),ae(ga(e),"_dragCallback",(function(t){e.isDrawing=!0;var n=t.detail,r=n.element,o=e.editData,a=o.annotation,i=o.viewportIdsToRender,l=o.handleIndex,s=o.movingTextBox,c=a.data;if(s){var d=n.deltaPoints.world,u=c.handles.textBox,v=u.worldPosition;v[0]+=d[0],v[1]+=d[1],v[2]+=d[2],u.hasMoved=!0}else if(void 0===l){var f=n.deltaPoints.world;c.handles.points.forEach((function(e){e[0]+=f[0],e[1]+=f[1],e[2]+=f[2]})),a.invalidated=!0}else{var g=n.currentPoints.world;c.handles.points[l]=Lr(g),a.invalidated=!0}e.editData.hasMoved=!0;var h=(0,J.getEnabledElement)(r).renderingEngine;ca(h,i)})),ae(ga(e),"touchTapCallback",(function(t){2==t.detail.taps&&e.doubleClickCallback(t)})),ae(ga(e),"doubleClickCallback",(function(t){var n,r=t.detail,o=r.element,a=nt(e.getToolName(),o);if(null!==(n=a=e.filterInteractableAnnotationsForElement(o,a))&&void 0!==n&&n.length){var i=a.find((function(t){return e.isPointNearTool(o,t,r.currentPoints.canvas,6)}));if(i){var l=i;e.configuration.changeTextCallback(i,t.detail,e._doneChangingTextCallback.bind(ga(e),o,l)),e.editData=null,e.isDrawing=!1,t.stopImmediatePropagation(),t.preventDefault()}}})),ae(ga(e),"cancel",(function(t){if(e.isDrawing){e.isDrawing=!1,e._deactivateDraw(t),e._deactivateModify(t),fs(t);var n=e.editData,r=n.annotation,o=n.viewportIdsToRender,a=n.newAnnotation,i=r.data;r.highlighted=!1,i.handles.activeHandleIndex=null;var l=(0,J.getEnabledElement)(t).renderingEngine;if(ca(l,o),a){var s=Q.ANNOTATION_COMPLETED,c={annotation:r};(0,J.triggerEvent)(J.eventTarget,s,c)}return e.editData=null,r.annotationUID}})),ae(ga(e),"_activateModify",(function(t){Ke.isInteractingWithTool=!0,t.addEventListener(Q.MOUSE_UP,e._endCallback),t.addEventListener(Q.MOUSE_DRAG,e._dragCallback),t.addEventListener(Q.MOUSE_CLICK,e._endCallback),t.addEventListener(Q.TOUCH_TAP,e._endCallback),t.addEventListener(Q.TOUCH_END,e._endCallback),t.addEventListener(Q.TOUCH_DRAG,e._dragCallback)})),ae(ga(e),"_deactivateModify",(function(t){Ke.isInteractingWithTool=!1,t.removeEventListener(Q.MOUSE_UP,e._endCallback),t.removeEventListener(Q.MOUSE_DRAG,e._dragCallback),t.removeEventListener(Q.MOUSE_CLICK,e._endCallback),t.removeEventListener(Q.TOUCH_TAP,e._endCallback),t.removeEventListener(Q.TOUCH_DRAG,e._dragCallback),t.removeEventListener(Q.TOUCH_END,e._endCallback)})),ae(ga(e),"_activateDraw",(function(t){Ke.isInteractingWithTool=!0,t.addEventListener(Q.MOUSE_UP,e._endCallback),t.addEventListener(Q.MOUSE_DRAG,e._dragCallback),t.addEventListener(Q.MOUSE_MOVE,e._dragCallback),t.addEventListener(Q.MOUSE_CLICK,e._endCallback),t.addEventListener(Q.TOUCH_TAP,e._endCallback),t.addEventListener(Q.TOUCH_END,e._endCallback),t.addEventListener(Q.TOUCH_DRAG,e._dragCallback)})),ae(ga(e),"_deactivateDraw",(function(t){Ke.isInteractingWithTool=!1,t.removeEventListener(Q.MOUSE_UP,e._endCallback),t.removeEventListener(Q.MOUSE_DRAG,e._dragCallback),t.removeEventListener(Q.MOUSE_MOVE,e._dragCallback),t.removeEventListener(Q.MOUSE_CLICK,e._endCallback),t.removeEventListener(Q.TOUCH_TAP,e._endCallback),t.removeEventListener(Q.TOUCH_END,e._endCallback),t.removeEventListener(Q.TOUCH_DRAG,e._dragCallback)})),ae(ga(e),"renderAnnotation",(function(t,n){var r,o,a=!1,i=t.viewport,l=i.element,s=nt(e.getToolName(),l);if(null===(r=s)||void 0===r||!r.length)return a;if(null===(o=s=e.filterInteractableAnnotationsForElement(l,s))||void 0===o||!o.length)return a;for(var c={toolGroupId:e.toolGroupId,toolName:e.getToolName(),viewportId:t.viewport.id},d=0;d<s.length;d++){var u=s[d],v=u.annotationUID,f=u.data,g=f.handles,h=f.text,p=g.points,m=g.activeHandleIndex;c.annotationUID=v;var w=e.getStyle("lineWidth",c,u),E=e.getStyle("lineDash",c,u),y=e.getStyle("color",c,u),I=p.map((function(e){return i.worldToCanvas(e)})),b=void 0;if(ve(u)||e.editData||null===m||(b=[I[m]]),b&&Xs(n,v,"0",I,{color:y,lineWidth:w}),e.configuration.arrowFirst?ac(n,v,"1",I[1],I[0],{color:y,width:w,lineDash:E}):ac(n,v,"1",I[0],I[1],{color:y,width:w,lineDash:E}),a=!0,!i.getRenderingEngine())return console.warn("Rendering Engine has been destroyed"),a;if(h){var C=e.getLinkedTextBoxStyle(c,u);if(C.visibility){if(!f.handles.textBox.hasMoved){var _=I[1];f.handles.textBox.worldPosition=i.canvasToWorld(_)}var T=i.worldToCanvas(f.handles.textBox.worldPosition),O=rc(n,v,"1",[h],T,I,{},C),D=O.x,S=O.y,k=O.width,M=O.height;f.handles.textBox.worldBoundingBox={topLeft:i.canvasToWorld([D,S]),topRight:i.canvasToWorld([D+k,S]),bottomLeft:i.canvasToWorld([D,S+M]),bottomRight:i.canvasToWorld([D+k,S+M])}}else f.handles.textBox={hasMoved:!1,worldPosition:[0,0,0],worldBoundingBox:{topLeft:[0,0,0],topRight:[0,0,0],bottomLeft:[0,0,0],bottomRight:[0,0,0]}}}}return a})),e}return re(o,[{key:"handleSelectedCallback",value:function(e,t,n){var r=e.detail.element,o=t.data;t.highlighted=!0;var a,i=!1;n.worldPosition?i=!0:a=o.handles.points.findIndex((function(e){return e===n}));var l=ud(r,this.getToolName());this.editData={annotation:t,viewportIdsToRender:l,handleIndex:a,movingTextBox:i},this._activateModify(r),gs(r);var s=(0,J.getEnabledElement)(r).renderingEngine;ca(s,l),e.preventDefault()}},{key:"_doneChangingTextCallback",value:function(e,t,n){t.data.text=n;var r=(0,J.getEnabledElement)(e),o=r.renderingEngine,a=r.viewportId,i=r.renderingEngineId,l=ud(e,this.getToolName());ca(o,l);var s=Q.ANNOTATION_MODIFIED;(0,J.triggerEvent)(J.eventTarget,s,{annotation:t,viewportId:a,renderingEngineId:i})}},{key:"_isInsideVolume",value:function(e,t,n){return J.utilities.indexWithinDimensions(e,n)&&J.utilities.indexWithinDimensions(t,n)}}]),o}(Id);function Wh(e){return e(prompt("Enter your annotation:"))}function Fh(e,t,n){return n(prompt("Enter your annotation:"))}ae(Bh,"toolName",void 0),Bh.toolName="ArrowAnnotate";var Hh=Bh;var Gh=function(e){pa(o,e);var t,n,r=(t=o,n=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,r=wa(t);if(n){var o=wa(this).constructor;e=Reflect.construct(r,arguments,o)}else e=r.apply(this,arguments);return ma(this,e)});function o(){var e,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{supportedInteractionTypes:["Mouse","Touch"],configuration:{shadow:!0,preventHandleOutsideImage:!1,getTextLines:qh}};return oe(this,o),ae(ga(e=r.call(this,t,n)),"touchDragCallback",void 0),ae(ga(e),"mouseDragCallback",void 0),ae(ga(e),"angleStartedNotYetCompleted",void 0),ae(ga(e),"_throttledCalculateCachedStats",void 0),ae(ga(e),"editData",void 0),ae(ga(e),"isDrawing",void 0),ae(ga(e),"isHandleOutsideImage",void 0),ae(ga(e),"addNewAnnotation",(function(t){if(!e.angleStartedNotYetCompleted){e.angleStartedNotYetCompleted=!0;var n=t.detail,r=n.currentPoints,o=n.element,a=r.world,i=(0,J.getEnabledElement)(o),l=i.viewport,s=i.renderingEngine;gs(o),e.isDrawing=!0;var c=l.getCamera(),d=c.viewPlaneNormal,u=c.viewUp,v=e.getReferencedImageId(l,a,d,u),f=l.getFrameOfReferenceUID(),g={highlighted:!0,invalidated:!0,metadata:{toolName:e.getToolName(),viewPlaneNormal:Lr(d),viewUp:Lr(u),FrameOfReferenceUID:f,referencedImageId:v},data:{handles:{points:[Lr(a),Lr(a)],activeHandleIndex:null,textBox:{hasMoved:!1,worldPosition:[0,0,0],worldBoundingBox:{topLeft:[0,0,0],topRight:[0,0,0],bottomLeft:[0,0,0],bottomRight:[0,0,0]}}},label:"",cachedStats:{}}};rt(g,o);var h=ud(o,e.getToolName());return e.editData={annotation:g,viewportIdsToRender:h,handleIndex:1,movingTextBox:!1,newAnnotation:!0,hasMoved:!1},e._activateDraw(o),t.preventDefault(),ca(s,h),g}})),ae(ga(e),"isPointNearTool",(function(e,t,n,r){var o=(0,J.getEnabledElement)(e).viewport,a=dt(t.data.handles.points,3),i=a[0],l=a[1],s=a[2],c=o.worldToCanvas(i),d=o.worldToCanvas(l),u={start:{x:c[0],y:c[1]},end:{x:d[0],y:d[1]}};if(_d([u.start.x,u.start.y],[u.end.x,u.end.y],[n[0],n[1]])<=r)return!0;if(!s)return!1;var v=o.worldToCanvas(s),f={start:{x:d[0],y:d[1]},end:{x:v[0],y:v[1]}};return _d([f.start.x,f.start.y],[f.end.x,f.end.y],[n[0],n[1]])<=r})),ae(ga(e),"toolSelectedCallback",(function(t,n){var r=t.detail.element;n.highlighted=!0;var o=ud(r,e.getToolName());e.editData={annotation:n,viewportIdsToRender:o,movingTextBox:!1},e._activateModify(r),gs(r);var a=(0,J.getEnabledElement)(r).renderingEngine;ca(a,o),t.preventDefault()})),ae(ga(e),"_endCallback",(function(t){var n=t.detail.element,r=e.editData,o=r.annotation,a=r.viewportIdsToRender,i=r.newAnnotation,l=r.hasMoved,s=o.data;if(!i||l)if(e.angleStartedNotYetCompleted&&2===s.handles.points.length)e.editData.handleIndex=2;else{e.angleStartedNotYetCompleted=!1,s.handles.activeHandleIndex=null,e._deactivateModify(n),e._deactivateDraw(n),fs(n);var c=(0,J.getEnabledElement)(n).renderingEngine;if(e.isHandleOutsideImage&&e.configuration.preventHandleOutsideImage&&at(o.annotationUID),ca(c,a),i){var d=Q.ANNOTATION_COMPLETED,u={annotation:o};(0,J.triggerEvent)(J.eventTarget,d,u)}e.editData=null,e.isDrawing=!1}})),ae(ga(e),"_dragCallback",(function(t){e.isDrawing=!0;var n=t.detail,r=n.element,o=e.editData,a=o.annotation,i=o.viewportIdsToRender,l=o.handleIndex,s=o.movingTextBox,c=a.data;if(s){var d=n.deltaPoints.world,u=c.handles.textBox,v=u.worldPosition;v[0]+=d[0],v[1]+=d[1],v[2]+=d[2],u.hasMoved=!0}else if(void 0===l){var f=n.deltaPoints.world;c.handles.points.forEach((function(e){e[0]+=f[0],e[1]+=f[1],e[2]+=f[2]})),a.invalidated=!0}else{var g=n.currentPoints.world;c.handles.points[l]=Lr(g),a.invalidated=!0}e.editData.hasMoved=!0;var h=(0,J.getEnabledElement)(r).renderingEngine;ca(h,i)})),ae(ga(e),"cancel",(function(t){if(e.isDrawing){e.isDrawing=!1,e._deactivateDraw(t),e._deactivateModify(t),fs(t);var n=e.editData,r=n.annotation,o=n.viewportIdsToRender,a=n.newAnnotation,i=r.data;r.highlighted=!1,i.handles.activeHandleIndex=null;var l=(0,J.getEnabledElement)(t).renderingEngine;if(ca(l,o),a){var s=Q.ANNOTATION_COMPLETED,c={annotation:r};(0,J.triggerEvent)(J.eventTarget,s,c)}return e.editData=null,e.angleStartedNotYetCompleted=!1,r.annotationUID}})),ae(ga(e),"_activateModify",(function(t){Ke.isInteractingWithTool=!0,t.addEventListener(Q.MOUSE_UP,e._endCallback),t.addEventListener(Q.MOUSE_DRAG,e._dragCallback),t.addEventListener(Q.MOUSE_CLICK,e._endCallback),t.addEventListener(Q.TOUCH_TAP,e._endCallback),t.addEventListener(Q.TOUCH_END,e._endCallback),t.addEventListener(Q.TOUCH_DRAG,e._dragCallback)})),ae(ga(e),"_deactivateModify",(function(t){Ke.isInteractingWithTool=!1,t.removeEventListener(Q.MOUSE_UP,e._endCallback),t.removeEventListener(Q.MOUSE_DRAG,e._dragCallback),t.removeEventListener(Q.MOUSE_CLICK,e._endCallback),t.removeEventListener(Q.TOUCH_TAP,e._endCallback),t.removeEventListener(Q.TOUCH_END,e._endCallback),t.removeEventListener(Q.TOUCH_DRAG,e._dragCallback)})),ae(ga(e),"_activateDraw",(function(t){Ke.isInteractingWithTool=!0,t.addEventListener(Q.MOUSE_UP,e._endCallback),t.addEventListener(Q.MOUSE_DRAG,e._dragCallback),t.addEventListener(Q.MOUSE_MOVE,e._dragCallback),t.addEventListener(Q.MOUSE_CLICK,e._endCallback),t.addEventListener(Q.TOUCH_TAP,e._endCallback),t.addEventListener(Q.TOUCH_END,e._endCallback),t.addEventListener(Q.TOUCH_DRAG,e._dragCallback)})),ae(ga(e),"_deactivateDraw",(function(t){Ke.isInteractingWithTool=!1,t.removeEventListener(Q.MOUSE_UP,e._endCallback),t.removeEventListener(Q.MOUSE_DRAG,e._dragCallback),t.removeEventListener(Q.MOUSE_MOVE,e._dragCallback),t.removeEventListener(Q.MOUSE_CLICK,e._endCallback),t.removeEventListener(Q.TOUCH_TAP,e._endCallback),t.removeEventListener(Q.TOUCH_END,e._endCallback),t.removeEventListener(Q.TOUCH_DRAG,e._dragCallback)})),ae(ga(e),"renderAnnotation",(function(t,n){var r,o,a=!1,i=t.viewport,l=i.element,s=nt(e.getToolName(),l);if(null===(r=s)||void 0===r||!r.length)return a;if(null===(o=s=e.filterInteractableAnnotationsForElement(l,s))||void 0===o||!o.length)return a;for(var c=e.getTargetId(i),d=i.getRenderingEngine(),u={toolGroupId:e.toolGroupId,toolName:e.getToolName(),viewportId:t.viewport.id},v=0;v<s.length;v++){var f,g=s[v],h=g.annotationUID,p=g.data,m=p.handles,w=m.points,E=m.activeHandleIndex;u.annotationUID=h;var y=e.getStyle("lineWidth",u,g),I=e.getStyle("lineDash",u,g),b=e.getStyle("color",u,g),C=w.map((function(e){return i.worldToCanvas(e)}));p.cachedStats[c]&&null!=p.cachedStats[c].angle?g.invalidated&&e._throttledCalculateCachedStats(g,d,t):(p.cachedStats[c]={angle:null},e._calculateCachedStats(g,d,t));var _=void 0;if(ve(g)||e.editData||null===E||(_=[C[E]]),!i.getRenderingEngine())return console.warn("Rendering Engine has been destroyed"),a;_&&Xs(n,h,"0",C,{color:b,lineDash:I,lineWidth:y});var T="1";if(Zs(n,h,T,C[0],C[1],{color:b,width:y,lineDash:I}),a=!0,3!==C.length)return a;if(Zs(n,h,T="2",C[1],C[2],{color:b,width:y,lineDash:I}),null!==(f=p.cachedStats[c])&&void 0!==f&&f.angle){var O=e.getLinkedTextBoxStyle(u,g);if(O.visibility){var D=e.configuration.getTextLines(p,c);if(!p.handles.textBox.hasMoved){var S=C[1];p.handles.textBox.worldPosition=i.canvasToWorld(S)}var k=i.worldToCanvas(p.handles.textBox.worldPosition),M=rc(n,h,"1",D,k,C,{},O),x=M.x,R=M.y,P=M.width,A=M.height;p.handles.textBox.worldBoundingBox={topLeft:i.canvasToWorld([x,R]),topRight:i.canvasToWorld([x+P,R]),bottomLeft:i.canvasToWorld([x,R+A]),bottomRight:i.canvasToWorld([x+P,R+A])}}else p.handles.textBox={hasMoved:!1,worldPosition:[0,0,0],worldBoundingBox:{topLeft:[0,0,0],topRight:[0,0,0],bottomLeft:[0,0,0],bottomRight:[0,0,0]}}}}return a})),e._throttledCalculateCachedStats=fc(e._calculateCachedStats,100,{trailing:!0}),e}return re(o,[{key:"handleSelectedCallback",value:function(e,t,n){var r=e.detail.element,o=t.data;t.highlighted=!0;var a,i=!1;n.worldPosition?i=!0:a=o.handles.points.findIndex((function(e){return e===n}));var l=ud(r,this.getToolName());this.editData={annotation:t,viewportIdsToRender:l,handleIndex:a,movingTextBox:i},this._activateModify(r),gs(r);var s=(0,J.getEnabledElement)(r).renderingEngine;ca(s,l),e.preventDefault()}},{key:"_calculateCachedStats",value:function(e,t,n){var r=e.data,o=n.viewportId,a=n.renderingEngineId;if(3===r.handles.points.length){for(var i=r.handles.points[0],l=r.handles.points[1],s=r.handles.points[2],c=r.cachedStats,d=Object.keys(c),u=0;u<d.length;u++){var v=d[u],f=zg([i,l],[l,s]);c[v]={angle:isNaN(f)?"Incomplete Angle":f}}e.invalidated=!1;var g=Q.ANNOTATION_MODIFIED,h={annotation:e,viewportId:o,renderingEngineId:a};return(0,J.triggerEvent)(J.eventTarget,g,h),c}}}]),o}(Id);function qh(e,t){var n=e.cachedStats[t].angle;if(void 0!==n)return["".concat(Oc(n)," ").concat(String.fromCharCode(176))]}ae(Gh,"toolName",void 0),Gh.toolName="Angle";var zh=Gh,Kh=function(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];for(var r=2===t[0].length?[0,0]:[0,0,0],o=t.length,a=0,i=t;a<i.length;a++){var l=i[a];r[0]+=l[0]/o,r[1]+=l[1]/o,3===r.length&&(r[2]+=l[2]/o)}return r};function Yh(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function Xh(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Yh(Object(n),!0).forEach((function(t){ae(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Yh(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}var Zh=function(e){pa(o,e);var t,n,r=(t=o,n=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,r=wa(t);if(n){var o=wa(this).constructor;e=Reflect.construct(r,arguments,o)}else e=r.apply(this,arguments);return ma(this,e)});function o(){var e,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{supportedInteractionTypes:["Mouse","Touch"],configuration:{shadow:!0,preventHandleOutsideImage:!1,getTextLines:Jh}};return oe(this,o),ae(ga(e=r.call(this,t,n)),"touchDragCallback",void 0),ae(ga(e),"mouseDragCallback",void 0),ae(ga(e),"angleStartedNotYetCompleted",void 0),ae(ga(e),"_throttledCalculateCachedStats",void 0),ae(ga(e),"editData",void 0),ae(ga(e),"isDrawing",void 0),ae(ga(e),"isHandleOutsideImage",void 0),ae(ga(e),"addNewAnnotation",(function(t){if(!e.angleStartedNotYetCompleted){e.angleStartedNotYetCompleted=!0;var n=t.detail,r=n.currentPoints,o=n.element,a=r.world,i=(0,J.getEnabledElement)(o),l=i.viewport,s=i.renderingEngine;gs(o),e.isDrawing=!0;var c=l.getCamera(),d=c.viewPlaneNormal,u=c.viewUp,v=e.getReferencedImageId(l,a,d,u),f=l.getFrameOfReferenceUID(),g={highlighted:!0,invalidated:!0,metadata:{toolName:e.getToolName(),viewPlaneNormal:Lr(d),viewUp:Lr(u),FrameOfReferenceUID:f,referencedImageId:v},data:{handles:{points:[Lr(a),Lr(a)],activeHandleIndex:null,textBox:{hasMoved:!1,worldPosition:[0,0,0],worldBoundingBox:{topLeft:[0,0,0],topRight:[0,0,0],bottomLeft:[0,0,0],bottomRight:[0,0,0]}}},label:"",cachedStats:{}}};rt(g,o);var h=ud(o,e.getToolName());return e.editData={annotation:g,viewportIdsToRender:h,handleIndex:1,movingTextBox:!1,newAnnotation:!0,hasMoved:!1},e._activateDraw(o),t.preventDefault(),ca(s,h),g}})),ae(ga(e),"isPointNearTool",(function(t,n,r,o){var a=(0,J.getEnabledElement)(t).viewport,i=n.data,l=e.distanceToLines({viewport:a,points:i.handles.points,canvasCoords:r,proximity:o}),s=l.distanceToPoint,c=l.distanceToPoint2;return s<=o||c<=o})),ae(ga(e),"toolSelectedCallback",(function(t,n,r,o){var a=arguments.length>4&&void 0!==arguments[4]?arguments[4]:6,i=t.detail.element;n.highlighted=!0;var l=ud(i,e.getToolName()),s=(0,J.getEnabledElement)(i),c=s.renderingEngine,d=s.viewport,u=e.distanceToLines({viewport:d,points:n.data.handles.points,canvasCoords:o,proximity:a}),v=u.isNearFirstLine,f=u.isNearSecondLine;e.editData={annotation:n,viewportIdsToRender:l,movingTextBox:!1,isNearFirstLine:v,isNearSecondLine:f},e._activateModify(i),gs(i),ca(c,l),t.preventDefault()})),ae(ga(e),"_mouseUpCallback",(function(t){var n=t.detail.element,r=e.editData,o=r.annotation,a=r.viewportIdsToRender,i=r.newAnnotation,l=r.hasMoved,s=o.data;if(!i||l){if(e.angleStartedNotYetCompleted&&s.handles.points.length<4)return fs(n),void(e.editData.handleIndex=s.handles.points.length);e.angleStartedNotYetCompleted=!1,s.handles.activeHandleIndex=null,e._deactivateModify(n),e._deactivateDraw(n),fs(n);var c=(0,J.getEnabledElement)(n).renderingEngine;if(e.isHandleOutsideImage&&e.configuration.preventHandleOutsideImage&&at(o.annotationUID),ca(c,a),i){var d=Q.ANNOTATION_COMPLETED,u={annotation:o};(0,J.triggerEvent)(J.eventTarget,d,u)}e.editData=null,e.isDrawing=!1}})),ae(ga(e),"_mouseDownCallback",(function(t){var n=e.editData,r=n.annotation,o=n.handleIndex,a=t.detail,i=a.element,l=a.currentPoints.world,s=r.data;return 1===o?(s.handles.points[1]=l,void(e.editData.hasMoved=s.handles.points[1][0]!==s.handles.points[0][0]||s.handles.points[1][1]!==s.handles.points[0][0])):3===o?(s.handles.points[3]=l,e.editData.hasMoved=s.handles.points[3][0]!==s.handles.points[2][0]||s.handles.points[3][1]!==s.handles.points[2][0],void(e.angleStartedNotYetCompleted=!1)):(e.editData.hasMoved=!1,gs(i),s.handles.points[2]=s.handles.points[3]=l,void(e.editData.handleIndex=s.handles.points.length-1))})),ae(ga(e),"_mouseDragCallback",(function(t){e.isDrawing=!0;var n=t.detail,r=n.element,o=e.editData,a=o.annotation,i=o.viewportIdsToRender,l=o.handleIndex,s=o.movingTextBox,c=o.isNearFirstLine,d=o.isNearSecondLine,u=a.data;if(s){var v=n.deltaPoints.world,f=u.handles.textBox,g=f.worldPosition;g[0]+=v[0],g[1]+=v[1],g[2]+=v[2],f.hasMoved=!0}else if(void 0===l&&(c||d)){var h=n.deltaPoints.world,p=u.handles.points;c?[p[0],p[1]].forEach((function(e){e[0]+=h[0],e[1]+=h[1],e[2]+=h[2]})):d&&[p[2],p[3]].forEach((function(e){e[0]+=h[0],e[1]+=h[1],e[2]+=h[2]})),a.invalidated=!0}else{var m=n.currentPoints.world;u.handles.points[l]=Lr(m),a.invalidated=!0}e.editData.hasMoved=!0;var w=(0,J.getEnabledElement)(r).renderingEngine;ca(w,i)})),ae(ga(e),"cancel",(function(t){if(e.isDrawing){e.isDrawing=!1,e._deactivateDraw(t),e._deactivateModify(t),fs(t);var n=e.editData,r=n.annotation,o=n.viewportIdsToRender,a=n.newAnnotation,i=r.data;i.handles.points.length<4&&at(r.annotationUID),r.highlighted=!1,i.handles.activeHandleIndex=null;var l=(0,J.getEnabledElement)(t).renderingEngine;if(ca(l,o),a){var s=Q.ANNOTATION_COMPLETED,c={annotation:r};(0,J.triggerEvent)(J.eventTarget,s,c)}return e.editData=null,e.angleStartedNotYetCompleted=!1,r.annotationUID}})),ae(ga(e),"_activateModify",(function(t){Ke.isInteractingWithTool=!0,t.addEventListener(Q.MOUSE_UP,e._mouseUpCallback),t.addEventListener(Q.MOUSE_DRAG,e._mouseDragCallback),t.addEventListener(Q.MOUSE_CLICK,e._mouseUpCallback)})),ae(ga(e),"_deactivateModify",(function(t){Ke.isInteractingWithTool=!1,t.removeEventListener(Q.MOUSE_UP,e._mouseUpCallback),t.removeEventListener(Q.MOUSE_DRAG,e._mouseDragCallback),t.removeEventListener(Q.MOUSE_CLICK,e._mouseUpCallback)})),ae(ga(e),"_activateDraw",(function(t){Ke.isInteractingWithTool=!0,t.addEventListener(Q.MOUSE_UP,e._mouseUpCallback),t.addEventListener(Q.MOUSE_DRAG,e._mouseDragCallback),t.addEventListener(Q.MOUSE_MOVE,e._mouseDragCallback),t.addEventListener(Q.MOUSE_CLICK,e._mouseUpCallback),t.addEventListener(Q.MOUSE_DOWN,e._mouseDownCallback)})),ae(ga(e),"_deactivateDraw",(function(t){Ke.isInteractingWithTool=!1,t.removeEventListener(Q.MOUSE_UP,e._mouseUpCallback),t.removeEventListener(Q.MOUSE_DRAG,e._mouseDragCallback),t.removeEventListener(Q.MOUSE_MOVE,e._mouseDragCallback),t.removeEventListener(Q.MOUSE_CLICK,e._mouseUpCallback),t.removeEventListener(Q.MOUSE_DOWN,e._mouseDownCallback)})),ae(ga(e),"renderAnnotation",(function(t,n){var r,o,a=!1,i=t.viewport,l=i.element,s=nt(e.getToolName(),l);if(null===(r=s)||void 0===r||!r.length)return a;if(null===(o=s=e.filterInteractableAnnotationsForElement(l,s))||void 0===o||!o.length)return a;for(var c=e.getTargetId(i),d=i.getRenderingEngine(),u={toolGroupId:e.toolGroupId,toolName:e.getToolName(),viewportId:t.viewport.id},v=0;v<s.length;v++){var f,g=s[v],h=g.annotationUID,p=g.data,m=p.handles,w=m.points,E=m.activeHandleIndex;u.annotationUID=h;var y=e.getStyle("lineWidth",u,g),I=e.getStyle("lineDash",u,g),b=e.getStyle("color",u,g),C=w.map((function(e){return i.worldToCanvas(e)}));p.cachedStats[c]&&null!=p.cachedStats[c].angle?g.invalidated&&e._throttledCalculateCachedStats(g,d,t):(p.cachedStats[c]={angle:null,arc1Angle:null,arc2Angle:null,points:{world:{arc1Start:null,arc1End:null,arc2Start:null,arc2End:null,arc1Angle:null,arc2Angle:null},canvas:{arc1Start:null,arc1End:null,arc2Start:null,arc2End:null,arc1Angle:null,arc2Angle:null}}},e._calculateCachedStats(g,d,t));var _=void 0;if(ve(g)||e.editData||null===E||(_=[C[E]]),!i.getRenderingEngine())return console.warn("Rendering Engine has been destroyed"),a;_&&Xs(n,h,"0",C,{color:b,lineDash:I,lineWidth:y});var T=[C[0],C[1]],O=[C[2],C[3]],D="line1";if(Zs(n,h,D,T[0],T[1],{color:b,width:y,lineDash:I}),a=!0,C.length<4)return a;Zs(n,h,D="line2",O[0],O[1],{color:b,width:y,lineDash:I}),Zs(n,h,D="linkLine",Kh(T[0],T[1]),Kh(O[0],O[1]),{color:b,lineWidth:"1",lineDash:"1,4"});var S=p.cachedStats[c].points.canvas,k=S.arc1Start,M=S.arc1End,x=S.arc2End,R=S.arc2Start,P=p.cachedStats[c],A=P.arc1Angle,N=P.arc2Angle;if(Zs(n,h,D="arc1",k,M,{color:b,lineWidth:"1"}),Zs(n,h,D="arc2",R,x,{color:b,lineWidth:"1"}),null!==(f=p.cachedStats[c])&&void 0!==f&&f.angle){var L=e.getLinkedTextBoxStyle(u,g);if(L.visibility){var U=e.configuration.getTextLines(p,c);if(!p.handles.textBox.hasMoved){var V=Od(C);p.handles.textBox.worldPosition=i.canvasToWorld(V)}var j=i.worldToCanvas(p.handles.textBox.worldPosition),B=rc(n,h,"cobbAngleText",U,j,C,{},L),W=B.x,F=B.y,H=B.width,G=B.height;p.handles.textBox.worldBoundingBox={topLeft:i.canvasToWorld([W,F]),topRight:i.canvasToWorld([W+H,F]),bottomLeft:i.canvasToWorld([W,F+G]),bottomRight:i.canvasToWorld([W+H,F+G])};var q=["".concat(A.toFixed(2)," ").concat(String.fromCharCode(176))],z=Kh(k,M);tc(n,h,"arcAngle1",q,z,Xh(Xh({},L),{},{padding:3}));var K=["".concat(N.toFixed(2)," ").concat(String.fromCharCode(176))],Y=Kh(R,x);tc(n,h,"arcAngle2",K,Y,Xh(Xh({},L),{},{padding:3}))}else p.handles.textBox={hasMoved:!1,worldPosition:[0,0,0],worldBoundingBox:{topLeft:[0,0,0],topRight:[0,0,0],bottomLeft:[0,0,0],bottomRight:[0,0,0]}}}}return a})),ae(ga(e),"distanceToLines",(function(e){var t=e.viewport,n=e.points,r=e.canvasCoords,o=e.proximity,a=dt(n,4),i=a[0],l=a[1],s=a[2],c=a[3],d=t.worldToCanvas(i),u=t.worldToCanvas(l),v=t.worldToCanvas(s),f=t.worldToCanvas(c),g={start:{x:d[0],y:d[1]},end:{x:u[0],y:u[1]}},h={start:{x:v[0],y:v[1]},end:{x:f[0],y:f[1]}},p=_d([g.start.x,g.start.y],[g.end.x,g.end.y],[r[0],r[1]]),m=_d([h.start.x,h.start.y],[h.end.x,h.end.y],[r[0],r[1]]),w=!1,E=!1;return p<=o?w=!0:m<=o&&(E=!0),{distanceToPoint:p,distanceToPoint2:m,isNearFirstLine:w,isNearSecondLine:E}})),ae(ga(e),"getArcsStartEndPoints",(function(e){var t=e.firstLine,n=e.secondLine,r=e.mid1,o=e.mid2,a=[r,o],i=zg(t,a),l=zg(n,a),s=i>90?1:0,c=l>90?0:1,d=Kh(a[0],a[1]),u=Math.sqrt(Math.pow(a[1][0]-a[0][0],2)+Math.pow(a[1][1]-a[0][1],2)),v=.1,f=Kh(t[0],t[1]),g=Kh(n[0],n[1]),h=[t[s][0]-f[0],t[s][1]-f[1]],p=Math.sqrt(Math.pow(h[0],2)+Math.pow(h[1],2)),m=[h[0]/p,h[1]/p],w=[f[0]+m[0]*u*v,f[1]+m[1]*u*v],E=[d[0]-r[0],d[1]-r[1]],y=Math.sqrt(Math.pow(E[0],2)+Math.pow(E[1],2)),I=[E[0]/y,E[1]/y],b=[r[0]+I[0]*u*v,r[1]+I[1]*u*v],C=[n[c][0]-g[0],n[c][1]-g[1]],_=Math.sqrt(Math.pow(C[0],2)+Math.pow(C[1],2)),T=[C[0]/_,C[1]/_],O=[g[0]+T[0]*u*v,g[1]+T[1]*u*v],D=[d[0]-o[0],d[1]-o[1]],S=Math.sqrt(Math.pow(D[0],2)+Math.pow(D[1],2)),k=[D[0]/S,D[1]/S];return{arc1Start:w,arc1End:b,arc2Start:O,arc2End:[o[0]+k[0]*u*v,o[1]+k[1]*u*v],arc1Angle:i>90?180-i:i,arc2Angle:l>90?180-l:l}})),e._throttledCalculateCachedStats=fc(e._calculateCachedStats,25,{trailing:!0}),e}return re(o,[{key:"handleSelectedCallback",value:function(e,t,n){var r=e.detail.element,o=t.data;t.highlighted=!0;var a,i=!1;n.worldPosition?i=!0:a=o.handles.points.findIndex((function(e){return e===n}));var l=ud(r,this.getToolName());this.editData={annotation:t,viewportIdsToRender:l,handleIndex:a,movingTextBox:i},this._activateModify(r),gs(r);var s=(0,J.getEnabledElement)(r).renderingEngine;ca(s,l),e.preventDefault()}},{key:"_calculateCachedStats",value:function(e,t,n){var r=e.data,o=n.viewportId,a=n.renderingEngineId;if(4===r.handles.points.length){for(var i=[null,null],l=[null,null],s=Number.MAX_VALUE,c=0;c<2;c+=1)for(var d=2;d<4;d+=1){var u=xs.vec3.distance(r.handles.points[c],r.handles.points[d]);u<s&&(s=u,i[1]=r.handles.points[c],i[0]=r.handles.points[(c+1)%2],l[0]=r.handles.points[d],l[1]=r.handles.points[2+(d-1)%2])}for(var v=n.viewport,f=r.handles.points.map((function(e){return v.worldToCanvas(e)})),g=[f[0],f[1]],h=[f[2],f[3]],p=Kh(g[0],g[1]),m=Kh(h[0],h[1]),w=this.getArcsStartEndPoints({firstLine:g,secondLine:h,mid1:p,mid2:m}),E=w.arc1Start,y=w.arc1End,I=w.arc2End,b=w.arc2Start,C=w.arc1Angle,_=w.arc2Angle,T=r.cachedStats,O=Object.keys(T),D=0;D<O.length;D++)T[O[D]]={angle:zg(i,l),arc1Angle:C,arc2Angle:_,points:{canvas:{arc1Start:E,arc1End:y,arc2End:I,arc2Start:b},world:{arc1Start:v.canvasToWorld(E),arc1End:v.canvasToWorld(y),arc2End:v.canvasToWorld(I),arc2Start:v.canvasToWorld(b)}}};e.invalidated=!1;var S=Q.ANNOTATION_MODIFIED,k={annotation:e,viewportId:o,renderingEngineId:a};return(0,J.triggerEvent)(J.eventTarget,S,k),T}}}]),o}(Id);function Jh(e,t){var n=e.cachedStats[t].angle;if(void 0!==n)return["".concat(n.toFixed(2)," ").concat(String.fromCharCode(176))]}ae(Zh,"toolName",void 0),Zh.toolName="CobbAngle";var $h=Zh;var Qh="magnify-viewport",ep=function(e){pa(o,e);var t,n,r=(t=o,n=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,r=wa(t);if(n){var o=wa(this).constructor;e=Reflect.construct(r,arguments,o)}else e=r.apply(this,arguments);return ma(this,e)});function o(){var e,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{supportedInteractionTypes:["Mouse","Touch"],configuration:{magnifySize:10,magnifyWidth:250,magnifyHeight:250}};return oe(this,o),ae(ga(e=r.call(this,t,n)),"_bounds",void 0),ae(ga(e),"editData",void 0),ae(ga(e),"preMouseDownCallback",(function(t){var n=t.detail,r=n.element,o=n.currentPoints,a=(0,J.getEnabledElement)(r),i=a.viewport,l=a.renderingEngine;if(!(i instanceof J.StackViewport))throw new Error("MagnifyTool only works on StackViewports");var s=e._getReferencedImageId(i);if(!s)throw new Error("MagnifyTool: No referenced image id found, reconstructed planes not supported yet");var c=ud(r,e.getToolName());return e.editData={referencedImageId:s,viewportIdsToRender:c,enabledElement:a,renderingEngine:l,currentPoints:o},e._createMagnificationViewport(),e._activateDraw(r),gs(r),t.preventDefault(),ca(l,c),!0})),ae(ga(e),"preTouchStartCallback",(function(t){e.preMouseDownCallback(t)})),ae(ga(e),"_createMagnificationViewport",(function(){var t,n=e.editData,r=n.enabledElement,o=n.referencedImageId,a=n.viewportIdsToRender,i=n.renderingEngine,l=n.currentPoints,s=r.viewport,c=s.element,d=s.getProperties(),u=l.canvas,v=l.world;if(null===(t=c.querySelector(".magnifyTool"))){var f=document.createElement("div");f.classList.add("magnifyTool"),f.style.display="block",f.style.width="".concat(e.configuration.magnifyWidth,"px"),f.style.height="".concat(e.configuration.magnifyHeight,"px"),f.style.position="absolute",t=f,c.querySelector(".viewport-element").appendChild(f);var g={viewportId:Qh,type:J.Enums.ViewportType.STACK,element:t};i.enableElement(g)}t.style.top="".concat(u[1]-e.configuration.magnifyHeight/2,"px"),t.style.left="".concat(u[0]-e.configuration.magnifyWidth/2,"px");var h=i.getViewport(Qh);h.setStack([o]).then((function(){h.setProperties(d);var t=s.getCamera().parallelScale,n=h.getCamera(),r=n.focalPoint,o=n.position,a=n.viewPlaneNormal,i=Math.sqrt(Math.pow(r[0]-o[0],2)+Math.pow(r[1]-o[1],2)+Math.pow(r[2]-o[2],2)),l=[v[0],v[1],v[2]],c=[l[0]+i*a[0],l[1]+i*a[1],l[2]+i*a[2]];h.setCamera({parallelScale:t*(1/e.configuration.magnifySize),focalPoint:l,position:c}),h.render()})),t.style.display="block",ca(i,a)})),ae(ga(e),"_dragCallback",(function(t){var n=t.detail,r=n.deltaPoints,o=n.element,a=n.currentPoints,i=r.world,l=a.canvas,s=(0,J.getEnabledElement)(o).renderingEngine.getViewport(Qh),c=o.querySelector(".magnifyTool");if(c){c.style.top="".concat(l[1]-e.configuration.magnifyHeight/2,"px"),c.style.left="".concat(l[0]-e.configuration.magnifyWidth/2,"px");var d=s.getCamera(),u=d.focalPoint,v=d.position,f=[v[0]+i[0],v[1]+i[1],v[2]+i[2]],g=[u[0]+i[0],u[1]+i[1],u[2]+i[2]];s.setCamera({focalPoint:g,position:f}),s.render()}})),ae(ga(e),"_dragEndCallback",(function(t){var n=t.detail.element;(0,J.getEnabledElement)(n).renderingEngine.disableElement(Qh);var r=n.querySelector(".viewport-element"),o=r.querySelector(".magnifyTool");r.removeChild(o),e._deactivateDraw(n),fs(n)})),ae(ga(e),"_activateDraw",(function(t){Ke.isInteractingWithTool=!0,t.addEventListener(Q.MOUSE_UP,e._dragEndCallback),t.addEventListener(Q.MOUSE_DRAG,e._dragCallback),t.addEventListener(Q.MOUSE_CLICK,e._dragEndCallback),t.addEventListener(Q.TOUCH_END,e._dragEndCallback),t.addEventListener(Q.TOUCH_DRAG,e._dragCallback)})),ae(ga(e),"_deactivateDraw",(function(t){Ke.isInteractingWithTool=!1,t.removeEventListener(Q.MOUSE_UP,e._dragEndCallback),t.removeEventListener(Q.MOUSE_DRAG,e._dragCallback),t.removeEventListener(Q.MOUSE_CLICK,e._dragEndCallback),t.removeEventListener(Q.TOUCH_END,e._dragEndCallback),t.removeEventListener(Q.TOUCH_DRAG,e._dragCallback)})),e}return re(o,[{key:"_getReferencedImageId",value:function(e){var t,n=this.getTargetId(e);return e instanceof J.StackViewport&&(t=n.split("imageId:")[1]),t}}]),o}(La);ae(ep,"toolName",void 0),ep.toolName="Magnify";var tp=ep;function np(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function rp(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?np(Object(n),!0).forEach((function(t){ae(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):np(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}var op=function(e){return e.uid!==e.referenceId},ap=function(){function e(t){var n=t.magnifyViewportId,r=t.sourceEnabledElement,o=t.radius,a=void 0===o?125:o,i=t.position,l=void 0===i?[0,0]:i,s=t.zoomFactor,c=t.autoPan;oe(this,e),ae(this,"_viewportId",void 0),ae(this,"_sourceEnabledElement",void 0),ae(this,"_enabledElement",null),ae(this,"_sourceToolGroup",null),ae(this,"_magnifyToolGroup",null),ae(this,"_isViewportReady",!1),ae(this,"_radius",0),ae(this,"_resized",!1),ae(this,"_resizeViewportAsync",void 0),ae(this,"_canAutoPan",!1),ae(this,"_autoPan",void 0),ae(this,"position",void 0),ae(this,"zoomFactor",void 0),ae(this,"visible",void 0),this._viewportId=null!=n?n:J.utilities.uuidv4(),this._sourceEnabledElement=r,this._autoPan=c,this.radius=a,this.position=l,this.zoomFactor=s,this.visible=!0,this._browserMouseDownCallback=this._browserMouseDownCallback.bind(this),this._browserMouseUpCallback=this._browserMouseUpCallback.bind(this),this._handleToolModeChanged=this._handleToolModeChanged.bind(this),this._mouseDragCallback=this._mouseDragCallback.bind(this),this._resizeViewportAsync=vc(this._resizeViewport.bind(this),1),this._initialize()}return re(e,[{key:"sourceEnabledElement",get:function(){return this._sourceEnabledElement}},{key:"viewportId",get:function(){return this._viewportId}},{key:"radius",get:function(){return this._radius},set:function(e){Math.abs(this._radius-e)>1e-5&&(this._radius=e,this._resized=!0)}},{key:"update",value:function(){var e=this.radius,t=this.position,n=this.visible,r=this._enabledElement.viewport,o=r.element,a=2*e,i=dt(t,2),l=i[0],s=i[1];this._resized&&(this._resizeViewportAsync(),this._resized=!1),Object.assign(o.style,{display:n?"block":"hidden",width:"".concat(a,"px"),height:"".concat(a,"px"),left:"".concat(-e,"px"),top:"".concat(-e,"px"),transform:"translate(".concat(l,"px, ").concat(s,"px)")}),this._isViewportReady&&(this._syncViewports(),r.render())}},{key:"dispose",value:function(){var e=this._enabledElement.viewport,t=e.element,n=e.getRenderingEngine();this._removeEventListeners(t),n.disableElement(e.id),t.parentNode&&t.parentNode.removeChild(t)}},{key:"_handleToolModeChanged",value:function(e){var t,n=this._magnifyToolGroup,r=e.detail,o=r.toolGroupId,a=r.toolName,i=r.mode,l=r.toolBindingsOptions;if((null===(t=this._sourceToolGroup)||void 0===t?void 0:t.id)===o)switch(i){case Xe.Active:n.setToolActive(a,l);break;case Xe.Passive:n.setToolPassive(a);break;case Xe.Enabled:n.setToolEnabled(a);break;case Xe.Disabled:n.setToolDisabled(a);break;default:throw new Error("Unknow tool mode (".concat(i,")"))}}},{key:"_inheritBorderRadius",value:function(e){var t=e.querySelector(".viewport-element"),n=e.querySelector(".cornerstone-canvas");t.style.borderRadius="inherit",n.style.borderRadius="inherit"}},{key:"_createViewportNode",value:function(){var e=document.createElement("div"),t=this.radius,n=2*t;return e.classList.add("advancedMagnifyTool"),Object.assign(e.style,{display:"block",width:"".concat(n,"px"),height:"".concat(n,"px"),position:"absolute",overflow:"hidden",borderRadius:"50%",boxSizing:"border-box",left:"".concat(-t,"px"),top:"".concat(-t,"px"),transform:"translate(-1000px, -1000px)"}),e}},{key:"_convertZoomFactorToParalellScale",value:function(e,t,n){return e.getCamera().parallelScale*(1/n)*(t.canvas.offsetWidth/e.canvas.offsetWidth)}},{key:"_isStackViewport",value:function(e){return"setStack"in e}},{key:"_isVolumeViewport",value:function(e){return"addVolumes"in e}},{key:"_cloneToolGroups",value:function(e,t){var n=e.getActors(),r="".concat(t.id,"-toolGroup"),o=Fr(e.id,e.renderingEngineId),a=o.clone(r,(function(e){var t=o.getToolInstance(e);return t instanceof Id&&!(t instanceof cp)||e===el.toolName}));return a.addViewport(t.id,t.renderingEngineId),n.filter(op).forEach((function(e){Sg(r,[{segmentationId:e.referenceId,type:gt.Labelmap}])})),{sourceToolGroup:o,magnifyToolGroup:a}}},{key:"_cloneStack",value:function(e,t){var n=this,r=e.getImageIds();t.setStack(r).then((function(){n._isViewportReady=!0,n.update()}))}},{key:"_cloneVolumes",value:function(e,t){var n=this,r=e.getActors().filter((function(e){return!op(e)})).map((function(e){return{volumeId:e.uid}}));return t.setVolumes(r).then((function(){n._isViewportReady=!0,n.update()})),t}},{key:"_cloneViewport",value:function(e,t){var n=this.viewportId,r=e.getRenderingEngine(),o=e.options,a={element:t,viewportId:n,type:e.type,defaultOptions:rp({},o)};r.enableElement(a);var i=r.getViewport(n);this._isStackViewport(e)?this._cloneStack(e,i):this._isVolumeViewport(e)&&this._cloneVolumes(e,i),this._inheritBorderRadius(t);var l=this._cloneToolGroups(e,i);this._sourceToolGroup=l.sourceToolGroup,this._magnifyToolGroup=l.magnifyToolGroup}},{key:"_cancelMouseEventCallback",value:function(e){e.stopPropagation(),e.preventDefault()}},{key:"_browserMouseUpCallback",value:function(e){var t=this._enabledElement.viewport.element;document.removeEventListener("mouseup",this._browserMouseUpCallback),t.addEventListener("mouseup",this._cancelMouseEventCallback),t.addEventListener("mousemove",this._cancelMouseEventCallback)}},{key:"_browserMouseDownCallback",value:function(e){var t,n=this._enabledElement.viewport.element;this._canAutoPan=!(null===(t=e.target)||void 0===t||!t.closest(".advancedMagnifyTool")),document.addEventListener("mouseup",this._browserMouseUpCallback),n.removeEventListener("mouseup",this._cancelMouseEventCallback),n.removeEventListener("mousemove",this._cancelMouseEventCallback)}},{key:"_mouseDragCallback",value:function(e){if(Ke.isInteractingWithTool){var t=this._autoPan;if(t.enabled&&this._canAutoPan){var n=e.detail.currentPoints,r=this._enabledElement.viewport.canvasToWorld,o=n.canvas,a=this.radius,i=[a,a],l=Ou(i,o),s=a-t.padding;if(!(l<=s)){var c=l-s,d=xs.vec2.sub(xs.vec2.create(),o,i);xs.vec2.normalize(d,d),xs.vec2.scale(d,d,c);var u=xs.vec2.add(xs.vec2.create(),this.position,d),v=r(this.position),f=r(u),g=xs.vec3.sub(xs.vec3.create(),f,v),h={points:{currentPosition:{canvas:this.position,world:v},newPosition:{canvas:u,world:f}},delta:{canvas:d,world:g}};t.callback(h)}}}}},{key:"_addBrowserEventListeners",value:function(e){document.addEventListener("mousedown",this._browserMouseDownCallback,!0),e.addEventListener("mousedown",this._cancelMouseEventCallback),e.addEventListener("mouseup",this._cancelMouseEventCallback),e.addEventListener("mousemove",this._cancelMouseEventCallback),e.addEventListener("dblclick",this._cancelMouseEventCallback)}},{key:"_removeBrowserEventListeners",value:function(e){document.removeEventListener("mousedown",this._browserMouseDownCallback,!0),document.removeEventListener("mouseup",this._browserMouseUpCallback),e.removeEventListener("mousedown",this._cancelMouseEventCallback),e.removeEventListener("mouseup",this._cancelMouseEventCallback),e.removeEventListener("mousemove",this._cancelMouseEventCallback),e.removeEventListener("dblclick",this._cancelMouseEventCallback)}},{key:"_addEventListeners",value:function(e){J.eventTarget.addEventListener(Q.TOOL_MODE_CHANGED,this._handleToolModeChanged),e.addEventListener(Q.MOUSE_MOVE,this._mouseDragCallback),e.addEventListener(Q.MOUSE_DRAG,this._mouseDragCallback),this._addBrowserEventListeners(e)}},{key:"_removeEventListeners",value:function(e){J.eventTarget.removeEventListener(Q.TOOL_MODE_CHANGED,this._handleToolModeChanged),e.addEventListener(Q.MOUSE_MOVE,this._mouseDragCallback),e.addEventListener(Q.MOUSE_DRAG,this._mouseDragCallback),this._removeBrowserEventListeners(e)}},{key:"_initialize",value:function(){var e=this._sourceEnabledElement.viewport,t=e.canvas,n=this._createViewportNode();t.parentNode.appendChild(n),this._addEventListeners(n),this._cloneViewport(e,n),this._enabledElement=(0,J.getEnabledElement)(n)}},{key:"_syncViewportsCameras",value:function(e,t){var n=e.canvasToWorld(this.position),r=this._convertZoomFactorToParalellScale(e,t,this.zoomFactor),o=t.getCamera(),a=o.focalPoint,i=o.position,l=o.viewPlaneNormal,s=Math.sqrt(Math.pow(a[0]-i[0],2)+Math.pow(a[1]-i[1],2)+Math.pow(a[2]-i[2],2)),c=[n[0],n[1],n[2]],d=[c[0]+s*l[0],c[1]+s*l[1],c[2]+s*l[2]];t.setCamera({parallelScale:r,focalPoint:c,position:d})}},{key:"_syncStackViewports",value:function(e,t){t.setImageIdIndex(e.getCurrentImageIdIndex())}},{key:"_syncViewports",value:function(){var e=this._sourceEnabledElement.viewport,t=this._enabledElement.viewport,n=e.getProperties();t.setProperties(n),this._syncViewportsCameras(e,t),this._isStackViewport(e)&&this._syncStackViewports(e,t)}},{key:"_resizeViewport",value:function(){this._enabledElement.viewport.getRenderingEngine().resize()}}]),e}(),ip=1-J.CONSTANTS.EPSILON,lp=J.Enums.Events,sp=function(){function e(){var t=this;oe(this,e),ae(this,"_magnifyViewportsMap",void 0),ae(this,"createViewport",(function(e,n){var r=n.magnifyViewportId,o=n.sourceEnabledElement,a=n.position,i=n.radius,l=n.zoomFactor,s=n.autoPan,c=o.viewport.element,d=new ap({magnifyViewportId:r,sourceEnabledElement:o,radius:i,position:a,zoomFactor:l,autoPan:s});return t._addSourceElementEventListener(c),t._magnifyViewportsMap.set(d.viewportId,{annotation:e,magnifyViewport:d}),d})),ae(this,"_annotationRemovedCallback",(function(e){var n=e.detail.annotation;"AdvancedMagnify"===n.metadata.toolName&&t._destroyViewport(n.data.magnifyViewportId)})),ae(this,"_newStackImageCallback",(function(e){var n=e.detail,r=n.viewportId,o=n.imageId;t._getMagnifyViewportsMapEntriesBySourceViewportId(r).forEach((function(e){var t=e.annotation;t.metadata.referencedImageId=o,t.invalidated=!0}))})),ae(this,"_newVolumeImageCallback",(function(e){var n=e.detail,r=n.renderingEngineId,o=n.viewportId,a=(0,J.getRenderingEngine)(r).getViewport(o),i=a.getCamera().viewPlaneNormal;t._getMagnifyViewportsMapEntriesBySourceViewportId(o).forEach((function(e){var t=e.annotation,n=t.metadata.viewPlaneNormal;if(Math.abs(xs.vec3.dot(n,i))>ip){for(var r=t.data.handles,o=a.canvasToWorld([0,0]),l=xs.vec3.sub(xs.vec3.create(),o,r.points[0]),s=xs.vec3.dot(l,i),c=xs.vec3.scale(xs.vec3.create(),i,s),d=0,u=r.points.length;d<u;d++){var v=r.points[d];v[0]+=c[0],v[1]+=c[1],v[2]+=c[2]}t.invalidated=!0}}))})),this._magnifyViewportsMap=new Map,this._initialize()}return re(e,[{key:"getViewport",value:function(e){var t;return null===(t=this._magnifyViewportsMap.get(e))||void 0===t?void 0:t.magnifyViewport}},{key:"dispose",value:function(){this._removeEventListeners(),this._destroyViewports()}},{key:"_destroyViewport",value:function(e){var t=this._magnifyViewportsMap.get(e);if(t){var n=t.magnifyViewport,r=n.sourceEnabledElement.viewport.element;this._removeSourceElementEventListener(r),n.dispose(),this._magnifyViewportsMap.delete(e)}}},{key:"_destroyViewports",value:function(){var e=this;Array.from(this._magnifyViewportsMap.keys()).forEach((function(t){return e._destroyViewport(t)}))}},{key:"_getMagnifyViewportsMapEntriesBySourceViewportId",value:function(e){return Array.from(this._magnifyViewportsMap.values()).filter((function(t){return t.magnifyViewport.sourceEnabledElement.viewport.id===e}))}},{key:"_addEventListeners",value:function(){J.eventTarget.addEventListener(Q.ANNOTATION_REMOVED,this._annotationRemovedCallback)}},{key:"_removeEventListeners",value:function(){J.eventTarget.removeEventListener(Q.ANNOTATION_REMOVED,this._annotationRemovedCallback)}},{key:"_addSourceElementEventListener",value:function(e){e.addEventListener(lp.STACK_NEW_IMAGE,this._newStackImageCallback),e.addEventListener(lp.VOLUME_NEW_IMAGE,this._newVolumeImageCallback)}},{key:"_removeSourceElementEventListener",value:function(e){e.removeEventListener(lp.STACK_NEW_IMAGE,this._newStackImageCallback),e.removeEventListener(lp.VOLUME_NEW_IMAGE,this._newVolumeImageCallback)}},{key:"_initialize",value:function(){this._addEventListeners()}}],[{key:"getInstance",value:function(){var t;return e._singleton=null!==(t=e._singleton)&&void 0!==t?t:new e,e._singleton}}]),e}();ae(sp,"_singleton",void 0);var cp=function(e){pa(o,e);var t,n,r=(t=o,n=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,r=wa(t);if(n){var o=wa(this).constructor;e=Reflect.construct(r,arguments,o)}else e=r.apply(this,arguments);return ma(this,e)});function o(){var e,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{supportedInteractionTypes:["Mouse","Touch"],configuration:{shadow:!0,magnifyingGlass:{radius:125,zoomFactor:2.5,zoomFactorList:[2.5,3,3.5,4,4.5,5],autoPan:{enabled:!0,padding:10}},actions:[{method:"showZoomFactorsList",bindings:[{mouseButton:Eo.Secondary,modifierKey:yo.Shift}]}]}};return oe(this,o),ae(ga(e=r.call(this,t,n)),"magnifyViewportManager",void 0),ae(ga(e),"touchDragCallback",void 0),ae(ga(e),"mouseDragCallback",void 0),ae(ga(e),"editData",void 0),ae(ga(e),"isDrawing",void 0),ae(ga(e),"addNewAnnotation",(function(t){var n=t.detail,r=n.currentPoints,o=n.element,a=(0,J.getEnabledElement)(o),i=a.viewport,l=a.renderingEngine,s=r.world,c=r.canvas,d=e.configuration.magnifyingGlass,u=d.radius,v=d.zoomFactor,f=d.autoPan,g=e._getWorldHandlesPoints(i,c,u),h=i.getCamera(),p=h.viewPlaneNormal,m=h.viewUp,w=e.getReferencedImageId(i,s,p,m),E=J.utilities.uuidv4(),y=J.utilities.uuidv4(),I=i.getFrameOfReferenceUID(),b={annotationUID:E,highlighted:!0,invalidated:!0,metadata:{toolName:e.getToolName(),viewPlaneNormal:Lr(p),viewUp:Lr(m),FrameOfReferenceUID:I,referencedImageId:w},data:{sourceViewportId:i.id,magnifyViewportId:y,zoomFactor:v,handles:{points:g,activeHandleIndex:null}}};e.magnifyViewportManager.createViewport(b,{magnifyViewportId:y,sourceEnabledElement:a,position:c,radius:u,zoomFactor:v,autoPan:{enabled:f.enabled,padding:f.padding,callback:function(e){for(var t=b.data.handles.points,n=e.delta.world,r=0,o=t.length;r<o;r++)t[r][0]+=n[0],t[r][1]+=n[1],t[r][2]+=n[2]}}}),rt(b,o);var C=ud(o,e.getToolName());return t.preventDefault(),ca(l,C),b})),ae(ga(e),"isPointNearTool",(function(e,t,n,r){var o=(0,J.getEnabledElement)(e).viewport,a=t.data.handles.points.map((function(e){return o.worldToCanvas(e)})),i=a[0],l=a[2],s=a[3],c=.5*Math.abs(l[1]-i[1]),d=Mh([[s[0]+c,i[1]+c],n]);return Math.abs(d-c)<1.5*r})),ae(ga(e),"toolSelectedCallback",(function(t,n){var r=t.detail.element;n.highlighted=!0;var o=ud(r,e.getToolName());e.editData={annotation:n,viewportIdsToRender:o},gs(r),e._activateModify(r);var a=(0,J.getEnabledElement)(r).renderingEngine;ca(a,o),t.preventDefault()})),ae(ga(e),"handleSelectedCallback",(function(t,n,r){var o=t.detail.element,a=n.data;n.highlighted=!0;var i=a.handles.points.findIndex((function(e){return e===r})),l=ud(o,e.getToolName());e.editData={annotation:n,viewportIdsToRender:l,handleIndex:i},e._activateModify(o),gs(o);var s=(0,J.getEnabledElement)(o).renderingEngine;ca(s,l),t.preventDefault()})),ae(ga(e),"_endCallback",(function(t){var n=t.detail.element,r=e.editData,o=r.annotation,a=r.viewportIdsToRender,i=r.newAnnotation;o.data.handles.activeHandleIndex=null,e._deactivateModify(n),fs(n);var l=(0,J.getEnabledElement)(n).renderingEngine;if(e.editData=null,e.isDrawing=!1,ca(l,a),i){var s=Q.ANNOTATION_COMPLETED,c={annotation:o};(0,J.triggerEvent)(J.eventTarget,s,c)}})),ae(ga(e),"_dragDrawCallback",(function(t){var n;e.isDrawing=!0;var r=t.detail,o=r.element,a=r.deltaPoints,i=null!==(n=null==a?void 0:a.world)&&void 0!==n?n:[0,0,0],l=(0,J.getEnabledElement)(o).renderingEngine,s=e.editData,c=s.annotation,d=s.viewportIdsToRender;c.data.handles.points.forEach((function(e){e[0]+=i[0],e[1]+=i[1],e[2]+=i[2]})),c.invalidated=!0,e.editData.hasMoved=!0,ca(l,d)})),ae(ga(e),"_dragModifyCallback",(function(t){e.isDrawing=!0;var n=t.detail,r=n.element,o=e.editData,a=o.annotation,i=o.viewportIdsToRender,l=o.handleIndex,s=a.data;if(void 0===l){var c=n.deltaPoints.world;s.handles.points.forEach((function(e){e[0]+=c[0],e[1]+=c[1],e[2]+=c[2]})),a.invalidated=!0}else e._dragHandle(t),a.invalidated=!0;var d=(0,J.getEnabledElement)(r).renderingEngine;ca(d,i)})),ae(ga(e),"_dragHandle",(function(t){var n=t.detail,r=n.element,o=(0,J.getEnabledElement)(r).viewport,a=o.worldToCanvas,i=e.editData.annotation.data.handles.points,l=i.map((function(e){return a(e)})),s=l[0],c=l[2],d=l[3],u=.5*Math.abs(c[1]-s[1]),v=[d[0]+u,s[1]+u],f=Mh([v,n.currentPoints.canvas]),g=e._getWorldHandlesPoints(o,v,f);i[0]=g[0],i[1]=g[1],i[2]=g[2],i[3]=g[3]})),ae(ga(e),"cancel",(function(t){if(e.isDrawing){e.isDrawing=!1,e._deactivateModify(t),fs(t);var n=e.editData,r=n.annotation,o=n.viewportIdsToRender,a=n.newAnnotation,i=r.data;r.highlighted=!1,i.handles.activeHandleIndex=null;var l=(0,J.getEnabledElement)(t).renderingEngine;if(ca(l,o),a){var s=Q.ANNOTATION_COMPLETED,c={annotation:r};(0,J.triggerEvent)(J.eventTarget,s,c)}return e.editData=null,r.annotationUID}})),ae(ga(e),"_activateModify",(function(t){Ke.isInteractingWithTool=!0,t.addEventListener(Q.MOUSE_UP,e._endCallback),t.addEventListener(Q.MOUSE_DRAG,e._dragModifyCallback),t.addEventListener(Q.MOUSE_CLICK,e._endCallback),t.addEventListener(Q.TOUCH_END,e._endCallback),t.addEventListener(Q.TOUCH_DRAG,e._dragModifyCallback),t.addEventListener(Q.TOUCH_TAP,e._endCallback)})),ae(ga(e),"_deactivateModify",(function(t){Ke.isInteractingWithTool=!1,t.removeEventListener(Q.MOUSE_UP,e._endCallback),t.removeEventListener(Q.MOUSE_DRAG,e._dragModifyCallback),t.removeEventListener(Q.MOUSE_CLICK,e._endCallback),t.removeEventListener(Q.TOUCH_END,e._endCallback),t.removeEventListener(Q.TOUCH_DRAG,e._dragModifyCallback),t.removeEventListener(Q.TOUCH_TAP,e._endCallback)})),ae(ga(e),"renderAnnotation",(function(t,n){var r,o,a,i=!1,l=t.viewport,s=l.element,c=nt(e.getToolName(),s);if(null===(r=c)||void 0===r||!r.length)return i;if(c=null===(o=c=e.filterInteractableAnnotationsForElement(s,c))||void 0===o?void 0:o.filter((function(e){return e.data.sourceViewportId===l.id})),null===(a=c)||void 0===a||!a.length)return i;for(var d={toolGroupId:e.toolGroupId,toolName:e.getToolName(),viewportId:t.viewport.id},u=0;u<c.length;u++){var v=c[u],f=v.annotationUID,g=v.data,h=g.magnifyViewportId,p=g.zoomFactor,m=g.handles,w=m.points,E=m.activeHandleIndex;d.annotationUID=f;var y=e.getStyle("lineWidth",d,v),I=e.getStyle("lineDash",d,v),b=e.getStyle("color",d,v),C=w.map((function(e){return l.worldToCanvas(e)})),_=C[0],T=C[2],O=C[3],D=.5*Math.abs(T[1]-_[1]),S=[O[0]+D,_[1]+D];if(!l.getRenderingEngine())return console.warn("Rendering Engine has been destroyed"),i;var k=void 0;if(Pe(f)){ve(v)||e.editData||null===E||(k=[C[E]]),k&&Xs(n,f,"0",k,{color:b});var M="".concat(f,"-advancedMagnify");Ks(n,f,"0",S,D,{color:b,lineDash:I,lineWidth:y},M);var x=e.magnifyViewportManager.getViewport(h);x.position=S,x.radius=D,x.zoomFactor=p,x.update(),i=!0}}return i})),ae(ga(e),"_getWorldHandlesPoints",(function(e,t,n){return[[t[0],t[1]-n],[t[0]+n,t[1]],[t[0],t[1]+n],[t[0]-n,t[1]]].map((function(t){return e.canvasToWorld(t)}))})),e.magnifyViewportManager=sp.getInstance(),e}return re(o,[{key:"showZoomFactorsList",value:function(e,t){var n=e.detail,r=n.element,o=n.currentPoints,a=(0,J.getEnabledElement)(r).viewport,i=o.canvas,l=r.querySelector(":scope .viewport-element"),s=t.data.zoomFactor,c=this._getZoomFactorsListDropdown(s,(function(e){void 0!==e&&(t.data.zoomFactor=Number.parseFloat(e),t.invalidated=!0),c.parentElement.removeChild(c),a.render()}));Object.assign(c.style,{left:"".concat(i[0],"px"),top:"".concat(i[1],"px")}),l.appendChild(c),c.focus()}},{key:"_getZoomFactorsListDropdown",value:function(e,t){var n=this.configuration.magnifyingGlass.zoomFactorList,r=document.createElement("select");return r.size=5,Object.assign(r.style,{width:"50px",position:"absolute"}),["mousedown","mouseup","mousemove","click"].forEach((function(e){r.addEventListener(e,(function(e){return e.stopPropagation()}))})),r.addEventListener("change",(function(e){e.stopPropagation(),t(r.value)})),r.addEventListener("keydown",(function(e){var n,r;((null!==(n=e.keyCode)&&void 0!==n?n:27===e.which)||"escape"===(null===(r=e.key)||void 0===r?void 0:r.toLowerCase()))&&(e.stopPropagation(),t())})),n.forEach((function(t){var n=document.createElement("option");n.label=t,n.title="Zoom factor ".concat(t.toFixed(1)),n.value=t,n.defaultSelected=t===e,r.add(n)})),r}}]),o}(Id);ae(cp,"toolName",void 0),cp.toolName="AdvancedMagnify";var dp=function(e){pa(o,e);var t,n,r=(t=o,n=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,r=wa(t);if(n){var o=wa(this).constructor;e=Reflect.construct(r,arguments,o)}else e=r.apply(this,arguments);return ma(this,e)});function o(){var e,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{supportedInteractionTypes:["Mouse","Touch"],configuration:{shadow:!0,preventHandleOutsideImage:!1,displayThreshold:5,positionSync:!0,disableCursor:!1}};return oe(this,o),ae(ga(e=r.call(this,t,n)),"touchDragCallback",void 0),ae(ga(e),"mouseDragCallback",void 0),ae(ga(e),"_throttledCalculateCachedStats",void 0),ae(ga(e),"isDrawing",!1),ae(ga(e),"isHandleOutsideImage",!1),ae(ga(e),"_elementWithCursor",null),ae(ga(e),"_currentCursorWorldPosition",null),ae(ga(e),"_currentCanvasPosition",null),ae(ga(e),"_disableCursorEnabled",!1),ae(ga(e),"mouseMoveCallback",(function(t){var n=t.detail,r=n.element,o=n.currentPoints;e._currentCursorWorldPosition=o.world,e._currentCanvasPosition=o.canvas,e._elementWithCursor=r;var a=e.getActiveAnnotation(r);return null===a?(e.createInitialAnnotation(o.world,r),!1):(e.updateAnnotationPosition(r,a),!1)})),ae(ga(e),"createInitialAnnotation",(function(t,n){var r=(0,J.getEnabledElement)(n);if(!r)throw new Error("No enabled element found");var o=r.viewport,a=r.renderingEngine;e.isDrawing=!0;var i=o.getCamera(),l=i.viewPlaneNormal,s=i.viewUp;if(!l||!s)throw new Error("Camera not found");var c=e.getReferencedImageId(o,t,l,s),d=o.getFrameOfReferenceUID(),u={highlighted:!0,invalidated:!0,metadata:{toolName:e.getToolName(),viewPlaneNormal:Lr(l),viewUp:Lr(s),FrameOfReferenceUID:d,referencedImageId:c},data:{label:"",handles:{points:[Lr(t)],activeHandleIndex:null,textBox:{hasMoved:!1,worldPosition:[0,0,0],worldBoundingBox:{topLeft:[0,0,0],topRight:[0,0,0],bottomLeft:[0,0,0],bottomRight:[0,0,0]}}}}};if(nt(e.getToolName(),n).length>0)return null;if(null!==rt(u,n)){var v=ud(n,e.getToolName(),!1);ca(a,v)}})),ae(ga(e),"onCameraModified",(function(t){var n=t.detail,r=n.element,o=n.previousCamera,a=n.camera,i=(0,J.getEnabledElement)(r).viewport;if(r===e._elementWithCursor){var l=o.focalPoint,s=a.viewPlaneNormal,c=a.focalPoint,d=[0,0,0];if(Su().subtract(c,l,d),0!==d.reduce((function(e,t){return e+t}),0)){var u=Su().dot(d,s);if(!(Math.abs(u)<.01)&&e._currentCanvasPosition){var v=i.canvasToWorld(e._currentCanvasPosition);e._currentCursorWorldPosition=v,e.updateAnnotationPosition(r,e.getActiveAnnotation(r))}}}})),ae(ga(e),"renderAnnotation",(function(t,n){var r,o,a=!1,i=t.viewport,l=(t.FrameOfReferenceUID,e._elementWithCursor===i.element);e.configuration.positionSync&&!l&&e.updateViewportImage(i);var s=i.element,c=nt(e.getToolName(),s);if(null===(r=c)||void 0===r||!r.length)return a;if(null===(o=c=e.filterInteractableAnnotationsForElement(s,c))||void 0===o||!o.length)return a;for(var d={toolGroupId:e.toolGroupId,toolName:e.getToolName(),viewportId:t.viewport.id},u=0;u<c.length;u++){var v=c[u],f=v.annotationUID,g=v.data.handles.points;if(!f)return a;d.annotationUID=f;var h=parseFloat(e.getStyle("lineWidth",d,v)),p=e.getStyle("lineDash",d,v),m=e.getStyle("color",d,v);if(g[0].some((function(e){return isNaN(e)})))return a;var w=g.map((function(e){return i.worldToCanvas(e)}));if(!i.getRenderingEngine())return console.warn("Rendering Engine has been destroyed"),a;if(Pe(f)){var E={upper:"upper",right:"right",lower:"lower",left:"left"},y=dt(w[0],2),I=y[0],b=y[1],C=l?20:7,_=l?5:7;Zs(n,f,E.upper,[I,b-(C/2+_)],[I,b-C/2],{color:m,lineDash:p,lineWidth:h}),Zs(n,f,E.lower,[I,b+(C/2+_)],[I,b+C/2],{color:m,lineDash:p,lineWidth:h}),Zs(n,f,E.right,[I+(C/2+_),b],[I+C/2,b],{color:m,lineDash:p,lineWidth:h}),Zs(n,f,E.left,[I-(C/2+_),b],[I-C/2,b],{color:m,lineDash:p,lineWidth:h}),a=!0}}return a})),e._disableCursorEnabled=e.configuration.disableCursor,e}return re(o,[{key:"onSetToolActive",value:function(){if(this._disableCursorEnabled=this.configuration.disableCursor,this._disableCursorEnabled){var e=fa(this.toolGroupId).viewportsInfo;e&&e.map((function(e){return(0,J.getEnabledElementByIds)(e.viewportId,e.renderingEngineId)})).forEach((function(e){e&&gs(e.viewport.element)}))}}},{key:"onSetToolDisabled",value:function(){if(this._disableCursorEnabled){var e=fa(this.toolGroupId).viewportsInfo;e&&e.map((function(e){return(0,J.getEnabledElementByIds)(e.viewportId,e.renderingEngineId)})).forEach((function(e){e&&fs(e.viewport.element)}))}}},{key:"getActiveAnnotation",value:function(e){var t=nt(this.getToolName(),e);return t.length?t[0]:null}},{key:"updateAnnotationPosition",value:function(e,t){var n,r,o=this._currentCursorWorldPosition;if(o&&null!==(n=t.data)&&void 0!==n&&null!==(r=n.handles)&&void 0!==r&&r.points){t.data.handles.points=[Lr(o)],t.invalidated=!0;var a=ud(e,this.getToolName(),!1),i=(0,J.getEnabledElement)(e);if(i){var l=i.renderingEngine;ca(l,a)}}}},{key:"filterInteractableAnnotationsForElement",value:function(e,t){var n,r,o;if(!(t instanceof Array)||0===t.length)return[];var a=t[0],i=null===(n=(0,J.getEnabledElement)(e))||void 0===n?void 0:n.viewport;if(!i)return[];var l=i.getCamera(),s=l.viewPlaneNormal,c=l.focalPoint;if(!s||!c)return[];var d=null===(r=a.data)||void 0===r||null===(o=r.handles)||void 0===o?void 0:o.points;if(!(d instanceof Array)||1!==d.length)return[];var u=d[0],v=J.utilities.planar.planeEquation(s,c);return J.utilities.planar.planeDistanceToPoint(v,u)<this.configuration.displayThreshold?[a]:[]}},{key:"updateViewportImage",value:function(e){var t=this._currentCursorWorldPosition;if(t&&!t.some((function(e){return isNaN(e)})))if(e instanceof J.StackViewport){var n=J.utilities.getClosestStackImageIndexForPoint(t,e);if(null===n)return;n!==e.getCurrentImageIdIndex()&&e.setImageIdIndex(n)}else if(e instanceof J.VolumeViewport){var r=e.getCamera(),o=r.focalPoint,a=r.viewPlaneNormal;if(!o||!a)return;var i=J.utilities.planar.planeEquation(a,o),l=J.utilities.planar.planeDistanceToPoint(i,t,!0);if(Math.abs(l)<.5)return;var s=xs.vec3.normalize(xs.vec3.create(),xs.vec3.fromValues.apply(xs.vec3,Lr(a))),c=xs.vec3.scale(xs.vec3.create(),s,l),d=xs.vec3.add(xs.vec3.create(),xs.vec3.fromValues.apply(xs.vec3,Lr(o)),c);e.setCamera({focalPoint:d});var u=e.getRenderingEngine();u&&u.renderViewport(e.id)}}}]),o}(wd);ae(dp,"toolName",void 0),dp.toolName="ReferenceCursors";var up=dp;var vp=[],fp=function(e){pa(o,e);var t,n,r=(t=o,n=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,r=wa(t);if(n){var o=wa(this).constructor;e=Reflect.construct(r,arguments,o)}else e=r.apply(this,arguments);return ma(this,e)});function o(){var e,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{configuration:{viewportId:"",scaleLocation:"bottom"}};return oe(this,o),ae(ga(e=r.call(this,t,n)),"touchDragCallback",void 0),ae(ga(e),"mouseDragCallback",void 0),ae(ga(e),"_throttledCalculateCachedStats",void 0),ae(ga(e),"editData",{}),ae(ga(e),"isDrawing",void 0),ae(ga(e),"isHandleOutsideImage",void 0),ae(ga(e),"_init",(function(){var t=(0,J.getRenderingEngines)()[0];if(t){var n=fa(e.toolGroupId).viewportsInfo;if(n){var r=n.map((function(e){return(0,J.getEnabledElementByIds)(e.viewportId,e.renderingEngineId)})),o=r[0].viewport,a=r[0].FrameOfReferenceUID;if(e.configuration.viewportId&&r.forEach((function(t){t.viewport.id==e.configuration.viewportId&&(o=t.viewport)})),o){var i=o.getCamera(),l=i.viewUp,s=i.viewPlaneNormal,c=J.utilities.getViewportImageCornersInWorld(o),d=e.editData.annotation,u=nt(e.getToolName(),o.element);if(u.length&&(d=u.filter((function(e){return e.data.viewportId==o.id}))[0]),vp.includes(o.id))e.editData.annotation.data.viewportId==o.id&&(e.editData.annotation.data.handles.points=c,e.editData.annotation.data.viewportId=o.id);else{var v={metadata:{toolName:e.getToolName(),viewPlaneNormal:Lr(s),viewUp:Lr(l),FrameOfReferenceUID:a,referencedImageId:null},data:{handles:{points:c},viewportId:o.id}};vp.push(o.id),rt(v,o.element),d=v}e.editData={viewport:o,renderingEngine:t,annotation:d}}}}})),ae(ga(e),"onSetToolEnabled",(function(){e._init()})),ae(ga(e),"onCameraModified",(function(t){e.configuration.viewportId=t.detail.viewportId,e._init()})),ae(ga(e),"computeScaleSize",(function(e,t,n){var r=[16e3,8e3,4e3,2e3,1e3,500,250,100,50,25,10,5,2];return("top"==n||"bottom"==n?r.filter((function(t){return t<.6*e&&t>.2*e})):r.filter((function(e){return e<.6*t&&e>.2*t})))[0]})),ae(ga(e),"computeEndScaleTicks",(function(e,t){var n={bottom:[[0,-10],[0,-10]],top:[[0,10],[0,10]],left:[[0,0],[10,0]],right:[[0,0],[-10,0]]};return{endTick1:[[e[1][0]+n[t][0][0],e[1][1]+n[t][0][0]],[e[1][0]+n[t][1][0],e[1][1]+n[t][1][1]]],endTick2:[[e[0][0]+n[t][0][0],e[0][1]+n[t][0][0]],[e[0][0]+n[t][1][0],e[0][1]+n[t][1][1]]]}})),ae(ga(e),"computeInnerScaleTicks",(function(e,t,n,r,o){var a;"bottom"==t||"top"==t?a=o[0][0]-r[0][0]:"left"!=t&&"right"!=t||(a=o[0][1]-r[0][1]);var i=[],l=[],s=[],c=e;e>=50&&(c=e/10);for(var d=a/c,u=0;u<c-1;u++){var v={bottom:[[d*(u+1),0],[d*(u+1),5]],top:[[d*(u+1),0],[d*(u+1),-5]],left:[[0,d*(u+1)],[-5,d*(u+1)]],right:[[0,d*(u+1)],[5,d*(u+1)]]};i.push("".concat(n,"-tick").concat(u)),l.push("tick".concat(u)),(u+1)%5==0?s.push([[r[0][0]+v[t][0][0],r[0][1]+v[t][0][1]],[r[1][0]+v[t][0][0],r[1][1]+v[t][0][1]]]):s.push([[r[0][0]+v[t][0][0],r[0][1]+v[t][0][1]],[r[1][0]+v[t][1][0],r[1][1]+v[t][1][1]]])}return{tickIds:i,tickUIDs:l,tickCoordinates:s}})),ae(ga(e),"computeWorldScaleCoordinates",(function(e,t,n){var r,o=xs.vec3.subtract(xs.vec3.create(),n[0],n[1]);o=xs.vec3.normalize(xs.vec3.create(),o);var a=xs.vec3.subtract(xs.vec3.create(),n[2],n[0]);a=xs.vec3.normalize(xs.vec3.create(),a);var i={bottom:[n[1],n[2]],top:[n[0],n[3]],right:[n[2],n[3]],left:[n[0],n[1]]},l=xs.vec3.add(xs.vec3.create(),i[t][0],i[t][0]).map((function(e){return e/2})),s=e/2/Math.sqrt(Math.pow(o[0],2)+Math.pow(o[1],2)+Math.pow(o[2],2));return"top"==t||"bottom"==t?r=[xs.vec3.subtract(xs.vec3.create(),l,a.map((function(e){return e*s}))),xs.vec3.add(xs.vec3.create(),l,a.map((function(e){return e*s})))]:"left"!=t&&"right"!=t||(r=[xs.vec3.add(xs.vec3.create(),l,o.map((function(e){return e*s}))),xs.vec3.subtract(xs.vec3.create(),l,o.map((function(e){return e*s})))]),r})),ae(ga(e),"computeCanvasScaleCoordinates",(function(e,t,n,r,o){var a;if("top"==o||"bottom"==o){var i=t[0][0]-t[1][0];a=[[e.width/2-i/2,n.height],[e.width/2+i/2,n.height]]}else if("left"==o||"right"==o){var l=t[0][1]-t[1][1];a=[[r.width,e.height/2-l/2],[r.width,e.height/2+l/2]]}return a})),ae(ga(e),"computeScaleBounds",(function(e,t,n,r){var o=t*Math.min(1e3,e.width),a=n*Math.min(1e3,e.height),i={bottom:[-a,-o],top:[a,o],left:[a,o],right:[-a,-o]},l={bottom:[e.height,e.width],top:[0,e.width],left:[e.height,0],right:[e.height,e.width]};return{height:l[r][0]+i[r][0],width:l[r][1]+i[r][1]}})),e}return re(o,[{key:"renderAnnotation",value:function(e,t){if(this.editData.viewport){var n=this.configuration.scaleLocation,r=e.viewport,o=nt(this.getToolName(),r.element).filter((function(e){return e.data.viewportId==r.id}))[0],a=e.viewport.canvas;if(!r)return!1;var i={toolGroupId:this.toolGroupId,toolName:this.getToolName(),viewportId:e.viewport.id},l={width:a.width,height:a.height},s=o.data.handles.points[0],c=o.data.handles.points[1],d=o.data.handles.points[2],u=o.data.handles.points[3],v=[s,d,c,u],f=xs.vec3.distance(d,u),g=xs.vec3.distance(s,d),h=this.computeScaleBounds(l,.05,.05,n),p=this.computeScaleBounds(l,.05,.05,n),m=this.computeScaleSize(f,g,n),w=this.computeWorldScaleCoordinates(m,n,v).map((function(e){return r.worldToCanvas(e)})),E=this.computeCanvasScaleCoordinates(l,w,p,h,n),y=this.computeEndScaleTicks(E,n),I=o.annotationUID;i.annotationUID=I;var b=this.getStyle("lineWidth",i,o),C=this.getStyle("lineDash",i,o),_=this.getStyle("color",i,o),T=this.getStyle("shadow",i,o),O="".concat(I,"-scaleline");Zs(t,I,"1",E[0],E[1],{color:_,width:b,lineDash:C,shadow:T},O);var D="".concat(I,"-left");Zs(t,I,"2",y.endTick1[0],y.endTick1[1],{color:_,width:b,lineDash:C,shadow:T},D);var S="".concat(I,"-right");Zs(t,I,"3",y.endTick2[0],y.endTick2[1],{color:_,width:b,lineDash:C,shadow:T},S);for(var k={bottom:[-10,-42],top:[-12,-35],left:[-40,-20],right:[-50,-20]},M=[E[0][0]+k[n][0],E[0][1]+k[n][1]],x=this._getTextLines(m),R=this.computeInnerScaleTicks(m,n,I,y.endTick1,y.endTick2),P=R.tickIds,A=R.tickUIDs,N=R.tickCoordinates,L=0;L<A.length;L++)Zs(t,I,A[L],N[L][0],N[L][1],{color:_,width:b,lineDash:C,shadow:T},P[L]);return tc(t,I,"text0",x,[M[0],M[1]],{fontFamily:"Helvetica Neue, Helvetica, Arial, sans-serif",fontSize:"14px",lineDash:"2,3",lineWidth:"1",shadow:!0,color:_}),!1}}},{key:"_getTextLines",value:function(e){var t,n;return e>=50?(t=e/10,n=" cm"):(t=e,n=" mm"),[t.toString().concat(n)]}}]),o}(wd);ae(fp,"toolName",void 0),fp.toolName="ScaleOverlay";var gp=fp,hp=J.utilities.transformWorldToIndex;function pp(e,t){!function(e,t){var n=t.volume,r=t.points,o=t.segmentsLocked,a=t.segmentIndex,i=t.segmentationId,l=t.constraintFn,s=n.imageData,c=n.dimensions,d=n.getScalarData(),u=r.map((function(e){return hp(s,e)}));u=u.map((function(e){return e.map((function(e){return Math.round(e)}))}));var v=Cc(u,c);bc(s,(function(){return!0}),(function(e){var t=e.value,n=e.index,r=e.pointIJK;o.includes(t)||(l?l(r)&&(d[n]=a):d[n]=a)}),v),St(i)}(0,t)}var mp=J.utilities.transformWorldToIndex;function wp(e,t){!function(e,t){var n=t.volume,r=t.points,o=t.segmentsLocked,a=t.segmentationId,i=n.imageData,l=n.dimensions,s=n.getScalarData(),c=r.map((function(e){return mp(i,e)})),d=Cc(c,l);bc(i,(function(){return!0}),(function(e){var t=e.value,n=e.index;o.includes(t)||(s[n]=0)}),d),St(a)}(0,t)}var Ep=function(e){pa(o,e);var t,n,r=(t=o,n=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,r=wa(t);if(n){var o=wa(this).constructor;e=Reflect.construct(r,arguments,o)}else e=r.apply(this,arguments);return ma(this,e)});function o(){var e,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{supportedInteractionTypes:["Mouse","Touch"],configuration:{strategies:{FILL_INSIDE:pp,ERASE_INSIDE:wp},defaultStrategy:"FILL_INSIDE",activeStrategy:"FILL_INSIDE"}};return oe(this,o),ae(ga(e=r.call(this,t,n)),"_throttledCalculateCachedStats",void 0),ae(ga(e),"editData",void 0),ae(ga(e),"isDrawing",void 0),ae(ga(e),"isHandleOutsideImage",void 0),ae(ga(e),"preMouseDownCallback",(function(t){var n=t.detail,r=n.currentPoints,o=n.element,a=r.world,i=(0,J.getEnabledElement)(o),l=i.viewport,s=i.renderingEngine;e.isDrawing=!0;var c=l.getCamera(),d=c.viewPlaneNormal,u=c.viewUp,v=e.toolGroupId,f=Wc(v);if(!f)throw new Error("No active segmentation detected, create one before using scissors tool");var g=f.segmentationRepresentationUID,h=f.segmentationId,p=f.type,m=Kc(h),w=qc(h),E=Zc(v,g,m),y=Pt(h).representationData[p].volumeId,I=J.cache.getVolume(y),b={highlighted:!0,invalidated:!0,metadata:{viewPlaneNormal:Lr(d),viewUp:Lr(u),FrameOfReferenceUID:l.getFrameOfReferenceUID(),referencedImageId:"",toolName:e.getToolName(),segmentColor:E},data:{handles:{points:[Lr(a),Lr(a),Lr(a),Lr(a)],activeHandleIndex:null}}},C=ud(o,e.getToolName());return e.editData={annotation:b,segmentation:I,segmentIndex:m,segmentsLocked:w,segmentColor:E,segmentationId:h,viewportIdsToRender:C,handleIndex:3,movingTextBox:!1,newAnnotation:!0,hasMoved:!1},e._activateDraw(o),gs(o),t.preventDefault(),ca(s,C),!0})),ae(ga(e),"_dragCallback",(function(t){e.isDrawing=!0;var n,r,o,a,i,l,s,c,d=t.detail,u=d.element,v=e.editData,f=v.annotation,g=v.viewportIdsToRender,h=v.handleIndex,p=f.data,m=d.currentPoints,w=(0,J.getEnabledElement)(u),E=w.viewport,y=E.worldToCanvas,I=E.canvasToWorld,b=m.world,C=p.handles.points;switch(C[h]=Lr(b),h){case 0:case 3:n=y(C[0]),r=[(a=y(C[3]))[0],n[1]],o=[n[0],a[1]],l=I(r),s=I(o),C[1]=l,C[2]=s;break;case 1:case 2:r=y(C[1]),n=[(o=y(C[2]))[0],r[1]],a=[r[0],o[1]],i=I(n),c=I(a),C[0]=i,C[3]=c}f.invalidated=!0,e.editData.hasMoved=!0;var _=w.renderingEngine;ca(_,g)})),ae(ga(e),"_endCallback",(function(t){var n=t.detail.element,r=e.editData,o=r.annotation,a=r.newAnnotation,i=r.hasMoved,l=r.segmentation,s=r.segmentationId,c=r.segmentIndex,d=r.segmentsLocked,u=o.data;if(!a||i){u.handles.activeHandleIndex=null,e._deactivateDraw(n),fs(n);var v=(0,J.getEnabledElement)(n),f=v.viewport;if(e.editData=null,e.isDrawing=!1,f instanceof J.StackViewport)throw new Error("Not implemented yet");var g={points:u.handles.points,volume:l,segmentationId:s,segmentIndex:c,segmentsLocked:d};e.applyActiveStrategy(v,g)}})),ae(ga(e),"_activateDraw",(function(t){t.addEventListener(Q.MOUSE_UP,e._endCallback),t.addEventListener(Q.MOUSE_DRAG,e._dragCallback),t.addEventListener(Q.MOUSE_CLICK,e._endCallback),t.addEventListener(Q.TOUCH_END,e._endCallback),t.addEventListener(Q.TOUCH_DRAG,e._dragCallback),t.addEventListener(Q.TOUCH_TAP,e._endCallback)})),ae(ga(e),"_deactivateDraw",(function(t){t.removeEventListener(Q.MOUSE_UP,e._endCallback),t.removeEventListener(Q.MOUSE_DRAG,e._dragCallback),t.removeEventListener(Q.MOUSE_CLICK,e._endCallback),t.removeEventListener(Q.TOUCH_TAP,e._endCallback),t.removeEventListener(Q.TOUCH_END,e._endCallback),t.removeEventListener(Q.TOUCH_DRAG,e._dragCallback)})),ae(ga(e),"renderAnnotation",(function(t,n){var r=!1;if(!e.editData)return r;var o=t.viewport,a=e.editData.annotation,i=a.metadata,l=a.annotationUID,s=a.data.handles.points.map((function(e){return o.worldToCanvas(e)})),c="rgb(".concat(i.segmentColor.slice(0,3),")");return o.getRenderingEngine()?(oc(n,l,"0",s[0],s[3],{color:c}),!0):(console.warn("Rendering Engine has been destroyed"),r)})),e}return re(o)}(La);ae(Ep,"toolName",void 0),Ep.toolName="RectangleScissor";var yp=Ep;var Ip=function(e){pa(o,e);var t,n,r=(t=o,n=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,r=wa(t);if(n){var o=wa(this).constructor;e=Reflect.construct(r,arguments,o)}else e=r.apply(this,arguments);return ma(this,e)});function o(){var e,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{supportedInteractionTypes:["Mouse","Touch"],configuration:{strategies:{FILL_INSIDE:Lc},defaultStrategy:"FILL_INSIDE",activeStrategy:"FILL_INSIDE"}};return oe(this,o),ae(ga(e=r.call(this,t,n)),"editData",void 0),ae(ga(e),"isDrawing",void 0),ae(ga(e),"isHandleOutsideImage",void 0),ae(ga(e),"preMouseDownCallback",(function(t){var n=t.detail,r=n.currentPoints,o=n.element,a=r.world,i=r.canvas,l=(0,J.getEnabledElement)(o),s=l.viewport,c=l.renderingEngine;e.isDrawing=!0;var d=s.getCamera(),u=d.viewPlaneNormal,v=d.viewUp,f=e.toolGroupId,g=Wc(f);if(!g)throw new Error("No active segmentation detected, create one before using scissors tool");var h=g.segmentationRepresentationUID,p=g.segmentationId,m=g.type,w=Kc(p),E=qc(p),y=Zc(f,h,w),I=Pt(p).representationData[m].volumeId,b=J.cache.getVolume(I),C={invalidated:!0,highlighted:!0,metadata:{viewPlaneNormal:Lr(u),viewUp:Lr(v),FrameOfReferenceUID:s.getFrameOfReferenceUID(),referencedImageId:"",toolName:e.getToolName(),segmentColor:y},data:{handles:{points:[Lr(a),Lr(a),Lr(a),Lr(a)],activeHandleIndex:null},isDrawing:!0,cachedStats:{}}},_=[s.id];return e.editData={annotation:C,segmentation:b,centerCanvas:i,segmentIndex:w,segmentationId:p,segmentsLocked:E,segmentColor:y,viewportIdsToRender:_,handleIndex:3,movingTextBox:!1,newAnnotation:!0,hasMoved:!1},e._activateDraw(o),gs(o),t.preventDefault(),ca(c,_),!0})),ae(ga(e),"_dragCallback",(function(t){e.isDrawing=!0;var n=t.detail,r=n.element,o=n.currentPoints.canvas,a=(0,J.getEnabledElement)(r),i=a.renderingEngine,l=a.viewport.canvasToWorld,s=e.editData,c=s.annotation,d=s.viewportIdsToRender,u=s.centerCanvas,v=c.data,f=Math.abs(o[0]-u[0]),g=Math.abs(o[1]-u[1]),h=Math.sqrt(f*f+g*g),p=[u[0],u[1]+h],m=[u[0],u[1]-h],w=[u[0]-h,u[1]],E=[u[0]+h,u[1]];v.handles.points=[l(p),l(m),l(w),l(E)],c.invalidated=!0,e.editData.hasMoved=!0,ca(i,d)})),ae(ga(e),"_endCallback",(function(t){var n=t.detail.element,r=e.editData,o=r.annotation,a=r.newAnnotation,i=r.hasMoved,l=r.segmentation,s=r.segmentIndex,c=r.segmentsLocked,d=r.segmentationId,u=o.data,v=o.metadata,f=v.viewPlaneNormal,g=v.viewUp;if(!a||i){u.handles.activeHandleIndex=null,e._deactivateDraw(n),fs(n);var h=(0,J.getEnabledElement)(n),p=h.viewport;if(e.editData=null,e.isDrawing=!1,p instanceof J.StackViewport)throw new Error("Not implemented yet");var m={points:u.handles.points,volume:l,segmentIndex:s,segmentsLocked:c,viewPlaneNormal:f,segmentationId:d,viewUp:g};e.applyActiveStrategy(h,m)}})),ae(ga(e),"_activateDraw",(function(t){t.addEventListener(Q.MOUSE_UP,e._endCallback),t.addEventListener(Q.MOUSE_DRAG,e._dragCallback),t.addEventListener(Q.MOUSE_CLICK,e._endCallback),t.addEventListener(Q.TOUCH_TAP,e._endCallback),t.addEventListener(Q.TOUCH_DRAG,e._dragCallback),t.addEventListener(Q.TOUCH_END,e._endCallback)})),ae(ga(e),"_deactivateDraw",(function(t){t.removeEventListener(Q.MOUSE_UP,e._endCallback),t.removeEventListener(Q.MOUSE_DRAG,e._dragCallback),t.removeEventListener(Q.MOUSE_CLICK,e._endCallback),t.removeEventListener(Q.TOUCH_END,e._endCallback),t.removeEventListener(Q.TOUCH_DRAG,e._dragCallback),t.removeEventListener(Q.TOUCH_TAP,e._endCallback)})),ae(ga(e),"renderAnnotation",(function(t,n){var r=!1;if(!e.editData)return r;var o=t.viewport;if(!e.editData.viewportIdsToRender.includes(o.id))return r;var a=e.editData.annotation,i=a.metadata,l=a.annotationUID,s=a.data.handles.points.map((function(e){return o.worldToCanvas(e)})),c=s[0],d=s[1],u=[Math.floor((c[0]+d[0])/2),Math.floor((c[1]+d[1])/2)],v=Math.abs(c[1]-Math.floor((c[1]+d[1])/2)),f="rgb(".concat(i.segmentColor.slice(0,3),")");return o.getRenderingEngine()?(Ks(n,l,"0",u,v,{color:f}),!0):(console.warn("Rendering Engine has been destroyed"),r)})),e}return re(o)}(La);ae(Ip,"toolName",void 0),Ip.toolName="CircleScissor";var bp=Ip;var Cp=function(e){pa(o,e);var t,n,r=(t=o,n=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,r=wa(t);if(n){var o=wa(this).constructor;e=Reflect.construct(r,arguments,o)}else e=r.apply(this,arguments);return ma(this,e)});function o(){var e,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{supportedInteractionTypes:["Mouse","Touch"],configuration:{strategies:{FILL_INSIDE:kc},defaultStrategy:"FILL_INSIDE",activeStrategy:"FILL_INSIDE"}};return oe(this,o),ae(ga(e=r.call(this,t,n)),"editData",void 0),ae(ga(e),"isDrawing",void 0),ae(ga(e),"isHandleOutsideImage",void 0),ae(ga(e),"preMouseDownCallback",(function(t){var n=t.detail,r=n.currentPoints,o=n.element,a=r.world,i=r.canvas,l=(0,J.getEnabledElement)(o),s=l.viewport,c=l.renderingEngine;e.isDrawing=!0;var d=s.getCamera(),u=d.viewPlaneNormal,v=d.viewUp,f=e.toolGroupId,g=Wc(f);if(!g)throw new Error("No active segmentation detected, create one before using scissors tool");var h=g.segmentationRepresentationUID,p=g.segmentationId,m=g.type,w=Kc(p),E=qc(p),y=Zc(f,h,w),I=Pt(p).representationData[m].volumeId,b=J.cache.getVolume(I);e.isDrawing=!0;var C={metadata:{viewPlaneNormal:Lr(u),viewUp:Lr(v),FrameOfReferenceUID:s.getFrameOfReferenceUID(),referencedImageId:"",toolName:e.getToolName(),segmentColor:y},data:{invalidated:!0,handles:{points:[Lr(a),Lr(a),Lr(a),Lr(a)],activeHandleIndex:null},cachedStats:{},highlighted:!0}},_=[s.id];return e.editData={annotation:C,segmentation:b,centerCanvas:i,segmentIndex:w,segmentsLocked:E,segmentColor:y,segmentationId:p,toolGroupId:f,viewportIdsToRender:_,handleIndex:3,movingTextBox:!1,newAnnotation:!0,hasMoved:!1},e._activateDraw(o),gs(o),t.preventDefault(),ca(c,_),!0})),ae(ga(e),"_dragCallback",(function(t){e.isDrawing=!0;var n=t.detail,r=n.element,o=n.currentPoints.canvas,a=(0,J.getEnabledElement)(r),i=a.renderingEngine,l=a.viewport.canvasToWorld,s=e.editData,c=s.annotation,d=s.viewportIdsToRender,u=s.centerCanvas,v=c.data,f=Math.abs(o[0]-u[0]),g=Math.abs(o[1]-u[1]),h=Math.sqrt(f*f+g*g),p=[u[0],u[1]+h],m=[u[0],u[1]-h],w=[u[0]-h,u[1]],E=[u[0]+h,u[1]];v.handles.points=[l(p),l(m),l(w),l(E)],c.invalidated=!0,e.editData.hasMoved=!0,ca(i,d)})),ae(ga(e),"_endCallback",(function(t){var n=t.detail.element,r=e.editData,o=r.annotation,a=r.newAnnotation,i=r.hasMoved,l=r.segmentation,s=r.segmentIndex,c=r.segmentsLocked,d=r.segmentationId,u=o.data,v=o.metadata,f=v.viewPlaneNormal,g=v.viewUp;if(!a||i){o.highlighted=!1,u.handles.activeHandleIndex=null,e._deactivateDraw(n),fs(n);var h=(0,J.getEnabledElement)(n),p=h.viewport;if(e.editData=null,e.isDrawing=!1,p instanceof J.StackViewport)throw new Error("Not implemented yet");var m={points:u.handles.points,volume:l,segmentIndex:s,segmentsLocked:c,segmentationId:d,viewPlaneNormal:f,viewUp:g};e.applyActiveStrategy(h,m)}})),ae(ga(e),"_activateDraw",(function(t){t.addEventListener(Q.MOUSE_UP,e._endCallback),t.addEventListener(Q.MOUSE_DRAG,e._dragCallback),t.addEventListener(Q.MOUSE_CLICK,e._endCallback),t.addEventListener(Q.TOUCH_END,e._endCallback),t.addEventListener(Q.TOUCH_TAP,e._endCallback),t.addEventListener(Q.TOUCH_DRAG,e._dragCallback)})),ae(ga(e),"_deactivateDraw",(function(t){t.removeEventListener(Q.MOUSE_UP,e._endCallback),t.removeEventListener(Q.MOUSE_DRAG,e._dragCallback),t.removeEventListener(Q.MOUSE_CLICK,e._endCallback),t.removeEventListener(Q.TOUCH_END,e._endCallback),t.removeEventListener(Q.TOUCH_DRAG,e._dragCallback),t.removeEventListener(Q.TOUCH_TAP,e._endCallback)})),ae(ga(e),"renderAnnotation",(function(t,n){var r=!1;if(!e.editData)return r;var o=t.viewport;if(!e.editData.viewportIdsToRender.includes(o.id))return r;var a=e.editData.annotation,i=a.metadata,l=a.annotationUID,s=a.data.handles.points.map((function(e){return o.worldToCanvas(e)})),c=s[0],d=s[1],u=[Math.floor((c[0]+d[0])/2),Math.floor((c[1]+d[1])/2)],v=Math.abs(c[1]-Math.floor((c[1]+d[1])/2)),f="rgb(".concat(i.segmentColor.slice(0,3),")");return o.getRenderingEngine()?(Ks(n,l,"0",u,v,{color:f}),!0):(console.warn("Rendering Engine has been destroyed"),r)})),e}return re(o)}(La);ae(Cp,"toolName",void 0),Cp.toolName="SphereScissor";var _p=Cp,Tp=y(518),Op=y.n(Tp),Dp=y(744),Sp=y.n(Dp),kp=y(424),Mp=y.n(kp),xp=y(614),Rp=y.n(xp);function Pp(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function Ap(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?Pp(Object(n),!0).forEach((function(t){ae(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):Pp(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}var Np={ANNOTATED_CUBE:1,AXES:2,CUSTOM:3},Lp=function(e){pa(l,e);var t,n,r,o,a,i=(o=l,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=wa(o);if(a){var n=wa(this).constructor;e=Reflect.construct(t,arguments,n)}else e=t.apply(this,arguments);return ma(this,e)});function l(){var e,t,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{configuration:{orientationWidget:{enabled:!0,viewportCorner:Op().Corners.BOTTOM_RIGHT,viewportSize:.15,minPixelSize:100,maxPixelSize:300},overlayMarkerType:l.OVERLAY_MARKER_TYPES.ANNOTATED_CUBE,overlayConfiguration:(e={},ae(e,l.OVERLAY_MARKER_TYPES.ANNOTATED_CUBE,{faceProperties:{xPlus:{text:"R",faceColor:"#ffff00",faceRotation:90},xMinus:{text:"L",faceColor:"#ffff00",faceRotation:270},yPlus:{text:"P",faceColor:"#00ffff",fontColor:"white",faceRotation:180},yMinus:{text:"A",faceColor:"#00ffff",fontColor:"white"},zPlus:{text:"S"},zMinus:{text:"I"}},defaultStyle:{fontStyle:"bold",fontFamily:"Arial",fontColor:"black",fontSizeScale:function(e){return e/2},faceColor:"#0000ff",edgeThickness:.1,edgeColor:"black",resolution:400}}),ae(e,l.OVERLAY_MARKER_TYPES.AXES,{}),ae(e,l.OVERLAY_MARKER_TYPES.CUSTOM,{polyDataURL:"https://raw.githubusercontent.com/Slicer/Slicer/80ad0a04dacf134754459557bf2638c63f3d1d1b/Base/Logic/Resources/OrientationMarkers/Human.vtp"}),e)}};return oe(this,l),ae(ga(t=i.call(this,n,r)),"orientationMarkers",void 0),ae(ga(t),"polyDataURL",void 0),ae(ga(t),"configuration_invalidated",!0),ae(ga(t),"onSetToolEnabled",(function(){t.initViewports(),t.configuration_invalidated=!0})),ae(ga(t),"onSetToolActive",(function(){t.initViewports()})),ae(ga(t),"onSetToolDisabled",(function(){t.cleanUpData()})),t.orientationMarkers={},t.configuration_invalidated=!0,t}return re(l,[{key:"cleanUpData",value:function(){var e=this;(0,J.getRenderingEngines)()[0].getViewports().forEach((function(t){var n=e.orientationMarkers[t.id];if(n){var r=n.actor,o=n.orientationWidget;null==o||o.setEnabled(!1),null==o||o.delete(),null==r||r.delete(),t.getRenderingEngine().offscreenMultiRenderWindow.getRenderWindow().render(),t.getRenderingEngine().render(),delete e.orientationMarkers[t.id]}}))}},{key:"initViewports",value:function(){var e=this,t=(0,J.getRenderingEngines)()[0];if(t){var n=t.getViewports();(n=sd(n,this.getToolName())).forEach((function(t){return e.addAxisActorInViewport(t)}))}}},{key:"addAxisActorInViewport",value:(r=Va(Ba().mark((function e(t){var n,r,o,a,i,l,s,c,d,u,v,f,g,h,p,m;return Ba().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(n=t.id,r=this.configuration.overlayMarkerType,o=this.configuration.overlayConfiguration[r],this.orientationMarkers[n]&&(a=this.orientationMarkers[n],i=a.actor,l=a.orientationWidget,t.getRenderer().removeActor(i),l.setEnabled(!1)),1!==r){e.next=8;break}s=this.createAnnotationCube(o),e.next=16;break;case 8:if(2!==r){e.next=12;break}s=Mp().newInstance(),e.next=16;break;case 12:if(3!==r){e.next=16;break}return e.next=15,this.createCustomActor();case 15:s=e.sent;case 16:c=t.getRenderer(),d=t.getRenderingEngine().offscreenMultiRenderWindow.getRenderWindow(),u=this.configuration.orientationWidget,v=u.enabled,f=u.viewportCorner,g=u.viewportSize,h=u.minPixelSize,p=u.maxPixelSize,(m=Op().newInstance({actor:s,interactor:d.getInteractor(),parentRenderer:c})).setEnabled(v),m.setViewportCorner(f),m.setViewportSize(g),m.setMinPixelSize(h),m.setMaxPixelSize(p),m.updateMarkerOrientation(),this.orientationMarkers[n]={orientationWidget:m,actor:s},d.render(),t.getRenderingEngine().render(),this.configuration_invalidated=!1;case 30:case"end":return e.stop()}}),e,this)}))),function(e){return r.apply(this,arguments)})},{key:"createCustomActor",value:(n=Va(Ba().mark((function e(){var t,n,r,o,a,i,l;return Ba().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return t=this.configuration.overlayConfiguration[Np.CUSTOM].polyDataURL,e.next=3,fetch(t);case 3:return n=e.sent,e.next=6,n.arrayBuffer();case 6:return r=e.sent,(o=Rp().newInstance()).parseAsArrayBuffer(r),o.update(),(a=Xa().newInstance()).shallowCopy(o.getOutputData()),a.getPointData().setActiveScalars("Color"),(i=Ha().newInstance()).setInputData(a),i.setColorModeToDirectScalars(),(l=qa().newInstance()).setMapper(i),l.rotateZ(180),e.abrupt("return",l);case 20:case"end":return e.stop()}}),e,this)}))),function(){return n.apply(this,arguments)})},{key:"createAnnotationCube",value:function(e){var t=Sp().newInstance();return t.setDefaultStyle(Ap({},e.defaultStyle)),t.setXPlusFaceProperty(Ap({},e.faceProperties.xPlus)),t.setXMinusFaceProperty(Ap({},e.faceProperties.xMinus)),t.setYPlusFaceProperty(Ap({},e.faceProperties.yPlus)),t.setYMinusFaceProperty(Ap({},e.faceProperties.yMinus)),t.setZPlusFaceProperty(Ap({},e.faceProperties.zPlus)),t.setZMinusFaceProperty(Ap({},e.faceProperties.zMinus)),t}},{key:"createAnnotatedCubeActor",value:(t=Va(Ba().mark((function e(){var t,n,r,o;return Ba().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return t=Sp().newInstance(),n=this.configuration.annotatedCube,r=n.faceProperties,o=n.defaultStyle,t.setDefaultStyle(o),Object.keys(r).forEach((function(e){var n="set".concat(e.charAt(0).toUpperCase()+e.slice(1),"FaceProperty");t[n](r[e])})),e.abrupt("return",t);case 5:case"end":return e.stop()}}),e,this)}))),function(){return t.apply(this,arguments)})}]),l}(La);ae(Lp,"toolName",void 0),ae(Lp,"CUBE",1),ae(Lp,"AXIS",2),ae(Lp,"VTPFILE",3),ae(Lp,"OVERLAY_MARKER_TYPES",Np),Lp.toolName="OrientationMarker";var Up=Lp;var Vp=J.utilities.transformWorldToIndex,jp=J.utilities.isEqual,Bp=function(e){pa(o,e);var t,n,r=(t=o,n=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,r=wa(t);if(n){var o=wa(this).constructor;e=Reflect.construct(r,arguments,o)}else e=r.apply(this,arguments);return ma(this,e)});function o(){var e,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{supportedInteractionTypes:["Mouse","Touch"]};return oe(this,o),ae(ga(e=r.call(this,t,n)),"preMouseDownCallback",(function(t){var n=t.detail,r=n.currentPoints,o=n.element,a=r.world,i=(0,J.getEnabledElement)(o).viewport.getCamera().viewPlaneNormal,l=Wc(e.toolGroupId);if(!l)throw new Error("No active segmentation detected, create one before using scissors tool");var s=l.segmentationId,c=l.type,d=Kc(s),u=qc(s),v=Pt(s).representationData[c].volumeId,f=J.cache.getVolume(v),g=f.dimensions,h=f.direction,p=f.getScalarData(),m=Vp(f.imageData,a),w=e.getFixedDimension(i,h);if(void 0!==w){var E=e.generateHelpers(p,g,m,w),y=E.floodFillGetter,I=E.getLabelValue,b=E.getScalarDataPositionFromPlane,C=E.inPlaneSeedPoint,_=E.fixedDimensionValue;if(!(m[0]<0||m[0]>=g[0]||m[1]<0||m[1]>=g[1]||m[2]<0||m[2]>=g[2])){var T=I(m[0],m[1],m[2]);if(!u.includes(T)){var O=tu(y,C);return O.flooded.forEach((function(e){var t=b(e[0],e[1]);p[t]=d})),St(s,e.getFramesModified(w,_,O)),!0}}}else console.warn("Oblique paint fill not yet supported")})),ae(ga(e),"getFramesModified",(function(e,t,n){var r=n.boundaries;if(2===e)return[t];for(var o=1/0,a=-1/0,i=0;i<r.length;i++){var l=r[i][1];l<o&&(o=l),l>a&&(a=l)}for(var s=[],c=o;c<=a;c++)s.push(c);return s})),ae(ga(e),"generateHelpers",(function(t,n,r){var o,a,i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:2;switch(i){case 0:o=r[0],a=[r[1],r[2]];break;case 1:o=r[1],a=[r[0],r[2]];break;case 2:o=r[2],a=[r[0],r[1]];break;default:throw new Error("Invalid fixedDimension: ".concat(i))}var l=function(e,t,r){return r*n[1]*n[0]+t*n[0]+e},s=function(e,n,r){return t[l(e,n,r)]},c=e.generateFloodFillGetter(n,i,o,s);return{getScalarDataPositionFromPlane:e.generateGetScalarDataPositionFromPlane(l,i,o),getLabelValue:s,floodFillGetter:c,inPlaneSeedPoint:a,fixedDimensionValue:o}})),ae(ga(e),"generateFloodFillGetter",(function(e,t,n,r){var o;switch(t){case 0:o=function(t,o){if(!(t>=e[1]||t<0||o>=e[2]||o<0))return r(n,t,o)};break;case 1:o=function(t,o){if(!(t>=e[0]||t<0||o>=e[2]||o<0))return r(t,n,o)};break;case 2:o=function(t,o){if(!(t>=e[0]||t<0||o>=e[1]||o<0))return r(t,o,n)};break;default:throw new Error("Invalid fixedDimension: ".concat(t))}return o})),ae(ga(e),"generateGetScalarDataPositionFromPlane",(function(e,t,n){var r;switch(t){case 0:r=function(t,r){return e(n,t,r)};break;case 1:r=function(t,r){return e(t,n,r)};break;case 2:r=function(t,r){return e(t,r,n)};break;default:throw new Error("Invalid fixedDimension: ".concat(t))}return r})),e}return re(o,[{key:"getFixedDimension",value:function(e,t){var n=t.slice(0,3),r=t.slice(3,6),o=t.slice(6,9),a=[Math.abs(e[0]),Math.abs(e[1]),Math.abs(e[2])],i=[Math.abs(n[0]),Math.abs(n[1]),Math.abs(n[2])];if(jp(a,i))return 0;var l=[Math.abs(r[0]),Math.abs(r[1]),Math.abs(r[2])];if(jp(a,l))return 1;var s=[Math.abs(o[0]),Math.abs(o[1]),Math.abs(o[2])];return jp(a,s)?2:void 0}}]),o}(La);ae(Bp,"toolName",void 0),Bp.toolName="PaintFill";var Wp=Bp;var Fp=function(e){pa(o,e);var t,n,r=(t=o,n=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,r=wa(t);if(n){var o=wa(this).constructor;e=Reflect.construct(r,arguments,o)}else e=r.apply(this,arguments);return ma(this,e)});function o(){var e,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return oe(this,o),ae(ga(e=r.call(this,t,{supportedInteractionTypes:["Mouse","Touch"],configuration:{shadow:!0,preventHandleOutsideImage:!1}})),"_throttledCalculateCachedStats",void 0),ae(ga(e),"editData",void 0),ae(ga(e),"_configuration",void 0),ae(ga(e),"isDrawing",void 0),ae(ga(e),"isHandleOutsideImage",void 0),ae(ga(e),"addNewAnnotation",(function(t){var n=t.detail,r=n.currentPoints,o=n.element,a=r.world,i=(0,J.getEnabledElement)(o),l=i.viewport,s=i.renderingEngine;e.isDrawing=!0;var c={metadata:{viewPlaneNormal:[0,0,1],viewUp:[0,1,0],FrameOfReferenceUID:l.getFrameOfReferenceUID(),referencedImageId:l.getFrameOfReferenceUID(),toolName:e.getToolName()},data:{invalidated:!0,handles:{points:[Lr(a),Lr(a),Lr(a),Lr(a)],activeHandleIndex:null},cachedStats:{},active:!0}};rt(c,o);var d=ud(o,e.getToolName(),!1);return e.editData={annotation:c,viewportUIDsToRender:d,handleIndex:3,newAnnotation:!0,hasMoved:!1},e._activateDraw(o),gs(o),t.preventDefault(),ca(s,d),c})),ae(ga(e),"getHandleNearImagePoint",(function(e,t,n,r){for(var o=(0,J.getEnabledElement)(e).viewport,a=t.data,i=a.handles.points,l=0;l<i.length;l++){var s=i[l],c=o.worldToCanvas(s);if(!0==xs.vec2.distance(n,c)<r)return a.handles.activeHandleIndex=l,s}a.handles.activeHandleIndex=null})),ae(ga(e),"isPointNearTool",(function(t,n,r,o){var a=(0,J.getEnabledElement)(t).viewport,i=n.data.handles.points,l=a.worldToCanvas(i[0]),s=a.worldToCanvas(i[3]),c=e._getRectangleImageCoordinates([l,s]),d=[r[0],r[1]];if(Td([c.left,c.top,c.width,c.height],d)<=o)return!0})),ae(ga(e),"toolSelectedCallback",(function(t,n){var r=t.detail.element;n.data.active=!0;var o=ud(r,e.getToolName(),!1);e.editData={annotation:n,viewportUIDsToRender:o},e._activateModify(r),gs(r);var a=(0,J.getEnabledElement)(r).renderingEngine;ca(a,o),t.preventDefault()})),ae(ga(e),"handleSelectedCallback",(function(t,n,r){var o,a=t.detail.element,i=n.data;i.active=!0,r.worldPosition||(o=i.handles.points.findIndex((function(e){return e===r})));var l=ud(a,e.getToolName(),!1);e.editData={annotation:n,viewportUIDsToRender:l,handleIndex:o},e._activateModify(a),gs(a);var s=(0,J.getEnabledElement)(a).renderingEngine;ca(s,l),t.preventDefault()})),ae(ga(e),"_mouseUpCallback",(function(t){var n=t.detail.element,r=e.editData,o=r.annotation,a=r.viewportUIDsToRender,i=r.newAnnotation,l=r.hasMoved,s=o.data;if(!i||l){s.active=!1,s.handles.activeHandleIndex=null,e._deactivateModify(n),e._deactivateDraw(n),fs(n);var c=(0,J.getEnabledElement)(n).renderingEngine;e.editData=null,e.isDrawing=!1,e.isHandleOutsideImage&&e.configuration.preventHandleOutsideImage&&at(o.annotationUID),ca(c,a)}})),ae(ga(e),"_mouseDragCallback",(function(t){e.isDrawing=!0;var n=t.detail,r=n.element,o=e.editData,a=o.annotation,i=o.viewportUIDsToRender,l=o.handleIndex,s=a.data;if(void 0===l){var c=n.deltaPoints.world;s.handles.points.forEach((function(e){e[0]+=c[0],e[1]+=c[1],e[2]+=c[2]})),s.invalidated=!0}else{var d,u,v,f,g,h,p,m,w=n.currentPoints,E=(0,J.getEnabledElement)(r).viewport,y=E.worldToCanvas,I=E.canvasToWorld,b=w.world,C=s.handles.points;switch(C[l]=Lr(b),l){case 0:case 3:d=y(C[0]),u=[(f=y(C[3]))[0],d[1]],v=[d[0],f[1]],h=I(u),p=I(v),C[1]=h,C[2]=p;break;case 1:case 2:u=y(C[1]),d=[(v=y(C[2]))[0],u[1]],f=[u[0],v[1]],g=I(d),m=I(f),C[0]=g,C[3]=m}s.invalidated=!0}e.editData.hasMoved=!0;var _=(0,J.getEnabledElement)(r).renderingEngine;ca(_,i)})),ae(ga(e),"_activateDraw",(function(t){Ke.isInteractingWithTool=!0,t.addEventListener(Q.MOUSE_UP,e._mouseUpCallback),t.addEventListener(Q.MOUSE_DRAG,e._mouseDragCallback),t.addEventListener(Q.MOUSE_MOVE,e._mouseDragCallback),t.addEventListener(Q.MOUSE_CLICK,e._mouseUpCallback),t.addEventListener(Q.TOUCH_END,e._mouseUpCallback),t.addEventListener(Q.TOUCH_DRAG,e._mouseDragCallback)})),ae(ga(e),"_deactivateDraw",(function(t){Ke.isInteractingWithTool=!1,t.removeEventListener(Q.MOUSE_UP,e._mouseUpCallback),t.removeEventListener(Q.MOUSE_DRAG,e._mouseDragCallback),t.removeEventListener(Q.MOUSE_MOVE,e._mouseDragCallback),t.removeEventListener(Q.MOUSE_CLICK,e._mouseUpCallback),t.removeEventListener(Q.TOUCH_END,e._mouseUpCallback),t.removeEventListener(Q.TOUCH_DRAG,e._mouseDragCallback)})),ae(ga(e),"_activateModify",(function(t){Ke.isInteractingWithTool=!0,t.addEventListener(Q.MOUSE_UP,e._mouseUpCallback),t.addEventListener(Q.MOUSE_DRAG,e._mouseDragCallback),t.addEventListener(Q.MOUSE_CLICK,e._mouseUpCallback),t.addEventListener(Q.TOUCH_END,e._mouseUpCallback),t.addEventListener(Q.TOUCH_DRAG,e._mouseDragCallback)})),ae(ga(e),"_deactivateModify",(function(t){Ke.isInteractingWithTool=!1,t.removeEventListener(Q.MOUSE_UP,e._mouseUpCallback),t.removeEventListener(Q.MOUSE_DRAG,e._mouseDragCallback),t.removeEventListener(Q.MOUSE_CLICK,e._mouseUpCallback),t.removeEventListener(Q.TOUCH_END,e._mouseUpCallback),t.removeEventListener(Q.TOUCH_DRAG,e._mouseDragCallback)})),ae(ga(e),"renderAnnotation",(function(t,n){var r,o,a=t.viewport,i=a.element,l=nt(e.getToolName(),i);if(null===(r=l)||void 0===r||!r.length)return!1;if(null===(o=l=e.filterInteractableAnnotationsForElement(i,l))||void 0===o||!o.length)return!1;e.getTargetId(a),a.getRenderingEngine();for(var s={toolGroupId:e.toolGroupId,toolName:e.getToolName(),viewportId:t.viewport.id},c=0;c<l.length;c++){var d=l[c],u=d.annotationUID,v=(d.metadata,d.data.handles),f=v.points,g=v.activeHandleIndex,h=f.map((function(e){return a.worldToCanvas(e)})),p=e.getStyle("lineWidth",s,d),m=e.getStyle("lineDash",s,d),w=e.getStyle("color",s,d);if(!a.getRenderingEngine())return void console.warn("Rendering Engine has been destroyed");var E=void 0;e.editData||null===g||(E=[h[g]]),E&&Xs(n,u,"0",E,{color:w}),ic(n,u,"0",h[0],h[3],{color:"black",lineDash:m,lineWidth:p})}})),ae(ga(e),"_getRectangleImageCoordinates",(function(e){var t=dt(e,2),n=t[0],r=t[1];return{left:Math.min(n[0],r[0]),top:Math.min(n[1],r[1]),width:Math.abs(n[0]-r[0]),height:Math.abs(n[1]-r[1])}})),ae(ga(e),"_calculateCachedStats",(function(t,n,r,o,a){for(var i=t.data,l=a.viewportUID,s=a.renderingEngineUID,c=a.sceneUID,d=i.handles.points[0],u=i.handles.points[3],v=i.cachedStats,f=Object.keys(v),g=0;g<f.length;g++){var h=f[g],p=e._getImageVolumeFromTargetUID(h,o).imageVolume,m=p.dimensions,w=p.scalarData,E=p.vtkImageData,y=p.metadata,I=xs.vec3.fromValues(0,0,0),b=xs.vec3.fromValues(0,0,0);if(E.worldToIndexVec3(d,I),I[0]=Math.floor(I[0]),I[1]=Math.floor(I[1]),I[2]=Math.floor(I[2]),E.worldToIndexVec3(u,b),b[0]=Math.floor(b[0]),b[1]=Math.floor(b[1]),b[2]=Math.floor(b[2]),e._isInsideVolume(I,b,m)){e.isHandleOutsideImage=!1;for(var C=Math.min(I[0],b[0]),_=Math.max(I[0],b[0]),T=Math.min(I[1],b[1]),O=Math.max(I[1],b[1]),D=Math.min(I[2],b[2]),S=Math.max(I[2],b[2]),k=Th(n,r,d,u),M=k.worldWidth*k.worldHeight,x=0,R=0,P=0,A=m[0],N=m[0]*m[1],L=D;L<=S;L++)for(var U=T;U<=O;U++)for(var V=C;V<=_;V++)x++,R+=w[L*N+U*A+V];R/=x;for(var j=D;j<=S;j++)for(var B=T;B<=O;B++)for(var W=C;W<=_;W++){var F=w[j*N+B*A+W]-R;P+=F*F}P/=x,P=Math.sqrt(P),v[h]={Modality:y.Modality,area:M,mean:R,stdDev:P}}else e.isHandleOutsideImage=!0,v[h]={Modality:y.Modality}}i.invalidated=!1;var H=Q.ANNOTATION_MODIFIED,G={annotation:t,viewportUID:l,renderingEngineUID:s,sceneUID:c};return(0,J.triggerEvent)(J.eventTarget,H,G),v})),ae(ga(e),"_isInsideVolume",(function(e,t,n){return J.utilities.indexWithinDimensions(e,n)&&J.utilities.indexWithinDimensions(t,n)})),ae(ga(e),"_getTargetVolumeUID",(function(t){if(e.configuration.volumeUID)return e.configuration.volumeUID;var n=t.getVolumeActors();return n||n.length?n[0].uid:void 0})),e._throttledCalculateCachedStats=fc(e._calculateCachedStats,100,{trailing:!0}),e}return re(o,[{key:"cancel",value:function(e){if(this.isDrawing){this.isDrawing=!1,this._deactivateDraw(e),this._deactivateModify(e),fs(e);var t=this.editData,n=t.annotation,r=t.viewportUIDsToRender,o=n.data;o.active=!1,o.handles.activeHandleIndex=null;var a=(0,J.getEnabledElement)(e).renderingEngine;return ca(a,r),this.editData=null,n.metadata.annotationUID}}},{key:"_getImageVolumeFromTargetUID",value:function(e,t){var n;if(e.startsWith("stackTarget")){var r=e.indexOf(":"),o=e.substring(r+1);n=t.getViewport(o).getImageData()}else n=J.cache.getVolume(e);return{imageVolume:n,viewport:void 0}}},{key:"_getTargetStackUID",value:function(e){return"stackTarget:".concat(e.uid)}}]),o}(Id);Fp.toolName="VideoRedaction";var Hp=Fp}(),I}()}));
|
|
1
|
+
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("gl-matrix"),require("@cornerstonejs/core"),require("@kitware/vtk.js/Common/DataModel/PiecewiseFunction"),require("@kitware/vtk.js/Rendering/Core/ColorTransferFunction"),require("@kitware/vtk.js/Common/Core/CellArray"),require("@kitware/vtk.js/Common/Core/Points"),require("@kitware/vtk.js/Common/DataModel/PolyData"),require("@kitware/vtk.js/Common/Core/DataArray"),require("@kitware/vtk.js/Filters/General/AppendPolyData"),require("@kitware/vtk.js/Rendering/Core/Actor"),require("@kitware/vtk.js/Rendering/Core/Mapper"),require("@kitware/vtk.js/Filters/General/ClipClosedSurface"),require("@kitware/vtk.js/Common/Core/Math"),require("@kitware/vtk.js/Common/Core/MatrixBuilder"),require("@kitware/vtk.js/Interaction/Widgets/OrientationMarkerWidget"),require("@kitware/vtk.js/Rendering/Core/AnnotatedCubeActor"),require("@kitware/vtk.js/Rendering/Core/AxesActor"),require("@kitware/vtk.js/IO/XML/XMLPolyDataReader")):"function"==typeof define&&define.amd?define(["gl-matrix","@cornerstonejs/core","@kitware/vtk.js/Common/DataModel/PiecewiseFunction","@kitware/vtk.js/Rendering/Core/ColorTransferFunction","@kitware/vtk.js/Common/Core/CellArray","@kitware/vtk.js/Common/Core/Points","@kitware/vtk.js/Common/DataModel/PolyData","@kitware/vtk.js/Common/Core/DataArray","@kitware/vtk.js/Filters/General/AppendPolyData","@kitware/vtk.js/Rendering/Core/Actor","@kitware/vtk.js/Rendering/Core/Mapper","@kitware/vtk.js/Filters/General/ClipClosedSurface","@kitware/vtk.js/Common/Core/Math","@kitware/vtk.js/Common/Core/MatrixBuilder","@kitware/vtk.js/Interaction/Widgets/OrientationMarkerWidget","@kitware/vtk.js/Rendering/Core/AnnotatedCubeActor","@kitware/vtk.js/Rendering/Core/AxesActor","@kitware/vtk.js/IO/XML/XMLPolyDataReader"],t):"object"==typeof exports?exports.cornerstoneTools3D=t(require("gl-matrix"),require("@cornerstonejs/core"),require("@kitware/vtk.js/Common/DataModel/PiecewiseFunction"),require("@kitware/vtk.js/Rendering/Core/ColorTransferFunction"),require("@kitware/vtk.js/Common/Core/CellArray"),require("@kitware/vtk.js/Common/Core/Points"),require("@kitware/vtk.js/Common/DataModel/PolyData"),require("@kitware/vtk.js/Common/Core/DataArray"),require("@kitware/vtk.js/Filters/General/AppendPolyData"),require("@kitware/vtk.js/Rendering/Core/Actor"),require("@kitware/vtk.js/Rendering/Core/Mapper"),require("@kitware/vtk.js/Filters/General/ClipClosedSurface"),require("@kitware/vtk.js/Common/Core/Math"),require("@kitware/vtk.js/Common/Core/MatrixBuilder"),require("@kitware/vtk.js/Interaction/Widgets/OrientationMarkerWidget"),require("@kitware/vtk.js/Rendering/Core/AnnotatedCubeActor"),require("@kitware/vtk.js/Rendering/Core/AxesActor"),require("@kitware/vtk.js/IO/XML/XMLPolyDataReader")):e.cornerstoneTools3D=t(e.window,e.cornerstone3D,e["@kitware/vtk.js/Common/DataModel/PiecewiseFunction"],e["@kitware/vtk.js/Rendering/Core/ColorTransferFunction"],e["@kitware/vtk.js/Common/Core/CellArray"],e["@kitware/vtk.js/Common/Core/Points"],e["@kitware/vtk.js/Common/DataModel/PolyData"],e["@kitware/vtk.js/Common/Core/DataArray"],e["@kitware/vtk.js/Filters/General/AppendPolyData"],e["@kitware/vtk.js/Rendering/Core/Actor"],e["@kitware/vtk.js/Rendering/Core/Mapper"],e["@kitware/vtk.js/Filters/General/ClipClosedSurface"],e["@kitware/vtk.js/Common/Core/Math"],e["@kitware/vtk.js/Common/Core/MatrixBuilder"],e["@kitware/vtk.js/Interaction/Widgets/OrientationMarkerWidget"],e["@kitware/vtk.js/Rendering/Core/AnnotatedCubeActor"],e["@kitware/vtk.js/Rendering/Core/AxesActor"],e["@kitware/vtk.js/IO/XML/XMLPolyDataReader"])}(self,((e,t,n,o,i,a,r,s,l,d,c,h,u,g,v,m,p,f)=>(()=>{var E={907:(e,t,n)=>{e=n.nmd(e);var o="__lodash_hash_undefined__",i=9007199254740991,a="[object Arguments]",r="[object Boolean]",s="[object Date]",l="[object Function]",d="[object GeneratorFunction]",c="[object Map]",h="[object Number]",u="[object Object]",g="[object Promise]",v="[object RegExp]",m="[object Set]",p="[object String]",f="[object Symbol]",E="[object WeakMap]",w="[object ArrayBuffer]",I="[object DataView]",C="[object Float32Array]",_="[object Float64Array]",T="[object Int8Array]",b="[object Int16Array]",D="[object Int32Array]",S="[object Uint8Array]",y="[object Uint8ClampedArray]",O="[object Uint16Array]",M="[object Uint32Array]",x=/\w*$/,N=/^\[object .+?Constructor\]$/,k=/^(?:0|[1-9]\d*)$/,R={};R[a]=R["[object Array]"]=R[w]=R[I]=R[r]=R[s]=R[C]=R[_]=R[T]=R[b]=R[D]=R[c]=R[h]=R[u]=R[v]=R[m]=R[p]=R[f]=R[S]=R[y]=R[O]=R[M]=!0,R["[object Error]"]=R[l]=R[E]=!1;var P="object"==typeof n.g&&n.g&&n.g.Object===Object&&n.g,L="object"==typeof self&&self&&self.Object===Object&&self,A=P||L||Function("return this")(),U=t&&!t.nodeType&&t,V=U&&e&&!e.nodeType&&e,W=V&&V.exports===U;function F(e,t){return e.set(t[0],t[1]),e}function H(e,t){return e.add(t),e}function B(e,t,n,o){var i=-1,a=e?e.length:0;for(o&&a&&(n=e[++i]);++i<a;)n=t(n,e[i],i,e);return n}function G(e){var t=!1;if(null!=e&&"function"!=typeof e.toString)try{t=!!(e+"")}catch(e){}return t}function q(e){var t=-1,n=Array(e.size);return e.forEach((function(e,o){n[++t]=[o,e]})),n}function j(e,t){return function(n){return e(t(n))}}function z(e){var t=-1,n=Array(e.size);return e.forEach((function(e){n[++t]=e})),n}var K,Y=Array.prototype,X=Function.prototype,Z=Object.prototype,J=A["__core-js_shared__"],$=(K=/[^.]+$/.exec(J&&J.keys&&J.keys.IE_PROTO||""))?"Symbol(src)_1."+K:"",Q=X.toString,ee=Z.hasOwnProperty,te=Z.toString,ne=RegExp("^"+Q.call(ee).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),oe=W?A.Buffer:void 0,ie=A.Symbol,ae=A.Uint8Array,re=j(Object.getPrototypeOf,Object),se=Object.create,le=Z.propertyIsEnumerable,de=Y.splice,ce=Object.getOwnPropertySymbols,he=oe?oe.isBuffer:void 0,ue=j(Object.keys,Object),ge=Ae(A,"DataView"),ve=Ae(A,"Map"),me=Ae(A,"Promise"),pe=Ae(A,"Set"),fe=Ae(A,"WeakMap"),Ee=Ae(Object,"create"),we=He(ge),Ie=He(ve),Ce=He(me),_e=He(pe),Te=He(fe),be=ie?ie.prototype:void 0,De=be?be.valueOf:void 0;function Se(e){var t=-1,n=e?e.length:0;for(this.clear();++t<n;){var o=e[t];this.set(o[0],o[1])}}function ye(e){var t=-1,n=e?e.length:0;for(this.clear();++t<n;){var o=e[t];this.set(o[0],o[1])}}function Oe(e){var t=-1,n=e?e.length:0;for(this.clear();++t<n;){var o=e[t];this.set(o[0],o[1])}}function Me(e){this.__data__=new ye(e)}function xe(e,t,n){var o=e[t];ee.call(e,t)&&Be(o,n)&&(void 0!==n||t in e)||(e[t]=n)}function Ne(e,t){for(var n=e.length;n--;)if(Be(e[n][0],t))return n;return-1}function ke(e,t,n,o,i,g,E){var N;if(o&&(N=g?o(e,i,g,E):o(e)),void 0!==N)return N;if(!Ke(e))return e;var k=Ge(e);if(k){if(N=function(e){var t=e.length,n=e.constructor(t);return t&&"string"==typeof e[0]&&ee.call(e,"index")&&(n.index=e.index,n.input=e.input),n}(e),!t)return function(e,t){var n=-1,o=e.length;for(t||(t=Array(o));++n<o;)t[n]=e[n];return t}(e,N)}else{var P=Ve(e),L=P==l||P==d;if(je(e))return function(e,t){if(t)return e.slice();var n=new e.constructor(e.length);return e.copy(n),n}(e,t);if(P==u||P==a||L&&!g){if(G(e))return g?e:{};if(N=function(e){return"function"!=typeof e.constructor||Fe(e)?{}:Ke(t=re(e))?se(t):{};var t}(L?{}:e),!t)return function(e,t){return Pe(e,Ue(e),t)}(e,function(e,t){return e&&Pe(t,Ye(t),e)}(N,e))}else{if(!R[P])return g?e:{};N=function(e,t,n,o){var i,a=e.constructor;switch(t){case w:return Re(e);case r:case s:return new a(+e);case I:return function(e,t){var n=t?Re(e.buffer):e.buffer;return new e.constructor(n,e.byteOffset,e.byteLength)}(e,o);case C:case _:case T:case b:case D:case S:case y:case O:case M:return function(e,t){var n=t?Re(e.buffer):e.buffer;return new e.constructor(n,e.byteOffset,e.length)}(e,o);case c:return function(e,t,n){return B(t?n(q(e),!0):q(e),F,new e.constructor)}(e,o,n);case h:case p:return new a(e);case v:return function(e){var t=new e.constructor(e.source,x.exec(e));return t.lastIndex=e.lastIndex,t}(e);case m:return function(e,t,n){return B(t?n(z(e),!0):z(e),H,new e.constructor)}(e,o,n);case f:return i=e,De?Object(De.call(i)):{}}}(e,P,ke,t)}}E||(E=new Me);var A=E.get(e);if(A)return A;if(E.set(e,N),!k)var U=n?function(e){return function(e,t,n){var o=t(e);return Ge(e)?o:function(e,t){for(var n=-1,o=t.length,i=e.length;++n<o;)e[i+n]=t[n];return e}(o,n(e))}(e,Ye,Ue)}(e):Ye(e);return function(e,t){for(var n=-1,o=e?e.length:0;++n<o&&!1!==t(e[n],n););}(U||e,(function(i,a){U&&(i=e[a=i]),xe(N,a,ke(i,t,n,o,a,e,E))})),N}function Re(e){var t=new e.constructor(e.byteLength);return new ae(t).set(new ae(e)),t}function Pe(e,t,n,o){n||(n={});for(var i=-1,a=t.length;++i<a;){var r=t[i],s=o?o(n[r],e[r],r,n,e):void 0;xe(n,r,void 0===s?e[r]:s)}return n}function Le(e,t){var n,o,i=e.__data__;return("string"==(o=typeof(n=t))||"number"==o||"symbol"==o||"boolean"==o?"__proto__"!==n:null===n)?i["string"==typeof t?"string":"hash"]:i.map}function Ae(e,t){var n=function(e,t){return null==e?void 0:e[t]}(e,t);return function(e){return!(!Ke(e)||(t=e,$&&$ in t))&&(ze(e)||G(e)?ne:N).test(He(e));var t}(n)?n:void 0}Se.prototype.clear=function(){this.__data__=Ee?Ee(null):{}},Se.prototype.delete=function(e){return this.has(e)&&delete this.__data__[e]},Se.prototype.get=function(e){var t=this.__data__;if(Ee){var n=t[e];return n===o?void 0:n}return ee.call(t,e)?t[e]:void 0},Se.prototype.has=function(e){var t=this.__data__;return Ee?void 0!==t[e]:ee.call(t,e)},Se.prototype.set=function(e,t){return this.__data__[e]=Ee&&void 0===t?o:t,this},ye.prototype.clear=function(){this.__data__=[]},ye.prototype.delete=function(e){var t=this.__data__,n=Ne(t,e);return!(n<0||(n==t.length-1?t.pop():de.call(t,n,1),0))},ye.prototype.get=function(e){var t=this.__data__,n=Ne(t,e);return n<0?void 0:t[n][1]},ye.prototype.has=function(e){return Ne(this.__data__,e)>-1},ye.prototype.set=function(e,t){var n=this.__data__,o=Ne(n,e);return o<0?n.push([e,t]):n[o][1]=t,this},Oe.prototype.clear=function(){this.__data__={hash:new Se,map:new(ve||ye),string:new Se}},Oe.prototype.delete=function(e){return Le(this,e).delete(e)},Oe.prototype.get=function(e){return Le(this,e).get(e)},Oe.prototype.has=function(e){return Le(this,e).has(e)},Oe.prototype.set=function(e,t){return Le(this,e).set(e,t),this},Me.prototype.clear=function(){this.__data__=new ye},Me.prototype.delete=function(e){return this.__data__.delete(e)},Me.prototype.get=function(e){return this.__data__.get(e)},Me.prototype.has=function(e){return this.__data__.has(e)},Me.prototype.set=function(e,t){var n=this.__data__;if(n instanceof ye){var o=n.__data__;if(!ve||o.length<199)return o.push([e,t]),this;n=this.__data__=new Oe(o)}return n.set(e,t),this};var Ue=ce?j(ce,Object):function(){return[]},Ve=function(e){return te.call(e)};function We(e,t){return!!(t=null==t?i:t)&&("number"==typeof e||k.test(e))&&e>-1&&e%1==0&&e<t}function Fe(e){var t=e&&e.constructor;return e===("function"==typeof t&&t.prototype||Z)}function He(e){if(null!=e){try{return Q.call(e)}catch(e){}try{return e+""}catch(e){}}return""}function Be(e,t){return e===t||e!=e&&t!=t}(ge&&Ve(new ge(new ArrayBuffer(1)))!=I||ve&&Ve(new ve)!=c||me&&Ve(me.resolve())!=g||pe&&Ve(new pe)!=m||fe&&Ve(new fe)!=E)&&(Ve=function(e){var t=te.call(e),n=t==u?e.constructor:void 0,o=n?He(n):void 0;if(o)switch(o){case we:return I;case Ie:return c;case Ce:return g;case _e:return m;case Te:return E}return t});var Ge=Array.isArray;function qe(e){return null!=e&&function(e){return"number"==typeof e&&e>-1&&e%1==0&&e<=i}(e.length)&&!ze(e)}var je=he||function(){return!1};function ze(e){var t=Ke(e)?te.call(e):"";return t==l||t==d}function Ke(e){var t=typeof e;return!!e&&("object"==t||"function"==t)}function Ye(e){return qe(e)?function(e,t){var n=Ge(e)||function(e){return function(e){return function(e){return!!e&&"object"==typeof e}(e)&&qe(e)}(e)&&ee.call(e,"callee")&&(!le.call(e,"callee")||te.call(e)==a)}(e)?function(e,t){for(var n=-1,o=Array(e);++n<e;)o[n]=t(n);return o}(e.length,String):[],o=n.length,i=!!o;for(var r in e)!t&&!ee.call(e,r)||i&&("length"==r||We(r,o))||n.push(r);return n}(e):function(e){if(!Fe(e))return ue(e);var t=[];for(var n in Object(e))ee.call(e,n)&&"constructor"!=n&&t.push(n);return t}(e)}e.exports=function(e){return ke(e,!0,!0)}},485:(e,t,n)=>{var o,i="__lodash_hash_undefined__",a=1/0,r="[object Function]",s="[object GeneratorFunction]",l="[object Symbol]",d=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,c=/^\w*$/,h=/^\./,u=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,g=/\\(\\)?/g,v=/^\[object .+?Constructor\]$/,m="object"==typeof n.g&&n.g&&n.g.Object===Object&&n.g,p="object"==typeof self&&self&&self.Object===Object&&self,f=m||p||Function("return this")(),E=Array.prototype,w=Function.prototype,I=Object.prototype,C=f["__core-js_shared__"],_=(o=/[^.]+$/.exec(C&&C.keys&&C.keys.IE_PROTO||""))?"Symbol(src)_1."+o:"",T=w.toString,b=I.hasOwnProperty,D=I.toString,S=RegExp("^"+T.call(b).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),y=f.Symbol,O=E.splice,M=V(f,"Map"),x=V(Object,"create"),N=y?y.prototype:void 0,k=N?N.toString:void 0;function R(e){var t=-1,n=e?e.length:0;for(this.clear();++t<n;){var o=e[t];this.set(o[0],o[1])}}function P(e){var t=-1,n=e?e.length:0;for(this.clear();++t<n;){var o=e[t];this.set(o[0],o[1])}}function L(e){var t=-1,n=e?e.length:0;for(this.clear();++t<n;){var o=e[t];this.set(o[0],o[1])}}function A(e,t){for(var n,o,i=e.length;i--;)if((n=e[i][0])===(o=t)||n!=n&&o!=o)return i;return-1}function U(e,t){var n,o,i=e.__data__;return("string"==(o=typeof(n=t))||"number"==o||"symbol"==o||"boolean"==o?"__proto__"!==n:null===n)?i["string"==typeof t?"string":"hash"]:i.map}function V(e,t){var n=function(e,t){return null==e?void 0:e[t]}(e,t);return function(e){if(!G(e)||_&&_ in e)return!1;var t=function(e){var t=G(e)?D.call(e):"";return t==r||t==s}(e)||function(e){var t=!1;if(null!=e&&"function"!=typeof e.toString)try{t=!!(e+"")}catch(e){}return t}(e)?S:v;return t.test(function(e){if(null!=e){try{return T.call(e)}catch(e){}try{return e+""}catch(e){}}return""}(e))}(n)?n:void 0}R.prototype.clear=function(){this.__data__=x?x(null):{}},R.prototype.delete=function(e){return this.has(e)&&delete this.__data__[e]},R.prototype.get=function(e){var t=this.__data__;if(x){var n=t[e];return n===i?void 0:n}return b.call(t,e)?t[e]:void 0},R.prototype.has=function(e){var t=this.__data__;return x?void 0!==t[e]:b.call(t,e)},R.prototype.set=function(e,t){return this.__data__[e]=x&&void 0===t?i:t,this},P.prototype.clear=function(){this.__data__=[]},P.prototype.delete=function(e){var t=this.__data__,n=A(t,e);return!(n<0||(n==t.length-1?t.pop():O.call(t,n,1),0))},P.prototype.get=function(e){var t=this.__data__,n=A(t,e);return n<0?void 0:t[n][1]},P.prototype.has=function(e){return A(this.__data__,e)>-1},P.prototype.set=function(e,t){var n=this.__data__,o=A(n,e);return o<0?n.push([e,t]):n[o][1]=t,this},L.prototype.clear=function(){this.__data__={hash:new R,map:new(M||P),string:new R}},L.prototype.delete=function(e){return U(this,e).delete(e)},L.prototype.get=function(e){return U(this,e).get(e)},L.prototype.has=function(e){return U(this,e).has(e)},L.prototype.set=function(e,t){return U(this,e).set(e,t),this};var W=H((function(e){var t;e=null==(t=e)?"":function(e){if("string"==typeof e)return e;if(q(e))return k?k.call(e):"";var t=e+"";return"0"==t&&1/e==-a?"-0":t}(t);var n=[];return h.test(e)&&n.push(""),e.replace(u,(function(e,t,o,i){n.push(o?i.replace(g,"$1"):t||e)})),n}));function F(e){if("string"==typeof e||q(e))return e;var t=e+"";return"0"==t&&1/e==-a?"-0":t}function H(e,t){if("function"!=typeof e||t&&"function"!=typeof t)throw new TypeError("Expected a function");var n=function(){var o=arguments,i=t?t.apply(this,o):o[0],a=n.cache;if(a.has(i))return a.get(i);var r=e.apply(this,o);return n.cache=a.set(i,r),r};return n.cache=new(H.Cache||L),n}H.Cache=L;var B=Array.isArray;function G(e){var t=typeof e;return!!e&&("object"==t||"function"==t)}function q(e){return"symbol"==typeof e||function(e){return!!e&&"object"==typeof e}(e)&&D.call(e)==l}e.exports=function(e,t,n){var o=null==e?void 0:function(e,t){var n;t=function(e,t){if(B(e))return!1;var n=typeof e;return!("number"!=n&&"symbol"!=n&&"boolean"!=n&&null!=e&&!q(e))||c.test(e)||!d.test(e)||null!=t&&e in Object(t)}(t,e)?[t]:B(n=t)?n:W(n);for(var o=0,i=t.length;null!=e&&o<i;)e=e[F(t[o++])];return o&&o==i?e:void 0}(e,t);return void 0===o?n:o}},396:e=>{"use strict";e.exports=i},785:e=>{"use strict";e.exports=s},807:e=>{"use strict";e.exports=u},847:e=>{"use strict";e.exports=g},348:e=>{"use strict";e.exports=a},441:e=>{"use strict";e.exports=n},70:e=>{"use strict";e.exports=r},127:e=>{"use strict";e.exports=l},448:e=>{"use strict";e.exports=h},614:e=>{"use strict";e.exports=f},518:e=>{"use strict";e.exports=v},474:e=>{"use strict";e.exports=d},744:e=>{"use strict";e.exports=m},424:e=>{"use strict";e.exports=p},795:e=>{"use strict";e.exports=o},610:e=>{"use strict";e.exports=c},953:e=>{"use strict";e.exports=t},976:t=>{"use strict";t.exports=e}},w={};function I(e){var t=w[e];if(void 0!==t)return t.exports;var n=w[e]={id:e,loaded:!1,exports:{}};return E[e](n,n.exports,I),n.loaded=!0,n.exports}I.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return I.d(t,{a:t}),t},I.d=(e,t)=>{for(var n in t)I.o(t,n)&&!I.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},I.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),I.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),I.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},I.nmd=e=>(e.paths=[],e.children||(e.children=[]),e);var C={};return(()=>{"use strict";I.r(C),I.d(C,{AdvancedMagnifyTool:()=>Cv,AngleTool:()=>sv,AnnotationDisplayTool:()=>Xl,AnnotationTool:()=>Jl,ArrowAnnotateTool:()=>iv,BaseTool:()=>la,BidirectionalTool:()=>ev,BrushTool:()=>xl,CONSTANTS:()=>h,CircleROITool:()=>Zg,CircleScissorsTool:()=>Pv,CobbAngleTool:()=>hv,CrosshairsTool:()=>Mg,DragProbeTool:()=>eg,EllipticalROITool:()=>qg,Enums:()=>Z,LengthTool:()=>Ig,MIPJumpToClickTool:()=>pg,MagnifyTool:()=>vv,OrientationMarkerTool:()=>Kv,OverlayGridTool:()=>Lg,PaintFillTool:()=>Jv,PanTool:()=>ju,PlanarFreehandROITool:()=>Yh,PlanarRotateTool:()=>dg,ProbeTool:()=>Ju,RectangleROIStartEndThresholdTool:()=>Ed,RectangleROIThresholdTool:()=>md,RectangleROITool:()=>gd,RectangleScissorsTool:()=>kv,ReferenceCursors:()=>Tv,ReferenceLines:()=>kg,ReferenceLinesTool:()=>kg,ScaleOverlayTool:()=>Sv,SegmentationDisplayTool:()=>Ya,SegmentationIntersectionTool:()=>Wg,SphereScissorsTool:()=>Av,StackScrollMouseWheelTool:()=>hg,StackScrollTool:()=>rg,Synchronizer:()=>vr,SynchronizerManager:()=>l,ToolGroupManager:()=>c,TrackballRotateTool:()=>Ku,Types:()=>j,VideoRedactionTool:()=>Qv,VolumeRotateMouseWheelTool:()=>vg,WindowLevelTool:()=>ng,ZoomTool:()=>ig,addTool:()=>dr,annotation:()=>K,cancelActiveManipulations:()=>hr,cursors:()=>q,destroy:()=>rr,drawing:()=>g,init:()=>ar,removeTool:()=>cr,segmentation:()=>X,state:()=>He,synchronizers:()=>u,utilities:()=>G});var e={};I.r(e),I.d(e,{checkAndDefineIsLockedProperty:()=>ce,getAnnotationsLocked:()=>se,getAnnotationsLockedCount:()=>de,isAnnotationLocked:()=>le,setAnnotationLocked:()=>ae,unlockAllAnnotations:()=>re});var t={};I.r(t),I.d(t,{deselectAnnotation:()=>Ee,getAnnotationsSelected:()=>we,getAnnotationsSelectedByToolName:()=>Ie,getAnnotationsSelectedCount:()=>_e,isAnnotationSelected:()=>Ce,setAnnotationSelected:()=>fe});var n={};I.r(n),I.d(n,{checkAndDefineIsVisibleProperty:()=>xe,isAnnotationVisible:()=>Me,setAnnotationVisibility:()=>ye,showAllAnnotations:()=>Oe});var o={};I.r(o),I.d(o,{addAnnotation:()=>Je,getAnnotation:()=>et,getAnnotationManager:()=>Ke,getAnnotations:()=>Ze,getNumberOfAnnotations:()=>$e,removeAllAnnotations:()=>tt,removeAnnotation:()=>Qe,resetAnnotationManager:()=>Xe,setAnnotationManager:()=>Ye});var i={};I.r(i),I.d(i,{triggerSegmentationDataModified:()=>pt,triggerSegmentationModified:()=>mt,triggerSegmentationRemoved:()=>ut,triggerSegmentationRepresentationModified:()=>vt,triggerSegmentationRepresentationRemoved:()=>gt});var a={};I.r(a),I.d(a,{addColorLUT:()=>Wt,addSegmentation:()=>Ct,addSegmentationRepresentation:()=>Nt,getAllSegmentationRepresentations:()=>Tt,getColorLUT:()=>Vt,getDefaultSegmentationStateManager:()=>Et,getGlobalConfig:()=>kt,getSegmentSpecificRepresentationConfig:()=>Mt,getSegmentation:()=>wt,getSegmentationRepresentationByUID:()=>Pt,getSegmentationRepresentationSpecificConfig:()=>Ot,getSegmentationRepresentations:()=>_t,getSegmentations:()=>It,getToolGroupIdsWithSegmentation:()=>bt,getToolGroupSpecificConfig:()=>Dt,removeColorLUT:()=>Ut,removeSegmentation:()=>Lt,removeSegmentationRepresentation:()=>At,setGlobalConfig:()=>Rt,setSegmentSpecificRepresentationConfig:()=>xt,setSegmentationRepresentationSpecificConfig:()=>yt,setToolGroupSpecificConfig:()=>St});var r={};I.r(r),I.d(r,{copyPoints:()=>Wn,copyPointsList:()=>Vn,getDeltaDistance:()=>Ln,getDeltaDistanceBetweenIPoints:()=>Un,getDeltaPoints:()=>Pn,getDeltaRotation:()=>An,getMeanPoints:()=>Fn,getMeanTouchPoints:()=>Hn});var s={};I.r(s),I.d(s,{getSegmentationVisibility:()=>ia,setSegmentVisibility:()=>ra,setSegmentationVisibility:()=>oa,setSegmentsVisibility:()=>aa});var l={};I.r(l),I.d(l,{createSynchronizer:()=>mr,destroy:()=>pr,destroySynchronizer:()=>wr,getAllSynchronizers:()=>Er,getSynchronizer:()=>fr,getSynchronizersForViewport:()=>Fi});var d={};I.r(d),I.d(d,{hideElementCursor:()=>Qr,initElementCursor:()=>Zr,resetElementCursor:()=>$r,setElementCursor:()=>Jr});var c={};I.r(c),I.d(c,{createToolGroup:()=>rs,destroy:()=>or,destroyToolGroup:()=>nr,getAllToolGroups:()=>ss,getToolGroup:()=>zi,getToolGroupForViewport:()=>yo,getToolGroupsWithToolName:()=>je});var h={};I.r(h),I.d(h,{COLOR_LUT:()=>nt});var u={};I.r(u),I.d(u,{createCameraPositionSynchronizer:()=>cs,createStackImageSynchronizer:()=>Ts,createVOISynchronizer:()=>us,createZoomPanSynchronizer:()=>ms});var g={};I.r(g),I.d(g,{draw:()=>So,drawArrow:()=>Vs,drawCircle:()=>ys,drawEllipse:()=>Os,drawHandles:()=>Ms,drawLine:()=>xs,drawLinkedTextBox:()=>As,drawPolyline:()=>Ns,drawRect:()=>Us,drawRedactionRect:()=>Ws,drawTextBox:()=>Ps,setAttributesIfNecessary:()=>Ds,setNewAttributesIfValid:()=>Ss});var v={};I.r(v),I.d(v,{getActiveSegmentationRepresentation:()=>El,setActiveSegmentationRepresentation:()=>wl});var m={};I.r(m),I.d(m,{getLockedSegments:()=>_l,isSegmentIndexLocked:()=>Il,setSegmentIndexLocked:()=>Cl});var p={};I.r(p),I.d(p,{getActiveSegmentIndex:()=>bl,setActiveSegmentIndex:()=>Tl});var f={};I.r(f),I.d(f,{addColorLUT:()=>Dl,getColorForSegmentIndex:()=>yl,setColorForSegmentIndex:()=>Ol,setColorLUT:()=>Sl});var E={};I.r(E),I.d(E,{createLabelmapVolumeForViewport:()=>Dd,createMergedLabelmapForIndex:()=>_d,floodFill:()=>Od,getBrushSizeForToolGroup:()=>xd,getBrushThresholdForToolGroup:()=>kd,getDefaultRepresentationConfig:()=>bd,isValidRepresentationConfig:()=>Td,rectangleROIThresholdVolumeByRange:()=>Cd,setBrushSizeForToolGroup:()=>Md,setBrushThresholdForToolGroup:()=>Nd,thresholdSegmentationByRange:()=>Rd,thresholdVolumeByRange:()=>Pl,triggerSegmentationRender:()=>Za});var w={};I.r(w),I.d(w,{getTextBoxCoordsCanvas:()=>nd});var _={};I.r(_),I.d(_,{findClosestPoint:()=>Ls,liangBarksyClip:()=>Vd});var T={};I.r(T),I.d(T,{getCanvasEllipseCorners:()=>hl,pointInEllipse:()=>ul});var b={};I.r(b),I.d(b,{distanceToPoint:()=>ed,distanceToPointSquared:()=>Ql,intersectLine:()=>Fd});var D={};I.r(D),I.d(D,{distanceToPoint:()=>td});var S={};I.r(S),I.d(S,{addCanvasPointsToArray:()=>Jd,calculateAreaOfPoints:()=>Qd,getClosestIntersectionWithPolyline:()=>Gd,getFirstIntersectionWithPolyline:()=>Bd,getSubPixelSpacingAndXYDirections:()=>Xd,pointCanProjectOnLine:()=>$d,pointsAreWithinCloseContourProximity:()=>Zd});var y={};I.r(y),I.d(y,{distanceToPoint:()=>ec});var O={};I.r(O),I.d(O,{BasicStatsCalculator:()=>dd,Calculator:()=>sd});var M={};I.r(M),I.d(M,{BasicStatsCalculator:()=>O,ellipse:()=>T,lineSegment:()=>b,point:()=>y,polyline:()=>S,rectangle:()=>D,vec2:()=>_});var x={};I.r(x),I.d(x,{default:()=>ac,filterAnnotationsForDisplay:()=>zl,filterAnnotationsWithinSlice:()=>jl,getPointInLineOfSightWithCriteria:()=>oc,getWorldWidthAndHeightFromCorners:()=>od});var N={};I.r(N),I.d(N,{filterViewportsWithFrameOfReferenceUID:()=>Ll,filterViewportsWithParallelNormals:()=>Hl,filterViewportsWithToolEnabled:()=>Wl,getViewportIdsWithToolToRender:()=>Bl});var k={};I.r(k),I.d(k,{getOrientationStringLPS:()=>rc,invertOrientationStringLPS:()=>sc});var R={};I.r(R),I.d(R,{Events:()=>dc,addToolState:()=>hc,getToolState:()=>uc,playClip:()=>Ec,stopClip:()=>wc});var P={};I.r(P),I.d(P,{extend2DBoundingBoxInViewAxis:()=>wd,getBoundingBoxAroundShape:()=>nl});var L={};I.r(L),I.d(L,{default:()=>Zh,interpolateAnnotation:()=>Xh});var A={};I.r(A),I.d(A,{getBoundsIJKFromRectangleAnnotations:()=>Id});var U={};I.r(U),I.d(U,{isViewportPreScaled:()=>ad,jumpToSlice:()=>ws,jumpToWorld:()=>fu});var V={};I.r(V),I.d(V,{generateImageFromTimeData:()=>wu,getDataInTime:()=>Eu});var W={};I.r(W),I.d(W,{getPoint:()=>Iu,getPolyDataPointIndexes:()=>Cu,getPolyDataPoints:()=>_u});var F={};I.r(F),I.d(F,{ColorbarRangeTextPosition:()=>Tu});var H={};I.r(H),I.d(H,{Colorbar:()=>Pu,Enums:()=>F,ViewportColorbar:()=>Uu});var B={};I.r(B),I.d(B,{colorbar:()=>H});var G={};I.r(G),I.d(G,{boundingBox:()=>P,calibrateImageSpacing:()=>Ks,cine:()=>R,clip:()=>fs,debounce:()=>qs,drawing:()=>w,dynamicVolume:()=>V,getAnnotationNearPoint:()=>Fs,getAnnotationNearPointOnEnabledElement:()=>Hs,getCalibratedLengthUnits:()=>el,getCalibratedScale:()=>$s,isObject:()=>Gs,jumpToSlice:()=>ws,math:()=>M,orientation:()=>k,planar:()=>x,planarFreehandROITool:()=>L,pointInShapeCallback:()=>tl,pointInSurroundingSphereCallback:()=>il,pointToString:()=>Ia,polyDataUtils:()=>W,rectangleROITool:()=>A,roundNumber:()=>al,scroll:()=>Es,segmentation:()=>E,stackContextPrefetch:()=>pu,stackPrefetch:()=>cu,throttle:()=>js,touch:()=>r,triggerAnnotationRender:()=>Ro,triggerAnnotationRenderForViewportIds:()=>Bi,triggerEvent:()=>J.triggerEvent,viewport:()=>U,viewportFilters:()=>N,voi:()=>B});var q={};I.r(q),I.d(q,{CursorNames:()=>Wu,CursorSVG:()=>Ur,ImageMouseCursor:()=>Mr,MouseCursor:()=>br,SVGMouseCursor:()=>jr,elementCursor:()=>d,registerCursor:()=>Wr,setCursorForElement:()=>Vu});var j={};I.r(j);var z={};I.r(z),I.d(z,{getFont:()=>Fu,getState:()=>Kl,style:()=>Hr});var K={};I.r(K),I.d(K,{FrameOfReferenceSpecificAnnotationManager:()=>Ve,config:()=>z,locking:()=>e,selection:()=>t,state:()=>o,visibility:()=>n});var Y={};I.r(Y),I.d(Y,{color:()=>f,getGlobalConfig:()=>Ki,getGlobalRepresentationConfig:()=>Xi,getSegmentSpecificConfig:()=>ta,getSegmentationRepresentationSpecificConfig:()=>Qi,getToolGroupSpecificConfig:()=>Ji,setGlobalConfig:()=>Yi,setGlobalRepresentationConfig:()=>Zi,setSegmentSpecificConfig:()=>na,setSegmentationRepresentationSpecificConfig:()=>ea,setToolGroupSpecificConfig:()=>$i,visibility:()=>s});var X={};I.r(X),I.d(X,{activeSegmentation:()=>v,addSegmentationRepresentations:()=>Gu,addSegmentations:()=>Bu,config:()=>Y,removeSegmentationsFromToolGroup:()=>tr,segmentIndex:()=>p,segmentLocking:()=>m,state:()=>a,triggerSegmentationEvents:()=>i});var Z={};I.r(Z),I.d(Z,{AnnotationStyleStates:()=>Or,Events:()=>Q,KeyboardBindings:()=>ei,MouseBindings:()=>Qo,SegmentationRepresentations:()=>it,Swipe:()=>kn,ToolModes:()=>Ge});var J=I(953),$=function(e){return e.TOOL_ACTIVATED="CORNERSTONE_TOOLS_TOOL_ACTIVATED",e.TOOL_MODE_CHANGED="CORNERSTONE_TOOLS_TOOL_MODE_CHANGED",e.ANNOTATION_ADDED="CORNERSTONE_TOOLS_ANNOTATION_ADDED",e.ANNOTATION_COMPLETED="CORNERSTONE_TOOLS_ANNOTATION_COMPLETED",e.ANNOTATION_MODIFIED="CORNERSTONE_TOOLS_ANNOTATION_MODIFIED",e.ANNOTATION_REMOVED="CORNERSTONE_TOOLS_ANNOTATION_REMOVED",e.ANNOTATION_SELECTION_CHANGE="CORNERSTONE_TOOLS_ANNOTATION_SELECTION_CHANGE",e.ANNOTATION_LOCK_CHANGE="CORNERSTONE_TOOLS_ANNOTATION_LOCK_CHANGE",e.ANNOTATION_VISIBILITY_CHANGE="CORNERSTONE_TOOLS_ANNOTATION_VISIBILITY_CHANGE",e.ANNOTATION_RENDERED="CORNERSTONE_TOOLS_ANNOTATION_RENDERED",e.SEGMENTATION_MODIFIED="CORNERSTONE_TOOLS_SEGMENTATION_MODIFIED",e.SEGMENTATION_RENDERED="CORNERSTONE_TOOLS_SEGMENTATION_RENDERED",e.SEGMENTATION_REPRESENTATION_MODIFIED="CORNERSTONE_TOOLS_SEGMENTATION_REPRESENTATION_MODIFIED",e.SEGMENTATION_REMOVED="CORNERSTONE_TOOLS_SEGMENTATION_REMOVED",e.SEGMENTATION_REPRESENTATION_REMOVED="CORNERSTONE_TOOLS_SEGMENTATION_REPRESENTATION_REMOVED",e.SEGMENTATION_DATA_MODIFIED="CORNERSTONE_TOOLS_SEGMENTATION_DATA_MODIFIED",e.KEY_DOWN="CORNERSTONE_TOOLS_KEY_DOWN",e.KEY_UP="CORNERSTONE_TOOLS_KEY_UP",e.MOUSE_DOWN="CORNERSTONE_TOOLS_MOUSE_DOWN",e.MOUSE_UP="CORNERSTONE_TOOLS_MOUSE_UP",e.MOUSE_DOWN_ACTIVATE="CORNERSTONE_TOOLS_MOUSE_DOWN_ACTIVATE",e.MOUSE_DRAG="CORNERSTONE_TOOLS_MOUSE_DRAG",e.MOUSE_MOVE="CORNERSTONE_TOOLS_MOUSE_MOVE",e.MOUSE_CLICK="CORNERSTONE_TOOLS_MOUSE_CLICK",e.MOUSE_DOUBLE_CLICK="CORNERSTONE_TOOLS_MOUSE_DOUBLE_CLICK",e.MOUSE_WHEEL="CORNERSTONE_TOOLS_MOUSE_WHEEL",e.TOUCH_START="CORNERSTONE_TOOLS_TOUCH_START",e.TOUCH_START_ACTIVATE="CORNERSTONE_TOOLS_TOUCH_START_ACTIVATE",e.TOUCH_PRESS="CORNERSTONE_TOOLS_TOUCH_PRESS",e.TOUCH_DRAG="CORNERSTONE_TOOLS_TOUCH_DRAG",e.TOUCH_END="CORNERSTONE_TOOLS_TOUCH_END",e.TOUCH_TAP="CORNERSTONE_TOOLS_TAP",e.TOUCH_SWIPE="CORNERSTONE_TOOLS_SWIPE",e}($||{});const Q=$;function ee(e){return ee="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},ee(e)}function te(e,t,n){return(t=function(e){var t=function(e,t){if("object"!==ee(e)||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var o=n.call(e,"string");if("object"!==ee(o))return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"===ee(t)?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var ne=I(907),oe=I.n(ne);const ie=new Set;function ae(e){let t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];const n=he();e&&(t?function(e,t,n){t.has(e)||(t.add(e),n.added.push(e))}(e,ie,n):ue(e,ie,n)),ge(n,ie)}function re(){const e=he();!function(e,t){e.forEach((n=>{ue(n,e,t)}))}(ie,e),ge(e,ie)}function se(){return Array.from(ie)}function le(e){return ie.has(e)}function de(){return ie.size}function ce(e){if(e){const t=!!e.isLocked;(function(e){const t=Object.getOwnPropertyDescriptor(e,"isLocked");return t?t.configurable&&(t.set!==ve||t.get!==me):Object.isExtensible(e)})(e)&&Object.defineProperty(e,"isLocked",{configurable:!1,enumerable:!0,set:ve,get:me}),ae(e,t)}}function he(){return Object.freeze({added:[],removed:[],locked:[]})}function ue(e,t,n){t.delete(e)&&n.removed.push(e)}function ge(e,t){(e.added.length>0||e.removed.length>0)&&(t.forEach((t=>{e.locked.push(t)})),(0,J.triggerEvent)(J.eventTarget,Q.ANNOTATION_LOCK_CHANGE,e))}function ve(e){ae(this,e)}function me(){return le(this)}const pe=new Set;function fe(e){arguments.length>1&&void 0!==arguments[1]&&!arguments[1]?Ee(e):function(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];const n=Te();t||be(pe,n),e&&!pe.has(e)&&(pe.add(e),n.added.push(e)),De(n,pe)}(e,arguments.length>2&&void 0!==arguments[2]&&arguments[2])}function Ee(e){const t=Te();e?pe.delete(e)&&t.removed.push(e):be(pe,t),De(t,pe)}function we(){return Array.from(pe)}function Ie(e){return we().filter((t=>et(t).metadata.toolName===e))}function Ce(e){return pe.has(e)}function _e(){return pe.size}function Te(){return Object.freeze({added:[],removed:[],selection:[]})}function be(e,t){e.forEach((n=>{e.delete(n)&&t.removed.push(n)}))}function De(e,t){(e.added.length>0||e.removed.length>0)&&(t.forEach((t=>{e.selection.push(t)})),(0,J.triggerEvent)(J.eventTarget,Q.ANNOTATION_SELECTION_CHANGE,e))}const Se=new Set;function ye(e){let t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];const n=Ne();e&&(t?ke(e,Se,n):function(e,t,n){t.has(e)||(t.add(e),Ce(e)&&Ee(e),n.lastHidden.push(e))}(e,Se,n)),Re(n)}function Oe(){const e=Ne();Se.forEach((t=>{ke(t,Se,e)})),Re(e)}function Me(e){if(et(e))return!Se.has(e)}function xe(e){if(e){var t;const n=null===(t=e.isVisible)||void 0===t||t;(function(e){const t=Object.getOwnPropertyDescriptor(e,"isVisible");return t?t.configurable&&(t.set!==Pe||t.get!==Le):Object.isExtensible(e)})(e)&&Object.defineProperty(e,"isVisible",{configurable:!1,enumerable:!0,set:Pe,get:Le}),ye(e.annotationUID,n)}}function Ne(){return Object.freeze({lastVisible:[],lastHidden:[],hidden:[]})}function ke(e,t,n){t.delete(e)&&n.lastVisible.push(e)}function Re(e){(e.lastHidden.length>0||e.lastVisible.length>0)&&(Se.forEach((t=>{e.hidden.push(t)})),(0,J.triggerEvent)(J.eventTarget,Q.ANNOTATION_VISIBILITY_CHANGE,e))}function Pe(e){ye(this.annotationUID,e)}function Le(){return Me(this.annotationUID)}class Ae{constructor(e){te(this,"annotations",void 0),te(this,"uid",void 0),te(this,"getGroupKey",(e=>{if("string"==typeof e)return e;const t=e,n=(0,J.getEnabledElement)(t);if(!n)throw new Error("Element not enabled, you must have an enabled element if you are not providing a FrameOfReferenceUID");return n.FrameOfReferenceUID})),te(this,"_imageVolumeModifiedHandler",(e=>{const t=e.detail,{FrameOfReferenceUID:n}=t,o=this.annotations[n];o&&Object.keys(o).forEach((e=>{o[e].forEach((e=>{void 0!==e.invalidated&&(e.invalidated=!0)}))}))})),te(this,"getFramesOfReference",(()=>Object.keys(this.annotations))),te(this,"getAnnotations",((e,t)=>{const n=this.annotations;return n[e]?t?n[e][t]:n[e]:[]})),te(this,"getAnnotation",(e=>{const t=this.annotations;for(const n in t){const o=t[n];for(const t in o){const n=o[t];for(const t of n)if(e===t.annotationUID)return t}}})),te(this,"getNumberOfAnnotations",((e,t)=>{const n=this.getAnnotations(e,t);if(!n.length)return 0;if(t)return n.length;let o=0;for(const e in n)o+=n[e].length;return o})),te(this,"addAnnotation",((e,t)=>{const{metadata:n}=e,{FrameOfReferenceUID:o,toolName:i}=n;t=t||o;const a=this.annotations;let r=a[t];r||(a[t]={},r=a[t]);let s=r[i];s||(r[i]=[],s=r[i]),s.push(e),ce(e),xe(e)})),te(this,"removeAnnotation",(e=>{const{annotations:t}=this;for(const n in t){const o=t[n];for(const t in o){const n=o[t],i=n.findIndex((t=>t.annotationUID===e));-1!==i&&(n.splice(i,1),0===n.length&&delete o[t])}0===Object.keys(o).length&&delete t[n]}})),te(this,"removeAnnotations",((e,t)=>{const n=this.annotations;n[e]&&(t?delete n[e][t]:delete n[e])})),te(this,"saveAnnotations",((e,t)=>{const n=this.annotations;if(e&&t){const o=n[e];if(!o)return;const i=o[t];return oe()(i)}if(e){const t=n[e];return oe()(t)}return oe()(n)})),te(this,"restoreAnnotations",((e,t,n)=>{const o=this.annotations;if(t&&n){let i=o[t];i||(o[t]={},i=o[t]),i[n]=e}else t?o[t]=e:this.annotations=oe()(e)})),te(this,"getNumberOfAllAnnotations",(()=>{let e=0;const t=this.annotations;for(const n in t){const o=t[n];for(const t in o)e+=o[t].length}return e})),te(this,"removeAllAnnotations",(()=>{this.annotations={}})),e||(e=J.utilities.uuidv4()),this.annotations={},this.uid=e,J.eventTarget.addEventListener(J.Enums.Events.IMAGE_VOLUME_MODIFIED,this._imageVolumeModifiedHandler)}}const Ue=new Ae("DEFAULT"),Ve=Ae;let We={};const Fe={isInteractingWithTool:!1,isMultiPartToolActive:!1,tools:{},toolGroups:[],synchronizers:[],svgNodeCache:We,enabledElements:[],handleRadius:6};let He={isInteractingWithTool:!1,isMultiPartToolActive:!1,tools:{},toolGroups:[],synchronizers:[],svgNodeCache:We,enabledElements:[],handleRadius:6};var Be=function(e){return e.Active="Active",e.Passive="Passive",e.Enabled="Enabled",e.Disabled="Disabled",e}(Be||{});const Ge=Be,qe=[Ge.Active,Ge.Passive,Ge.Enabled],je=function(e){return He.toolGroups.filter((t=>{let{toolOptions:n}=t;const o=Object.keys(n);for(let t=0;t<o.length;t++)if(e===o[t]&&n[e]&&qe.includes(n[e].mode))return!0;return!1}))};let ze=Ue;function Ke(){return ze}function Ye(e){ze=e}function Xe(){ze=Ue}function Ze(e,t){const n=Ke(),o=n.getGroupKey(t);return n.getAnnotations(o,e)}function Je(e,t){void 0===e.annotationUID&&(e.annotationUID=J.utilities.uuidv4());const n=Ke(),o=n.getGroupKey(t);return n.addAnnotation(e,o),t instanceof HTMLDivElement?function(e,t){const n=(0,J.getEnabledElement)(t),{renderingEngine:o,viewportId:i}=n,a=Q.ANNOTATION_ADDED,r={annotation:e,viewportId:i,renderingEngineId:o.id};(0,J.triggerEvent)(J.eventTarget,a,r)}(e,t):function(e){const{toolName:t}=e.metadata,n=je(t);if(!n.length)return;const o=[];if(n.forEach((t=>{t.viewportsInfo.forEach((t=>{const{renderingEngineId:n,viewportId:i}=t,{FrameOfReferenceUID:a}=(0,J.getEnabledElementByIds)(i,n);e.metadata.FrameOfReferenceUID===a&&o.push(t)}))})),!o.length)return;const i=Q.ANNOTATION_ADDED;o.forEach((t=>{let{renderingEngineId:n,viewportId:o}=t;const a={annotation:e,viewportId:o,renderingEngineId:n};(0,J.triggerEvent)(J.eventTarget,i,a)}))}(e),e.annotationUID}function $e(e,t){const n=Ke(),o=n.getGroupKey(t);return n.getNumberOfAnnotations(o,e)}function Qe(e){const t=Ke(),n=t.getAnnotation(e);if(!n)return;t.removeAnnotation(e);const o=Q.ANNOTATION_REMOVED,i={annotation:n,annotationManagerUID:t.uid};(0,J.triggerEvent)(J.eventTarget,o,i)}function et(e){return Ke().getAnnotation(e)}function tt(){Ke().removeAllAnnotations()}const nt=[[0,0,0,0],[221,84,84,255],[77,228,121,255],[166,70,235,255],[189,180,116,255],[109,182,196,255],[204,101,157,255],[123,211,94,255],[93,87,218,255],[225,128,80,255],[73,232,172,255],[181,119,186,255],[176,193,112,255],[105,153,200,255],[208,97,120,255],[90,215,101,255],[135,83,222,255],[229,178,76,255],[122,183,181,255],[190,115,171,255],[149,197,108,255],[100,118,205,255],[212,108,93,255],[86,219,141,255],[183,79,226,255],[233,233,72,255],[118,167,187,255],[194,111,146,255],[116,201,104,255],[115,96,209,255],[216,147,89,255],[82,223,188,255],[230,75,224,255],[163,184,121,255],[114,143,191,255],[198,107,114,255],[99,206,122,255],[153,92,213,255],[220,192,85,255],[78,215,227,255],[234,71,173,255],[141,188,117,255],[110,113,195,255],[202,128,103,255],[95,210,157,255],[195,88,217,255],[206,224,81,255],[74,166,231,255],[185,120,139,255],[113,192,113,255],[133,106,199,255],[207,162,98,255],[91,214,198,255],[221,84,198,255],[159,228,77,255],[70,111,235,255],[189,119,116,255],[109,196,138,255],[165,101,204,255],[211,201,94,255],[87,191,218,255],[225,80,153,255],[106,232,73,255],[124,119,186,255],[193,142,112,255],[105,200,168,255],[203,97,208,255],[184,215,90,255],[83,147,222,255],[229,76,101,255],[122,183,130,255],[146,115,190,255],[197,171,108,255],[100,205,205,255],[212,93,177,255],[141,219,86,255],[79,97,226,255],[233,99,72,255],[118,187,150,255],[173,111,194,255],[197,201,104,255],[96,171,209,255],[216,89,137,255],[94,223,82,255],[107,75,230,255],[184,153,121,255],[114,191,175,255],[198,107,191,255],[166,206,99,255],[92,132,213,255],[220,85,91,255],[78,227,115,255],[159,71,234,255],[188,176,117,255],[110,185,195,255],[202,103,161,255],[129,210,95,255],[88,88,217,255],[224,123,81,255],[74,231,166,255],[177,120,185,255],[179,192,113,255],[106,156,199,255],[207,98,125,255],[91,214,96,255],[130,84,221,255],[228,171,77,255],[70,235,221,255],[189,116,174,255],[153,196,109,255],[101,123,204,255],[211,104,94,255],[87,218,136,255],[177,80,225,255],[232,225,73,255],[119,169,186,255],[193,112,149,255],[121,200,105,255],[111,97,208,255],[215,142,90,255],[83,222,181,255],[229,76,229,255],[165,183,122,255],[115,146,190,255],[197,108,119,255],[100,205,118,255],[148,93,212,255],[219,186,86,255],[79,220,226,255],[233,72,179,255],[144,187,118,255],[111,118,194,255],[201,124,104,255],[96,209,153,255],[189,89,216,255],[211,223,82,255],[75,172,230,255],[184,121,142,255],[117,191,114,255],[130,107,198,255],[206,157,99,255],[92,213,193,255],[220,85,203,255],[165,227,78,255],[71,118,234,255],[188,117,117,255],[110,195,135,255],[161,103,202,255],[210,195,95,255],[88,195,217,255],[224,81,158,255],[113,231,74,255],[123,120,185,255],[192,139,113,255],[106,199,164,255],[198,98,207,255],[188,214,91,255],[84,153,221,255],[228,77,108,255],[70,235,84,255],[143,116,189,255],[196,167,109,255],[101,204,199,255],[211,94,182,255],[147,218,87,255],[80,104,225,255],[232,93,73,255],[119,186,147,255],[170,112,193,255],[200,200,105,255],[97,175,208,255],[215,90,142,255],[100,222,83,255],[101,76,229,255],[183,150,122,255],[115,190,171,255],[197,108,194,255],[170,205,100,255],[93,138,212,255],[219,86,97,255],[79,226,110,255],[153,72,233,255],[187,173,118,255],[111,187,194,255],[201,104,165,255],[134,209,96,255],[89,95,216,255],[223,117,82,255],[75,230,159,255],[174,121,184,255],[182,191,114,255],[107,160,198,255],[206,99,130,255],[92,213,92,255],[124,85,220,255],[227,165,78,255],[71,234,214,255],[188,117,176,255],[156,195,110,255],[103,128,202,255],[210,100,95,255],[88,217,131,255],[170,81,224,255],[231,218,74,255],[120,172,185,255],[192,113,153,255],[125,199,106,255],[107,98,207,255],[214,137,91,255],[84,221,175,255],[222,77,228,255],[194,235,70,255],[116,149,189,255],[196,109,123,255],[101,204,114,255],[143,94,211,255],[218,180,87,255],[80,225,225,255],[232,73,186,255],[147,186,119,255],[112,122,193,255],[200,121,105,255],[97,208,148,255],[184,90,215,255],[216,222,83,255],[76,178,229,255],[183,122,145,255],[121,190,115,255],[126,108,197,255],[205,153,100,255],[93,212,187,255],[219,86,208,255],[171,226,79,255],[72,126,233,255],[187,118,121,255],[111,194,132,255],[157,104,201,255],[209,190,96,255],[89,200,216,255],[223,82,164,255],[120,230,75,255],[121,121,184,255],[191,136,114,255],[107,198,160,255],[192,99,206,255],[193,213,92,255],[85,158,220,255],[227,78,115,255],[71,234,78,255],[141,117,188,255],[195,163,110,255],[103,202,194,255],[210,95,186,255],[153,217,88,255],[81,111,224,255]];var ot=function(e){return e.Labelmap="LABELMAP",e.Contour="CONTOUR",e.Surface="SURFACE",e}(ot||{});const it=ot,at={renderOutline:!0,outlineWidthActive:2,outlineWidthInactive:2,outlineOpacity:1,outlineOpacityInactive:.85,renderFill:!0,fillAlpha:1,fillAlphaInactive:0},rt={renderOutline:!0,outlineWidthActive:3,outlineWidthInactive:2,renderFill:!0,renderFillInactive:!0,fillAlpha:.7,fillAlphaInactive:.65,outlineOpacity:1,outlineOpacityInactive:.85},st=function(){return rt},lt=st(),dt=at,ct={colorLUT:[],segmentations:[],globalConfig:{renderInactiveSegmentations:!0,representations:{[it.Labelmap]:lt,[it.Contour]:dt}},toolGroups:{}},ht=new class{constructor(e){te(this,"state",void 0),te(this,"uid",void 0),e||(e=J.utilities.uuidv4()),this.state=oe()(ct),this.uid=e}getState(){return this.state}getToolGroups(){return Object.keys(this.state.toolGroups)}getColorLUT(e){return this.state.colorLUT[e]}resetState(){this.state=oe()(ct)}getSegmentation(e){return this.state.segmentations.find((t=>t.segmentationId===e))}addSegmentation(e){if(this._initDefaultColorLUTIfNecessary(),this.getSegmentation(e.segmentationId))throw new Error("Segmentation with id ".concat(e.segmentationId," already exists"));this.state.segmentations.push(e)}getSegmentationRepresentations(e){const t=this.state.toolGroups[e];if(t)return t.segmentationRepresentations}getAllSegmentationRepresentations(){const e={};return Object.entries(this.state.toolGroups).forEach((t=>{let[n,o]=t;e[n]=o.segmentationRepresentations})),e}addSegmentationRepresentation(e,t){this.state.toolGroups[e]||(this.state.toolGroups[e]={segmentationRepresentations:[],config:{}}),this.state.toolGroups[e].segmentationRepresentations.push(t),this._handleActiveSegmentation(e,t)}getGlobalConfig(){return this.state.globalConfig}setGlobalConfig(e){this.state.globalConfig=e}getSegmentationRepresentationByUID(e,t){return this.getSegmentationRepresentations(e).find((e=>e.segmentationRepresentationUID===t))}removeSegmentation(e){this.state.segmentations=this.state.segmentations.filter((t=>t.segmentationId!==e))}removeSegmentationRepresentation(e,t){const n=this.getSegmentationRepresentations(e);if(!n||!n.length)throw new Error("No viewport specific segmentation state found for viewport ".concat(e));const o=n.findIndex((e=>e.segmentationRepresentationUID===t));-1===o&&console.warn("No viewport specific segmentation state data found for viewport ".concat(e," and segmentation data UID ").concat(t));const i=n[o];n.splice(o,1),this._handleActiveSegmentation(e,i)}setActiveSegmentationRepresentation(e,t){const n=this.getSegmentationRepresentations(e);if(!n||!n.length)throw new Error("No segmentation data found for toolGroupId: ".concat(e));const o=n.find((e=>e.segmentationRepresentationUID===t));if(!o)throw new Error("No segmentation data found for segmentation data UID ".concat(t));o.active=!0,this._handleActiveSegmentation(e,o)}getToolGroupSpecificConfig(e){const t=this.state.toolGroups[e];if(t)return t.config}getSegmentationRepresentationSpecificConfig(e,t){const n=this.getSegmentationRepresentationByUID(e,t);if(n)return n.segmentationRepresentationSpecificConfig}setSegmentationRepresentationSpecificConfig(e,t,n){const o=this.getSegmentationRepresentationByUID(e,t);o&&(o.segmentationRepresentationSpecificConfig=n)}getSegmentSpecificConfig(e,t,n){const o=this.getSegmentationRepresentationByUID(e,t);if(o)return o.segmentSpecificConfig[n]}setSegmentSpecificConfig(e,t,n){const o=this.getSegmentationRepresentationByUID(e,t);o&&(o.segmentSpecificConfig=n)}setSegmentationRepresentationConfig(e,t){let n=this.state.toolGroups[e];n||(this.state.toolGroups[e]={segmentationRepresentations:[],config:{renderInactiveSegmentations:!0,representations:{}}},n=this.state.toolGroups[e]),n.config={...n.config,...t}}addColorLUT(e,t){this.state.colorLUT[t]&&console.log("Color LUT table already exists, overwriting"),this.state.colorLUT[t]=e}removeColorLUT(e){delete this.state.colorLUT[e]}_handleActiveSegmentation(e,t){const n=this.getSegmentationRepresentations(e);0!==n.length&&(1!==n.length&&0!==n.filter((e=>e.active)).length?t.active&&n.forEach((e=>{e.segmentationRepresentationUID!==t.segmentationRepresentationUID&&(e.active=!1)})):n[0].active=!0)}_initDefaultColorLUTIfNecessary(){0!==this.state.colorLUT.length&&this.state.colorLUT[0]||this.addColorLUT(nt,0)}}("DEFAULT");function ut(e){const t={segmentationId:e};(0,J.triggerEvent)(J.eventTarget,Q.SEGMENTATION_REMOVED,t)}function gt(e,t){const n={toolGroupId:e,segmentationRepresentationUID:t};(0,J.triggerEvent)(J.eventTarget,Q.SEGMENTATION_REPRESENTATION_REMOVED,n)}function vt(e,t){const n={toolGroupId:e,segmentationRepresentationUID:t};t?(0,J.triggerEvent)(J.eventTarget,Q.SEGMENTATION_REPRESENTATION_MODIFIED,n):(_t(e)||[]).forEach((t=>{const{segmentationRepresentationUID:n}=t,o={toolGroupId:e,segmentationRepresentationUID:n};(0,J.triggerEvent)(J.eventTarget,Q.SEGMENTATION_REPRESENTATION_MODIFIED,o)}))}function mt(e){let t;t=e?[e]:It().map((e=>{let{segmentationId:t}=e;return t})),t.forEach((e=>{const t={segmentationId:e};(0,J.triggerEvent)(J.eventTarget,Q.SEGMENTATION_MODIFIED,t)}))}function pt(e,t){const n={segmentationId:e,modifiedSlicesToUse:t};(0,J.triggerEvent)(J.eventTarget,Q.SEGMENTATION_DATA_MODIFIED,n)}const ft=function(e){const{segmentationId:t,representation:n}=e;return{segmentationId:t,cachedStats:{},segmentLabels:{},label:null,segmentsLocked:new Set,type:n.type,activeSegmentIndex:1,representationData:{[n.type]:{...n.data}}}};function Et(){return ht}function wt(e){return Et().getSegmentation(e)}function It(){return Et().getState().segmentations}function Ct(e,t){const n=Et(),o=ft(e);n.addSegmentation(o),t||mt(o.segmentationId)}function _t(e){return Et().getSegmentationRepresentations(e)}function Tt(){return Et().getAllSegmentationRepresentations()}function bt(e){if(!e)throw new Error("getToolGroupIdsWithSegmentation: segmentationId is empty");const t=Et(),n=t.getState(),o=Object.keys(n.toolGroups),i=[];return o.forEach((n=>{t.getSegmentationRepresentations(n).forEach((t=>{t.segmentationId===e&&i.push(n)}))})),i}function Dt(e){return Et().getToolGroupSpecificConfig(e)}function St(e,t,n){Et().setSegmentationRepresentationConfig(e,t),n||vt(e)}function yt(e,t,n){let o=arguments.length>3&&void 0!==arguments[3]&&arguments[3];Et().setSegmentationRepresentationSpecificConfig(e,t,n),o||vt(e,t)}function Ot(e,t){return Et().getSegmentationRepresentationSpecificConfig(e,t)}function Mt(e,t,n){return Et().getSegmentSpecificConfig(e,t,n)}function xt(e,t,n){let o=arguments.length>3&&void 0!==arguments[3]&&arguments[3];Et().setSegmentSpecificConfig(e,t,n),o||vt(e,t)}function Nt(e,t,n){Et().addSegmentationRepresentation(e,t),n||vt(e,t.segmentationRepresentationUID)}function kt(){return Et().getGlobalConfig()}function Rt(e,t){Et().setGlobalConfig(e),t||mt()}function Pt(e,t){return Et().getSegmentationRepresentationByUID(e,t)}function Lt(e){Et().removeSegmentation(e),ut(e)}function At(e,t){Et().removeSegmentationRepresentation(e,t),gt(e,t)}function Ut(e){Et().removeColorLUT(e)}function Vt(e){return Et().getColorLUT(e)}function Wt(e,t){Et().addColorLUT(e,t)}function Ft(e,t){const n=t||e.currentTarget,{viewport:o}=(0,J.getEnabledElement)(n),i=function(e){return[e.clientX,e.clientY]}(e),a=function(e){return[e.pageX,e.pageY]}(e),r=function(e,t){const n=e.getBoundingClientRect();return[t[0]-n.left-window.pageXOffset,t[1]-n.top-window.pageYOffset]}(n,a);return{page:a,client:i,canvas:r,world:o.canvasToWorld(r)}}const Ht=function(e){const t=e.currentTarget,{viewportId:n,renderingEngineId:o}=(0,J.getEnabledElement)(t),i=Ft(e,t),a={event:e,eventName:Q.MOUSE_DOUBLE_CLICK,viewportId:n,renderingEngineId:o,camera:{},element:t,startPoints:i,lastPoints:i,currentPoints:i,deltaPoints:{page:[0,0],client:[0,0],canvas:[0,0],world:[0,0,0]}};!(0,J.triggerEvent)(t,Q.MOUSE_DOUBLE_CLICK,a)&&(e.stopImmediatePropagation(),e.preventDefault())},Bt=Q.MOUSE_MOVE,Gt=function(e){const t=e.currentTarget,n=(0,J.getEnabledElement)(t),{renderingEngineId:o,viewportId:i}=n,a={renderingEngineId:o,viewportId:i,camera:{},element:t,currentPoints:Ft(e),eventName:Bt,event:e};!(0,J.triggerEvent)(t,Bt,a)&&(e.stopImmediatePropagation(),e.preventDefault())},{MOUSE_DOWN:qt,MOUSE_DOWN_ACTIVATE:jt,MOUSE_CLICK:zt,MOUSE_UP:Kt,MOUSE_DRAG:Yt}=Q,Xt=3,Zt={mouseButton:void 0,element:null,renderingEngineId:void 0,viewportId:void 0,isClickEvent:!0,clickDelay:200,preventClickTimeout:null,startPoints:{page:[0,0],client:[0,0],canvas:[0,0],world:[0,0,0]},lastPoints:{page:[0,0],client:[0,0],canvas:[0,0],world:[0,0,0]}};let Jt={mouseButton:void 0,renderingEngineId:void 0,viewportId:void 0,isClickEvent:!0,clickDelay:200,element:null,preventClickTimeout:null,startPoints:{page:[0,0],client:[0,0],canvas:[0,0],world:[0,0,0]},lastPoints:{page:[0,0],client:[0,0],canvas:[0,0],world:[0,0,0]}};const $t={doubleClickTimeout:null,mouseDownEvent:null,mouseUpEvent:null,ignoreDoubleClick:!1};function Qt(e){const t=Ft(e,Jt.element),n=dn(Jt.element,Jt.lastPoints),o=cn(t,n);if($t.doubleClickTimeout){if(!nn(o.canvas))return;an()}const i={event:e,eventName:Yt,mouseButton:Jt.mouseButton,renderingEngineId:Jt.renderingEngineId,viewportId:Jt.viewportId,camera:{},element:Jt.element,startPoints:ln(Jt.startPoints),lastPoints:ln(n),currentPoints:t,deltaPoints:o};!(0,J.triggerEvent)(Jt.element,Yt,i)&&(e.stopImmediatePropagation(),e.preventDefault()),Jt.lastPoints=ln(t)}function en(e){if(clearTimeout(Jt.preventClickTimeout),$t.doubleClickTimeout)$t.mouseUpEvent?sn():($t.mouseUpEvent=e,Jt.element.addEventListener("mousemove",tn));else{const t=Jt.isClickEvent?zt:Kt,n=Ft(e,Jt.element),o=cn(n,Jt.lastPoints),i={event:e,eventName:t,mouseButton:Jt.mouseButton,element:Jt.element,renderingEngineId:Jt.renderingEngineId,viewportId:Jt.viewportId,camera:{},startPoints:ln(Jt.startPoints),lastPoints:ln(Jt.lastPoints),currentPoints:n,deltaPoints:o};(0,J.triggerEvent)(i.element,t,i),sn()}document.removeEventListener("mousemove",Qt)}function tn(e){nn(cn(Ft(e,Jt.element),dn(Jt.element,Jt.lastPoints)).canvas)&&(an(),Gt(e))}function nn(e){return Math.abs(e[0])+Math.abs(e[1])>Xt}function on(){Jt.isClickEvent=!1}function an(){$t.ignoreDoubleClick=!0;const e=$t.mouseDownEvent,t=$t.mouseUpEvent;rn(),function(e){const t=cn(Jt.startPoints,Jt.startPoints),n={event:e,eventName:qt,element:Jt.element,mouseButton:Jt.mouseButton,renderingEngineId:Jt.renderingEngineId,viewportId:Jt.viewportId,camera:{},startPoints:Jt.startPoints,lastPoints:Jt.startPoints,currentPoints:Jt.startPoints,deltaPoints:t};Jt.lastPoints=ln(n.lastPoints),(0,J.triggerEvent)(n.element,qt,n)&&(0,J.triggerEvent)(n.element,jt,n)}(e),t&&en(t)}function rn(){$t.doubleClickTimeout&&(clearTimeout($t.doubleClickTimeout),$t.doubleClickTimeout=null),$t.mouseDownEvent=null,$t.mouseUpEvent=null}function sn(){var e,t;document.removeEventListener("mouseup",en),null===(e=Jt.element)||void 0===e||e.removeEventListener("mousemove",tn),null===(t=Jt.element)||void 0===t||t.addEventListener("mousemove",Gt),rn(),Jt=JSON.parse(JSON.stringify(Zt))}function ln(e){return JSON.parse(JSON.stringify(e))}function dn(e,t){const{viewport:n}=(0,J.getEnabledElement)(e),o=n.canvasToWorld(t.canvas);return{page:t.page,client:t.client,canvas:t.canvas,world:o}}function cn(e,t){return{page:hn(e.page,t.page),client:hn(e.client,t.client),canvas:hn(e.canvas,t.canvas),world:(n=e.world,o=t.world,[n[0]-o[0],n[1]-o[1],n[2]-o[2]])};var n,o}function hn(e,t){return[e[0]-t[0],e[1]-t[1]]}function un(e){$t.ignoreDoubleClick?($t.ignoreDoubleClick=!1,e.stopImmediatePropagation(),e.preventDefault()):sn()}const gn=function(e){if($t.doubleClickTimeout){if(e.buttons===$t.mouseDownEvent.buttons)return;return $t.mouseDownEvent=e,void an()}$t.doubleClickTimeout=setTimeout(an,1===e.buttons?400:150),$t.mouseDownEvent=e,$t.ignoreDoubleClick=!1,Jt.element=e.currentTarget,Jt.mouseButton=e.buttons;const t=(0,J.getEnabledElement)(Jt.element),{renderingEngineId:n,viewportId:o}=t;Jt.renderingEngineId=n,Jt.viewportId=o,Jt.preventClickTimeout=setTimeout(on,Jt.clickDelay),Jt.element.removeEventListener("mousemove",Gt);const i=Ft(e,Jt.element);Jt.startPoints=ln(i),Jt.lastPoints=ln(i),document.addEventListener("mouseup",en),document.addEventListener("mousemove",Qt)};function vn(e){e.removeEventListener("dblclick",Ht),e.removeEventListener("mousedown",gn),e.removeEventListener("mousemove",Gt),e.removeEventListener("dblclick",un,{capture:!0})}const mn={enable:function(e){vn(e),e.addEventListener("dblclick",Ht),e.addEventListener("mousedown",gn),e.addEventListener("mousemove",Gt),e.addEventListener("dblclick",un,{capture:!0})},disable:vn},pn=function(e){const t=e.currentTarget,n=(0,J.getEnabledElement)(t),{renderingEngineId:o,viewportId:i}=n;if(e.deltaY>-1&&e.deltaY<1)return;e.preventDefault();const{spinX:a,spinY:r,pixelX:s,pixelY:l}=function(e){let t=0,n=0,o=0,i=0;return"detail"in e&&(n=e.detail),"wheelDelta"in e&&(n=-e.wheelDelta/120),"wheelDeltaY"in e&&(n=-e.wheelDeltaY/120),"wheelDeltaX"in e&&(t=-e.wheelDeltaX/120),o=10*t,i=10*n,"deltaY"in e&&(i=e.deltaY),"deltaX"in e&&(o=e.deltaX),(o||i)&&e.deltaMode&&(1===e.deltaMode?(o*=40,i*=40):(o*=800,i*=800)),o&&!t&&(t=o<1?-1:1),i&&!n&&(n=i<1?-1:1),{spinX:t,spinY:n,pixelX:o,pixelY:i}}(e),d=r<0?-1:1,c={event:e,eventName:Q.MOUSE_WHEEL,renderingEngineId:o,viewportId:i,element:t,camera:{},detail:e,wheel:{spinX:a,spinY:r,pixelX:s,pixelY:l,direction:d},points:Ft(e)};(0,J.triggerEvent)(t,Q.MOUSE_WHEEL,c)};function fn(e){e.removeEventListener("wheel",pn)}const En={enable:function(e){fn(e),e.addEventListener("wheel",pn,{passive:!1})},disable:fn},wn=0,In=1;let Cn,_n;function Tn(e,t){const n=Date.now();if(e!==Cn){if(n-_n<=2e3)return t.preventDefault(),t.stopPropagation(),t.stopImmediatePropagation(),!1;Cn=e}_n=n}const bn=Tn.bind(null,wn),Dn=Tn.bind(null,In);function Sn(e,t,n){const o=n?bn:Dn;t.forEach((function(t){e.addEventListener(t,o,{passive:!1})}))}function yn(e,t,n){const o=n?bn:Dn;t.forEach((function(t){e.removeEventListener(t,o)}))}const On=["mousedown","mouseup","mousemove"],Mn=["touchstart","touchend"];function xn(e){yn(e,On,wn),yn(e,Mn,In)}const Nn={enable:function(e){xn(e),Sn(e,On,wn),Sn(e,Mn,In)},disable:xn};var kn=function(e){return e.UP="UP",e.DOWN="DOWN",e.LEFT="LEFT",e.RIGHT="RIGHT",e}(kn||{});function Rn(e,t){const n=t||e.currentTarget,o="touchend"===e.type?e.changedTouches:e.touches;return Object.keys(o).map((e=>{const t=function(e){return[e.clientX,e.clientY]}(o[e]),i=function(e){return[e.pageX,e.pageY]}(o[e]),a=function(e,t){const n=e.getBoundingClientRect();return[t[0]-n.left-window.pageXOffset,t[1]-n.top-window.pageYOffset]}(n,i),{viewport:r}=(0,J.getEnabledElement)(n);return{page:i,client:t,canvas:a,world:r.canvasToWorld(a),touch:{identifier:e,radiusX:o[e].radiusX,radiusY:o[e].radiusY,force:o[e].force,rotationAngle:o[e].rotationAngle}}}))}function Pn(e,t){const n=Fn(e),o=Fn(t);return{page:Bn(n.page,o.page),client:Bn(n.client,o.client),canvas:Bn(n.canvas,o.canvas),world:(i=n.world,a=o.world,[i[0]-a[0],i[1]-a[1],i[2]-a[2]])};var i,a}function Ln(e,t){const n=Fn(e),o=Fn(t);return{page:qn(n.page,o.page),client:qn(n.client,o.client),canvas:qn(n.canvas,o.canvas),world:jn(n.world,o.world)}}function An(e,t){}function Un(e,t){const n=Gn(e),o=Gn(t);return{page:n.page-o.page,client:n.client-o.client,canvas:n.canvas-o.canvas,world:n.world-o.world}}function Vn(e){return JSON.parse(JSON.stringify(e))}function Wn(e){return JSON.parse(JSON.stringify(e))}function Fn(e){return e.reduce(((t,n)=>({page:[t.page[0]+n.page[0]/e.length,t.page[1]+n.page[1]/e.length],client:[t.client[0]+n.client[0]/e.length,t.client[1]+n.client[1]/e.length],canvas:[t.canvas[0]+n.canvas[0]/e.length,t.canvas[1]+n.canvas[1]/e.length],world:[t.world[0]+n.world[0]/e.length,t.world[1]+n.world[1]/e.length,t.world[2]+n.world[2]/e.length]})),{page:[0,0],client:[0,0],canvas:[0,0],world:[0,0,0]})}function Hn(e){return e.reduce(((t,n)=>({page:[t.page[0]+n.page[0]/e.length,t.page[1]+n.page[1]/e.length],client:[t.client[0]+n.client[0]/e.length,t.client[1]+n.client[1]/e.length],canvas:[t.canvas[0]+n.canvas[0]/e.length,t.canvas[1]+n.canvas[1]/e.length],world:[t.world[0]+n.world[0]/e.length,t.world[1]+n.world[1]/e.length,t.world[2]+n.world[2]/e.length],touch:{identifier:null,radiusX:t.touch.radiusX+n.touch.radiusX/e.length,radiusY:t.touch.radiusY+n.touch.radiusY/e.length,force:t.touch.force+n.touch.force/e.length,rotationAngle:t.touch.rotationAngle+n.touch.rotationAngle/e.length}})),{page:[0,0],client:[0,0],canvas:[0,0],world:[0,0,0],touch:{identifier:null,radiusX:0,radiusY:0,force:0,rotationAngle:0}})}function Bn(e,t){return[e[0]-t[0],e[1]-t[1]]}function Gn(e){const t=[];for(let n=0;n<e.length;n++)for(let o=0;o<e.length;o++)n<o&&t.push({page:qn(e[n].page,e[o].page),client:qn(e[n].client,e[o].client),canvas:qn(e[n].canvas,e[o].canvas),world:jn(e[n].world,e[o].world)});return t.reduce(((e,n)=>({page:e.page+n.page/t.length,client:e.client+n.client/t.length,canvas:e.canvas+n.canvas/t.length,world:e.world+n.world/t.length})),{page:0,client:0,canvas:0,world:0})}function qn(e,t){return Math.sqrt(Math.pow(e[0]-t[0],2)+Math.pow(e[1]-t[1],2))}function jn(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))}J.Settings.getRuntimeSettings();const{TOUCH_START:zn,TOUCH_START_ACTIVATE:Kn,TOUCH_PRESS:Yn,TOUCH_DRAG:Xn,TOUCH_END:Zn,TOUCH_TAP:Jn,TOUCH_SWIPE:$n}=Q,Qn={page:[0,0],client:[0,0],canvas:[0,0],world:[0,0,0]},eo={page:0,client:0,canvas:0,world:0},to={renderingEngineId:void 0,viewportId:void 0,element:null,startPointsList:[{...Qn,touch:null}],lastPointsList:[{...Qn,touch:null}],isTouchStart:!1,startTime:null,pressTimeout:null,pressDelay:700,pressMaxDistance:5,accumulatedDistance:eo,swipeDistanceThreshold:48,swiped:!1,swipeToleranceMs:300},no={renderingEngineId:void 0,viewportId:void 0,element:null,startPointsList:[{...Qn,touch:null}],taps:0,tapTimeout:null,tapMaxDistance:24,tapToleranceMs:300};let oo=JSON.parse(JSON.stringify(to)),io=JSON.parse(JSON.stringify(no));function ao(e,t,n){return(0,J.triggerEvent)(e,t,n)}function ro(e){const t=Rn(e,oo.element),n=lo(oo.element,oo.lastPointsList),o=t.length===n.length?Pn(t,n):Qn,i=t.length===n.length?Un(t,n):eo,a=t.length===n.length?Ln(t,oo.lastPointsList):eo;oo.accumulatedDistance={page:oo.accumulatedDistance.page+a.page,client:oo.accumulatedDistance.client+a.client,canvas:oo.accumulatedDistance.canvas+a.canvas,world:oo.accumulatedDistance.world+a.world};const r={event:e,eventName:Xn,renderingEngineId:oo.renderingEngineId,viewportId:oo.viewportId,camera:{},element:oo.element,startPoints:Hn(oo.startPointsList),lastPoints:Hn(n),currentPoints:Hn(t),startPointsList:Vn(oo.startPointsList),lastPointsList:Vn(n),currentPointsList:t,deltaPoints:o,deltaDistance:i};ao(oo.element,Xn,r),function(e,t){const n=(new Date).getTime(),o=oo.startTime.getTime();if(oo.swiped||n-o>oo.swipeToleranceMs)return;const[i,a]=t.canvas,r={event:e,eventName:$n,renderingEngineId:oo.renderingEngineId,viewportId:oo.viewportId,camera:{},element:oo.element,swipe:null};Math.abs(i)>oo.swipeDistanceThreshold&&(r.swipe=i>0?kn.RIGHT:kn.LEFT,ao(r.element,$n,r),oo.swiped=!0),Math.abs(a)>oo.swipeDistanceThreshold&&(r.swipe=a>0?kn.DOWN:kn.UP,ao(r.element,$n,r),oo.swiped=!0)}(e,o),oo.lastPointsList=Vn(t)}function so(e){clearTimeout(oo.pressTimeout);const t=Rn(e,oo.element),n=lo(oo.element,oo.lastPointsList),o=t.length===n.length?Pn(t,n):Pn(t,t),i=t.length===n.length?Un(t,n):Un(t,t),a={event:e,eventName:Zn,element:oo.element,renderingEngineId:oo.renderingEngineId,viewportId:oo.viewportId,camera:{},startPointsList:Vn(oo.startPointsList),lastPointsList:Vn(n),currentPointsList:t,startPoints:Hn(oo.startPointsList),lastPoints:Hn(n),currentPoints:Hn(t),deltaPoints:o,deltaDistance:i};ao(a.element,Zn,a),function(e){if((new Date).getTime()-oo.startTime.getTime()>io.tapToleranceMs)return;if(0===io.taps&&(io.element=oo.element,io.renderingEngineId=oo.renderingEngineId,io.viewportId=oo.viewportId,io.startPointsList=oo.startPointsList),io.taps>0&&(io.element!=oo.element||io.renderingEngineId!=oo.renderingEngineId||io.viewportId!=oo.viewportId))return;const t=Rn(e,io.element);Ln(t,io.startPointsList).canvas>io.tapMaxDistance||(clearTimeout(io.tapTimeout),io.taps+=1,io.tapTimeout=setTimeout((()=>{const n={event:e,eventName:Jn,element:io.element,renderingEngineId:io.renderingEngineId,viewportId:io.viewportId,camera:{},currentPointsList:t,currentPoints:Hn(t),taps:io.taps};ao(n.element,Jn,n),io=JSON.parse(JSON.stringify(no))}),io.tapToleranceMs))}(e),oo=JSON.parse(JSON.stringify(to)),document.removeEventListener("touchmove",ro),document.removeEventListener("touchend",so)}function lo(e,t){const{viewport:n}=(0,J.getEnabledElement)(e);return t.map((e=>{const t=n.canvasToWorld(e.canvas);return{page:e.page,client:e.client,canvas:e.canvas,world:t,touch:e.touch}}))}const co=function(e){oo.element=e.currentTarget;const t=(0,J.getEnabledElement)(oo.element),{renderingEngineId:n,viewportId:o}=t;oo.renderingEngineId=n,oo.viewportId=o,oo.isTouchStart||(clearTimeout(oo.pressTimeout),oo.pressTimeout=setTimeout((()=>function(e){if(oo.accumulatedDistance.canvas>oo.pressMaxDistance)return;const t={event:e,eventName:Yn,renderingEngineId:oo.renderingEngineId,viewportId:oo.viewportId,camera:{},element:oo.element,startPointsList:Vn(oo.startPointsList),lastPointsList:Vn(oo.lastPointsList),startPoints:Wn(Hn(oo.startPointsList)),lastPoints:Wn(Hn(oo.lastPointsList))};ao(t.element,Yn,t)}(e)),oo.pressDelay),function(e){oo.isTouchStart=!0,oo.startTime=new Date;const t=Rn(e,oo.element),n=Hn(t),o=Qn,i=eo,a={event:e,eventName:zn,element:oo.element,renderingEngineId:oo.renderingEngineId,viewportId:oo.viewportId,camera:{},startPointsList:t,lastPointsList:t,currentPointsList:t,startPoints:n,lastPoints:n,currentPoints:n,deltaPoints:o,deltaDistance:i};oo.startPointsList=Vn(a.startPointsList),oo.lastPointsList=Vn(a.lastPointsList),ao(a.element,zn,a)&&ao(a.element,Kn,a)}(e),document.addEventListener("touchmove",ro),document.addEventListener("touchend",so))};function ho(e){Nn.disable(e),e.removeEventListener("touchstart",co)}const uo={enable:function(e){ho(e),Nn.enable(e),e.addEventListener("touchstart",co,{passive:!1})},disable:ho},go={renderingEngineId:void 0,viewportId:void 0,key:void 0,keyCode:void 0,element:null};let vo={renderingEngineId:void 0,viewportId:void 0,key:void 0,keyCode:void 0,element:null};function mo(e){vo.element=e.currentTarget;const t=(0,J.getEnabledElement)(vo.element),{renderingEngineId:n,viewportId:o}=t;vo.renderingEngineId=n,vo.viewportId=o,vo.key=e.key,vo.keyCode=e.keyCode,e.preventDefault();const i={renderingEngineId:vo.renderingEngineId,viewportId:vo.viewportId,element:vo.element,key:vo.key,keyCode:vo.keyCode};(0,J.triggerEvent)(i.element,Q.KEY_DOWN,i),document.addEventListener("keyup",fo),document.addEventListener("visibilitychange",po),vo.element.removeEventListener("keydown",mo)}function po(){document.removeEventListener("visibilitychange",po),"hidden"===document.visibilityState&&Eo()}function fo(e){const t={renderingEngineId:vo.renderingEngineId,viewportId:vo.viewportId,element:vo.element,key:vo.key,keyCode:vo.keyCode};document.removeEventListener("keyup",fo),document.removeEventListener("visibilitychange",po),vo.element.addEventListener("keydown",mo),vo=oe()(go),(0,J.triggerEvent)(t.element,Q.KEY_UP,t)}function Eo(){vo.keyCode=void 0}const wo=mo;function Io(e){e.removeEventListener("keydown",wo)}const Co={enable:function(e){Io(e),e.addEventListener("keydown",wo)},disable:Io,getModifierKey:function(){return vo.keyCode}};function _o(e,t){if(He.svgNodeCache[e])return He.svgNodeCache[e][t]?He.svgNodeCache[e][t].domRef:void 0}function To(e,t,n,o){if(!He.svgNodeCache[t])return null;He.svgNodeCache[t][o]={touched:!0,domRef:n},e.appendChild(n)}function bo(e,t){He.svgNodeCache[e]&&He.svgNodeCache[e][t]&&(He.svgNodeCache[e][t].touched=!0)}function Do(e,t){He.svgNodeCache[t]&&Object.keys(He.svgNodeCache[t]).forEach((n=>{const o=He.svgNodeCache[t][n];!o.touched&&o.domRef&&(e.removeChild(o.domRef),delete He.svgNodeCache[t][n])}))}const So=function(e,t){const n=function(e){const t=(0,J.getEnabledElement)(e),{viewportId:n,renderingEngineId:o}=t,i="".concat(n,":").concat(o),a=function(e){const t=".".concat("viewport-element");return e.querySelector(t).querySelector(":scope > .svg-layer")}(e);return Object.keys(He.svgNodeCache[i]).forEach((e=>{He.svgNodeCache[i][e].touched=!1})),{svgLayerElement:a,svgNodeCacheForCanvas:He.svgNodeCache,getSvgNode:_o.bind(this,i),appendNode:To.bind(this,a,i),setNodeTouched:bo.bind(this,i),clearUntouched:Do.bind(this,a,i)}}(e);t(n),n.clearUntouched()},yo=function(e,t){const n=He.toolGroups.filter((n=>n.viewportsInfo.some((n=>n.renderingEngineId===t&&(!n.viewportId||n.viewportId===e)))));if(n.length){if(n.length>1)throw new Error("Multiple tool groups found for renderingEngineId: ".concat(t," and viewportId: ").concat(e,". You should only\n have one tool group per viewport in a renderingEngine."));return n[0]}};function Oo(e,t){const n=(0,J.getEnabledElement)(e),{renderingEngineId:o,viewportId:i}=n,a=yo(i,o);if(!a)return[];const r=[],s=Object.keys(a.toolOptions);for(let e=0;e<s.length;e++){const n=s[e],o=a.toolOptions[n];if(o&&t.includes(o.mode)){const e=a.getToolInstance(n);r.push(e)}}return r}const{Active:Mo,Passive:xo,Enabled:No}=Ge,ko=new class{constructor(){te(this,"hasBeenDestroyed",void 0),te(this,"_needsRender",new Set),te(this,"_animationFrameSet",!1),te(this,"_animationFrameHandle",null),te(this,"_viewportElements",void 0),te(this,"_renderFlaggedViewports",(()=>{this._throwIfDestroyed();const e=Array.from(this._viewportElements.values());for(let t=0;t<e.length;t++){const n=e[t];if(this._needsRender.has(n)&&(this._triggerRender(n),this._needsRender.delete(n),0===this._needsRender.size))return this._animationFrameSet=!1,void(this._animationFrameHandle=null)}})),this._viewportElements=new Map}addViewportElement(e,t){this._viewportElements.set(e,t)}removeViewportElement(e,t){this._viewportElements.delete(e),this._needsRender.delete(t),this._reset()}renderViewport(e){this._setViewportsToBeRenderedNextFrame([e])}_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.")}_setAllViewportsToBeRenderedNextFrame(){[...this._viewportElements.values()].forEach((e=>{this._needsRender.add(e)})),this._renderFlaggedViewports()}_setViewportsToBeRenderedNextFrame(e){const t=[...this._viewportElements.values()];e.forEach((e=>{-1!==t.indexOf(e)&&this._needsRender.add(e)})),this._render()}_render(){this._needsRender.size>0&&!1===this._animationFrameSet&&(this._animationFrameHandle=window.requestAnimationFrame(this._renderFlaggedViewports),this._animationFrameSet=!0)}_triggerRender(e){const t=(0,J.getEnabledElement)(e);if(!t)return void console.warn("Element has been disabled");if(!(0,J.getRenderingEngine)(t.renderingEngineId))return void console.warn("rendering Engine has been destroyed");const n=Oo(e,[Mo,xo,No]),{renderingEngineId:o,viewportId:i}=t,a={element:e,renderingEngineId:o,viewportId:i};So(e,(o=>{let i=!1;n.forEach((e=>{if(e.renderAnnotation){const n=e.renderAnnotation(t,o);i=i||n}})),i&&(0,J.triggerEvent)(e,Q.ANNOTATION_RENDERED,{...a})}))}_reset(){window.cancelAnimationFrame(this._animationFrameHandle),this._needsRender.clear(),this._animationFrameSet=!1,this._animationFrameHandle=null,this._setAllViewportsToBeRenderedNextFrame()}},Ro=function(e){ko.renderViewport(e)},Po=function(e){Ro(e.detail.element)},Lo={enable:function(e){e.addEventListener(J.Enums.Events.IMAGE_RENDERED,Po)},disable:function(e){e.removeEventListener(J.Enums.Events.IMAGE_RENDERED,Po)}};function Ao(e,t,n){const{renderingEngineId:o,viewportId:i}=e.detail,a=yo(i,o);if(!a)return[];const r=[],s=Object.keys(a.toolOptions);for(let e=0;e<s.length;e++){const o=s[e],i=a.toolOptions[o],l=null!=n&&i.bindings.length&&i.bindings.some((e=>e.mouseButton===n));if(t.includes(i.mode)&&(!n||l)){const e=a.getToolInstance(o);r.push(e)}}return r}const{Active:Uo,Passive:Vo,Enabled:Wo}=Ge,Fo=function(e){Ao(e,[Uo,Vo,Wo]).forEach((t=>{t.onCameraModified&&t.onCameraModified(e)}))},Ho={enable:function(e){e.addEventListener(J.Enums.Events.CAMERA_MODIFIED,Fo)},disable:function(e){e.removeEventListener(J.Enums.Events.CAMERA_MODIFIED,Fo)}},{Active:Bo,Passive:Go,Enabled:qo}=Ge,jo=function(e){Ao(e,[Bo,Go,qo]).forEach((t=>{t.onImageSpacingCalibrated&&t.onImageSpacingCalibrated(e)}))},zo={enable:function(e){e.addEventListener(J.Enums.Events.IMAGE_SPACING_CALIBRATED,jo)},disable:function(e){e.removeEventListener(J.Enums.Events.IMAGE_SPACING_CALIBRATED,jo)}},{Active:Ko}=Ge;function Yo(e,t,n){if(He.isInteractingWithTool)return!1;const{renderingEngineId:o,viewportId:i}=n.detail,a=yo(i,o);if(!a)return!1;let r;const s=Object.keys(a.toolOptions);for(let e=0;e<s.length;e++){const n=s[e],o=a.toolOptions[n],i=a.getToolInstance(n);if(o.mode===Ko&&"function"==typeof i[t]){r=a.getToolInstance(n);break}}r&&r[t](n)}const Xo=Yo.bind(null,"Mouse","mouseClickCallback");function Zo(e,t,n){const o="touch"===(arguments.length>3&&void 0!==arguments[3]?arguments[3]:"mouse")?36:6,i=[];return t.forEach((t=>{let{tool:a,annotations:r}=t;for(const t of r){if(t.isLocked||!t.isVisible)continue;const r=a.getHandleNearImagePoint(e,t,n,o);if(r){i.push({tool:a,annotation:t,handle:r});break}}})),i}function Jo(e,t){const n=[];for(let i=0;i<t.length;i++){var o;const a=t[i];if(!a){console.warn("undefined tool in filterToolsWithAnnotationsForElement");continue}let r=Ze(a.constructor.toolName,e);null!==(o=r)&&void 0!==o&&o.length&&("function"==typeof a.filterInteractableAnnotationsForElement&&(r=a.filterInteractableAnnotationsForElement(e,r)),r.length>0&&n.push({tool:a,annotations:r}))}return n}function $o(e,t,n){let o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"mouse";const i="touch"===o?36:6,a=[];return t.forEach((t=>{let{tool:r,annotations:s}=t;for(const t of s)if(!t.isLocked&&t.isVisible&&r.isPointNearTool(e,t,n,i,o)){a.push({tool:r,annotation:t});break}})),a}var Qo=function(e){return e[e.Primary=1]="Primary",e[e.Secondary=2]="Secondary",e[e.Primary_And_Secondary=3]="Primary_And_Secondary",e[e.Auxiliary=4]="Auxiliary",e[e.Primary_And_Auxiliary=5]="Primary_And_Auxiliary",e[e.Secondary_And_Auxiliary=6]="Secondary_And_Auxiliary",e[e.Primary_And_Secondary_And_Auxiliary=7]="Primary_And_Secondary_And_Auxiliary",e[e.Fourth_Button=8]="Fourth_Button",e[e.Fifth_Button=16]="Fifth_Button",e}(Qo||{}),ei=function(e){return e[e.Shift=16]="Shift",e[e.Ctrl=17]="Ctrl",e[e.Alt=18]="Alt",e[e.Meta=91]="Meta",e[e.ShiftCtrl=1617]="ShiftCtrl",e[e.ShiftAlt=1618]="ShiftAlt",e[e.ShiftMeta=1691]="ShiftMeta",e[e.CtrlAlt=1718]="CtrlAlt",e[e.CtrlMeta=1791]="CtrlMeta",e[e.AltMeta=1891]="AltMeta",e}(ei||{});const ti=e=>e.shiftKey?e.ctrlKey?ei.ShiftCtrl:e.altKey?ei.ShiftAlt:e.metaKey?ei.ShiftMeta:ei.Shift:e.ctrlKey?e.altKey?ei.CtrlAlt:e.metaKey?ei.CtrlMeta:ei.Ctrl:e.altKey?e.metaKey&&ei.AltMeta||ei.Alt:e.metaKey?ei.Meta:void 0,{Active:ni}=Ge;function oi(e){const{renderingEngineId:t,viewportId:n}=e.detail,o=e.detail.event,i=ti(o)||Co.getModifierKey(),a=yo(n,t);if(!a)return null;const r=Object.keys(a.toolOptions),s=a.getDefaultMousePrimary();for(let e=0;e<r.length;e++){const t=r[e],n=a.toolOptions[t],l=n.bindings.length&&n.bindings.some((e=>e.mouseButton===(o?o.buttons:s)&&e.modifierKey===i));if(n.mode===ni&&l)return a.getToolInstance(t)}}const{Active:ii,Passive:ai}=Ge;const{Active:ri,Passive:si}=Ge;function li(e){if(He.isInteractingWithTool)return;const t=oi(e);if(t&&"function"==typeof t.preMouseDownCallback&&t.preMouseDownCallback(e))return;const n=1===e.detail.event.buttons,o=[...Ao(e,[ri],e.detail.event.buttons)||[],...(n?Ao(e,[si]):void 0)||[]],i=e.detail,{element:a}=i,r=Jo(a,o),s=i.currentPoints.canvas,l=Zo(a,r,s,"mouse"),d=!!e.detail.event.shiftKey;if(l.length>0){const{tool:t,annotation:n,handle:o}=di(l);return ci(n.annotationUID,d),void t.handleSelectedCallback(e,n,o,"Mouse")}const c=$o(a,r,s,"mouse");if(c.length>0){const{tool:t,annotation:n}=di(c);return ci(n.annotationUID,d),void t.toolSelectedCallback(e,n,"Mouse",s)}t&&"function"==typeof t.postMouseDownCallback&&t.postMouseDownCallback(e)||function(e){if(He.isInteractingWithTool)return!1;const t=e.detail,{element:n}=t,o=(0,J.getEnabledElement)(n),{canvas:i}=t.currentPoints;if(!o)return!1;const a=function(e,t){var n;const o=new Map,{renderingEngineId:i,viewportId:a}=e.detail,r=yo(a,i);if(!r)return o;const s=Object.keys(r.toolOptions),l=r.getDefaultMousePrimary(),d=e.detail.event,c=null!==(n=null==d?void 0:d.buttons)&&void 0!==n?n:l,h=ti(d)||Co.getModifierKey();for(let e=0;e<s.length;e++){var u;const n=s[e],i=r.getToolInstance(n),a=null===(u=i.configuration)||void 0===u?void 0:u.actions;if(null==a||!a.length||!t.includes(i.mode))continue;const l=a.find((e=>e.bindings.length&&e.bindings.some((e=>e.mouseButton===c&&e.modifierKey===h))));l&&o.set(i,l)}return o}(e,[ii,ai]),r=$o(n,Jo(n,Array.from(a.keys())),i);if(r.length>0){const{tool:t,annotation:n}=r[0],o=a.get(t);return("string"==typeof o.method?t[o.method]:o.method).call(t,e,n),!0}}(e)}function di(e){return e.length>1&&e.find((e=>!le(e.annotation)&&Me(e.annotation.annotationUID)))||e[0]}function ci(e){arguments.length>1&&void 0!==arguments[1]&&arguments[1]?Ce(e)?fe(e,!1):fe(e,!0,!0):fe(e,!0,!1)}function hi(e){if(He.isInteractingWithTool)return;const t=oi(e);t&&!He.isMultiPartToolActive&&t.addNewAnnotation&&fe(t.addNewAnnotation(e,"mouse").annotationUID)}const ui=Yo.bind(null,"Mouse","doubleClickCallback");function gi(e){if(He.isInteractingWithTool)return;const t=oi(e);!t||"function"!=typeof t.mouseDragCallback||t.mouseDragCallback(e)}const{Active:vi,Passive:mi}=Ge;function pi(e){if(He.isInteractingWithTool||He.isMultiPartToolActive)return;const t=Ao(e,[vi,mi]),n=e.detail,{element:o}=n,i=Jo(o,t),a=t.filter((e=>!i.some((t=>t.tool.getToolName()===e.getToolName()))));let r=!1;for(const{tool:t,annotations:n}of i)"function"==typeof t.mouseMoveCallback&&(r=t.mouseMoveCallback(e,n)||r);a.forEach((t=>{"function"==typeof t.mouseMoveCallback&&t.mouseMoveCallback(e)})),!0===r&&Ro(o)}const fi=Yo.bind(null,"Mouse","mouseUpCallback"),Ei=Yo.bind(null,"MouseWheel","mouseWheelCallback"),wi={enable:function(e){e.addEventListener(Q.MOUSE_CLICK,Xo),e.addEventListener(Q.MOUSE_DOWN,li),e.addEventListener(Q.MOUSE_DOWN_ACTIVATE,hi),e.addEventListener(Q.MOUSE_DOUBLE_CLICK,ui),e.addEventListener(Q.MOUSE_DRAG,gi),e.addEventListener(Q.MOUSE_MOVE,pi),e.addEventListener(Q.MOUSE_UP,fi),e.addEventListener(Q.MOUSE_WHEEL,Ei)},disable:function(e){e.removeEventListener(Q.MOUSE_CLICK,Xo),e.removeEventListener(Q.MOUSE_DOWN,li),e.removeEventListener(Q.MOUSE_DOWN_ACTIVATE,hi),e.removeEventListener(Q.MOUSE_DOUBLE_CLICK,ui),e.removeEventListener(Q.MOUSE_DRAG,gi),e.removeEventListener(Q.MOUSE_MOVE,pi),e.removeEventListener(Q.MOUSE_UP,fi),e.removeEventListener(Q.MOUSE_WHEEL,Ei)}},{Active:Ii}=Ge;function Ci(e){const{renderingEngineId:t,viewportId:n}=e.detail,o=Jt.mouseButton,i=Co.getModifierKey(),a=yo(n,t);if(!a)return null;const r=Object.keys(a.toolOptions),s=a.getDefaultMousePrimary();for(let e=0;e<r.length;e++){const t=r[e],n=a.toolOptions[t],l=n.bindings.length&&n.bindings.some((e=>e.mouseButton===(null!=o?o:s)&&e.modifierKey===i));if(n.mode===Ii&&l)return a.getToolInstance(t)}}function _i(e){const t=Ci(e);if(!t)return;const{renderingEngineId:n,viewportId:o}=e.detail,i=yo(o,n),a=t.getToolName();Object.keys(i.toolOptions).includes(a)&&i.setViewportsCursorByToolName(a)}function Ti(e){const t=Ci(e);if(!t)return;const{renderingEngineId:n,viewportId:o}=e.detail,i=yo(o,n);Eo();const a=t.getToolName();Object.keys(i.toolOptions).includes(a)&&i.setViewportsCursorByToolName(a)}const bi={enable:function(e){e.addEventListener(Q.KEY_DOWN,_i),e.addEventListener(Q.KEY_UP,Ti)},disable:function(e){e.removeEventListener(Q.KEY_DOWN,_i),e.removeEventListener(Q.KEY_UP,Ti)}},{Active:Di}=Ge;function Si(e){const{renderingEngineId:t,viewportId:n}=e.detail,o=e.detail.event,i=yo(n,t);if(!i)return null;const a=Object.keys(i.toolOptions),r=Object.keys(o.touches).length,s=ti(o)||Co.getModifierKey(),l=i.getDefaultMousePrimary();for(let e=0;e<a.length;e++){const t=a[e],n=i.toolOptions[t],o=n.bindings.length&&n.bindings.some((e=>(e.numTouchPoints===r||1===r&&e.mouseButton===l)&&e.modifierKey===s));if(n.mode===Di&&o)return i.getToolInstance(t)}}function yi(e,t,n){const{renderingEngineId:o,viewportId:i}=e.detail,a=yo(i,o);if(!a)return[];const r=[],s=Object.keys(a.toolOptions);for(let e=0;e<s.length;e++){const o=s[e],i=a.toolOptions[o],l=null!=n&&i.bindings.length&&i.bindings.some((e=>e.numTouchPoints===n));if(t.includes(i.mode)&&(!n||l)){const e=a.getToolInstance(o);r.push(e)}}return r}const{Active:Oi,Passive:Mi}=Ge;function xi(e){if(He.isInteractingWithTool)return;const t=Si(e);if(t&&"function"==typeof t.preTouchStartCallback&&t.preTouchStartCallback(e))return;const n=1===Object.keys(e.detail.event.touches).length,o=[...yi(e,[Oi],Object.keys(e.detail.event.touches).length)||[],...(n?yi(e,[Mi]):void 0)||[],t],i=e.detail,{element:a}=i,r=Jo(a,o),s=i.currentPoints.canvas,l=Zo(a,r,s,"touch");if(l.length>0){const{tool:t,annotation:n,handle:o}=Ni(l);return ki(n.annotationUID,!1),void t.handleSelectedCallback(e,n,o,"Touch")}const d=$o(a,r,s,"touch");if(d.length>0){const{tool:t,annotation:n}=Ni(d);return ki(n.annotationUID,!1),void t.toolSelectedCallback(e,n,"Touch")}!t||"function"!=typeof t.postTouchStartCallback||t.postTouchStartCallback(e)}function Ni(e){return e.length>1&&e.find((e=>!le(e.annotation)&&Me(e.annotation.annotationUID)))||e[0]}function ki(e){arguments.length>1&&void 0!==arguments[1]&&arguments[1]?Ce(e)?fe(e,!1):fe(e,!0,!0):fe(e,!0,!1)}function Ri(e){if(He.isInteractingWithTool)return;const t=Si(e);t&&!He.isMultiPartToolActive&&t.addNewAnnotation&&fe(t.addNewAnnotation(e,"touch").annotationUID)}function Pi(e){if(He.isInteractingWithTool)return;const t=Si(e);!t||"function"!=typeof t.touchDragCallback||t.touchDragCallback(e)}const Li=Yo.bind(null,"Touch","touchEndCallback"),Ai=Yo.bind(null,"Touch","touchTapCallback"),Ui=Yo.bind(null,"Touch","touchPressCallback"),Vi={enable:function(e){e.addEventListener(Q.TOUCH_START,xi),e.addEventListener(Q.TOUCH_START_ACTIVATE,Ri),e.addEventListener(Q.TOUCH_DRAG,Pi),e.addEventListener(Q.TOUCH_END,Li),e.addEventListener(Q.TOUCH_TAP,Ai),e.addEventListener(Q.TOUCH_PRESS,Ui)},disable:function(e){e.removeEventListener(Q.TOUCH_START,xi),e.removeEventListener(Q.TOUCH_START_ACTIVATE,Ri),e.removeEventListener(Q.TOUCH_DRAG,Pi),e.removeEventListener(Q.TOUCH_END,Li),e.removeEventListener(Q.TOUCH_PRESS,Ui)}};function Wi(e){const{element:t,viewportId:n}=e.detail,o=function(e){const t="http://www.w3.org/2000/svg",n=document.createElementNS(t,"svg"),o="svg-layer-".concat(e);n.classList.add("svg-layer"),n.setAttribute("id",o),n.setAttribute("xmlns","http://www.w3.org/2000/svg"),n.style.width="100%",n.style.height="100%",n.style.pointerEvents="none",n.style.position="absolute";const i=document.createElementNS(t,"defs"),a=document.createElementNS(t,"filter"),r=document.createElementNS(t,"feOffset"),s=document.createElementNS(t,"feColorMatrix"),l=document.createElementNS(t,"feBlend");return a.setAttribute("id","shadow-".concat(o)),a.setAttribute("filterUnits","userSpaceOnUse"),r.setAttribute("result","offOut"),r.setAttribute("in","SourceGraphic"),r.setAttribute("dx","0.5"),r.setAttribute("dy","0.5"),s.setAttribute("result","matrixOut"),s.setAttribute("in","offOut"),s.setAttribute("in2","matrix"),s.setAttribute("values","0.2 0 0 0 0 0 0.2 0 0 0 0 0 0.2 0 0 0 0 0 1 0"),l.setAttribute("in","SourceGraphic"),l.setAttribute("in2","matrixOut"),l.setAttribute("mode","normal"),a.appendChild(r),a.appendChild(s),a.appendChild(l),i.appendChild(a),n.appendChild(i),n}(n);var i;!function(e){const{viewportUid:t,renderingEngineUid:n}=e.dataset,o="".concat(t,":").concat(n);He.svgNodeCache[o]={}}(t),i=o,t.querySelector("div.viewport-element").appendChild(i),ko.addViewportElement(n,t),mn.enable(t),En.enable(t),uo.enable(t),Co.enable(t),Lo.enable(t),Ho.enable(t),zo.enable(t),wi.enable(t),bi.enable(t),Vi.enable(t),He.enabledElements.push(t)}const Fi=function(e,t){const n=[];if(!t&&!e)throw new Error("At least one of renderingEngineId or viewportId should be given");for(let o=0;o<He.synchronizers.length;o++){const i=He.synchronizers[o],a=!i.isDisabled(),r=i.hasSourceViewport(t,e),s=i.hasTargetViewport(t,e);a&&(r||s)&&n.push(i)}return n},Hi=function(e){const{element:t,viewportId:n}=e.detail;!function(e){const{viewportUid:t,renderingEngineUid:n}=e.dataset,o="".concat(t,":").concat(n);delete He.svgNodeCache[o]}(t),function(e){const t=e.querySelector("div.".concat("viewport-element")),n=t.querySelector("svg");n&&t.removeChild(n)}(t),ko.removeViewportElement(n,t),mn.disable(t),En.disable(t),uo.disable(t),Co.disable(t),Lo.disable(t),Ho.disable(t),zo.disable(t),wi.disable(t),bi.disable(t),Vi.disable(t),(e=>{const t=(0,J.getEnabledElement)(e);Fi(t.viewportId,t.renderingEngineId).forEach((e=>{e.remove(t)}))})(t),(e=>{const{renderingEngineId:t,viewportId:n}=(0,J.getEnabledElement)(e),o=yo(n,t);o&&o.removeViewports(t,n)})(t),function(e){const t=He.enabledElements.findIndex((t=>t===e));t>-1&&He.enabledElements.splice(t,1)}(t)},Bi=function(e,t){t.length&&t.forEach((t=>{const{element:n}=e.getViewport(t);Ro(n)}))},Gi=function(e){const{viewportId:t,renderingEngineId:n}=e.detail,o=(0,J.getRenderingEngine)(n);Bi(o,[t])},qi=function(e){e.detail.removed.length&&(0,J.getRenderingEngines)().forEach((e=>{const t=e.getViewports().map((e=>e.id));Bi(e,t)}))},ji=function(e){const{segmentationId:t}=e.detail;bt(t).forEach((e=>{_t(e).forEach((n=>{n.segmentationId===t&&vt(e,n.segmentationRepresentationUID)}))}))},zi=function(e){return He.toolGroups.find((t=>t.id===e))};function Ki(){return kt()}function Yi(e){Rt(e)}function Xi(e){return Ki().representations[e]}function Zi(e,t){const n=Ki();Yi({...n,representations:{...n.representations,[e]:{...n.representations[e],...t}}})}function Ji(e){return Dt(e)}function $i(e,t){St(e,t)}function Qi(e,t){return Ot(e,t)}function ea(e,t,n){yt(e,t,n)}function ta(e,t,n){return Mt(e,t,n)}function na(e,t,n){xt(e,t,n)}function oa(e,t,n){const o=_t(e);if(!o)return;const i=o.find((e=>e.segmentationRepresentationUID===t));if(!i)return;const{segmentsHidden:a,segmentationId:r}=i,s=function(e){const t=wt(e);if(t.type===it.Labelmap){const t=J.cache.getVolume(e).getScalarData(),n={};for(let e=0;e<t.length;e++){const o=t[e];0===o||n[o]||(n[o]=!0)}return Object.keys(n).map((e=>parseInt(e,10)))}if(t.type===it.Contour){var n;const o=null===(n=t.representationData.CONTOUR)||void 0===n?void 0:n.geometryIds;if(!o)throw new Error("No geometryIds found for segmentationId ".concat(e));return o.map((e=>J.cache.getGeometry(e).data.getSegmentIndex()))}}(r);n?a.clear():s.forEach((e=>{a.add(e)})),vt(e,i.segmentationRepresentationUID)}function ia(e,t){const n=_t(e).find((e=>e.segmentationRepresentationUID===t));if(!n)return;const{segmentsHidden:o}=n;return 0===o.size}function aa(e,t,n,o){const i=Pt(e,t);i&&(n.forEach((e=>{o?i.segmentsHidden.delete(e):i.segmentsHidden.add(e)})),vt(e,t))}function ra(e,t,n,o){const i=Pt(e,t);i&&(o?i.segmentsHidden.delete(n):i.segmentsHidden.add(n),vt(e,t))}class sa{constructor(e,t){te(this,"supportedInteractionTypes",void 0),te(this,"configuration",void 0),te(this,"toolGroupId",void 0),te(this,"mode",void 0);const n=J.utilities.deepMerge(t,e),{configuration:o={},supportedInteractionTypes:i,toolGroupId:a}=n;o.strategies||(o.strategies={},o.defaultStrategy=void 0,o.activeStrategy=void 0,o.strategyOptions={}),this.toolGroupId=a,this.supportedInteractionTypes=i||[],this.configuration=Object.assign({},o),this.mode=Ge.Disabled}getToolName(){return this.constructor.toolName}applyActiveStrategy(e,t){const{strategies:n,activeStrategy:o}=this.configuration;return n[o].call(this,e,t)}setConfiguration(e){this.configuration=J.utilities.deepMerge(this.configuration,e)}setActiveStrategy(e){this.setConfiguration({activeStrategy:e})}getTargetVolumeId(e){var t;if(this.configuration.volumeId)return this.configuration.volumeId;const n=e.getActors();return n?null===(t=n.find((e=>"vtkVolume"===e.actor.getClassName())))||void 0===t?void 0:t.uid:void 0}getTargetIdImage(e,t){if(e.startsWith("imageId:")){const n=e.split("imageId:")[1],o=J.utilities.imageIdToURI(n);let i=J.utilities.getViewportsWithImageURI(o,t.id);if(!i||!i.length)return;if(i=i.filter((e=>e.getCurrentImageId()===n)),!i||!i.length)return;return i[0].getImageData()}if(e.startsWith("volumeId:")){const n=e.split("volumeId:")[1],o=J.utilities.getViewportsWithVolumeId(n,t.id);if(!o||!o.length)return;return o[0].getImageData()}throw new Error('getTargetIdImage: targetId must start with "imageId:" or "volumeId:"')}getTargetId(e){if(e instanceof J.StackViewport)return"imageId:".concat(e.getCurrentImageId());if(e instanceof J.BaseVolumeViewport)return"volumeId:".concat(this.getTargetVolumeId(e));if(e instanceof J.VideoViewport)return"";throw new Error("getTargetId: viewport must be a StackViewport or VolumeViewport")}}te(sa,"toolName",void 0),sa.toolName="BaseTool";const la=sa,da=function(e,t){const n=(0,J.getEnabledElement)(e),{viewport:o}=n,i=o.getActors().map((e=>{let{uid:n}=e;return n.startsWith(t)?n:void 0})).filter(Boolean);o.removeActors(i)};var ca=I(610),ha=I.n(ca),ua=I(474),ga=I.n(ua),va=I(448),ma=I.n(va),pa=I(70),fa=I.n(pa),Ea=I(396),wa=I.n(Ea);function Ia(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:5;return parseFloat(e[0]).toFixed(t)+","+parseFloat(e[1]).toFixed(t)+","+parseFloat(e[2]).toFixed(t)+","}const Ca=new Map;function _a(e){const{actorEntry:t,vtkPlanes:n,viewport:o}=e.detail;if(null==t||!t.clippingFilter)return;const i=t.actor.getMapper(),{viewPlaneNormal:a}=o.getCamera(),r=o.getCurrentImageIdIndex(),s="".concat(o.id,"-").concat(Ia(a),"-").concat(r);let l=Ca.get(t.uid);l||(l=new Map,Ca.set(t.uid,l));let d=l.get(s);if(!d){const e=t.clippingFilter;e.setClippingPlanes(n);try{e.update(),d=e.getOutputData(),l.set(s,d)}catch(e){console.error("Error clipping surface",e)}}i.setInputData(d)}const Ta={render:async function(e,t,n){const{colorLUTIndex:o,active:i,segmentationId:a,segmentationRepresentationUID:r,segmentsHidden:s}=t,l=wt(a).representationData[it.Surface],{geometryId:d}=l;d||console.warn("No Surfaces found for segmentationId ".concat(a,". Skipping render."));const c=J.cache.getGeometry(d);if(!c)throw new Error("No Surfaces found for geometryId ".concat(d));if(c.type!==J.Enums.GeometryType.SURFACE)throw new Error("Geometry type ".concat(c.type," not supported for rendering."));if(!c.data)return void console.warn("No Surfaces found for geometryId ".concat(d,". Skipping render."));const h=c.data;!function(e,t,n){const o=n;if(e.getActor(o))throw new Error("Not implemented yet. (Update surface)");!function(e,t,n){const o=(0,J.getEnabledElement)(e),{viewport:i}=o,a=t.getPoints(),r=t.getPolys(),s=t.getColor(),l=fa().newInstance();l.getPoints().setData(a,3);const d=wa().newInstance({values:Float32Array.from(r)});l.setPolys(d);const c=ha().newInstance({});let h;if(i instanceof J.VolumeViewport3D)c.setInputData(l);else{h=ma().newInstance({clippingPlanes:[],activePlaneId:2,passPointData:!1}),h.setInputData(l),h.setGenerateOutline(!0),h.setGenerateFaces(!1),h.update();const e=h.getOutputData();c.setInputData(e)}const u=ga().newInstance();u.setMapper(c),u.getProperty().setColor(s[0]/255,s[1]/255,s[2]/255),i.addActor({actor:u,uid:n,clippingFilter:h}),e.addEventListener(J.Enums.Events.CLIPPING_PLANES_UPDATED,_a)}(e.element,t,o)}(e,h,"".concat(r,"_").concat(h.id,"}")),e.resetCamera(),e.render()},addSegmentationRepresentation:async function(e,t,n){const{segmentationId:o}=t,i=J.utilities.uuidv4(),a=new Set,r={segmentationId:o,segmentationRepresentationUID:i,type:it.Surface,segmentsHidden:a,colorLUTIndex:0,active:!0,segmentationRepresentationSpecificConfig:{},segmentSpecificConfig:{},config:{}};if(n){const t=Ji(e),o=J.utilities.deepMerge(t,n);$i(e,{renderInactiveSegmentations:o.renderInactiveSegmentations||!0,representations:{...o.representations}})}return Nt(e,r),i},removeSegmentationRepresentation:function(e,t){let n=arguments.length>2&&void 0!==arguments[2]&&arguments[2];(function(e,t){const n=zi(e);if(void 0===n)throw new Error("ToolGroup with ToolGroupId ".concat(e," does not exist"));const{viewportsInfo:o}=n;for(const e of o){const{viewportId:n,renderingEngineId:o}=e,i=(0,J.getEnabledElementByIds)(n,o);da(i.viewport.element,t)}})(e,t),At(e,t),n&&zi(e).getViewportsInfo().forEach((e=>{let{viewportId:t,renderingEngineId:n}=e;(0,J.getEnabledElementByIds)(t,n).viewport.render()}))}};var ba=I(785),Da=I.n(ba),Sa=I(127),ya=I.n(Sa),Oa=I(348),Ma=I.n(Oa);function xa(e,t,n){var o;let i=null===(o=e.segmentSpecificConfig)||void 0===o?void 0:o[t];var a;return i||(i=null===(a=e.segmentSpecificConfig)||void 0===a?void 0:a[n]),i?i.CONTOUR:null}const Na=new Map;function ka(e){return Na.get(e)}function Ra(e,t){Na.set(e,t)}function Pa(e,t,n,o,i){const{segmentationRepresentationUID:a,segmentsHidden:r}=n,s=ya().newInstance(),l=new Map,d=new Map;t.forEach((e=>{const t=J.cache.getGeometry(e);if(!t)return void console.warn("No geometry found for geometryId ".concat(e,". Skipping render."));const o=t.data.getSegmentIndex();!function(e){if(!e)throw new Error("No contours found for geometryId ".concat(e.id));const t=e.id;if(e.type!==J.Enums.GeometryType.CONTOUR)throw new Error("Geometry type ".concat(e.type," not supported for rendering."));e.data||console.warn("No contours found for geometryId ".concat(t,". Skipping render."))}(t);const i=xa(n,e,o),a=t.data,c=function(e){const t=[],n=Ma().newInstance(),o=wa().newInstance();let i=0;e.getContours().forEach((e=>{const n=e.getPoints(),a=e.getFlatPointsArray(),r=e.getType(),s=n.map(((e,t)=>t+i));r===J.Enums.ContourType.CLOSED_PLANAR&&s.push(s[0]);const l=Float32Array.from(a);t.push(...l),o.insertNextCell([...s]),i+=n.length})),n.setData(t,3);const a=fa().newInstance();return a.setPoints(n),a.setLines(o),a}(a),h=a.getColor(),u=c.getPoints().getNumberOfPoints(),g=Da().newInstance({size:4*u,numberOfComponents:4,dataType:"Uint8Array"});for(let e=0;e<u;++e)g.setTuple(e,[...h,255]);c.getPointData().setScalars(g),i&&d.set(o,i),l.set(o,[...h,r.has(o)?0:255]),0===o?s.setInputData(c):s.addInputData(c)}));const c=s.getOutputData(),h=o.representations.CONTOUR.outlineWidthActive,u=ha().newInstance();u.setInputData(c);const g=ga().newInstance();g.setMapper(u),g.getProperty().setLineWidth(h),Ra(a,Object.assign({},ka(a),{segmentsHidden:new Set(r),segmentSpecificMap:d,outlineWidthActive:h})),g.setForceOpaque(!0),e.addActor({uid:i,actor:g}),e.resetCamera(),e.render()}function La(e,t,n,o,i){const{segmentationRepresentationUID:a,segmentsHidden:r}=n,s=o.representations.CONTOUR,l=ka(a),d=e.getActor(i);if(!d)return void console.warn("No contour actor found for actorUID ".concat(i,". Skipping render."));const{actor:c}=d,h=s.outlineWidthActive;(null==l?void 0:l.outlineWidthActive)!==h&&(c.getProperty().setLineWidth(h),Ra(a,Object.assign({},l,{outlineWidthActive:h})));const u=c.getMapper(),g=u.getLookupTable(),v=[],m=[];for(const e of r)l.segmentsHidden.has(e)||v.push(e);for(const e of l.segmentsHidden)r.has(e)||m.push(e);const p=Array.from(l.segmentsHidden).filter((e=>!m.includes(e))).concat(v),{contourSets:f,segmentSpecificConfigs:E}=t.reduce(((e,t)=>{const o=J.cache.getGeometry(t),{data:i}=o,a=i.getSegmentIndex(),r=xa(n,t,a);return e.contourSets.push(i),e.segmentSpecificConfigs[a]=null!=r?r:{},e}),{contourSets:[],segmentSpecificConfigs:{}}),w=[...p,...m],I=Object.values(E).some((e=>Object.keys(e).length>0));let C=!1;if(w.length||I){const e=u.getInputData(),t=e.getPointData().getScalars().getData();let n=0;f.forEach((e=>{var o;const i=e.getSegmentIndex(),a=e.getTotalNumberOfPoints();if(w.includes(i)||null!==(o=E[i])&&void 0!==o&&o.fillAlpha){const o=e.getColor();let r=p.includes(i)?0:255;const s=E[i];void 0!==s.fillAlpha&&(r=255*s.fillAlpha);for(let e=0;e<a;++e)t[n+4*e]=o[0],t[n+4*e+1]=o[1],t[n+4*e+2]=o[2],t[n+4*e+3]=r;C=!0}n+=4*a})),C&&e.modified(),Ra(a,Object.assign({},l,{segmentsHidden:new Set(r)})),u.setLookupTable(g)}e.render()}const Aa=function(e,t){const n=(0,J.getEnabledElement)(e),{viewport:o}=n,i=o.getActors().map((e=>{let{uid:n}=e;return n.includes(t)?n:void 0})).filter(Boolean);o.removeActors(i)},Ua={render:async function(e,t,n){const{segmentationId:o}=t,i=wt(o).representationData[it.Contour],{geometryIds:a}=i;e instanceof J.StackViewport||(null!=a&&a.length||console.warn("No contours found for segmentationId ".concat(o,". Skipping render.")),function(e,t,n,o){const{segmentationRepresentationUID:i}=n,a="CONTOUR_".concat(i);(e.getActor(a)?La:Pa)(e,t,n,o,a)}(e,a,t,n))},addSegmentationRepresentation:async function(e,t,n){const{segmentationId:o}=t,i=J.utilities.uuidv4(),a=new Set,r={segmentationId:o,segmentationRepresentationUID:i,type:it.Contour,segmentsHidden:a,colorLUTIndex:0,active:!0,segmentationRepresentationSpecificConfig:{},segmentSpecificConfig:{},config:{}};if(n){const t=Ji(e),o=J.utilities.deepMerge(t,n);$i(e,{renderInactiveSegmentations:o.renderInactiveSegmentations||!0,representations:{...o.representations}})}return Nt(e,r),i},removeSegmentationRepresentation:function(e,t){let n=arguments.length>2&&void 0!==arguments[2]&&arguments[2];(function(e,t){const n=zi(e);if(void 0===n)throw new Error("ToolGroup with ToolGroupId ".concat(e," does not exist"));const{viewportsInfo:o}=n;for(const e of o){const{viewportId:n,renderingEngineId:o}=e,i=(0,J.getEnabledElementByIds)(n,o);Aa(i.viewport.element,t)}})(e,t),At(e,t),function(e){Na.delete(e)}(t),n&&zi(e).getViewportsInfo().forEach((e=>{let{viewportId:t,renderingEngineId:n}=e;(0,J.getEnabledElementByIds)(t,n).viewport.render()}))}};var Va=I(441),Wa=I.n(Va),Fa=I(795),Ha=I.n(Fa);const Ba=function(e,t){const n=(0,J.getEnabledElement)(e),{viewport:o}=n;o instanceof J.StackViewport||o.removeVolumeActors([t])},Ga=new Map;function qa(e,t,n,o){const i={...e,...t,...o||{}};return{fillAlpha:n?i.fillAlpha:i.fillAlphaInactive,outlineWidth:n?i.outlineWidthActive:i.outlineWidthInactive,renderFill:n?i.renderFill:i.renderFillInactive,renderOutline:i.renderOutline,outlineOpacity:n?i.outlineOpacity:i.outlineOpacityInactive}}function ja(e,t,n,o){let{fillAlpha:i,renderFill:a,renderOutline:r,segmentColor:s,outlineWidth:l,segmentsHidden:d}=o;const c="".concat(e,"-").concat(t,"-").concat(n),h=Ga.get(c);if(!h)return Ga.set(c,{fillAlpha:i,renderFill:a,renderOutline:r,outlineWidth:l,segmentColor:s.slice(),segmentsHidden:new Set(d)}),{forceOpacityUpdate:!0,forceColorUpdate:!0};const{fillAlpha:u,renderFill:g,renderOutline:v,outlineWidth:m,segmentColor:p,segmentsHidden:f}=h,E=p[0]!==s[0]||p[1]!==s[1]||p[2]!==s[2],w=p[3]!==s[3]||u!==i||g!==a||v!==r||m!==l||f.has(n)!==d.has(n);return Ga.set(c,{fillAlpha:i,renderFill:a,renderOutline:r,outlineWidth:l,segmentColor:s.slice(),segmentsHidden:new Set(d)}),{forceOpacityUpdate:w,forceColorUpdate:E}}const za={render:async function(e,t,n){const{colorLUTIndex:o,active:i,segmentationId:a,segmentationRepresentationUID:r,segmentsHidden:s,config:l}=t,d=wt(a).representationData[it.Labelmap],{volumeId:c}=d;if(!J.cache.getVolume(c))throw new Error("No Labelmap found for volumeId: ".concat(c));if(!function(e,t){if(!t)return!0;const n=e.getDefaultActor();if(!n)return!1;const{uid:o}=n,i=J.cache.getVolume(o);if(i){const e=J.cache.getVolume(t);if(e&&i.metadata.FrameOfReferenceUID===e.metadata.FrameOfReferenceUID)return!0}return!1}(e,null==d?void 0:d.referencedVolumeId))return;let h=e.getActor(r);if(!h){const t=wt(a),{volumeId:n}=t.representationData[it.Labelmap];await async function(e,t,n){await async function(e,t,n){const o=(0,J.getEnabledElement)(e),{renderingEngine:i,viewport:a}=o,{id:r}=a,s=[{volumeId:t,actorUID:n,visibility:!0,blendMode:J.Enums.BlendModes.MAXIMUM_INTENSITY_BLEND}];await(0,J.addVolumesToViewports)(i,s,[r],!1,!0)}(e.element,t,n)}(e,n,r),h=e.getActor(r)}if(!h)return;const{cfun:u,ofun:g}=l,v=n.renderInactiveSegmentations;!function(e,t,n,o,i,a,r,s,l,d){const{segmentSpecificConfig:c,segmentationRepresentationSpecificConfig:h}=r,u=h[it.Labelmap],g=Vt(i),v=Math.min(256,g.length),m=t.actor,{uid:p}=t,{outlineWidth:f,renderOutline:E,outlineOpacity:w}=qa(a,u,s);for(let t=0;t<v;t++){var I;const i=t,r=g[i],l=null===(I=c[i])||void 0===I?void 0:I[it.Labelmap],{fillAlpha:h,outlineWidth:v,renderFill:m,renderOutline:f}=qa(a,u,s,l),{forceOpacityUpdate:E,forceColorUpdate:w}=ja(e,p,i,{fillAlpha:h,renderFill:m,renderOutline:f,segmentColor:r,outlineWidth:v,segmentsHidden:d});if(w&&n.addRGBPoint(i,r[0]/255,r[1]/255,r[2]/255),E)if(m){const e=d.has(i)?0:r[3]/255*h;o.removePoint(i),o.addPointLong(i,e,.5,1)}else o.addPointLong(i,.01,.5,1)}m.getProperty().setRGBTransferFunction(0,n),o.setClamping(!1),m.getProperty().setScalarOpacity(0,o),m.getProperty().setInterpolationTypeToNearest(),m.getProperty().setUseLabelOutline(E),m.getProperty().setLabelOutlineOpacity(w),m.getProperty().setLabelOutlineThickness(f);const C=s||l;m.setVisibility(C)}(e.id,h,u,g,o,n.representations[it.Labelmap],t,i,v,s)},addSegmentationRepresentation:async function(e,t,n){const{segmentationId:o}=t,i=J.utilities.uuidv4(),a=new Set,r=Ha().newInstance(),s=Wa().newInstance();s.addPoint(0,0);const l={segmentationId:o,segmentationRepresentationUID:i,type:it.Labelmap,segmentsHidden:a,colorLUTIndex:0,active:!0,segmentationRepresentationSpecificConfig:{},segmentSpecificConfig:{},config:{cfun:r,ofun:s}};if(n){const t=Ji(e),o=J.utilities.deepMerge(t,n);$i(e,{renderInactiveSegmentations:o.renderInactiveSegmentations||!0,representations:{...o.representations}})}return Nt(e,l),i},removeSegmentationRepresentation:function(e,t){let n=arguments.length>2&&void 0!==arguments[2]&&arguments[2];(function(e,t){const n=zi(e);if(void 0===n)throw new Error("ToolGroup with ToolGroupId ".concat(e," does not exist"));const{viewportsInfo:o}=n;for(const e of o){const{viewportId:n,renderingEngineId:o}=e,i=(0,J.getEnabledElementByIds)(n,o);Ba(i.viewport.element,t)}})(e,t),At(e,t),n&&zi(e).getViewportsInfo().forEach((e=>{let{viewportId:t,renderingEngineId:n}=e;(0,J.getEnabledElementByIds)(t,n).viewport.render()}))}};class Ka extends la{constructor(){super(arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},arguments.length>1&&void 0!==arguments[1]?arguments[1]:{configuration:{}}),te(this,"renderSegmentation",(e=>{const t=zi(e);if(!t)return;const n=_t(e);if(!n||0===n.length)return;const o=t.viewportsInfo.map((e=>{let{renderingEngineId:t,viewportId:n}=e;const o=(0,J.getEnabledElementByIds)(n,t);if(o)return o.viewport})),i=n.map((t=>{const n=this._getMergedRepresentationsConfig(e),i=[],a={[it.Labelmap]:za,[it.Contour]:Ua,[it.Surface]:Ta}[t.type];for(const e of o){const o=a.render(e,t,n);i.push(o)}return i}));Promise.allSettled(i).then((()=>{o.forEach((e=>{e.render()}))}))}))}onSetToolEnabled(){const e=this.toolGroupId,t=_t(e);t&&0!==t.length&&t.forEach((t=>{oa(e,t.segmentationRepresentationUID,!0)}))}onSetToolDisabled(){const e=this.toolGroupId,t=_t(e);t&&0!==t.length&&t.forEach((t=>{oa(e,t.segmentationRepresentationUID,!1)}))}_getMergedRepresentationsConfig(e){const t=Ji(e),n=Ki();return J.utilities.deepMerge(n,t)}}te(Ka,"toolName",void 0),Ka.toolName="SegmentationDisplay";const Ya=Ka,Xa=new class{constructor(){te(this,"_needsRender",new Set),te(this,"_animationFrameSet",!1),te(this,"_animationFrameHandle",null),te(this,"hasBeenDestroyed",void 0),te(this,"_renderFlaggedToolGroups",(()=>{this._throwIfDestroyed();const e=Array.from(this._needsRender.values());for(const t of e)if(this._triggerRender(t),this._needsRender.delete(t),0===this._needsRender.size)return this._animationFrameSet=!1,void(this._animationFrameHandle=null)}))}removeToolGroup(e){this._needsRender.delete(e),0===this._needsRender.size&&this._reset()}renderToolGroupSegmentations(e){this._setToolGroupSegmentationToBeRenderedNextFrame([e])}_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.")}_setToolGroupSegmentationToBeRenderedNextFrame(e){e.forEach((e=>{this._needsRender.add(e)})),this._render()}_render(){this._needsRender.size>0&&!1===this._animationFrameSet&&(this._animationFrameHandle=window.requestAnimationFrame(this._renderFlaggedToolGroups),this._animationFrameSet=!0)}_triggerRender(e){const t=zi(e);if(!t)return void console.warn("No tool group found with toolGroupId: ".concat(e));const{viewportsInfo:n}=t,o=[];n.forEach((e=>{let{viewportId:t,renderingEngineId:n}=e;const i=(0,J.getRenderingEngine)(n);i?o.push(i.getViewport(t)):console.warn("rendering Engine has been destroyed")}));const i=t.getToolInstance(Ya.toolName);function a(e){const{element:t,viewportId:n,renderingEngineId:o}=e.detail;t.removeEventListener(J.Enums.Events.IMAGE_RENDERED,a);const i=yo(n,o);if(!i)return void console.warn("toolGroup has been destroyed");const r={toolGroupId:i.id,viewportId:n};(0,J.triggerEvent)(J.eventTarget,Q.SEGMENTATION_RENDERED,{...r})}i?(o.forEach((e=>{let{element:t}=e;t.addEventListener(J.Enums.Events.IMAGE_RENDERED,a)})),i.renderSegmentation(e)):console.warn("No segmentation tool found inside",e)}_reset(){window.cancelAnimationFrame(this._animationFrameHandle),this._needsRender.clear(),this._animationFrameSet=!1,this._animationFrameHandle=null}};function Za(e){Xa.renderToolGroupSegmentations(e)}const Ja=Za,$a=function(e){const{segmentationId:t,modifiedSlicesToUse:n}=e.detail,{representationData:o,type:i}=wt(t);let a;if(i!==it.Labelmap)throw new Error("onSegmentationDataModified: representationType ".concat(i," not supported yet"));{const e=J.cache.getVolume(o[i].volumeId);if(!e)return void console.warn("segmentation not found in cache");const{imageData:r,vtkOpenGLTexture:s}=e;let l;if(n&&Array.isArray(n))l=n;else{const e=r.getDimensions()[2];l=[...Array(e).keys()]}l.forEach((e=>{s.setUpdatedFrame(e)})),r.modified(),a=bt(t)}a.forEach((e=>{Ja(e)}))},Qa=function(e){const{toolGroupId:t}=e.detail;Ja(t)},er=function(e){const{toolGroupId:t,segmentationRepresentationUID:n}=e.detail;Ja(t)},tr=function(e,t,n){const o=_t(e);if(!o||0===o.length)return;const i=o.map((e=>e.segmentationRepresentationUID));let a=t;if(a){const e=t.filter((e=>!i.includes(e)));if(e.length>0)throw new Error("The following segmentationRepresentationUIDs are not part of the toolGroup: ".concat(JSON.stringify(e)))}else a=i;a.forEach((t=>{!function(e,t,n){const o=Pt(e,t),{type:i}=o;if(i===it.Labelmap)za.removeSegmentationRepresentation(e,t,n);else{if(i!==it.Contour)throw new Error("The representation ".concat(i," is not supported yet"));Ua.removeSegmentationRepresentation(e,t,n)}}(e,t,n)}))},nr=function(e){const t=He.toolGroups.findIndex((t=>t.id===e));t>-1&&(Xa.removeToolGroup(e),tr(e),He.toolGroups.splice(t,1))},or=function(){const e=[...He.toolGroups];for(const t of e)nr(t.id);He.toolGroups=[]};let ir=!1;function ar(){ir||(function(){sr();const e=J.Enums.Events.ELEMENT_ENABLED,t=J.Enums.Events.ELEMENT_DISABLED;J.eventTarget.addEventListener(e,Wi),J.eventTarget.addEventListener(t,Hi)}(),lr(),J.eventTarget.addEventListener(Q.ANNOTATION_MODIFIED,Gi),J.eventTarget.addEventListener(Q.ANNOTATION_SELECTION_CHANGE,qi),J.eventTarget.addEventListener(Q.ANNOTATION_SELECTION_CHANGE,qi),J.eventTarget.addEventListener(Q.SEGMENTATION_MODIFIED,ji),J.eventTarget.addEventListener(Q.SEGMENTATION_DATA_MODIFIED,$a),J.eventTarget.addEventListener(Q.SEGMENTATION_REPRESENTATION_MODIFIED,Qa),J.eventTarget.addEventListener(Q.SEGMENTATION_REPRESENTATION_REMOVED,er),ir=!0)}function rr(){sr(),lr(),or(),We={},He=oe()(Fe);const e=Ke(),t=Et();e.restoreAnnotations({}),t.resetState(),ir=!1}function sr(){const e=J.Enums.Events.ELEMENT_ENABLED,t=J.Enums.Events.ELEMENT_DISABLED;J.eventTarget.removeEventListener(e,Wi),J.eventTarget.removeEventListener(t,Hi)}function lr(){J.eventTarget.removeEventListener(Q.ANNOTATION_MODIFIED,Gi),J.eventTarget.removeEventListener(Q.ANNOTATION_SELECTION_CHANGE,qi),J.eventTarget.removeEventListener(Q.ANNOTATION_SELECTION_CHANGE,qi),J.eventTarget.removeEventListener(Q.SEGMENTATION_MODIFIED,ji),J.eventTarget.removeEventListener(Q.SEGMENTATION_DATA_MODIFIED,$a),J.eventTarget.removeEventListener(Q.SEGMENTATION_REPRESENTATION_MODIFIED,Qa),J.eventTarget.removeEventListener(Q.SEGMENTATION_REPRESENTATION_REMOVED,er)}function dr(e){const t=e.toolName,n=void 0!==He.tools[t];if(!t)throw new Error("No Tool Found for the ToolClass ".concat(e.name));if(n)throw new Error("".concat(t," has already been added globally"));He.tools[t]={toolClass:e}}function cr(e){const t=e.toolName;if(!t)throw new Error("No tool found for: ".concat(e.name));if(void 0===!He.tools[t])throw new Error("".concat(t," cannot be removed because it has not been added"));delete He.tools[t]}function hr(e){const t=Jo(e,Oo(e,[Ge.Active,Ge.Passive]));for(const{tool:n}of t){const t=n.cancel(e);if(t)return t}}function ur(e,t){return e.findIndex((e=>t.renderingEngineId===e.renderingEngineId&&t.viewportId===e.viewportId))}function gr(e,t){return e.some((e=>e.renderingEngineId===t.renderingEngineId&&e.viewportId===t.viewportId))}const vr=class{constructor(e,t,n,o){te(this,"_enabled",void 0),te(this,"_eventName",void 0),te(this,"_eventHandler",void 0),te(this,"_ignoreFiredEvents",void 0),te(this,"_sourceViewports",void 0),te(this,"_targetViewports",void 0),te(this,"_viewportOptions",{}),te(this,"_options",void 0),te(this,"id",void 0),te(this,"_onEvent",(e=>{if(!0===this._ignoreFiredEvents)return;if(!this._targetViewports.length)return;const t=(0,J.getEnabledElement)(e.currentTarget);if(!t)return;const{renderingEngineId:n,viewportId:o}=t;this._sourceViewports.find((e=>e.viewportId===o))&&this.fireEvent({renderingEngineId:n,viewportId:o},e)})),this._enabled=!0,this._eventName=t,this._eventHandler=n,this._ignoreFiredEvents=!1,this._sourceViewports=[],this._targetViewports=[],this._options=o||{},this.id=e}isDisabled(){return!this._enabled||!this._hasSourceElements()}setOptions(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};this._viewportOptions[e]=t}getOptions(e){return this._viewportOptions[e]}add(e){this.addTarget(e),this.addSource(e)}addSource(e){if(gr(this._sourceViewports,e))return;const{renderingEngineId:t,viewportId:n}=e,{element:o}=(0,J.getRenderingEngine)(t).getViewport(n);o.addEventListener(this._eventName,this._onEvent.bind(this)),this._updateDisableHandlers(),this._sourceViewports.push(e)}addTarget(e){gr(this._targetViewports,e)||(this._targetViewports.push(e),this._updateDisableHandlers())}getSourceViewports(){return this._sourceViewports}getTargetViewports(){return this._targetViewports}destroy(){this._sourceViewports.forEach((e=>this.removeSource(e))),this._targetViewports.forEach((e=>this.removeTarget(e)))}remove(e){this.removeTarget(e),this.removeSource(e)}removeSource(e){const t=ur(this._sourceViewports,e);if(-1===t)return;const n=function(e){const t=(0,J.getRenderingEngine)(e.renderingEngineId);if(!t)throw new Error("No RenderingEngine for Id: ".concat(e.renderingEngineId));return t.getViewport(e.viewportId).element}(e);this._sourceViewports.splice(t,1),n.removeEventListener(this._eventName,this._eventHandler),this._updateDisableHandlers()}removeTarget(e){const t=ur(this._targetViewports,e);-1!==t&&(this._targetViewports.splice(t,1),this._updateDisableHandlers())}hasSourceViewport(e,t){return gr(this._sourceViewports,{renderingEngineId:e,viewportId:t})}hasTargetViewport(e,t){return gr(this._targetViewports,{renderingEngineId:e,viewportId:t})}fireEvent(e,t){if(this.isDisabled()||this._ignoreFiredEvents)return;this._ignoreFiredEvents=!0;const n=[];try{for(let o=0;o<this._targetViewports.length;o++){const i=this._targetViewports[o];if(e.viewportId===i.viewportId)continue;const a=this._eventHandler(this,e,i,t,this._options);a instanceof Promise&&n.push(a)}}catch(e){console.warn("Synchronizer, for: ".concat(this._eventName),e)}finally{n.length?Promise.allSettled(n).then((()=>{this._ignoreFiredEvents=!1})):this._ignoreFiredEvents=!1}}_hasSourceElements(){return 0!==this._sourceViewports.length}_updateDisableHandlers(){const e=function(e,t){const n=[],o=e.concat(t);for(let e=0;e<o.length;e++){const t=o[e];n.some((e=>t.renderingEngineId===e.renderingEngineId&&t.viewportId===e.viewportId))||n.push(t)}return n}(this._sourceViewports,this._targetViewports),t=this.remove,n=e=>{t(e.detail.element)};e.forEach((function(e){const t=(0,J.getRenderingEngine)(e.renderingEngineId).getViewport(e.viewportId);if(!t)return;const{element:o}=t;o.removeEventListener(J.Enums.Events.ELEMENT_DISABLED,n),o.addEventListener(J.Enums.Events.ELEMENT_DISABLED,n)}))}},mr=function(e,t,n,o){if(He.synchronizers.some((t=>t.id===e)))throw new Error("Synchronizer with id '".concat(e,"' already exists."));const i=new vr(e,t,n,o);return He.synchronizers.push(i),i},pr=function(){for(;He.synchronizers.length>0;)He.synchronizers.pop().destroy()},fr=function(e){return He.synchronizers.find((t=>t.id===e))},Er=function(){return He.synchronizers},wr=function(e){const t=He.synchronizers.findIndex((t=>t.id===e));t>-1&&(He.synchronizers[t].destroy(),He.synchronizers.splice(t,1))};var Ir=I(485),Cr=I.n(Ir);const _r=Symbol("DefinedCursors"),Tr=new Set(["alias","all-scroll","auto","cell","col-resize","context-menu","copy","crosshair","default","e-resize","ew-resize","grab","grabbing","help","move","ne-resize","nesw-resize","no-drop","none","not-allowed","n-resize","ns-resize","nw-resize","nwse-resize","pointer","progress","row-resize","se-resize","s-resize","sw-resize","text","vertical-text","wait","w-resize","zoom-in","zoom-out"]);class br{constructor(e,t){te(this,"name",void 0),te(this,"fallback",void 0),this.name=e+"",this.fallback=t}getName(){return this.name+""}addFallbackStyleProperty(e){const{fallback:t}=this;return t instanceof br?"".concat(e,", ").concat(t.getStyleProperty()):e+""}getStyleProperty(){return this.addFallbackStyleProperty(this.name)+""}static getDefinedCursor(e){const t=Dr(br,_r);let n=t.get(e);return n instanceof br?n:Tr.has(e)?(n=new br(e),t.set(e,n),n):void 0}static setDefinedCursor(e,t){return t instanceof br&&(Dr(br,_r).set(e,t),!0)}}function Dr(e,t){let n=e[t];return n instanceof Map||(n=new Map,Object.defineProperty(e,t,{value:n})),n}const Sr=Tr.values();var yr=function(e){return e.Default="",e.Highlighted="Highlighted",e.Selected="Selected",e.Locked="Locked",e}(yr||{});const Or=yr;class Mr extends br{constructor(e,t,n,o,i){super(o||Mr.getUniqueInstanceName("image-cursor"),i),te(this,"url",void 0),te(this,"x",void 0),te(this,"y",void 0),this.url=e,this.x=Number(t)||0,this.y=Number(n)||0}getStyleProperty(){const{url:e,x:t,y:n}=this;let o="url('".concat(e,"')");return t>=0&&n>=0&&(t>0||n>0)&&(o+=" ".concat(t," ").concat(n)),this.addFallbackStyleProperty(o)}static getUniqueInstanceName(e){return"".concat(e,"-").concat(J.utilities.getRuntimeId(Mr))}}const xr={iconContent:"",iconSize:16,viewBox:{x:16,y:16},mousePoint:{x:8,y:8},mousePointerGroupString:'\n <path stroke="{{color}}" d="M8 16L8 0"></path>\n <path stroke="{{color}}" d="M16 8L0 8"></path>\n '},Nr={x:127,y:60},kr='\n<rect fill="{{color}}" x="80.19" y="25.03" width="47.14" height="15.85"/>\n',Rr='\n<rect fill="{{color}}" x="80.19" y="25.03" width="47.14" height="15.85"/>\n<rect fill="{{color}}" x="95.84" y="9.38" width="15.85" height="47.14"/>\n',Pr='<path fill="{{color}}" d="M82.89,10a12.09,12.09,0,0,0-16.8-2.5l-27.5,20.4-8.5-6.3a2.93,2.93,0,0,1-1.1-3,14.66,14.66,0,0,0,.1-6.6,14.08,14.08,0,1,0-6.5,15.2,2.87,2.87,0,0,1,3.2.2l8.2,6.1-8.2,6.1a2.87,2.87,0,0,1-3.2.2,14.16,14.16,0,1,0,6.7,14.4,14,14,0,0,0-.3-5.8,2.93,2.93,0,0,1,1.1-3l8.5-6.3,27.5,20.4A11.91,11.91,0,0,0,82.89,57l-31.7-23.5ZM15.29,21a5.9,5.9,0,1,1,5.9-5.9A5.91,5.91,0,0,1,15.29,21Zm0,36.8a5.9,5.9,0,1,1,5.9-5.9A5.91,5.91,0,0,1,15.29,57.77Zm28.3-21.5a2.8,2.8,0,1,1,2.8-2.8A2.8,2.8,0,0,1,43.59,36.27Z" transform="translate(-1.17 -0.96)"/>',Lr='<path fill="{{color}}" d="M8.86,2.25V66.08H72.69V2.25H8.86ZM65.28,58.67h-49v-49h49v49Z" transform="translate(-8.86 -2.25)"/>',Ar='<path fill="{{color}}" d="M40.77,2.25A31.92,31.92,0,1,0,72.69,34.16,31.92,31.92,0,0,0,40.77,2.25Zm0,57.63A25.71,25.71,0,1,1,66.48,34.16,25.71,25.71,0,0,1,40.77,59.87Z" transform="translate(-8.86 -2.25)"/>',Ur={Angle:Vr(xr,{iconContent:'<path fill="{{color}}" d="M1203 544q0 13-10 23l-393 393 393 393q10 10 10 23t-10 23l-50\n 50q-10 10-23 10t-23-10l-466-466q-10-10-10-23t10-23l466-466q10-10 23-10t23\n 10l50 50q10 10 10 23z" />',viewBox:{x:1792,y:1792}}),ArrowAnnotate:Vr(xr,{iconContent:'<g id="arrowAnnotate-group" fill="none" stroke-width="1" stroke="{{color}}" stroke-linecap="round" stroke-linejoin="round">\n <path id="arrowAnnotate-arrow" d="M23,7 l-15,15 M7,17 l0,6 6,0" stroke-width="2" />\n </g>',viewBox:{x:24,y:24}}),Bidirectional:Vr(xr,{iconContent:'<g fill="{{color}}" stroke-width="3" stroke="{{color}}">\n <path d="M27.63 3.21L3.12 28.81"></path>\n <path d="M27.63 15.75L15.27 4.43"></path>\n <path d="M16.5 4.28C16.5 4.96 15.95 5.51 15.27 5.51C14.59 5.51 14.03 4.96 14.03 4.28C14.03 3.59 14.59 3.04 15.27 3.04C15.95 3.04 16.5 3.59 16.5 4.28Z" ></path>\n <path d="M28.87 3.19C28.87 3.87 28.31 4.43 27.63 4.43C26.95 4.43 26.4 3.87 26.4 3.19C26.4 2.51 26.95 1.95 27.63 1.95C28.31 1.95 28.87 2.51 28.87 3.19Z"></path>\n <path d="M28.87 15.75C28.87 16.43 28.31 16.99 27.63 16.99C26.95 16.99 26.4 16.43 26.4 15.75C26.4 15.07 26.95 14.51 27.63 14.51C28.31 14.51 28.87 15.07 28.87 15.75Z"></path>\n <path d="M4.73 28.44C4.73 29.12 4.17 29.68 3.49 29.68C2.81 29.68 2.25 29.12 2.25 28.44C2.25 27.76 2.81 27.2 3.49 27.2C4.17 27.2 4.73 27.76 4.73 28.44Z"></path>\n </g>',viewBox:{x:48,y:48}}),CobbAngle:Vr(xr,{iconContent:'<g stroke="{{color}}" stroke-width="3">\n <path d="M28.59 2.34L3.82 12.32"></path>\n <path d="M28.59 29.66L3.82 19.68"></path>\n <path stroke-dasharray="2" fill-opacity="0" d="M12.37\n 23.06C12.67 22.36 12.85 21.93 12.92 21.76C14.6 17.8 14.68 13.35 13.15\n 9.33C13.11 9.24 13.02 9 12.88 8.63">\n </path>\n </g>',viewBox:{x:32,y:32}}),CircleROI:Vr(xr,{iconContent:'<circle stroke="{{color}}" fill="none" stroke-width="3" cx="16" cy="16" r="14" />',viewBox:{x:32,y:32}}),EllipticalROI:Vr(xr,{iconContent:'<path stroke="{{color}}" fill="none" stroke-width="3" d="M30.74 15.76C30.74 20.99 24.14 25.23 16\n 25.23C7.86 25.23 1.26 20.99 1.26 15.76C1.26 10.54 7.86 6.3 16 6.3C24.14\n 6.3 30.74 10.54 30.74 15.76Z" />',viewBox:{x:32,y:32}}),FreehandROI:Vr(xr,{iconContent:'<g fill="{{color}}" stroke="{{color}}" stroke-width="2">\n <ellipse ry="1" rx="1" id="svg_3" cy="4.240343" cx="14.306499"/>\n <line id="svg_4" y2="3.58462" x2="12.242186" y1="3.997482" x1="13.432202"/>\n <line id="svg_5" y2="3.268901" x2="10.857882" y1="3.608906" x1="12.387902"/>\n <line id="svg_6" y2="3.147471" x2="9.740724" y1="3.293187" x1="10.955026"/>\n <line id="svg_7" y2="3.147471" x2="8.089274" y1="3.196043" x1="9.983585"/>\n <line id="svg_8" y2="3.268901" x2="6.874972" y1="3.123185" x1="8.307848"/>\n <line id="svg_9" y2="3.657478" x2="5.587812" y1="3.220329" x1="7.020688"/>\n <line id="svg_10" y2="4.046054" x2="4.737801" y1="3.560334" x1="5.854959"/>\n <line id="svg_11" y2="4.337487" x2="4.300652" y1="3.997482" x1="4.834945"/>\n <line id="svg_12" y2="4.726063" x2="3.88779" y1="4.191771" x1="4.470655"/>\n <line id="svg_15" y2="5.3575" x2="3.377783" y1="4.604633" x1="3.960648"/>\n <line id="svg_16" y2="6.183226" x2="2.916348" y1="5.138926" x1="3.547785"/>\n <line id="svg_17" y2="6.960379" x2="2.770632" y1="5.867507" x1="3.037779"/>\n <line id="svg_18" y2="7.713246" x2="2.673488" y1="6.741804" x1="2.819204"/>\n <line id="svg_19" y2="8.684687" x2="2.697774" y1="7.616102" x1="2.673488"/>\n <line id="svg_20" y2="9.753273" x2="2.892062" y1="8.611829" x1="2.697774"/>\n <line id="svg_21" y2="10.724714" x2="3.134923" y1="9.534698" x1="2.84349"/>\n <line id="svg_23" y2="11.647583" x2="3.596357" y1="10.578998" x1="3.086351"/>\n <line id="svg_25" y2="12.521881" x2="4.276366" y1="11.501867" x1="3.499213"/>\n <line id="svg_26" y2="13.930471" x2="5.830673" y1="12.376165" x1="4.13065"/>\n <line id="svg_28" y2="14.707624" x2="7.263549" y1="13.881899" x1="5.733528"/>\n <line id="svg_29" y2="15.339061" x2="8.963571" y1="14.61048" x1="7.06926"/>\n <line id="svg_30" y2="15.581921" x2="10.882168" y1="15.314775" x1="8.817855"/>\n <line id="svg_31" y2="15.460491" x2="12.023612" y1="15.581921" x1="10.785024"/>\n <line id="svg_33" y2="15.120487" x2="13.092197" y1="15.484777" x1="11.877895"/>\n <line id="svg_34" y2="14.586194" x2="13.86935" y1="15.217631" x1="12.897909"/>\n <line id="svg_35" y2="13.833327" x2="14.597931" y1="14.756196" x1="13.699348"/>\n <line id="svg_37" y2="12.716169" x2="15.180796" y1="13.881899" x1="14.549359"/>\n <line id="svg_39" y2="11.429009" x2="15.520801" y1="12.813313" x1="15.15651"/>\n <ellipse ry="1" rx="1" id="svg_40" cy="10.967574" cx="15.520801"/>\n </g>',viewBox:{x:18,y:18}}),FreehandROISculptor:Vr(xr,{iconContent:'<g id="icon-freehand-sculpt" fill="none" stroke-width="1.5" stroke="{{color}}" stroke-linecap="round" stroke-linejoin="round">\n <line id="svg_1" y2="2.559367" x2="10.184807" y1="4.467781" x1="8.81711"/>\n <line id="svg_4" y2="1.493836" x2="11.727442" y1="2.766112" x1="10.089386"/>\n <line id="svg_7" y2="1.080346" x2="13.047428" y1="1.748291" x1="11.345759"/>\n <line id="svg_8" y2="1.000829" x2="14.351511" y1="1.112153" x1="12.77707"/>\n <line id="svg_9" y2="1.350705" x2="15.242104" y1="0.905408" x1="13.969828"/>\n <line id="svg_10" y2="2.098167" x2="15.862339" y1="1.14396" x1="14.955842"/>\n <line id="svg_11" y2="3.195505" x2="16.41896" y1="1.939133" x1="15.766918"/>\n <line id="svg_12" y2="4.292843" x2="16.530284" y1="2.925147" x1="16.387153"/>\n <line id="svg_16" y2="5.644637" x2="16.196311" y1="3.831643" x1="16.593898"/>\n <line id="svg_18" y2="7.266789" x2="15.623787" y1="5.19934" x1="16.275829"/>\n <line id="svg_19" y2="10.813258" x2="14.526449" y1="6.726071" x1="15.766918"/>\n <line id="svg_20" y2="5.056209" x2="8.085552" y1="4.181519" x1="8.976145"/>\n <line id="svg_23" y2="5.326568" x2="7.481221" y1="4.78585" x1="8.403621"/>\n <line id="svg_24" y2="5.565119" x2="6.749662" y1="5.294761" x1="7.624352"/>\n <line id="svg_25" y2="5.994512" x2="5.429675" y1="5.533312" x1="6.956407"/>\n <line id="svg_27" y2="6.551133" x2="4.284627" y1="5.962706" x1="5.572807"/>\n <line id="svg_28" y2="7.584858" x2="3.044158" y1="6.392099" x1="4.427758"/>\n <line id="svg_29" y2="8.84123" x2="2.185372" y1="7.489437" x1="3.219096"/>\n <line id="svg_31" y2="10.606513" x2="1.644654" y1="8.602678" x1="2.280792"/>\n <line id="svg_32" y2="13.214679" x2="1.48562" y1="10.352058" x1="1.724171"/>\n <line id="svg_33" y2="14.375631" x2="1.676461" y1="12.992031" x1="1.453813"/>\n <line id="svg_34" y2="15.298031" x2="2.264889" y1="14.152983" x1="1.517427"/>\n <line id="svg_35" y2="16.172721" x2="3.521261" y1="14.948155" x1="1.915013"/>\n <line id="svg_36" y2="16.824762" x2="5.207027" y1="15.997783" x1="3.28271"/>\n <line id="svg_38" y2="17.063314" x2="7.035924" y1="16.745245" x1="4.968475"/>\n <line id="svg_39" y2="16.888376" x2="9.278311" y1="17.047411" x1="6.733758"/>\n <line id="svg_40" y2="16.284045" x2="10.661911" y1="16.983797" x1="8.992048"/>\n <line id="svg_41" y2="15.313934" x2="11.647925" y1="16.395369" x1="10.455166"/>\n <line id="svg_44" y2="13.898527" x2="12.82478" y1="15.425259" x1="11.504794"/>\n <line id="svg_45" y2="12.037824" x2="14.144766" y1="14.312017" x1="12.522614"/>\n <line id="svg_47" y2="10.59061" x2="14.605966" y1="12.228665" x1="13.953925"/>\n <ellipse ry="1" rx="1" id="svg_48" cy="3.982726" cx="13.460918"/>\n </g>',viewBox:{x:18,y:18}}),Length:Vr(xr,{iconContent:'<g id="length-group" fill="none" stroke-width="1" stroke="{{color}}" stroke-linecap="round" stroke-linejoin="round">\n <path id="length-dashes" d="m22.5,6 -16.5,16.5" stroke-width="3" stroke-dasharray="0.6666,5" />\n </g>',viewBox:{x:24,y:24}}),Probe:Vr(xr,{iconContent:'<path fill="{{color}}" d="M1152 896q0 106-75 181t-181 75-181-75-75-181 75-181 181-75 181 75\n 75 181zm-256-544q-148 0-273 73t-198 198-73 273 73 273 198 198 273 73 273-73\n 198-198 73-273-73-273-198-198-273-73zm768 544q0 209-103 385.5t-279.5\n 279.5-385.5 103-385.5-103-279.5-279.5-103-385.5 103-385.5 279.5-279.5\n 385.5-103 385.5 103 279.5 279.5 103 385.5z" />',viewBox:{x:1792,y:1792}}),RectangleROI:Vr(xr,{iconContent:'<path fill="{{color}}" d="M1312 256h-832q-66 0-113 47t-47 113v832q0 66 47\n 113t113 47h832q66 0 113-47t47-113v-832q0-66-47-113t-113-47zm288 160v832q0\n 119-84.5 203.5t-203.5 84.5h-832q-119 0-203.5-84.5t-84.5-203.5v-832q0-119\n 84.5-203.5t203.5-84.5h832q119 0 203.5 84.5t84.5 203.5z" />',viewBox:{x:1792,y:1792}}),TextMarker:Vr(xr,{iconContent:'<path fill="{{color}}" d="M789 559l-170 450q33 0 136.5 2t160.5 2q19 0\n 57-2-87-253-184-452zm-725 1105l2-79q23-7 56-12.5t57-10.5 49.5-14.5 44.5-29\n 31-50.5l237-616 280-724h128q8 14 11 21l205 480q33 78 106 257.5t114 274.5q15\n 34 58 144.5t72 168.5q20 45 35 57 19 15 88 29.5t84 20.5q6 38 6 57 0 5-.5\n 13.5t-.5 12.5q-63 0-190-8t-191-8q-76 0-215 7t-178 8q0-43 4-78l131-28q1 0\n 12.5-2.5t15.5-3.5 14.5-4.5 15-6.5 11-8 9-11\n 2.5-14q0-16-31-96.5t-72-177.5-42-100l-450-2q-26 58-76.5 195.5t-50.5 162.5q0\n 22 14 37.5t43.5 24.5 48.5 13.5 57 8.5 41 4q1 19 1 58 0 9-2 27-58\n 0-174.5-10t-174.5-10q-8 0-26.5 4t-21.5 4q-80 14-188 14z" />',viewBox:{x:1792,y:1792}}),Crosshairs:Vr(xr,{iconContent:'<path fill="{{color}}" d="M1325 1024h-109q-26 0-45-19t-19-45v-128q0-26\n 19-45t45-19h109q-32-108-112.5-188.5t-188.5-112.5v109q0 26-19 45t-45\n 19h-128q-26 0-45-19t-19-45v-109q-108 32-188.5 112.5t-112.5 188.5h109q26\n 0 45 19t19 45v128q0 26-19 45t-45 19h-109q32 108 112.5 188.5t188.5\n 112.5v-109q0-26 19-45t45-19h128q26 0 45 19t19 45v109q108-32\n 188.5-112.5t112.5-188.5zm339-192v128q0 26-19 45t-45 19h-143q-37 161-154.5\n 278.5t-278.5 154.5v143q0 26-19 45t-45 19h-128q-26\n 0-45-19t-19-45v-143q-161-37-278.5-154.5t-154.5-278.5h-143q-26\n 0-45-19t-19-45v-128q0-26 19-45t45-19h143q37-161\n 154.5-278.5t278.5-154.5v-143q0-26 19-45t45-19h128q26 0 45 19t19 45v143q161\n 37 278.5 154.5t154.5 278.5h143q26 0 45 19t19 45z" />',viewBox:{x:1792,y:1792}}),Eraser:Vr(xr,{iconContent:'<path transform="translate(0,1792) scale(1,-1)" fill="{{color}}" d="M960 1408l336-384h-768l-336 384h768zm1013-1077q15\n 34 9.5 71.5t-30.5 65.5l-896 1024q-38 44-96 44h-768q-38\n 0-69.5-20.5t-47.5-54.5q-15-34-9.5-71.5t30.5-65.5l896-1024q38-44 96-44h768q38\n 0 69.5 20.5t47.5 54.5z" />',viewBox:{x:2048,y:1792}}),Magnify:Vr(xr,{iconContent:'<path fill="{{color}}" d="M508.5 481.6l-129-129c-2.3-2.3-5.3-3.5-8.5-3.5h-10.3C395\n 312 416 262.5 416 208 416 93.1 322.9 0 208 0S0 93.1 0 208s93.1 208 208 208c54.5\n 0 104-21 141.1-55.2V371c0 3.2 1.3 6.2 3.5 8.5l129 129c4.7 4.7 12.3 4.7 17\n 0l9.9-9.9c4.7-4.7 4.7-12.3 0-17zM208 384c-97.3 0-176-78.7-176-176S110.7 32 208\n 32s176 78.7 176 176-78.7 176-176 176z" />',viewBox:{x:512,y:512}}),Pan:Vr(xr,{iconContent:'<path fill="{{color}}" d="M1411 541l-355 355 355 355 144-144q29-31 70-14 39 17\n 39 59v448q0 26-19 45t-45 19h-448q-42 0-59-40-17-39 14-69l144-144-355-355-355\n 355 144 144q31 30 14 69-17 40-59 40h-448q-26 0-45-19t-19-45v-448q0-42 40-59\n 39-17 69 14l144 144 355-355-355-355-144 144q-19 19-45 19-12\n 0-24-5-40-17-40-59v-448q0-26 19-45t45-19h448q42 0 59 40 17 39-14 69l-144\n 144 355 355 355-355-144-144q-31-30-14-69 17-40 59-40h448q26 0 45 19t19\n 45v448q0 42-39 59-13 5-25 5-26 0-45-19z" />',viewBox:{x:1792,y:1792}}),Rotate:Vr(xr,{iconContent:'<path fill="{{color}}" d="M1664 256v448q0 26-19 45t-45 19h-448q-42 0-59-40-17-39\n 14-69l138-138q-148-137-349-137-104 0-198.5 40.5t-163.5 109.5-109.5\n 163.5-40.5 198.5 40.5 198.5 109.5 163.5 163.5 109.5 198.5 40.5q119 0\n 225-52t179-147q7-10 23-12 15 0 25 9l137 138q9 8 9.5 20.5t-7.5 22.5q-109\n 132-264 204.5t-327 72.5q-156 0-298-61t-245-164-164-245-61-298 61-298\n 164-245 245-164 298-61q147 0 284.5 55.5t244.5 156.5l130-129q29-31 70-14\n 39 17 39 59z" />',viewBox:{x:1792,y:1792}}),StackScroll:Vr(xr,{iconContent:'<path fill="{{color}}" d="M24 21v2c0 0.547-0.453 1-1 1h-22c-0.547\n 0-1-0.453-1-1v-2c0-0.547 0.453-1 1-1h22c0.547 0 1 0.453 1 1zM24 13v2c0\n 0.547-0.453 1-1 1h-22c-0.547 0-1-0.453-1-1v-2c0-0.547 0.453-1 1-1h22c0.547\n 0 1 0.453 1 1zM24 5v2c0 0.547-0.453 1-1 1h-22c-0.547\n 0-1-0.453-1-1v-2c0-0.547 0.453-1 1-1h22c0.547 0 1 0.453 1 1z" />',viewBox:{x:24,y:28}}),WindowLevelRegion:Vr(xr,{iconContent:'<path fill="{{color}}" d="M1664 416v960q0 119-84.5 203.5t-203.5 84.5h-960q-119\n 0-203.5-84.5t-84.5-203.5v-960q0-119 84.5-203.5t203.5-84.5h960q119 0 203.5\n 84.5t84.5 203.5z" />',viewBox:{x:1792,y:1792}}),WindowLevel:Vr(xr,{iconContent:'\n <path fill="{{color}}" d="M14.5,3.5 a1 1 0 0 1 -11,11 Z" stroke="none" opacity="0.8" />\n <circle cx="9" cy="9" r="8" fill="none" stroke-width="2" stroke="{{color}}" />',viewBox:{x:18,y:18}}),Zoom:Vr(xr,{iconContent:'\n <path fill="{{color}}" d="M508.5 481.6l-129-129c-2.3-2.3-5.3-3.5-8.5-3.5h-10.3C395\n 312 416 262.5 416 208 416 93.1 322.9 0 208 0S0 93.1 0 208s93.1 208 208 208c54.5\n 0 104-21 141.1-55.2V371c0 3.2 1.3 6.2 3.5 8.5l129 129c4.7 4.7 12.3 4.7 17\n 0l9.9-9.9c4.7-4.7 4.7-12.3 0-17zM208 384c-97.3 0-176-78.7-176-176S110.7 32 208\n 32s176 78.7 176 176-78.7 176-176 176z" />\n <path fill="{{color}}" transform="scale(0.22,0.22) translate(1400,0)" d="M1216\n 320q0 26-19 45t-45 19h-128v1024h128q26 0 45 19t19 45-19 45l-256 256q-19\n 19-45 19t-45-19l-256-256q-19-19-19-45t19-45 45-19h128v-1024h-128q-26\n 0-45-19t-19-45 19-45l256-256q19-19 45-19t45 19l256 256q19 19 19 45z" />',viewBox:{x:640,y:512}}),SegmentationFreeHandEraseInside:Vr(xr,{iconContent:"".concat(Pr," ").concat(kr),viewBox:Nr}),SegmentationFreeHandFillInside:Vr(xr,{iconContent:"".concat(Pr," ").concat(Rr),viewBox:Nr}),SegmentationFreeHandEraseOutside:Vr(xr,{iconContent:"".concat(Pr," ").concat(kr),viewBox:Nr}),SegmentationFreeHandFillOutside:Vr(xr,{iconContent:"".concat(Pr," ").concat(Rr),viewBox:Nr}),SegmentationRectangleEraseInside:Vr(xr,{iconContent:"".concat(Lr," ").concat(kr),viewBox:Nr}),RectangleScissor:Vr(xr,{iconContent:"".concat(Lr," ").concat(Rr),viewBox:Nr}),"RectangleScissor.FILL_INSIDE":Vr(xr,{iconContent:"".concat(Lr," ").concat(Rr),viewBox:Nr}),"RectangleScissor.FILL_OUTSIDE":Vr(xr,{iconContent:"".concat(Lr," ").concat(Rr),viewBox:Nr}),"RectangleScissor.ERASE_OUTSIDE":Vr(xr,{iconContent:"".concat(Lr," ").concat(kr),viewBox:Nr}),"RectangleScissor.ERASE_INSIDE":Vr(xr,{iconContent:"".concat(Lr," ").concat(kr),viewBox:Nr}),CircleScissor:Vr(xr,{iconContent:"".concat(Ar," ").concat(Rr),viewBox:Nr}),"CircleScissor.FILL_INSIDE":Vr(xr,{iconContent:"".concat(Ar," ").concat(Rr),viewBox:Nr}),"CircleScissor.ERASE_OUTSIDE":Vr(xr,{iconContent:"".concat(Ar," ").concat(kr),viewBox:Nr}),"CircleScissor.FILL_OUTSIDE":Vr(xr,{iconContent:"".concat(Ar," ").concat(Rr),viewBox:Nr})};function Vr(e,t){return Object.assign(Object.create(e),t)}function Wr(e,t,n){Ur[e]=Vr(xr,{iconContent:t,viewBox:n})}const Fr=Object.keys(Ur),Hr=new class{constructor(){te(this,"config",void 0),this._initializeConfig({color:"rgb(255, 255, 0)",colorHighlighted:"rgb(0, 255, 0)",colorSelected:"rgb(0, 220, 0)",colorLocked:"rgb(255, 255, 0)",lineWidth:"1",lineDash:"",shadow:!0,textBoxVisibility:!0,textBoxFontFamily:"Helvetica Neue, Helvetica, Arial, sans-serif",textBoxFontSize:"14px",textBoxColor:"rgb(255, 255, 0)",textBoxColorHighlighted:"rgb(0, 255, 0)",textBoxColorSelected:"rgb(0, 255, 0)",textBoxColorLocked:"rgb(255, 255, 0)",textBoxBackground:"",textBoxLinkLineWidth:"1",textBoxLinkLineDash:"2,3",textBoxShadow:!0})}getAnnotationToolStyles(e){return this.config.annotations&&this.config.annotations[e]}getViewportToolStyles(e){return this.config.viewports&&this.config.viewports[e]}getToolGroupToolStyles(e){return this.config.toolGroups&&this.config.toolGroups[e]}getDefaultToolStyles(){return this.config.default}setAnnotationStyles(e,t){let n=this.config.annotations;n||(this.config={...this.config,annotations:{}},n=this.config.annotations),n[e]=t}setViewportToolStyles(e,t){let n=this.config.viewports;n||(this.config={...this.config,viewports:{}},n=this.config.viewports),n[e]=t}setToolGroupToolStyles(e,t){let n=this.config.toolGroups;n||(this.config={...this.config,toolGroups:{}},n=this.config.toolGroups),n[e]=t}setDefaultToolStyles(e){this.config.default=e}getStyleProperty(e,t){const{annotationUID:n,viewportId:o,toolGroupId:i,toolName:a}=t;return this._getToolStyle(e,n,o,i,a)}_getToolStyle(e,t,n,o,i){if(t){const n=this.getAnnotationToolStyles(t);if(n&&void 0!==n[e])return n[e]}if(n){const t=this.getViewportToolStyles(n);if(t){if(t[i]&&void 0!==t[i][e])return t[i][e];if(t.global&&void 0!==t.global[e])return t.global[e]}}if(o){const t=this.getToolGroupToolStyles(o);if(t){if(t[i]&&void 0!==t[i][e])return t[i][e];if(t.global&&void 0!==t.global[e])return t.global[e]}}const a=this.getDefaultToolStyles();return a[i]&&void 0!==a[i][e]?a[i][e]:a.global&&void 0!==a.global[e]?a.global[e]:void 0}_initializeConfig(e){const t={};for(const n in e)t[n]=e[n];this.config={default:{global:t}}}};function Br(e,t,n,o){const i=function(e,t,n){const o=["".concat(e)];return t&&o.push("".concat(o[0]).concat(t)),n&&o.push("".concat(o[o.length-1]).concat(n)),o}(e,n,o);for(let e=i.length-1;e>=0;--e){const n=Hr.getStyleProperty(i[e],t);if(void 0!==n)return n}}const Gr=Or.Highlighted,qr=Ge.Active;class jr extends Mr{constructor(e,t,n,o,i){super(e,t,n,o,i)}static getDefinedCursor(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=arguments.length>2?arguments[2]:void 0;n||(n=Br("color",{},Gr,qr));const o=function(e,t,n){return"".concat(t?"pointer":"cursor",":").concat(e,"/").concat(n)}(e,t,n);let i=super.getDefinedCursor(o);if(!i){const a=function(e){return Ur[e]}(e);a&&(i=function(e,t,n,o,i){const{x:a,y:r}=e.mousePoint;return new jr(function(e,t,n){return URL.createObjectURL(function(e,t,n){const o=(t?Yr:Kr)(e,n);return new Blob([o],{type:"image/svg+xml"})}(e,t,n))}(e,n,{color:o}),a,r,t,i)}(a,o,t,n,super.getDefinedCursor("default")),super.setDefinedCursor(o,i))}return i}}function zr(e,t){const n=Object(t),o=Object.prototype.hasOwnProperty.bind(n);return(e+"").replace(/\{\{(\w+)\}\}/g,((e,t)=>o(t)?n[t]+"":""))}function Kr(e,t){const{iconContent:n,iconSize:o,viewBox:i}=e;return zr('\n <svg data-icon="cursor" role="img" xmlns="http://www.w3.org/2000/svg"\n width="'.concat(o,'" height="').concat(o,'" viewBox="0 0\n ').concat(i.x," ").concat(i.y,'">\n ').concat(n,"\n </svg>"),t)}function Yr(e,t){const{iconContent:n,iconSize:o,viewBox:i,mousePointerGroupString:a}=e,r=o/Math.max(i.x,i.y,1),s=16+o;return zr('\n <svg data-icon="cursor" role="img" xmlns="http://www.w3.org/2000/svg"\n width="'.concat(s,'" height="').concat(s,'" viewBox="0 0 ').concat(s," ").concat(s,'">\n <g>').concat(a,'</g>\n <g transform="translate(16, 16) scale(').concat(r,')">').concat(n,"</g>\n </svg>"),t)}const Xr=Symbol("ElementCursorsMap");function Zr(e,t){es(e)[0]=t,Jr(e,t)}function Jr(e,t){const n=es(e);n[1]=n[0],n[0]=t,e.style.cursor=(t instanceof br?t:br.getDefinedCursor("auto")).getStyleProperty()}function $r(e){Jr(e,es(e)[1])}function Qr(e){Jr(e,br.getDefinedCursor("none"))}function es(e){let t=es[Xr];t instanceof WeakMap||(t=new WeakMap,Object.defineProperty(es,Xr,{value:t}));let n=t.get(e);return n||(n=[null,null],t.set(e,n)),n}const{Active:ts,Passive:ns,Enabled:os,Disabled:is}=Ge;class as{constructor(e){te(this,"id",void 0),te(this,"viewportsInfo",[]),te(this,"toolOptions",{}),te(this,"_toolInstances",{}),this.id=e}getViewportIds(){return this.viewportsInfo.map((e=>{let{viewportId:t}=e;return t}))}getViewportsInfo(){return this.viewportsInfo.slice()}getToolInstance(e){const t=this._toolInstances[e];if(t)return t;console.warn("'".concat(e,"' is not registered with this toolGroup (").concat(this.id,")."))}addTool(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const n=He.tools[e],o=void 0!==e&&""!==e,i=this.toolOptions[e];if(!o)return void console.warn("Tool with configuration did not produce a toolName: ",t);if(!n)return void console.warn("'".concat(e,"' is not registered with the library. You need to use cornerstoneTools.addTool to register it."));if(i)return void console.warn("'".concat(e,"' is already registered for ToolGroup ").concat(this.id,"."));const{toolClass:a}=n,r=new a({name:e,toolGroupId:this.id,configuration:t});this._toolInstances[e]=r}addToolInstance(e,t){var n;let o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},i=null===(n=He.tools[e])||void 0===n?void 0:n.toolClass;if(!i){const n=He.tools[t].toolClass;class o extends n{}o.toolName=e,i=o,He.tools[e]={toolClass:o}}this.addTool(i.toolName,o)}addViewport(e,t){const n=(0,J.getRenderingEngines)();if(!t&&n.length>1)throw new Error("You must specify a renderingEngineId when there are multiple rendering engines.");const o=t||n[0].id;this.viewportsInfo.some((t=>{let{viewportId:n}=t;return n===e}))||this.viewportsInfo.push({viewportId:e,renderingEngineId:o});const i=this.getActivePrimaryMouseButtonTool();J.Settings.getRuntimeSettings().get("useCursors")&&this.setViewportsCursorByToolName(i)}removeViewports(e,t){const n=[];if(this.viewportsInfo.forEach(((o,i)=>{let a=!1;o.renderingEngineId===e&&(a=!0,t&&o.viewportId!==t&&(a=!1)),a&&n.push(i)})),n.length)for(let e=n.length-1;e>=0;e--)this.viewportsInfo.splice(n[e],1)}setActiveStrategy(e,t){const n=this._toolInstances[e];void 0!==n?n.setActiveStrategy(t):console.warn("Tool ".concat(e," not added to toolGroup, can't set tool configuration."))}setToolMode(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};e?t!==Ge.Active?t!==Ge.Passive?t!==Ge.Enabled?t!==Ge.Disabled?console.warn("setToolMode: mode must be defined"):this.setToolDisabled(e):this.setToolEnabled(e):this.setToolPassive(e):this.setToolActive(e,n):console.warn("setToolMode: toolName must be defined")}setToolActive(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const n=this._toolInstances[e];if(void 0===n)return void console.warn("Tool ".concat(e," not added to toolGroup, can't set tool mode."));if(!n)return void console.warn("'".concat(e,"' instance ").concat(n," is not registered with this toolGroup, can't set tool mode."));const o={bindings:[...this.toolOptions[e]?this.toolOptions[e].bindings:[],...t.bindings?t.bindings:[]].reduce(((e,t)=>{const n=void 0!==t.numTouchPoints,o=void 0!==t.mouseButton;return e.some((e=>{return o=t,(n=e).mouseButton===o.mouseButton&&n.modifierKey===o.modifierKey;var n,o}))||!n&&!o||e.push(t),e}),[]),mode:ts};this.toolOptions[e]=o,this._toolInstances[e].mode=ts;const i=J.Settings.getRuntimeSettings().get("useCursors");if(this._hasMousePrimaryButtonBinding(t)&&i)this.setViewportsCursorByToolName(e);else if(!this.getActivePrimaryMouseButtonTool()&&i){const e=br.getDefinedCursor("default");this._setCursorForViewports(e)}"function"==typeof n.onSetToolActive&&n.onSetToolActive(),this._renderViewports();const a={toolGroupId:this.id,toolName:e,toolBindingsOptions:t};(0,J.triggerEvent)(J.eventTarget,Q.TOOL_ACTIVATED,a),this._triggerToolModeChangedEvent(e,ts,t)}setToolPassive(e){const t=this._toolInstances[e];if(void 0===t)return void console.warn("Tool ".concat(e," not added to toolGroup, can't set tool mode."));const n=this.getToolOptions(e),o=Object.assign({bindings:n?n.bindings:[]},n,{mode:ns}),i=this.getDefaultMousePrimary();o.bindings=o.bindings.filter((e=>e.mouseButton!==i||e.modifierKey));let a=ns;0!==o.bindings.length&&(a=ts,o.mode=a),this.toolOptions[e]=o,t.mode=a,"function"==typeof t.onSetToolPassive&&t.onSetToolPassive(),this._renderViewports(),this._triggerToolModeChangedEvent(e,ns)}setToolEnabled(e){const t=this._toolInstances[e];if(void 0===t)return void console.warn("Tool ".concat(e," not added to toolGroup, can't set tool mode."));const n={bindings:[],mode:os};this.toolOptions[e]=n,t.mode=os,"function"==typeof t.onSetToolEnabled&&t.onSetToolEnabled(),this._renderViewports(),this._triggerToolModeChangedEvent(e,os)}setToolDisabled(e){const t=this._toolInstances[e];if(void 0===t)return void console.warn("Tool ".concat(e," not added to toolGroup, can't set tool mode."));const n={bindings:[],mode:is};this.toolOptions[e]=n,t.mode=is,"function"==typeof t.onSetToolDisabled&&t.onSetToolDisabled(),this._renderViewports(),this._triggerToolModeChangedEvent(e,is)}getToolOptions(e){const t=this.toolOptions[e];if(void 0!==t)return t}getActivePrimaryMouseButtonTool(){return Object.keys(this.toolOptions).find((e=>{const t=this.toolOptions[e];return t.mode===ts&&this._hasMousePrimaryButtonBinding(t)}))}setViewportsCursorByToolName(e,t){const n=this._getCursor(e,t);this._setCursorForViewports(n)}_getCursor(e,t){let n,o;return t&&(n="".concat(e,".").concat(t),o=jr.getDefinedCursor(n,!0),o)?o:(n="".concat(e),o=jr.getDefinedCursor(n,!0),o||(n=e,o=jr.getDefinedCursor(n,!0),o||br.getDefinedCursor("default")))}_setCursorForViewports(e){this.viewportsInfo.forEach((t=>{let{renderingEngineId:n,viewportId:o}=t;const i=(0,J.getEnabledElementByIds)(o,n);if(!i)return;const{viewport:a}=i;Zr(a.element,e)}))}setToolConfiguration(e,t,n){if(void 0===this._toolInstances[e])return console.warn("Tool ".concat(e," not present, can't set tool configuration.")),!1;let o;return o=n?t:Object.assign(this._toolInstances[e].configuration,t),this._toolInstances[e].configuration=o,this._renderViewports(),!0}getDefaultMousePrimary(){return Qo.Primary}getToolConfiguration(e,t){if(void 0===this._toolInstances[e])return void console.warn("Tool ".concat(e," not present, can't set tool configuration."));const n=Cr()(this._toolInstances[e].configuration,t);return oe()(n)}clone(e){var t;let n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,o=zi(e);return o?(console.warn("ToolGroup ".concat(e," already exists")),o):(o=rs(e),n=null!==(t=n)&&void 0!==t?t:()=>!0,Object.keys(this._toolInstances).filter(n).forEach((e=>{var t;const n=this._toolInstances[e],i=this.toolOptions[e],a=n.mode;o.addTool(e),o.setToolMode(e,a,{bindings:null!==(t=i.bindings)&&void 0!==t?t:[]})})),o)}_hasMousePrimaryButtonBinding(e){var t;const n=this.getDefaultMousePrimary();return null==e||null===(t=e.bindings)||void 0===t?void 0:t.some((e=>e.mouseButton===n&&void 0===e.modifierKey))}_renderViewports(){this.viewportsInfo.forEach((e=>{let{renderingEngineId:t,viewportId:n}=e;(0,J.getRenderingEngine)(t).renderViewport(n)}))}_triggerToolModeChangedEvent(e,t,n){const o={toolGroupId:this.id,toolName:e,mode:t,toolBindingsOptions:n};(0,J.triggerEvent)(J.eventTarget,Q.TOOL_MODE_CHANGED,o)}}const rs=function(e){if(He.toolGroups.some((t=>t.id===e)))return void console.warn("'".concat(e,"' already exists."));const t=new as(e);return He.toolGroups.push(t),t},ss=function(){return He.toolGroups};function ls(e,t,n,o){const{camera:i}=o.detail,a=(0,J.getRenderingEngine)(n.renderingEngineId);if(!a)throw new Error("No RenderingEngine for Id: ".concat(n.renderingEngineId));const r=a.getViewport(n.viewportId);r.setCamera(i),r.render()}const{CAMERA_MODIFIED:ds}=J.Enums.Events;function cs(e){return mr(e,ds,ls)}function hs(e,t,n,o,i){const a=o.detail,{volumeId:r,range:s,invertStateChanged:l,invert:d}=a,c=(0,J.getRenderingEngine)(n.renderingEngineId);if(!c)throw new Error("Rendering Engine does not exist: ".concat(n.renderingEngineId));const h=c.getViewport(n.viewportId),u={voiRange:s};if(null!=i&&i.syncInvertState&&l&&(u.invert=d),h instanceof J.BaseVolumeViewport)h.setProperties(u,r);else{if(!(h instanceof J.StackViewport))throw new Error("Viewport type not supported.");h.setProperties(u)}h.render()}function us(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{syncInvertState:!0};return mr(e,J.Enums.Events.VOI_MODIFIED,hs,t)}function gs(e,t,n){const o=(0,J.getRenderingEngine)(n.renderingEngineId);if(!o)throw new Error("No RenderingEngine for Id: ".concat(n.renderingEngineId));const i=e.getOptions(n.viewportId),a=o.getViewport(n.viewportId),r=o.getViewport(t.viewportId);if(!1!==(null==i?void 0:i.syncZoom)){const e=r.getZoom();a.setZoom(e)}if(!1!==(null==i?void 0:i.syncPan)){const e=r.getPan();a.setPan(e)}a.render()}const{CAMERA_MODIFIED:vs}=J.Enums.Events;function ms(e){return mr(e,vs,gs)}var ps=I(976);const fs=function(e,t,n){return Math.min(Math.max(t,e),n)};function Es(e,t){if(!(0,J.getEnabledElement)(e.element))throw new Error("Scroll::Viewport is not enabled (it might be disabled)");if(e instanceof J.StackViewport&&0===e.getImageIds().length)throw new Error("Scroll::Stack Viewport has no images");const{type:n}=e,{volumeId:o,delta:i}=t;if(e instanceof J.StackViewport)e.scroll(i,t.debounceLoading,t.loop);else if(e instanceof J.VolumeViewport)!function(e,t,n){const{numScrollSteps:o,currentStepIndex:i,sliceRangeInfo:a}=J.utilities.getVolumeViewportScrollInfo(e,t);if(!a)return;const{sliceRange:r,spacingInNormalDirection:s,camera:l}=a,{focalPoint:d,viewPlaneNormal:c,position:h}=l,{newFocalPoint:u,newPosition:g}=J.utilities.snapFocalPointToSlice(d,h,r,c,s,n);e.setCamera({focalPoint:u,position:g}),e.render();const v=i+n;if((v>o||v<0)&&e.getCurrentImageId()){const a={volumeId:t,viewport:e,delta:n,desiredStepIndex:v,currentStepIndex:i,numScrollSteps:o,currentImageId:e.getCurrentImageId()};J.utilities.triggerEvent(J.eventTarget,J.EVENTS.VOLUME_SCROLL_OUT_OF_BOUNDS,a)}}(e,o,i);else{if(!(e instanceof J.VideoViewport))throw new Error("Not implemented for Viewport Type: ".concat(n));e.scroll(i)}}const ws=async function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const{imageIndex:n,debounceLoading:o,volumeId:i}=t,a=(0,J.getEnabledElement)(e);if(!a)throw new Error("Element has been disabled");const{viewport:r}=a,{imageIndex:s,numberOfSlices:l}=function(e,t){if(e instanceof J.StackViewport)return{numberOfSlices:e.getImageIds().length,imageIndex:t?e.getTargetImageIdIndex():e.getCurrentImageIdIndex()};if(e instanceof J.VolumeViewport)return J.utilities.getImageSliceDataForVolumeViewport(e);throw new Error("Unsupported viewport type")}(r,o),d=function(e,t){return fs(t,0,e-1)}(l,n);Es(r,{delta:d-s,debounceLoading:o,volumeId:i})},Is=(e,t)=>J.utilities.spatialRegistrationMetadataProvider.get("spatialRegistrationModule",[e,t]);async function Cs(e,t,n){const o=(0,J.getRenderingEngine)(n.renderingEngineId);if(!o)throw new Error("No RenderingEngine for Id: ".concat(n.renderingEngineId));const i=o.getViewport(t.viewportId),a=e.getOptions(n.viewportId);if(null!=a&&a.disabled)return;const r=o.getViewport(n.viewportId),s=i.getCurrentImageId(),l=J.metaData.get("imagePlaneModule",s).imagePositionPatient,d=r.getImageIds();if(!function(e,t){const{viewPlaneNormal:n}=e.getCamera(),{viewPlaneNormal:o}=t.getCamera(),i=ps.vec3.dot(n,o);return Math.abs(i)>.9}(i,r))return;let c=Is(n.viewportId,t.viewportId);if(!c&&(i.getFrameOfReferenceUID()===r.getFrameOfReferenceUID()&&!1!==(null==a?void 0:a.useInitialPosition)?c=ps.mat4.identity(ps.mat4.create()):(J.utilities.calculateViewportsSpatialRegistration(i,r),c=Is(n.viewportId,t.viewportId)),!c))return;const h=ps.vec3.transformMat4(ps.vec3.create(),l,c),u=(g=h,d.reduce(((e,t,n)=>{const{imagePositionPatient:o}=J.metaData.get("imagePlaneModule",t),i=ps.vec3.distance(o,g);return i<e.distance?{distance:i,index:n}:e}),{distance:1/0,index:-1}));var g;-1!==u.index&&r.getCurrentImageIdIndex()!==u.index&&await ws(r.element,{imageIndex:u.index})}const{STACK_NEW_IMAGE:_s}=J.Enums.Events;function Ts(e){return mr(e,_s,Cs)}const bs=function(e,t,n){return"".concat(e,"::").concat(t,"::").concat(n)},Ds=function(e,t){Object.keys(e).forEach((n=>{const o=t.getAttribute(n),i=e[n];void 0===i||""===i?t.removeAttribute(n):o!==i&&t.setAttribute(n,i)}))},Ss=function(e,t){Object.keys(e).forEach((n=>{const o=e[n];void 0!==o&&""!==o&&t.setAttribute(n,o)}))},ys=function(e,t,n,o,i){let a=arguments.length>5&&void 0!==arguments[5]?arguments[5]:{},r=arguments.length>6&&void 0!==arguments[6]?arguments[6]:"";const{color:s,fill:l,width:d,lineWidth:c,lineDash:h,fillOpacity:u,strokeOpacity:g}=Object.assign({color:"dodgerblue",fill:"transparent",width:"2",lineDash:void 0,lineWidth:void 0,strokeOpacity:1,fillOpacity:1},a),v=c||d,m=bs(t,"circle",n),p=e.getSvgNode(m),f={cx:"".concat(o[0]),cy:"".concat(o[1]),r:"".concat(i),stroke:s,fill:l,"stroke-width":v,"stroke-dasharray":h,"fill-opacity":u,"stroke-opacity":g};if(p)Ds(f,p),e.setNodeTouched(m);else{const t=document.createElementNS("http://www.w3.org/2000/svg","circle");""!==r&&t.setAttribute("data-id",r),Ss(f,t),e.appendNode(t,m)}},Os=function(e,t,n,o,i){let a=arguments.length>5&&void 0!==arguments[5]?arguments[5]:{},r=arguments.length>6&&void 0!==arguments[6]?arguments[6]:"";const{color:s,width:l,lineWidth:d,lineDash:c}=Object.assign({color:"dodgerblue",width:"2",lineWidth:void 0,lineDash:void 0},a),h=d||l,u=bs(t,"ellipse",n),g=e.getSvgNode(u),v=Math.abs(o[0]-i[0]),m=Math.abs(o[1]-i[1]),p=[Math.min(o[0],i[0])+v/2,Math.min(o[1],i[1])+m/2],f=v/2,E=m/2,w={cx:"".concat(p[0]),cy:"".concat(p[1]),rx:"".concat(f),ry:"".concat(E),stroke:s,fill:"transparent","stroke-width":h,"stroke-dasharray":c};if(g)Ds(w,g),e.setNodeTouched(u);else{const t=document.createElementNS("http://www.w3.org/2000/svg","ellipse");""!==r&&t.setAttribute("data-id",r),Ss(w,t),e.appendNode(t,u)}},Ms=function(e,t,n,o){let i=arguments.length>4&&void 0!==arguments[4]?arguments[4]:{};const{color:a,handleRadius:r,width:s,lineWidth:l,fill:d,type:c,opacity:h}=Object.assign({color:"dodgerblue",handleRadius:"6",width:"2",lineWidth:void 0,fill:"transparent",type:"circle",opacity:1},i),u=l||s;for(let i=0;i<o.length;i++){const s=o[i],l="http://www.w3.org/2000/svg",g=bs(t,"handle","hg-".concat(n,"-index-").concat(i));let v;if("circle"===c)v={cx:"".concat(s[0]),cy:"".concat(s[1]),r,stroke:a,fill:d,"stroke-width":u,opacity:h};else{if("rect"!==c)throw new Error("Unsupported handle type: ".concat(c));{const e=1.5*parseFloat(r),t=s[0]-.5*e,n=s[1]-.5*e;v={x:"".concat(t),y:"".concat(n),width:"".concat(e),height:"".concat(e),stroke:a,fill:d,"stroke-width":u,rx:"".concat(.1*e),opacity:h}}}const m=e.getSvgNode(g);if(m)Ds(v,m),e.setNodeTouched(g);else{const t=document.createElementNS(l,c);Ss(v,t),e.appendNode(t,g)}}};function xs(e,t,n,o,i){let a=arguments.length>5&&void 0!==arguments[5]?arguments[5]:{},r=arguments.length>6&&void 0!==arguments[6]?arguments[6]:"";if(isNaN(o[0])||isNaN(o[1])||isNaN(i[0])||isNaN(i[1]))return;const{color:s,width:l,lineWidth:d,lineDash:c,shadow:h}=Object.assign({color:"dodgerblue",width:"2",lineWidth:void 0,lineDash:void 0,shadow:void 0},a),u=d||l,g=bs(t,"line",n),v=e.getSvgNode(g),m=h?"filter:url(#shadow-".concat(e.svgLayerElement.id,");"):"",p={x1:"".concat(o[0]),y1:"".concat(o[1]),x2:"".concat(i[0]),y2:"".concat(i[1]),stroke:s,style:m,"stroke-width":u,"stroke-dasharray":c};if(v)Ds(p,v),e.setNodeTouched(g);else{const t=document.createElementNS("http://www.w3.org/2000/svg","line");""!==r&&t.setAttribute("data-id",r),Ss(p,t),e.appendNode(t,g)}}function Ns(e,t,n,o,i){if(o.length<2)return;const{fillColor:a,fillOpacity:r,color:s,width:l,lineWidth:d,lineDash:c}=Object.assign({color:"dodgerblue",width:"2",fillColor:"none",fillOpacity:0,lineWidth:void 0,lineDash:void 0,connectLastToFirst:!1},i),h=d||l,u=bs(t,"polyline",n),g=e.getSvgNode(u);let v="";for(const e of o)v+="".concat(e[0],", ").concat(e[1]," ");if(i.connectLastToFirst){const e=o[0];v+="".concat(e[0],", ").concat(e[1])}const m={points:v,stroke:s,fill:a,"fill-opacity":r,"stroke-width":h,"stroke-dasharray":c};if(g)Ds(m,g),e.setNodeTouched(u);else{const t=document.createElementNS("http://www.w3.org/2000/svg","polyline");Ss(m,t),e.appendNode(t,u)}}function ks(e){const t=document.createElementNS("http://www.w3.org/2000/svg","tspan");return t.setAttribute("x","0"),t.setAttribute("dy","1.2em"),t.textContent=e,t}function Rs(e,t){let n=e.querySelector("rect.background");if(!t)return n&&e.removeChild(n),e.getBBox();n||(n=document.createElementNS("http://www.w3.org/2000/svg","rect"),n.setAttribute("class","background"),e.insertBefore(n,e.firstChild));const o=e.getBBox(),i={x:"".concat(o.x),y:"".concat(o.y),width:"".concat(o.width),height:"".concat(o.height),fill:t};return Ds(i,n),o}const Ps=function(e,t,n,o,i){let a=arguments.length>5&&void 0!==arguments[5]?arguments[5]:{};return function(e,t,n){let o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:[""],i=arguments.length>4?arguments[4]:void 0,a=arguments.length>5?arguments[5]:void 0;const{padding:r,color:s,fontFamily:l,fontSize:d,background:c}=a;let h;const[u,g]=[i[0]+r,i[1]+r],v=bs(t,"text",n),m=e.getSvgNode(v);if(m){const t=m.querySelector("text"),n=Array.from(t.children);for(let e=0;e<n.length;e++){const t=n[e],i=o[e]||"";t.textContent=i}if(o.length>n.length){for(let e=0;e<o.length-n.length;e++){const i=ks(o[e+n.length]);t.appendChild(i)}m.appendChild(t),e.appendNode(m,v)}const i={fill:s,"font-size":d,"font-family":l},a={transform:"translate(".concat(u," ").concat(g,")")};Ds(i,t),Ds(a,m),h=Rs(m,c),e.setNodeTouched(v)}else{const t=document.createElementNS("http://www.w3.org/2000/svg","g");t.setAttribute("transform","translate(".concat(u," ").concat(g,")"));const n=function(e,t){const{color:n,fontFamily:o,fontSize:i}=t,a=document.createElementNS("http://www.w3.org/2000/svg","text"),r="filter:url(#shadow-".concat(e.svgLayerElement.id,");"),s="".concat("user-select: none; pointer-events: none; -webkit-tap-highlight-color: rgba(255, 255, 255, 0);").concat(r);return a.setAttribute("x","0"),a.setAttribute("y","0"),a.setAttribute("fill",n),a.setAttribute("font-family",o),a.setAttribute("font-size",i),a.setAttribute("style",s),a}(e,a);for(let e=0;e<o.length;e++){const t=ks(o[e]);n.appendChild(t)}t.appendChild(n),e.appendNode(t,v),h=Rs(t,c)}return Object.assign({},h,{x:u,y:g,height:h.height+r,width:h.width+r})}(e,t,n,o,i,Object.assign({fontFamily:"Helvetica, Arial, sans-serif",fontSize:"14px",color:"rgb(255, 255, 0)",background:"",padding:25,centerX:!1,centerY:!0},a))};function Ls(e,t){let n=[0,0],o=Number.MAX_SAFE_INTEGER;return e.forEach((function(e){const i=function(e,t){const[n,o]=e,[i,a]=t;return Math.sqrt(Math.pow(n-i,2)+Math.pow(o-a,2))}(t,e);i<o&&(o=i,n=[...e])})),n}const As=function(e,t,n,o,i,a,r){let s=arguments.length>7&&void 0!==arguments[7]?arguments[7]:{};const l=Object.assign({handleRadius:"6",centering:{x:!1,y:!0}},s),d=Ps(e,t,n,o,i,l);return function(e,t,n,o,i,a){let r=arguments.length>6&&void 0!==arguments[6]?arguments[6]:{};const s=o.length>0?Ls(o,i):i,l=Ls(function(e){const{x:t,y:n,height:o,width:i}=e,a=i/2,r=o/2;return[[t+a,n],[t,n+r],[t+a,n+o],[t+i,n+r]]}(a),s),d=Object.assign({color:"rgb(255, 255, 0)",lineWidth:"1",lineDash:"2,3"},r);xs(e,t,"link-".concat(n),s,l,d)}(e,t,n,a,i,d,l),d};function Us(e,t,n,o,i){let a=arguments.length>5&&void 0!==arguments[5]?arguments[5]:{},r=arguments.length>6&&void 0!==arguments[6]?arguments[6]:"";const{color:s,width:l,lineWidth:d,lineDash:c}=Object.assign({color:"dodgerblue",width:"2",lineWidth:void 0,lineDash:void 0},a),h=d||l,u=bs(t,"rect",n),g=e.getSvgNode(u),v=[Math.min(o[0],i[0]),Math.min(o[1],i[1])],m=Math.abs(o[0]-i[0]),p=Math.abs(o[1]-i[1]),f={x:"".concat(v[0]),y:"".concat(v[1]),width:"".concat(m),height:"".concat(p),stroke:s,fill:"transparent","stroke-width":h,"stroke-dasharray":c};if(g)Ds(f,g),e.setNodeTouched(u);else{const t=document.createElementNS("http://www.w3.org/2000/svg","rect");""!==r&&t.setAttribute("data-id",r),Ss(f,t),e.appendNode(t,u)}}function Vs(e,t,n,o,i){let a=arguments.length>5&&void 0!==arguments[5]?arguments[5]:{};if(isNaN(o[0])||isNaN(o[1])||isNaN(i[0])||isNaN(i[1]))return;const{color:r,width:s,lineWidth:l,lineDash:d}=Object.assign({color:"dodgerblue",width:"2",lineWidth:void 0,lineDash:void 0},a);xs(e,t,n,o,i,{color:r,width:s,lineWidth:l,lineDash:d});const c=Math.atan2(i[1]-o[1],i[0]-o[0]),h={start:[i[0]-10*Math.cos(c-Math.PI/7),i[1]-10*Math.sin(c-Math.PI/7)],end:i},u={start:[i[0]-10*Math.cos(c+Math.PI/7),i[1]-10*Math.sin(c+Math.PI/7)],end:i};xs(e,t,"2",h.start,h.end,{color:r,width:s,lineWidth:l}),xs(e,t,"3",u.start,u.end,{color:r,width:s,lineWidth:l})}function Ws(e,t,n,o,i){let a=arguments.length>5&&void 0!==arguments[5]?arguments[5]:{};const{color:r,width:s,lineWidth:l,lineDash:d}=Object.assign({color:"dodgerblue",width:"2",lineWidth:void 0,lineDash:void 0},a),c=l||s,h=bs(t,"rect",n),u=e.getSvgNode(h),g=[Math.min(o[0],i[0]),Math.min(o[1],i[1])],v=Math.abs(o[0]-i[0]),m=Math.abs(o[1]-i[1]),p={x:"".concat(g[0]),y:"".concat(g[1]),width:"".concat(v),height:"".concat(m),stroke:r,fill:"black","stroke-width":c,"stroke-dasharray":d};if(u)Ds(p,u),e.setNodeTouched(h);else{const t=document.createElementNS("http://www.w3.org/2000/svg","rect");Ss(p,t),e.appendNode(t,h)}}function Fs(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:5;const o=(0,J.getEnabledElement)(e);if(!o)throw new Error("getAnnotationNearPoint: enabledElement not found");return Hs(o,t,n)}function Hs(e,t,n){const{renderingEngineId:o,viewportId:i}=e,a=yo(i,o);if(!a)return null;const{_toolInstances:r}=a;for(const o in r){const i=Bs(r[o],e,t,n);if(i)return i}return null}function Bs(e,t,n,o){var i;const{viewport:a}=t,r=Ze(e.constructor.toolName,null==a?void 0:a.element),s=null==a||null===(i=a.getCurrentImageId)||void 0===i?void 0:i.call(a);if(null!=r&&r.length){const{element:i}=t.viewport;for(const t of r){var l;const a=null===(l=t.metadata)||void 0===l?void 0:l.referencedImageId;if(!(s&&a&&s!==a||!e.isPointNearTool)&&(e.isPointNearTool(i,t,n,o,"")||e.getHandleNearImagePoint(i,t,n,o)))return t}}return null}const Gs=function(e){const t=typeof e;return null!==e&&("object"===t||"function"===t)},qs=function(e,t,n){let o,i,a,r,s,l,d=0,c=!1,h=!1,u=!0;const g=!t&&0!==t&&"function"==typeof window.requestAnimationFrame;if("function"!=typeof e)throw new TypeError("Expected a function");function v(t){const n=o,a=i;return o=i=void 0,d=t,r=e.apply(a,n),r}function m(e,t){return g?window.requestAnimationFrame(e):setTimeout(e,t)}function p(e){const n=e-l;return void 0===l||n>=t||n<0||h&&e-d>=a}function f(){const e=Date.now();if(p(e))return E(e);s=m(f,function(e){const n=e-d,o=t-(e-l);return h?Math.min(o,a-n):o}(e))}function E(e){return s=void 0,u&&o?v(e):(o=i=void 0,r)}function w(){const e=Date.now(),n=p(e);for(var a=arguments.length,u=new Array(a),g=0;g<a;g++)u[g]=arguments[g];if(o=u,i=this,l=e,n){if(void 0===s)return function(e){return d=e,s=m(f,t),c?v(e):r}(l);if(h)return s=m(f,t),v(l)}return void 0===s&&(s=m(f,t)),r}return t=Number(t)||0,Gs(n)&&(c=Boolean(n.leading),h="maxWait"in n,a=h?Math.max(Number(n.maxWait)||0,t):a,u="trailing"in n?Boolean(n.trailing):u),w.cancel=function(){void 0!==s&&function(e){if(g)return window.cancelAnimationFrame(e);clearTimeout(e)}(s),d=0,o=l=i=s=void 0},w.flush=function(){return void 0===s?r:E(Date.now())},w.pending=function(){return void 0!==s},w},js=function(e,t,n){let o=!0,i=!0;if("function"!=typeof e)throw new TypeError("Expected a function");return Gs(n)&&(o="leading"in n?Boolean(n.leading):o,i="trailing"in n?Boolean(n.trailing):i),qs(e,t,{leading:o,trailing:i,maxWait:t})},{calibratedPixelSpacingMetadataProvider:zs}=J.utilities;function Ks(e,t,n){"number"==typeof n&&(n={type:J.Enums.CalibrationTypes.USER,scale:n}),zs.add(e,n),t.getStackViewports().forEach((t=>{t.getImageIds().includes(e)&&t.calibrateSpacing(e)}))}const{CalibrationTypes:Ys}=J.Enums,Xs="px",Zs=(e,t)=>{const{calibration:n,hasPixelSpacing:o}=t,i=o?"mm":Xs;return n&&n.type?n.type===Ys.UNCALIBRATED?Xs:n.SequenceOfUltrasoundRegions?"US Region":"".concat(i," ").concat(n.type):i},Js=(e,t)=>{const{calibration:n,hasPixelSpacing:o}=t,i=(o?"mm":Xs)+"²";return n&&n.type?n.SequenceOfUltrasoundRegions?"US Region":"".concat(i," ").concat(n.type):i},$s=e=>{var t;return(null===(t=e.calibration)||void 0===t?void 0:t.scale)||1},Qs=e=>{var t;return(null===(t=e.calibration)||void 0===t?void 0:t.aspect)||1},el=Zs;function tl(e,t,n,o){let i,a,r,s,l,d,c;c=e.getScalarData?e.getScalarData():e.getPointData().getScalars().getData();const h=e.getDimensions();o?[[i,a],[r,s],[l,d]]=o:(i=0,a=h[0],r=0,s=h[1],l=0,d=h[2]);const u=ps.vec3.fromValues(i,r,l),g=e.getDirection(),v=g.slice(0,3),m=g.slice(3,6),p=g.slice(6,9),f=e.getSpacing(),[E,w,I]=f,C=e.indexToWorld(u),_=ps.vec3.fromValues(v[0]*E,v[1]*E,v[2]*E),T=ps.vec3.fromValues(m[0]*w,m[1]*w,m[2]*w),b=ps.vec3.fromValues(p[0]*I,p[1]*I,p[2]*I),D=h[0],S=h[0]*h[1],y=[];for(let e=l;e<=d;e++)for(let o=r;o<=s;o++)for(let s=i;s<=a;s++){const a=[s,o,e],d=s-i,h=o-r,u=e-l,g=C,v=[g[0]+d*_[0]+h*T[0]+u*b[0],g[1]+d*_[1]+h*T[1]+u*b[1],g[2]+d*_[2]+h*T[2]+u*b[2]];if(t(v,a)){const t=e*S+o*D+s,i=c[t];y.push({value:i,index:t,pointIJK:a,pointLPS:v}),null!==n&&n({value:i,index:t,pointIJK:a,pointLPS:v})}}return y}const nl=function(e,t){let n=1/0,o=0,i=1/0,a=0,r=1/0,s=0;if(e.forEach((e=>{n=Math.min(e[0],n),o=Math.max(e[0],o),i=Math.min(e[1],i),a=Math.max(e[1],a),r=Math.min(e[2],r),s=Math.max(e[2],s)})),n=Math.floor(n),o=Math.floor(o),i=Math.floor(i),a=Math.floor(a),r=Math.floor(r),s=Math.floor(s),t){const[e,l,d]=t;n=Math.max(0,n),o=Math.min(e-1,o),i=Math.max(0,i),a=Math.min(l-1,a),r=Math.max(0,r),s=Math.min(d-1,s)}return[[n,o],[i,a],[r,s]]},{transformWorldToIndex:ol}=J.utilities;function il(e,t,n,o){const{boundsIJK:i,centerWorld:a,radiusWorld:r}=function(e,t,n){const[o,i]=e,a=ps.vec3.fromValues((o[0]+i[0])/2,(o[1]+i[1])/2,(o[2]+i[2])/2),r=ps.vec3.distance(o,i)/2;let s;if(!n){const e=ol(t,a),n=t.getSpacing(),o=Math.min(...n),i=Math.ceil(r/o);return s=[[e[0]-i,e[0]+i],[e[1]-i,e[1]+i],[e[2]-i,e[2]+i]],{boundsIJK:s,centerWorld:a,radiusWorld:r}}return s=function(e,t,n,o,i){const[a,r]=n,s=e.getDimensions(),l=t.getCamera(),d=ps.vec3.fromValues(l.viewUp[0],l.viewUp[1],l.viewUp[2]),c=ps.vec3.fromValues(l.viewPlaneNormal[0],l.viewPlaneNormal[1],l.viewPlaneNormal[2]),h=ps.vec3.create();ps.vec3.cross(h,d,c);const u=ps.vec3.create(),g=ps.vec3.create();ps.vec3.scaleAndAdd(u,r,c,i),ps.vec3.scaleAndAdd(g,a,c,-i),ps.vec3.scaleAndAdd(u,u,h,-i),ps.vec3.scaleAndAdd(g,g,h,i);const v=[ol(e,u),ol(e,g)];return nl(v,s)}(t,n,e,0,r),{boundsIJK:s,centerWorld:a,radiusWorld:r}}(t,e,o),s={center:a,radius:r};tl(e,(e=>function(e,t){const{center:n,radius:o}=e;return(t[0]-n[0])**2+(t[1]-n[1])**2+(t[2]-n[2])**2<=o**2}(s,e)),n,i)}const al=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:2;if(null==e||""===e)return"NaN";if((e=Number(e))<1e-4)return"".concat(e);const n=e>=100?t-2:e>=10?t-1:e>=1?t:e>=.1?t+1:e>=.01?t+2:e>=.001?t+3:t+4;return e.toFixed(n)},rl=function(e,t,n){const{THRESHOLD_INSIDE_CIRCLE:o}=n,i=t.getScalarData()[e],{threshold:a}=o;return a[0]<=i&&i<=a[1]};function sl(e,t){let n=arguments.length>3&&void 0!==arguments[3]&&arguments[3];const{viewport:o}=e,{volume:i,segmentsLocked:a,segmentIndex:r,imageVolume:s,strategySpecificConfiguration:l,segmentationId:d,points:c}=t,{imageData:h,dimensions:u}=i,g=i.getScalarData(),v=[];let m;m=n?e=>{let{value:t,index:n,pointIJK:o}=e;a.includes(t)||rl(n,s,l)&&(g[n]=r,v.push(n))}:e=>{let{index:t,value:n}=e;a.includes(n)||(g[t]=r,v.push(t))},il(h,[c[0],c[1]],m,o);const p=u[0]*u[1],f=Math.floor(v[0]/p),E=Math.floor(v[v.length-1]/p);pt(d,Array.from({length:E-f+1},((e,t)=>t+f)))}function ll(e,t){sl(e,t,!0)}function dl(e,t){const{volume:n,imageVolume:o}=t;if(!J.utilities.isEqual(n.dimensions,o.dimensions)||!J.utilities.isEqual(n.direction,o.direction))throw new Error("Only source data the same dimensions/size/orientation as the segmentation currently supported.");sl(e,t,!0,!0)}function cl(e,t){ll(e,Object.assign({},t,{segmentIndex:0}))}function hl(e){const[t,n,o,i]=e;return[[o[0],n[1]],[i[0],t[1]]]}function ul(e,t){const{center:n,xRadius:o,yRadius:i,zRadius:a}=e,[r,s,l]=t,[d,c,h]=n;let u=0;return 0!==o&&(u+=(r-d)*(r-d)/(o*o)),0!==i&&(u+=(s-c)*(s-c)/(i*i)),0!==a&&(u+=(l-h)*(l-h)/(a*a)),u<=1}const{transformWorldToIndex:gl}=J.utilities;function vl(e,t){let n=arguments.length>2&&void 0!==arguments[2]&&arguments[2];const{volume:o,imageVolume:i,points:a,segmentsLocked:r,segmentIndex:s,segmentationId:l,strategySpecificConfiguration:d}=t,{imageData:c,dimensions:h}=o,u=o.getScalarData(),{viewport:g}=e,v=ps.vec3.fromValues(0,0,0);a.forEach((e=>{ps.vec3.add(v,v,e)})),ps.vec3.scale(v,v,1/a.length);const m=a.map((e=>g.worldToCanvas(e))),[p,f]=hl(m),E=g.canvasToWorld(p),w=g.canvasToWorld(f),I=[gl(c,E),gl(c,w)],C=nl(I,h),_={center:v,xRadius:Math.abs(E[0]-w[0])/2,yRadius:Math.abs(E[1]-w[1])/2,zRadius:Math.abs(E[2]-w[2])/2},T=new Set;let b;b=n?e=>{let{value:t,index:n,pointIJK:o}=e;r.includes(t)||rl(n,i,d)&&(u[n]=s,T.add(o[2]))}:e=>{let{value:t,index:n,pointIJK:o}=e;r.includes(t)||(u[n]=s,T.add(o[2]))},tl(c,((e,t)=>ul(_,e)),b,C),pt(l,Array.from(T))}function ml(e,t){vl(e,t,!1)}function pl(e,t){const{volume:n,imageVolume:o}=t;if(!J.utilities.isEqual(n.dimensions,o.dimensions)||!J.utilities.isEqual(n.direction,o.direction))throw new Error("Only source data the same dimensions/size/orientation as the segmentation currently supported.");vl(e,t,!0)}function fl(e,t){ml(e,{...t,segmentIndex:0})}function El(e){const t=Et().getSegmentationRepresentations(e);if(t)return t.find((e=>e.active))}function wl(e,t){Et().setActiveSegmentationRepresentation(e,t),vt(e,t)}function Il(e,t){const n=wt(e);if(!n)throw new Error("No segmentation state found for ".concat(e));const{segmentsLocked:o}=n;return o.has(t)}function Cl(e,t){let n=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];const o=wt(e);if(!o)throw new Error("No segmentation state found for ".concat(e));const{segmentsLocked:i}=o;n?i.add(t):i.delete(t),mt(e)}function _l(e){const t=wt(e);if(!t)throw new Error("No segmentation state found for ".concat(e));const{segmentsLocked:n}=t;return Array.from(n)}function Tl(e,t){const n=wt(e);(null==n?void 0:n.activeSegmentIndex)!==t&&(n.activeSegmentIndex=t,mt(e))}function bl(e){const t=wt(e);if(t)return t.activeSegmentIndex}function Dl(e,t){if(!e)throw new Error("addColorLUT: colorLUT is required");J.utilities.isEqual(e[0],[0,0,0,0])||(console.warn("addColorLUT: [0, 0, 0, 0] color is not provided for the background color (segmentIndex =0), automatically adding it"),e.unshift([0,0,0,0])),Wt(e,t)}function Sl(e,t,n){const o=Pt(e,t);if(!o)throw new Error("setColorLUT: could not find segmentation representation with UID ".concat(t));if(!Vt(n))throw new Error("setColorLUT: could not find colorLUT with index ".concat(n));o.colorLUTIndex=n,vt(e,t)}function yl(e,t,n){const o=Pt(e,t);if(!o)throw new Error("segmentation representation with UID ".concat(t," does not exist for tool group ").concat(e));const{colorLUTIndex:i}=o;return Vt(i)[n]}function Ol(e,t,n,o){const i=yl(e,t,n);for(let e=0;e<o.length;e++)i[e]=o[e];vt(e,t)}class Ml extends la{constructor(){super(arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},arguments.length>1&&void 0!==arguments[1]?arguments[1]:{supportedInteractionTypes:["Mouse","Touch"],configuration:{strategies:{FILL_INSIDE_CIRCLE:ml,ERASE_INSIDE_CIRCLE:fl,FILL_INSIDE_SPHERE:ll,ERASE_INSIDE_SPHERE:cl,THRESHOLD_INSIDE_CIRCLE:pl,THRESHOLD_INSIDE_SPHERE:dl},strategySpecificConfiguration:{THRESHOLD_INSIDE_CIRCLE:{threshold:[-150,-70]}},defaultStrategy:"FILL_INSIDE_CIRCLE",activeStrategy:"FILL_INSIDE_CIRCLE",brushSize:25}}),te(this,"_editData",void 0),te(this,"_hoverData",void 0),te(this,"onSetToolPassive",(()=>{this.disableCursor()})),te(this,"onSetToolEnabled",(()=>{this.disableCursor()})),te(this,"onSetToolDisabled",(()=>{this.disableCursor()})),te(this,"preMouseDownCallback",(e=>{const t=e.detail,{element:n}=t,o=(0,J.getEnabledElement)(n),{viewport:i,renderingEngine:a}=o;if(i instanceof J.StackViewport)throw new Error("Not implemented yet");const r=El(this.toolGroupId);if(!r)throw new Error("No active segmentation detected, create one before using the brush tool");const{segmentationId:s,type:l}=r,d=_l(s),{representationData:c}=wt(s),{volumeId:h}=c[l],u=J.cache.getVolume(h),g=i.getActors()[0].uid,v=J.cache.getVolume(g),m=[i.id];return this._editData={segmentation:u,imageVolume:v,segmentsLocked:d},this._activateDraw(n),Qr(n),e.preventDefault(),Bi(a,m),!0})),te(this,"mouseMoveCallback",(e=>{this.mode===Ge.Active&&this.updateCursor(e)})),te(this,"_dragCallback",(e=>{const t=e.detail,{element:n}=t,o=(0,J.getEnabledElement)(n),{renderingEngine:i}=o,{imageVolume:a,segmentation:r,segmentsLocked:s}=this._editData;this.updateCursor(e);const{segmentIndex:l,segmentationId:d,segmentationRepresentationUID:c,brushCursor:h,viewportIdsToRender:u}=this._hoverData,{data:g}=h,{viewPlaneNormal:v,viewUp:m}=h.metadata;Bi(i,u);const p={points:g.handles.points,volume:r,imageVolume:a,segmentIndex:l,segmentsLocked:s,viewPlaneNormal:v,toolGroupId:this.toolGroupId,segmentationId:d,segmentationRepresentationUID:c,viewUp:m,strategySpecificConfiguration:this.configuration.strategySpecificConfiguration};this.applyActiveStrategy(o,p)})),te(this,"_endCallback",(e=>{const t=e.detail,{element:n}=t,{imageVolume:o,segmentation:i,segmentsLocked:a}=this._editData,{segmentIndex:r,segmentationId:s,segmentationRepresentationUID:l,brushCursor:d}=this._hoverData,{data:c}=d,{viewPlaneNormal:h,viewUp:u}=d.metadata;this._deactivateDraw(n),$r(n);const g=(0,J.getEnabledElement)(n),{viewport:v}=g;if(this._editData=null,this.updateCursor(e),v instanceof J.StackViewport)throw new Error("Not implemented yet");const m={points:c.handles.points,volume:i,imageVolume:o,segmentIndex:r,segmentsLocked:a,viewPlaneNormal:h,toolGroupId:this.toolGroupId,segmentationId:s,segmentationRepresentationUID:l,viewUp:u,strategySpecificConfiguration:this.configuration.strategySpecificConfiguration};this.applyActiveStrategy(g,m)})),te(this,"_activateDraw",(e=>{e.addEventListener(Q.MOUSE_UP,this._endCallback),e.addEventListener(Q.MOUSE_DRAG,this._dragCallback),e.addEventListener(Q.MOUSE_CLICK,this._endCallback)})),te(this,"_deactivateDraw",(e=>{e.removeEventListener(Q.MOUSE_UP,this._endCallback),e.removeEventListener(Q.MOUSE_DRAG,this._dragCallback),e.removeEventListener(Q.MOUSE_CLICK,this._endCallback)}))}disableCursor(){this._hoverData=void 0}updateCursor(e){const t=e.detail,{element:n}=t,{currentPoints:o}=t,i=o.canvas,a=(0,J.getEnabledElement)(n),{renderingEngine:r,viewport:s}=a,l=s.getCamera(),{viewPlaneNormal:d,viewUp:c}=l,h=this.toolGroupId,u=El(h);if(!u)return void console.warn("No active segmentation detected, create one before using the brush tool");const{segmentationRepresentationUID:g,segmentationId:v}=u,m=bl(v),p=yl(h,g,m),f=[s.id],E={metadata:{viewPlaneNormal:[...d],viewUp:[...c],FrameOfReferenceUID:s.getFrameOfReferenceUID(),referencedImageId:"",toolName:this.getToolName(),segmentColor:p},data:{}};this._hoverData={brushCursor:E,centerCanvas:i,segmentIndex:m,segmentationId:v,segmentationRepresentationUID:g,segmentColor:p,viewportIdsToRender:f},this._calculateCursor(n,i),Bi(r,f)}_calculateCursor(e,t){const n=(0,J.getEnabledElement)(e),{viewport:o}=n,{canvasToWorld:i}=o,a=o.getCamera(),{brushSize:r}=this.configuration,s=ps.vec3.fromValues(a.viewUp[0],a.viewUp[1],a.viewUp[2]),l=ps.vec3.fromValues(a.viewPlaneNormal[0],a.viewPlaneNormal[1],a.viewPlaneNormal[2]),d=ps.vec3.create();ps.vec3.cross(d,s,l);const c=i([t[0],t[1]]),h=ps.vec3.create(),u=ps.vec3.create(),g=ps.vec3.create(),v=ps.vec3.create();for(let e=0;e<=2;e++)h[e]=c[e]-s[e]*r,u[e]=c[e]+s[e]*r,g[e]=c[e]-d[e]*r,v[e]=c[e]+d[e]*r;const{brushCursor:m}=this._hoverData,{data:p}=m;void 0===p.handles&&(p.handles={}),p.handles.points=[h,u,g,v],p.invalidated=!1}invalidateBrushCursor(){if(void 0!==this._hoverData){const{data:e}=this._hoverData.brushCursor;e.invalidated=!0}}renderAnnotation(e,t){if(!this._hoverData)return;const{viewport:n}=e;if(!this._hoverData.viewportIdsToRender.includes(n.id))return;const o=this._hoverData.brushCursor;if(!0===o.data.invalidated){const{centerCanvas:e}=this._hoverData,{element:t}=n;this._calculateCursor(t,e)}const i=o.metadata,a=i.brushCursorUID,r=o.data,{points:s}=r.handles,l=s.map((e=>n.worldToCanvas(e))),d=l[0],c=l[1],h=[Math.floor((d[0]+c[0])/2),Math.floor((d[1]+c[1])/2)],u=Math.abs(d[1]-Math.floor((d[1]+c[1])/2)),g="rgb(".concat(i.segmentColor.slice(0,3),")");n.getRenderingEngine()?ys(t,a,"0",h,u,{color:g}):console.warn("Rendering Engine has been destroyed")}}te(Ml,"toolName",void 0),Ml.toolName="Brush";const xl=Ml;function Nl(e,t){const n=zi(e);if(void 0===n)return;const o=n._toolInstances;return Object.keys(o).length?t&&o[t]?[o[t]]:Object.values(o).filter((e=>e instanceof xl)):void 0}function kl(e,t,n,o){const i=[];for(let e=0;e<2;e++)for(let t=0;t<2;t++)for(let a=0;a<2;a++){const r=[...o];r[0]=r[0]+(2*e-1)*n[0]/2,r[1]=r[1]+(2*t-1)*n[1]/2,r[2]=r[2]+(2*a-1)*n[2]/2,i.push(r)}const a=i.map((t=>J.utilities.transformWorldToIndex(e,t)));return nl(a,t)}function Rl(e,t){const{spacing:n}=e,o=e.getScalarData(),i=[];let a=0;for(let e=0;e<t.length;e++){const{imageData:l,spacing:d,dimensions:c}=t[e].volume,h=t[e].volume.getScalarData().length;h===o.length&&(r=d,s=n,JSON.stringify(r)===JSON.stringify(s))&&(a=e);const u=l.getPointData().getScalars().getData(),g=t[e].lower,v=t[e].upper;i.push({imageData:l,referenceValues:u,lower:g,upper:v,spacing:d,dimensions:c,volumeSize:h})}var r,s;return{volumeInfoList:i,baseVolumeIdx:a}}const Pl=function(e,t,n){const{imageData:o}=e,i=e.getScalarData(),{overwrite:a,boundsIJK:r}=n,s=(null==n?void 0:n.overlapType)||0;if(a)for(let e=0;e<i.length;e++)i[e]=0;const{baseVolumeIdx:l,volumeInfoList:d}=Rl(e,t);let c,h,u;const g=(e,t,n)=>{const{imageData:o,dimensions:i,lower:a,upper:r}=e,l=kl(o,i,t,n);h=0,c=0,u={lower:a,upper:r};let d=!1;return tl(o,(()=>!0),(e=>{let{value:t}=e;h+=1,t>=u.lower&&t<=u.upper&&(c+=1)}),l),0===s?d=c>0:1==s&&(d=c===h),d},v=(e,t)=>{const{imageData:n,referenceValues:o,lower:i,upper:a}=e,r=o[n.computeOffsetIndex(t)];return!(r<=i||r>=a)};return tl(o,(()=>!0),(e=>{let{index:t,pointIJK:n,pointLPS:o}=e,a=d.length>0;for(let e=0;e<d.length&&(a=d[e].volumeSize===i.length?v(d[e],n):g(d[e],d[l].spacing,o),a);e++);a&&(i[t]=1)}),r),pt(e.volumeId),e};function Ll(e,t){const n=e.length,o=[];for(let i=0;i<n;i++){const n=e[i];n.getFrameOfReferenceUID()===t&&o.push(n)}return o}const{Active:Al,Passive:Ul,Enabled:Vl}=Ge;function Wl(e,t){const n=e.length,o=[];for(let i=0;i<n;i++){const n=e[i],a=yo(n.id,n.renderingEngineId);a&&(Fl(a,t)&&o.push(n))}return o}function Fl(e,t){const{toolOptions:n}=e,o=n[t];if(!o)return!1;const i=o.mode;return i===Al||i===Ul||i===Vl}const Hl=function(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:.999;return e.filter((e=>{const o=e.getCamera();return Math.abs(ps.vec3.dot(o.viewPlaneNormal,t.viewPlaneNormal))>n}))};function Bl(e,t){let n=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];const o=(0,J.getEnabledElement)(e),{renderingEngine:i,FrameOfReferenceUID:a}=o;let r=i.getViewports();r=Ll(r,a),r=Wl(r,t);const s=i.getViewport(o.viewportId);return n&&(r=Hl(r,s.getCamera())),r.map((e=>e.id))}const{EPSILON:Gl}=J.CONSTANTS,ql=1-Gl;function jl(e,t,n){const{viewPlaneNormal:o}=t,i=e.filter((e=>{let t=e.metadata.viewPlaneNormal;if(!t){const{referencedImageId:n}=e.metadata,{imageOrientationPatient:o}=J.metaData.get("imagePlaneModule",n),i=ps.vec3.fromValues(o[0],o[1],o[2]),a=ps.vec3.fromValues(o[3],o[4],o[5]);t=ps.vec3.create(),ps.vec3.cross(t,i,a),e.metadata.viewPlaneNormal=t}const n=Math.abs(ps.vec3.dot(o,t))>ql;return t&&n}));if(!i.length)return[];const a=n/2,{focalPoint:r}=t,s=[];for(const e of i){const t=e.data.handles.points[0];if(!e.isVisible)continue;const n=ps.vec3.create();ps.vec3.sub(n,r,t);const i=ps.vec3.dot(n,o);Math.abs(i)<a&&s.push(e)}return s}function zl(e,t){if(e instanceof J.StackViewport){const n=e.getCurrentImageId(),o=n.indexOf(":"),i=n.substring(o+1);return t.filter((e=>{if(!e.isVisible)return!1;const t=e.metadata.referencedImageId;if(void 0===t)return!1;const n=t.indexOf(":");return t.substring(n+1)===i}))}if(e instanceof J.VideoViewport){const n=e.getFrameOfReferenceUID();return t.filter((e=>e.metadata.FrameOfReferenceUID===n))}if(e instanceof J.VolumeViewport){const n=e.getCamera(),{spacingInNormalDirection:o}=J.utilities.getTargetVolumeAndSpacingInNormalDir(e,n);return jl(t,n,o)}throw new Error("Viewport Type ".concat(e.type," not supported"))}const Kl=function(e){if(e){if(e.data&&e.highlighted)return Or.Highlighted;if(Ce(e.annotationUID))return Or.Selected;if(le(e))return Or.Locked}return Or.Default};class Yl extends la{constructor(){super(...arguments),te(this,"onImageSpacingCalibrated",(e=>{const{element:t,imageId:n}=e.detail,o=J.utilities.imageIdToURI(n),i=Ke();i.getFramesOfReference().forEach((e=>{const n=i.getAnnotations(e)[this.getToolName()];n&&n.length&&(n.forEach((e=>{var t;null!==(t=e.metadata)&&void 0!==t&&t.referencedImageId&&J.utilities.imageIdToURI(e.metadata.referencedImageId)===o&&(e.invalidated=!0,e.data.cachedStats={})})),Ro(t))}))}))}filterInteractableAnnotationsForElement(e,t){if(!t||!t.length)return;const n=(0,J.getEnabledElement)(e),{viewport:o}=n;return zl(o,t)}getReferencedImageId(e,t,n,o){const i=this.getTargetId(e);let a;if(e instanceof J.StackViewport||e instanceof J.VideoViewport)a=i.split("imageId:")[1];else{const e=i.split("volumeId:")[1],o=J.cache.getVolume(e);a=J.utilities.getClosestImageId(o,t,n)}return a}getStyle(e,t,n){return Br(e,t,Kl(n),this.mode)}}te(Yl,"toolName",void 0),Yl.toolName="AnnotationDisplayTool";const Xl=Yl;class Zl extends Xl{constructor(e,t){var n,o;super(e,t),te(this,"mouseMoveCallback",((e,t)=>{if(!t)return!1;const{element:n,currentPoints:o}=e.detail,i=o.canvas;let a=!1;for(const e of t){if(le(e)||!Me(e.annotationUID))continue;const{data:t}=e,o=t.handles?t.handles.activeHandleIndex:void 0,r=this._imagePointNearToolOrHandle(n,e,i,6),s=r&&!e.highlighted,l=!r&&e.highlighted;s||l?(e.highlighted=!e.highlighted,a=!0):t.handles&&t.handles.activeHandleIndex!==o&&(a=!0)}return a})),null!==(n=e.configuration)&&void 0!==n&&n.getTextLines&&(this.configuration.getTextLines=e.configuration.getTextLines),null!==(o=e.configuration)&&void 0!==o&&o.statsCalculator&&(this.configuration.statsCalculator=e.configuration.statsCalculator)}getHandleNearImagePoint(e,t,n,o){const i=(0,J.getEnabledElement)(e),{viewport:a}=i,{data:r}=t,{points:s,textBox:l}=r.handles;if(l){const{worldBoundingBox:e}=l;if(e){const t={topLeft:a.worldToCanvas(e.topLeft),topRight:a.worldToCanvas(e.topRight),bottomLeft:a.worldToCanvas(e.bottomLeft),bottomRight:a.worldToCanvas(e.bottomRight)};if(n[0]>=t.topLeft[0]&&n[0]<=t.bottomRight[0]&&n[1]>=t.topLeft[1]&&n[1]<=t.bottomRight[1])return r.handles.activeHandleIndex=null,l}}for(let e=0;e<s.length;e++){const t=s[e],i=a.worldToCanvas(t);if(!0==ps.vec2.distance(n,i)<o)return r.handles.activeHandleIndex=e,t}r.handles.activeHandleIndex=null}getLinkedTextBoxStyle(e,t){return{visibility:this.getStyle("textBoxVisibility",e,t),fontFamily:this.getStyle("textBoxFontFamily",e,t),fontSize:this.getStyle("textBoxFontSize",e,t),color:this.getStyle("textBoxColor",e,t),shadow:this.getStyle("textBoxShadow",e,t),background:this.getStyle("textBoxBackground",e,t),lineWidth:this.getStyle("textBoxLinkLineWidth",e,t),lineDash:this.getStyle("textBoxLinkLineDash",e,t)}}isSuvScaled(e,t,n){if(e instanceof J.BaseVolumeViewport){var o;const e=t.split("volumeId:")[1];return void 0!==(null===(o=J.cache.getVolume(e).scaling)||void 0===o?void 0:o.PT)}if(e instanceof J.StackViewport){const e=n&&J.metaData.get("scalingModule",n);return"number"==typeof(null==e?void 0:e.suvbw)}throw new Error("Viewport is not a valid type")}_imagePointNearToolOrHandle(e,t,n,o){return!!this.getHandleNearImagePoint(e,t,n,o)||(!!this.isPointNearTool(e,t,n,o,"mouse")||void 0)}}te(Zl,"toolName",void 0),Zl.toolName="AnnotationTool";const Jl=Zl;function $l(e,t){return(e[0]-t[0])*(e[0]-t[0])+(e[1]-t[1])*(e[1]-t[1])}function Ql(e,t,n){const o=$l(e,t);if(0===o)return $l(n,e);const i=((n[0]-e[0])*(t[0]-e[0])+(n[1]-e[1])*(t[1]-e[1]))/o;return $l(n,i<0?e:i>1?t:[e[0]+i*(t[0]-e[0]),e[1]+i*(t[1]-e[1])])}function ed(e,t,n){if(2!==e.length||2!==t.length||2!==n.length)throw Error("lineStart, lineEnd, and point should have 2 elements of [x, y]");return Math.sqrt(Ql(e,t,n))}function td(e,t){if(4!==e.length||2!==t.length)throw Error("rectangle:[left, top, width, height] or point: [x,y] not defined correctly");const[n,o,i,a]=e;let r=655535;const s=function(e,t,n,o){return{top:[[e,t],[e+n,t]],right:[[e+n,t],[e+n,t+o]],bottom:[[e+n,t+o],[e,t+o]],left:[[e,t+o],[e,t]]}}(n,o,i,a);return Object.keys(s).forEach((e=>{const[n,o]=s[e],i=ed(n,o,t);i<r&&(r=i)})),r}function nd(e){const t=function(e){const t=[e[0],e[1]].sort((function(e,t){return e[0]<t[0]?-1:1})),n=[e[0],e[1]].sort((function(e,t){return e[1]<t[1]?-1:1})),o=t[t.length-1];return{top:n[0],bottom:n[n.length-1],right:o}}(e),n=(t.top[1]+t.bottom[1])/2;return[t.right[0],n]}function od(e,t,n,o){const i=ps.vec3.create();ps.vec3.cross(i,t,e);const a=ps.vec3.fromValues(...n),r=ps.vec3.fromValues(...o),s=ps.vec3.create();ps.vec3.subtract(s,a,r);const l=ps.vec3.length(s);if(l<1e-4)return{worldWidth:0,worldHeight:0};const d=ps.vec3.dot(s,i)/(l*ps.vec3.length(i));return{worldWidth:Math.sqrt(1-d*d)*l,worldHeight:d*l}}function id(e,t,n){return"CT"===e?"HU":"PT"===e?function(e,t){if(!t.isPreScaled)return"raw";if(t.isSuvScaled)return"SUV";const n=J.metaData.get("generalSeriesModule",e);if("PT"===(null==n?void 0:n.modality)){const t=J.metaData.get("petSeriesModule",e);return(null==t?void 0:t.units)||"unitless"}}(t,n):""}function ad(e,t){if(e instanceof J.BaseVolumeViewport){const e=t.split("volumeId:"),n=e.length>1?e[1]:e[0],o=J.cache.getVolume(n);return!(null==o||!o.scaling)&&Object.keys(o.scaling).length>0}if(e instanceof J.StackViewport){const{preScale:t}=e.getImageData()||{};return!(null==t||!t.scaled)}throw new Error("Viewport is not a valid type")}class rd{}te(rd,"run",void 0),te(rd,"getStatistics",void 0);const sd=rd;var ld;class dd extends sd{}ld=dd,te(dd,"max",-1/0),te(dd,"currentMax",0),te(dd,"sum",0),te(dd,"sumSquares",0),te(dd,"squaredDiffSum",0),te(dd,"count",0),te(dd,"statsCallback",(e=>{let{value:t}=e;t>ld.max&&(ld.max=t,ld.currentMax=t),ld.count+=1,ld.sum+=t,ld.sumSquares+=t**2,ld.squaredDiffSum+=Math.pow(t-ld.sum/ld.count,2)})),te(dd,"getStatistics",(()=>{const e=ld.sum/ld.count,t=Math.sqrt(ld.squaredDiffSum/ld.count),n=Math.sqrt(ld.sumSquares/ld.count-e**2);return ld.max=-1/0,ld.sum=0,ld.sumSquares=0,ld.squaredDiffSum=0,ld.count=0,[{name:"max",value:ld.currentMax,unit:null},{name:"mean",value:e,unit:null},{name:"stdDev",value:t,unit:null},{name:"stdDevWithSumSquare",value:n,unit:null}]}));const{transformWorldToIndex:cd}=J.utilities;class hd extends Jl{constructor(){super(arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},arguments.length>1&&void 0!==arguments[1]?arguments[1]:{supportedInteractionTypes:["Mouse","Touch"],configuration:{shadow:!0,preventHandleOutsideImage:!1,getTextLines:ud,statsCalculator:dd}}),te(this,"_throttledCalculateCachedStats",void 0),te(this,"editData",void 0),te(this,"isDrawing",void 0),te(this,"isHandleOutsideImage",void 0),te(this,"addNewAnnotation",(e=>{const t=e.detail,{currentPoints:n,element:o}=t,i=n.world,a=(0,J.getEnabledElement)(o),{viewport:r,renderingEngine:s}=a;this.isDrawing=!0;const l=r.getCamera(),{viewPlaneNormal:d,viewUp:c}=l,h=this.getReferencedImageId(r,i,d,c),u=r.getFrameOfReferenceUID(),g={invalidated:!0,highlighted:!0,metadata:{toolName:this.getToolName(),viewPlaneNormal:[...d],viewUp:[...c],FrameOfReferenceUID:u,referencedImageId:h},data:{label:"",handles:{points:[[...i],[...i],[...i],[...i]],textBox:{hasMoved:!1,worldPosition:[0,0,0],worldBoundingBox:{topLeft:[0,0,0],topRight:[0,0,0],bottomLeft:[0,0,0],bottomRight:[0,0,0]}},activeHandleIndex:null},cachedStats:{}}};Je(g,o);const v=Bl(o,this.getToolName());return this.editData={annotation:g,viewportIdsToRender:v,handleIndex:3,movingTextBox:!1,newAnnotation:!0,hasMoved:!1},this._activateDraw(o),Qr(o),e.preventDefault(),Bi(s,v),g})),te(this,"isPointNearTool",((e,t,n,o)=>{const i=(0,J.getEnabledElement)(e),{viewport:a}=i,{data:r}=t,{points:s}=r.handles,l=a.worldToCanvas(s[0]),d=a.worldToCanvas(s[3]),c=this._getRectangleImageCoordinates([l,d]),h=[n[0],n[1]],{left:u,top:g,width:v,height:m}=c;return td([u,g,v,m],h)<=o})),te(this,"toolSelectedCallback",((e,t)=>{const n=e.detail,{element:o}=n;t.highlighted=!0;const i=Bl(o,this.getToolName());this.editData={annotation:t,viewportIdsToRender:i,movingTextBox:!1},this._activateModify(o),Qr(o);const a=(0,J.getEnabledElement)(o),{renderingEngine:r}=a;Bi(r,i),e.preventDefault()})),te(this,"handleSelectedCallback",((e,t,n)=>{const o=e.detail,{element:i}=o,{data:a}=t;t.highlighted=!0;let r,s=!1;n.worldPosition?s=!0:r=a.handles.points.findIndex((e=>e===n));const l=Bl(i,this.getToolName());this.editData={annotation:t,viewportIdsToRender:l,handleIndex:r,movingTextBox:s},this._activateModify(i),Qr(i);const d=(0,J.getEnabledElement)(i),{renderingEngine:c}=d;Bi(c,l),e.preventDefault()})),te(this,"_endCallback",(e=>{const t=e.detail,{element:n}=t,{annotation:o,viewportIdsToRender:i,newAnnotation:a,hasMoved:r}=this.editData,{data:s}=o;if(a&&!r)return;s.handles.activeHandleIndex=null,this._deactivateModify(n),this._deactivateDraw(n),$r(n);const l=(0,J.getEnabledElement)(n),{renderingEngine:d}=l;if(this.editData=null,this.isDrawing=!1,this.isHandleOutsideImage&&this.configuration.preventHandleOutsideImage&&Qe(o.annotationUID),Bi(d,i),a){const e=Q.ANNOTATION_COMPLETED,t={annotation:o};(0,J.triggerEvent)(J.eventTarget,e,t)}})),te(this,"_dragCallback",(e=>{this.isDrawing=!0;const t=e.detail,{element:n}=t,{annotation:o,viewportIdsToRender:i,handleIndex:a,movingTextBox:r}=this.editData,{data:s}=o;if(r){const{deltaPoints:e}=t,n=e.world,{textBox:o}=s.handles,{worldPosition:i}=o;i[0]+=n[0],i[1]+=n[1],i[2]+=n[2],o.hasMoved=!0}else if(void 0===a){const{deltaPoints:e}=t,n=e.world,{points:i}=s.handles;i.forEach((e=>{e[0]+=n[0],e[1]+=n[1],e[2]+=n[2]})),o.invalidated=!0}else{const{currentPoints:e}=t,i=(0,J.getEnabledElement)(n),{worldToCanvas:r,canvasToWorld:l}=i.viewport,d=e.world,{points:c}=s.handles;let h,u,g,v,m,p,f,E;switch(c[a]=[...d],a){case 0:case 3:h=r(c[0]),v=r(c[3]),u=[v[0],h[1]],g=[h[0],v[1]],p=l(u),f=l(g),c[1]=p,c[2]=f;break;case 1:case 2:u=r(c[1]),g=r(c[2]),h=[g[0],u[1]],v=[u[0],g[1]],m=l(h),E=l(v),c[0]=m,c[3]=E}o.invalidated=!0}this.editData.hasMoved=!0;const l=(0,J.getEnabledElement)(n),{renderingEngine:d}=l;Bi(d,i)})),te(this,"cancel",(e=>{if(this.isDrawing){this.isDrawing=!1,this._deactivateDraw(e),this._deactivateModify(e),$r(e);const{annotation:t,viewportIdsToRender:n,newAnnotation:o}=this.editData,{data:i}=t;t.highlighted=!1,i.handles.activeHandleIndex=null;const a=(0,J.getEnabledElement)(e),{renderingEngine:r}=a;if(Bi(r,n),o){const e=Q.ANNOTATION_COMPLETED,n={annotation:t};(0,J.triggerEvent)(J.eventTarget,e,n)}return this.editData=null,t.annotationUID}})),te(this,"_activateDraw",(e=>{He.isInteractingWithTool=!0,e.addEventListener(Q.MOUSE_UP,this._endCallback),e.addEventListener(Q.MOUSE_DRAG,this._dragCallback),e.addEventListener(Q.MOUSE_MOVE,this._dragCallback),e.addEventListener(Q.MOUSE_CLICK,this._endCallback),e.addEventListener(Q.TOUCH_END,this._endCallback),e.addEventListener(Q.TOUCH_DRAG,this._dragCallback),e.addEventListener(Q.TOUCH_TAP,this._endCallback)})),te(this,"_deactivateDraw",(e=>{He.isInteractingWithTool=!1,e.removeEventListener(Q.MOUSE_UP,this._endCallback),e.removeEventListener(Q.MOUSE_DRAG,this._dragCallback),e.removeEventListener(Q.MOUSE_MOVE,this._dragCallback),e.removeEventListener(Q.MOUSE_CLICK,this._endCallback),e.removeEventListener(Q.TOUCH_END,this._endCallback),e.removeEventListener(Q.TOUCH_DRAG,this._dragCallback),e.removeEventListener(Q.TOUCH_TAP,this._endCallback)})),te(this,"_activateModify",(e=>{He.isInteractingWithTool=!0,e.addEventListener(Q.MOUSE_UP,this._endCallback),e.addEventListener(Q.MOUSE_DRAG,this._dragCallback),e.addEventListener(Q.MOUSE_CLICK,this._endCallback),e.addEventListener(Q.TOUCH_END,this._endCallback),e.addEventListener(Q.TOUCH_DRAG,this._dragCallback),e.addEventListener(Q.TOUCH_TAP,this._endCallback)})),te(this,"_deactivateModify",(e=>{He.isInteractingWithTool=!1,e.removeEventListener(Q.MOUSE_UP,this._endCallback),e.removeEventListener(Q.MOUSE_DRAG,this._dragCallback),e.removeEventListener(Q.MOUSE_CLICK,this._endCallback),e.removeEventListener(Q.TOUCH_END,this._endCallback),e.removeEventListener(Q.TOUCH_DRAG,this._dragCallback),e.removeEventListener(Q.TOUCH_TAP,this._endCallback)})),te(this,"renderAnnotation",((e,t)=>{var n,o;let i=!1;const{viewport:a}=e,{element:r}=a;let s=Ze(this.getToolName(),r);if(null===(n=s)||void 0===n||!n.length)return i;if(s=this.filterInteractableAnnotationsForElement(r,s),null===(o=s)||void 0===o||!o.length)return i;const l=this.getTargetId(a),d=a.getRenderingEngine(),c={toolGroupId:this.toolGroupId,toolName:this.getToolName(),viewportId:e.viewport.id};for(let n=0;n<s.length;n++){const o=s[n],{annotationUID:r,data:h}=o,{points:u,activeHandleIndex:g}=h.handles,v=u.map((e=>a.worldToCanvas(e)));c.annotationUID=r;const m=this.getStyle("lineWidth",c,o),p=this.getStyle("lineDash",c,o),f=this.getStyle("color",c,o),{viewPlaneNormal:E,viewUp:w}=a.getCamera();if(h.cachedStats[l]&&null!=h.cachedStats[l].areaUnit){if(o.invalidated&&(this._throttledCalculateCachedStats(o,E,w,d,e),a instanceof J.VolumeViewport)){const{referencedImageId:e}=o.metadata;for(const t in h.cachedStats)t.startsWith("imageId")&&d.getStackViewports().find((t=>{const n=J.utilities.imageIdToURI(e),o=t.hasImageURI(n),i=J.utilities.imageIdToURI(t.getCurrentImageId());return o&&i!==n}))&&delete h.cachedStats[t]}}else h.cachedStats[l]={Modality:null,area:null,max:null,mean:null,stdDev:null,areaUnit:null},this._calculateCachedStats(o,E,w,d,e);if(!a.getRenderingEngine())return console.warn("Rendering Engine has been destroyed"),i;let I;if(!Me(r))continue;le(o)||this.editData||null===g||(I=[v[g]]),I&&Ms(t,r,"0",I,{color:f});const C="".concat(r,"-rect");Us(t,r,"0",v[0],v[3],{color:f,lineDash:p,lineWidth:m},C),i=!0;const _=this.getLinkedTextBoxStyle(c,o);if(!_.visibility){h.handles.textBox={hasMoved:!1,worldPosition:[0,0,0],worldBoundingBox:{topLeft:[0,0,0],topRight:[0,0,0],bottomLeft:[0,0,0],bottomRight:[0,0,0]}};continue}const T=this.configuration.getTextLines(h,l);if(!T||0===T.length)continue;if(!h.handles.textBox.hasMoved){const e=nd(v);h.handles.textBox.worldPosition=a.canvasToWorld(e)}const b=a.worldToCanvas(h.handles.textBox.worldPosition),D=As(t,r,"1",T,b,v,{},_),{x:S,y,width:O,height:M}=D;h.handles.textBox.worldBoundingBox={topLeft:a.canvasToWorld([S,y]),topRight:a.canvasToWorld([S+O,y]),bottomLeft:a.canvasToWorld([S,y+M]),bottomRight:a.canvasToWorld([S+O,y+M])}}return i})),te(this,"_getRectangleImageCoordinates",(e=>{const[t,n]=e;return{left:Math.min(t[0],n[0]),top:Math.min(t[1],n[1]),width:Math.abs(t[0]-n[0]),height:Math.abs(t[1]-n[1])}})),te(this,"_calculateCachedStats",((e,t,n,o,i)=>{const{data:a}=e,{viewportId:r,renderingEngineId:s,viewport:l}=i,d=a.handles.points[0],c=a.handles.points[3],{cachedStats:h}=a,u=Object.keys(h);for(let i=0;i<u.length;i++){const a=u[i],r=this.getTargetIdImage(a,o);if(!r)continue;const{dimensions:s,imageData:p,metadata:f}=r,E=("getScalarData"in r?r.getScalarData():r.scalarData,cd(p,d));E[0]=Math.floor(E[0]),E[1]=Math.floor(E[1]),E[2]=Math.floor(E[2]);const w=cd(p,c);if(w[0]=Math.floor(w[0]),w[1]=Math.floor(w[1]),w[2]=Math.floor(w[2]),this._isInsideVolume(E,w,s)){var g,v,m;this.isHandleOutsideImage=!1;const o=[[Math.min(E[0],w[0]),Math.max(E[0],w[0])],[Math.min(E[1],w[1]),Math.max(E[1],w[1])],[Math.min(E[2],w[2]),Math.max(E[2],w[2])]],{worldWidth:i,worldHeight:s}=od(t,n,d,c),u=$s(r),I=Math.abs(i*s)/(u*u),C={isPreScaled:ad(l,a),isSuvScaled:this.isSuvScaled(l,a,e.metadata.referencedImageId)},_=id(f.Modality,e.metadata.referencedImageId,C),T=tl(p,(()=>!0),this.configuration.statsCalculator.statsCallback,o),b=this.configuration.statsCalculator.getStatistics();h[a]={Modality:f.Modality,area:I,mean:null===(g=b[1])||void 0===g?void 0:g.value,stdDev:null===(v=b[2])||void 0===v?void 0:v.value,max:null===(m=b[0])||void 0===m?void 0:m.value,statsArray:b,pointsInShape:T,areaUnit:Js(0,r),modalityUnit:_}}else this.isHandleOutsideImage=!0,h[a]={Modality:f.Modality}}e.invalidated=!1;const p=Q.ANNOTATION_MODIFIED,f={annotation:e,viewportId:r,renderingEngineId:s};return(0,J.triggerEvent)(J.eventTarget,p,f),h})),te(this,"_isInsideVolume",((e,t,n)=>J.utilities.indexWithinDimensions(e,n)&&J.utilities.indexWithinDimensions(t,n))),this._throttledCalculateCachedStats=js(this._calculateCachedStats,100,{trailing:!0})}}function ud(e,t){const n=e.cachedStats[t],{area:o,mean:i,max:a,stdDev:r,areaUnit:s,modalityUnit:l}=n;if(void 0===i)return;const d=[];return d.push("Area: ".concat(al(o)," ").concat(s)),d.push("Mean: ".concat(al(i)," ").concat(l)),d.push("Max: ".concat(al(a)," ").concat(l)),d.push("Std Dev: ".concat(al(r)," ").concat(l)),d}te(hd,"toolName",void 0),hd.toolName="RectangleROI";const gd=hd;class vd extends gd{constructor(){super(arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},arguments.length>1&&void 0!==arguments[1]?arguments[1]:{supportedInteractionTypes:["Mouse","Touch"],configuration:{shadow:!0,preventHandleOutsideImage:!1}}),te(this,"_throttledCalculateCachedStats",void 0),te(this,"editData",void 0),te(this,"isDrawing",void 0),te(this,"isHandleOutsideImage",void 0),te(this,"addNewAnnotation",(e=>{const t=e.detail,{currentPoints:n,element:o}=t,i=n.world,a=(0,J.getEnabledElement)(o),{viewport:r,renderingEngine:s}=a;this.isDrawing=!0;const l=r.getCamera(),{viewPlaneNormal:d,viewUp:c}=l,h=this.getTargetId(r);let u,g;if(r instanceof J.StackViewport)u=h.split("imageId:")[1];else{g=h.split("volumeId:")[1];const e=J.cache.getVolume(g);u=J.utilities.getClosestImageId(e,i,d)}const v=r.getFrameOfReferenceUID(),m={highlighted:!0,invalidated:!0,metadata:{viewPlaneNormal:[...d],enabledElement:a,viewUp:[...c],FrameOfReferenceUID:v,referencedImageId:u,toolName:this.getToolName(),volumeId:g},data:{label:"",handles:{textBox:{hasMoved:!1,worldPosition:null,worldBoundingBox:null},points:[[...i],[...i],[...i],[...i]],activeHandleIndex:null},segmentationId:null}};Je(m,o);const p=Bl(o,this.getToolName());return this.editData={annotation:m,viewportIdsToRender:p,handleIndex:3,newAnnotation:!0,hasMoved:!1},this._activateDraw(o),Qr(o),e.preventDefault(),Bi(s,p),m})),te(this,"renderAnnotation",((e,t)=>{var n,o;let i=!1;const{viewport:a,renderingEngineId:r}=e,{element:s}=a;let l=Ze(this.getToolName(),s);if(null===(n=l)||void 0===n||!n.length)return i;if(l=this.filterInteractableAnnotationsForElement(s,l),null===(o=l)||void 0===o||!o.length)return i;const d={toolGroupId:this.toolGroupId,toolName:this.getToolName(),viewportId:e.viewport.id};for(let e=0;e<l.length;e++){const n=l[e],{annotationUID:o,data:s}=n,{points:c,activeHandleIndex:h}=s.handles,u=c.map((e=>a.worldToCanvas(e)));d.annotationUID=o;const g=this.getStyle("lineWidth",d,n),v=this.getStyle("lineDash",d,n),m=this.getStyle("color",d,n);if(!a.getRenderingEngine())return console.warn("Rendering Engine has been destroyed"),i;const p=Q.ANNOTATION_MODIFIED,f={annotation:n,viewportId:a.id,renderingEngineId:r};let E;((0,J.triggerEvent)(J.eventTarget,p,f),Me(o))&&(le(n)||this.editData||null===h||(E=[u[h]]),E&&Ms(t,o,"0",E,{color:m}),Us(t,o,"0",u[0],u[3],{color:m,lineDash:v,lineWidth:g}),i=!0)}return i}))}}te(vd,"toolName",void 0),vd.toolName="RectangleROIThreshold";const md=vd,{transformWorldToIndex:pd}=J.utilities;class fd extends gd{constructor(){super(arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},arguments.length>1&&void 0!==arguments[1]?arguments[1]:{configuration:{numSlicesToPropagate:10}}),te(this,"_throttledCalculateCachedStats",void 0),te(this,"editData",void 0),te(this,"isDrawing",void 0),te(this,"isHandleOutsideImage",void 0),te(this,"addNewAnnotation",(e=>{const t=e.detail,{currentPoints:n,element:o}=t,i=n.world,a=(0,J.getEnabledElement)(o),{viewport:r,renderingEngine:s}=a;this.isDrawing=!0;const l=r.getCamera(),{viewPlaneNormal:d,viewUp:c}=l;let h,u,g;if(r instanceof J.StackViewport)throw new Error("Stack Viewport Not implemented");if(g=this.getTargetId(r).split("volumeId:")[1],u=J.cache.getVolume(g),h=J.utilities.getClosestImageId(u,i,d),!h)throw new Error("This tool does not work on non-acquisition planes");const v=r.getCurrentImageIdIndex(),m=J.utilities.getSpacingInNormalDirection(u,d),p=this._getEndSliceIndex(u,i,m,d),f=r.getFrameOfReferenceUID(),E={highlighted:!0,invalidated:!0,metadata:{viewPlaneNormal:[...d],enabledElement:a,viewUp:[...c],FrameOfReferenceUID:f,referencedImageId:h,toolName:this.getToolName(),volumeId:g,spacingInNormal:m},data:{label:"",startSlice:v,endSlice:p,cachedStats:{projectionPoints:[],projectionPointsImageIds:[h]},handles:{textBox:{hasMoved:!1,worldPosition:null,worldBoundingBox:null},points:[[...i],[...i],[...i],[...i]],activeHandleIndex:null},labelmapUID:null}};this._computeProjectionPoints(E,u),Je(E,o);const w=Bl(o,this.getToolName());return this.editData={annotation:E,viewportIdsToRender:w,handleIndex:3,newAnnotation:!0,hasMoved:!1},this._activateDraw(o),Qr(o),e.preventDefault(),Bi(s,w),E})),te(this,"renderAnnotation",((e,t)=>{let n=!1;const{viewport:o}=e,i=Ze(this.getToolName(),o.element);if(null==i||!i.length)return n;const a=o.getCurrentImageIdIndex(),r={toolGroupId:this.toolGroupId,toolName:this.getToolName(),viewportId:e.viewport.id};for(let s=0;s<i.length;s++){const l=i[s],{annotationUID:d,data:c}=l,{startSlice:h,endSlice:u}=c,{points:g,activeHandleIndex:v}=c.handles,m=g.map((e=>o.worldToCanvas(e)));r.annotationUID=d;const p=this.getStyle("lineWidth",r,l),f=this.getStyle("lineDash",r,l),E=this.getStyle("color",r,l);if(a<Math.min(h,u)||a>Math.max(h,u))continue;l.invalidated&&this._throttledCalculateCachedStats(l,e);let w,I=!1;if(a!==h&&a!==u||(I=!0),!o.getRenderingEngine())return console.warn("Rendering Engine has been destroyed"),n;if(!Me(d))continue;le(l)||this.editData||null===v||!I||(w=[m[v]]),w&&Ms(t,d,"0",w,{color:E});let C=f;I||(C=2),Us(t,d,"0",m[0],m[3],{color:E,lineDash:C,lineWidth:p}),n=!0}return n})),this._throttledCalculateCachedStats=js(this._calculateCachedStatsTool,100,{trailing:!0})}_computeProjectionPoints(e,t){const{data:n,metadata:o}=e,{viewPlaneNormal:i,spacingInNormal:a}=o,{imageData:r}=t,{startSlice:s,endSlice:l}=n,{points:d}=n.handles,c=pd(r,d[0]);if(c[2]!==s)throw new Error("Start slice does not match");const h=ps.vec3.fromValues(c[0],c[1],l),u=ps.vec3.create();r.indexToWorldVec3(c,u);const g=ps.vec3.create();r.indexToWorldVec3(h,g);const v=ps.vec3.distance(u,g),m=[];for(let e=0;e<v;e+=a)m.push(d.map((t=>{const n=ps.vec3.create();return ps.vec3.scaleAndAdd(n,t,i,e),Array.from(n)})));n.cachedStats.projectionPoints=m;const p=[];for(const e of m){const n=J.utilities.getClosestImageId(t,e[0],i);p.push(n)}n.cachedStats.projectionPointsImageIds=p}_calculateCachedStatsTool(e,t){const n=e.data,{viewportId:o,renderingEngineId:i,viewport:a}=t,{cachedStats:r}=n,s=this.getTargetId(a),l=J.cache.getVolume(s.split("volumeId:")[1]);this._computeProjectionPoints(e,l),e.invalidated=!1;const d=Q.ANNOTATION_MODIFIED,c={annotation:e,viewportId:o,renderingEngineId:i};return(0,J.triggerEvent)(J.eventTarget,d,c),r}_getEndSliceIndex(e,t,n,o){const i=this.configuration.numSlicesToPropagate,a=ps.vec3.create();ps.vec3.scaleAndAdd(a,t,o,i*n);const r=n/2,{imageIds:s}=e;let l;for(let e=0;e<s.length;e++){const t=s[e],{imagePositionPatient:n}=J.metaData.get("imagePlaneModule",t),i=ps.vec3.create();ps.vec3.sub(i,a,n);const d=ps.vec3.dot(i,o);Math.abs(d)<r&&(l=e)}return l}}te(fd,"toolName",void 0),fd.toolName="RectangleROIStartEndThreshold";const Ed=fd,wd=function(e,t){const n=e.findIndex((e=>{let[t,n]=e;return t===n}));if(-1===n)throw new Error("3D bounding boxes not supported in an oblique plane");return e[n][0]-=t,e[n][1]+=t,e},Id=function(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};const o=[];return e.forEach((e=>{var i,a;const{data:r}=e,{points:s}=r.handles,{imageData:l,dimensions:d}=t;let c=s;if(null!==(i=r.cachedStats)&&void 0!==i&&i.projectionPoints){const{projectionPoints:e}=r.cachedStats;c=[].concat(...e)}const h=c.map((e=>J.utilities.transformWorldToIndex(l,e)));let u=nl(h,d);!n.numSlicesToProject||null!==(a=r.cachedStats)&&void 0!==a&&a.projectionPoints||(u=wd(u,n.numSlicesToProject)),o.push(u)})),1===o.length?o[0]:o.reduce(((e,t)=>({iMin:Math.min(e.iMin,t.iMin),jMin:Math.min(e.jMin,t.jMin),kMin:Math.min(e.kMin,t.kMin),iMax:Math.max(e.iMax,t.iMax),jMax:Math.max(e.jMax,t.jMax),kMax:Math.max(e.kMax,t.kMax)})),{iMin:1/0,jMin:1/0,kMin:1/0,iMax:-1/0,jMax:-1/0,kMax:-1/0})},Cd=function(e,t,n,o){const i=e.map((e=>et(e)));let a;!function(e){const t=[md.toolName,Ed.toolName];for(const n of e){const e=n.metadata.toolName;if(!t.includes(e))throw new Error("rectangleROIThresholdVolumeByRange only supports RectangleROIThreshold and RectangleROIStartEndThreshold annotations")}}(i);for(let e=0;e<n.length;e++)n[e].volume.getScalarData().length!==t.getScalarData().length&&0!==e||(a=Id(i,n[e].volume,o));return Pl(t,n,{...o,boundsIJK:a})},_d=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"mergedLabelmap";e.forEach((t=>{let{direction:n,dimensions:o,origin:i,spacing:a}=t;if(!(J.utilities.isEqual(o,e[0].dimensions)&&J.utilities.isEqual(n,e[0].direction)&&J.utilities.isEqual(a,e[0].spacing)&&J.utilities.isEqual(i,e[0].origin)))throw new Error("labelmaps must have the same size and shape")}));const o=e[0],i=new(0,o.getScalarData().constructor)(o.getScalarData().length);e.forEach((e=>{const n=e.getScalarData();for(let e=0;e<n.length;e++)n[e]===t&&(i[e]=t)}));const a={scalarData:i,metadata:o.metadata,spacing:o.spacing,origin:o.origin,direction:o.direction,dimensions:o.dimensions};return J.volumeLoader.createLocalVolume(a,n,!0)};function Td(e,t){if(e===it.Labelmap)return function(e){return e&&"boolean"==typeof e.renderOutline&&"number"==typeof e.outlineWidthActive&&"number"==typeof e.outlineWidthInactive&&"boolean"==typeof e.renderFill&&"boolean"==typeof e.renderFillInactive&&"number"==typeof e.fillAlpha&&"number"==typeof e.fillAlphaInactive&&"number"==typeof e.outlineOpacity&&"number"==typeof e.outlineOpacityInactive}(t);throw new Error("Unknown representation type: ".concat(e))}function bd(e){const{type:t}=e;if(t===it.Labelmap)return st();throw new Error("Unknown representation type: ".concat(t))}async function Dd(e){const{viewportId:t,renderingEngineId:n,options:o}=e;let{segmentationId:i}=e;const a=(0,J.getEnabledElementByIds)(t,n);if(!a)throw new Error("element disabled");const{viewport:r}=a;if(!(r instanceof J.VolumeViewport))throw new Error("Segmentation only supports VolumeViewport");const{uid:s}=r.getDefaultActor();var l;if(void 0===i&&(i="".concat(s,"-based-segmentation-").concat(null!==(l=null==o?void 0:o.volumeId)&&void 0!==l?l:J.utilities.uuidv4().slice(0,8))),o){const e=(0,ne._cloneDeep)(o);await J.volumeLoader.createLocalVolume(e,i)}else{const{uid:e}=r.getDefaultActor();await J.volumeLoader.createAndCacheDerivedVolume(e,{volumeId:i})}return i}function Sd(e,t){return e===t}function yd(e,t,n){return(new Array(n+1).join(t)+e).slice(-n)}const Od=function(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};const o=n.onFlood,i=n.onBoundary,a=n.equals||Sd,r=n.diagonals||!1,s=v(t),l=function(e){const t=[],n=function(e){return e.split("").map((function(e){return parseInt(e,10)-1}))};for(let o=0;o<Math.pow(3,e);o+=1){const i=yd(o.toString(3),"0",e);t.push(n(i))}return t}(t.length).filter((function(e){const t=function(e){let t=0;for(let n=0;n<e.length;n+=1)0!==e[n]&&(t+=1);return t}(e);return 0!==t&&(1===t||r)})),d=[],c=[],h={},u={};for(d.push({currentArgs:t});d.length>0;)g(d.pop());return{flooded:c,boundaries:function(){const e=[];for(const t in u)void 0!==u[t]&&e.unshift(u[t]);return e}()};function g(e){const t=e.currentArgs,n=e.previousArgs;!0!==h[t]&&(h[t]=!0,function(e){const t=m(v,[e]);return m(a,[t,s])}(t)?(function(e){c.push(e),o&&o(...e)}(t),function(e){for(let t=0;t<l.length;t+=1){const n=l[t],o=e.slice(0);for(let t=0;t<e.length;t+=1)o[t]+=n[t];d.push({currentArgs:o,previousArgs:e})}}(t)):function(e){u[e]=e,i&&i(...e)}(n))}function v(t){return e(...t)}function m(e,t){try{return e(...t)}catch(e){return}}};function Md(e,t,n){const o=zi(e);if(void 0===o)return;Nl(e,n).forEach((e=>{e.configuration.brushSize=t,e.invalidateBrushCursor()}));const i=o.getViewportsInfo(),a=Object.keys(i).map((e=>i[e]));if(!a.length)return;const{renderingEngineId:r}=a[0],s=o.getViewportIds(),l=(0,J.getRenderingEngine)(r);Bi(l,s)}function xd(e,t){const n=zi(e);if(void 0===n)return;const o=n._toolInstances;if(!Object.keys(o).length)return;const i=Nl(e,t)[0];return i?i.configuration.brushSize:void 0}function Nd(e,t){const n=zi(e);if(void 0===n)return;Nl(e).forEach((e=>{e.configuration.strategySpecificConfiguration.THRESHOLD_INSIDE_CIRCLE.threshold=t}));const o=n.getViewportsInfo();if(!o.length)return;const{renderingEngineId:i}=o[0],a=n.getViewportIds(),r=(0,J.getRenderingEngine)(i);Bi(r,a)}function kd(e){const t=zi(e);if(void 0===t)return;const n=t._toolInstances;if(!Object.keys(n).length)return;const o=Nl(e)[0];return o?o.configuration.strategySpecificConfiguration.THRESHOLD_INSIDE_CIRCLE.threshold:void 0}const Rd=function(e,t,n,o){const i=e.getScalarData(),{baseVolumeIdx:a,volumeInfoList:r}=Rl(e,n);return r.forEach((e=>{const{volumeSize:n}=e;n===i.length?function(e,t,n){const{referenceValues:o,lower:i,upper:a}=n;for(let n=0;n<e.length;n++)if(e[n]===t){const r=o[n];e[n]=r>=i&&r<=a?t:0}}(i,t,e):function(e,t,n,o,i,a){const{imageData:r,lower:s,upper:l,dimensions:d}=n;let c,h,u;for(let n=0;n<e.length;n++)if(e[n]===t){const g=kl(r,d,o[i].spacing,o[i].imageData.getPoint(n)),v=e=>{let{value:t}=e;c+=1,t>=u.lower&&t<=u.upper&&(h+=1)};c=0,h=0,u={lower:s,upper:l};let m=!1;tl(r,(()=>!0),v,g),m=0===a?h>0:h===c,e[n]=m?t:0}}(i,t,e,r,a,o)})),pt(e.volumeId),e},Pd=1e-6,Ld=1,Ad=0;function Ud(e,t,n){const[o,i]=n;if(Math.abs(t)<Pd)return e<0;const a=e/t;if(t>0){if(a>i)return 0;a>o&&(n[0]=a)}else{if(a<o)return 0;a<i&&(n[1]=a)}return 1}function Vd(e,t,n,o,i){const[a,r]=e,[s,l]=t,d=s-a,c=l-r;if(void 0===o||void 0===i?(o=e,i=t):(o[0]=e[0],o[1]=e[1],i[0]=t[0],i[1]=t[1]),Math.abs(d)<Pd&&Math.abs(c)<Pd&&a>=n[0]&&a<=n[2]&&r>=n[1]&&r<=n[3])return Ld;const h=[0,1];if(Ud(n[0]-a,d,h)&&Ud(a-n[2],-d,h)&&Ud(n[1]-r,c,h)&&Ud(r-n[3],-c,h)){const[e,t]=h;return t<1&&(i[0]=a+t*d,i[1]=r+t*c),e>0&&(o[0]+=e*d,o[1]+=e*c),Ld}return Ad}function Wd(e){return"number"==typeof e?e?e<0?-1:1:e==e?0:NaN:NaN}function Fd(e,t,n,o){const[i,a]=e,[r,s]=t,[l,d]=n,[c,h]=o,u=s-a,g=i-r,v=r*a-i*s,m=u*l+g*d+v,p=u*c+g*h+v;if(0!==m&&0!==p&&Wd(m)===Wd(p))return;const f=h-d,E=l-c,w=c*d-l*h,I=f*i+E*a+w,C=f*r+E*s+w;if(0!==I&&0!==C&&Wd(I)===Wd(C))return;const _=u*E-f*g;let T;T=g*w-E*v;const b=T/_;return T=f*v-u*w,[b,T/_]}function Hd(e,t,n){const o=[],i=function(e,t,n){let o,i;const a=[];arguments.length>3&&void 0!==arguments[3]&&!arguments[3]?(i=0,o=1):(i=e.length-1,o=0);for(let r=o;r<e.length;r++)qd(t,n,e[i],e[r])&&a.push([i,r]),i=r;return a}(e,t,n,!(arguments.length>3&&void 0!==arguments[3])||arguments[3]);for(let a=0;a<i.length;a++){const r=Kd(t,n,e[i[a][0]],e[i[a][1]]);o.push(r)}return o}function Bd(e,t,n){let o,i;arguments.length>3&&void 0!==arguments[3]&&!arguments[3]?(i=0,o=1):(i=e.length-1,o=0);for(let a=o;a<e.length;a++){if(qd(t,n,e[i],e[a]))return[i,a];i=a}}function Gd(e,t,n){let o,i;arguments.length>3&&void 0!==arguments[3]&&!arguments[3]?(i=0,o=1):(i=e.length-1,o=0);const a=[];for(let r=o;r<e.length;r++){const o=e[i],s=e[r];qd(t,n,o,s)&&a.push([i,r]),i=r}if(0===a.length)return;const r=[];a.forEach((n=>{const o=[e[n[0]],e[n[1]]],i=[(o[0][0]+o[1][0])/2,(o[0][1]+o[1][1])/2];r.push(ps.vec2.distance(i,t))}));const s=Math.min(...r);return{segment:a[r.indexOf(s)],distance:s}}function qd(e,t,n,o){let i=!1;const a=[jd(e,t,n),jd(e,t,o),jd(n,o,e),jd(n,o,t)];return a[0]!==a[1]&&a[2]!==a[3]||((0===a[0]&&zd(e,n,t)||0===a[1]&&zd(e,o,t)||0===a[2]&&zd(n,e,o)||0===a[3]&&zd(n,t,o))&&(i=!0),i)}function jd(e,t,n){const o=(t[1]-e[1])*(n[0]-t[0])-(t[0]-e[0])*(n[1]-t[1]);return 0===o?0:o>0?1:2}function zd(e,t,n){return t[0]<=Math.max(e[0],n[0])&&t[0]>=Math.min(e[0],n[0])&&t[1]<=Math.max(e[1],n[1])&&t[1]>=Math.min(e[1],n[1])}function Kd(e,t,n,o){const i=(o[1]-n[1])*(t[0]-e[0])-(o[0]-n[0])*(t[1]-e[1]);if(0==i)return;let a=e[1]-n[1],r=e[0]-n[0];const s=(o[0]-n[0])*a-(o[1]-n[1])*r,l=(t[0]-e[0])*a-(t[1]-e[1])*r;return a=s/i,r=l/i,[e[0]+a*(t[0]-e[0]),e[1]+a*(t[1]-e[1])]}const Yd=.001,Xd=(e,t)=>{let n,o,i;if(e instanceof J.StackViewport){const t=e.getImageData();o=t.direction.slice(0,3),i=t.direction.slice(3,6),n=t.spacing}else{const t=e.getImageData(),{direction:a,spacing:r}=t,{viewPlaneNormal:s,viewUp:l}=e.getCamera(),d=a.slice(0,3),c=a.slice(3,6),h=a.slice(6,9),u=ps.vec3.create();ps.vec3.cross(u,l,s);const g=Math.abs(ps.vec3.dot(u,d)),v=Math.abs(ps.vec3.dot(u,c)),m=Math.abs(ps.vec3.dot(u,h));let p;if(Math.abs(1-g)<Yd)p=r[0],o=d;else if(Math.abs(1-v)<Yd)p=r[1],o=c;else{if(!(Math.abs(1-m)<Yd))throw new Error("No support yet for oblique plane planar contours");p=r[2],o=h}const f=Math.abs(ps.vec3.dot(l,d)),E=Math.abs(ps.vec3.dot(l,c)),w=Math.abs(ps.vec3.dot(l,h));let I;if(Math.abs(1-f)<Yd)I=r[0],i=d;else if(Math.abs(1-E)<Yd)I=r[1],i=c;else{if(!(Math.abs(1-w)<Yd))throw new Error("No support yet for oblique plane planar contours");I=r[2],i=h}n=[p,I]}return{spacing:[n[0]/t,n[1]/t],xDir:o,yDir:i}},Zd=(e,t,n)=>ps.vec2.dist(e,t)<n,Jd=(e,t,n,o)=>{const{xDir:i,yDir:a,spacing:r}=o,s=(0,J.getEnabledElement)(e),{viewport:l}=s,d=l.canvasToWorld(t[t.length-1]),c=l.canvasToWorld(n),h=ps.vec3.create();ps.vec3.subtract(h,c,d);const u=Math.abs(ps.vec3.dot(h,i)),g=Math.abs(ps.vec3.dot(h,a)),v=Math.max(Math.floor(u/r[0]),Math.floor(g/r[0]));if(v>1){const e=t[t.length-1],o=ps.vec2.dist(e,n),i=ps.vec2.create();ps.vec2.subtract(i,n,e),ps.vec2.set(i,i[0]/o,i[1]/o);const a=o/v;for(let n=1;n<=v;n++)t.push([e[0]+a*i[0]*n,e[1]+a*i[1]*n])}else t.push(n);return v},$d=(e,t,n,o)=>{const i=[e[0]-t[0],e[1]-t[1]],a=[n[0]-t[0],n[1]-t[1]],r=i[0]*a[0]+i[1]*a[1];if(r<0)return!1;const s=Math.sqrt(a[0]*a[0]+a[1]*a[1]);if(0===s)return!1;const l=r/s,d=[a[0]/s,a[1]/s],c=[d[0]*l,d[1]*l],h=[t[0]+c[0],t[1]+c[1]];return!(ps.vec2.distance(e,h)>o||ps.vec2.distance(t,h)>ps.vec2.distance(t,n))};function Qd(e){const t=e.length;let n=0,o=t-1;for(let i=0;i<t;i++)n+=(e[o][0]+e[i][0])*(e[o][1]-e[i][1]),o=i;return Math.abs(n/2)}function ec(e,t){if(e.length!==t.length)throw Error("Both points should have the same dimensionality");const[n,o,i=0]=e,[a,r,s=0]=t;return Math.sqrt(Math.pow(n-a,2)+Math.pow(o-r,2)+Math.pow(i-s,2))}var tc=I(807),nc=I.n(tc);function oc(e,t,n,o){let i=arguments.length>4&&void 0!==arguments[4]?arguments[4]:.25;const a=e.getCamera(),{position:r}=a,{spacingInNormalDirection:s}=J.utilities.getTargetVolumeAndSpacingInNormalDir(e,a,n),l=s*i,d=e.getBounds(),c=d[0],h=d[1],u=[0,0,0];let g,v=[0,0,0];nc().subtract(t,r,u);for(let t=c;t<=h;t+=l){v=[t,0,0];const n=(t-r[0])/u[0];if(v[1]=n*u[1]+r[1],v[2]=n*u[2]+r[2],ic(v,d)){const t=o(e.getIntensityFromWorld(v),v);t&&(g=t)}}return g}const ic=function(e,t){const[n,o,i,a,r,s]=t;return e[0]>n&&e[0]<o&&e[1]>i&&e[1]<a&&e[2]>r&&e[2]<s},ac={filterAnnotationsWithinSlice:jl,getWorldWidthAndHeightFromCorners:od,filterAnnotationsForDisplay:zl,getPointInLineOfSightWithCriteria:oc};function rc(e){let t="";const n=e[0]<0?"R":"L",o=e[1]<0?"A":"P",i=e[2]<0?"F":"H",a=[Math.abs(e[0]),Math.abs(e[1]),Math.abs(e[2])],r=1e-4;for(let e=0;e<3;e++)if(a[0]>r&&a[0]>a[1]&&a[0]>a[2])t+=n,a[0]=0;else if(a[1]>r&&a[1]>a[0]&&a[1]>a[2])t+=o,a[1]=0;else if(a[2]>r&&a[2]>a[0]&&a[2]>a[1])t+=i,a[2]=0;else if(a[0]>r&&a[1]>r&&a[0]===a[1])t+=n+o,a[0]=0,a[1]=0;else if(a[0]>r&&a[2]>r&&a[0]===a[2])t+=n+i,a[0]=0,a[2]=0;else{if(!(a[1]>r&&a[2]>r&&a[1]===a[2]))break;t+=o+i,a[1]=0,a[2]=0}return t}function sc(e){let t=e.replace("H","f");return t=t.replace("F","h"),t=t.replace("R","l"),t=t.replace("L","r"),t=t.replace("A","p"),t=t.replace("P","a"),t=t.toUpperCase(),t}var lc=function(e){return e.CLIP_STOPPED="CORNERSTONE_CINE_TOOL_STOPPED",e.CLIP_STARTED="CORNERSTONE_CINE_TOOL_STARTED",e}(lc||{});const dc=lc,cc={};function hc(e,t){const n=(0,J.getEnabledElement)(e),{viewportId:o}=n;cc[o]=t}function uc(e){const t=(0,J.getEnabledElement)(e),{viewportId:n}=t;return cc[n]}const{ViewportStatus:gc}=J.Enums,{triggerEvent:vc}=J.utilities,mc=!0,pc=!0,fc=new Map;function Ec(e,t){var n;let o,i;if(void 0===e)throw new Error("playClip: element must not be undefined");const a=(0,J.getEnabledElement)(e);if(!a)throw new Error("playClip: element must be a valid Cornerstone enabled element");t.dynamicCineEnabled=null===(n=t.dynamicCineEnabled)||void 0===n||n;const{viewport:r}=a,s=_c(r),l=function(e,t){var n;if(e instanceof J.StackViewport)return function(e,t){const n=e.getImageIds();return{get numScrollSteps(){return n.length},get currentStepIndex(){return e.getTargetImageIdIndex()},get frameTimeVectorEnabled(){return!0},waitForRenderedCount:0,scroll(n){this.waitForRenderedCount<=t&&e.viewportStatus!==gc.RENDERED?this.waitForRenderedCount++:(this.waitForRenderedCount=0,Es(e,{delta:n,debounceLoading:mc}))}}}(e,null!==(n=t.waitForRendered)&&void 0!==n?n:30);if(e instanceof J.VolumeViewport){const n=_c(e);return t.dynamicCineEnabled&&null!=n&&n.isDynamicVolume()?function(e){return{get numScrollSteps(){return e.numTimePoints},get currentStepIndex(){return e.timePointIndex},get frameTimeVectorEnabled(){return!1},scroll(t){e.timePointIndex+=t}}}(n):function(e,t){const{volumeId:n}=t,o={viewPlaneNormal:ps.vec3.create(),scrollInfo:null},i=()=>{const t=e.getCamera();if(!o.scrollInfo||!ps.vec3.equals(t.viewPlaneNormal,o.viewPlaneNormal)){const i=J.utilities.getVolumeViewportScrollInfo(e,n);o.viewPlaneNormal=t.viewPlaneNormal,o.scrollInfo=i}return o.scrollInfo};return{get numScrollSteps(){return i().numScrollSteps},get currentStepIndex(){return i().currentStepIndex},get frameTimeVectorEnabled(){const n=e.getCamera(),o=t.direction.slice(6,9).map((e=>-e)),i=ps.vec3.dot(o,n.viewPlaneNormal);return ps.glMatrix.equals(i,1)},scroll(t){i().currentStepIndex+=t,Es(e,{delta:t})}}}(e,n)}throw new Error("Unknown viewport type")}(r,t);let d=uc(e);const c=t.dynamicCineEnabled&&(null==s?void 0:s.isDynamicVolume());var h,u,g,v;if(c&&Cc(e),d?Ic(e,c):(d={intervalId:void 0,framesPerSecond:30,lastFrameTimeStamp:void 0,ignoreFrameTimeVector:!1,usingFrameTimeVector:!1,frameTimeVector:null!==(h=t.frameTimeVector)&&void 0!==h?h:void 0,speed:null!==(u=t.frameTimeVectorSpeedMultiplier)&&void 0!==u?u:1,reverse:null!==(g=t.reverse)&&void 0!==g&&g,loop:null===(v=t.loop)||void 0===v||v},hc(e,d)),d.dynamicCineEnabled=t.dynamicCineEnabled,(t.framesPerSecond<0||t.framesPerSecond>0)&&(d.framesPerSecond=Number(t.framesPerSecond),d.reverse=d.framesPerSecond<0,d.ignoreFrameTimeVector=!0),!0!==d.ignoreFrameTimeVector&&d.frameTimeVector&&d.frameTimeVector.length===l.numScrollSteps&&l.frameTimeVectorEnabled){const{timeouts:e,isTimeVarying:t}=function(e,t){let n,o,i,a=0;const r=e.length,s=[];let l=!1;for(("number"!=typeof t||t<=0)&&(t=1),n=1;n<r;n++)i=Number(e[n])/t|0,s.push(i),1===n?o=i:i!==o&&(l=!0),a+=i;return s.length>0&&(i=l?a/s.length|0:s[0],s.push(i)),{timeouts:s,isTimeVarying:l}}(d.frameTimeVector,d.speed);o=e,i=t}const m=()=>{const{numScrollSteps:t,currentStepIndex:n}=l;let o=n+(d.reverse?-1:1);if(!pc&&(o<0||o>=t)){Ic(e,c);const t={element:e};return void vc(e,dc.CLIP_STOPPED,t)}o>=t?o=0:o<0&&(o=t-1);const i=o-n;i&&l.scroll(i)};c&&fc.set(s.volumeId,e),o&&o.length>0&&i?(d.usingFrameTimeVector=!0,d.intervalId=window.setTimeout((function e(){d.intervalId=window.setTimeout(e,o[l.currentStepIndex]),m()}),0)):(d.usingFrameTimeVector=!1,d.intervalId=window.setInterval(m,1e3/Math.abs(d.framesPerSecond)));const p={element:e};vc(e,dc.CLIP_STARTED,p)}function wc(e){Ic(e,!0)}function Ic(e,t){const n=(0,J.getEnabledElement)(e);if(!n)return;const{viewport:o}=n,i=uc(o.element);i&&function(e){const t=e.intervalId;void 0!==t&&(e.intervalId=void 0,e.usingFrameTimeVector?clearTimeout(t):clearInterval(t))}(i),t&&o instanceof J.BaseVolumeViewport&&Cc(e)}function Cc(e){const{viewport:t}=(0,J.getEnabledElement)(e),n=_c(t);if(null!=n&&n.isDynamicVolume()){const t=fc.get(n.volumeId);fc.delete(n.volumeId),t&&t!==e&&wc(t)}}function _c(e){const t=function(e){return e.getActors().map((e=>J.cache.getVolume(e.uid))).filter((e=>!!e))}(e),n=t.find((e=>e.isDynamicVolume()));return null!=n?n:t[0]}function Tc(e){var t=e.length-1;return function(n){var o=n<=0?n=0:n>=1?(n=1,t-1):Math.floor(n*t),i=e[o],a=e[o+1],r=o>0?e[o-1]:2*i-a,s=o<t-1?e[o+2]:2*a-i;return function(e,t,n,o,i){var a=e*e,r=a*e;return((1-3*e+3*a-r)*t+(4-6*a+3*r)*n+(1+3*e+3*a-3*r)*o+r*i)/6}((n-o/t)*t,r,i,a,s)}}function bc(e,t){for(var n=new Array(t),o=0;o<t;++o)n[o]=e(o/(t-1));return n}function Dc(e){return e.length}function Sc(){return function(e){if(!(i=e.length))return[];for(var t=-1,n=function(e,t){let n;if(void 0===t)for(const t of e)null!=t&&(n>t||void 0===n&&t>=t)&&(n=t);else{let o=-1;for(let i of e)null!=(i=t(i,++o,e))&&(n>i||void 0===n&&i>=i)&&(n=i)}return n}(e,Dc),o=new Array(n);++t<n;)for(var i,a=-1,r=o[t]=new Array(i);++a<i;)r[a]=e[a][t];return o}(arguments)}function yc(e,t,n,o){var i,a;const r=n-t+1,s=null!==(i=Math.floor(o/100*r))&&void 0!==i?i:1,l=null!==(a=Math.floor(r/s))&&void 0!==a?a:1;if(isNaN(r)||!r||!l)return e;if(r/l<2)return e;const d=Math.max(0,t),c=Math.min(e.length-1,n),h=e.slice(0,d),u=e.slice(c+1,e.length);return[...h,...function(e,t){if(!t||0===t.length||t.length===e.length)return e;const n=t[t.length-1]-t[0]+1,o=Tc(t.map((t=>e[t][0]))),i=Tc(t.map((t=>e[t][1])));if(3===(null===(a=e[0])||void 0===a?void 0:a.length)){const a=Tc(t.map((t=>e[t][2])));return Sc(bc(o,n),bc(i,n),bc(a,n))}return Sc(bc(o,n),bc(i,n));var a}(e,function(e,t){const n=[],[o,i]=t,a=i-o+1,r=Math.floor(a/e);let s=0,l=Math.round((a-1)/(r-1)*s)+o;for(;l<=i;)n.push(l),s++,l=Math.round((a-1)/(r-1)*s)+o;return n}(l,[d,c])),...u]}function Oc(e){var t,n;return!0===(null==e||null===(t=e.interpolation)||void 0===t?void 0:t.interpolateOnAdd)||!0===(null==e||null===(n=e.interpolation)||void 0===n?void 0:n.interpolateOnEdit)}function Mc(e,t,n){return(e+t+n)%t}function xc(e,t,n,o){const[,i,a]=e,[,r,s]=t,l=a.length,d=s.length;let c=e[0],h=t[0];if(!(a[c]&&s[h]&&a[i]&&s[r]))return[void 0,void 0];for(;c!==i&&h!==r;){if(n(s[h],a[c]))return[c,h];c=Mc(c,l,o),h=Mc(h,d,o)}return[void 0,void 0]}function Nc(e,t,n){const{interpolation:o}=e,i=t;if(o){const{knotsRatioPercentageOnAdd:e,knotsRatioPercentageOnEdit:i,interpolateOnAdd:a=!1,interpolateOnEdit:r=!1}=o,s=n?i:e;if(n?r:a){const[e,o]=n?function(e,t){const[n,o]=function(e,t){for(let n=0;n<e.length;n++)for(let o=0;o<t.length;o++)if(0===ec(e[n],t[o]))return[n,o]}(e,t)||[],i=(e,t)=>!1===function(e,t){return ec(e,t)<.001}(e,t),[a,r]=xc([Mc(n,e.length,1),n,e],[Mc(o,t.length,1),o,t],i,1),[s]=xc([Mc(a,e.length,-1),a,e],[Mc(r,t.length,-1),r,t],i,-1);return[a,s]}(t,n):[0,t.length-1];return t[e]&&t[o]?yc(t,e,o,s):t}}return i}function kc(e,t){const n=e[0],o=e[e.length-1],i=ps.vec2.create();ps.vec2.set(i,o[0]-n[0],o[1]-n[1]),ps.vec2.normalize(i,i);const a=ps.vec2.create(),r=ps.vec2.create();ps.vec2.set(a,-i[1],i[0]),ps.vec2.set(r,i[1],-i[0]);const s=[(n[0]+o[0])/2,(n[1]+o[1])/2],l={dist:0,index:null};for(let t=0;t<e.length;t++){const n=e[t],o=ps.vec2.dist(n,s);o>l.dist&&(l.dist=o,l.index=t)}return[e[l.index],s].map(t.canvasToWorld)}const{addCanvasPointsToArray:Rc,pointsAreWithinCloseContourProximity:Pc,getFirstIntersectionWithPolyline:Lc,getSubPixelSpacingAndXYDirections:Ac}=S;function Uc(e,t,n){this.isDrawing=!0;const o=e.detail,{currentPoints:i,element:a}=o,r=i.canvas,s=(0,J.getEnabledElement)(a),{viewport:l}=s,{spacing:d,xDir:c,yDir:h}=Ac(l,this.configuration.subPixelResolution);this.drawData={canvasPoints:[r],polylineIndex:0},this.commonData={annotation:t,viewportIdsToRender:n,spacing:d,xDir:c,yDir:h,movingTextBox:!1},He.isInteractingWithTool=!0,a.addEventListener(Q.MOUSE_UP,this.mouseUpDrawCallback),a.addEventListener(Q.MOUSE_DRAG,this.mouseDragDrawCallback),a.addEventListener(Q.MOUSE_CLICK,this.mouseUpDrawCallback),a.addEventListener(Q.TOUCH_END,this.mouseUpDrawCallback),a.addEventListener(Q.TOUCH_DRAG,this.mouseDragDrawCallback),a.addEventListener(Q.TOUCH_TAP,this.mouseUpDrawCallback),Qr(a)}function Vc(e){He.isInteractingWithTool=!1,e.removeEventListener(Q.MOUSE_UP,this.mouseUpDrawCallback),e.removeEventListener(Q.MOUSE_DRAG,this.mouseDragDrawCallback),e.removeEventListener(Q.MOUSE_CLICK,this.mouseUpDrawCallback),e.removeEventListener(Q.TOUCH_END,this.mouseUpDrawCallback),e.removeEventListener(Q.TOUCH_DRAG,this.mouseDragDrawCallback),e.removeEventListener(Q.TOUCH_TAP,this.mouseUpDrawCallback),$r(e)}function Wc(e){const t=e.detail,{currentPoints:n,element:o}=t,i=n.world,a=n.canvas,r=(0,J.getEnabledElement)(o),{renderingEngine:s,viewport:l}=r,{annotation:d,viewportIdsToRender:c,xDir:h,yDir:u,spacing:g,movingTextBox:v}=this.commonData,{polylineIndex:m,canvasPoints:p}=this.drawData,f=p[p.length-1],E=l.canvasToWorld(f),w=ps.vec3.create();ps.vec3.subtract(w,i,E);const I=Math.abs(ps.vec3.dot(w,h)),C=Math.abs(ps.vec3.dot(w,u));if(!(I<=g[0]&&C<=g[1])){if(v){this.isDrawing=!1;const{deltaPoints:e}=t,n=e.world,{textBox:o}=d.data.handles,{worldPosition:i}=o;i[0]+=n[0],i[1]+=n[1],i[2]+=n[2],o.hasMoved=!0}else{const t=this.findCrossingIndexDuringCreate(e);if(void 0!==t)this.applyCreateOnCross(e,t);else{const e=Rc(o,p,a,this.commonData);this.drawData.polylineIndex=m+e}}Bi(s,c)}}function Fc(e){const{allowOpenContours:t}=this.configuration,{canvasPoints:n}=this.drawData,o=n[0],i=n[n.length-1],a=e.detail,{element:r}=a;t&&!Pc(o,i,this.configuration.closeContourProximity)?this.completeDrawOpenContour(r):this.completeDrawClosedContour(r)}function Hc(e){this.removeCrossedLinesOnCompleteDraw();const{canvasPoints:t}=this.drawData;if(this.haltDrawing(e,t))return!1;const{annotation:n,viewportIdsToRender:o}=this.commonData,i=(0,J.getEnabledElement)(e),{viewport:a,renderingEngine:r}=i;Rc(e,t,t[0],this.commonData),t.pop();const s=(Oc(this.configuration)?Nc(this.configuration,t):t).map((e=>a.canvasToWorld(e)));n.data.polyline=s,n.data.isOpenContour=!1;const{textBox:l}=n.data.handles;return l.hasMoved||this.triggerAnnotationCompleted(n),this.isDrawing=!1,this.drawData=void 0,this.commonData=void 0,Bi(r,o),this.deactivateDraw(e),!0}function Bc(){const{canvasPoints:e}=this.drawData,t=e.length,n=[e[0],e[t-1]],o=e.slice(0,-1).slice(1),i=Lc(o,n[0],n[1],!1);if(i){const t=i[1];this.drawData.canvasPoints=e.splice(0,t)}}function Gc(e){const{canvasPoints:t}=this.drawData;if(this.haltDrawing(e,t))return!1;const{annotation:n,viewportIdsToRender:o}=this.commonData,i=(0,J.getEnabledElement)(e),{viewport:a,renderingEngine:r}=i,s=(Oc(this.configuration)?Nc(this.configuration,t):t).map((e=>a.canvasToWorld(e)));n.data.polyline=s,n.data.isOpenContour=!0;const{textBox:l}=n.data.handles;return n.data.handles.points=[s[0],s[s.length-1]],n.data.isOpenUShapeContour&&(n.data.openUShapeContourVectorToPeak=kc(t,a)),l.hasMoved||this.triggerAnnotationCompleted(n),this.isDrawing=!1,this.drawData=void 0,this.commonData=void 0,Bi(r,o),this.deactivateDraw(e),!0}function qc(e){const t=e.detail,{currentPoints:n,lastPoints:o}=t,i=n.canvas,a=o.canvas,{canvasPoints:r}=this.drawData,s=r.slice(0,-1),l=Lc(s,i,a,!1);if(void 0!==l)return l[0]}function jc(e,t){const n=e.detail,{element:o}=n,{canvasPoints:i}=this.drawData,{annotation:a,viewportIdsToRender:r}=this.commonData;Rc(o,i,i[t],this.commonData),i.pop();for(let e=0;e<t;e++)i.shift();this.completeDrawClosedContour(o)&&this.activateClosedContourEdit(e,a,r)}function zc(e){const{allowOpenContours:t}=this.configuration,{canvasPoints:n}=this.drawData,o=n[0],i=n[n.length-1];t&&!Pc(o,i,this.configuration.closeContourProximity)?this.completeDrawOpenContour(e):this.completeDrawClosedContour(e)}function Kc(e,t){const{subPixelResolution:n}=this.configuration;if(function(e,t){const n=Math.max(3*t,3);return e.length<n}(t,n)){const{annotation:t,viewportIdsToRender:n}=this.commonData,o=(0,J.getEnabledElement)(e),{renderingEngine:i}=o;return Qe(t.annotationUID),this.isDrawing=!1,this.drawData=void 0,this.commonData=void 0,Bi(i,n),this.deactivateDraw(e),!0}return!1}const Yc=function(e){e.activateDraw=Uc.bind(e),e.deactivateDraw=Vc.bind(e),e.applyCreateOnCross=jc.bind(e),e.findCrossingIndexDuringCreate=qc.bind(e),e.completeDrawOpenContour=Gc.bind(e),e.removeCrossedLinesOnCompleteDraw=Bc.bind(e),e.mouseDragDrawCallback=Wc.bind(e),e.mouseUpDrawCallback=Fc.bind(e),e.completeDrawClosedContour=Hc.bind(e),e.cancelDrawing=zc.bind(e),e.haltDrawing=Kc.bind(e)},{addCanvasPointsToArray:Xc,getFirstIntersectionWithPolyline:Zc}=S;function Jc(e,t){const n=e.detail,{element:o,currentPoints:i,lastPoints:a}=n,r=i.canvas,s=a.canvas,{editCanvasPoints:l,prevCanvasPoints:d}=this.editData,c=Zc(d,r,s,t);if(c)this.editData.startCrossingIndex=c[0],this.removePointsUpUntilFirstCrossing(t);else if(d.length>=2)if(l.length>this.configuration.checkCanvasEditFallbackProximity){const e=l[0],t=[];for(let n=0;n<d.length;n++){const o=d[n],i=ps.vec2.distance(o,e);t.push({distance:i,index:n})}t.sort(((e,t)=>e.distance-t.distance));const n=[t[0],t[1]],o=Math.min(n[0].index,n[1].index);this.editData.startCrossingIndex=o}else{const e=ps.vec2.create();ps.vec2.subtract(e,l[1],l[0]),ps.vec2.normalize(e,e);const n=6,i=[l[0][0]-e[0]*n,l[0][1]-e[1]*n],a=Zc(d,i,l[0],t);if(a){const e=[i];Xc(o,e,l[0],this.commonData),l.unshift(...e),this.removePointsUpUntilFirstCrossing(t),this.editData.editIndex=l.length-1,this.editData.startCrossingIndex=a[0]}}}function $c(e){const{editCanvasPoints:t,prevCanvasPoints:n}=this.editData;let o=0;for(let i=0;i<t.length-1;i++){const a=[t[i],t[i+1]];if(o++,Zc(n,a[0],a[1],e))break}t.splice(0,o),this.editData.editIndex=t.length-1}function Qc(e,t){const n=e.detail,{currentPoints:o,lastPoints:i}=n,a=o.canvas,r=i.canvas,{prevCanvasPoints:s}=this.editData;return!!Zc(s,a,r,t)}function eh(e){const{prevCanvasPoints:t,editCanvasPoints:n}=this.editData;for(let o=n.length-1;o>0;o--){const i=[n[o],n[o-1]],a=!!Zc(t,i[0],i[1],e);if(n.pop(),a)break}}function th(){const{editCanvasPoints:e,prevCanvasPoints:t,startCrossingIndex:n}=this.editData;if(void 0===n)return;const o=e[e.length-1],i=[];for(let e=0;e<t.length;e++){const n=t[e],a=ps.vec2.distance(n,o);i.push({distance:a,index:e})}i.sort(((e,t)=>e.distance-t.distance));const a=e.slice(0,-1);for(let n=0;n<i.length;n++){const{index:o}=i[n],r=t[o],s=e[e.length-1];if(!Zc(a,r,s,!1))return o}return-1}function nh(e){const t=e.detail,{currentPoints:n,lastPoints:o}=t,i=n.canvas,a=o.canvas,{editCanvasPoints:r}=this.editData,s=r.slice(0,-2),l=Zc(s,i,a,!1);if(!l)return;const d=l[0],c=r.length-d;for(let e=0;e<c;e++)r.pop()}const oh=function(e){e.checkForFirstCrossing=Jc.bind(e),e.removePointsUpUntilFirstCrossing=$c.bind(e),e.checkForSecondCrossing=Qc.bind(e),e.findSnapIndex=th.bind(e),e.removePointsAfterSecondCrossing=eh.bind(e),e.checkAndRemoveCrossesOnEditLine=nh.bind(e)},{getSubPixelSpacingAndXYDirections:ih,addCanvasPointsToArray:ah,calculateAreaOfPoints:rh}=S;function sh(e,t,n){this.isEditingClosed=!0;const o=e.detail,{currentPoints:i,element:a}=o,r=i.canvas,s=(0,J.getEnabledElement)(a),{viewport:l}=s,d=t.data.polyline.map(l.worldToCanvas),{spacing:c,xDir:h,yDir:u}=ih(l,this.configuration.subPixelResolution);this.editData={prevCanvasPoints:d,editCanvasPoints:[r],startCrossingIndex:void 0,editIndex:0},this.commonData={annotation:t,viewportIdsToRender:n,spacing:c,xDir:h,yDir:u,movingTextBox:!1},He.isInteractingWithTool=!0,a.addEventListener(Q.MOUSE_UP,this.mouseUpClosedContourEditCallback),a.addEventListener(Q.MOUSE_DRAG,this.mouseDragClosedContourEditCallback),a.addEventListener(Q.MOUSE_CLICK,this.mouseUpClosedContourEditCallback),a.addEventListener(Q.TOUCH_END,this.mouseUpClosedContourEditCallback),a.addEventListener(Q.TOUCH_DRAG,this.mouseDragClosedContourEditCallback),a.addEventListener(Q.TOUCH_TAP,this.mouseUpClosedContourEditCallback),Qr(a)}function lh(e){He.isInteractingWithTool=!1,e.removeEventListener(Q.MOUSE_UP,this.mouseUpClosedContourEditCallback),e.removeEventListener(Q.MOUSE_DRAG,this.mouseDragClosedContourEditCallback),e.removeEventListener(Q.MOUSE_CLICK,this.mouseUpClosedContourEditCallback),e.removeEventListener(Q.TOUCH_END,this.mouseUpClosedContourEditCallback),e.removeEventListener(Q.TOUCH_DRAG,this.mouseDragClosedContourEditCallback),e.removeEventListener(Q.TOUCH_TAP,this.mouseUpClosedContourEditCallback),$r(e)}function dh(e){const t=e.detail,{currentPoints:n,element:o}=t,i=n.world,a=n.canvas,r=(0,J.getEnabledElement)(o),{renderingEngine:s,viewport:l}=r,{viewportIdsToRender:d,xDir:c,yDir:h,spacing:u}=this.commonData,{editIndex:g,editCanvasPoints:v,startCrossingIndex:m}=this.editData,p=v[v.length-1],f=l.canvasToWorld(p),E=ps.vec3.create();ps.vec3.subtract(E,i,f);const w=Math.abs(ps.vec3.dot(E,c)),I=Math.abs(ps.vec3.dot(E,h));if(w<=u[0]&&I<=u[1])return;void 0!==m&&this.checkAndRemoveCrossesOnEditLine(e);const C=g+ah(o,v,a,this.commonData);this.editData.editIndex=C,void 0===m&&v.length>1&&this.checkForFirstCrossing(e,!0),this.editData.snapIndex=this.findSnapIndex(),-1!==this.editData.snapIndex?(this.editData.fusedCanvasPoints=this.fuseEditPointsWithClosedContour(e),void 0!==m&&this.checkForSecondCrossing(e,!0)&&(this.removePointsAfterSecondCrossing(!0),this.finishEditAndStartNewEdit(e)),Bi(s,d)):this.finishEditAndStartNewEdit(e)}function ch(e){const t=e.detail,{element:n}=t,o=(0,J.getEnabledElement)(n),{viewport:i,renderingEngine:a}=o,{annotation:r,viewportIdsToRender:s}=this.commonData,{fusedCanvasPoints:l,editCanvasPoints:d}=this.editData,c=l.map((e=>i.canvasToWorld(e)));r.data.polyline=c,r.data.isOpenContour=!1,this.triggerAnnotationModified(r,o);const h=d.pop();this.editData={prevCanvasPoints:l,editCanvasPoints:[h],startCrossingIndex:void 0,editIndex:0,snapIndex:void 0},Bi(a,s)}function hh(e){const{prevCanvasPoints:t,editCanvasPoints:n,startCrossingIndex:o,snapIndex:i}=this.editData;if(void 0===o||void 0===i)return;const a=e.detail,{element:r}=a,s=[...n];let l,d;ah(r,s,t[i],this.commonData),s.length>n.length&&s.pop(),o>i?(l=i,d=o):(l=o,d=i);const c=ps.vec2.distance(t[l],s[0]),h=ps.vec2.distance(t[l],s[s.length-1]),u=ps.vec2.distance(t[d],s[0]),g=ps.vec2.distance(t[d],s[s.length-1]),v=[];for(let e=0;e<l;e++){const n=t[e];v.push([n[0],n[1]])}let m=c+g,p=h+u;if(m<p)for(let e=0;e<s.length;e++){const t=s[e];v.push([t[0],t[1]])}else for(let e=s.length-1;e>=0;e--){const t=s[e];v.push([t[0],t[1]])}for(let e=d;e<t.length;e++){const n=t[e];v.push([n[0],n[1]])}const f=[];for(let e=l;e<d;e++){const n=t[e];f.push([n[0],n[1]])}if(m=u+h,p=g+c,m<p)for(let e=0;e<s.length;e++){const t=s[e];f.push([t[0],t[1]])}else for(let e=s.length-1;e>=0;e--){const t=s[e];f.push([t[0],t[1]])}return rh(v)>rh(f)?v:f}function uh(e){const t=e.detail,{element:n}=t;this.completeClosedContourEdit(n)}function gh(e){const t=(0,J.getEnabledElement)(e),{viewport:n,renderingEngine:o}=t,{annotation:i,viewportIdsToRender:a}=this.commonData,{fusedCanvasPoints:r,prevCanvasPoints:s}=this.editData;if(r){const e=(Oc(this.configuration)?Nc(this.configuration,r,s):r).map((e=>n.canvasToWorld(e)));i.data.polyline=e,i.data.isOpenContour=!1,i.invalidated=!0,this.triggerAnnotationModified(i,t)}this.isEditingClosed=!1,this.editData=void 0,this.commonData=void 0,Bi(o,a),this.deactivateClosedContourEdit(e)}function vh(e){this.completeClosedContourEdit(e)}const mh=function(e){e.activateClosedContourEdit=sh.bind(e),e.deactivateClosedContourEdit=lh.bind(e),e.mouseDragClosedContourEditCallback=dh.bind(e),e.mouseUpClosedContourEditCallback=uh.bind(e),e.finishEditAndStartNewEdit=ch.bind(e),e.fuseEditPointsWithClosedContour=hh.bind(e),e.cancelClosedContourEdit=vh.bind(e),e.completeClosedContourEdit=gh.bind(e)},{addCanvasPointsToArray:ph,getSubPixelSpacingAndXYDirections:fh}=S;function Eh(e,t,n){this.isEditingOpen=!0;const o=e.detail,{currentPoints:i,element:a}=o,r=i.canvas,s=(0,J.getEnabledElement)(a),{viewport:l}=s,d=t.data.polyline.map(l.worldToCanvas),{spacing:c,xDir:h,yDir:u}=fh(l,this.configuration.subPixelResolution);this.editData={prevCanvasPoints:d,editCanvasPoints:[r],startCrossingIndex:void 0,editIndex:0},this.commonData={annotation:t,viewportIdsToRender:n,spacing:c,xDir:h,yDir:u,movingTextBox:!1},He.isInteractingWithTool=!0,a.addEventListener(Q.MOUSE_UP,this.mouseUpOpenContourEditCallback),a.addEventListener(Q.MOUSE_DRAG,this.mouseDragOpenContourEditCallback),a.addEventListener(Q.MOUSE_CLICK,this.mouseUpOpenContourEditCallback),a.addEventListener(Q.TOUCH_END,this.mouseUpOpenContourEditCallback),a.addEventListener(Q.TOUCH_DRAG,this.mouseDragOpenContourEditCallback),a.addEventListener(Q.TOUCH_TAP,this.mouseUpOpenContourEditCallback),Qr(a)}function wh(e){He.isInteractingWithTool=!1,e.removeEventListener(Q.MOUSE_UP,this.mouseUpOpenContourEditCallback),e.removeEventListener(Q.MOUSE_DRAG,this.mouseDragOpenContourEditCallback),e.removeEventListener(Q.MOUSE_CLICK,this.mouseUpOpenContourEditCallback),e.removeEventListener(Q.TOUCH_END,this.mouseUpOpenContourEditCallback),e.removeEventListener(Q.TOUCH_DRAG,this.mouseDragOpenContourEditCallback),e.removeEventListener(Q.TOUCH_TAP,this.mouseUpOpenContourEditCallback),$r(e)}function Ih(e){const t=e.detail,{currentPoints:n,element:o}=t,i=n.world,a=n.canvas,r=(0,J.getEnabledElement)(o),{renderingEngine:s,viewport:l}=r,{viewportIdsToRender:d,xDir:c,yDir:h,spacing:u}=this.commonData,{editIndex:g,editCanvasPoints:v,startCrossingIndex:m}=this.editData,p=v[v.length-1],f=l.canvasToWorld(p),E=ps.vec3.create();ps.vec3.subtract(E,i,f);const w=Math.abs(ps.vec3.dot(E,c)),I=Math.abs(ps.vec3.dot(E,h));if(w<=u[0]&&I<=u[1])return;void 0!==m&&this.checkAndRemoveCrossesOnEditLine(e);const C=g+ph(o,v,a,this.commonData);this.editData.editIndex=C,void 0===m&&v.length>1&&this.checkForFirstCrossing(e,!1),this.editData.snapIndex=this.findSnapIndex(),this.editData.fusedCanvasPoints=this.fuseEditPointsWithOpenContour(e),void 0!==m&&this.checkForSecondCrossing(e,!1)?(this.removePointsAfterSecondCrossing(!1),this.finishEditOpenOnSecondCrossing(e)):this.checkIfShouldOverwriteAnEnd(e)&&this.openContourEditOverwriteEnd(e),Bi(s,d)}function Ch(e){const t=e.detail,{element:n}=t,o=(0,J.getEnabledElement)(n),{viewport:i}=o,{annotation:a,viewportIdsToRender:r}=this.commonData,s=this.fuseEditPointsForOpenContourEndEdit().map((e=>i.canvasToWorld(e)));a.data.polyline=s,a.data.isOpenContour=!0,a.data.handles.points=[s[0],s[s.length-1]],a.data.handles.activeHandleIndex=1,this.triggerAnnotationModified(a,o),this.isEditingOpen=!1,this.editData=void 0,this.commonData=void 0,this.deactivateOpenContourEdit(n),this.activateOpenContourEndEdit(e,a,r,null)}function _h(e){const t=e.detail,{currentPoints:n,lastPoints:o}=t,i=n.canvas,a=o.canvas,{snapIndex:r,prevCanvasPoints:s,startCrossingIndex:l}=this.editData;if(void 0===l||void 0===r)return!1;if(-1===r)return!0;if(0!==r&&r!==s.length-1)return!1;const d=i,c=a,h=s[r],u=ps.vec2.create(),g=ps.vec2.create();ps.vec2.set(u,d[0]-c[0],d[1]-c[1]),ps.vec2.set(g,d[0]-h[0],d[1]-h[1]);const v=ps.vec2.dot(u,g),m=Math.sqrt(u[0]*u[0]+u[1]*u[1]),p=Math.sqrt(g[0]*g[0]+g[1]*g[1]);return Math.acos(v/(m*p))<Math.PI/2}function Th(){const{snapIndex:e,prevCanvasPoints:t,editCanvasPoints:n,startCrossingIndex:o}=this.editData,i=[];if(0===e)for(let e=t.length-1;e>=o;e--){const n=t[e];i.push([n[0],n[1]])}else for(let e=0;e<o;e++){const n=t[e];i.push([n[0],n[1]])}if(ps.vec2.distance(t[o],n[0])<ps.vec2.distance(t[o],n[n.length-1]))for(let e=0;e<n.length;e++){const t=n[e];i.push([t[0],t[1]])}else for(let e=n.length-1;e>=0;e--){const t=n[e];i.push([t[0],t[1]])}return i}function bh(e){const{prevCanvasPoints:t,editCanvasPoints:n,startCrossingIndex:o,snapIndex:i}=this.editData;if(void 0===o||void 0===i)return;const a=e.detail,{element:r}=a,s=[...n];let l,d;ph(r,s,t[i],this.commonData),s.length>n.length&&s.pop(),o>i?(l=i,d=o):(l=o,d=i);const c=ps.vec2.distance(t[l],s[0]),h=ps.vec2.distance(t[l],s[s.length-1]),u=ps.vec2.distance(t[d],s[0]),g=ps.vec2.distance(t[d],s[s.length-1]),v=[];for(let e=0;e<l;e++){const n=t[e];v.push([n[0],n[1]])}if(c+g<h+u)for(let e=0;e<s.length;e++){const t=s[e];v.push([t[0],t[1]])}else for(let e=s.length-1;e>=0;e--){const t=s[e];v.push([t[0],t[1]])}for(let e=d;e<t.length;e++){const n=t[e];v.push([n[0],n[1]])}return v}function Dh(e){const t=e.detail,{element:n}=t,o=(0,J.getEnabledElement)(n),{viewport:i,renderingEngine:a}=o,{annotation:r,viewportIdsToRender:s}=this.commonData,{fusedCanvasPoints:l,editCanvasPoints:d}=this.editData,c=l.map((e=>i.canvasToWorld(e)));r.data.polyline=c,r.data.isOpenContour=!0,r.data.handles.points=[c[0],c[c.length-1]],this.triggerAnnotationModified(r,o);const h=d.pop();this.editData={prevCanvasPoints:l,editCanvasPoints:[h],startCrossingIndex:void 0,editIndex:0},Bi(a,s)}function Sh(e){const t=e.detail,{element:n}=t;this.completeOpenContourEdit(n)}function yh(e){const t=(0,J.getEnabledElement)(e),{viewport:n,renderingEngine:o}=t,{annotation:i,viewportIdsToRender:a}=this.commonData,{fusedCanvasPoints:r,prevCanvasPoints:s}=this.editData;if(r){const e=(Oc(this.configuration)?Nc(this.configuration,r,s):r).map((e=>n.canvasToWorld(e)));i.data.polyline=e,i.data.isOpenContour=!0,i.data.handles.points=[e[0],e[e.length-1]],i.data.isOpenUShapeContour&&(i.data.openUShapeContourVectorToPeak=kc(r,n)),i.invalidated=!0,this.triggerAnnotationModified(i,t)}this.isEditingOpen=!1,this.editData=void 0,this.commonData=void 0,Bi(o,a),this.deactivateOpenContourEdit(e)}function Oh(e){this.completeOpenContourEdit(e)}const Mh=function(e){e.activateOpenContourEdit=Eh.bind(e),e.deactivateOpenContourEdit=wh.bind(e),e.mouseDragOpenContourEditCallback=Ih.bind(e),e.mouseUpOpenContourEditCallback=Sh.bind(e),e.fuseEditPointsWithOpenContour=bh.bind(e),e.finishEditOpenOnSecondCrossing=Dh.bind(e),e.checkIfShouldOverwriteAnEnd=_h.bind(e),e.fuseEditPointsForOpenContourEndEdit=Th.bind(e),e.openContourEditOverwriteEnd=Ch.bind(e),e.cancelOpenContourEdit=Oh.bind(e),e.completeOpenContourEdit=yh.bind(e)},{getSubPixelSpacingAndXYDirections:xh}=S;function Nh(e,t,n,o){this.isDrawing=!0;const i=e.detail,{element:a}=i,r=(0,J.getEnabledElement)(a),{viewport:s}=r,{spacing:l,xDir:d,yDir:c}=xh(s,this.configuration.subPixelResolution),h=t.data.polyline.map(s.worldToCanvas);0===t.data.handles.activeHandleIndex&&h.reverse();let u=!1;o.worldPosition&&(u=!0),this.drawData={canvasPoints:h,polylineIndex:h.length-1},this.commonData={annotation:t,viewportIdsToRender:n,spacing:l,xDir:d,yDir:c,movingTextBox:u},He.isInteractingWithTool=!0,a.addEventListener(Q.MOUSE_UP,this.mouseUpDrawCallback),a.addEventListener(Q.MOUSE_DRAG,this.mouseDragDrawCallback),a.addEventListener(Q.MOUSE_CLICK,this.mouseUpDrawCallback),a.addEventListener(Q.TOUCH_END,this.mouseUpDrawCallback),a.addEventListener(Q.TOUCH_DRAG,this.mouseDragDrawCallback),a.addEventListener(Q.TOUCH_TAP,this.mouseUpDrawCallback),Qr(a)}const kh=function(e){e.activateOpenContourEndEdit=Nh.bind(e)},{pointsAreWithinCloseContourProximity:Rh}=S;function Ph(e,t){const n={toolGroupId:this.toolGroupId,toolName:this.getToolName(),viewportId:e.viewport.id,annotationUID:t.annotationUID},o=this.getStyle("lineWidth",n,t),i=this.getStyle("lineDash",n,t),a=this.getStyle("color",n,t);return{color:void 0===a?void 0:a,width:void 0===o?void 0:o,lineDash:void 0===i?void 0:i,connectLastToFirst:!t.data.isOpenContour}}function Lh(e,t,n){var o;null!=e&&null!==(o=e.viewport)&&void 0!==o&&o.getImageData()&&(n.data.isOpenContour?n.data.isOpenUShapeContour?(function(e,t){t.data.openUShapeContourVectorToPeak||(t.data.openUShapeContourVectorToPeak=function(e,t){const{viewport:n}=e;return kc(t.data.polyline.map(n.worldToCanvas),n)}(e,t))}(e,n),this.renderOpenUShapedContour(e,t,n)):this.renderOpenContour(e,t,n):this.renderClosedContour(e,t,n))}function Ah(e,t,n){const{viewport:o}=e,i=this._getRenderingOptions(e,n),a=n.data.polyline.map((e=>o.worldToCanvas(e)));Ns(t,n.annotationUID,"1",a,i)}function Uh(e,t,n){var o;const{viewport:i}=e,a=this._getRenderingOptions(e,n),r=n.data.polyline.map((e=>i.worldToCanvas(e)));Ns(t,n.annotationUID,"1",r,a);const s=n.data.handles.activeHandleIndex;if(!0===(null===(o=this.configuration.alwaysRenderOpenContourHandles)||void 0===o?void 0:o.enabled)){const e=this.configuration.alwaysRenderOpenContourHandles.radius,o="0",i=[r[0],r[r.length-1]];0===s?i.shift():1===s&&i.pop(),Ms(t,n.annotationUID,o,i,{color:a.color,handleRadius:e})}if(null!==s){const e="1",o=r[0===s?0:r.length-1];Ms(t,n.annotationUID,e,[o],{color:a.color})}}function Vh(e,t,n){const{viewport:o}=e,{polyline:i,openUShapeContourVectorToPeak:a}=n.data;if(this.renderOpenContour(e,t,n),!a)return;const r=o.worldToCanvas(i[0]),s=o.worldToCanvas(i[i.length-1]),l=[o.worldToCanvas(a[0]),o.worldToCanvas(a[1])],d=this._getRenderingOptions(e,n);Ns(t,n.annotationUID,"first-to-last",[r,s],{color:d.color,width:d.width,connectLastToFirst:!1,lineDash:"2,2"}),Ns(t,n.annotationUID,"midpoint-to-open-contour",[l[0],l[1]],{color:d.color,width:d.width,connectLastToFirst:!1,lineDash:"2,2"})}function Wh(e,t,n){const o=this._getRenderingOptions(e,n),{allowOpenContours:i}=this.configuration,{canvasPoints:a}=this.drawData;if(o.connectLastToFirst=!1,Ns(t,n.annotationUID,"1",a,o),i){const e=a[0],i=a[a.length-1];if(Rh(e,i,this.configuration.closeContourProximity))Ns(t,n.annotationUID,"2",[i,e],o);else{const i="0";Ms(t,n.annotationUID,i,[e],{color:o.color,handleRadius:2})}}}function Fh(e,t,n){const{fusedCanvasPoints:o}=this.editData;if(void 0===o)return void this.renderClosedContour(e,t,n);const i=this._getRenderingOptions(e,n);Ns(t,n.annotationUID,"preview-1",o,i)}function Hh(e,t,n){const{fusedCanvasPoints:o}=this.editData;if(void 0===o)return void this.renderOpenContour(e,t,n);const i=this._getRenderingOptions(e,n);Ns(t,n.annotationUID,"preview-1",o,i)}const Bh=function(e){e.renderContour=Lh.bind(e),e.renderClosedContour=Ah.bind(e),e.renderOpenContour=Uh.bind(e),e.renderOpenUShapedContour=Vh.bind(e),e.renderContourBeingDrawn=Wh.bind(e),e.renderClosedContourBeingEdited=Fh.bind(e),e.renderOpenContourBeingEdited=Hh.bind(e),e._getRenderingOptions=Ph.bind(e)},{pointCanProjectOnLine:Gh}=S,{EPSILON:qh}=J.CONSTANTS,jh=1-qh;class zh extends Jl{constructor(){super(arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},arguments.length>1&&void 0!==arguments[1]?arguments[1]:{supportedInteractionTypes:["Mouse","Touch"],configuration:{shadow:!0,preventHandleOutsideImage:!1,alwaysRenderOpenContourHandles:{enabled:!1,radius:2},allowOpenContours:!0,closeContourProximity:10,checkCanvasEditFallbackProximity:6,subPixelResolution:4,interpolation:{interpolateOnAdd:!1,interpolateOnEdit:!1,knotsRatioPercentageOnAdd:40,knotsRatioPercentageOnEdit:40},calculateStats:!1,getTextLines:Kh,statsCalculator:dd}}),te(this,"touchDragCallback",void 0),te(this,"mouseDragCallback",void 0),te(this,"_throttledCalculateCachedStats",void 0),te(this,"commonData",void 0),te(this,"isDrawing",!1),te(this,"isEditingClosed",!1),te(this,"isEditingOpen",!1),te(this,"activateDraw",void 0),te(this,"activateClosedContourEdit",void 0),te(this,"activateOpenContourEdit",void 0),te(this,"activateOpenContourEndEdit",void 0),te(this,"cancelDrawing",void 0),te(this,"cancelClosedContourEdit",void 0),te(this,"cancelOpenContourEdit",void 0),te(this,"renderContour",void 0),te(this,"renderContourBeingDrawn",void 0),te(this,"renderClosedContourBeingEdited",void 0),te(this,"renderOpenContourBeingEdited",void 0),te(this,"addNewAnnotation",(e=>{const t=e.detail,{currentPoints:n,element:o}=t,i=n.world,a=(0,J.getEnabledElement)(o),{viewport:r,renderingEngine:s}=a,l=r.getCamera(),{viewPlaneNormal:d,viewUp:c}=l,h=this.getReferencedImageId(r,i,d,c),u=Bl(o,this.getToolName()),g=r.getFrameOfReferenceUID(),v={highlighted:!0,invalidated:!0,metadata:{viewPlaneNormal:[...d],viewUp:[...c],FrameOfReferenceUID:g,referencedImageId:h,toolName:this.getToolName()},data:{handles:{points:[],activeHandleIndex:null,textBox:{hasMoved:!1,worldPosition:[0,0,0],worldBoundingBox:{topLeft:[0,0,0],topRight:[0,0,0],bottomLeft:[0,0,0],bottomRight:[0,0,0]}}},polyline:[[...i]],label:"",cachedStats:{}}};return Je(v,o),this.activateDraw(e,v,u),e.preventDefault(),Bi(s,u),v})),te(this,"handleSelectedCallback",((e,t,n)=>{const o=e.detail,{element:i}=o,a=Bl(i,this.getToolName());this.activateOpenContourEndEdit(e,t,a,n)})),te(this,"toolSelectedCallback",((e,t)=>{const n=e.detail,{element:o}=n,i=Bl(o,this.getToolName());t.data.isOpenContour?this.activateOpenContourEdit(e,t,i):this.activateClosedContourEdit(e,t,i)})),te(this,"isPointNearTool",((e,t,n,o)=>{const i=(0,J.getEnabledElement)(e),{viewport:a}=i,r=t.data.polyline;let s=a.worldToCanvas(r[0]);for(let e=1;e<r.length;e++){const t=s,i=a.worldToCanvas(r[e]);if(!0===Gh(n,t,i,o))return!0;s=i}if(t.data.isOpenContour)return!1;const l=a.worldToCanvas(r[0]),d=a.worldToCanvas(r[r.length-1]);return!0===Gh(n,l,d,o)})),te(this,"cancel",(e=>{const t=this.isDrawing,n=this.isEditingOpen,o=this.isEditingClosed;t?this.cancelDrawing(e):n?this.cancelOpenContourEdit(e):o&&this.cancelClosedContourEdit(e)})),te(this,"triggerAnnotationModified",((e,t)=>{const{viewportId:n,renderingEngineId:o}=t,i=Q.ANNOTATION_MODIFIED,a={annotation:e,viewportId:n,renderingEngineId:o};(0,J.triggerEvent)(J.eventTarget,i,a)})),te(this,"triggerAnnotationCompleted",(e=>{const t=Q.ANNOTATION_COMPLETED,n={annotation:e};(0,J.triggerEvent)(J.eventTarget,t,n)})),te(this,"renderAnnotation",((e,t)=>{var n,o;let i=!1;const{viewport:a,renderingEngine:r}=e,{element:s}=a,l=this.getTargetId(a);let d=Ze(this.getToolName(),s);if(null===(n=d)||void 0===n||!n.length)return i;if(d=this.filterInteractableAnnotationsForElement(s,d),null===(o=d)||void 0===o||!o.length)return i;const c=this.isDrawing,h=this.isEditingOpen,u=this.isEditingClosed;if(c||h||u){const n=this.commonData.annotation.annotationUID;d.forEach((o=>{if(o.annotationUID===n)if(c)this.renderContourBeingDrawn(e,t,o);else if(u)this.renderClosedContourBeingEdited(e,t,o);else{if(!h)throw new Error("Unknown ".concat(this.getToolName()," annotation rendering state"));this.renderOpenContourBeingEdited(e,t,o)}else this.renderContour(e,t,o)})),i=!0}else d.forEach((n=>{this.renderContour(e,t,n)}));return this.configuration.calculateStats?(d.forEach((n=>{var o,i,s;const d=null===(o=this.commonData)||void 0===o?void 0:o.annotation.annotationUID;if(n.annotationUID!==d||null!==(i=this.commonData)&&void 0!==i&&i.movingTextBox){if(null===(s=this.commonData)||void 0===s||!s.movingTextBox){const{data:t}=n;t.cachedStats[l]&&null!=t.cachedStats[l].areaUnit?n.invalidated&&this._throttledCalculateCachedStats(n,a,r,e):(t.cachedStats[l]={Modality:null,area:null,max:null,mean:null,stdDev:null,areaUnit:null},this._calculateCachedStats(n,a,r,e))}this._renderStats(n,a,e,t)}})),i):void 0})),te(this,"_calculateCachedStats",((e,t,n,o)=>{const i=e.data,{cachedStats:a,polyline:r}=i,s=Object.keys(a);for(let o=0;o<s.length;o++){var l,d,c;const i=s[o],h=this.getTargetIdImage(i,n);if(!h)continue;const{imageData:u,metadata:g}=h,v=r.map((e=>t.worldToCanvas(e))),m=v[0],p=t.canvasToWorld(m),f=t.canvasToWorld([m[0]+1,m[1]]),E=t.canvasToWorld([m[0],m[1]+1]),w=ps.vec3.distance(p,f),I=ps.vec3.distance(p,E),C=$s(h);let _=Qd(v)/C/C;_*=w*I;const T=J.utilities.transformWorldToIndex(u,r[0]);T[0]=Math.floor(T[0]),T[1]=Math.floor(T[1]),T[2]=Math.floor(T[2]);let b=T[0],D=T[0],S=T[1],y=T[1],O=T[2],M=T[2];for(let e=1;e<r.length;e++){const t=J.utilities.transformWorldToIndex(u,r[e]);t[0]=Math.floor(t[0]),t[1]=Math.floor(t[1]),t[2]=Math.floor(t[2]),b=Math.min(b,t[0]),D=Math.max(D,t[0]),S=Math.min(S,t[1]),y=Math.max(y,t[1]),O=Math.min(O,t[2]),M=Math.max(M,t[2])}const x=.01*(D-b),N=.01*(y-S),k=.01*(M-O);b=Math.floor(b-x),D=Math.ceil(D+x),S=Math.floor(S-N),y=Math.ceil(y+N),O=Math.floor(O-k),M=Math.ceil(M+k);const R=[[b,D],[S,y],[O,M]],P=u.indexToWorld([D,y,M]),L=t.worldToCanvas(P);let A=0,U=[],V=0;const W=tl(u,((e,n)=>{let o=!0;const i=t.worldToCanvas(e);return i[1]!=A&&(V=0,A=i[1],U=Hd(v,i,[L[0],i[1]]),U.sort((function(e,t){return e[0]===t[0]?0:e[0]<t[0]?-1:1}))),U.length&&i[0]>U[0][0]&&(U.shift(),V++),V%2==0&&(o=!1),o}),this.configuration.statsCalculator.statsCallback,R),F={isPreScaled:ad(t,i),isSuvScaled:this.isSuvScaled(t,i,e.metadata.referencedImageId)},H=id(g.Modality,e.metadata.referencedImageId,F),B=this.configuration.statsCalculator.getStatistics();a[i]={Modality:g.Modality,area:_,mean:null===(l=B[1])||void 0===l?void 0:l.value,max:null===(d=B[0])||void 0===d?void 0:d.value,stdDev:null===(c=B[3])||void 0===c?void 0:c.value,statsArray:B,pointsInShape:W,areaUnit:Js(0,h),modalityUnit:H}}return this.triggerAnnotationModified(e,o),e.invalidated=!1,a})),te(this,"_renderStats",((e,t,n,o)=>{var i;const a=e.data,r=this.getTargetId(t),s={toolGroupId:this.toolGroupId,toolName:this.getToolName(),viewportId:n.viewport.id},l=this.getLinkedTextBoxStyle(s,e);if(!l.visibility)return;const d=this.configuration.getTextLines(a,r);if(!d||0===d.length)return;const c=a.polyline.map((e=>t.worldToCanvas(e)));if(!a.handles.textBox.hasMoved){const e=nd(c);a.handles.textBox.worldPosition=t.canvasToWorld(e)}const h=t.worldToCanvas(a.handles.textBox.worldPosition),u=As(o,null!==(i=e.annotationUID)&&void 0!==i?i:"","1",d,h,c,{},l),{x:g,y:v,width:m,height:p}=u;a.handles.textBox.worldBoundingBox={topLeft:t.canvasToWorld([g,v]),topRight:t.canvasToWorld([g+m,v]),bottomLeft:t.canvasToWorld([g,v+p]),bottomRight:t.canvasToWorld([g+m,v+p])}})),Yc(this),oh(this),mh(this),Mh(this),kh(this),Bh(this),this._throttledCalculateCachedStats=js(this._calculateCachedStats,100,{trailing:!0})}filterInteractableAnnotationsForElement(e,t){if(!t||!t.length)return;const n=(0,J.getEnabledElement)(e),{viewport:o}=n;let i;if(o instanceof J.StackViewport)i=zl(o,t);else{if(!(o instanceof J.VolumeViewport))throw new Error("Viewport Type ".concat(o.type," not supported"));{const e=o.getCamera(),{spacingInNormalDirection:n}=J.utilities.getTargetVolumeAndSpacingInNormalDir(o,e);i=this.filterAnnotationsWithinSlice(t,e,n)}}return i}filterAnnotationsWithinSlice(e,t,n){const{viewPlaneNormal:o}=t,i=e.filter((e=>{const t=e.metadata.viewPlaneNormal,n=Math.abs(ps.vec3.dot(o,t))>jh;return t&&n}));if(!i.length)return[];const a=n/2,{focalPoint:r}=t,s=[];for(const e of i){const t=e.data.polyline[0];if(!e.isVisible)continue;const n=ps.vec3.create();ps.vec3.sub(n,r,t);const i=ps.vec3.dot(n,o);Math.abs(i)<a&&s.push(e)}return s}}function Kh(e,t){const n=e.cachedStats[t],{area:o,mean:i,stdDev:a,max:r,isEmptyArea:s,areaUnit:l,modalityUnit:d}=n,c=[];if(o){const e=s?"Area: Oblique not supported":"Area: ".concat(al(o)," ").concat(l);c.push(e)}return i&&c.push("Mean: ".concat(al(i)," ").concat(d)),r&&c.push("Max: ".concat(al(r)," ").concat(d)),a&&c.push("Std Dev: ".concat(al(a)," ").concat(d)),c}te(zh,"toolName",void 0),zh.toolName="PlanarFreehandROI";const Yh=zh;function Xh(e,t,n){if(function(e,t,n){var o;if(null==t||null===(o=t.data)||void 0===o||!o.polyline||n<=0)return!0;if(!e.viewport)return!0;const{renderingEngineId:i,viewportId:a,FrameOfReferenceUID:r}=e,s=yo(a,i);if(t.metadata.FrameOfReferenceUID!==r)return!0;if(!s)return!0;const l=s.getToolInstance(t.metadata.toolName);return!(l instanceof Yh)||l.isDrawing||l.isEditingOpen||l.isEditingClosed}(e,t,n))return!1;const{viewport:o}=e,i=t.data.polyline.map(o.worldToCanvas),a=yc(i,0,i.length,n);return a!==i&&(t.data.polyline=a.map(o.canvasToWorld),!0)}const Zh={interpolateAnnotation:Xh},Jh={};function $h(e,t){const n=(0,J.getEnabledElement)(e),{viewportId:o}=n;Jh[o]=t}function Qh(e){const t=(0,J.getEnabledElement)(e),{viewportId:n}=t;return Jh[n]}const eu=J.Enums.RequestType.Prefetch,tu=0;function nu(e,t){e=Math.round(e)||0;const n=[];let o=(t=Math.round(t)||0)-e+1;if(o<=0)return n;for(;o--;)n[o]=t--;return n}function ou(e){const t=(0,J.getEnabledElement)(e);if(!t)return null;const{viewport:n}=t;if(!(n instanceof J.StackViewport))throw new Error("stackPrefetch: element must be a StackViewport, VolumeViewport stackPrefetch not yet implemented");return{currentImageIdIndex:n.getCurrentImageIdIndex(),imageIds:n.getImageIds()}}function iu(e){return function(t){const n=t.detail;let o;try{o=ou(e)}catch(e){return}if(!o||!o.imageIds||0===o.imageIds.length)return;const i=o.imageIds.indexOf(n.imageId);if(i<0)return;const a=Qh(e);a&&a.data&&a.data.length&&a.indicesToRequest.push(i)}}const au=e=>{const t=new Set(e.imageIds);return e=>e.type!==eu||!t.has(e.additionalDetails.imageId)};let ru,su={maxImagesToPrefetch:1/0,preserveExistingPool:!0};function lu(e){var t,n;const o=Qh(e);if(!o)return;const i=o||{},a=ou(e);if(null==a||null===(t=a.imageIds)||void 0===t||!t.length)return void console.warn("CornerstoneTools.stackPrefetch: No images in stack.");const{currentImageIdIndex:r}=a;if(i.enabled&&(i.enabled=null===(n=i.indicesToRequest)||void 0===n?void 0:n.length),!1===i.enabled)return;if(o.indicesToRequest.sort(((e,t)=>e-t)),i.indicesToRequest.slice().forEach((function(e){const t=a.imageIds[e];t&&(Math.abs(r-e)<6?J.cache.getImageLoadObject(t):J.cache.isLoaded(t))&&function(e){const t=i.indicesToRequest.indexOf(e);t>-1&&i.indicesToRequest.splice(t,1)}(e)})),!i.indicesToRequest.length)return;su.preserveExistingPool||J.imageLoadPoolManager.clearRequestStack(eu);const s=function(e,t){let n=0,o=e.length-1;return e.forEach(((e,i)=>{e<t?n=Math.max(i,n):e>t&&(o=Math.min(i,o))})),{low:n,high:o}}(i.indicesToRequest,a.currentImageIdIndex);let l,d,c=s.low,h=s.high;const u=[];for(;c>=0||h<i.indicesToRequest.length;){const e=a.currentImageIdIndex,t=!(e-i.indicesToRequest[c]>su.maxImagesToPrefetch)&&c>=0,n=!(i.indicesToRequest[h]-e>su.maxImagesToPrefetch)&&h<i.indicesToRequest.length;if(!n&&!t)break;t&&(d=i.indicesToRequest[c--],l=a.imageIds[d],u.push(l)),n&&(d=i.indicesToRequest[h++],l=a.imageIds[d],u.push(l))}const g=(e,t)=>J.imageLoader.loadAndCacheImage(e,t),{useNorm16Texture:v}=(0,J.getConfiguration)().rendering;u.forEach((e=>{const t={targetBuffer:{type:v?void 0:"Float32Array"},preScale:{enabled:!0},requestType:eu};J.imageLoadPoolManager.addRequest(g.bind(null,e,t),eu,{imageId:e},tu)}))}function du(e){clearTimeout(ru),ru=setTimeout((function(){const t=e.target;try{lu(t)}catch(e){return}}),10)}const cu={enable:function(e){const t=ou(e);if(!t||!t.imageIds||0===t.imageIds.length)return void console.warn("CornerstoneTools.stackPrefetch: No images in stack.");const n={indicesToRequest:nu(0,t.imageIds.length-1),enabled:!0,direction:1},o=n.indicesToRequest.indexOf(t.currentImageIdIndex);n.indicesToRequest.splice(o,1),$h(e,n),lu(e),e.removeEventListener(J.Enums.Events.STACK_NEW_IMAGE,du),e.addEventListener(J.Enums.Events.STACK_NEW_IMAGE,du);const i=iu(e);J.eventTarget.removeEventListener(J.Enums.Events.IMAGE_CACHE_IMAGE_REMOVED,i),J.eventTarget.addEventListener(J.Enums.Events.IMAGE_CACHE_IMAGE_REMOVED,i)},disable:function(e){clearTimeout(ru),e.removeEventListener(J.Enums.Events.STACK_NEW_IMAGE,du);const t=iu(e);J.eventTarget.removeEventListener(J.Enums.Events.IMAGE_CACHE_IMAGE_REMOVED,t);const n=Qh(e);n&&n.indicesToRequest.length&&(n.enabled=!1,J.imageLoadPoolManager.clearRequestStack(eu))},getConfiguration:function(){return su},setConfiguration:function(e){su=e}};let hu,uu={maxImagesToPrefetch:1/0,minBefore:2,maxAfter:2,directionExtraImages:10,preserveExistingPool:!1};function gu(e){var t,n;const o=ou(e);if(null==o||null===(t=o.imageIds)||void 0===t||!t.length)return void console.warn("CornerstoneTools.stackPrefetch: No images in stack.");const i=Qh(e);if(!i)return;const a=i||{};if(a.enabled&&(a.enabled=null===(n=a.indicesToRequest)||void 0===n?void 0:n.length),!1===a.enabled)return;function r(e){const t=a.indicesToRequest.indexOf(e);t>-1&&a.indicesToRequest.splice(t,1)}const s=a.indicesToRequest.slice(),{currentImageIdIndex:l}=o;if(s.forEach((e=>{const t=o.imageIds[e];t&&(Math.abs(l-e)<6?J.cache.getImageLoadObject(t):J.cache.isLoaded(t))&&r(e)})),!a.indicesToRequest.length)return;uu.preserveExistingPool||J.imageLoadPoolManager.filterRequests(au(o));const d=(t,n)=>J.imageLoader.loadAndCacheImage(t,n).then((()=>function(t){var n;r(o.imageIds.indexOf(t));const i=J.cache.getCachedImageBasedOnImageURI(t),{stats:s}=a,l=(null==i||null===(n=i.image)||void 0===n?void 0:n.decodeTimeInMS)||0;if(l){var d;s.imageIds.set(t,l),s.decodeTimeInMS+=l;const e=(null==i||null===(d=i.image)||void 0===d?void 0:d.loadTimeInMS)||0;s.loadTimeInMS+=e}if(!a.indicesToRequest.length&&null!=i&&i.sizeInBytes){const{sizeInBytes:t}=i,n=J.cache.getMaxCacheSize()/4/t;if(a.cacheFill){if(s.imageIds.size){s.fillTime=Date.now()-s.start;const{size:e}=s.imageIds;s.fillSize=e,console.log("Done cache fill",s.fillTime,"ms",e,"items","average total time",al(s.fillTime/e),"ms","average load",al(s.loadTimeInMS/e),"ms","average decode",al(s.decodeTimeInMS/e),"ms")}}else s.initialTime=Date.now()-s.start,s.initialSize=s.imageIds.size,mu(e,n),gu(e)}}(t))),{useNorm16Texture:c}=(0,J.getConfiguration)().rendering;s.forEach((e=>{const t=o.imageIds[e],n={targetBuffer:{type:c?void 0:"Float32Array"},preScale:{enabled:!0},requestType:eu};J.imageLoadPoolManager.addRequest(d.bind(null,t,n),eu,{imageId:t},tu)}))}function vu(e){clearTimeout(hu),hu=setTimeout((function(){const t=e.target;try{mu(t),gu(t)}catch(e){return}}),5)}const mu=(e,t)=>{const n=ou(e);if(!n||!n.imageIds||0===n.imageIds.length)return void console.warn("CornerstoneTools.stackPrefetch: No images in stack.");const{currentImageIdIndex:o}=n;let{maxAfter:i=2,minBefore:a=2}=uu;const{directionExtraImages:r=10}=uu,s=Qh(e)||{indicesToRequest:[],currentImageIdIndex:o,stackCount:0,enabled:!0,direction:1,stats:{start:Date.now(),imageIds:new Map,decodeTimeInMS:0,loadTimeInMS:0,totalBytes:0}},l=o-s.currentImageIdIndex;if(s.direction=l<0?-1:1,s.currentImageIdIndex=o,s.enabled=!0,s.stackCount<100&&(s.stackCount+=r),Math.abs(l)>i||!l)if(s.stackCount=0,t){const e=o/n.imageIds.length;a=Math.ceil(t*e),i=Math.ceil(t*(1-e)),s.cacheFill=!0}else s.cacheFill=!1;else l<0?(a+=s.stackCount,i=0):(i+=s.stackCount,a=0);const d=Math.max(0,o-a),c=Math.min(n.imageIds.length-1,o+i),h=[];for(let e=o+1;e<=c;e++)h.push(e);for(let e=o-1;e>=d;e--)h.push(e);s.indicesToRequest=h,$h(e,s)},pu={enable:e=>{const t=ou(e);if(!t||!t.imageIds||0===t.imageIds.length)return void console.warn("CornerstoneTools.stackPrefetch: No images in stack.");mu(e),gu(e),e.removeEventListener(J.Enums.Events.STACK_NEW_IMAGE,vu),e.addEventListener(J.Enums.Events.STACK_NEW_IMAGE,vu);const n=iu(e);J.eventTarget.removeEventListener(J.Enums.Events.IMAGE_CACHE_IMAGE_REMOVED,n),J.eventTarget.addEventListener(J.Enums.Events.IMAGE_CACHE_IMAGE_REMOVED,n)},disable:function(e){clearTimeout(hu),e.removeEventListener(J.Enums.Events.STACK_NEW_IMAGE,vu);const t=iu(e);J.eventTarget.removeEventListener(J.Enums.Events.IMAGE_CACHE_IMAGE_REMOVED,t);const n=Qh(e);n&&n.data.length&&(n.enabled=!1)},getConfiguration:function(){return uu},setConfiguration:function(e){uu=e}};function fu(e,t){if(!(e instanceof J.VolumeViewport))return;const{focalPoint:n}=e.getCamera(),o=[0,0,0];return ps.vec3.sub(o,t,n),function(e,t){const n=e.getCamera(),o=n.viewPlaneNormal,i=ps.vec3.dot(t,o),a=ps.vec3.fromValues(o[0],o[1],o[2]);if(ps.vec3.scale(a,a,i),Math.abs(a[0])>.001||Math.abs(a[1])>.001||Math.abs(a[2])>.001){const t=[0,0,0],o=[0,0,0];ps.vec3.add(t,n.focalPoint,a),ps.vec3.add(o,n.position,a),e.setCamera({focalPoint:t,position:o}),e.render()}}(e,o),!0}const Eu=function(e,t){const n=t.frameNumbers||[...Array(e.numTimePoints).keys()];if(!t.maskVolumeId&&!t.imageCoordinate)throw new Error("You should provide either maskVolumeId or imageCoordinate");if(t.maskVolumeId&&t.imageCoordinate)throw new Error("You can only use one of maskVolumeId or imageCoordinate");if(t.maskVolumeId){const o=J.cache.getVolume(t.maskVolumeId),[i,a]=function(e,t,n){const{imageData:o}=n,i=n.getScalarData(),a=i.length,r=[];r.length=a;const s=[],l=n.dimensions;let d=0;for(let e=0,t=i.length;e<t;e++)0!==i[e]&&(s.push([e%l[0],Math.floor(e/l[0]%l[1]),Math.floor(e/(l[0]*l[1]))]),r[d++]=e);r.length=d;const c=t.getScalarDataArrays(),h=[];if(c[0].length===a&&JSON.stringify(t.spacing)===JSON.stringify(n.spacing)){for(let t=0;t<r.length;t++){const n=[];e.forEach((e=>{const o=c[e];n.push(o[r[t]])})),h.push(n)}return[h,s]}return tl(o,(()=>!0),(n=>{let{pointLPS:o,value:i,pointIJK:a}=n;if(0===i)return;const r=kl(t.imageData,t.dimensions,t.spacing,o);let l=0;const d=new Map;e.forEach((e=>d.set(e,0)));tl(t.imageData,(()=>!0),(t=>{let{index:n}=t;for(let t=0;t<e.length;t++){const o=c[t][n],i=e[t];d.set(i,d.get(i)+o)}l++}),r);const u=[];d.forEach((e=>{u.push(e/l)})),s.push(a),h.push(u)})),[h,s]}(n,e,o);return[i,a]}if(t.imageCoordinate){const o=function(e,t,n){const{dimensions:o,imageData:i}=n,a=i.worldToIndex(t);if(a[0]=Math.floor(a[0]),a[1]=Math.floor(a[1]),a[2]=Math.floor(a[2]),!J.utilities.indexWithinDimensions(a,o))throw new Error("outside bounds");const r=o[0],s=o[0]*o[1],l=n.getScalarDataArrays(),d=[];return e.forEach((e=>{const t=l[e],n=a[2]*s+a[1]*r+a[0];d.push(t[n])})),d}(n,t.imageCoordinate,e);return o}},wu=function(e,t,n){const o=n||[...Array(e.numTimePoints).keys()],i=o.length;if(o.length<=1)throw new Error("Please provide two or more time points");const a=e.getScalarDataArrays(),r=a[0].length,s=new Float32Array(r);if(t===J.Enums.DynamicOperatorType.SUM){for(let e=0;e<i;e++){const t=a[o[e]];for(let e=0;e<r;e++)s[e]+=t[e]}return s}if(t===J.Enums.DynamicOperatorType.SUBTRACT){if(o.length>2)throw new Error("Please provide only 2 time points for subtraction.");for(let e=0;e<r;e++)s[e]+=a[o[0]][e]-a[o[1]][e];return s}if(t===J.Enums.DynamicOperatorType.AVERAGE){for(let e=0;e<i;e++){const t=a[o[e]];for(let e=0;e<r;e++)s[e]+=t[e]}for(let e=0;e<r;e++)s[e]=s[e]/i;return s}};function Iu(e,t){if(t<e.length/3)return[e[3*t],e[3*t+1],e[3*t+2]]}function Cu(e){const t=e.getLines().getData();let n=0;const o=new Map;for(;n<t.length;){const e=t[n++],i=[];for(let o=0;o<e;o++)i.push(t[n+o]);o.set(i[0],i),n+=e}const i=[],a=e=>{for(const[t,n]of e.entries())if(void 0!==n)return t;return-1};let r=a(o);for(;-1!==r;){const e=[r];for(;o.has(r);){const t=o.get(r)[1];o.has(t)&&e.push(t),o.delete(r),r=t}i.push(e),r=a(o)}return i.length?i:void 0}function _u(e){const t=Cu(e);if(!t)return;const n=e.getPoints().getData();return t.map((e=>e.map((e=>Iu(n,e)))))}let Tu=function(e){return e.Top="top",e.Left="left",e.Bottom="bottom",e.Right="right",e}({});const bu=e=>e&&e.upper>e.lower,Du=(e,t)=>!!e&&!!t&&e.lower===t.lower&&e.upper===t.upper,Su=e=>!!e&&e.width>0&&e.height>0,yu=(e,t)=>!!e&&!!t&&e.width===t.width&&e.height===t.height,{clamp:Ou}=J.utilities;class Mu{constructor(e){te(this,"_canvas",void 0),te(this,"_imageRange",void 0),te(this,"_voiRange",void 0),te(this,"_colormap",void 0),te(this,"_showFullImageRange",void 0),Mu.validateProps(e);const{colormap:t,size:n={width:20,height:100},imageRange:o={lower:0,upper:1},voiRange:i={lower:0,upper:1},container:a,showFullPixelValueRange:r=!1}=e;this._colormap=t,this._imageRange=o,this._voiRange=i,this._showFullImageRange=r,this._canvas=this._createRootElement(n),a&&this.appendTo(a)}get colormap(){return this._colormap}set colormap(e){this._colormap=e,this.render()}get size(){const{width:e,height:t}=this._canvas;return{width:e,height:t}}set size(e){const{_canvas:t}=this;Su(e)&&!yu(t,e)&&(this._setCanvasSize(t,e),this.render())}get imageRange(){return{...this._imageRange}}set imageRange(e){bu(e)&&!Du(e,this._imageRange)&&(this._imageRange=e,this.render())}get voiRange(){return{...this._voiRange}}set voiRange(e){bu(e)&&!Du(e,this._voiRange)&&(this._voiRange=e,this.render())}get showFullImageRange(){return this._showFullImageRange}set showFullImageRange(e){e!==this._showFullImageRange&&(this._showFullImageRange=e,this.render())}appendTo(e){e.appendChild(this._canvas),this.render()}dispose(){const{_canvas:e}=this,{parentElement:t}=e;null==t||t.removeChild(e)}static validateProps(e){const{size:t,imageRange:n,voiRange:o}=e;if(t&&!Su(t))throw new Error('Invalid "size"');if(n&&!bu(n))throw new Error('Invalid "imageRange"');if(o&&!bu(o))throw new Error('Invalid "voiRange"')}_setCanvasSize(e,t){const{width:n,height:o}=t;e.width=n,e.height=o,Object.assign(e.style,{width:"".concat(n,"px"),height:"".concat(o,"px")})}_createRootElement(e){const t=document.createElement("canvas");return Object.assign(t.style,{position:"absolute",top:"0",left:"0",pointerEvents:"none",boxSizing:"border-box"}),this._setCanvasSize(t,e),t}render(){if(!this._canvas.isConnected)return;const{_colormap:e}=this,{RGBPoints:t}=e,n=t.length/4,o=e=>{const o=4*e;if(!(e<0||e>=n))return{index:e,position:t[o],color:[t[o+1],t[o+2],t[o+3]]}},{width:i,height:a}=this._canvas,r=this._canvas.getContext("2d"),s=i>a,l=s?i:a,{_voiRange:d}=this,c=this._showFullImageRange?this._imageRange:{...d},{windowWidth:h}=J.utilities.windowLevel.toWindowLevel(d.lower,d.upper);let u,g=o(0);const v=(c.upper-c.lower)/(l-1);let m=c.lower;for(let e=0;e<l;e++){const t=(m-d.lower)/h;if(g)for(let e=g.index;e<n&&!(t<=g.position);e++)u=g,g=o(e+1);let l;if(u)if(g){const e=(t-u.position)/(g.position-u.position);p=u.color,f=g.color,E=e,l=[p[0]*(1-E)+f[0]*E,p[1]*(1-E)+f[1]*E,p[2]*(1-E)+f[2]*E]}else l=[...u.color];else l=[...g.color];const c=l.map((e=>Ou(Math.round(255*e),0,255)));r.fillStyle="rgb(".concat(c[0],", ").concat(c[1],", ").concat(c[2],")"),s?r.fillRect(e,0,1,a):r.fillRect(0,a-e-1,i,1),m+=v}var p,f,E}}const xu={FONT:"10px Arial",COLOR:"white",TICK_SIZE:5,TICK_WIDTH:1,TICK_LABEL_MARGIN:3,MAX_NUM_TICKS:8,TICKS_STEPS:[1,2.5,5,10]};class Nu{constructor(e){var t,n,o,i,a,r;te(this,"_canvas",void 0),te(this,"_imageRange",void 0),te(this,"_voiRange",void 0),te(this,"_color",void 0),te(this,"_tickSize",void 0),te(this,"_tickWidth",void 0),te(this,"_labelMargin",void 0),te(this,"_maxNumTicks",void 0),te(this,"_rangeTextPosition",void 0),te(this,"_showFullPixelValueRange",void 0),te(this,"_font",void 0),Nu.validateProps(e);const{top:s=0,left:l=0,size:d={width:20,height:100},imageRange:c={lower:0,upper:1},voiRange:h={lower:0,upper:1},ticks:u,container:g,showFullPixelValueRange:v=!1}=e,{style:m,position:p}=null!=u?u:{};this._imageRange=c,this._voiRange=h,this._font=null!==(t=null==m?void 0:m.font)&&void 0!==t?t:xu.FONT,this._color=null!==(n=null==m?void 0:m.color)&&void 0!==n?n:xu.COLOR,this._tickSize=null!==(o=null==m?void 0:m.tickSize)&&void 0!==o?o:xu.TICK_SIZE,this._tickWidth=null!==(i=null==m?void 0:m.tickWidth)&&void 0!==i?i:xu.TICK_WIDTH,this._labelMargin=null!==(a=null==m?void 0:m.labelMargin)&&void 0!==a?a:xu.TICK_LABEL_MARGIN,this._maxNumTicks=null!==(r=null==m?void 0:m.maxNumTicks)&&void 0!==r?r:xu.MAX_NUM_TICKS,this._rangeTextPosition=null!=p?p:Tu.Right,this._showFullPixelValueRange=v,this._canvas=this._createCanvasElement(d,s,l),g&&this.appendTo(g)}get size(){const{width:e,height:t}=this._canvas;return{width:e,height:t}}set size(e){const{_canvas:t}=this;Su(e)&&!yu(t,e)&&(this._setCanvasSize(t,e),this.render())}get top(){return Number.parseInt(this._canvas.style.top)}set top(e){const{_canvas:t}=this;e!==this.top&&(t.style.top="".concat(e,"px"),this.render())}get left(){return Number.parseInt(this._canvas.style.left)}set left(e){const{_canvas:t}=this;e!==this.left&&(t.style.left="".concat(e,"px"),this.render())}get imageRange(){return{...this._imageRange}}set imageRange(e){bu(e)&&!Du(e,this._imageRange)&&(this._imageRange=e,this.render())}get voiRange(){return{...this._voiRange}}set voiRange(e){bu(e)&&!Du(e,this._voiRange)&&(this._voiRange=e,this.render())}get tickSize(){return this._tickSize}set tickSize(e){e!==this._tickSize&&(this._tickSize=e,this.render())}get tickWidth(){return this._tickWidth}set tickWidth(e){e!==this._tickWidth&&(this._tickWidth=e,this.render())}get color(){return this._color}set color(e){e!==this._color&&(this._color=e,this.render())}get showFullPixelValueRange(){return this._showFullPixelValueRange}set showFullPixelValueRange(e){e!==this._showFullPixelValueRange&&(this._showFullPixelValueRange=e,this.render())}get visible(){return"block"===this._canvas.style.display}set visible(e){e!==this.visible&&(this._canvas.style.display=e?"block":"none",e&&this.render())}appendTo(e){e.appendChild(this._canvas),this.render()}static validateProps(e){const{size:t,imageRange:n,voiRange:o}=e;if(t&&!Su(t))throw new Error('Invalid "size"');if(n&&!bu(n))throw new Error('Invalid "imageRange"');if(o&&!bu(o))throw new Error('Invalid "voiRange"')}_setCanvasSize(e,t){const{width:n,height:o}=t;e.width=n,e.height=o,Object.assign(e.style,{width:"".concat(n,"px"),height:"".concat(o,"px")})}_createCanvasElement(e,t,n){const o=document.createElement("canvas");return Object.assign(o.style,{display:"none",position:"absolute",boxSizing:"border-box",top:"".concat(t,"px"),left:"".concat(n,"px")}),this._setCanvasSize(o,e),o}_getTicks(e){const{lower:t,upper:n}=e,o=(n-t)/(this._maxNumTicks-1),i=Math.pow(10,-Math.floor(Math.log10(Math.abs(o)))),a=o*i,r=xu.TICKS_STEPS.find((e=>e>=a))/i,s=Math.ceil(n/r)*r,l=Math.floor(t/r)*r,d=Math.round((s-l)/r)+1,c=[];for(let e=0;e<d;e++)c.push(l+e*r);return{scaleMin:l,scaleMax:s,step:r,ticks:c}}_getLeftTickInfo(e){let{position:t,labelMeasure:n}=e;const{width:o}=this._canvas;return{labelPoint:[o-this.tickSize-n.width-this._labelMargin,t],tickPoints:{start:[o-this._tickSize,t],end:[o,t]}}}_getRightTickInfo(e){let{position:t}=e;return{labelPoint:[this._tickSize+this._labelMargin,t],tickPoints:{start:[0,t],end:[this._tickSize,t]}}}_getTopTickInfo(e){let{position:t,labelMeasure:n}=e;throw new Error("Not implemented")}_getBottomTickInfo(e){let{position:t,labelMeasure:n}=e;throw new Error("Not implemented")}render(){const{_canvas:e}=this;if(!e.isConnected||!this.visible)return;const{width:t,height:n}=e,o=t>=n,i=o?t:n,a=e.getContext("2d"),{_voiRange:r}=this,s=this._showFullPixelValueRange?this._imageRange:{...r},l=s.upper-s.lower,{ticks:d}=this._getTicks(s);a.clearRect(0,0,t,n),a.font=this._font,a.textBaseline="middle",a.fillStyle=this._color,a.strokeStyle=this._color,a.lineWidth=this.tickWidth,d.forEach((e=>{let t=Math.round(i*((e-s.lower)/l));if(o||(t=n-t),t<0||t>i)return;const r=e.toString(),d=a.measureText(r);let c;c=o?this._rangeTextPosition===Tu.Top?this._getTopTickInfo({position:t,labelMeasure:d}):this._getBottomTickInfo({position:t,labelMeasure:d}):this._rangeTextPosition===Tu.Left?this._getLeftTickInfo({position:t,labelMeasure:d}):this._getRightTickInfo({position:t});const{labelPoint:h,tickPoints:u}=c,{start:g,end:v}=u;return a.beginPath(),a.moveTo(g[0],g[1]),a.lineTo(v[0],v[1]),a.fillText(r,h[0],h[1]),a.stroke(),t}))}}class ku{constructor(e){let{id:t,container:n}=e;te(this,"_id",void 0),te(this,"_rootElement",void 0),te(this,"_containerSize",void 0),te(this,"_containerResizeObserver",void 0),te(this,"_containerResizeCallback",(e=>{let t,n;const{contentRect:o,contentBoxSize:i}=e[0];o?(t=o.width,n=o.height):null!=i&&i.length&&(t=i[0].inlineSize,n=i[0].blockSize),this._containerSize={width:t,height:n},this.onContainerResize()})),this._id=t,this._containerSize={width:0,height:0},this._rootElement=this.createRootElement(t),this._containerResizeObserver=new ResizeObserver(this._containerResizeCallback),n&&this.appendTo(n)}get id(){return this._id}get rootElement(){return this._rootElement}appendTo(e){const{_rootElement:t,_containerResizeObserver:n}=this,{parentElement:o}=t;e&&e!==o&&(o&&n.unobserve(o),e.appendChild(t),n.observe(e))}destroy(){const{_rootElement:e,_containerResizeObserver:t}=this,{parentElement:n}=e;null==n||n.removeChild(e),t.disconnect()}get containerSize(){return{...this._containerSize}}createRootElement(e){const t=document.createElement("div");return t.id=e,t.classList.add("widget"),Object.assign(t.style,{width:"100%",height:"100%"}),t}onContainerResize(){}}const Ru={MULTIPLIER:1,RANGE_TEXT_POSITION:Tu.Right,TICKS_BAR_SIZE:50};class Pu extends ku{constructor(e){var t,n;super(e),te(this,"_colormaps",void 0),te(this,"_activeColormapName",void 0),te(this,"_eventListenersManager",void 0),te(this,"_canvas",void 0),te(this,"_ticksBar",void 0),te(this,"_rangeTextPosition",void 0),te(this,"_isMouseOver",!1),te(this,"_isInteracting",!1),te(this,"_mouseOverCallback",(e=>{this._isMouseOver=!0,this.showTicks(),e.stopPropagation()})),te(this,"_mouseOutCallback",(e=>{this._isMouseOver=!1,this.hideTicks(),e.stopPropagation()})),te(this,"_mouseDownCallback",(e=>{this._isInteracting=!0,this.showTicks(),this._addVOIEventListeners(e),e.stopPropagation()})),te(this,"_mouseDragCallback",((e,t)=>{const n=this.getVOIMultipliers(),o=this._getPointsFromMouseEvent(e),{points:i,voiRange:a}=t,r=ps.vec2.sub(ps.vec2.create(),o.local,i.local),s=r[0]*n[0],l=r[1]*n[1];if(!s&&!l)return;const{lower:d,upper:c}=a;let{windowWidth:h,windowCenter:u}=J.utilities.windowLevel.toWindowLevel(d,c);h=Math.max(h+s,1),u+=l;const g=J.utilities.windowLevel.toLowHighRange(h,u);this.voiRange=g,e.stopPropagation(),e.preventDefault()})),te(this,"_mouseUpCallback",(e=>{this._isInteracting=!1,this.hideTicks(),this._removeVOIEventListeners(),e.stopPropagation()})),this._eventListenersManager=new J.utilities.eventListener.MultiTargetEventListenerManager,this._colormaps=Pu.getColormapsMap(e),this._activeColormapName=Pu.getInitialColormapName(e),this._canvas=this._createCanvas(e),this._ticksBar=this._createTicksBar(e),this._rangeTextPosition=null!==(t=null===(n=e.ticks)||void 0===n?void 0:n.position)&&void 0!==t?t:Ru.RANGE_TEXT_POSITION,this._canvas.appendTo(this.rootElement),this._ticksBar.appendTo(this.rootElement),this._addRootElementEventListeners()}get activeColormapName(){return this._activeColormapName}set activeColormapName(e){if(e===this._activeColormapName)return;const t=this._colormaps.get(e);t?(this._activeColormapName=e,this._canvas.colormap=t):console.warn("Invalid colormap name (".concat(e,")"))}get imageRange(){return this._canvas.imageRange}set imageRange(e){this._canvas.imageRange=e,this._ticksBar.imageRange=e}get voiRange(){return this._canvas.voiRange}set voiRange(e){const{voiRange:t}=this._canvas;bu(e)&&!Du(e,t)&&(this._canvas.voiRange=e,this._ticksBar.voiRange=e,this.onVoiChange(e))}get showFullImageRange(){return this._canvas.showFullImageRange}set showFullImageRange(e){this._canvas.showFullImageRange=e,this._ticksBar.showFullPixelValueRange=e}destroy(){super.destroy(),this._eventListenersManager.reset()}createRootElement(){const e=document.createElement("div");return Object.assign(e.style,{position:"relative",fontSize:"0",width:"100%",height:"100%"}),e}onContainerResize(){super.onContainerResize(),this.updateTicksBar(),this._canvas.size=this.containerSize}getVOIMultipliers(){return[Ru.MULTIPLIER,Ru.MULTIPLIER]}onVoiChange(e){}showTicks(){this.updateTicksBar(),this._ticksBar.visible=!0}hideTicks(){this._isInteracting||this._isMouseOver||(this._ticksBar.visible=!1)}static getColormapsMap(e){const{colormaps:t}=e;return t.reduce(((e,t)=>e.set(t.Name,t)),new Map)}static getInitialColormapName(e){const{activeColormapName:t,colormaps:n}=e;return t&&n.some((e=>e.Name===t))?t:n[0].Name}_createCanvas(e){const{imageRange:t,voiRange:n,showFullPixelValueRange:o}=e,i=this._colormaps.get(this._activeColormapName);return new Mu({colormap:i,imageRange:t,voiRange:n,showFullPixelValueRange:o})}_createTicksBar(e){const t=e.ticks;return new Nu({imageRange:e.imageRange,voiRange:e.voiRange,ticks:t,showFullPixelValueRange:e.showFullPixelValueRange})}_getPointsFromMouseEvent(e){const{rootElement:t}=this,n=[e.clientX,e.clientY],o=[e.pageX,e.pageY],i=t.getBoundingClientRect();return{client:n,page:o,local:[o[0]-i.left-window.pageXOffset,o[1]-i.top-window.pageYOffset]}}updateTicksBar(){const{width:e,height:t}=this.containerSize;if(0===e&&0===t)return;const{_ticksBar:n,_rangeTextPosition:o}=this,i=e>=t,a=i?e:Ru.TICKS_BAR_SIZE,r=i?Ru.TICKS_BAR_SIZE:t;if(!function(e,t,n){return(e>=t?[Tu.Top,Tu.Bottom]:[Tu.Left,Tu.Right]).includes(n)}(e,t,o))throw new Error("Invalid rangeTextPosition value for the current colobar orientation");let s,l;n.size={width:a,height:r},i?(l=0,s=o===Tu.Top?-r:t):(s=0,l=o===Tu.Left?-a:e),n.top=s,n.left=l}_addRootElementEventListeners(){const{_eventListenersManager:e}=this,{rootElement:t}=this;e.addEventListener(t,"mouseover",this._mouseOverCallback),e.addEventListener(t,"mouseout",this._mouseOutCallback),e.addEventListener(t,"mousedown",this._mouseDownCallback)}_addVOIEventListeners(e){const{_eventListenersManager:t}=this,n={points:this._getPointsFromMouseEvent(e),voiRange:{...this._canvas.voiRange}};this._removeVOIEventListeners(),t.addEventListener(document,"voi.mouseup",this._mouseUpCallback),t.addEventListener(document,"voi.mousemove",(e=>this._mouseDragCallback(e,n)))}_removeVOIEventListeners(){const{_eventListenersManager:e}=this;e.removeEventListener(document,"voi.mouseup"),e.removeEventListener(document,"voi.mousemove")}}const{Events:Lu}=J.Enums,Au={lower:-1e3,upper:1e3};class Uu extends Pu{constructor(e){const{element:t,volumeId:n}=e,o=Uu._getImageRange(t,n),i=Uu._getVOIRange(t,n);super({...e,imageRange:o,voiRange:i}),te(this,"_element",void 0),te(this,"_volumeId",void 0),te(this,"_hideTicksTime",void 0),te(this,"_hideTicksTimeoutId",void 0),te(this,"autoHideTicks",(()=>{if(this._hideTicksTimeoutId)return;const e=this._hideTicksTime-Date.now();e<=0?this.hideTicks():this._hideTicksTimeoutId=window.setTimeout((()=>{this._hideTicksTimeoutId=0,this.autoHideTicks()}),e)})),te(this,"_stackNewImageCallback",(()=>{this.imageRange=Uu._getImageRange(this._element)})),te(this,"_imageVolumeModifiedCallback",(e=>{const{volumeId:t}=e.detail.imageVolume;if(t!==this._volumeId)return;const{_element:n}=this;this.imageRange=Uu._getImageRange(n,t)})),te(this,"_viewportVOIModifiedCallback",(e=>{const{viewportId:t,volumeId:n,range:o}=e.detail,{viewport:i}=this.enabledElement;t===i.id&&n===this._volumeId&&(this.voiRange=o,this.showAndAutoHideTicks())})),this._element=t,this._volumeId=n,this._addCornerstoneEventListener()}get element(){return this._element}get enabledElement(){return(0,J.getEnabledElement)(this._element)}getVOIMultipliers(){const{viewport:e}=this.enabledElement;return function(e,t,n){if("PT"===J.utilities.getViewportModality(e,t)){const{clientWidth:n,clientHeight:o}=e.element,i=5/Math.max(n,o),a=ad(e,t),{fixedPTWindowWidth:r=!0}={},s=r?0:i;return a?[s,i]:[s,4]}return[4,4]}(e,this._volumeId)}onVoiChange(e){super.onVoiChange(e);const{viewport:t}=this.enabledElement;if(t instanceof J.StackViewport)t.setProperties({voiRange:e}),t.render();else if(t instanceof J.VolumeViewport){const{_volumeId:n}=this,o=J.utilities.getViewportsWithVolumeId(n,t.renderingEngineId);t.setProperties({voiRange:e},n),o.forEach((e=>e.render()))}}static _getImageRange(e,t){const n=(0,J.getEnabledElement)(e),{viewport:o}=n,i=t?o.getActor(t):o.getDefaultActor();if(!i)return Au;const a=i.actor.getMapper().getInputData().getPointData().getScalars().getRange();return 0===a[0]&&0===a[1]?Au:{lower:a[0],upper:a[1]}}static _getVOIRange(e,t){const n=(0,J.getEnabledElement)(e),{viewport:o}=n,i=t?o.getActor(t):o.getDefaultActor();if(!i||!J.utilities.isImageActor(i))return Au;const a=i.actor.getProperty().getRGBTransferFunction(0).getRange();return 0===a[0]&&0===a[1]?Au:{lower:a[0],upper:a[1]}}showAndAutoHideTicks(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1e3;this._hideTicksTime=Date.now()+e,this.showTicks(),this.autoHideTicks()}_addCornerstoneEventListener(){const{_element:e}=this;J.eventTarget.addEventListener(Lu.IMAGE_VOLUME_MODIFIED,this._imageVolumeModifiedCallback),e.addEventListener(Lu.STACK_NEW_IMAGE,this._stackNewImageCallback),e.addEventListener(Lu.VOI_MODIFIED,this._viewportVOIModifiedCallback)}}const Vu=function(e,t){let n=jr.getDefinedCursor(t,!0);n||(n=br.getDefinedCursor(t)),n||(console.log("Cursor ".concat(t," is not defined either as SVG or as a standard cursor.")),n=br.getDefinedCursor(t)),Jr(e,n)},Wu=[...Fr,...Sr],Fu=function(e,t,n){const o=Br("textBoxFontSize",e,t,n),i=Br("textBoxFontFamily",e,t,n);return"".concat(o,"px ").concat(i)},Hu=function(e){if(!e||!e.length)throw new Error("The segmentationInputArray is undefined or empty array");e.forEach((e=>{if(void 0===e.segmentationId)throw new Error("The segmentationInput.segmentationId is undefined, please provide a valid segmentationId");if(void 0===e.representation)throw new Error("The segmentationInput.representation is undefined, please provide a valid representation");e.representation.type===it.Labelmap&&function(e){if(!e.representation.data)throw new Error("The segmentationInput.representationData.data is undefined, please provide a valid representationData.data");const t=e.representation.data;if(!t.volumeId)throw new Error("The segmentationInput.representationData.volumeId is undefined, please provide a valid representationData.volumeId");if(!J.cache.getVolume(t.volumeId))throw new Error("volumeId of ".concat(t.volumeId," not found in cache, you should load and cache volume before adding segmentation"))}(e)}))},Bu=function(e){Hu(e),e.map((e=>{Ct(oe()(e))}))},Gu=async function(e,t,n){if(!zi(e))throw new Error("No tool group found for toolGroupId: ".concat(e));const o=t.map((t=>async function(e,t,n){let o;if(t.type===it.Labelmap)o=await za.addSegmentationRepresentation(e,t,n);else if(t.type===it.Contour)o=await Ua.addSegmentationRepresentation(e,t,n);else{if(t.type!==it.Surface)throw new Error("The representation type ".concat(t.type," is not supported"));o=await Ta.addSegmentationRepresentation(e,t,n)}return o}(e,t,n)));return await Promise.all(o)};class qu extends la{constructor(){super(arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},arguments.length>1&&void 0!==arguments[1]?arguments[1]:{supportedInteractionTypes:["Mouse","Touch"]})}touchDragCallback(e){this._dragCallback(e)}mouseDragCallback(e){this._dragCallback(e)}_dragCallback(e){const{element:t,deltaPoints:n}=e.detail,o=(0,J.getEnabledElement)(t),i=n.world,a=o.viewport.getCamera(),{focalPoint:r,position:s}=a,l=[s[0]-i[0],s[1]-i[1],s[2]-i[2]],d=[r[0]-i[0],r[1]-i[1],r[2]-i[2]];o.viewport.setCamera({focalPoint:d,position:l}),o.viewport.render()}}te(qu,"toolName",void 0),qu.toolName="Pan";const ju=qu;class zu extends la{constructor(){super(arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},arguments.length>1&&void 0!==arguments[1]?arguments[1]:{supportedInteractionTypes:["Mouse","Touch"],configuration:{rotateIncrementDegrees:2}}),te(this,"touchDragCallback",void 0),te(this,"mouseDragCallback",void 0),te(this,"rotateCamera",((e,t,n,o)=>{const i=e.getVtkActiveCamera(),a=i.getViewUp(),r=i.getFocalPoint(),s=i.getPosition(),l=[0,0,0],d=[0,0,0],c=[0,0,0],h=ps.mat4.identity(new Float32Array(16));ps.mat4.translate(h,h,t),ps.mat4.rotate(h,h,o,n),ps.mat4.translate(h,h,[-t[0],-t[1],-t[2]]),ps.vec3.transformMat4(l,s,h),ps.vec3.transformMat4(d,r,h),ps.mat4.identity(h),ps.mat4.rotate(h,h,o,n),ps.vec3.transformMat4(c,a,h),e.setCamera({position:l,viewUp:c,focalPoint:d})})),this.touchDragCallback=this._dragCallback.bind(this),this.mouseDragCallback=this._dragCallback.bind(this)}_dragCallback(e){const{element:t,currentPoints:n,lastPoints:o}=e.detail,i=n.canvas,a=o.canvas,{rotateIncrementDegrees:r}=this.configuration,s=(0,J.getEnabledElement)(t),{viewport:l}=s,d=l.getCamera(),c=t.clientWidth,h=t.clientHeight,u=[i[0]/c,i[1]/h],g=[a[0]/c,a[1]/h],v=[.5*c,.5*h],m=l.canvasToWorld(v),p=(1+Math.abs(.5))**2,f=[g[0],0,0],E=[u[0],0,0],w=f[0]**2,I=E[0]**2,C=w>p?0:Math.sqrt(p-w),_=I>p?0:Math.sqrt(p-I),T=[f[0],0,C];nc().normalize(T);const b=[E[0],0,_];nc().normalize(b);const D=nc().dot(T,b);if(Math.abs(D)>1e-4){const e=-2*Math.acos(nc().clampValue(D,-1,1))*Math.sign(u[0]-g[0])*r,t=d.viewUp,n=d.viewPlaneNormal,o=[0,0,0],i=[0,0,0];nc().cross(t,n,o),nc().normalize(o),nc().cross(n,o,i),nc().normalize(i),nc().normalize(t),this.rotateCamera(l,m,i,e);const a=(g[1]-u[1])*r;this.rotateCamera(l,m,o,a),l.render()}}}te(zu,"toolName",void 0),zu.toolName="TrackballRotate";const Ku=zu,{transformWorldToIndex:Yu}=J.utilities;class Xu extends Jl{constructor(){super(arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},arguments.length>1&&void 0!==arguments[1]?arguments[1]:{supportedInteractionTypes:["Mouse","Touch"],configuration:{shadow:!0,preventHandleOutsideImage:!1,getTextLines:Zu}}),te(this,"touchDragCallback",void 0),te(this,"mouseDragCallback",void 0),te(this,"editData",void 0),te(this,"eventDispatchDetail",void 0),te(this,"isDrawing",void 0),te(this,"isHandleOutsideImage",void 0),te(this,"addNewAnnotation",(e=>{const t=e.detail,{currentPoints:n,element:o}=t,i=n.world,a=(0,J.getEnabledElement)(o),{viewport:r,renderingEngine:s}=a;this.isDrawing=!0;const l=r.getCamera(),{viewPlaneNormal:d,viewUp:c}=l,h=this.getReferencedImageId(r,i,d,c),u=r.getFrameOfReferenceUID(),g={invalidated:!0,highlighted:!0,metadata:{toolName:this.getToolName(),viewPlaneNormal:[...d],viewUp:[...c],FrameOfReferenceUID:u,referencedImageId:h},data:{label:"",handles:{points:[[...i]]},cachedStats:{}}};Je(g,o);const v=Bl(o,this.getToolName());return this.editData={annotation:g,newAnnotation:!0,viewportIdsToRender:v},this._activateModify(o),Qr(o),e.preventDefault(),Bi(s,v),g})),te(this,"_endCallback",(e=>{const t=e.detail,{element:n}=t,{annotation:o,viewportIdsToRender:i,newAnnotation:a}=this.editData,r=(0,J.getEnabledElement)(n),{renderingEngine:s}=r,{viewportId:l}=r;if(this.eventDispatchDetail={viewportId:l,renderingEngineId:s.id},this._deactivateModify(n),$r(n),this.editData=null,this.isDrawing=!1,this.isHandleOutsideImage&&this.configuration.preventHandleOutsideImage&&Qe(o.annotationUID),Bi(s,i),a){const e=Q.ANNOTATION_COMPLETED,t={annotation:o};(0,J.triggerEvent)(J.eventTarget,e,t)}})),te(this,"_dragCallback",(e=>{this.isDrawing=!0;const t=e.detail,{currentPoints:n,element:o}=t,i=n.world,{annotation:a,viewportIdsToRender:r}=this.editData,{data:s}=a;s.handles.points[0]=[...i],a.invalidated=!0;const l=(0,J.getEnabledElement)(o),{renderingEngine:d}=l;Bi(d,r)})),te(this,"cancel",(e=>{if(this.isDrawing){this.isDrawing=!1,this._deactivateModify(e),$r(e);const{annotation:t,viewportIdsToRender:n,newAnnotation:o}=this.editData,{data:i}=t;t.highlighted=!1,i.handles.activeHandleIndex=null;const a=(0,J.getEnabledElement)(e),{renderingEngine:r}=a;if(Bi(r,n),o){const e=Q.ANNOTATION_COMPLETED,n={annotation:t};(0,J.triggerEvent)(J.eventTarget,e,n)}return this.editData=null,t.annotationUID}})),te(this,"_activateModify",(e=>{He.isInteractingWithTool=!0,e.addEventListener(Q.MOUSE_UP,this._endCallback),e.addEventListener(Q.MOUSE_DRAG,this._dragCallback),e.addEventListener(Q.MOUSE_CLICK,this._endCallback),e.addEventListener(Q.TOUCH_END,this._endCallback),e.addEventListener(Q.TOUCH_DRAG,this._dragCallback),e.addEventListener(Q.TOUCH_TAP,this._endCallback)})),te(this,"_deactivateModify",(e=>{He.isInteractingWithTool=!1,e.removeEventListener(Q.MOUSE_UP,this._endCallback),e.removeEventListener(Q.MOUSE_DRAG,this._dragCallback),e.removeEventListener(Q.MOUSE_CLICK,this._endCallback),e.removeEventListener(Q.TOUCH_END,this._endCallback),e.removeEventListener(Q.TOUCH_DRAG,this._dragCallback),e.removeEventListener(Q.TOUCH_TAP,this._endCallback)})),te(this,"renderAnnotation",((e,t)=>{var n,o;let i=!1;const{viewport:a}=e,{element:r}=a;let s=Ze(this.getToolName(),r);if(null===(n=s)||void 0===n||!n.length)return i;if(s=this.filterInteractableAnnotationsForElement(r,s),null===(o=s)||void 0===o||!o.length)return i;const l=this.getTargetId(a),d=a.getRenderingEngine(),c={toolGroupId:this.toolGroupId,toolName:this.getToolName(),viewportId:e.viewport.id};for(let n=0;n<s.length;n++){const o=s[n],r=o.annotationUID,h=o.data,u=h.handles.points[0],g=a.worldToCanvas(u);c.annotationUID=r;const v=this.getStyle("color",c,o);if(h.cachedStats[l]&&null!=h.cachedStats[l].value){if(o.invalidated&&(this._calculateCachedStats(o,d,e),a instanceof J.VolumeViewport)){const{referencedImageId:e}=o.metadata;for(const t in h.cachedStats)t.startsWith("imageId")&&d.getStackViewports().find((t=>{const n=J.utilities.imageIdToURI(e),o=t.hasImageURI(n),i=J.utilities.imageIdToURI(t.getCurrentImageId());return o&&i!==n}))&&delete h.cachedStats[t]}}else h.cachedStats[l]={Modality:null,index:null,value:null},this._calculateCachedStats(o,d,e);if(!a.getRenderingEngine())return console.warn("Rendering Engine has been destroyed"),i;Ms(t,r,"0",[g],{color:v}),i=!0;const m=this.getLinkedTextBoxStyle(c,o);if(!m.visibility)continue;const p=this.configuration.getTextLines(h,l);if(p){const e=[g[0]+6,g[1]-6];Ps(t,r,"0",p,[e[0],e[1]],m)}}return i}))}isPointNearTool(){return!1}toolSelectedCallback(){}getHandleNearImagePoint(e,t,n,o){const i=(0,J.getEnabledElement)(e),{viewport:a}=i,{data:r}=t,s=r.handles.points[0],l=a.worldToCanvas(s);if(!0==ps.vec2.distance(n,l)<o)return s}handleSelectedCallback(e,t){const n=e.detail,{element:o}=n;t.highlighted=!0;const i=Bl(o,this.getToolName());this.editData={annotation:t,viewportIdsToRender:i},this._activateModify(o),Qr(o);const a=(0,J.getEnabledElement)(o),{renderingEngine:r}=a;Bi(r,i),e.preventDefault()}_calculateCachedStats(e,t,n){const o=e.data,{viewportId:i,renderingEngineId:a,viewport:r}=n,s=o.handles.points[0],{cachedStats:l}=o,d=Object.keys(l);for(let n=0;n<d.length;n++){const o=d[n],c={isPreScaled:ad(r,o),isSuvScaled:this.isSuvScaled(r,o,e.metadata.referencedImageId)},h=this.getTargetIdImage(o,t);if(!h)continue;const{dimensions:u,imageData:g,metadata:v}=h,m="getScalarData"in h?h.getScalarData():h.scalarData,p=v.Modality,f=Yu(g,s);if(f[0]=Math.round(f[0]),f[1]=Math.round(f[1]),f[2]=Math.round(f[2]),J.utilities.indexWithinDimensions(f,u)){this.isHandleOutsideImage=!1;const t=u[0],n=u[0]*u[1],i=m[f[2]*n+f[1]*t+f[0]];if(o.startsWith("imageId:")){const e=o.split("imageId:")[1],t=J.utilities.imageIdToURI(e),n=J.utilities.getViewportsWithImageURI(t,a)[0];f[2]=n.getCurrentImageIdIndex()}const r=id(p,e.metadata.referencedImageId,c);l[o]={index:f,value:i,Modality:p,modalityUnit:r}}else this.isHandleOutsideImage=!0,l[o]={index:f,Modality:p};e.invalidated=!1;const E=Q.ANNOTATION_MODIFIED,w={annotation:e,viewportId:i,renderingEngineId:a};(0,J.triggerEvent)(J.eventTarget,E,w)}return l}}function Zu(e,t){const n=e.cachedStats[t],{index:o,value:i,modalityUnit:a}=n;if(void 0===i)return;const r=[];return r.push("(".concat(o[0],", ").concat(o[1],", ").concat(o[2],")")),r.push("".concat(i.toFixed(2)," ").concat(a)),r}te(Xu,"toolName",void 0),Xu.toolName="Probe";const Ju=Xu;class $u extends Ju{constructor(){super(arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},arguments.length>1&&void 0!==arguments[1]?arguments[1]:{supportedInteractionTypes:["Mouse","Touch"],configuration:{shadow:!0,preventHandleOutsideImage:!1,getTextLines:Qu}}),te(this,"touchDragCallback",void 0),te(this,"mouseDragCallback",void 0),te(this,"editData",void 0),te(this,"eventDispatchDetail",void 0),te(this,"isDrawing",void 0),te(this,"isHandleOutsideImage",void 0),te(this,"postMouseDownCallback",(e=>{const t=e.detail,{currentPoints:n,element:o}=t,i=n.world,a=(0,J.getEnabledElement)(o),{viewport:r,renderingEngine:s}=a;this.isDrawing=!0;const l=r.getCamera(),{viewPlaneNormal:d,viewUp:c}=l,h=this.getReferencedImageId(r,i,d,c),u={invalidated:!0,highlighted:!0,isVisible:!0,metadata:{toolName:this.getToolName(),viewPlaneNormal:[...d],viewUp:[...c],FrameOfReferenceUID:r.getFrameOfReferenceUID(),referencedImageId:h},data:{label:"",handles:{points:[[...i]]},cachedStats:{}}},g=Bl(o,this.getToolName());return this.editData={annotation:u,newAnnotation:!0,viewportIdsToRender:g},this._activateModify(o),Qr(o),e.preventDefault(),Bi(s,g),u})),te(this,"postTouchStartCallback",(e=>this.postMouseDownCallback(e))),te(this,"renderAnnotation",((e,t)=>{let n=!1;const{viewport:o}=e;if(!this.editData)return n;const i=this.filterInteractableAnnotationsForElement(o.element,[this.editData.annotation]);if(null==i||!i.length)return n;const a=this.getTargetId(o),r=o.getRenderingEngine(),s={toolGroupId:this.toolGroupId,toolName:this.getToolName(),viewportId:e.viewport.id},l=this.editData.annotation,d=l.annotationUID,c=l.data,h=c.handles.points[0],u=o.worldToCanvas(h);s.annotationUID=d;const g=this.getStyle("color",s,l);if(ad(o,a),this.isSuvScaled(o,a,l.metadata.referencedImageId),c.cachedStats[a]&&null!=c.cachedStats[a].value?l.invalidated&&this._calculateCachedStats(l,r,e):(c.cachedStats[a]={Modality:null,index:null,value:null},this._calculateCachedStats(l,r,e)),!o.getRenderingEngine())return console.warn("Rendering Engine has been destroyed"),n;Ms(t,d,"0",[u],{color:g}),n=!0;const v=this.configuration.getTextLines(c,a);if(v){const e=[u[0]+6,u[1]-6];Ps(t,d,"0",v,[e[0],e[1]],this.getLinkedTextBoxStyle(s,l))}return n}))}}function Qu(e,t){const n=e.cachedStats[t],{index:o,value:i,modalityUnit:a}=n;if(void 0===i)return;const r=[];return r.push("(".concat(o[0],", ").concat(o[1],", ").concat(o[2],")")),r.push("".concat(i.toFixed(2)," ").concat(a)),r}te($u,"toolName",void 0),$u.toolName="DragProbe";const eg=$u;class tg extends la{constructor(){super(arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},arguments.length>1&&void 0!==arguments[1]?arguments[1]:{supportedInteractionTypes:["Mouse","Touch"]}),te(this,"_getImageDynamicRangeFromMiddleSlice",((e,t)=>{const n=Math.floor(t[2]/2),o=t[0]*t[1];let i,a;e instanceof Float32Array?(i=4,a=Float32Array):e instanceof Uint8Array?(i=1,a=Uint8Array):e instanceof Uint16Array?(i=2,a=Uint16Array):e instanceof Int16Array&&(i=2,a=Int16Array);const r=new a(e.buffer,n*o*i,o),{max:s,min:l}=this._getMinMax(r,o);return s-l}))}touchDragCallback(e){this.mouseDragCallback(e)}mouseDragCallback(e){const{element:t,deltaPoints:n}=e.detail,o=(0,J.getEnabledElement)(t),{renderingEngine:i,viewport:a}=o;let r,s,l,d,c,h,u=!1;const g=a.getProperties();if(a instanceof J.VolumeViewport){r=this.getTargetId(a).split("volumeId:")[1],h=J.utilities.getViewportsWithVolumeId(r,i.id),({lower:s,upper:l}=g.voiRange);const e=J.cache.getVolume(r);if(!e)throw new Error("Volume not found "+r);d=e.metadata.Modality,u=e.scaling&&Object.keys(e.scaling).length>0}else{if(!g.voiRange)throw new Error("Viewport is not a valid type");{var v,m;d=a.modality,({lower:s,upper:l}=g.voiRange);const{preScale:e={scaled:!1}}=(null===(v=a.getImageData)||void 0===v?void 0:v.call(a))||{};u=e.scaled&&void 0!==(null===(m=e.scalingParameters)||void 0===m?void 0:m.suvbw)}}c="PT"===d?this.getPTScaledNewRange({deltaPointsCanvas:n.canvas,lower:s,upper:l,clientHeight:t.clientHeight,isPreScaled:u,viewport:a,volumeId:r}):this.getNewRange({viewport:a,deltaPointsCanvas:n.canvas,volumeId:r,lower:s,upper:l}),a.setProperties({voiRange:c}),a.render(),a instanceof J.VolumeViewport&&h.forEach((e=>{a!==e&&e.render()}))}getPTScaledNewRange(e){let{deltaPointsCanvas:t,lower:n,upper:o,clientHeight:i,viewport:a,volumeId:r,isPreScaled:s}=e,l=4;return l=s?5/i:this._getMultiplierFromDynamicRange(a,r)||4,o-=t[1]*l,o=s?Math.max(o,.1):o,{lower:n,upper:o}}getNewRange(e){let{viewport:t,deltaPointsCanvas:n,volumeId:o,lower:i,upper:a}=e;const r=this._getMultiplierFromDynamicRange(t,o)||4,s=n[0]*r,l=n[1]*r;let{windowWidth:d,windowCenter:c}=J.utilities.windowLevel.toWindowLevel(i,a);return d+=s,c+=l,d=Math.max(d,1),J.utilities.windowLevel.toLowHighRange(d,c)}_getMultiplierFromDynamicRange(e,t){let n;if(t){var o;const e=J.cache.getVolume(t),{dimensions:i}=e,a=e.getScalarData(),r=this._getImageDynamicRangeFromMiddleSlice(a,i),s=null==e||null===(o=e.metadata)||void 0===o?void 0:o.BitsStored,l=s?2**s:1/0;n=Math.min(r,l)}else n=this._getImageDynamicRangeFromViewport(e);const i=n/1024;let a=4;return i>1&&(a=Math.round(i)),a}_getImageDynamicRangeFromViewport(e){const{imageData:t}=e.getImageData(),n=t.getDimensions();if(t.getRange)return t.getRange();let o,i;if(o=t.getScalarData?t.getScalarData():t.getPointData().getScalars(),1!==n[2])return this._getImageDynamicRangeFromMiddleSlice(o,n);if(o.getRange)i=o.getRange();else{const{min:e,max:t}=this._getMinMax(o,o.length);i=[e,t]}return i[1]-i[0]}_getMinMax(e,t){let n=1/0,o=-1/0;for(let i=0;i<t;i++){const t=e[i];t<n&&(n=t),t>o&&(o=t)}return{max:o,min:n}}}te(tg,"toolName",void 0),tg.toolName="WindowLevel";const ng=tg;class og extends la{constructor(){var e;super(arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},arguments.length>1&&void 0!==arguments[1]?arguments[1]:{supportedInteractionTypes:["Mouse","Touch"],configuration:{zoomToCenter:!1,minZoomScale:.1,maxZoomScale:30,pinchToZoom:!0,pan:!0,invert:!1}}),e=this,te(this,"touchDragCallback",void 0),te(this,"mouseDragCallback",void 0),te(this,"initialMousePosWorld",void 0),te(this,"dirVec",void 0),te(this,"preMouseDownCallback",(e=>{const t=e.detail,{element:n,currentPoints:o}=t,i=o.world,a=(0,J.getEnabledElement)(n).viewport.getCamera(),{focalPoint:r}=a;this.initialMousePosWorld=i;let s=ps.vec3.fromValues(r[0]-i[0],r[1]-i[1],r[2]-i[2]);return s=ps.vec3.normalize(ps.vec3.create(),s),this.dirVec=s,!1})),te(this,"preTouchStartCallback",(e=>{if(!this.configuration.pinchToZoom)return this.preMouseDownCallback(e)})),te(this,"_dragParallelProjection",(function(t,n,o){let i=arguments.length>3&&void 0!==arguments[3]&&arguments[3];const{element:a,deltaPoints:r}=t.detail,s=i?t.detail.deltaDistance.canvas:r.canvas[1],l=[a.clientWidth,a.clientHeight],{parallelScale:d,focalPoint:c,position:h}=o,u=s*(5/l[1])*(e.configuration.invert?-1:1),g=(1-u)*d;let v=c,m=h;if(!e.configuration.zoomToCenter){const t=ps.vec3.distance(c,e.initialMousePosWorld);m=ps.vec3.scaleAndAdd(ps.vec3.create(),h,e.dirVec,-t*u),v=ps.vec3.scaleAndAdd(ps.vec3.create(),c,e.dirVec,-t*u)}const p=n.getImageData();let f=[1,1,1];p&&(f=p.spacing);const{minZoomScale:E,maxZoomScale:w}=e.configuration,I=a.clientHeight*f[1]*.5,C=I/g;let _=g,T=!1;p&&(C<E?(_=I/E,T=!0):C>=w&&(_=I/w,T=!0)),n.setCamera({parallelScale:_,focalPoint:T?c:v,position:T?h:m})})),te(this,"_dragPerspectiveProjection",(function(t,n,o){let i=arguments.length>3&&void 0!==arguments[3]&&arguments[3];const{element:a,deltaPoints:r}=t.detail,s=i?t.detail.deltaDistance.canvas:r.canvas[1],l=[a.clientWidth,a.clientHeight],{position:d,focalPoint:c,viewPlaneNormal:h}=o,u=nc().distance2BetweenPoints(d,c),g=Math.sqrt(u)/l[1],v=[-h[0],-h[1],-h[2]],m=e.configuration.invert?s/g:s*g;let p=m*v[0];d[0]+=p,c[0]+=p,p=m*v[1],d[1]+=p,c[1]+=p,p=m*v[2],d[2]+=p,c[2]+=p,n.setCamera({position:d,focalPoint:c})})),this.initialMousePosWorld=[0,0,0],this.dirVec=[0,0,0],this.configuration.pinchToZoom?this.touchDragCallback=this._pinchCallback.bind(this):this.touchDragCallback=this._dragCallback.bind(this),this.mouseDragCallback=this._dragCallback.bind(this)}_pinchCallback(e){if(e.detail.currentPointsList.length>1){const{element:t,currentPoints:n}=e.detail,o=(0,J.getEnabledElement)(t),{viewport:i}=o,a=i.getCamera(),r=n.world,{focalPoint:s}=a;this.initialMousePosWorld=r;let l=ps.vec3.fromValues(s[0]-r[0],s[1]-r[1],s[2]-r[2]);l=ps.vec3.normalize(ps.vec3.create(),l),this.dirVec=l,a.parallelProjection?this._dragParallelProjection(e,i,a,!0):this._dragPerspectiveProjection(e,i,a,!0),i.render()}this.configuration.pan&&this._panCallback(e)}_dragCallback(e){const{element:t}=e.detail,n=(0,J.getEnabledElement)(t),{viewport:o}=n,i=o.getCamera();i.parallelProjection?this._dragParallelProjection(e,o,i):this._dragPerspectiveProjection(e,o,i),o.render()}_panCallback(e){const{element:t,deltaPoints:n}=e.detail,o=(0,J.getEnabledElement)(t),i=n.world,a=o.viewport.getCamera(),{focalPoint:r,position:s}=a,l=[s[0]-i[0],s[1]-i[1],s[2]-i[2]],d=[r[0]-i[0],r[1]-i[1],r[2]-i[2]];o.viewport.setCamera({focalPoint:d,position:l}),o.viewport.render()}}te(og,"toolName",void 0),og.toolName="Zoom";const ig=og;class ag extends la{constructor(){super(arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},arguments.length>1&&void 0!==arguments[1]?arguments[1]:{supportedInteractionTypes:["Mouse","Touch"],configuration:{invert:!1,debounceIfNotLoaded:!0,loop:!1}}),te(this,"deltaY",void 0),this.deltaY=1}mouseDragCallback(e){this._dragCallback(e)}touchDragCallback(e){this._dragCallback(e)}_dragCallback(e){const{deltaPoints:t,viewportId:n,renderingEngineId:o}=e.detail,{viewport:i}=(0,J.getEnabledElementByIds)(n,o),a=this.getTargetId(i),{debounceIfNotLoaded:r,invert:s,loop:l}=this.configuration,d=t.canvas[1];let c;i instanceof J.VolumeViewport&&(c=a.split("volumeId:")[1]);const h=this._getPixelPerImage(i),u=d+this.deltaY;if(h)if(Math.abs(u)>=h){const e=Math.round(u/h);Es(i,{delta:s?-e:e,volumeId:c,debounceLoading:r,loop:l}),this.deltaY=u%h}else this.deltaY=u}_getPixelPerImage(e){const{element:t}=e,n=e.getNumberOfSlices();return Math.max(2,t.offsetHeight/Math.max(n,8))}}te(ag,"toolName",void 0),ag.toolName="StackScroll";const rg=ag;function sg(e,t){return 3===e[0].length?function(e,t){const[n,o]=e,[i,a]=t,r=ps.vec3.sub(ps.vec3.create(),o,n),s=ps.vec3.sub(ps.vec3.create(),i,a),l=ps.vec3.dot(r,s)/(ps.vec3.length(r)*ps.vec3.length(s));return 180*Math.acos(l)/Math.PI}(e,t):function(e,t){const[n,o]=e,[i,a]=t,r=ps.vec2.sub(ps.vec2.create(),o,n),s=ps.vec2.sub(ps.vec2.create(),i,a),l=ps.vec2.dot(r,s)/(ps.vec2.length(r)*ps.vec2.length(s));return Math.acos(l)*(180/Math.PI)}(e,t)}class lg extends la{constructor(){super(arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},arguments.length>1&&void 0!==arguments[1]?arguments[1]:{supportedInteractionTypes:["Mouse","Touch"]}),te(this,"touchDragCallback",void 0),te(this,"mouseDragCallback",void 0),this.touchDragCallback=this._dragCallback.bind(this),this.mouseDragCallback=this._dragCallback.bind(this)}_dragCallback(e){const{element:t,currentPoints:n,startPoints:o}=e.detail,i=n.world,a=o.world,r=(0,J.getEnabledElement)(t),{viewport:s}=r,l=s.getCamera(),d=[.5*t.clientWidth,.5*t.clientHeight],c=s.canvasToWorld(d);let h=sg([a,c],[c,i]);const{viewPlaneNormal:u,viewUp:g}=l,v=ps.vec3.sub(ps.vec3.create(),c,a),m=ps.vec3.sub(ps.vec3.create(),c,i),p=ps.vec3.cross(ps.vec3.create(),v,m);if(ps.vec3.dot(u,p)>0&&(h=-h),!Number.isNaN(h)){if(s instanceof J.BaseVolumeViewport){const e=h*Math.PI/180,t=ps.mat4.identity(new Float32Array(16));ps.mat4.rotate(t,t,e,u);const n=ps.vec3.transformMat4(ps.vec3.create(),g,t);s.setCamera({viewUp:n})}else{const{rotation:e}=s.getProperties();s.setProperties({rotation:e+h})}s.render()}}}te(lg,"toolName",void 0),lg.toolName="PlanarRotate";const dg=lg;class cg extends la{constructor(){super(arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},arguments.length>1&&void 0!==arguments[1]?arguments[1]:{supportedInteractionTypes:["Mouse","Touch"],configuration:{invert:!1,debounceIfNotLoaded:!0,loop:!1}}),te(this,"_configuration",void 0)}mouseWheelCallback(e){const{wheel:t,element:n}=e.detail,{direction:o}=t,{invert:i}=this.configuration,{viewport:a}=(0,J.getEnabledElement)(n),r=o*(i?-1:1),s=this.getTargetId(a).split("volumeId:")[1];Es(a,{delta:r,debounceLoading:this.configuration.debounceIfNotLoaded,loop:this.configuration.loop,volumeId:s})}}te(cg,"toolName",void 0),cg.toolName="StackScrollMouseWheel";const hg=cg,ug={X:[1,0,0],Y:[0,1,0],Z:[0,0,1],CUSTOM:[]};class gg extends la{constructor(){super(arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},arguments.length>1&&void 0!==arguments[1]?arguments[1]:{supportedInteractionTypes:["Mouse","Touch"],configuration:{direction:ug.Z,rotateIncrementDegrees:.5}}),te(this,"_configuration",void 0)}mouseWheelCallback(e){const{element:t,wheel:n}=e.detail,o=(0,J.getEnabledElement)(t),{viewport:i}=o,{direction:a,rotateIncrementDegrees:r}=this.configuration,s=i.getCamera(),{viewUp:l,position:d,focalPoint:c}=s,{direction:h}=n,[u,g,v]=c,[m,p,f]=a,E=h*r,w=[0,0,0],I=[0,0,0],C=[0,0,0],_=ps.mat4.identity(new Float32Array(16));ps.mat4.translate(_,_,[u,g,v]),ps.mat4.rotate(_,_,E,[m,p,f]),ps.mat4.translate(_,_,[-u,-g,-v]),ps.vec3.transformMat4(w,d,_),ps.vec3.transformMat4(I,c,_),ps.mat4.identity(_),ps.mat4.rotate(_,_,E,[m,p,f]),ps.vec3.transformMat4(C,l,_),i.setCamera({position:w,viewUp:C,focalPoint:I}),i.render()}}te(gg,"toolName",void 0),gg.toolName="VolumeRotateMouseWheel";const vg=gg;class mg extends la{constructor(){super(arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},arguments.length>1&&void 0!==arguments[1]?arguments[1]:{supportedInteractionTypes:["Mouse","Touch"],configuration:{targetViewportIds:[]}}),te(this,"_bounds",void 0)}mouseClickCallback(e){const{element:t,currentPoints:n}=e.detail,o=(0,J.getEnabledElement)(t),{viewport:i,renderingEngine:a}=o,r=this.getTargetId(i);if(!r.startsWith("volumeId"))throw new Error("MIPJumpToClickTool: targetId is not a volumeId, you should only use MIPJumpToClickTool with a volumeId as the targetId");const s=r.split("volumeId:")[1];let l=-1/0;const d=oc(i,n.world,s,((e,t)=>{if(e>l)return l=e,t}));if(!d||!d.length)return;const{targetViewportIds:c,toolGroupId:h}=this.configuration;a.getViewports().filter((e=>{if((null==c?void 0:c.indexOf(e.id))>=0)return!0;const t=yo(e.id,a.id);return!(!h||h!==(null==t?void 0:t.id))})).forEach((e=>{e instanceof J.VolumeViewport?fu(e,d):console.warn("Cannot jump to specified world coordinates for a viewport that is not a VolumeViewport")}))}}te(mg,"toolName",void 0),mg.toolName="MIPJumpToClickTool";const pg=mg,{transformWorldToIndex:fg}=J.utilities;class Eg extends Jl{constructor(){super(arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},arguments.length>1&&void 0!==arguments[1]?arguments[1]:{supportedInteractionTypes:["Mouse","Touch"],configuration:{preventHandleOutsideImage:!1,getTextLines:wg}}),te(this,"touchDragCallback",void 0),te(this,"mouseDragCallback",void 0),te(this,"_throttledCalculateCachedStats",void 0),te(this,"editData",void 0),te(this,"isDrawing",void 0),te(this,"isHandleOutsideImage",void 0),te(this,"addNewAnnotation",(e=>{const t=e.detail,{currentPoints:n,element:o}=t,i=n.world,a=(0,J.getEnabledElement)(o),{viewport:r,renderingEngine:s}=a;Qr(o),this.isDrawing=!0;const l=r.getCamera(),{viewPlaneNormal:d,viewUp:c}=l,h=this.getReferencedImageId(r,i,d,c),u=r.getFrameOfReferenceUID(),g={highlighted:!0,invalidated:!0,metadata:{toolName:this.getToolName(),viewPlaneNormal:[...d],viewUp:[...c],FrameOfReferenceUID:u,referencedImageId:h},data:{handles:{points:[[...i],[...i]],activeHandleIndex:null,textBox:{hasMoved:!1,worldPosition:[0,0,0],worldBoundingBox:{topLeft:[0,0,0],topRight:[0,0,0],bottomLeft:[0,0,0],bottomRight:[0,0,0]}}},label:"",cachedStats:{}}};Je(g,o);const v=Bl(o,this.getToolName());return this.editData={annotation:g,viewportIdsToRender:v,handleIndex:1,movingTextBox:!1,newAnnotation:!0,hasMoved:!1},this._activateDraw(o),e.preventDefault(),Bi(s,v),g})),te(this,"isPointNearTool",((e,t,n,o)=>{const i=(0,J.getEnabledElement)(e),{viewport:a}=i,{data:r}=t,[s,l]=r.handles.points,d=a.worldToCanvas(s),c=a.worldToCanvas(l),h={start:{x:d[0],y:d[1]},end:{x:c[0],y:c[1]}};return ed([h.start.x,h.start.y],[h.end.x,h.end.y],[n[0],n[1]])<=o})),te(this,"toolSelectedCallback",((e,t)=>{const n=e.detail,{element:o}=n;t.highlighted=!0;const i=Bl(o,this.getToolName());this.editData={annotation:t,viewportIdsToRender:i,movingTextBox:!1},this._activateModify(o),Qr(o);const a=(0,J.getEnabledElement)(o),{renderingEngine:r}=a;Bi(r,i),e.preventDefault()})),te(this,"_endCallback",(e=>{const t=e.detail,{element:n}=t,{annotation:o,viewportIdsToRender:i,newAnnotation:a,hasMoved:r}=this.editData,{data:s}=o;if(a&&!r)return;s.handles.activeHandleIndex=null,this._deactivateModify(n),this._deactivateDraw(n),$r(n);const l=(0,J.getEnabledElement)(n),{renderingEngine:d}=l;if(this.isHandleOutsideImage&&this.configuration.preventHandleOutsideImage&&Qe(o.annotationUID),Bi(d,i),a){const e=Q.ANNOTATION_COMPLETED,t={annotation:o};(0,J.triggerEvent)(J.eventTarget,e,t)}this.editData=null,this.isDrawing=!1})),te(this,"_dragCallback",(e=>{this.isDrawing=!0;const t=e.detail,{element:n}=t,{annotation:o,viewportIdsToRender:i,handleIndex:a,movingTextBox:r}=this.editData,{data:s}=o;if(r){const{deltaPoints:e}=t,n=e.world,{textBox:o}=s.handles,{worldPosition:i}=o;i[0]+=n[0],i[1]+=n[1],i[2]+=n[2],o.hasMoved=!0}else if(void 0===a){const{deltaPoints:e}=t,n=e.world;s.handles.points.forEach((e=>{e[0]+=n[0],e[1]+=n[1],e[2]+=n[2]})),o.invalidated=!0}else{const{currentPoints:e}=t,n=e.world;s.handles.points[a]=[...n],o.invalidated=!0}this.editData.hasMoved=!0;const l=(0,J.getEnabledElement)(n),{renderingEngine:d}=l;Bi(d,i)})),te(this,"cancel",(e=>{if(this.isDrawing){this.isDrawing=!1,this._deactivateDraw(e),this._deactivateModify(e),$r(e);const{annotation:t,viewportIdsToRender:n,newAnnotation:o}=this.editData,{data:i}=t;t.highlighted=!1,i.handles.activeHandleIndex=null;const a=(0,J.getEnabledElement)(e),{renderingEngine:r}=a;if(Bi(r,n),o){const e=Q.ANNOTATION_COMPLETED,n={annotation:t};(0,J.triggerEvent)(J.eventTarget,e,n)}return this.editData=null,t.annotationUID}})),te(this,"_activateModify",(e=>{He.isInteractingWithTool=!0,e.addEventListener(Q.MOUSE_UP,this._endCallback),e.addEventListener(Q.MOUSE_DRAG,this._dragCallback),e.addEventListener(Q.MOUSE_CLICK,this._endCallback),e.addEventListener(Q.TOUCH_END,this._endCallback),e.addEventListener(Q.TOUCH_DRAG,this._dragCallback),e.addEventListener(Q.TOUCH_TAP,this._endCallback)})),te(this,"_deactivateModify",(e=>{He.isInteractingWithTool=!1,e.removeEventListener(Q.MOUSE_UP,this._endCallback),e.removeEventListener(Q.MOUSE_DRAG,this._dragCallback),e.removeEventListener(Q.MOUSE_CLICK,this._endCallback),e.removeEventListener(Q.TOUCH_END,this._endCallback),e.removeEventListener(Q.TOUCH_DRAG,this._dragCallback),e.removeEventListener(Q.TOUCH_TAP,this._endCallback)})),te(this,"_activateDraw",(e=>{He.isInteractingWithTool=!0,e.addEventListener(Q.MOUSE_UP,this._endCallback),e.addEventListener(Q.MOUSE_DRAG,this._dragCallback),e.addEventListener(Q.MOUSE_MOVE,this._dragCallback),e.addEventListener(Q.MOUSE_CLICK,this._endCallback),e.addEventListener(Q.TOUCH_END,this._endCallback),e.addEventListener(Q.TOUCH_DRAG,this._dragCallback),e.addEventListener(Q.TOUCH_TAP,this._endCallback)})),te(this,"_deactivateDraw",(e=>{He.isInteractingWithTool=!1,e.removeEventListener(Q.MOUSE_UP,this._endCallback),e.removeEventListener(Q.MOUSE_DRAG,this._dragCallback),e.removeEventListener(Q.MOUSE_MOVE,this._dragCallback),e.removeEventListener(Q.MOUSE_CLICK,this._endCallback),e.removeEventListener(Q.TOUCH_END,this._endCallback),e.removeEventListener(Q.TOUCH_DRAG,this._dragCallback),e.removeEventListener(Q.TOUCH_TAP,this._endCallback)})),te(this,"renderAnnotation",((e,t)=>{var n,o;let i=!1;const{viewport:a}=e,{element:r}=a;let s=Ze(this.getToolName(),r);if(null===(n=s)||void 0===n||!n.length)return i;if(s=this.filterInteractableAnnotationsForElement(r,s),null===(o=s)||void 0===o||!o.length)return i;const l=this.getTargetId(a),d=a.getRenderingEngine(),c={toolGroupId:this.toolGroupId,toolName:this.getToolName(),viewportId:e.viewport.id};for(let n=0;n<s.length;n++){const o=s[n],{annotationUID:r,data:h}=o,{points:u,activeHandleIndex:g}=h.handles;c.annotationUID=r;const v=this.getStyle("lineWidth",c,o),m=this.getStyle("lineDash",c,o),p=this.getStyle("color",c,o),f=this.getStyle("shadow",c,o),E=u.map((e=>a.worldToCanvas(e)));let w;if(h.cachedStats[l]&&null!=h.cachedStats[l].unit?o.invalidated&&this._throttledCalculateCachedStats(o,d,e):(h.cachedStats[l]={length:null,unit:null},this._calculateCachedStats(o,d,e)),!Me(r))continue;le(o)||this.editData||null===g||(w=[E[g]]),w&&Ms(t,r,"0",E,{color:p,lineDash:m,lineWidth:v});const I="".concat(r,"-line");if(xs(t,r,"1",E[0],E[1],{color:p,width:v,lineDash:m,shadow:f},I),i=!0,!a.getRenderingEngine())return console.warn("Rendering Engine has been destroyed"),i;const C=this.getLinkedTextBoxStyle(c,o);if(!C.visibility){h.handles.textBox={hasMoved:!1,worldPosition:[0,0,0],worldBoundingBox:{topLeft:[0,0,0],topRight:[0,0,0],bottomLeft:[0,0,0],bottomRight:[0,0,0]}};continue}const _=this.configuration.getTextLines(h,l);if(!h.handles.textBox.hasMoved){const e=nd(E);h.handles.textBox.worldPosition=a.canvasToWorld(e)}const T=a.worldToCanvas(h.handles.textBox.worldPosition),b=As(t,r,"1",_,T,E,{},C),{x:D,y:S,width:y,height:O}=b;h.handles.textBox.worldBoundingBox={topLeft:a.canvasToWorld([D,S]),topRight:a.canvasToWorld([D+y,S]),bottomLeft:a.canvasToWorld([D,S+O]),bottomRight:a.canvasToWorld([D+y,S+O])}}return i})),this._throttledCalculateCachedStats=js(this._calculateCachedStats,100,{trailing:!0})}handleSelectedCallback(e,t,n){const o=e.detail,{element:i}=o,{data:a}=t;t.highlighted=!0;let r,s=!1;n.worldPosition?s=!0:r=a.handles.points.findIndex((e=>e===n));const l=Bl(i,this.getToolName());this.editData={annotation:t,viewportIdsToRender:l,handleIndex:r,movingTextBox:s},this._activateModify(i),Qr(i);const d=(0,J.getEnabledElement)(i),{renderingEngine:c}=d;Bi(c,l),e.preventDefault()}_calculateLength(e,t){const n=e[0]-t[0],o=e[1]-t[1],i=e[2]-t[2];return Math.sqrt(n*n+o*o+i*i)}_calculateCachedStats(e,t,n){const o=e.data,{viewportId:i,renderingEngineId:a}=n,r=o.handles.points[0],s=o.handles.points[1],{cachedStats:l}=o,d=Object.keys(l);for(let e=0;e<d.length;e++){const n=d[e],o=this.getTargetIdImage(n,t);if(!o)continue;const{imageData:i,dimensions:a}=o,c=$s(o),h=this._calculateLength(r,s)/c,u=fg(i,r),g=fg(i,s);this._isInsideVolume(u,g,a)?this.isHandleOutsideImage=!1:this.isHandleOutsideImage=!0,l[n]={length:h,unit:Zs(0,o)}}e.invalidated=!1;const c=Q.ANNOTATION_MODIFIED,h={annotation:e,viewportId:i,renderingEngineId:a};return(0,J.triggerEvent)(J.eventTarget,c,h),l}_isInsideVolume(e,t,n){return J.utilities.indexWithinDimensions(e,n)&&J.utilities.indexWithinDimensions(t,n)}}function wg(e,t){const n=e.cachedStats[t],{length:o,unit:i}=n;if(null!=o&&!isNaN(o))return["".concat(al(o)," ").concat(i)]}te(Eg,"toolName",void 0),Eg.toolName="Length";const Ig=Eg;var Cg=I(847),_g=I.n(Cg);const{RENDERING_DEFAULTS:Tg}=J.CONSTANTS;function bg(){return"rgb(0, 200, 0)"}function Dg(){return!0}function Sg(){return!0}function yg(){return!0}class Og extends Jl{constructor(){var e,t,n,o;let i=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};super(i,arguments.length>1&&void 0!==arguments[1]?arguments[1]:{supportedInteractionTypes:["Mouse"],configuration:{shadow:!0,viewportIndicators:!0,autoPan:{enabled:!1,panSize:10},referenceLinesCenterGapRadius:20,filterActorUIDsToSetSlabThickness:[],slabThicknessBlendMode:J.Enums.BlendModes.MAXIMUM_INTENSITY_BLEND,mobile:{enabled:!1,opacity:.8,handleRadius:9}}}),te(this,"toolCenter",[0,0,0]),te(this,"_getReferenceLineColor",void 0),te(this,"_getReferenceLineControllable",void 0),te(this,"_getReferenceLineDraggableRotatable",void 0),te(this,"_getReferenceLineSlabThicknessControlsOn",void 0),te(this,"editData",void 0),te(this,"initializeViewport",(e=>{let{renderingEngineId:t,viewportId:n}=e;const o=(0,J.getEnabledElementByIds)(n,t),{FrameOfReferenceUID:i,viewport:a}=o,{element:r}=a,{position:s,focalPoint:l,viewPlaneNormal:d}=a.getCamera();let c=this._getAnnotations(o);return c=this.filterInteractableAnnotationsForElement(r,c),c.length&&Qe(c[0].annotationUID),Je({highlighted:!1,metadata:{cameraPosition:[...s],cameraFocalPoint:[...l],FrameOfReferenceUID:i,toolName:this.getToolName()},data:{handles:{rotationPoints:[],slabThicknessPoints:[],toolCenter:this.toolCenter},activeOperation:null,activeViewportIds:[],viewportId:n}},r),{normal:d,point:a.canvasToWorld([a.canvas.clientWidth/2,a.canvas.clientHeight/2])}})),te(this,"_getViewportsInfo",(()=>zi(this.toolGroupId).viewportsInfo)),te(this,"computeToolCenter",(e=>{if(!e.length||1===e.length)throw new Error("For crosshairs to operate, at least two viewports must be given.");const[t,n,o]=e,{normal:i,point:a}=this.initializeViewport(t),{normal:r,point:s}=this.initializeViewport(n);let l=[0,0,0],d=ps.vec3.create();o?({normal:l,point:d}=this.initializeViewport(o)):(ps.vec3.add(d,a,s),ps.vec3.scale(d,d,.5),ps.vec3.cross(l,i,r));const c=J.utilities.planar.planeEquation(i,a),h=J.utilities.planar.planeEquation(r,s),u=J.utilities.planar.planeEquation(l,d);this.toolCenter=J.utilities.planar.threePlaneIntersection(c,h,u);const{renderingEngine:g}=(0,J.getEnabledElementByIds)(e[0].viewportId,e[0].renderingEngineId);Bi(g,e.map((e=>{let{viewportId:t}=e;return t})))})),te(this,"addNewAnnotation",(e=>{const t=e.detail,{element:n}=t,{currentPoints:o}=t,i=o.world,a=(0,J.getEnabledElement)(n),{viewport:r}=a;this._jump(a,i);const s=this._getAnnotations(a),l=this.filterInteractableAnnotationsForElement(r.element,s),{data:d}=l[0],{rotationPoints:c}=d.handles,h=[];for(let e=0;e<c.length-1;++e){const t=c[e][1],n=this._getReferenceLineControllable(t.id),o=this._getReferenceLineDraggableRotatable(t.id);n&&o&&(h.push(t.id),e++)}return d.activeViewportIds=[...h],d.handles.activeOperation=1,e.preventDefault(),Qr(n),this._activateModify(n),l[0]})),te(this,"cancel",(()=>{console.log("Not implemented yet")})),te(this,"handleSelectedCallback",((e,t)=>{const n=e.detail,{element:o}=n;t.highlighted=!0,this._activateModify(o),Qr(o),e.preventDefault()})),te(this,"isPointNearTool",((e,t,n,o)=>!!this._pointNearTool(e,t,n,6))),te(this,"toolSelectedCallback",((e,t,n)=>{const o=e.detail,{element:i}=o;t.highlighted=!0,this._activateModify(i),Qr(i),e.preventDefault()})),te(this,"onCameraModified",(e=>{var t;const n=e.detail,{element:o}=n,i=(0,J.getEnabledElement)(o),{renderingEngine:a}=i,r=i.viewport,s=this._getAnnotations(i),l=this.filterInteractableAnnotationsForElement(o,s)[0];if(!l)return;const d=r.getCamera(),c=l.metadata.cameraPosition,h=[0,0,0];nc().subtract(d.position,c,h);const u=l.metadata.cameraFocalPoint,g=[0,0,0];nc().subtract(d.focalPoint,u,g),l.metadata.cameraPosition=[...d.position],l.metadata.cameraFocalPoint=[...d.focalPoint];const v=this._getReferenceLineControllable(r.id),m=this._getReferenceLineDraggableRotatable(r.id);if(!J.utilities.isEqual(d.position,c,.001)&&v&&m){let e=!1;J.utilities.isEqual(h,g,.001)||(e=!0);const t=Math.abs(nc().dot(h,d.viewPlaneNormal))<.01;e||t||(this.toolCenter[0]+=h[0],this.toolCenter[1]+=h[1],this.toolCenter[2]+=h[2])}null!==(t=this.configuration.autoPan)&&void 0!==t&&t.enabled&&yo(r.id,a.id).getViewportIds().filter((e=>e!==r.id)).forEach((e=>{this._autoPanViewportIfNecessary(e,a)}));const p=Bl(o,this.getToolName(),!1);Bi(a,p)})),te(this,"mouseMoveCallback",((e,t)=>{const{element:n,currentPoints:o}=e.detail,i=o.canvas;let a=!1;for(let e=0;e<t.length;e++){const o=t[e];if(le(o))continue;const{data:r,highlighted:s}=o;if(!r.handles)continue;const l=r.handles.activeOperation,d=r.activeViewportIds&&r.activeViewportIds.length>0?[...r.activeViewportIds]:[];r.activeViewportIds=[],r.handles.activeOperation=null;let c=!1;c=!!this.getHandleNearImagePoint(n,o,i,6)||this._pointNearTool(n,o,i,6),c&&!s||!c&&s?(o.highlighted=!s,a=!0):r.handles.activeOperation===l&&this._areViewportIdArraysEqual(r.activeViewportIds,d)||(a=!0)}return a})),te(this,"filterInteractableAnnotationsForElement",((e,t)=>{if(!t||!t.length)return[];const n=(0,J.getEnabledElement)(e),{viewportId:o}=n;return t.filter((e=>e.data.viewportId===o))})),te(this,"renderAnnotation",((e,t)=>{let n=!1;const{viewport:o,renderingEngine:i}=e,{element:a}=o,r=this._getAnnotations(e),s=o.getCamera(),l=this.filterInteractableAnnotationsForElement(a,r)[0];if(null==r||!r.length||null==l||!l.data)return n;const d=l.annotationUID,{clientWidth:c,clientHeight:h}=o.canvas,u=Math.sqrt(c*c+h*h),g=Math.min(c,h),v=l.data,m=o.worldToCanvas(this.toolCenter),p=this._filterAnnotationsByUniqueViewportOrientations(e,r),f=[],E=[0,0,c,h];p.forEach((e=>{const{data:t}=e;t.handles.toolCenter=this.toolCenter;const n=i.getViewport(t.viewportId),a=n.getCamera(),r=this._getReferenceLineControllable(n.id),l=this._getReferenceLineDraggableRotatable(n.id),d=this._getReferenceLineSlabThicknessControlsOn(n.id),{clientWidth:c,clientHeight:h}=n.canvas,v=Math.sqrt(c*c+h*h),w=[.5*c,.5*h],I=n.canvasToWorld(w),C=[0,0,0];nc().cross(s.viewPlaneNormal,a.viewPlaneNormal,C),nc().normalize(C),nc().multiplyScalar(C,v);const _=[0,0,0];nc().add(I,C,_);const T=[0,0,0];nc().subtract(I,C,T);const b=o.worldToCanvas(_),D=o.worldToCanvas(I),S=ps.vec2.create();ps.vec2.subtract(S,b,D),ps.vec2.normalize(S,S);const y=ps.vec2.create();ps.vec2.scale(y,S,100*u);const O=ps.vec2.create();ps.vec2.scale(O,S,.4*g);const M=ps.vec2.create();ps.vec2.scale(M,S,.2*g);const x=ps.vec2.create(),N=this.configuration.referenceLinesCenterGapRadius;ps.vec2.scale(x,S,2===p.length?N:0);const k=ps.vec2.create(),R=ps.vec2.create(),P=ps.vec2.create(),L=ps.vec2.create();let A=ps.vec2.clone(m);l&&r||(A=ps.vec2.clone(D)),ps.vec2.add(k,A,x),ps.vec2.add(R,A,y),ps.vec2.subtract(P,A,x),ps.vec2.subtract(L,A,y),Vd(k,R,E),Vd(P,L,E);const U=ps.vec2.create();ps.vec2.subtract(U,m,O);const V=ps.vec2.create();ps.vec2.add(V,m,O);let W=ps.vec2.clone(m);!l&&d&&(W=ps.vec2.clone(D));let F=[...this.toolCenter];!l&&d&&(F=[...I]);const H=[0,0,0];nc().subtract(_,T,H),nc().normalize(H);const{viewPlaneNormal:B}=s,{matrix:G}=_g().buildFromDegree().rotate(90,B),q=[0,0,0];ps.vec3.transformMat4(q,H,G);const j=n.getSlabThickness(),z=[...q];nc().multiplyScalar(z,j);const K=[0,0,0];nc().add(F,z,K);const Y=o.worldToCanvas(K),X=ps.vec2.create();ps.vec2.subtract(X,W,Y);const Z=ps.vec2.create();ps.vec2.subtract(Z,W,y),ps.vec2.add(Z,Z,X);const J=ps.vec2.create();ps.vec2.add(J,W,y),ps.vec2.add(J,J,X),Vd(Z,J,E);const $=ps.vec2.create();ps.vec2.add($,W,y),ps.vec2.subtract($,$,X);const Q=ps.vec2.create();ps.vec2.subtract(Q,W,y),ps.vec2.subtract(Q,Q,X),Vd($,Q,E);const ee=ps.vec2.create(),te=ps.vec2.create(),ne=ps.vec2.create(),oe=ps.vec2.create();ps.vec2.subtract(ee,W,M),ps.vec2.add(ee,ee,X),ps.vec2.add(te,W,M),ps.vec2.add(te,te,X),ps.vec2.subtract(ne,W,M),ps.vec2.subtract(ne,ne,X),ps.vec2.add(oe,W,M),ps.vec2.subtract(oe,oe,X),f.push([n,k,R,P,L,Z,J,$,Q,U,V,ee,te,ne,oe])}));const w=[],I=[],C=this._getReferenceLineColor(o.id),_=void 0!==C?C:"rgb(200, 200, 200)";return f.forEach(((e,n)=>{var i,a;const r=e[0],s=this._getReferenceLineColor(r.id),l=this._getReferenceLineControllable(r.id),c=this._getReferenceLineDraggableRotatable(r.id)||(null===(i=this.configuration.mobile)||void 0===i?void 0:i.enabled),h=this._getReferenceLineSlabThicknessControlsOn(r.id)||(null===(a=this.configuration.mobile)||void 0===a?void 0:a.enabled),u=v.activeViewportIds.find((e=>e===r.id));let g=void 0!==s?s:"rgb(200, 200, 200)",m=1;const p=null!==v.handles.activeOperation&&1===v.handles.activeOperation&&u;p&&(m=2.5);let f="".concat(n);if(l&&c?(f="".concat(n,"One"),xs(t,d,f,e[1],e[2],{color:g,lineWidth:m}),f="".concat(n,"Two"),xs(t,d,f,e[3],e[4],{color:g,lineWidth:m})):xs(t,d,f,e[2],e[4],{color:g,lineWidth:m}),l){var E;g=void 0!==s?s:"rgb(200, 200, 200)";const i=2===v.handles.activeOperation,a=[e[9],e[10]],l=[o.canvasToWorld(e[9]),r,e[1],e[2]],m=[o.canvasToWorld(e[10]),r,e[3],e[4]];w.push(l,m);const U=3===v.handles.activeOperation,V=[e[11],e[12],e[13],e[14]],W=[o.canvasToWorld(e[11]),r,e[5],e[6]],F=[o.canvasToWorld(e[12]),r,e[5],e[6]],H=[o.canvasToWorld(e[13]),r,e[7],e[8]],B=[o.canvasToWorld(e[14]),r,e[7],e[8]];if(I.push(W,F,H,B),(p||null!==(E=this.configuration.mobile)&&void 0!==E&&E.enabled)&&!i&&!U&&c&&h){var C,_,T,b,D,S,y,O;let e="".concat(n,"One");Ms(t,d,e,a,{color:g,handleRadius:null!==(C=this.configuration.mobile)&&void 0!==C&&C.enabled?null===(_=this.configuration.mobile)||void 0===_?void 0:_.handleRadius:3,opacity:null!==(T=this.configuration.mobile)&&void 0!==T&&T.enabled?null===(b=this.configuration.mobile)||void 0===b?void 0:b.opacity:1,type:"circle"}),e="".concat(n,"Two"),Ms(t,d,e,V,{color:g,handleRadius:null!==(D=this.configuration.mobile)&&void 0!==D&&D.enabled?null===(S=this.configuration.mobile)||void 0===S?void 0:S.handleRadius:3,opacity:null!==(y=this.configuration.mobile)&&void 0!==y&&y.enabled?null===(O=this.configuration.mobile)||void 0===O?void 0:O.opacity:1,type:"rect"})}else if(p&&!i&&!U&&c){var M,x,N,k;const e="".concat(n);Ms(t,d,e,a,{color:g,handleRadius:null!==(M=this.configuration.mobile)&&void 0!==M&&M.enabled?null===(x=this.configuration.mobile)||void 0===x?void 0:x.handleRadius:3,opacity:null!==(N=this.configuration.mobile)&&void 0!==N&&N.enabled?null===(k=this.configuration.mobile)||void 0===k?void 0:k.opacity:1,type:"circle"})}else if(u&&!i&&!U&&h){var R,P,L,A;const e="".concat(n);Ms(t,d,e,V,{color:g,handleRadius:null!==(R=this.configuration.mobile)&&void 0!==R&&R.enabled?null===(P=this.configuration.mobile)||void 0===P?void 0:P.handleRadius:3,opacity:null!==(L=this.configuration.mobile)&&void 0!==L&&L.enabled?null===(A=this.configuration.mobile)||void 0===A?void 0:A.opacity:1,type:"rect"})}else if(i&&c){const e="".concat(n);Ms(t,d,e,a,{color:g,handleRadius:2,fill:g,type:"circle"})}else U&&u&&h&&Ms(t,d,f,V,{color:g,handleRadius:2,fill:g,type:"rect"});r.getSlabThickness()>.5&&h&&(f="".concat(n,"STOne"),xs(t,d,f,e[5],e[6],{color:g,width:1,lineDash:[2,3]}),f="".concat(n,"STTwo"),xs(t,d,f,e[7],e[8],{color:g,width:e,lineDash:[2,3]}))}})),n=!0,v.handles.rotationPoints=w,v.handles.slabThicknessPoints=I,this.configuration.viewportIndicators&&ys(t,d,"0",[.95*c,.05*h],.01*u,{color:_,fill:_}),n})),te(this,"_getAnnotations",(e=>{const{viewport:t}=e,n=Ze(this.getToolName(),t.element)||[],o=this._getViewportsInfo().map((e=>{let{viewportId:t}=e;return t}));return n.filter((e=>{const{data:t}=e;return o.includes(t.viewportId)}))})),te(this,"_onNewVolume",(e=>{const t=this._getViewportsInfo();this.computeToolCenter(t)})),te(this,"_areViewportIdArraysEqual",((e,t)=>e.length===t.length&&(e.forEach((e=>{let n=!1;for(let o=0;o<t.length;++o)if(e===t[o]){n=!0;break}if(!1===n)return!1})),!0))),te(this,"_getAnnotationsForViewportsWithDifferentCameras",((e,t)=>{const{viewportId:n,renderingEngine:o,viewport:i}=e,a=t.filter((e=>e.data.viewportId!==n));if(!a||!a.length)return[];const r=i.getCamera(),{viewPlaneNormal:s,position:l}=r,d=a.filter((e=>{const{viewportId:t}=e.data,n=o.getViewport(t).getCamera();return!(J.utilities.isEqual(n.viewPlaneNormal,s,.01)&&J.utilities.isEqual(n.position,l,1))}));return d})),te(this,"_filterViewportWithSameOrientation",((e,t,n)=>{const{renderingEngine:o}=e,{data:i}=t,a=o.getViewport(i.viewportId),r=n.filter((e=>{const{data:t}=e,n=o.getViewport(t.viewportId);return!0===this._getReferenceLineControllable(n.id)}));if(!r||!r.length)return[];const s=a.getCamera(),l=s.viewPlaneNormal;return nc().normalize(l),r.filter((e=>{const{viewportId:t}=e.data,n=o.getViewport(t).getCamera(),i=n.viewPlaneNormal;return nc().normalize(i),J.utilities.isEqual(l,i,.01)&&J.utilities.isEqual(s.viewUp,n.viewUp,.01)}))})),te(this,"_filterAnnotationsByUniqueViewportOrientations",((e,t)=>{const{renderingEngine:n,viewport:o}=e,i=o.getCamera().viewPlaneNormal;nc().normalize(i);const a=t.filter((e=>{const{data:t}=e,i=n.getViewport(t.viewportId),a=this._getReferenceLineControllable(i.id);return o!==i&&!0===a})),r=[];for(let e=0;e<a.length;++e){const t=a[e],{viewportId:o}=t.data,s=n.getViewport(o).getCamera(),l=s.viewPlaneNormal;if(nc().normalize(l),J.utilities.isEqual(i,l,.01)||J.utilities.isOpposite(i,l,.01))continue;let d=!1;for(let e=0;e<r.length;++e){const t=r[e],{viewportId:o}=t.data,i=n.getViewport(o).getCamera();J.utilities.isEqual(i.viewPlaneNormal,s.viewPlaneNormal,.01)&&J.utilities.isEqual(i.position,s.position,1)&&(d=!0)}d||r.push(t)}const s=t.filter((e=>{const{data:t}=e,i=n.getViewport(t.viewportId),a=this._getReferenceLineControllable(i.id);return o!==i&&!0!==a}));for(let e=0;e<s.length;++e){const t=s[e],{viewportId:o}=t.data,a=n.getViewport(o).getCamera(),l=a.viewPlaneNormal;if(nc().normalize(l),J.utilities.isEqual(i,l,.01)||J.utilities.isOpposite(i,l,.01))continue;let d=!1;for(let e=0;e<r.length;++e){const t=r[e],{viewportId:o}=t.data,i=n.getViewport(o).getCamera();J.utilities.isEqual(i.viewPlaneNormal,a.viewPlaneNormal,.01)&&J.utilities.isEqual(i.position,a.position,1)&&(d=!0)}d||r.push(t)}const l=this._getAnnotationsForViewportsWithDifferentCameras(e,t);for(let e=0;e<l.length;++e){const t=l[e];if(r.some((e=>e===t)))continue;const{viewportId:o}=t.data,a=n.getViewport(o).getCamera(),s=a.viewPlaneNormal;if(nc().normalize(s),J.utilities.isEqual(i,s,.01)||J.utilities.isOpposite(i,s,.01))continue;let d=!1;for(let e=0;e<r.length;++e){const t=r[e],{viewportId:o}=t.data,i=n.getViewport(o).getCamera();J.utilities.isEqual(i.viewPlaneNormal,a.viewPlaneNormal,.01)&&J.utilities.isEqual(i.position,a.position,1)&&(d=!0)}d||r.push(t)}return r})),te(this,"_checkIfViewportsRenderingSameScene",((e,t)=>{const n=e.getActors(),o=t.getActors();let i=!0;return n.forEach((e=>{n.length===o.length&&void 0!==o.find((t=>{let{uid:n}=t;return n===e.uid}))||(i=!1)})),i})),te(this,"_jump",((e,t)=>{He.isInteractingWithTool=!0;const{viewport:n,renderingEngine:o}=e,i=this._getAnnotations(e),a=[0,0,0];nc().subtract(t,this.toolCenter,a);const r=this._getAnnotationsForViewportsWithDifferentCameras(e,i).filter((e=>{const{data:t}=e,i=o.getViewport(t.viewportId),a=this._checkIfViewportsRenderingSameScene(n,i);return this._getReferenceLineControllable(i.id)&&this._getReferenceLineDraggableRotatable(i.id)&&a}));return 0===r.length?(He.isInteractingWithTool=!1,!1):(this._applyDeltaShiftToSelectedViewportCameras(o,r,a),He.isInteractingWithTool=!1,!0)})),te(this,"_activateModify",(e=>{var t;He.isInteractingWithTool=!(null!==(t=this.configuration.mobile)&&void 0!==t&&t.enabled),e.addEventListener(Q.MOUSE_UP,this._endCallback),e.addEventListener(Q.MOUSE_DRAG,this._dragCallback),e.addEventListener(Q.MOUSE_CLICK,this._endCallback),e.addEventListener(Q.TOUCH_END,this._endCallback),e.addEventListener(Q.TOUCH_DRAG,this._dragCallback),e.addEventListener(Q.TOUCH_TAP,this._endCallback)})),te(this,"_deactivateModify",(e=>{He.isInteractingWithTool=!1,e.removeEventListener(Q.MOUSE_UP,this._endCallback),e.removeEventListener(Q.MOUSE_DRAG,this._dragCallback),e.removeEventListener(Q.MOUSE_CLICK,this._endCallback),e.removeEventListener(Q.TOUCH_END,this._endCallback),e.removeEventListener(Q.TOUCH_DRAG,this._dragCallback),e.removeEventListener(Q.TOUCH_TAP,this._endCallback)})),te(this,"_endCallback",(e=>{const t=e.detail,{element:n}=t;this.editData.annotation.data.handles.activeOperation=null,this.editData.annotation.data.activeViewportIds=[],this._deactivateModify(n),$r(n),this.editData=null;const o=(0,J.getEnabledElement)(n),{renderingEngine:i}=o,a=Bl(n,this.getToolName(),!1);Bi(i,a)})),te(this,"_dragCallback",(e=>{const t=e.detail,n=t.deltaPoints.world;if(Math.abs(n[0])<.001&&Math.abs(n[1])<.001&&Math.abs(n[2])<.001)return;const{element:o}=t,i=(0,J.getEnabledElement)(o),{renderingEngine:a,viewport:r}=i,s=this._getAnnotations(i),l=this.filterInteractableAnnotationsForElement(o,s)[0];if(!l)return;const{handles:d}=l.data,{currentPoints:c}=e.detail,h=c.canvas;if(1===d.activeOperation){const e=this._getAnnotationsForViewportsWithDifferentCameras(i,s).filter((e=>{const{data:t}=e,n=a.getViewport(t.viewportId),o=this._getReferenceLineControllable(n.id),i=this._getReferenceLineDraggableRotatable(n.id);return!0===o&&!0===i&&l.data.activeViewportIds.find((e=>e===n.id))}));this._applyDeltaShiftToSelectedViewportCameras(a,e,n)}else if(2===d.activeOperation){const e=this._getAnnotationsForViewportsWithDifferentCameras(i,s).filter((e=>{const{data:t}=e,n=a.getViewport(t.viewportId),o=this._getReferenceLineControllable(n.id),i=this._getReferenceLineDraggableRotatable(n.id);return!0===o&&!0===i})),n=ps.vec2.create(),o=ps.vec2.create(),l=[this.toolCenter[0],this.toolCenter[1],this.toolCenter[2]],d=r.worldToCanvas(l),c=t.currentPoints.canvas,h=ps.vec2.create();ps.vec2.sub(h,c,t.deltaPoints.canvas),ps.vec2.sub(n,h,d),ps.vec2.sub(o,c,d);let u=ps.vec2.angle(n,o);this._isClockWise(d,h,c)&&(u*=-1),u=Math.round(100*u)/100;const g=r.getCamera().viewPlaneNormal,{matrix:v}=_g().buildFromRadian().translate(l[0],l[1],l[2]).rotate(u,g).translate(-l[0],-l[1],-l[2]),m=[];e.forEach((e=>{const{data:t}=e;t.handles.toolCenter=l;const n=a.getViewport(t.viewportId),o=n.getCamera(),{viewUp:i,position:r,focalPoint:s}=o;i[0]+=r[0],i[1]+=r[1],i[2]+=r[2],ps.vec3.transformMat4(s,s,v),ps.vec3.transformMat4(r,r,v),ps.vec3.transformMat4(i,i,v),i[0]-=r[0],i[1]-=r[1],i[2]-=r[2],n.setCamera({position:r,viewUp:i,focalPoint:s}),m.push(n.id)})),a.renderViewports(m)}else if(3===d.activeOperation){const e=this._getAnnotationsForViewportsWithDifferentCameras(i,s).filter((e=>{const{data:t}=e,n=a.getViewport(t.viewportId),o=this._getReferenceLineControllable(n.id),i=this._getReferenceLineSlabThicknessControlsOn(n.id);return!0===o&&!0===i&&l.data.activeViewportIds.find((e=>e===n.id))}));if(0===e.length)return;const o=this._filterViewportWithSameOrientation(i,e[0],s),d=[];d.push(r.id),o.forEach((e=>{const{data:o}=e,i=a.getViewport(o.viewportId),s=i.getCamera().viewPlaneNormal,c=nc().dot(n,s),u=[...s];if(nc().multiplyScalar(u,c),Math.abs(u[0])>.001||Math.abs(u[1])>.001||Math.abs(u[2])>.001){const e=Math.sqrt(u[0]*u[0]+u[1]*u[1]+u[2]*u[2]),n=t.lastPoints.world,o=[0,0,0],c=[this.toolCenter[0],this.toolCenter[1],this.toolCenter[2]];if(!this._getReferenceLineDraggableRotatable(i.id)){const{rotationPoints:e}=this.editData.annotation.data.handles,t=e.filter((e=>e[1].uid===i.id));if(2===t.length){const e=r.canvasToWorld(t[0][3]),n=r.canvasToWorld(t[1][3]);nc().add(e,n,c),nc().multiplyScalar(c,.5)}}nc().subtract(n,c,o);const g=nc().dot(o,s),v=[...s];nc().multiplyScalar(v,g);const m=[v[0],v[1],v[2]];ps.vec3.normalize(m,m);const p=[u[0],u[1],u[2]];ps.vec3.normalize(p,p);let f=i.getSlabThickness();J.utilities.isOpposite(m,p,.001)?f-=e:f+=e,f=Math.abs(f),f=Math.max(Tg.MINIMUM_SLAB_THICKNESS,f),this._pointNearReferenceLine(l,h,6,i)&&(f=Tg.MINIMUM_SLAB_THICKNESS),yo(i.id,a.id).getToolInstance(this.getToolName()).setSlabThickness(i,f),d.push(i.id)}})),a.renderViewports(d)}})),te(this,"_pointNearReferenceLine",((e,t,n,o)=>{const{data:i}=e,{rotationPoints:a}=i.handles;for(let e=0;e<a.length-1;++e){const i=a[e][1];if(i.id!==o.id)continue;if(!this._getReferenceLineControllable(i.id))continue;const r={start:{x:a[e][2][0],y:a[e][2][1]},end:{x:a[e][3][0],y:a[e][3][1]}},s=ed([r.start.x,r.start.y],[r.end.x,r.end.y],[t[0],t[1]]),l={start:{x:a[e+1][2][0],y:a[e+1][2][1]},end:{x:a[e+1][3][0],y:a[e+1][3][1]}},d=ed([l.start.x,l.start.y],[l.end.x,l.end.y],[t[0],t[1]]);if(s<=n||d<=n)return!0;e++}return!1})),this._getReferenceLineColor=(null===(e=i.configuration)||void 0===e?void 0:e.getReferenceLineColor)||bg,this._getReferenceLineControllable=(null===(t=i.configuration)||void 0===t?void 0:t.getReferenceLineControllable)||Dg,this._getReferenceLineDraggableRotatable=(null===(n=i.configuration)||void 0===n?void 0:n.getReferenceLineDraggableRotatable)||Sg,this._getReferenceLineSlabThicknessControlsOn=(null===(o=i.configuration)||void 0===o?void 0:o.getReferenceLineSlabThicknessControlsOn)||yg}onSetToolActive(){const e=this._getViewportsInfo();this._unsubscribeToViewportNewVolumeSet(e),this._subscribeToViewportNewVolumeSet(e),this.computeToolCenter(e)}onSetToolPassive(){const e=this._getViewportsInfo();this.computeToolCenter(e)}onSetToolEnabled(){const e=this._getViewportsInfo();this.computeToolCenter(e)}onSetToolDisabled(){const e=this._getViewportsInfo();this._unsubscribeToViewportNewVolumeSet(e),e.forEach((e=>{let{renderingEngineId:t,viewportId:n}=e;const o=(0,J.getEnabledElementByIds)(n,t);if(!o)return;const i=this._getAnnotations(o);null!=i&&i.length&&i.forEach((e=>{Qe(e.annotationUID)}))}))}getHandleNearImagePoint(e,t,n,o){const i=(0,J.getEnabledElement)(e),{viewport:a}=i;let r=this._getRotationHandleNearImagePoint(a,t,n,o);return null!==r?r:(r=this._getSlabThicknessHandleNearImagePoint(a,t,n,o),null!==r?r:void 0)}_unsubscribeToViewportNewVolumeSet(e){e.forEach((e=>{let{viewportId:t,renderingEngineId:n}=e;const{viewport:o}=(0,J.getEnabledElementByIds)(t,n),{element:i}=o;i.removeEventListener(J.Enums.Events.VOLUME_VIEWPORT_NEW_VOLUME,this._onNewVolume)}))}_subscribeToViewportNewVolumeSet(e){e.forEach((e=>{let{viewportId:t,renderingEngineId:n}=e;const{viewport:o}=(0,J.getEnabledElementByIds)(t,n),{element:i}=o;i.addEventListener(J.Enums.Events.VOLUME_VIEWPORT_NEW_VOLUME,this._onNewVolume)}))}_autoPanViewportIfNecessary(e,t){const n=t.getViewport(e),{clientWidth:o,clientHeight:i}=n.canvas,a=n.worldToCanvas(this.toolCenter),r=this.configuration.autoPan.panSize,s=[a[0],a[1]];if(a[0]<0?s[0]=r:a[0]>o&&(s[0]=o-r),a[1]<0?s[1]=r:a[1]>i&&(s[1]=i-r),s[0]===a[0]&&s[1]===a[1])return;const l=n.canvasToWorld(s),d=[l[0]-this.toolCenter[0],l[1]-this.toolCenter[1],l[2]-this.toolCenter[2]],c=n.getCamera(),{focalPoint:h,position:u}=c,g=[u[0]-d[0],u[1]-d[1],u[2]-d[2]],v=[h[0]-d[0],h[1]-d[1],h[2]-d[2]];n.setCamera({focalPoint:v,position:g}),n.render()}setSlabThickness(e,t){let n;const{filterActorUIDsToSetSlabThickness:o}=this.configuration;o&&o.length>0&&(n=o);let i=this.configuration.slabThicknessBlendMode;t===Tg.MINIMUM_SLAB_THICKNESS&&(i=J.Enums.BlendModes.COMPOSITE),e.setBlendMode(i,n,!1),e.setSlabThickness(t,n)}_isClockWise(e,t,n){return(t[0]-e[0])*(n[1]-e[1])-(t[1]-e[1])*(n[0]-e[0])>0}_applyDeltaShiftToSelectedViewportCameras(e,t,n){t.forEach((t=>{this._applyDeltaShiftToViewportCamera(e,t,n)}))}_applyDeltaShiftToViewportCamera(e,t,n){const{data:o}=t,i=e.getViewport(o.viewportId),a=i.getCamera(),r=a.viewPlaneNormal,s=nc().dot(n,r),l=[...r];if(nc().multiplyScalar(l,s),Math.abs(l[0])>.001||Math.abs(l[1])>.001||Math.abs(l[2])>.001){const e=[0,0,0],t=[0,0,0];nc().add(a.focalPoint,l,e),nc().add(a.position,l,t),i.setCamera({focalPoint:e,position:t}),i.render()}}_getRotationHandleNearImagePoint(e,t,n,o){const{data:i}=t,{rotationPoints:a}=i.handles;for(let r=0;r<a.length;r++){const s=a[r][0],l=a[r][1];if(!this._getReferenceLineControllable(l.id))continue;if(!this._getReferenceLineDraggableRotatable(l.id))continue;const d=e.worldToCanvas(s);if(ps.vec2.distance(n,d)<o)return i.handles.activeOperation=2,this.editData={annotation:t},s}return null}_getSlabThicknessHandleNearImagePoint(e,t,n,o){const{data:i}=t,{slabThicknessPoints:a}=i.handles;for(let r=0;r<a.length;r++){const s=a[r][0],l=a[r][1];if(!this._getReferenceLineControllable(l.id))continue;if(!this._getReferenceLineSlabThicknessControlsOn(l.id))continue;const d=e.worldToCanvas(s);if(ps.vec2.distance(n,d)<o)return i.handles.activeOperation=3,i.activeViewportIds=[l.id],this.editData={annotation:t},s}return null}_pointNearTool(e,t,n,o){const i=(0,J.getEnabledElement)(e),{viewport:a}=i,{clientWidth:r,clientHeight:s}=a.canvas,l=Math.sqrt(r*r+s*s),{data:d}=t,{rotationPoints:c}=d.handles,{slabThicknessPoints:h}=d.handles,u=[];for(let e=0;e<c.length-1;++e){const t=c[e][1],i=this._getReferenceLineControllable(t.id),a=this._getReferenceLineDraggableRotatable(t.id);if(!i||!a)continue;const r={start:{x:c[e][2][0],y:c[e][2][1]},end:{x:c[e][3][0],y:c[e][3][1]}},s=ed([r.start.x,r.start.y],[r.end.x,r.end.y],[n[0],n[1]]),l={start:{x:c[e+1][2][0],y:c[e+1][2][1]},end:{x:c[e+1][3][0],y:c[e+1][3][1]}},h=ed([l.start.x,l.start.y],[l.end.x,l.end.y],[n[0],n[1]]);(s<=o||h<=o)&&(u.push(t.id),d.handles.activeOperation=1),e++}for(let e=0;e<h.length-1;++e){const t=h[e][1];if(u.find((e=>e===t.id)))continue;const i=this._getReferenceLineControllable(t.id),a=this._getReferenceLineSlabThicknessControlsOn(t.id);if(!i||!a)continue;const r=h[e][2],s=h[e][3],c=ps.vec2.create();ps.vec2.add(c,r,s),ps.vec2.scale(c,c,.5);const g=ps.vec2.create();ps.vec2.subtract(g,r,c),ps.vec2.normalize(g,g);const v=ps.vec2.create();ps.vec2.scale(v,g,.05*l);const m=ps.vec2.create(),p=ps.vec2.create();ps.vec2.add(m,c,v),ps.vec2.subtract(p,c,v);const f={start:{x:m[0],y:m[1]},end:{x:r[0],y:r[1]}},E=ed([f.start.x,f.start.y],[f.end.x,f.end.y],[n[0],n[1]]),w={start:{x:p[0],y:p[1]},end:{x:s[0],y:s[1]}},I=ed([w.start.x,w.start.y],[w.end.x,w.end.y],[n[0],n[1]]);(E<=o||I<=o)&&(u.push(t.id),d.handles.activeOperation=null),e++}return d.activeViewportIds=[...u],this.editData={annotation:t},1===d.handles.activeOperation}}te(Og,"toolName",void 0),Og.toolName="Crosshairs";const Mg=Og,{EPSILON:xg}=J.CONSTANTS;class Ng extends Xl{constructor(){super(arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},arguments.length>1&&void 0!==arguments[1]?arguments[1]:{supportedInteractionTypes:["Mouse","Touch"],configuration:{sourceViewportId:"",showFullDimension:!1}}),te(this,"touchDragCallback",void 0),te(this,"mouseDragCallback",void 0),te(this,"_throttledCalculateCachedStats",void 0),te(this,"editData",{}),te(this,"isDrawing",void 0),te(this,"isHandleOutsideImage",void 0),te(this,"_init",(()=>{const e=(0,J.getRenderingEngines)()[0];if(!e)return;let t=e.getViewports();t=Wl(t,this.getToolName());const n=e.getViewport(this.configuration.sourceViewportId);if(!n||!n.getImageData())return;const{element:o}=n,{viewUp:i,viewPlaneNormal:a}=n.getCamera(),r=J.utilities.getViewportImageCornersInWorld(n);let s=this.editData.annotation;const l=n.getFrameOfReferenceUID();if(s)this.editData.annotation.data.handles.points=r;else{const e={highlighted:!0,invalidated:!0,metadata:{toolName:this.getToolName(),viewPlaneNormal:[...a],viewUp:[...i],FrameOfReferenceUID:l,referencedImageId:null},data:{handles:{points:r}}};Je(e,o),s=e}this.editData={sourceViewport:n,renderingEngine:e,annotation:s},Bi(e,t.filter((e=>e.id!==n.id)).map((e=>e.id)))})),te(this,"onSetToolEnabled",(()=>{this._init()})),te(this,"onCameraModified",(e=>{this._init()})),te(this,"renderAnnotation",((e,t)=>{var n;const{viewport:o}=e,{annotation:i,sourceViewport:a}=this.editData;let r=!1;if(!a)return r;if(a.id===o.id)return r;if(!i||null==i||null===(n=i.data)||void 0===n||null===(n=n.handles)||void 0===n||!n.points)return r;const s={toolGroupId:this.toolGroupId,toolName:this.getToolName(),viewportId:e.viewport.id},l=i.data.handles.points[0],d=i.data.handles.points[1],c=i.data.handles.points[2],h=i.data.handles.points[3],{focalPoint:u,viewPlaneNormal:g,viewUp:v}=o.getCamera(),{viewPlaneNormal:m}=a.getCamera();if(this.isParallel(g,m))return r;const p=J.utilities.planar.planeEquation(g,u),f=[l,c,d,h],E=[l,d,c,h];let w=f,I=ps.vec3.subtract(ps.vec3.create(),f[0],f[1]);I=ps.vec3.normalize(ps.vec3.create(),I);let C=ps.vec3.subtract(ps.vec3.create(),f[2],f[0]);C=ps.vec3.normalize(ps.vec3.create(),C);const _=ps.vec3.cross(ps.vec3.create(),I,C);if(this.isParallel(_,g))return r;this.isPerpendicular(I,g)&&(w=E);const T=J.utilities.planar.linePlaneIntersection(w[0],w[1],p),b=J.utilities.planar.linePlaneIntersection(w[2],w[3],p),{annotationUID:D}=i;s.annotationUID=D;const S=this.getStyle("lineWidth",s,i),y=this.getStyle("lineDash",s,i),O=this.getStyle("color",s,i),M=this.getStyle("shadow",s,i);let x=[T,b].map((e=>o.worldToCanvas(e)));this.configuration.showFullDimension&&(x=this.handleFullDimension(o,T,g,v,b,x));const N="".concat(D,"-line");return xs(t,D,"1",x[0],x[1],{color:O,width:S,lineDash:y,shadow:M},N),r=!0,r})),te(this,"isPerpendicular",((e,t)=>{const n=ps.vec3.dot(e,t);return Math.abs(n)<xg}))}handleFullDimension(e,t,n,o,i,a){const r=e.getRenderingEngine(),s=this.getTargetId(e),l=this.getTargetIdImage(s,r),d=this.getReferencedImageId(e,t,n,o);if(d&&l)try{const{imageData:n,dimensions:o}=l,[r,s,c,h]=[n.indexToWorld([0,0,0]),n.indexToWorld([o[0]-1,0,0]),n.indexToWorld([o[0]-1,o[1]-1,0]),n.indexToWorld([0,o[1]-1,0])].map((e=>J.utilities.worldToImageCoords(d,e))),[u,g]=[t,i].map((e=>J.utilities.worldToImageCoords(d,e)));a=[[r,s],[s,c],[h,c],[r,h]].map((e=>{let[t,n]=e;return this.intersectInfiniteLines(t,n,u,g)})).filter((e=>e&&this.isInBound(e,o))).map((t=>{const n=J.utilities.imageToWorldCoords(d,t);return e.worldToCanvas(n)}))}catch(e){console.log(e)}return a}intersectInfiniteLines(e,t,n,o){const[i,a]=e,[r,s]=t,[l,d]=n,[c,h]=o,u=s-a,g=i-r,v=r*a-i*s,m=h-d,p=l-c,f=c*d-l*h;if(!(Math.abs(u*p-m*g)<xg))return[(g*f-p*v)/(u*p-m*g),(m*v-u*f)/(u*p-m*g)]}isParallel(e,t){return Math.abs(ps.vec3.dot(e,t))>1-xg}isInBound(e,t){return e[0]>=0&&e[0]<=t[0]&&e[1]>=0&&e[1]<=t[1]}}te(Ng,"toolName",void 0),Ng.toolName="ReferenceLines";const kg=Ng,{EPSILON:Rg}=J.CONSTANTS;class Pg extends Xl{constructor(){super(arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},arguments.length>1&&void 0!==arguments[1]?arguments[1]:{supportedInteractionTypes:["Mouse","Touch"],configuration:{sourceImageIds:[]}}),te(this,"touchDragCallback",void 0),te(this,"mouseDragCallback",void 0),te(this,"_throttledCalculateCachedStats",void 0),te(this,"isDrawing",void 0),te(this,"isHandleOutsideImage",void 0),te(this,"onSetToolEnabled",(()=>{this._init()})),te(this,"onSetToolActive",(()=>{this._init()})),te(this,"_init",(()=>{const e=this.configuration.sourceImageIds;if(null==e||!e.length)return void console.warn("OverlayGridTool: No sourceImageIds provided in configuration");const t=J.metaData.get("imagePlaneModule",e[0]);if(!t)return void console.warn("OverlayGridTool: No imagePlaneModule found for sourceImageIds");const{frameOfReferenceUID:n}=t,o=zi(this.toolGroupId).viewportsInfo;if(null==o||!o.length)return void console.warn("OverlayGridTool: No viewports found");const i=Ze(this.getToolName(),n);if(null==i||!i.length){const t=e.map((e=>this.calculateImageIdPointSets(e)));Je({highlighted:!0,invalidated:!0,metadata:{toolName:this.getToolName(),FrameOfReferenceUID:n,referencedImageId:null},data:{viewportData:new Map,pointSets:t}},n)}Bi((0,J.getRenderingEngine)(o[0].renderingEngineId),o.map((e=>{let{viewportId:t}=e;return t})))})),te(this,"calculateImageIdPointSets",(e=>{const{imagePositionPatient:t,rows:n,columns:o,rowCosines:i,columnCosines:a,rowPixelSpacing:r,columnPixelSpacing:s}=J.metaData.get("imagePlaneModule",e),l=[...t],d=[...t],c=[...t],h=[...t];return ps.vec3.scaleAndAdd(d,t,a,o*s),ps.vec3.scaleAndAdd(c,t,i,n*r),ps.vec3.scaleAndAdd(h,c,a,o*s),{pointSet1:[l,c,d,h],pointSet2:[l,d,c,h]}})),te(this,"renderAnnotation",((e,t)=>{const n=this.configuration.sourceImageIds;let o=!1;if(null==n||!n.length)return o;const{viewport:i,FrameOfReferenceUID:a}=e;if(i.getImageIds().length<2)return o;const r=Ze(this.getToolName(),a);if(null==r||!r.length)return o;const s=r[0],{annotationUID:l}=s,{focalPoint:d,viewPlaneNormal:c}=i.getCamera(),h={toolGroupId:this.toolGroupId,toolName:this.getToolName(),viewportId:e.viewport.id},u=this.getImageIdNormal(n[0]);if(this.isParallel(c,u))return o;const g=J.utilities.planar.planeEquation(c,d),v=s.data.pointSets,m=s.data.viewportData;for(let e=0;e<n.length;e++){const{pointSet1:n,pointSet2:o}=v[e],a=m.get(i.id)||this.initializeViewportData(m,i.id);if(!a.pointSetsToUse[e]){let t=n,i=ps.vec3.subtract(ps.vec3.create(),n[0],n[1]);i=ps.vec3.normalize(ps.vec3.create(),i),this.isPerpendicular(i,c)&&(t=o),a.pointSetsToUse[e]=t,a.lineStartsWorld[e]=J.utilities.planar.linePlaneIntersection(t[0],t[1],g),a.lineEndsWorld[e]=J.utilities.planar.linePlaneIntersection(t[2],t[3],g)}const r=a.lineStartsWorld[e],d=a.lineEndsWorld[e];h.annotationUID=l;const u=this.getStyle("lineWidth",h,s),p=this.getStyle("lineDash",h,s),f=this.getStyle("color",h,s),E=this.getStyle("shadow",h,s),w=[r,d].map((e=>i.worldToCanvas(e))),I="".concat(l,"-line");xs(t,l,"".concat(e),w[0],w[1],{color:f,width:u,lineDash:p,shadow:E},I)}return o=!0,o})),te(this,"initializeViewportData",((e,t)=>(e.set(t,{pointSetsToUse:[],lineStartsWorld:[],lineEndsWorld:[]}),e.get(t)))),te(this,"isPerpendicular",((e,t)=>{const n=ps.vec3.dot(e,t);return Math.abs(n)<Rg}))}isParallel(e,t){return Math.abs(ps.vec3.dot(e,t))>1-Rg}getImageIdNormal(e){const{imageOrientationPatient:t}=J.metaData.get("imagePlaneModule",e),n=ps.vec3.fromValues(t[0],t[1],t[2]),o=ps.vec3.fromValues(t[3],t[4],t[5]);return ps.vec3.cross(ps.vec3.create(),n,o)}}te(Pg,"toolName",void 0),Pg.toolName="OverlayGrid";const Lg=Pg;class Ag extends Xl{constructor(){super(arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},arguments.length>1&&void 0!==arguments[1]?arguments[1]:{configuration:{opacity:.5}}),te(this,"_init",(()=>{var e;const t=zi(this.toolGroupId).viewportsInfo;if(null==t||!t.length)return void console.warn(this.getToolName()+"Tool: No viewports found");const n=null===(e=(0,J.getRenderingEngine)(t[0].renderingEngineId))||void 0===e?void 0:e.getViewport(t[0].viewportId);if(!n)return;const o=n.getFrameOfReferenceUID(),i=Ze(this.getToolName(),o);if(null==i||!i.length){const e=new Map;!function(e,t){t.forEach((t=>{var n;let{viewportId:o,renderingEngineId:i}=t;const a=null===(n=(0,J.getRenderingEngine)(i))||void 0===n?void 0:n.getViewport(o);Ug(e,a)}))}(e,t),Je({highlighted:!0,invalidated:!0,metadata:{toolName:this.getToolName(),FrameOfReferenceUID:o,referencedImageId:null},data:{actorsWorldPointsMap:e}},o)}Bi((0,J.getRenderingEngine)(t[0].renderingEngineId),t.map((e=>{let{viewportId:t}=e;return t})))})),te(this,"onSetToolEnabled",(()=>{this._init()})),te(this,"onCameraModified",(e=>{this._init()})),te(this,"renderAnnotation",((e,t)=>{const{viewport:n,FrameOfReferenceUID:o}=e;let i=!1;const a=Ze(this.getToolName(),o);if(null==a||!a.length)return i;const r=a[0],{annotationUID:s}=r,l=r.data.actorsWorldPointsMap;Ug(l,n);const d=n.getActors(),c=Vg(n);return d.forEach((e=>{if(null==e||!e.clippingFilter)return;const o=l.get(e.uid);if(!o)return;if(!o.get(c))return;let i=1;const{worldPointsSet:a,color:r}=o.get(c);for(let o=0;o<a.length;o++){const l=a[o].map((e=>n.worldToCanvas(e))),d={color:r,fillColor:r,fillOpacity:this.configuration.opacity,connectLastToFirst:!0},c=e.uid+"#"+i;Ns(t,s,c,l,d),i++}})),i=!0,i}))}}function Ug(e,t){const n=t.getActors(),o=Vg(t);n.forEach((t=>{if(null==t||!t.clippingFilter)return;let n=e.get(t.uid);if(n||(n=new Map,e.set(t.uid,n)),!n.get(o)){const e=_u(t.clippingFilter.getOutputData());if(!e)return;const i=function(e){function t(e){let t=Math.floor(255*e).toString(16);return 1===t.length&&(t="0"+t),t}return"#"+t(e[0])+t(e[1])+t(e[2])}(t.actor.getProperty().getColor());n.set(o,{worldPointsSet:e,color:i})}}))}function Vg(e){const{viewPlaneNormal:t}=e.getCamera(),n=e.getCurrentImageIdIndex();return"".concat(e.id,"-").concat(Ia(t),"-").concat(n)}te(Ag,"toolName",void 0),Ag.toolName="SegmentationIntersection";const Wg=Ag;function Fg(e,t,n,o){const i=ps.vec3.create();ps.vec3.cross(i,t,e);const a=ps.vec3.fromValues(...n),r=ps.vec3.fromValues(...o),s=ps.vec3.create();ps.vec3.subtract(s,a,r);const l=ps.vec3.length(s);if(l<1e-4)return{worldWidth:0,worldHeight:0};const d=ps.vec3.dot(s,i)/(l*ps.vec3.length(i));return{worldWidth:Math.sqrt(1-d*d)*l,worldHeight:d*l}}const{transformWorldToIndex:Hg}=J.utilities;class Bg extends Jl{constructor(){super(arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},arguments.length>1&&void 0!==arguments[1]?arguments[1]:{supportedInteractionTypes:["Mouse","Touch"],configuration:{shadow:!0,preventHandleOutsideImage:!1,centerPointRadius:0,getTextLines:Gg,statsCalculator:dd}}),te(this,"touchDragCallback",void 0),te(this,"mouseDragCallback",void 0),te(this,"_throttledCalculateCachedStats",void 0),te(this,"editData",void 0),te(this,"isDrawing",void 0),te(this,"isHandleOutsideImage",!1),te(this,"addNewAnnotation",(e=>{const t=e.detail,{currentPoints:n,element:o}=t,i=n.world,a=(n.canvas,(0,J.getEnabledElement)(o)),{viewport:r,renderingEngine:s}=a;this.isDrawing=!0;const l=r.getCamera(),{viewPlaneNormal:d,viewUp:c}=l,h=this.getReferencedImageId(r,i,d,c),u=r.getFrameOfReferenceUID(),g={highlighted:!0,invalidated:!0,metadata:{toolName:this.getToolName(),viewPlaneNormal:[...d],viewUp:[...c],FrameOfReferenceUID:u,referencedImageId:h},data:{label:"",handles:{textBox:{hasMoved:!1,worldPosition:[0,0,0],worldBoundingBox:{topLeft:[0,0,0],topRight:[0,0,0],bottomLeft:[0,0,0],bottomRight:[0,0,0]}},points:[[...i],[...i],[...i],[...i]],activeHandleIndex:null},cachedStats:{},initialRotation:r.getRotation()}};Je(g,o);const v=Bl(o,this.getToolName());return this.editData={annotation:g,viewportIdsToRender:v,centerWorld:i,newAnnotation:!0,hasMoved:!1},this._activateDraw(o),Qr(o),e.preventDefault(),Bi(s,v),g})),te(this,"isPointNearTool",((e,t,n,o)=>{const i=(0,J.getEnabledElement)(e),{viewport:a}=i,{data:r}=t,{points:s}=r.handles,l=hl(s.map((e=>a.worldToCanvas(e)))),[d,c]=l,h={left:Math.min(d[0],c[0])+o/2,top:Math.min(d[1],c[1])+o/2,width:Math.abs(d[0]-c[0])-o,height:Math.abs(d[1]-c[1])-o},u={left:Math.min(d[0],c[0])-o/2,top:Math.min(d[1],c[1])-o/2,width:Math.abs(d[0]-c[0])+o,height:Math.abs(d[1]-c[1])+o},g=this._pointInEllipseCanvas(h,n);return!(!this._pointInEllipseCanvas(u,n)||g)})),te(this,"toolSelectedCallback",((e,t)=>{const n=e.detail,{element:o}=n;t.highlighted=!0;const i=Bl(o,this.getToolName());this.editData={annotation:t,viewportIdsToRender:i,movingTextBox:!1},Qr(o),this._activateModify(o);const a=(0,J.getEnabledElement)(o),{renderingEngine:r}=a;Bi(r,i),e.preventDefault()})),te(this,"handleSelectedCallback",((e,t,n)=>{const o=e.detail,{element:i}=o,{data:a}=t;t.highlighted=!0;let r,s,l,d,c,h,u=!1;if(n.worldPosition)u=!0;else{const{points:e}=a.handles,{viewport:t}=(0,J.getEnabledElement)(i),{worldToCanvas:o,canvasToWorld:u}=t;r=e.findIndex((e=>e===n));const g=e.map(o);h=g[r],d=Math.abs(g[2][0]-g[3][0]),c=Math.abs(g[0][1]-g[1][1]),s=[(g[2][0]+g[3][0])/2,(g[0][1]+g[1][1])/2],l=u(s)}const g=Bl(i,this.getToolName());this.editData={annotation:t,viewportIdsToRender:g,handleIndex:r,canvasWidth:d,canvasHeight:c,centerWorld:l,originalHandleCanvas:h,movingTextBox:u},this._activateModify(i),Qr(i);const v=(0,J.getEnabledElement)(i),{renderingEngine:m}=v;Bi(m,g),e.preventDefault()})),te(this,"_endCallback",(e=>{const t=e.detail,{element:n}=t,{annotation:o,viewportIdsToRender:i,newAnnotation:a,hasMoved:r}=this.editData,{data:s}=o;if(a&&!r)return;o.highlighted=!1,s.handles.activeHandleIndex=null,this._deactivateModify(n),this._deactivateDraw(n),$r(n);const l=(0,J.getEnabledElement)(n),{renderingEngine:d}=l;if(this.editData=null,this.isDrawing=!1,this.isHandleOutsideImage&&this.configuration.preventHandleOutsideImage&&Qe(o.annotationUID),Bi(d,i),a){const e=Q.ANNOTATION_COMPLETED,t={annotation:o};(0,J.triggerEvent)(J.eventTarget,e,t)}})),te(this,"_dragDrawCallback",(e=>{this.isDrawing=!0;const t=e.detail,{element:n}=t,{currentPoints:o}=t,i=o.canvas,a=(0,J.getEnabledElement)(n),{renderingEngine:r,viewport:s}=a,{canvasToWorld:l}=s,{annotation:d,viewportIdsToRender:c,centerWorld:h}=this.editData,u=s.worldToCanvas(h),{data:g}=d,v=Math.abs(i[0]-u[0]),m=Math.abs(i[1]-u[1]),p=[u[0],u[1]-m],f=[u[0],u[1]+m],E=[u[0]-v,u[1]],w=[u[0]+v,u[1]];g.handles.points=[l(p),l(f),l(E),l(w)],d.invalidated=!0,this.editData.hasMoved=!0,Bi(r,c)})),te(this,"_dragModifyCallback",(e=>{this.isDrawing=!0;const t=e.detail,{element:n}=t,{annotation:o,viewportIdsToRender:i,handleIndex:a,movingTextBox:r}=this.editData,{data:s}=o;if(r){const{deltaPoints:e}=t,n=e.world,{textBox:o}=s.handles,{worldPosition:i}=o;i[0]+=n[0],i[1]+=n[1],i[2]+=n[2],o.hasMoved=!0}else if(void 0===a){const{deltaPoints:e}=t,n=e.world;s.handles.points.forEach((e=>{e[0]+=n[0],e[1]+=n[1],e[2]+=n[2]})),o.invalidated=!0}else this._dragHandle(e),o.invalidated=!0;const l=(0,J.getEnabledElement)(n),{renderingEngine:d}=l;Bi(d,i)})),te(this,"_dragHandle",(e=>{const t=e.detail,{element:n}=t,{viewport:o}=(0,J.getEnabledElement)(n),{canvasToWorld:i,worldToCanvas:a}=o,{annotation:r,canvasWidth:s,canvasHeight:l,handleIndex:d,centerWorld:c,originalHandleCanvas:h}=this.editData,u=o.worldToCanvas(c),{data:g}=r,{points:v}=g.handles,{currentPoints:m}=t,p=m.canvas;if(0===d||1===d){const e=Math.abs(p[1]-u[1]),t=[u[0],u[1]-e],n=[u[0],u[1]+e];v[0]=i(t),v[1]=i(n);const o=s/2+(p[0]-h[0]),a=[u[0]-o,u[1]],r=[u[0]+o,u[1]];v[2]=i(a),v[3]=i(r)}else{const e=Math.abs(p[0]-u[0]),t=[u[0]-e,u[1]],n=[u[0]+e,u[1]];v[2]=i(t),v[3]=i(n);const o=l/2+(p[1]-h[1]),a=[u[0],u[1]-o],r=[u[0],u[1]+o];v[0]=i(a),v[1]=i(r)}})),te(this,"cancel",(e=>{if(this.isDrawing){this.isDrawing=!1,this._deactivateDraw(e),this._deactivateModify(e),$r(e);const{annotation:t,viewportIdsToRender:n,newAnnotation:o}=this.editData,{data:i}=t;t.highlighted=!1,i.handles.activeHandleIndex=null;const a=(0,J.getEnabledElement)(e),{renderingEngine:r}=a;if(Bi(r,n),o){const e=Q.ANNOTATION_COMPLETED,n={annotation:t};(0,J.triggerEvent)(J.eventTarget,e,n)}return this.editData=null,t.annotationUID}})),te(this,"_activateModify",(e=>{He.isInteractingWithTool=!0,e.addEventListener(Q.MOUSE_UP,this._endCallback),e.addEventListener(Q.MOUSE_DRAG,this._dragModifyCallback),e.addEventListener(Q.MOUSE_CLICK,this._endCallback),e.addEventListener(Q.TOUCH_END,this._endCallback),e.addEventListener(Q.TOUCH_DRAG,this._dragModifyCallback),e.addEventListener(Q.TOUCH_TAP,this._endCallback)})),te(this,"_deactivateModify",(e=>{He.isInteractingWithTool=!1,e.removeEventListener(Q.MOUSE_UP,this._endCallback),e.removeEventListener(Q.MOUSE_DRAG,this._dragModifyCallback),e.removeEventListener(Q.MOUSE_CLICK,this._endCallback),e.removeEventListener(Q.TOUCH_END,this._endCallback),e.removeEventListener(Q.TOUCH_DRAG,this._dragModifyCallback),e.removeEventListener(Q.TOUCH_TAP,this._endCallback)})),te(this,"_activateDraw",(e=>{He.isInteractingWithTool=!0,e.addEventListener(Q.MOUSE_UP,this._endCallback),e.addEventListener(Q.MOUSE_DRAG,this._dragDrawCallback),e.addEventListener(Q.MOUSE_MOVE,this._dragDrawCallback),e.addEventListener(Q.MOUSE_CLICK,this._endCallback),e.addEventListener(Q.TOUCH_END,this._endCallback),e.addEventListener(Q.TOUCH_DRAG,this._dragDrawCallback),e.addEventListener(Q.TOUCH_TAP,this._endCallback)})),te(this,"_deactivateDraw",(e=>{He.isInteractingWithTool=!1,e.removeEventListener(Q.MOUSE_UP,this._endCallback),e.removeEventListener(Q.MOUSE_DRAG,this._dragDrawCallback),e.removeEventListener(Q.MOUSE_MOVE,this._dragDrawCallback),e.removeEventListener(Q.MOUSE_CLICK,this._endCallback),e.removeEventListener(Q.TOUCH_END,this._endCallback),e.removeEventListener(Q.TOUCH_DRAG,this._dragDrawCallback),e.removeEventListener(Q.TOUCH_TAP,this._endCallback)})),te(this,"renderAnnotation",((e,t)=>{var n,o;let i=!1;const{viewport:a}=e,{element:r}=a;let s=Ze(this.getToolName(),r);if(null===(n=s)||void 0===n||!n.length)return i;if(s=this.filterInteractableAnnotationsForElement(r,s),null===(o=s)||void 0===o||!o.length)return i;const l=this.getTargetId(a),d=a.getRenderingEngine(),c={toolGroupId:this.toolGroupId,toolName:this.getToolName(),viewportId:e.viewport.id};for(let n=0;n<s.length;n++){const o=s[n],{annotationUID:r,data:h}=o,{handles:u}=h,{points:g,activeHandleIndex:v}=u;c.annotationUID=r;const m=this.getStyle("lineWidth",c,o),p=this.getStyle("lineDash",c,o),f=this.getStyle("color",c,o),E=g.map((e=>a.worldToCanvas(e))),w=Math.abs(a.getRotation()-(h.initialRotation||0));let I;I=hl(90==w||270==w?[E[2],E[3],E[0],E[1]]:E);const{centerPointRadius:C}=this.configuration;if(h.cachedStats[l]&&null!=h.cachedStats[l].areaUnit){if(o.invalidated&&(this._throttledCalculateCachedStats(o,a,d,e),a instanceof J.VolumeViewport)){const{referencedImageId:e}=o.metadata;for(const t in h.cachedStats)t.startsWith("imageId")&&d.getStackViewports().find((t=>{const n=J.utilities.imageIdToURI(e),o=t.hasImageURI(n),i=J.utilities.imageIdToURI(t.getCurrentImageId());return o&&i!==n}))&&delete h.cachedStats[t]}}else h.cachedStats[l]={Modality:null,area:null,max:null,mean:null,stdDev:null,areaUnit:null},this._calculateCachedStats(o,a,d,e);if(!a.getRenderingEngine())return console.warn("Rendering Engine has been destroyed"),i;let _;if(!Me(r))continue;le(o)||this.editData||null===v||(_=[E[v]]),_&&Ms(t,r,"0",_,{color:f});const T="".concat(r,"-ellipse"),b="0";if(Os(t,r,b,I[0],I[1],{color:f,lineDash:p,lineWidth:m},T),C>0&&Math.min(Math.abs(I[0][0]-I[1][0])/2,Math.abs(I[0][1]-I[1][1])/2)>3*C){const e=this._getCanvasEllipseCenter(E);ys(t,r,"".concat(b,"-center"),e,C,{color:f,lineDash:p,lineWidth:m})}i=!0;const D=this.getLinkedTextBoxStyle(c,o);if(!D.visibility){h.handles.textBox={hasMoved:!1,worldPosition:[0,0,0],worldBoundingBox:{topLeft:[0,0,0],topRight:[0,0,0],bottomLeft:[0,0,0],bottomRight:[0,0,0]}};continue}const S=this.configuration.getTextLines(h,l);if(!S||0===S.length)continue;let y;h.handles.textBox.hasMoved||(y=nd(I),h.handles.textBox.worldPosition=a.canvasToWorld(y));const O=a.worldToCanvas(h.handles.textBox.worldPosition),M=As(t,r,"1",S,O,E,{},D),{x,y:N,width:k,height:R}=M;h.handles.textBox.worldBoundingBox={topLeft:a.canvasToWorld([x,N]),topRight:a.canvasToWorld([x+k,N]),bottomLeft:a.canvasToWorld([x,N+R]),bottomRight:a.canvasToWorld([x+k,N+R])}}return i})),te(this,"_calculateCachedStats",((e,t,n,o)=>{const i=e.data,{viewportId:a,renderingEngineId:r}=o,{points:s}=i.handles,l=s.map((e=>t.worldToCanvas(e))),{viewPlaneNormal:d,viewUp:c}=t.getCamera(),[h,u]=hl(l),g=t.canvasToWorld(h),v=t.canvasToWorld(u),{cachedStats:m}=i,p=Object.keys(m),f=g,E=v;for(let o=0;o<p.length;o++){const i=p[o],a=this.getTargetIdImage(i,n);if(!a)continue;const{dimensions:r,imageData:s,metadata:l,hasPixelSpacing:h}=a,u=Hg(s,f);u[0]=Math.floor(u[0]),u[1]=Math.floor(u[1]),u[2]=Math.floor(u[2]);const _=Hg(s,E);if(_[0]=Math.floor(_[0]),_[1]=Math.floor(_[1]),_[2]=Math.floor(_[2]),this._isInsideVolume(u,_,r)){var w,I,C;const n=[[Math.min(u[0],_[0]),Math.max(u[0],_[0])],[Math.min(u[1],_[1]),Math.max(u[1],_[1])],[Math.min(u[2],_[2]),Math.max(u[2],_[2])]],o={center:[(g[0]+v[0])/2,(g[1]+v[1])/2,(g[2]+v[2])/2],xRadius:Math.abs(g[0]-v[0])/2,yRadius:Math.abs(g[1]-v[1])/2,zRadius:Math.abs(g[2]-v[2])/2},{worldWidth:r,worldHeight:h}=Fg(d,c,f,E),p=0===r&&0===h,T=$s(a),b=Math.abs(Math.PI*(r/2)*(h/2))/T/T,D={isPreScaled:ad(t,i),isSuvScaled:this.isSuvScaled(t,i,e.metadata.referencedImageId)},S=id(l.Modality,e.metadata.referencedImageId,D),y=tl(s,((e,t)=>ul(o,e)),this.configuration.statsCalculator.statsCallback,n),O=this.configuration.statsCalculator.getStatistics();m[i]={Modality:l.Modality,area:b,mean:null===(w=O[1])||void 0===w?void 0:w.value,max:null===(I=O[0])||void 0===I?void 0:I.value,stdDev:null===(C=O[2])||void 0===C?void 0:C.value,statsArray:O,pointsInShape:y,isEmptyArea:p,areaUnit:Js(0,a),modalityUnit:S}}else this.isHandleOutsideImage=!0,m[i]={Modality:l.Modality}}e.invalidated=!1;const _=Q.ANNOTATION_MODIFIED,T={annotation:e,viewportId:a,renderingEngineId:r};return(0,J.triggerEvent)(J.eventTarget,_,T),m})),te(this,"_isInsideVolume",((e,t,n)=>J.utilities.indexWithinDimensions(e,n)&&J.utilities.indexWithinDimensions(t,n))),this._throttledCalculateCachedStats=js(this._calculateCachedStats,100,{trailing:!0})}_pointInEllipseCanvas(e,t){const n=e.width/2,o=e.height/2;if(n<=0||o<=0)return!1;const i=[e.left+n,e.top+o],a=[t[0]-i[0],t[1]-i[1]];return a[0]*a[0]/(n*n)+a[1]*a[1]/(o*o)<=1}_getCanvasEllipseCenter(e){const[t,n,o,i]=e,a=[o[0],n[1]],r=[i[0],t[1]];return[(a[0]+r[0])/2,(a[1]+r[1])/2]}}function Gg(e,t){const n=e.cachedStats[t],{area:o,mean:i,stdDev:a,max:r,isEmptyArea:s,areaUnit:l,modalityUnit:d}=n,c=[];if(o){const e=s?"Area: Oblique not supported":"Area: ".concat(al(o)," ").concat(l);c.push(e)}return i&&c.push("Mean: ".concat(al(i)," ").concat(d)),r&&c.push("Max: ".concat(al(r)," ").concat(d)),a&&c.push("Std Dev: ".concat(al(a)," ").concat(d)),c}te(Bg,"toolName",void 0),Bg.toolName="EllipticalROI";const qg=Bg;function jg(e){const[t,n]=e;return ec(t,n)}function zg(e){const[t,n]=e,o=ec(t,n);return[[t[0]-o,t[1]-o],[t[0]+o,t[1]+o]]}const{transformWorldToIndex:Kg}=J.utilities;class Yg extends Jl{constructor(){super(arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},arguments.length>1&&void 0!==arguments[1]?arguments[1]:{supportedInteractionTypes:["Mouse","Touch"],configuration:{shadow:!0,preventHandleOutsideImage:!1,centerPointRadius:0,getTextLines:Xg,statsCalculator:dd}}),te(this,"touchDragCallback",void 0),te(this,"mouseDragCallback",void 0),te(this,"_throttledCalculateCachedStats",void 0),te(this,"editData",void 0),te(this,"isDrawing",void 0),te(this,"isHandleOutsideImage",!1),te(this,"addNewAnnotation",(e=>{const t=e.detail,{currentPoints:n,element:o}=t,i=n.world,a=(n.canvas,(0,J.getEnabledElement)(o)),{viewport:r,renderingEngine:s}=a;this.isDrawing=!0;const l=r.getCamera(),{viewPlaneNormal:d,viewUp:c}=l,h=this.getReferencedImageId(r,i,d,c),u=r.getFrameOfReferenceUID(),g={highlighted:!0,invalidated:!0,metadata:{toolName:this.getToolName(),viewPlaneNormal:[...d],viewUp:[...c],FrameOfReferenceUID:u,referencedImageId:h},data:{label:"",handles:{textBox:{hasMoved:!1,worldPosition:[0,0,0],worldBoundingBox:{topLeft:[0,0,0],topRight:[0,0,0],bottomLeft:[0,0,0],bottomRight:[0,0,0]}},points:[[...i],[...i]],activeHandleIndex:null},cachedStats:{}}};Je(g,o);const v=Bl(o,this.getToolName());return this.editData={annotation:g,viewportIdsToRender:v,newAnnotation:!0,hasMoved:!1},this._activateDraw(o),Qr(o),e.preventDefault(),Bi(s,v),g})),te(this,"isPointNearTool",((e,t,n,o)=>{const i=(0,J.getEnabledElement)(e),{viewport:a}=i,{data:r}=t,{points:s}=r.handles,l=s.map((e=>a.worldToCanvas(e))),d=jg(l),c=jg([l[0],n]);return Math.abs(c-d)<o/2})),te(this,"toolSelectedCallback",((e,t)=>{const n=e.detail,{element:o}=n;t.highlighted=!0;const i=Bl(o,this.getToolName());this.editData={annotation:t,viewportIdsToRender:i,movingTextBox:!1},Qr(o),this._activateModify(o);const a=(0,J.getEnabledElement)(o),{renderingEngine:r}=a;Bi(r,i),e.preventDefault()})),te(this,"handleSelectedCallback",((e,t,n)=>{const o=e.detail,{element:i}=o,{data:a}=t;t.highlighted=!0;let r,s=!1;if(n.worldPosition)s=!0;else{const{points:e}=a.handles;r=e.findIndex((e=>e===n))}const l=Bl(i,this.getToolName());this.editData={annotation:t,viewportIdsToRender:l,handleIndex:r,movingTextBox:s},this._activateModify(i),Qr(i);const d=(0,J.getEnabledElement)(i),{renderingEngine:c}=d;Bi(c,l),e.preventDefault()})),te(this,"_endCallback",(e=>{const t=e.detail,{element:n}=t,{annotation:o,viewportIdsToRender:i,newAnnotation:a,hasMoved:r}=this.editData,{data:s}=o;if(a&&!r)return;o.highlighted=!1,s.handles.activeHandleIndex=null,this._deactivateModify(n),this._deactivateDraw(n),$r(n);const l=(0,J.getEnabledElement)(n),{renderingEngine:d}=l;if(this.editData=null,this.isDrawing=!1,this.isHandleOutsideImage&&this.configuration.preventHandleOutsideImage&&Qe(o.annotationUID),Bi(d,i),a){const e=Q.ANNOTATION_COMPLETED,t={annotation:o};(0,J.triggerEvent)(J.eventTarget,e,t)}})),te(this,"_dragDrawCallback",(e=>{this.isDrawing=!0;const t=e.detail,{element:n}=t,{currentPoints:o}=t,i=o.canvas,a=(0,J.getEnabledElement)(n),{renderingEngine:r,viewport:s}=a,{canvasToWorld:l}=s,{annotation:d,viewportIdsToRender:c}=this.editData,{data:h}=d;h.handles.points=[h.handles.points[0],l(i)],d.invalidated=!0,this.editData.hasMoved=!0,Bi(r,c)})),te(this,"_dragModifyCallback",(e=>{this.isDrawing=!0;const t=e.detail,{element:n}=t,{annotation:o,viewportIdsToRender:i,handleIndex:a,movingTextBox:r}=this.editData,{data:s}=o;if(r){const{deltaPoints:e}=t,n=e.world,{textBox:o}=s.handles,{worldPosition:i}=o;i[0]+=n[0],i[1]+=n[1],i[2]+=n[2],o.hasMoved=!0}else if(void 0===a){const{deltaPoints:e}=t,n=e.world;s.handles.points.forEach((e=>{e[0]+=n[0],e[1]+=n[1],e[2]+=n[2]})),o.invalidated=!0}else this._dragHandle(e),o.invalidated=!0;const l=(0,J.getEnabledElement)(n),{renderingEngine:d}=l;Bi(d,i)})),te(this,"_dragHandle",(e=>{const t=e.detail,{element:n}=t,o=(0,J.getEnabledElement)(n),{canvasToWorld:i,worldToCanvas:a}=o.viewport,{annotation:r,handleIndex:s}=this.editData,{data:l}=r,{points:d}=l.handles,c=d.map((e=>a(e))),{currentPoints:h}=t,u=h.canvas;if(0===s){const e=u[0]-c[0][0],t=u[1]-c[0][1],n=u,o=[c[1][0]+e,c[1][1]+t];d[0]=i(n),d[1]=i(o)}else d[1]=i(u)})),te(this,"cancel",(e=>{if(this.isDrawing){this.isDrawing=!1,this._deactivateDraw(e),this._deactivateModify(e),$r(e);const{annotation:t,viewportIdsToRender:n,newAnnotation:o}=this.editData,{data:i}=t;t.highlighted=!1,i.handles.activeHandleIndex=null;const a=(0,J.getEnabledElement)(e),{renderingEngine:r}=a;if(Bi(r,n),o){const e=Q.ANNOTATION_COMPLETED,n={annotation:t};(0,J.triggerEvent)(J.eventTarget,e,n)}return this.editData=null,t.annotationUID}})),te(this,"_activateModify",(e=>{He.isInteractingWithTool=!0,e.addEventListener(Q.MOUSE_UP,this._endCallback),e.addEventListener(Q.MOUSE_DRAG,this._dragModifyCallback),e.addEventListener(Q.MOUSE_CLICK,this._endCallback),e.addEventListener(Q.TOUCH_END,this._endCallback),e.addEventListener(Q.TOUCH_DRAG,this._dragModifyCallback),e.addEventListener(Q.TOUCH_TAP,this._endCallback)})),te(this,"_deactivateModify",(e=>{He.isInteractingWithTool=!1,e.removeEventListener(Q.MOUSE_UP,this._endCallback),e.removeEventListener(Q.MOUSE_DRAG,this._dragModifyCallback),e.removeEventListener(Q.MOUSE_CLICK,this._endCallback),e.removeEventListener(Q.TOUCH_END,this._endCallback),e.removeEventListener(Q.TOUCH_DRAG,this._dragModifyCallback),e.removeEventListener(Q.TOUCH_TAP,this._endCallback)})),te(this,"_activateDraw",(e=>{He.isInteractingWithTool=!0,e.addEventListener(Q.MOUSE_UP,this._endCallback),e.addEventListener(Q.MOUSE_DRAG,this._dragDrawCallback),e.addEventListener(Q.MOUSE_MOVE,this._dragDrawCallback),e.addEventListener(Q.MOUSE_CLICK,this._endCallback),e.addEventListener(Q.TOUCH_END,this._endCallback),e.addEventListener(Q.TOUCH_DRAG,this._dragDrawCallback),e.addEventListener(Q.TOUCH_TAP,this._endCallback)})),te(this,"_deactivateDraw",(e=>{He.isInteractingWithTool=!1,e.removeEventListener(Q.MOUSE_UP,this._endCallback),e.removeEventListener(Q.MOUSE_DRAG,this._dragDrawCallback),e.removeEventListener(Q.MOUSE_MOVE,this._dragDrawCallback),e.removeEventListener(Q.MOUSE_CLICK,this._endCallback),e.removeEventListener(Q.TOUCH_END,this._endCallback),e.removeEventListener(Q.TOUCH_DRAG,this._dragDrawCallback),e.removeEventListener(Q.TOUCH_TAP,this._endCallback)})),te(this,"renderAnnotation",((e,t)=>{var n,o;let i=!1;const{viewport:a}=e,{element:r}=a;let s=Ze(this.getToolName(),r);if(null===(n=s)||void 0===n||!n.length)return i;if(s=this.filterInteractableAnnotationsForElement(r,s),null===(o=s)||void 0===o||!o.length)return i;const l=this.getTargetId(a),d=a.getRenderingEngine(),c={toolGroupId:this.toolGroupId,toolName:this.getToolName(),viewportId:e.viewport.id};for(let n=0;n<s.length;n++){const o=s[n],{annotationUID:r,data:h}=o,{handles:u}=h,{points:g,activeHandleIndex:v}=u;c.annotationUID=r;const m=this.getStyle("lineWidth",c,o),p=this.getStyle("lineDash",c,o),f=this.getStyle("color",c,o),E=g.map((e=>a.worldToCanvas(e))),w=E[0],I=jg(E),C=zg(E),{centerPointRadius:_}=this.configuration;if(h.cachedStats[l]&&null!=h.cachedStats[l].areaUnit){if(o.invalidated&&(this._throttledCalculateCachedStats(o,a,d,e),a instanceof J.VolumeViewport)){const{referencedImageId:e}=o.metadata;for(const t in h.cachedStats)t.startsWith("imageId")&&d.getStackViewports().find((t=>{const n=J.utilities.imageIdToURI(e),o=t.hasImageURI(n),i=J.utilities.imageIdToURI(t.getCurrentImageId());return o&&i!==n}))&&delete h.cachedStats[t]}}else h.cachedStats[l]={Modality:null,area:null,max:null,mean:null,stdDev:null,areaUnit:null,radius:null,radiusUnit:null,perimeter:null},this._calculateCachedStats(o,a,d,e);if(!a.getRenderingEngine())return console.warn("Rendering Engine has been destroyed"),i;let T;if(!Me(r))continue;le(o)||this.editData||null===v||(T=[E[v]]),T&&Ms(t,r,"0",T,{color:f});const b="".concat(r,"-circle"),D="0";ys(t,r,D,w,I,{color:f,lineDash:p,lineWidth:m},b),_>0&&I>3*_&&ys(t,r,"".concat(D,"-center"),w,_,{color:f,lineDash:p,lineWidth:m}),i=!0;const S=this.getLinkedTextBoxStyle(c,o);if(!S.visibility){h.handles.textBox={hasMoved:!1,worldPosition:[0,0,0],worldBoundingBox:{topLeft:[0,0,0],topRight:[0,0,0],bottomLeft:[0,0,0],bottomRight:[0,0,0]}};continue}const y=this.configuration.getTextLines(h,l);if(!y||0===y.length)continue;let O;h.handles.textBox.hasMoved||(O=nd(C),h.handles.textBox.worldPosition=a.canvasToWorld(O));const M=a.worldToCanvas(h.handles.textBox.worldPosition),x=As(t,r,"1",y,M,E,{},S),{x:N,y:k,width:R,height:P}=x;h.handles.textBox.worldBoundingBox={topLeft:a.canvasToWorld([N,k]),topRight:a.canvasToWorld([N+R,k]),bottomLeft:a.canvasToWorld([N,k+P]),bottomRight:a.canvasToWorld([N+R,k+P])}}return i})),te(this,"_calculateCachedStats",((e,t,n,o)=>{const i=e.data,{viewportId:a,renderingEngineId:r}=o,{points:s}=i.handles,l=s.map((e=>t.worldToCanvas(e))),{viewPlaneNormal:d,viewUp:c}=t.getCamera(),[h,u]=zg(l),g=t.canvasToWorld(h),v=t.canvasToWorld(u),{cachedStats:m}=i,p=Object.keys(m),f=g,E=v;for(let o=0;o<p.length;o++){const i=p[o],a=this.getTargetIdImage(i,n);if(!a)continue;const{dimensions:r,imageData:s,metadata:l,hasPixelSpacing:h}=a,u=Kg(s,f);u[0]=Math.floor(u[0]),u[1]=Math.floor(u[1]),u[2]=Math.floor(u[2]);const _=Kg(s,E);if(_[0]=Math.floor(_[0]),_[1]=Math.floor(_[1]),_[2]=Math.floor(_[2]),this._isInsideVolume(u,_,r)){var w,I,C;const n=[[Math.min(u[0],_[0]),Math.max(u[0],_[0])],[Math.min(u[1],_[1]),Math.max(u[1],_[1])],[Math.min(u[2],_[2]),Math.max(u[2],_[2])]],o={center:[(g[0]+v[0])/2,(g[1]+v[1])/2,(g[2]+v[2])/2],xRadius:Math.abs(g[0]-v[0])/2,yRadius:Math.abs(g[1]-v[1])/2,zRadius:Math.abs(g[2]-v[2])/2},{worldWidth:r,worldHeight:h}=Fg(d,c,f,E),p=0===r&&0===h,T=$s(a),b=Qs(a),D=Math.abs(Math.PI*(r/T/2)*(h/b/T/2)),S={isPreScaled:ad(t,i),isSuvScaled:this.isSuvScaled(t,i,e.metadata.referencedImageId)},y=id(l.Modality,e.metadata.referencedImageId,S),O=tl(s,((e,t)=>ul(o,e)),this.configuration.statsCalculator.statsCallback,n),M=this.configuration.statsCalculator.getStatistics();m[i]={Modality:l.Modality,area:D,mean:null===(w=M[1])||void 0===w?void 0:w.value,max:null===(I=M[0])||void 0===I?void 0:I.value,stdDev:null===(C=M[2])||void 0===C?void 0:C.value,statsArray:M,pointsInShape:O,isEmptyArea:p,areaUnit:Js(0,a),radius:r/2/T,radiusUnit:Zs(0,a),perimeter:2*Math.PI*(r/2)/T,modalityUnit:y}}else this.isHandleOutsideImage=!0,m[i]={Modality:l.Modality}}e.invalidated=!1;const _=Q.ANNOTATION_MODIFIED,T={annotation:e,viewportId:a,renderingEngineId:r};return(0,J.triggerEvent)(J.eventTarget,_,T),m})),te(this,"_isInsideVolume",((e,t,n)=>J.utilities.indexWithinDimensions(e,n)&&J.utilities.indexWithinDimensions(t,n))),this._throttledCalculateCachedStats=js(this._calculateCachedStats,100,{trailing:!0})}}function Xg(e,t){const n=e.cachedStats[t],{radius:o,radiusUnit:i,area:a,mean:r,stdDev:s,max:l,isEmptyArea:d,Modality:c,areaUnit:h,modalityUnit:u}=n,g=[];if(o){const e=d?"Radius: Oblique not supported":"Radius: ".concat(al(o)," ").concat(i);g.push(e)}if(a){const e=d?"Area: Oblique not supported":"Area: ".concat(al(a)," ").concat(h);g.push(e)}return r&&g.push("Mean: ".concat(al(r)," ").concat(u)),l&&g.push("Max: ".concat(al(l)," ").concat(u)),s&&g.push("Std Dev: ".concat(al(s)," ").concat(u)),g}te(Yg,"toolName",void 0),Yg.toolName="CircleROI";const Zg=Yg,{transformWorldToIndex:Jg}=J.utilities;class $g extends Jl{constructor(){super(arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},arguments.length>1&&void 0!==arguments[1]?arguments[1]:{supportedInteractionTypes:["Mouse","Touch"],configuration:{preventHandleOutsideImage:!1,getTextLines:Qg}}),te(this,"touchDragCallback",void 0),te(this,"mouseDragCallback",void 0),te(this,"_throttledCalculateCachedStats",void 0),te(this,"editData",void 0),te(this,"isDrawing",void 0),te(this,"isHandleOutsideImage",void 0),te(this,"preventHandleOutsideImage",void 0),te(this,"isPointNearTool",((e,t,n,o)=>{const i=(0,J.getEnabledElement)(e),{viewport:a}=i,{data:r}=t,{points:s}=r.handles;let l=a.worldToCanvas(s[0]),d=a.worldToCanvas(s[1]),c={start:{x:l[0],y:l[1]},end:{x:d[0],y:d[1]}},h=ed([c.start.x,c.start.y],[c.end.x,c.end.y],[n[0],n[1]]);return h<=o||(l=a.worldToCanvas(s[2]),d=a.worldToCanvas(s[3]),c={start:{x:l[0],y:l[1]},end:{x:d[0],y:d[1]}},h=ed([c.start.x,c.start.y],[c.end.x,c.end.y],[n[0],n[1]]),h<=o)})),te(this,"toolSelectedCallback",((e,t)=>{const n=e.detail,{element:o}=n;t.highlighted=!0;const i=Bl(o,this.getToolName());this.editData={annotation:t,viewportIdsToRender:i,movingTextBox:!1},this._activateModify(o);const a=(0,J.getEnabledElement)(o),{renderingEngine:r}=a;Bi(r,i),Qr(o),e.preventDefault()})),te(this,"handleSelectedCallback",((e,t,n)=>{const o=e.detail,{element:i}=o,a=t.data;t.highlighted=!0;let r,s=!1;n.worldPosition?s=!0:r=a.handles.points.findIndex((e=>e===n));const l=Bl(i,this.getToolName());Qr(i),this.editData={annotation:t,viewportIdsToRender:l,handleIndex:r,movingTextBox:s},this._activateModify(i);const d=(0,J.getEnabledElement)(i),{renderingEngine:c}=d;Bi(c,l),e.preventDefault()})),te(this,"_endCallback",(e=>{const t=e.detail,{element:n}=t,{annotation:o,viewportIdsToRender:i,newAnnotation:a,hasMoved:r}=this.editData,{data:s}=o;if(a&&!r)return;s.handles.activeHandleIndex=null,this._deactivateModify(n),this._deactivateDraw(n),$r(n);const l=(0,J.getEnabledElement)(n),{renderingEngine:d}=l;if(void 0!==this.editData.handleIndex){const{points:e}=s.handles,t=ps.vec3.distance(e[0],e[1]);if(ps.vec3.distance(e[2],e[3])>t){const t=[[...e[2]],[...e[3]]],n=[...e[0]],o=[...e[1]],i=ps.vec2.create();ps.vec2.set(i,t[1][0]-t[0][0],t[1][1]-t[1][0]);const a=ps.vec2.create();ps.vec2.set(a,-i[1],i[0]);const r=ps.vec2.create();let l;ps.vec2.set(r,o[0]-n[0],o[1]-n[0]),l=ps.vec2.dot(r,a)>0?[n,o]:[o,n],s.handles.points=[t[0],t[1],l[0],l[1]]}}if(this.isHandleOutsideImage&&this.configuration.preventHandleOutsideImage&&Qe(o.annotationUID),Bi(d,i),a){const e=Q.ANNOTATION_COMPLETED,t={annotation:o};(0,J.triggerEvent)(J.eventTarget,e,t)}this.editData=null,this.isDrawing=!1})),te(this,"_dragDrawCallback",(e=>{this.isDrawing=!0;const t=e.detail,{currentPoints:n,element:o}=t,i=(0,J.getEnabledElement)(o),{renderingEngine:a,viewport:r}=i,{worldToCanvas:s}=r,{annotation:l,viewportIdsToRender:d,handleIndex:c}=this.editData,{data:h}=l,u=n.world;h.handles.points[c]=[...u];const g=h.handles.points.map(s),v={x:g[0][0],y:g[0][1]},m={x:g[1][0],y:g[1][1]},p=(g[2][0],g[2][1],g[3][0],g[3][1],ps.vec2.distance(g[0],g[1])/3),f=v.x-m.x,E=v.y-m.y,w=Math.sqrt(f*f+E*E),I=f/w,C=E/w,_=(v.x+m.x)/2,T=(v.y+m.y)/2,b=_+p*C,D=T-p*I,S=_-p*C,y=T+p*I;h.handles.points[2]=r.canvasToWorld([b,D]),h.handles.points[3]=r.canvasToWorld([S,y]),l.invalidated=!0,Bi(a,d),this.editData.hasMoved=!0})),te(this,"_dragModifyCallback",(e=>{this.isDrawing=!0;const t=e.detail,{element:n}=t,o=(0,J.getEnabledElement)(n),{renderingEngine:i}=o,{annotation:a,viewportIdsToRender:r,handleIndex:s,movingTextBox:l}=this.editData,{data:d}=a;if(l){const{deltaPoints:e}=t,n=e.world,{textBox:o}=d.handles,{worldPosition:i}=o;i[0]+=n[0],i[1]+=n[1],i[2]+=n[2],o.hasMoved=!0}else if(void 0===s){const{deltaPoints:e}=t,n=e.world;d.handles.points.forEach((e=>{e[0]+=n[0],e[1]+=n[1],e[2]+=n[2]})),a.invalidated=!0}else this._dragModifyHandle(e),a.invalidated=!0;Bi(i,r)})),te(this,"_dragModifyHandle",(e=>{const t=e.detail,{currentPoints:n,element:o}=t,i=(0,J.getEnabledElement)(o),{viewport:a}=i,{annotation:r,handleIndex:s}=this.editData,{data:l}=r,d=n.world,c=[a.worldToCanvas(l.handles.points[0]),a.worldToCanvas(l.handles.points[1]),a.worldToCanvas(l.handles.points[2]),a.worldToCanvas(l.handles.points[3])],h={start:{x:c[0][0],y:c[0][1]},end:{x:c[1][0],y:c[1][1]}},u={start:{x:c[2][0],y:c[2][1]},end:{x:c[3][0],y:c[3][1]}},g=[...d],v=a.worldToCanvas(g);if(0===s||1===s){const e=c[0===s?1:0],t=ps.vec2.set(ps.vec2.create(),v[0]-e[0],v[1]-e[1]),n=ps.vec2.set(ps.vec2.create(),c[s][0]-e[0],c[s][1]-e[1]);ps.vec2.normalize(t,t),ps.vec2.normalize(n,n);const o={start:{x:e[0],y:e[1]},end:{x:v[0],y:v[1]}};if(this._movingLongAxisWouldPutItThroughShortAxis(o,u))return;const i=e,r=this._getSignedAngle(n,t);let d=c[2][0],h=c[2][1],m=c[3][0],p=c[3][1];d-=i[0],h-=i[1],m-=i[0],p-=i[1];const f=d*Math.cos(r)-h*Math.sin(r),E=d*Math.sin(r)+h*Math.cos(r),w=m*Math.cos(r)-p*Math.sin(r),I=m*Math.sin(r)+p*Math.cos(r);d=f+i[0],h=E+i[1],m=w+i[0],p=I+i[1];const C=a.canvasToWorld([d,h]),_=a.canvasToWorld([m,p]);l.handles.points[s]=g,l.handles.points[2]=C,l.handles.points[3]=_}else{const e=2===s?3:2,t={longLineSegment:{start:h.start,end:h.end},shortLineSegment:{start:u.start,end:u.end}},n=ps.vec2.subtract(ps.vec2.create(),[t.longLineSegment.end.x,t.longLineSegment.end.y],[t.longLineSegment.start.x,t.longLineSegment.start.y]),o=ps.vec2.normalize(ps.vec2.create(),n),i=ps.vec2.subtract(ps.vec2.create(),[v[0],v[1]],[c[s][0],c[s][1]]),r=ps.vec2.length(i),d=this._getSignedAngle(o,i),m=Math.cos(d)*r,p=ps.vec2.scaleAndAdd(ps.vec2.create(),[c[e][0],c[e][1]],o,m);if(this._movingLongAxisWouldPutItThroughShortAxis({start:{x:v[0],y:v[1]},end:{x:p[0],y:p[1]}},{start:{x:t.longLineSegment.start.x,y:t.longLineSegment.start.y},end:{x:t.longLineSegment.end.x,y:t.longLineSegment.end.y}}))return;if(!Fd([v[0],v[1]],[p[0],p[1]],[h.start.x,h.start.y],[h.end.x,h.end.y]))return;l.handles.points[e]=a.canvasToWorld(p),l.handles.points[s]=g}})),te(this,"cancel",(e=>{if(this.isDrawing){this.isDrawing=!1,this._deactivateDraw(e),this._deactivateModify(e),$r(e);const{annotation:t,viewportIdsToRender:n,newAnnotation:o}=this.editData,{data:i}=t;t.highlighted=!1,i.handles.activeHandleIndex=null;const a=(0,J.getEnabledElement)(e),{renderingEngine:r}=a;if(Bi(r,n),o){const e=Q.ANNOTATION_COMPLETED,n={annotation:t};(0,J.triggerEvent)(J.eventTarget,e,n)}return this.editData=null,t.annotationUID}})),te(this,"_activateDraw",(e=>{He.isInteractingWithTool=!0,e.addEventListener(Q.MOUSE_UP,this._endCallback),e.addEventListener(Q.MOUSE_DRAG,this._dragDrawCallback),e.addEventListener(Q.MOUSE_MOVE,this._dragDrawCallback),e.addEventListener(Q.MOUSE_CLICK,this._endCallback),e.addEventListener(Q.TOUCH_TAP,this._endCallback),e.addEventListener(Q.TOUCH_END,this._endCallback),e.addEventListener(Q.TOUCH_DRAG,this._dragDrawCallback)})),te(this,"_deactivateDraw",(e=>{He.isInteractingWithTool=!1,e.removeEventListener(Q.MOUSE_UP,this._endCallback),e.removeEventListener(Q.MOUSE_DRAG,this._dragDrawCallback),e.removeEventListener(Q.MOUSE_MOVE,this._dragDrawCallback),e.removeEventListener(Q.MOUSE_CLICK,this._endCallback),e.removeEventListener(Q.TOUCH_TAP,this._endCallback),e.removeEventListener(Q.TOUCH_END,this._endCallback),e.removeEventListener(Q.TOUCH_DRAG,this._dragDrawCallback)})),te(this,"_activateModify",(e=>{He.isInteractingWithTool=!0,e.addEventListener(Q.MOUSE_UP,this._endCallback),e.addEventListener(Q.MOUSE_DRAG,this._dragModifyCallback),e.addEventListener(Q.MOUSE_CLICK,this._endCallback),e.addEventListener(Q.TOUCH_END,this._endCallback),e.addEventListener(Q.TOUCH_DRAG,this._dragModifyCallback),e.addEventListener(Q.TOUCH_TAP,this._endCallback)})),te(this,"_deactivateModify",(e=>{He.isInteractingWithTool=!1,e.removeEventListener(Q.MOUSE_UP,this._endCallback),e.removeEventListener(Q.MOUSE_DRAG,this._dragModifyCallback),e.removeEventListener(Q.MOUSE_CLICK,this._endCallback),e.removeEventListener(Q.TOUCH_END,this._endCallback),e.removeEventListener(Q.TOUCH_DRAG,this._dragModifyCallback),e.removeEventListener(Q.TOUCH_TAP,this._endCallback)})),te(this,"renderAnnotation",((e,t)=>{var n,o;let i=!0;const{viewport:a}=e,{element:r}=a;let s=Ze(this.getToolName(),r);if(null===(n=s)||void 0===n||!n.length)return i;if(s=this.filterInteractableAnnotationsForElement(r,s),null===(o=s)||void 0===o||!o.length)return i;const l=this.getTargetId(a),d=a.getRenderingEngine(),c={toolGroupId:this.toolGroupId,toolName:this.getToolName(),viewportId:e.viewport.id};for(let n=0;n<s.length;n++){const o=s[n],{annotationUID:r,data:h}=o,{points:u,activeHandleIndex:g}=h.handles,v=u.map((e=>a.worldToCanvas(e)));c.annotationUID=r;const m=this.getStyle("lineWidth",c,o),p=this.getStyle("lineDash",c,o),f=this.getStyle("color",c,o),E=this.getStyle("shadow",c,o);if(h.cachedStats[l]&&null!=h.cachedStats[l].unit?o.invalidated&&this._throttledCalculateCachedStats(o,d,e):(h.cachedStats[l]={length:null,width:null,unit:null},this._calculateCachedStats(o,d,e)),!a.getRenderingEngine())return console.warn("Rendering Engine has been destroyed"),i;let w;if(!Me(r))continue;le(o)||this.editData||null===g||(w=[v[g]]),w&&Ms(t,r,"0",w,{color:f});const I="".concat(r,"-line-1"),C="".concat(r,"-line-2");xs(t,r,"0",v[0],v[1],{color:f,lineDash:p,lineWidth:m,shadow:E},I),xs(t,r,"1",v[2],v[3],{color:f,lineDash:p,lineWidth:m,shadow:E},C),i=!0;const _=this.getLinkedTextBoxStyle(c,o);if(!_.visibility){h.handles.textBox={hasMoved:!1,worldPosition:[0,0,0],worldBoundingBox:{topLeft:[0,0,0],topRight:[0,0,0],bottomLeft:[0,0,0],bottomRight:[0,0,0]}};continue}const T=this.configuration.getTextLines(h,l);if(!T||0===T.length)continue;let b;h.handles.textBox.hasMoved||(b=nd(v),h.handles.textBox.worldPosition=a.canvasToWorld(b));const D=a.worldToCanvas(h.handles.textBox.worldPosition),S=As(t,r,"1",T,D,v,{},_),{x:y,y:O,width:M,height:x}=S;h.handles.textBox.worldBoundingBox={topLeft:a.canvasToWorld([y,O]),topRight:a.canvasToWorld([y+M,O]),bottomLeft:a.canvasToWorld([y,O+x]),bottomRight:a.canvasToWorld([y+M,O+x])}}return i})),te(this,"_movingLongAxisWouldPutItThroughShortAxis",((e,t)=>{const n=ps.vec2.create();ps.vec2.set(n,t.end.x-t.start.x,t.end.y-t.start.y),ps.vec2.normalize(n,n);const o={start:{x:t.start.x-10*n[0],y:t.start.y-10*n[1]},end:{x:t.end.x+10*n[0],y:t.end.y+10*n[1]}};return!Fd([o.start.x,o.start.y],[o.end.x,o.end.y],[e.start.x,e.start.y],[e.end.x,e.end.y])})),te(this,"_calculateCachedStats",((e,t,n)=>{const{data:o}=e,{viewportId:i,renderingEngineId:a}=n,r=o.handles.points[0],s=o.handles.points[1],l=o.handles.points[2],d=o.handles.points[3],{cachedStats:c}=o,h=Object.keys(c);for(let e=0;e<h.length;e++){const n=h[e],o=this.getTargetIdImage(n,t);if(!o)continue;const{imageData:i,dimensions:a}=o,u=$s(o),g=this._calculateLength(r,s)/u,v=this._calculateLength(l,d)/u,m=g>v?g:v,p=g>v?v:g,f=Jg(i,r),E=Jg(i,s),w=Jg(i,l),I=Jg(i,d);this._isInsideVolume(f,E,w,I,a)?this.isHandleOutsideImage=!1:this.isHandleOutsideImage=!0,c[n]={length:m,width:p,unit:Zs(0,o)}}e.invalidated=!1;const u=Q.ANNOTATION_MODIFIED,g={annotation:e,viewportId:i,renderingEngineId:a};return(0,J.triggerEvent)(J.eventTarget,u,g),c})),te(this,"_isInsideVolume",((e,t,n,o,i)=>J.utilities.indexWithinDimensions(e,i)&&J.utilities.indexWithinDimensions(t,i)&&J.utilities.indexWithinDimensions(n,i)&&J.utilities.indexWithinDimensions(o,i))),te(this,"_getSignedAngle",((e,t)=>Math.atan2(e[0]*t[1]-e[1]*t[0],e[0]*t[0]+e[1]*t[1]))),this._throttledCalculateCachedStats=js(this._calculateCachedStats,100,{trailing:!0})}addNewAnnotation(e){const t=e.detail,{currentPoints:n,element:o}=t,i=n.world,a=(0,J.getEnabledElement)(o),{viewport:r,renderingEngine:s}=a;this.isDrawing=!0;const l=r.getCamera(),{viewPlaneNormal:d,viewUp:c}=l,h=this.getReferencedImageId(r,i,d,c),u=r.getFrameOfReferenceUID(),g={highlighted:!0,invalidated:!0,metadata:{toolName:this.getToolName(),viewPlaneNormal:[...d],viewUp:[...c],FrameOfReferenceUID:u,referencedImageId:h},data:{handles:{points:[[...i],[...i],[...i],[...i]],textBox:{hasMoved:!1,worldPosition:[0,0,0],worldBoundingBox:{topLeft:[0,0,0],topRight:[0,0,0],bottomLeft:[0,0,0],bottomRight:[0,0,0]}},activeHandleIndex:null},label:"",cachedStats:{}}};Je(g,o);const v=Bl(o,this.getToolName());return this.editData={annotation:g,viewportIdsToRender:v,handleIndex:1,movingTextBox:!1,newAnnotation:!0,hasMoved:!1},this._activateDraw(o),Qr(o),e.preventDefault(),Bi(s,v),g}_calculateLength(e,t){const n=e[0]-t[0],o=e[1]-t[1],i=e[2]-t[2];return Math.sqrt(n*n+o*o+i*i)}}function Qg(e,t){const{cachedStats:n}=e,{length:o,width:i,unit:a}=n[t];if(void 0!==o)return["L: ".concat(al(o)," ").concat(a),"W: ".concat(al(i)," ").concat(a)]}te($g,"toolName",void 0),$g.toolName="Bidirectional";const ev=$g;class tv extends Jl{constructor(){super(arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},arguments.length>1&&void 0!==arguments[1]?arguments[1]:{supportedInteractionTypes:["Mouse","Touch"],configuration:{shadow:!0,getTextCallback:nv,changeTextCallback:ov,preventHandleOutsideImage:!1,arrowFirst:!0}}),te(this,"touchDragCallback",void 0),te(this,"mouseDragCallback",void 0),te(this,"_throttledCalculateCachedStats",void 0),te(this,"editData",void 0),te(this,"isDrawing",void 0),te(this,"isHandleOutsideImage",void 0),te(this,"addNewAnnotation",(e=>{const t=e.detail,{currentPoints:n,element:o}=t,i=n.world,a=(0,J.getEnabledElement)(o),{viewport:r,renderingEngine:s}=a;Qr(o),this.isDrawing=!0;const l=r.getCamera(),{viewPlaneNormal:d,viewUp:c}=l,h=this.getReferencedImageId(r,i,d,c),{arrowFirst:u}=this.configuration,g=r.getFrameOfReferenceUID(),v={highlighted:!0,invalidated:!0,metadata:{toolName:this.getToolName(),viewPlaneNormal:[...d],viewUp:[...c],FrameOfReferenceUID:g,referencedImageId:h},data:{text:"",handles:{points:[[...i],[...i]],activeHandleIndex:null,arrowFirst:u,textBox:{hasMoved:!1,worldPosition:[0,0,0],worldBoundingBox:{topLeft:[0,0,0],topRight:[0,0,0],bottomLeft:[0,0,0],bottomRight:[0,0,0]}}},label:""}};Je(v,o);const m=Bl(o,this.getToolName());return this.editData={annotation:v,viewportIdsToRender:m,handleIndex:1,movingTextBox:!1,newAnnotation:!0,hasMoved:!1},this._activateDraw(o),e.preventDefault(),Bi(s,m),v})),te(this,"isPointNearTool",((e,t,n,o)=>{const i=(0,J.getEnabledElement)(e),{viewport:a}=i,{data:r}=t,[s,l]=r.handles.points,d=a.worldToCanvas(s),c=a.worldToCanvas(l),h={start:{x:d[0],y:d[1]},end:{x:c[0],y:c[1]}};return ed([h.start.x,h.start.y],[h.end.x,h.end.y],[n[0],n[1]])<=o})),te(this,"toolSelectedCallback",((e,t)=>{const n=e.detail,{element:o}=n;t.highlighted=!0;const i=Bl(o,this.getToolName());this.editData={annotation:t,viewportIdsToRender:i,movingTextBox:!1},this._activateModify(o),Qr(o);const a=(0,J.getEnabledElement)(o),{renderingEngine:r}=a;Bi(r,i),e.preventDefault()})),te(this,"_endCallback",(e=>{const t=e.detail,{element:n}=t,{annotation:o,viewportIdsToRender:i,newAnnotation:a,hasMoved:r}=this.editData,{data:s}=o;if(a&&!r)return;s.handles.activeHandleIndex=null,this._deactivateModify(n),this._deactivateDraw(n),$r(n);const l=(0,J.getEnabledElement)(n),{viewportId:d,renderingEngineId:c,renderingEngine:h}=l;if(this.isHandleOutsideImage&&this.configuration.preventHandleOutsideImage&&Qe(o.annotationUID),a)this.configuration.getTextCallback((e=>{if(!e)return Qe(o.annotationUID),Bi(h,i),this.editData=null,void(this.isDrawing=!1);o.data.text=e;const t=Q.ANNOTATION_COMPLETED,n={annotation:o};(0,J.triggerEvent)(J.eventTarget,t,n),Bi(h,i)}));else{const e=Q.ANNOTATION_MODIFIED,t={annotation:o,viewportId:d,renderingEngineId:c};(0,J.triggerEvent)(J.eventTarget,e,t)}this.editData=null,this.isDrawing=!1})),te(this,"_dragCallback",(e=>{this.isDrawing=!0;const t=e.detail,{element:n}=t,{annotation:o,viewportIdsToRender:i,handleIndex:a,movingTextBox:r}=this.editData,{data:s}=o;if(r){const{deltaPoints:e}=t,n=e.world,{textBox:o}=s.handles,{worldPosition:i}=o;i[0]+=n[0],i[1]+=n[1],i[2]+=n[2],o.hasMoved=!0}else if(void 0===a){const{deltaPoints:e}=t,n=e.world;s.handles.points.forEach((e=>{e[0]+=n[0],e[1]+=n[1],e[2]+=n[2]})),o.invalidated=!0}else{const{currentPoints:e}=t,n=e.world;s.handles.points[a]=[...n],o.invalidated=!0}this.editData.hasMoved=!0;const l=(0,J.getEnabledElement)(n),{renderingEngine:d}=l;Bi(d,i)})),te(this,"touchTapCallback",(e=>{2==e.detail.taps&&this.doubleClickCallback(e)})),te(this,"doubleClickCallback",(e=>{var t;const n=e.detail,{element:o}=n;let i=Ze(this.getToolName(),o);if(i=this.filterInteractableAnnotationsForElement(o,i),null===(t=i)||void 0===t||!t.length)return;const a=i.find((e=>this.isPointNearTool(o,e,n.currentPoints.canvas,6)));if(!a)return;const r=a;this.configuration.changeTextCallback(a,e.detail,this._doneChangingTextCallback.bind(this,o,r)),this.editData=null,this.isDrawing=!1,e.stopImmediatePropagation(),e.preventDefault()})),te(this,"cancel",(e=>{if(this.isDrawing){this.isDrawing=!1,this._deactivateDraw(e),this._deactivateModify(e),$r(e);const{annotation:t,viewportIdsToRender:n,newAnnotation:o}=this.editData,{data:i}=t;t.highlighted=!1,i.handles.activeHandleIndex=null;const a=(0,J.getEnabledElement)(e),{renderingEngine:r}=a;if(Bi(r,n),o){const e=Q.ANNOTATION_COMPLETED,n={annotation:t};(0,J.triggerEvent)(J.eventTarget,e,n)}return this.editData=null,t.annotationUID}})),te(this,"_activateModify",(e=>{He.isInteractingWithTool=!0,e.addEventListener(Q.MOUSE_UP,this._endCallback),e.addEventListener(Q.MOUSE_DRAG,this._dragCallback),e.addEventListener(Q.MOUSE_CLICK,this._endCallback),e.addEventListener(Q.TOUCH_TAP,this._endCallback),e.addEventListener(Q.TOUCH_END,this._endCallback),e.addEventListener(Q.TOUCH_DRAG,this._dragCallback)})),te(this,"_deactivateModify",(e=>{He.isInteractingWithTool=!1,e.removeEventListener(Q.MOUSE_UP,this._endCallback),e.removeEventListener(Q.MOUSE_DRAG,this._dragCallback),e.removeEventListener(Q.MOUSE_CLICK,this._endCallback),e.removeEventListener(Q.TOUCH_TAP,this._endCallback),e.removeEventListener(Q.TOUCH_DRAG,this._dragCallback),e.removeEventListener(Q.TOUCH_END,this._endCallback)})),te(this,"_activateDraw",(e=>{He.isInteractingWithTool=!0,e.addEventListener(Q.MOUSE_UP,this._endCallback),e.addEventListener(Q.MOUSE_DRAG,this._dragCallback),e.addEventListener(Q.MOUSE_MOVE,this._dragCallback),e.addEventListener(Q.MOUSE_CLICK,this._endCallback),e.addEventListener(Q.TOUCH_TAP,this._endCallback),e.addEventListener(Q.TOUCH_END,this._endCallback),e.addEventListener(Q.TOUCH_DRAG,this._dragCallback)})),te(this,"_deactivateDraw",(e=>{He.isInteractingWithTool=!1,e.removeEventListener(Q.MOUSE_UP,this._endCallback),e.removeEventListener(Q.MOUSE_DRAG,this._dragCallback),e.removeEventListener(Q.MOUSE_MOVE,this._dragCallback),e.removeEventListener(Q.MOUSE_CLICK,this._endCallback),e.removeEventListener(Q.TOUCH_TAP,this._endCallback),e.removeEventListener(Q.TOUCH_END,this._endCallback),e.removeEventListener(Q.TOUCH_DRAG,this._dragCallback)})),te(this,"renderAnnotation",((e,t)=>{var n,o;let i=!1;const{viewport:a}=e,{element:r}=a;let s=Ze(this.getToolName(),r);if(null===(n=s)||void 0===n||!n.length)return i;if(s=this.filterInteractableAnnotationsForElement(r,s),null===(o=s)||void 0===o||!o.length)return i;const l={toolGroupId:this.toolGroupId,toolName:this.getToolName(),viewportId:e.viewport.id};for(let e=0;e<s.length;e++){const n=s[e],{annotationUID:o,data:r}=n,{handles:d,text:c}=r,{points:h,activeHandleIndex:u}=d;l.annotationUID=o;const g=this.getStyle("lineWidth",l,n),v=this.getStyle("lineDash",l,n),m=this.getStyle("color",l,n),p=h.map((e=>a.worldToCanvas(e)));let f;le(n)||this.editData||null===u||(f=[p[u]]),f&&Ms(t,o,"0",p,{color:m,lineWidth:g});const E="1";if(this.configuration.arrowFirst?Vs(t,o,E,p[1],p[0],{color:m,width:g,lineDash:v}):Vs(t,o,E,p[0],p[1],{color:m,width:g,lineDash:v}),i=!0,!a.getRenderingEngine())return console.warn("Rendering Engine has been destroyed"),i;if(!c)continue;const w=this.getLinkedTextBoxStyle(l,n);if(!w.visibility){r.handles.textBox={hasMoved:!1,worldPosition:[0,0,0],worldBoundingBox:{topLeft:[0,0,0],topRight:[0,0,0],bottomLeft:[0,0,0],bottomRight:[0,0,0]}};continue}if(!r.handles.textBox.hasMoved){const e=p[1];r.handles.textBox.worldPosition=a.canvasToWorld(e)}const I=a.worldToCanvas(r.handles.textBox.worldPosition),C=As(t,o,"1",[c],I,p,{},w),{x:_,y:T,width:b,height:D}=C;r.handles.textBox.worldBoundingBox={topLeft:a.canvasToWorld([_,T]),topRight:a.canvasToWorld([_+b,T]),bottomLeft:a.canvasToWorld([_,T+D]),bottomRight:a.canvasToWorld([_+b,T+D])}}return i}))}handleSelectedCallback(e,t,n){const o=e.detail,{element:i}=o,{data:a}=t;t.highlighted=!0;let r,s=!1;n.worldPosition?s=!0:r=a.handles.points.findIndex((e=>e===n));const l=Bl(i,this.getToolName());this.editData={annotation:t,viewportIdsToRender:l,handleIndex:r,movingTextBox:s},this._activateModify(i),Qr(i);const d=(0,J.getEnabledElement)(i),{renderingEngine:c}=d;Bi(c,l),e.preventDefault()}_doneChangingTextCallback(e,t,n){t.data.text=n;const{renderingEngine:o,viewportId:i,renderingEngineId:a}=(0,J.getEnabledElement)(e),r=Bl(e,this.getToolName());Bi(o,r);const s=Q.ANNOTATION_MODIFIED;(0,J.triggerEvent)(J.eventTarget,s,{annotation:t,viewportId:i,renderingEngineId:a})}_isInsideVolume(e,t,n){return J.utilities.indexWithinDimensions(e,n)&&J.utilities.indexWithinDimensions(t,n)}}function nv(e){return e(prompt("Enter your annotation:"))}function ov(e,t,n){return n(prompt("Enter your annotation:"))}te(tv,"toolName",void 0),tv.toolName="ArrowAnnotate";const iv=tv;class av extends Jl{constructor(){super(arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},arguments.length>1&&void 0!==arguments[1]?arguments[1]:{supportedInteractionTypes:["Mouse","Touch"],configuration:{shadow:!0,preventHandleOutsideImage:!1,getTextLines:rv}}),te(this,"touchDragCallback",void 0),te(this,"mouseDragCallback",void 0),te(this,"angleStartedNotYetCompleted",void 0),te(this,"_throttledCalculateCachedStats",void 0),te(this,"editData",void 0),te(this,"isDrawing",void 0),te(this,"isHandleOutsideImage",void 0),te(this,"addNewAnnotation",(e=>{if(this.angleStartedNotYetCompleted)return;this.angleStartedNotYetCompleted=!0;const t=e.detail,{currentPoints:n,element:o}=t,i=n.world,a=(0,J.getEnabledElement)(o),{viewport:r,renderingEngine:s}=a;Qr(o),this.isDrawing=!0;const l=r.getCamera(),{viewPlaneNormal:d,viewUp:c}=l,h=this.getReferencedImageId(r,i,d,c),u=r.getFrameOfReferenceUID(),g={highlighted:!0,invalidated:!0,metadata:{toolName:this.getToolName(),viewPlaneNormal:[...d],viewUp:[...c],FrameOfReferenceUID:u,referencedImageId:h},data:{handles:{points:[[...i],[...i]],activeHandleIndex:null,textBox:{hasMoved:!1,worldPosition:[0,0,0],worldBoundingBox:{topLeft:[0,0,0],topRight:[0,0,0],bottomLeft:[0,0,0],bottomRight:[0,0,0]}}},label:"",cachedStats:{}}};Je(g,o);const v=Bl(o,this.getToolName());return this.editData={annotation:g,viewportIdsToRender:v,handleIndex:1,movingTextBox:!1,newAnnotation:!0,hasMoved:!1},this._activateDraw(o),e.preventDefault(),Bi(s,v),g})),te(this,"isPointNearTool",((e,t,n,o)=>{const i=(0,J.getEnabledElement)(e),{viewport:a}=i,{data:r}=t,[s,l,d]=r.handles.points,c=a.worldToCanvas(s),h=a.worldToCanvas(l),u={start:{x:c[0],y:c[1]},end:{x:h[0],y:h[1]}};if(ed([u.start.x,u.start.y],[u.end.x,u.end.y],[n[0],n[1]])<=o)return!0;if(!d)return!1;const g=a.worldToCanvas(d),v={start:{x:h[0],y:h[1]},end:{x:g[0],y:g[1]}};return ed([v.start.x,v.start.y],[v.end.x,v.end.y],[n[0],n[1]])<=o})),te(this,"toolSelectedCallback",((e,t)=>{const n=e.detail,{element:o}=n;t.highlighted=!0;const i=Bl(o,this.getToolName());this.editData={annotation:t,viewportIdsToRender:i,movingTextBox:!1},this._activateModify(o),Qr(o);const a=(0,J.getEnabledElement)(o),{renderingEngine:r}=a;Bi(r,i),e.preventDefault()})),te(this,"_endCallback",(e=>{const t=e.detail,{element:n}=t,{annotation:o,viewportIdsToRender:i,newAnnotation:a,hasMoved:r}=this.editData,{data:s}=o;if(a&&!r)return;if(this.angleStartedNotYetCompleted&&2===s.handles.points.length)return void(this.editData.handleIndex=2);this.angleStartedNotYetCompleted=!1,s.handles.activeHandleIndex=null,this._deactivateModify(n),this._deactivateDraw(n),$r(n);const l=(0,J.getEnabledElement)(n),{renderingEngine:d}=l;if(this.isHandleOutsideImage&&this.configuration.preventHandleOutsideImage&&Qe(o.annotationUID),Bi(d,i),a){const e=Q.ANNOTATION_COMPLETED,t={annotation:o};(0,J.triggerEvent)(J.eventTarget,e,t)}this.editData=null,this.isDrawing=!1})),te(this,"_dragCallback",(e=>{this.isDrawing=!0;const t=e.detail,{element:n}=t,{annotation:o,viewportIdsToRender:i,handleIndex:a,movingTextBox:r}=this.editData,{data:s}=o;if(r){const{deltaPoints:e}=t,n=e.world,{textBox:o}=s.handles,{worldPosition:i}=o;i[0]+=n[0],i[1]+=n[1],i[2]+=n[2],o.hasMoved=!0}else if(void 0===a){const{deltaPoints:e}=t,n=e.world;s.handles.points.forEach((e=>{e[0]+=n[0],e[1]+=n[1],e[2]+=n[2]})),o.invalidated=!0}else{const{currentPoints:e}=t,n=e.world;s.handles.points[a]=[...n],o.invalidated=!0}this.editData.hasMoved=!0;const l=(0,J.getEnabledElement)(n),{renderingEngine:d}=l;Bi(d,i)})),te(this,"cancel",(e=>{if(this.isDrawing){this.isDrawing=!1,this._deactivateDraw(e),this._deactivateModify(e),$r(e);const{annotation:t,viewportIdsToRender:n,newAnnotation:o}=this.editData,{data:i}=t;t.highlighted=!1,i.handles.activeHandleIndex=null;const a=(0,J.getEnabledElement)(e),{renderingEngine:r}=a;if(Bi(r,n),o){const e=Q.ANNOTATION_COMPLETED,n={annotation:t};(0,J.triggerEvent)(J.eventTarget,e,n)}return this.editData=null,this.angleStartedNotYetCompleted=!1,t.annotationUID}})),te(this,"_activateModify",(e=>{He.isInteractingWithTool=!0,e.addEventListener(Q.MOUSE_UP,this._endCallback),e.addEventListener(Q.MOUSE_DRAG,this._dragCallback),e.addEventListener(Q.MOUSE_CLICK,this._endCallback),e.addEventListener(Q.TOUCH_TAP,this._endCallback),e.addEventListener(Q.TOUCH_END,this._endCallback),e.addEventListener(Q.TOUCH_DRAG,this._dragCallback)})),te(this,"_deactivateModify",(e=>{He.isInteractingWithTool=!1,e.removeEventListener(Q.MOUSE_UP,this._endCallback),e.removeEventListener(Q.MOUSE_DRAG,this._dragCallback),e.removeEventListener(Q.MOUSE_CLICK,this._endCallback),e.removeEventListener(Q.TOUCH_TAP,this._endCallback),e.removeEventListener(Q.TOUCH_END,this._endCallback),e.removeEventListener(Q.TOUCH_DRAG,this._dragCallback)})),te(this,"_activateDraw",(e=>{He.isInteractingWithTool=!0,e.addEventListener(Q.MOUSE_UP,this._endCallback),e.addEventListener(Q.MOUSE_DRAG,this._dragCallback),e.addEventListener(Q.MOUSE_MOVE,this._dragCallback),e.addEventListener(Q.MOUSE_CLICK,this._endCallback),e.addEventListener(Q.TOUCH_TAP,this._endCallback),e.addEventListener(Q.TOUCH_END,this._endCallback),e.addEventListener(Q.TOUCH_DRAG,this._dragCallback)})),te(this,"_deactivateDraw",(e=>{He.isInteractingWithTool=!1,e.removeEventListener(Q.MOUSE_UP,this._endCallback),e.removeEventListener(Q.MOUSE_DRAG,this._dragCallback),e.removeEventListener(Q.MOUSE_MOVE,this._dragCallback),e.removeEventListener(Q.MOUSE_CLICK,this._endCallback),e.removeEventListener(Q.TOUCH_TAP,this._endCallback),e.removeEventListener(Q.TOUCH_END,this._endCallback),e.removeEventListener(Q.TOUCH_DRAG,this._dragCallback)})),te(this,"renderAnnotation",((e,t)=>{var n,o;let i=!1;const{viewport:a}=e,{element:r}=a;let s=Ze(this.getToolName(),r);if(null===(n=s)||void 0===n||!n.length)return i;if(s=this.filterInteractableAnnotationsForElement(r,s),null===(o=s)||void 0===o||!o.length)return i;const l=this.getTargetId(a),d=a.getRenderingEngine(),c={toolGroupId:this.toolGroupId,toolName:this.getToolName(),viewportId:e.viewport.id};for(let n=0;n<s.length;n++){var h;const o=s[n],{annotationUID:r,data:u}=o,{points:g,activeHandleIndex:v}=u.handles;c.annotationUID=r;const m=this.getStyle("lineWidth",c,o),p=this.getStyle("lineDash",c,o),f=this.getStyle("color",c,o),E=g.map((e=>a.worldToCanvas(e)));let w;if(u.cachedStats[l]&&null!=u.cachedStats[l].angle?o.invalidated&&this._throttledCalculateCachedStats(o,d,e):(u.cachedStats[l]={angle:null},this._calculateCachedStats(o,d,e)),le(o)||this.editData||null===v||(w=[E[v]]),!a.getRenderingEngine())return console.warn("Rendering Engine has been destroyed"),i;w&&Ms(t,r,"0",E,{color:f,lineDash:p,lineWidth:m});let I="1";if(xs(t,r,I,E[0],E[1],{color:f,width:m,lineDash:p}),i=!0,3!==E.length)return i;if(I="2",xs(t,r,I,E[1],E[2],{color:f,width:m,lineDash:p}),null===(h=u.cachedStats[l])||void 0===h||!h.angle)continue;const C=this.getLinkedTextBoxStyle(c,o);if(!C.visibility){u.handles.textBox={hasMoved:!1,worldPosition:[0,0,0],worldBoundingBox:{topLeft:[0,0,0],topRight:[0,0,0],bottomLeft:[0,0,0],bottomRight:[0,0,0]}};continue}const _=this.configuration.getTextLines(u,l);if(!u.handles.textBox.hasMoved){const e=E[1];u.handles.textBox.worldPosition=a.canvasToWorld(e)}const T=a.worldToCanvas(u.handles.textBox.worldPosition),b=As(t,r,"1",_,T,E,{},C),{x:D,y:S,width:y,height:O}=b;u.handles.textBox.worldBoundingBox={topLeft:a.canvasToWorld([D,S]),topRight:a.canvasToWorld([D+y,S]),bottomLeft:a.canvasToWorld([D,S+O]),bottomRight:a.canvasToWorld([D+y,S+O])}}return i})),this._throttledCalculateCachedStats=js(this._calculateCachedStats,100,{trailing:!0})}handleSelectedCallback(e,t,n){const o=e.detail,{element:i}=o,{data:a}=t;t.highlighted=!0;let r,s=!1;n.worldPosition?s=!0:r=a.handles.points.findIndex((e=>e===n));const l=Bl(i,this.getToolName());this.editData={annotation:t,viewportIdsToRender:l,handleIndex:r,movingTextBox:s},this._activateModify(i),Qr(i);const d=(0,J.getEnabledElement)(i),{renderingEngine:c}=d;Bi(c,l),e.preventDefault()}_calculateCachedStats(e,t,n){const o=e.data,{viewportId:i,renderingEngineId:a}=n;if(3!==o.handles.points.length)return;const r=o.handles.points[0],s=o.handles.points[1],l=o.handles.points[2],{cachedStats:d}=o,c=Object.keys(d);for(let e=0;e<c.length;e++){const t=c[e],n=sg([r,s],[s,l]);d[t]={angle:isNaN(n)?"Incomplete Angle":n}}e.invalidated=!1;const h=Q.ANNOTATION_MODIFIED,u={annotation:e,viewportId:i,renderingEngineId:a};return(0,J.triggerEvent)(J.eventTarget,h,u),d}}function rv(e,t){const n=e.cachedStats[t],{angle:o}=n;if(void 0!==o)return["".concat(al(o)," ").concat(String.fromCharCode(176))]}te(av,"toolName",void 0),av.toolName="Angle";const sv=av,lv=function(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];const o=2===t[0].length?[0,0]:[0,0,0],i=t.length;for(const e of t)o[0]+=e[0]/i,o[1]+=e[1]/i,3===o.length&&(o[2]+=e[2]/i);return o};class dv extends Jl{constructor(){var e;super(arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},arguments.length>1&&void 0!==arguments[1]?arguments[1]:{supportedInteractionTypes:["Mouse","Touch"],configuration:{shadow:!0,preventHandleOutsideImage:!1,getTextLines:cv}}),e=this,te(this,"touchDragCallback",void 0),te(this,"mouseDragCallback",void 0),te(this,"angleStartedNotYetCompleted",void 0),te(this,"_throttledCalculateCachedStats",void 0),te(this,"editData",void 0),te(this,"isDrawing",void 0),te(this,"isHandleOutsideImage",void 0),te(this,"addNewAnnotation",(e=>{if(this.angleStartedNotYetCompleted)return;this.angleStartedNotYetCompleted=!0;const t=e.detail,{currentPoints:n,element:o}=t,i=n.world,a=(0,J.getEnabledElement)(o),{viewport:r,renderingEngine:s}=a;Qr(o),this.isDrawing=!0;const l=r.getCamera(),{viewPlaneNormal:d,viewUp:c}=l,h=this.getReferencedImageId(r,i,d,c),u=r.getFrameOfReferenceUID(),g={highlighted:!0,invalidated:!0,metadata:{toolName:this.getToolName(),viewPlaneNormal:[...d],viewUp:[...c],FrameOfReferenceUID:u,referencedImageId:h},data:{handles:{points:[[...i],[...i]],activeHandleIndex:null,textBox:{hasMoved:!1,worldPosition:[0,0,0],worldBoundingBox:{topLeft:[0,0,0],topRight:[0,0,0],bottomLeft:[0,0,0],bottomRight:[0,0,0]}}},label:"",cachedStats:{}}};Je(g,o);const v=Bl(o,this.getToolName());return this.editData={annotation:g,viewportIdsToRender:v,handleIndex:1,movingTextBox:!1,newAnnotation:!0,hasMoved:!1},this._activateDraw(o),e.preventDefault(),Bi(s,v),g})),te(this,"isPointNearTool",((e,t,n,o)=>{const i=(0,J.getEnabledElement)(e),{viewport:a}=i,{data:r}=t,{distanceToPoint:s,distanceToPoint2:l}=this.distanceToLines({viewport:a,points:r.handles.points,canvasCoords:n,proximity:o});return s<=o||l<=o})),te(this,"toolSelectedCallback",(function(t,n,o,i){let a=arguments.length>4&&void 0!==arguments[4]?arguments[4]:6;const r=t.detail,{element:s}=r;n.highlighted=!0;const l=Bl(s,e.getToolName()),d=(0,J.getEnabledElement)(s),{renderingEngine:c,viewport:h}=d,{isNearFirstLine:u,isNearSecondLine:g}=e.distanceToLines({viewport:h,points:n.data.handles.points,canvasCoords:i,proximity:a});e.editData={annotation:n,viewportIdsToRender:l,movingTextBox:!1,isNearFirstLine:u,isNearSecondLine:g},e._activateModify(s),Qr(s),Bi(c,l),t.preventDefault()})),te(this,"_mouseUpCallback",(e=>{const t=e.detail,{element:n}=t,{annotation:o,viewportIdsToRender:i,newAnnotation:a,hasMoved:r}=this.editData,{data:s}=o;if(a&&!r)return;if(this.angleStartedNotYetCompleted&&s.handles.points.length<4)return $r(n),void(this.editData.handleIndex=s.handles.points.length);this.angleStartedNotYetCompleted=!1,s.handles.activeHandleIndex=null,this._deactivateModify(n),this._deactivateDraw(n),$r(n);const l=(0,J.getEnabledElement)(n),{renderingEngine:d}=l;if(this.isHandleOutsideImage&&this.configuration.preventHandleOutsideImage&&Qe(o.annotationUID),Bi(d,i),a){const e=Q.ANNOTATION_COMPLETED,t={annotation:o};(0,J.triggerEvent)(J.eventTarget,e,t)}this.editData=null,this.isDrawing=!1})),te(this,"_mouseDownCallback",(e=>{const{annotation:t,handleIndex:n}=this.editData,o=e.detail,{element:i,currentPoints:a}=o,r=a.world,{data:s}=t;return 1===n?(s.handles.points[1]=r,void(this.editData.hasMoved=s.handles.points[1][0]!==s.handles.points[0][0]||s.handles.points[1][1]!==s.handles.points[0][0])):3===n?(s.handles.points[3]=r,this.editData.hasMoved=s.handles.points[3][0]!==s.handles.points[2][0]||s.handles.points[3][1]!==s.handles.points[2][0],void(this.angleStartedNotYetCompleted=!1)):(this.editData.hasMoved=!1,Qr(i),s.handles.points[2]=s.handles.points[3]=r,void(this.editData.handleIndex=s.handles.points.length-1))})),te(this,"_mouseDragCallback",(e=>{this.isDrawing=!0;const t=e.detail,{element:n}=t,{annotation:o,viewportIdsToRender:i,handleIndex:a,movingTextBox:r,isNearFirstLine:s,isNearSecondLine:l}=this.editData,{data:d}=o;if(r){const{deltaPoints:e}=t,n=e.world,{textBox:o}=d.handles,{worldPosition:i}=o;i[0]+=n[0],i[1]+=n[1],i[2]+=n[2],o.hasMoved=!0}else if(void 0===a&&(s||l)){const{deltaPoints:e}=t,n=e.world,i=d.handles.points;s?[i[0],i[1]].forEach((e=>{e[0]+=n[0],e[1]+=n[1],e[2]+=n[2]})):l&&[i[2],i[3]].forEach((e=>{e[0]+=n[0],e[1]+=n[1],e[2]+=n[2]})),o.invalidated=!0}else{const{currentPoints:e}=t,n=e.world;d.handles.points[a]=[...n],o.invalidated=!0}this.editData.hasMoved=!0;const c=(0,J.getEnabledElement)(n),{renderingEngine:h}=c;Bi(h,i)})),te(this,"cancel",(e=>{if(!this.isDrawing)return;this.isDrawing=!1,this._deactivateDraw(e),this._deactivateModify(e),$r(e);const{annotation:t,viewportIdsToRender:n,newAnnotation:o}=this.editData,{data:i}=t;i.handles.points.length<4&&Qe(t.annotationUID),t.highlighted=!1,i.handles.activeHandleIndex=null;const a=(0,J.getEnabledElement)(e),{renderingEngine:r}=a;if(Bi(r,n),o){const e=Q.ANNOTATION_COMPLETED,n={annotation:t};(0,J.triggerEvent)(J.eventTarget,e,n)}return this.editData=null,this.angleStartedNotYetCompleted=!1,t.annotationUID})),te(this,"_activateModify",(e=>{He.isInteractingWithTool=!0,e.addEventListener(Q.MOUSE_UP,this._mouseUpCallback),e.addEventListener(Q.MOUSE_DRAG,this._mouseDragCallback),e.addEventListener(Q.MOUSE_CLICK,this._mouseUpCallback)})),te(this,"_deactivateModify",(e=>{He.isInteractingWithTool=!1,e.removeEventListener(Q.MOUSE_UP,this._mouseUpCallback),e.removeEventListener(Q.MOUSE_DRAG,this._mouseDragCallback),e.removeEventListener(Q.MOUSE_CLICK,this._mouseUpCallback)})),te(this,"_activateDraw",(e=>{He.isInteractingWithTool=!0,e.addEventListener(Q.MOUSE_UP,this._mouseUpCallback),e.addEventListener(Q.MOUSE_DRAG,this._mouseDragCallback),e.addEventListener(Q.MOUSE_MOVE,this._mouseDragCallback),e.addEventListener(Q.MOUSE_CLICK,this._mouseUpCallback),e.addEventListener(Q.MOUSE_DOWN,this._mouseDownCallback)})),te(this,"_deactivateDraw",(e=>{He.isInteractingWithTool=!1,e.removeEventListener(Q.MOUSE_UP,this._mouseUpCallback),e.removeEventListener(Q.MOUSE_DRAG,this._mouseDragCallback),e.removeEventListener(Q.MOUSE_MOVE,this._mouseDragCallback),e.removeEventListener(Q.MOUSE_CLICK,this._mouseUpCallback),e.removeEventListener(Q.MOUSE_DOWN,this._mouseDownCallback)})),te(this,"renderAnnotation",((e,t)=>{var n,o;let i=!1;const{viewport:a}=e,{element:r}=a;let s=Ze(this.getToolName(),r);if(null===(n=s)||void 0===n||!n.length)return i;if(s=this.filterInteractableAnnotationsForElement(r,s),null===(o=s)||void 0===o||!o.length)return i;const l=this.getTargetId(a),d=a.getRenderingEngine(),c={toolGroupId:this.toolGroupId,toolName:this.getToolName(),viewportId:e.viewport.id};for(let n=0;n<s.length;n++){var h;const o=s[n],{annotationUID:r,data:u}=o,{points:g,activeHandleIndex:v}=u.handles;c.annotationUID=r;const m=this.getStyle("lineWidth",c,o),p=this.getStyle("lineDash",c,o),f=this.getStyle("color",c,o),E=g.map((e=>a.worldToCanvas(e)));let w;if(u.cachedStats[l]&&null!=u.cachedStats[l].angle?o.invalidated&&this._throttledCalculateCachedStats(o,d,e):(u.cachedStats[l]={angle:null,arc1Angle:null,arc2Angle:null,points:{world:{arc1Start:null,arc1End:null,arc2Start:null,arc2End:null,arc1Angle:null,arc2Angle:null},canvas:{arc1Start:null,arc1End:null,arc2Start:null,arc2End:null,arc1Angle:null,arc2Angle:null}}},this._calculateCachedStats(o,d,e)),le(o)||this.editData||null===v||(w=[E[v]]),!a.getRenderingEngine())return console.warn("Rendering Engine has been destroyed"),i;w&&Ms(t,r,"0",E,{color:f,lineDash:p,lineWidth:m});const I=[E[0],E[1]],C=[E[2],E[3]];let _="line1";if(xs(t,r,_,I[0],I[1],{color:f,width:m,lineDash:p}),i=!0,E.length<4)return i;_="line2",xs(t,r,_,C[0],C[1],{color:f,width:m,lineDash:p}),_="linkLine",xs(t,r,_,lv(I[0],I[1]),lv(C[0],C[1]),{color:f,lineWidth:"1",lineDash:"1,4"});const{arc1Start:T,arc1End:b,arc2End:D,arc2Start:S}=u.cachedStats[l].points.canvas,{arc1Angle:y,arc2Angle:O}=u.cachedStats[l];if(_="arc1",xs(t,r,_,T,b,{color:f,lineWidth:"1"}),_="arc2",xs(t,r,_,S,D,{color:f,lineWidth:"1"}),null===(h=u.cachedStats[l])||void 0===h||!h.angle)continue;const M=this.getLinkedTextBoxStyle(c,o);if(!M.visibility){u.handles.textBox={hasMoved:!1,worldPosition:[0,0,0],worldBoundingBox:{topLeft:[0,0,0],topRight:[0,0,0],bottomLeft:[0,0,0],bottomRight:[0,0,0]}};continue}const x=this.configuration.getTextLines(u,l);if(!u.handles.textBox.hasMoved){const e=nd(E);u.handles.textBox.worldPosition=a.canvasToWorld(e)}const N=a.worldToCanvas(u.handles.textBox.worldPosition),k=As(t,r,"cobbAngleText",x,N,E,{},M),{x:R,y:P,width:L,height:A}=k;u.handles.textBox.worldBoundingBox={topLeft:a.canvasToWorld([R,P]),topRight:a.canvasToWorld([R+L,P]),bottomLeft:a.canvasToWorld([R,P+A]),bottomRight:a.canvasToWorld([R+L,P+A])};const U="arcAngle1",V=["".concat(y.toFixed(2)," ").concat(String.fromCharCode(176))],W=lv(T,b);Ps(t,r,U,V,W,{...M,padding:3});const F="arcAngle2",H=["".concat(O.toFixed(2)," ").concat(String.fromCharCode(176))],B=lv(S,D);Ps(t,r,F,H,B,{...M,padding:3})}return i})),te(this,"distanceToLines",(e=>{let{viewport:t,points:n,canvasCoords:o,proximity:i}=e;const[a,r,s,l]=n,d=t.worldToCanvas(a),c=t.worldToCanvas(r),h=t.worldToCanvas(s),u=t.worldToCanvas(l),g={start:{x:d[0],y:d[1]},end:{x:c[0],y:c[1]}},v={start:{x:h[0],y:h[1]},end:{x:u[0],y:u[1]}},m=ed([g.start.x,g.start.y],[g.end.x,g.end.y],[o[0],o[1]]),p=ed([v.start.x,v.start.y],[v.end.x,v.end.y],[o[0],o[1]]);let f=!1,E=!1;return m<=i?f=!0:p<=i&&(E=!0),{distanceToPoint:m,distanceToPoint2:p,isNearFirstLine:f,isNearSecondLine:E}})),te(this,"getArcsStartEndPoints",(e=>{let{firstLine:t,secondLine:n,mid1:o,mid2:i}=e;const a=[o,i],r=sg(t,a),s=sg(n,a),l=r>90?1:0,d=s>90?0:1,c=lv(a[0],a[1]),h=Math.sqrt((a[1][0]-a[0][0])**2+(a[1][1]-a[0][1])**2),u=.1,g=lv(t[0],t[1]),v=lv(n[0],n[1]),m=[t[l][0]-g[0],t[l][1]-g[1]],p=Math.sqrt(m[0]**2+m[1]**2),f=[m[0]/p,m[1]/p],E=[g[0]+f[0]*h*u,g[1]+f[1]*h*u],w=[c[0]-o[0],c[1]-o[1]],I=Math.sqrt(w[0]**2+w[1]**2),C=[w[0]/I,w[1]/I],_=[o[0]+C[0]*h*u,o[1]+C[1]*h*u],T=[n[d][0]-v[0],n[d][1]-v[1]],b=Math.sqrt(T[0]**2+T[1]**2),D=[T[0]/b,T[1]/b],S=[v[0]+D[0]*h*u,v[1]+D[1]*h*u],y=[c[0]-i[0],c[1]-i[1]],O=Math.sqrt(y[0]**2+y[1]**2),M=[y[0]/O,y[1]/O];return{arc1Start:E,arc1End:_,arc2Start:S,arc2End:[i[0]+M[0]*h*u,i[1]+M[1]*h*u],arc1Angle:r>90?180-r:r,arc2Angle:s>90?180-s:s}})),this._throttledCalculateCachedStats=js(this._calculateCachedStats,25,{trailing:!0})}handleSelectedCallback(e,t,n){const o=e.detail,{element:i}=o,{data:a}=t;t.highlighted=!0;let r,s=!1;n.worldPosition?s=!0:r=a.handles.points.findIndex((e=>e===n));const l=Bl(i,this.getToolName());this.editData={annotation:t,viewportIdsToRender:l,handleIndex:r,movingTextBox:s},this._activateModify(i),Qr(i);const d=(0,J.getEnabledElement)(i),{renderingEngine:c}=d;Bi(c,l),e.preventDefault()}_calculateCachedStats(e,t,n){const o=e.data,{viewportId:i,renderingEngineId:a}=n;if(4!==o.handles.points.length)return;const r=[null,null],s=[null,null];let l=Number.MAX_VALUE;for(let e=0;e<2;e+=1)for(let t=2;t<4;t+=1){const n=ps.vec3.distance(o.handles.points[e],o.handles.points[t]);n<l&&(l=n,r[1]=o.handles.points[e],r[0]=o.handles.points[(e+1)%2],s[0]=o.handles.points[t],s[1]=o.handles.points[2+(t-1)%2])}const{viewport:d}=n,c=o.handles.points.map((e=>d.worldToCanvas(e))),h=[c[0],c[1]],u=[c[2],c[3]],g=lv(h[0],h[1]),v=lv(u[0],u[1]),{arc1Start:m,arc1End:p,arc2End:f,arc2Start:E,arc1Angle:w,arc2Angle:I}=this.getArcsStartEndPoints({firstLine:h,secondLine:u,mid1:g,mid2:v}),{cachedStats:C}=o,_=Object.keys(C);for(let e=0;e<_.length;e++)C[_[e]]={angle:sg(r,s),arc1Angle:w,arc2Angle:I,points:{canvas:{arc1Start:m,arc1End:p,arc2End:f,arc2Start:E},world:{arc1Start:d.canvasToWorld(m),arc1End:d.canvasToWorld(p),arc2End:d.canvasToWorld(f),arc2Start:d.canvasToWorld(E)}}};e.invalidated=!1;const T=Q.ANNOTATION_MODIFIED,b={annotation:e,viewportId:i,renderingEngineId:a};return(0,J.triggerEvent)(J.eventTarget,T,b),C}}function cv(e,t){const n=e.cachedStats[t],{angle:o}=n;if(void 0!==o)return["".concat(o.toFixed(2)," ").concat(String.fromCharCode(176))]}te(dv,"toolName",void 0),dv.toolName="CobbAngle";const hv=dv,uv="magnify-viewport";class gv extends la{constructor(){super(arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},arguments.length>1&&void 0!==arguments[1]?arguments[1]:{supportedInteractionTypes:["Mouse","Touch"],configuration:{magnifySize:10,magnifyWidth:250,magnifyHeight:250}}),te(this,"_bounds",void 0),te(this,"editData",void 0),te(this,"preMouseDownCallback",(e=>{const t=e.detail,{element:n,currentPoints:o}=t,i=(0,J.getEnabledElement)(n),{viewport:a,renderingEngine:r}=i;if(!(a instanceof J.StackViewport))throw new Error("MagnifyTool only works on StackViewports");const s=this._getReferencedImageId(a);if(!s)throw new Error("MagnifyTool: No referenced image id found, reconstructed planes not supported yet");const l=Bl(n,this.getToolName());return this.editData={referencedImageId:s,viewportIdsToRender:l,enabledElement:i,renderingEngine:r,currentPoints:o},this._createMagnificationViewport(),this._activateDraw(n),Qr(n),e.preventDefault(),Bi(r,l),!0})),te(this,"preTouchStartCallback",(e=>{this.preMouseDownCallback(e)})),te(this,"_createMagnificationViewport",(()=>{const{enabledElement:e,referencedImageId:t,viewportIdsToRender:n,renderingEngine:o,currentPoints:i}=this.editData,{viewport:a}=e,{element:r}=a,s=a.getProperties(),{canvas:l,world:d}=i;let c;if(c=r.querySelector(".magnifyTool"),null===c){const e=document.createElement("div");e.classList.add("magnifyTool"),e.style.display="block",e.style.width="".concat(this.configuration.magnifyWidth,"px"),e.style.height="".concat(this.configuration.magnifyHeight,"px"),e.style.position="absolute",c=e,r.querySelector(".viewport-element").appendChild(e);const t={viewportId:uv,type:J.Enums.ViewportType.STACK,element:c};o.enableElement(t)}c.style.top="".concat(l[1]-this.configuration.magnifyHeight/2,"px"),c.style.left="".concat(l[0]-this.configuration.magnifyWidth/2,"px");const h=o.getViewport(uv);h.setStack([t]).then((()=>{h.setProperties(s);const{parallelScale:e}=a.getCamera(),{focalPoint:t,position:n,viewPlaneNormal:o}=h.getCamera(),i=Math.sqrt(Math.pow(t[0]-n[0],2)+Math.pow(t[1]-n[1],2)+Math.pow(t[2]-n[2],2)),r=[d[0],d[1],d[2]],l=[r[0]+i*o[0],r[1]+i*o[1],r[2]+i*o[2]];h.setCamera({parallelScale:e*(1/this.configuration.magnifySize),focalPoint:r,position:l}),h.render()})),c.style.display="block",Bi(o,n)})),te(this,"_dragCallback",(e=>{const t=e.detail,{deltaPoints:n,element:o,currentPoints:i}=t,a=n.world,r=i.canvas,s=(0,J.getEnabledElement)(o),{renderingEngine:l}=s,d=l.getViewport(uv),c=o.querySelector(".magnifyTool");if(!c)return;c.style.top="".concat(r[1]-this.configuration.magnifyHeight/2,"px"),c.style.left="".concat(r[0]-this.configuration.magnifyWidth/2,"px");const{focalPoint:h,position:u}=d.getCamera(),g=[u[0]+a[0],u[1]+a[1],u[2]+a[2]],v=[h[0]+a[0],h[1]+a[1],h[2]+a[2]];d.setCamera({focalPoint:v,position:g}),d.render()})),te(this,"_dragEndCallback",(e=>{const{element:t}=e.detail,n=(0,J.getEnabledElement)(t),{renderingEngine:o}=n;o.disableElement(uv);const i=t.querySelector(".viewport-element"),a=i.querySelector(".magnifyTool");i.removeChild(a),this._deactivateDraw(t),$r(t)})),te(this,"_activateDraw",(e=>{He.isInteractingWithTool=!0,e.addEventListener(Q.MOUSE_UP,this._dragEndCallback),e.addEventListener(Q.MOUSE_DRAG,this._dragCallback),e.addEventListener(Q.MOUSE_CLICK,this._dragEndCallback),e.addEventListener(Q.TOUCH_END,this._dragEndCallback),e.addEventListener(Q.TOUCH_DRAG,this._dragCallback)})),te(this,"_deactivateDraw",(e=>{He.isInteractingWithTool=!1,e.removeEventListener(Q.MOUSE_UP,this._dragEndCallback),e.removeEventListener(Q.MOUSE_DRAG,this._dragCallback),e.removeEventListener(Q.MOUSE_CLICK,this._dragEndCallback),e.removeEventListener(Q.TOUCH_END,this._dragEndCallback),e.removeEventListener(Q.TOUCH_DRAG,this._dragCallback)}))}_getReferencedImageId(e){const t=this.getTargetId(e);let n;return e instanceof J.StackViewport&&(n=t.split("imageId:")[1]),n}}te(gv,"toolName",void 0),gv.toolName="Magnify";const vv=gv,mv=125,pv=e=>e.uid!==e.referenceId;class fv{constructor(e){let{magnifyViewportId:t,sourceEnabledElement:n,radius:o=mv,position:i=[0,0],zoomFactor:a,autoPan:r}=e;te(this,"_viewportId",void 0),te(this,"_sourceEnabledElement",void 0),te(this,"_enabledElement",null),te(this,"_sourceToolGroup",null),te(this,"_magnifyToolGroup",null),te(this,"_isViewportReady",!1),te(this,"_radius",0),te(this,"_resized",!1),te(this,"_resizeViewportAsync",void 0),te(this,"_canAutoPan",!1),te(this,"_autoPan",void 0),te(this,"position",void 0),te(this,"zoomFactor",void 0),te(this,"visible",void 0),this._viewportId=null!=t?t:J.utilities.uuidv4(),this._sourceEnabledElement=n,this._autoPan=r,this.radius=o,this.position=i,this.zoomFactor=a,this.visible=!0,this._browserMouseDownCallback=this._browserMouseDownCallback.bind(this),this._browserMouseUpCallback=this._browserMouseUpCallback.bind(this),this._handleToolModeChanged=this._handleToolModeChanged.bind(this),this._mouseDragCallback=this._mouseDragCallback.bind(this),this._resizeViewportAsync=qs(this._resizeViewport.bind(this),1),this._initialize()}get sourceEnabledElement(){return this._sourceEnabledElement}get viewportId(){return this._viewportId}get radius(){return this._radius}set radius(e){Math.abs(this._radius-e)>1e-5&&(this._radius=e,this._resized=!0)}update(){const{radius:e,position:t,visible:n}=this,{viewport:o}=this._enabledElement,{element:i}=o,a=2*e,[r,s]=t;this._resized&&(this._resizeViewportAsync(),this._resized=!1),Object.assign(i.style,{display:n?"block":"hidden",width:"".concat(a,"px"),height:"".concat(a,"px"),left:"".concat(-e,"px"),top:"".concat(-e,"px"),transform:"translate(".concat(r,"px, ").concat(s,"px)")}),this._isViewportReady&&(this._syncViewports(),o.render())}dispose(){const{viewport:e}=this._enabledElement,{element:t}=e,n=e.getRenderingEngine();this._removeEventListeners(t),n.disableElement(e.id),t.parentNode&&t.parentNode.removeChild(t)}_handleToolModeChanged(e){var t;const{_magnifyToolGroup:n}=this,{toolGroupId:o,toolName:i,mode:a,toolBindingsOptions:r}=e.detail;if((null===(t=this._sourceToolGroup)||void 0===t?void 0:t.id)===o)switch(a){case Ge.Active:n.setToolActive(i,r);break;case Ge.Passive:n.setToolPassive(i);break;case Ge.Enabled:n.setToolEnabled(i);break;case Ge.Disabled:n.setToolDisabled(i);break;default:throw new Error("Unknow tool mode (".concat(a,")"))}}_inheritBorderRadius(e){const t=e.querySelector(".viewport-element"),n=e.querySelector(".cornerstone-canvas");t.style.borderRadius="inherit",n.style.borderRadius="inherit"}_createViewportNode(){const e=document.createElement("div"),{radius:t}=this,n=2*t;return e.classList.add("advancedMagnifyTool"),Object.assign(e.style,{display:"block",width:"".concat(n,"px"),height:"".concat(n,"px"),position:"absolute",overflow:"hidden",borderRadius:"50%",boxSizing:"border-box",left:"".concat(-t,"px"),top:"".concat(-t,"px"),transform:"translate(-1000px, -1000px)"}),e}_convertZoomFactorToParalellScale(e,t,n){const{parallelScale:o}=e.getCamera();return o*(1/n)*(t.canvas.offsetWidth/e.canvas.offsetWidth)}_isStackViewport(e){return"setStack"in e}_isVolumeViewport(e){return"addVolumes"in e}_cloneToolGroups(e,t){const n=e.getActors(),o="".concat(t.id,"-toolGroup"),i=yo(e.id,e.renderingEngineId),a=i.clone(o,(e=>{const t=i.getToolInstance(e);return t instanceof Jl&&!(t instanceof Cv)||e===Ya.toolName}));return a.addViewport(t.id,t.renderingEngineId),n.filter(pv).forEach((e=>{Gu(o,[{segmentationId:e.referenceId,type:it.Labelmap}])})),{sourceToolGroup:i,magnifyToolGroup:a}}_cloneStack(e,t){const n=e.getImageIds();t.setStack(n).then((()=>{this._isViewportReady=!0,this.update()}))}_cloneVolumes(e,t){const n=e.getActors().filter((e=>!pv(e))).map((e=>({volumeId:e.uid})));return t.setVolumes(n).then((()=>{this._isViewportReady=!0,this.update()})),t}_cloneViewport(e,t){const{viewportId:n}=this,o=e.getRenderingEngine(),{options:i}=e,a={element:t,viewportId:n,type:e.type,defaultOptions:{...i}};o.enableElement(a);const r=o.getViewport(n);this._isStackViewport(e)?this._cloneStack(e,r):this._isVolumeViewport(e)&&this._cloneVolumes(e,r),this._inheritBorderRadius(t);const s=this._cloneToolGroups(e,r);this._sourceToolGroup=s.sourceToolGroup,this._magnifyToolGroup=s.magnifyToolGroup}_cancelMouseEventCallback(e){e.stopPropagation(),e.preventDefault()}_browserMouseUpCallback(e){const{element:t}=this._enabledElement.viewport;document.removeEventListener("mouseup",this._browserMouseUpCallback),t.addEventListener("mouseup",this._cancelMouseEventCallback),t.addEventListener("mousemove",this._cancelMouseEventCallback)}_browserMouseDownCallback(e){var t;const{element:n}=this._enabledElement.viewport;this._canAutoPan=!(null===(t=e.target)||void 0===t||!t.closest(".advancedMagnifyTool")),document.addEventListener("mouseup",this._browserMouseUpCallback),n.removeEventListener("mouseup",this._cancelMouseEventCallback),n.removeEventListener("mousemove",this._cancelMouseEventCallback)}_mouseDragCallback(e){if(!He.isInteractingWithTool)return;const{_autoPan:t}=this;if(!t.enabled||!this._canAutoPan)return;const{currentPoints:n}=e.detail,{viewport:o}=this._enabledElement,{canvasToWorld:i}=o,{canvas:a}=n,{radius:r}=this,s=[r,r],l=ec(s,a),d=r-t.padding;if(l<=d)return;const c=l-d,h=ps.vec2.sub(ps.vec2.create(),a,s);ps.vec2.normalize(h,h),ps.vec2.scale(h,h,c);const u=ps.vec2.add(ps.vec2.create(),this.position,h),g=i(this.position),v=i(u),m=ps.vec3.sub(ps.vec3.create(),v,g),p={points:{currentPosition:{canvas:this.position,world:g},newPosition:{canvas:u,world:v}},delta:{canvas:h,world:m}};t.callback(p)}_addBrowserEventListeners(e){document.addEventListener("mousedown",this._browserMouseDownCallback,!0),e.addEventListener("mousedown",this._cancelMouseEventCallback),e.addEventListener("mouseup",this._cancelMouseEventCallback),e.addEventListener("mousemove",this._cancelMouseEventCallback),e.addEventListener("dblclick",this._cancelMouseEventCallback)}_removeBrowserEventListeners(e){document.removeEventListener("mousedown",this._browserMouseDownCallback,!0),document.removeEventListener("mouseup",this._browserMouseUpCallback),e.removeEventListener("mousedown",this._cancelMouseEventCallback),e.removeEventListener("mouseup",this._cancelMouseEventCallback),e.removeEventListener("mousemove",this._cancelMouseEventCallback),e.removeEventListener("dblclick",this._cancelMouseEventCallback)}_addEventListeners(e){J.eventTarget.addEventListener(Q.TOOL_MODE_CHANGED,this._handleToolModeChanged),e.addEventListener(Q.MOUSE_MOVE,this._mouseDragCallback),e.addEventListener(Q.MOUSE_DRAG,this._mouseDragCallback),this._addBrowserEventListeners(e)}_removeEventListeners(e){J.eventTarget.removeEventListener(Q.TOOL_MODE_CHANGED,this._handleToolModeChanged),e.addEventListener(Q.MOUSE_MOVE,this._mouseDragCallback),e.addEventListener(Q.MOUSE_DRAG,this._mouseDragCallback),this._removeBrowserEventListeners(e)}_initialize(){const{_sourceEnabledElement:e}=this,{viewport:t}=e,{canvas:n}=t,o=this._createViewportNode();n.parentNode.appendChild(o),this._addEventListeners(o),this._cloneViewport(t,o),this._enabledElement=(0,J.getEnabledElement)(o)}_syncViewportsCameras(e,t){const n=e.canvasToWorld(this.position),o=this._convertZoomFactorToParalellScale(e,t,this.zoomFactor),{focalPoint:i,position:a,viewPlaneNormal:r}=t.getCamera(),s=Math.sqrt(Math.pow(i[0]-a[0],2)+Math.pow(i[1]-a[1],2)+Math.pow(i[2]-a[2],2)),l=[n[0],n[1],n[2]],d=[l[0]+s*r[0],l[1]+s*r[1],l[2]+s*r[2]];t.setCamera({parallelScale:o,focalPoint:l,position:d})}_syncStackViewports(e,t){t.setImageIdIndex(e.getCurrentImageIdIndex())}_syncViewports(){const{viewport:e}=this._sourceEnabledElement,{viewport:t}=this._enabledElement,n=e.getProperties();t.setProperties(n),this._syncViewportsCameras(e,t),this._isStackViewport(e)&&this._syncStackViewports(e,t)}_resizeViewport(){const{viewport:e}=this._enabledElement;e.getRenderingEngine().resize()}}const Ev=1-J.CONSTANTS.EPSILON,{Events:wv}=J.Enums;class Iv{constructor(){te(this,"_magnifyViewportsMap",void 0),te(this,"createViewport",((e,t)=>{const{magnifyViewportId:n,sourceEnabledElement:o,position:i,radius:a,zoomFactor:r,autoPan:s}=t,{viewport:l}=o,{element:d}=l,c=new fv({magnifyViewportId:n,sourceEnabledElement:o,radius:a,position:i,zoomFactor:r,autoPan:s});return this._addSourceElementEventListener(d),this._magnifyViewportsMap.set(c.viewportId,{annotation:e,magnifyViewport:c}),c})),te(this,"_annotationRemovedCallback",(e=>{const{annotation:t}=e.detail;"AdvancedMagnify"===t.metadata.toolName&&this._destroyViewport(t.data.magnifyViewportId)})),te(this,"_newStackImageCallback",(e=>{const{viewportId:t,imageId:n}=e.detail;this._getMagnifyViewportsMapEntriesBySourceViewportId(t).forEach((e=>{let{annotation:t}=e;t.metadata.referencedImageId=n,t.invalidated=!0}))})),te(this,"_newVolumeImageCallback",(e=>{const{renderingEngineId:t,viewportId:n}=e.detail,o=(0,J.getRenderingEngine)(t).getViewport(n),{viewPlaneNormal:i}=o.getCamera();this._getMagnifyViewportsMapEntriesBySourceViewportId(n).forEach((e=>{let{annotation:t}=e;const{viewPlaneNormal:n}=t.metadata;if(!(Math.abs(ps.vec3.dot(n,i))>Ev))return;const{handles:a}=t.data,r=o.canvasToWorld([0,0]),s=ps.vec3.sub(ps.vec3.create(),r,a.points[0]),l=ps.vec3.dot(s,i),d=ps.vec3.scale(ps.vec3.create(),i,l);for(let e=0,t=a.points.length;e<t;e++){const t=a.points[e];t[0]+=d[0],t[1]+=d[1],t[2]+=d[2]}t.invalidated=!0}))})),this._magnifyViewportsMap=new Map,this._initialize()}static getInstance(){var e;return Iv._singleton=null!==(e=Iv._singleton)&&void 0!==e?e:new Iv,Iv._singleton}getViewport(e){var t;return null===(t=this._magnifyViewportsMap.get(e))||void 0===t?void 0:t.magnifyViewport}dispose(){this._removeEventListeners(),this._destroyViewports()}_destroyViewport(e){const t=this._magnifyViewportsMap.get(e);if(t){const{magnifyViewport:n}=t,{viewport:o}=n.sourceEnabledElement,{element:i}=o;this._removeSourceElementEventListener(i),n.dispose(),this._magnifyViewportsMap.delete(e)}}_destroyViewports(){Array.from(this._magnifyViewportsMap.keys()).forEach((e=>this._destroyViewport(e)))}_getMagnifyViewportsMapEntriesBySourceViewportId(e){return Array.from(this._magnifyViewportsMap.values()).filter((t=>{let{magnifyViewport:n}=t;const{viewport:o}=n.sourceEnabledElement;return o.id===e}))}_addEventListeners(){J.eventTarget.addEventListener(Q.ANNOTATION_REMOVED,this._annotationRemovedCallback)}_removeEventListeners(){J.eventTarget.removeEventListener(Q.ANNOTATION_REMOVED,this._annotationRemovedCallback)}_addSourceElementEventListener(e){e.addEventListener(wv.STACK_NEW_IMAGE,this._newStackImageCallback),e.addEventListener(wv.VOLUME_NEW_IMAGE,this._newVolumeImageCallback)}_removeSourceElementEventListener(e){e.removeEventListener(wv.STACK_NEW_IMAGE,this._newStackImageCallback),e.removeEventListener(wv.VOLUME_NEW_IMAGE,this._newVolumeImageCallback)}_initialize(){this._addEventListeners()}}te(Iv,"_singleton",void 0);class Cv extends Jl{constructor(){super(arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},arguments.length>1&&void 0!==arguments[1]?arguments[1]:{supportedInteractionTypes:["Mouse","Touch"],configuration:{shadow:!0,magnifyingGlass:{radius:125,zoomFactor:2.5,zoomFactorList:[2.5,3,3.5,4,4.5,5],autoPan:{enabled:!0,padding:10}},actions:[{method:"showZoomFactorsList",bindings:[{mouseButton:Qo.Secondary,modifierKey:ei.Shift}]}]}}),te(this,"magnifyViewportManager",void 0),te(this,"touchDragCallback",void 0),te(this,"mouseDragCallback",void 0),te(this,"editData",void 0),te(this,"isDrawing",void 0),te(this,"addNewAnnotation",(e=>{const t=e.detail,{currentPoints:n,element:o}=t,i=(0,J.getEnabledElement)(o),{viewport:a,renderingEngine:r}=i,s=n.world,l=n.canvas,{magnifyingGlass:d}=this.configuration,{radius:c,zoomFactor:h,autoPan:u}=d,g=this._getWorldHandlesPoints(a,l,c),v=a.getCamera(),{viewPlaneNormal:m,viewUp:p}=v,f=this.getReferencedImageId(a,s,m,p),E=J.utilities.uuidv4(),w=J.utilities.uuidv4(),I=a.getFrameOfReferenceUID(),C={annotationUID:E,highlighted:!0,invalidated:!0,metadata:{toolName:this.getToolName(),viewPlaneNormal:[...m],viewUp:[...p],FrameOfReferenceUID:I,referencedImageId:f},data:{sourceViewportId:a.id,magnifyViewportId:w,zoomFactor:h,handles:{points:g,activeHandleIndex:null}}};this.magnifyViewportManager.createViewport(C,{magnifyViewportId:w,sourceEnabledElement:i,position:l,radius:c,zoomFactor:h,autoPan:{enabled:u.enabled,padding:u.padding,callback:e=>{const t=C.data.handles.points,{world:n}=e.delta;for(let e=0,o=t.length;e<o;e++)t[e][0]+=n[0],t[e][1]+=n[1],t[e][2]+=n[2]}}}),Je(C,o);const _=Bl(o,this.getToolName());return e.preventDefault(),Bi(r,_),C})),te(this,"isPointNearTool",((e,t,n,o)=>{const i=(0,J.getEnabledElement)(e),{viewport:a}=i,{data:r}=t,{points:s}=r.handles,l=s.map((e=>a.worldToCanvas(e))),d=l[0],c=l[2],h=l[3],u=.5*Math.abs(c[1]-d[1]),g=jg([[h[0]+u,d[1]+u],n]);return Math.abs(g-u)<1.5*o})),te(this,"toolSelectedCallback",((e,t)=>{const n=e.detail,{element:o}=n;t.highlighted=!0;const i=Bl(o,this.getToolName());this.editData={annotation:t,viewportIdsToRender:i},Qr(o),this._activateModify(o);const a=(0,J.getEnabledElement)(o),{renderingEngine:r}=a;Bi(r,i),e.preventDefault()})),te(this,"handleSelectedCallback",((e,t,n)=>{const o=e.detail,{element:i}=o,{data:a}=t;t.highlighted=!0;const{points:r}=a.handles,s=r.findIndex((e=>e===n)),l=Bl(i,this.getToolName());this.editData={annotation:t,viewportIdsToRender:l,handleIndex:s},this._activateModify(i),Qr(i);const d=(0,J.getEnabledElement)(i),{renderingEngine:c}=d;Bi(c,l),e.preventDefault()})),te(this,"_endCallback",(e=>{const t=e.detail,{element:n}=t,{annotation:o,viewportIdsToRender:i,newAnnotation:a}=this.editData,{data:r}=o;r.handles.activeHandleIndex=null,this._deactivateModify(n),$r(n);const s=(0,J.getEnabledElement)(n),{renderingEngine:l}=s;if(this.editData=null,this.isDrawing=!1,Bi(l,i),a){const e=Q.ANNOTATION_COMPLETED,t={annotation:o};(0,J.triggerEvent)(J.eventTarget,e,t)}})),te(this,"_dragDrawCallback",(e=>{var t;this.isDrawing=!0;const n=e.detail,{element:o,deltaPoints:i}=n,a=null!==(t=null==i?void 0:i.world)&&void 0!==t?t:[0,0,0],r=(0,J.getEnabledElement)(o),{renderingEngine:s}=r,{annotation:l,viewportIdsToRender:d}=this.editData,{points:c}=l.data.handles;c.forEach((e=>{e[0]+=a[0],e[1]+=a[1],e[2]+=a[2]})),l.invalidated=!0,this.editData.hasMoved=!0,Bi(s,d)})),te(this,"_dragModifyCallback",(e=>{this.isDrawing=!0;const t=e.detail,{element:n}=t,{annotation:o,viewportIdsToRender:i,handleIndex:a}=this.editData,{data:r}=o;if(void 0===a){const{deltaPoints:e}=t,n=e.world;r.handles.points.forEach((e=>{e[0]+=n[0],e[1]+=n[1],e[2]+=n[2]})),o.invalidated=!0}else this._dragHandle(e),o.invalidated=!0;const s=(0,J.getEnabledElement)(n),{renderingEngine:l}=s;Bi(l,i)})),te(this,"_dragHandle",(e=>{const t=e.detail,{element:n}=t,o=(0,J.getEnabledElement)(n),{viewport:i}=o,{worldToCanvas:a}=i,{annotation:r}=this.editData,{data:s}=r,{points:l}=s.handles,d=l.map((e=>a(e))),c=d[0],h=d[2],u=d[3],g=.5*Math.abs(h[1]-c[1]),v=[u[0]+g,c[1]+g],{currentPoints:m}=t,p=jg([v,m.canvas]),f=this._getWorldHandlesPoints(i,v,p);l[0]=f[0],l[1]=f[1],l[2]=f[2],l[3]=f[3]})),te(this,"cancel",(e=>{if(!this.isDrawing)return;this.isDrawing=!1,this._deactivateModify(e),$r(e);const{annotation:t,viewportIdsToRender:n,newAnnotation:o}=this.editData,{data:i}=t;t.highlighted=!1,i.handles.activeHandleIndex=null;const a=(0,J.getEnabledElement)(e),{renderingEngine:r}=a;if(Bi(r,n),o){const e=Q.ANNOTATION_COMPLETED,n={annotation:t};(0,J.triggerEvent)(J.eventTarget,e,n)}return this.editData=null,t.annotationUID})),te(this,"_activateModify",(e=>{He.isInteractingWithTool=!0,e.addEventListener(Q.MOUSE_UP,this._endCallback),e.addEventListener(Q.MOUSE_DRAG,this._dragModifyCallback),e.addEventListener(Q.MOUSE_CLICK,this._endCallback),e.addEventListener(Q.TOUCH_END,this._endCallback),e.addEventListener(Q.TOUCH_DRAG,this._dragModifyCallback),e.addEventListener(Q.TOUCH_TAP,this._endCallback)})),te(this,"_deactivateModify",(e=>{He.isInteractingWithTool=!1,e.removeEventListener(Q.MOUSE_UP,this._endCallback),e.removeEventListener(Q.MOUSE_DRAG,this._dragModifyCallback),e.removeEventListener(Q.MOUSE_CLICK,this._endCallback),e.removeEventListener(Q.TOUCH_END,this._endCallback),e.removeEventListener(Q.TOUCH_DRAG,this._dragModifyCallback),e.removeEventListener(Q.TOUCH_TAP,this._endCallback)})),te(this,"renderAnnotation",((e,t)=>{var n,o,i;let a=!1;const{viewport:r}=e,{element:s}=r;let l=Ze(this.getToolName(),s);if(null===(n=l)||void 0===n||!n.length)return a;if(l=this.filterInteractableAnnotationsForElement(s,l),l=null===(o=l)||void 0===o?void 0:o.filter((e=>e.data.sourceViewportId===r.id)),null===(i=l)||void 0===i||!i.length)return a;const d={toolGroupId:this.toolGroupId,toolName:this.getToolName(),viewportId:e.viewport.id};for(let e=0;e<l.length;e++){const n=l[e],{annotationUID:o,data:i}=n,{magnifyViewportId:s,zoomFactor:c,handles:h}=i,{points:u,activeHandleIndex:g}=h;d.annotationUID=o;const v=this.getStyle("lineWidth",d,n),m=this.getStyle("lineDash",d,n),p=this.getStyle("color",d,n),f=u.map((e=>r.worldToCanvas(e))),E=f[0],w=f[2],I=f[3],C=.5*Math.abs(w[1]-E[1]),_=[I[0]+C,E[1]+C];if(!r.getRenderingEngine())return console.warn("Rendering Engine has been destroyed"),a;let T;if(!Me(o))continue;le(n)||this.editData||null===g||(T=[f[g]]),T&&Ms(t,o,"0",T,{color:p});const b="".concat(o,"-advancedMagnify");ys(t,o,"0",_,C,{color:p,lineDash:m,lineWidth:v},b);const D=this.magnifyViewportManager.getViewport(s);D.position=_,D.radius=C,D.zoomFactor=c,D.update(),a=!0}return a})),te(this,"_getWorldHandlesPoints",((e,t,n)=>[[t[0],t[1]-n],[t[0]+n,t[1]],[t[0],t[1]+n],[t[0]-n,t[1]]].map((t=>e.canvasToWorld(t))))),this.magnifyViewportManager=Iv.getInstance()}showZoomFactorsList(e,t){const{element:n,currentPoints:o}=e.detail,i=(0,J.getEnabledElement)(n),{viewport:a}=i,{canvas:r}=o,s=n.querySelector(":scope .viewport-element"),l=t.data.zoomFactor,d=this._getZoomFactorsListDropdown(l,(e=>{void 0!==e&&(t.data.zoomFactor=Number.parseFloat(e),t.invalidated=!0),d.parentElement.removeChild(d),a.render()}));Object.assign(d.style,{left:"".concat(r[0],"px"),top:"".concat(r[1],"px")}),s.appendChild(d),d.focus()}_getZoomFactorsListDropdown(e,t){const{zoomFactorList:n}=this.configuration.magnifyingGlass,o=document.createElement("select");return o.size=5,Object.assign(o.style,{width:"50px",position:"absolute"}),["mousedown","mouseup","mousemove","click"].forEach((e=>{o.addEventListener(e,(e=>e.stopPropagation()))})),o.addEventListener("change",(e=>{e.stopPropagation(),t(o.value)})),o.addEventListener("keydown",(e=>{var n,o;((null!==(n=e.keyCode)&&void 0!==n?n:27===e.which)||"escape"===(null===(o=e.key)||void 0===o?void 0:o.toLowerCase()))&&(e.stopPropagation(),t())})),n.forEach((t=>{const n=document.createElement("option");n.label=t,n.title="Zoom factor ".concat(t.toFixed(1)),n.value=t,n.defaultSelected=t===e,o.add(n)})),o}}te(Cv,"toolName",void 0),Cv.toolName="AdvancedMagnify";class _v extends Xl{constructor(){super(arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},arguments.length>1&&void 0!==arguments[1]?arguments[1]:{supportedInteractionTypes:["Mouse","Touch"],configuration:{shadow:!0,preventHandleOutsideImage:!1,displayThreshold:5,positionSync:!0,disableCursor:!1}}),te(this,"touchDragCallback",void 0),te(this,"mouseDragCallback",void 0),te(this,"_throttledCalculateCachedStats",void 0),te(this,"isDrawing",!1),te(this,"isHandleOutsideImage",!1),te(this,"_elementWithCursor",null),te(this,"_currentCursorWorldPosition",null),te(this,"_currentCanvasPosition",null),te(this,"_disableCursorEnabled",!1),te(this,"mouseMoveCallback",(e=>{const{detail:t}=e,{element:n,currentPoints:o}=t;this._currentCursorWorldPosition=o.world,this._currentCanvasPosition=o.canvas,this._elementWithCursor=n;const i=this.getActiveAnnotation(n);return null===i?(this.createInitialAnnotation(o.world,n),!1):(this.updateAnnotationPosition(n,i),!1)})),te(this,"createInitialAnnotation",((e,t)=>{const n=(0,J.getEnabledElement)(t);if(!n)throw new Error("No enabled element found");const{viewport:o,renderingEngine:i}=n;this.isDrawing=!0;const a=o.getCamera(),{viewPlaneNormal:r,viewUp:s}=a;if(!r||!s)throw new Error("Camera not found");const l=this.getReferencedImageId(o,e,r,s),d=o.getFrameOfReferenceUID(),c={highlighted:!0,invalidated:!0,metadata:{toolName:this.getToolName(),viewPlaneNormal:[...r],viewUp:[...s],FrameOfReferenceUID:d,referencedImageId:l},data:{label:"",handles:{points:[[...e]],activeHandleIndex:null,textBox:{hasMoved:!1,worldPosition:[0,0,0],worldBoundingBox:{topLeft:[0,0,0],topRight:[0,0,0],bottomLeft:[0,0,0],bottomRight:[0,0,0]}}}}};if(Ze(this.getToolName(),t).length>0)return null;if(null===Je(c,t))return;const h=Bl(t,this.getToolName(),!1);Bi(i,h)})),te(this,"onCameraModified",(e=>{const t=e.detail,{element:n,previousCamera:o,camera:i}=t,a=(0,J.getEnabledElement)(n).viewport;if(n!==this._elementWithCursor)return;const r=o.focalPoint,s=i.viewPlaneNormal,l=i.focalPoint,d=[0,0,0];if(nc().subtract(l,r,d),0===d.reduce(((e,t)=>e+t),0))return;const c=nc().dot(d,s);if(Math.abs(c)<.01)return;if(!this._currentCanvasPosition)return;const h=a.canvasToWorld(this._currentCanvasPosition);this._currentCursorWorldPosition=h,this.updateAnnotationPosition(n,this.getActiveAnnotation(n))})),te(this,"renderAnnotation",((e,t)=>{var n,o;let i=!1;const{viewport:a,FrameOfReferenceUID:r}=e,s=this._elementWithCursor===a.element;this.configuration.positionSync&&!s&&this.updateViewportImage(a);const{element:l}=a;let d=Ze(this.getToolName(),l);if(null===(n=d)||void 0===n||!n.length)return i;if(d=this.filterInteractableAnnotationsForElement(l,d),null===(o=d)||void 0===o||!o.length)return i;const c={toolGroupId:this.toolGroupId,toolName:this.getToolName(),viewportId:e.viewport.id};for(let e=0;e<d.length;e++){const n=d[e],{annotationUID:o,data:r}=n,{handles:l}=r,{points:h}=l;if(!o)return i;c.annotationUID=o;const u=parseFloat(this.getStyle("lineWidth",c,n)),g=this.getStyle("lineDash",c,n),v=this.getStyle("color",c,n);if(h[0].some((e=>isNaN(e))))return i;const m=h.map((e=>a.worldToCanvas(e)));if(!a.getRenderingEngine())return console.warn("Rendering Engine has been destroyed"),i;if(!Me(o))continue;const p={upper:"upper",right:"right",lower:"lower",left:"left"},[f,E]=m[0],w=s?20:7,I=s?5:7;xs(t,o,p.upper,[f,E-(w/2+I)],[f,E-w/2],{color:v,lineDash:g,lineWidth:u}),xs(t,o,p.lower,[f,E+(w/2+I)],[f,E+w/2],{color:v,lineDash:g,lineWidth:u}),xs(t,o,p.right,[f+(w/2+I),E],[f+w/2,E],{color:v,lineDash:g,lineWidth:u}),xs(t,o,p.left,[f-(w/2+I),E],[f-w/2,E],{color:v,lineDash:g,lineWidth:u}),i=!0}return i})),this._disableCursorEnabled=this.configuration.disableCursor}onSetToolActive(){if(this._disableCursorEnabled=this.configuration.disableCursor,!this._disableCursorEnabled)return;const e=zi(this.toolGroupId).viewportsInfo;e&&e.map((e=>(0,J.getEnabledElementByIds)(e.viewportId,e.renderingEngineId))).forEach((e=>{e&&Qr(e.viewport.element)}))}onSetToolDisabled(){if(!this._disableCursorEnabled)return;const e=zi(this.toolGroupId).viewportsInfo;e&&e.map((e=>(0,J.getEnabledElementByIds)(e.viewportId,e.renderingEngineId))).forEach((e=>{e&&$r(e.viewport.element)}))}getActiveAnnotation(e){const t=Ze(this.getToolName(),e);return t.length?t[0]:null}updateAnnotationPosition(e,t){var n;const o=this._currentCursorWorldPosition;if(!o)return;if(null===(n=t.data)||void 0===n||null===(n=n.handles)||void 0===n||!n.points)return;t.data.handles.points=[[...o]],t.invalidated=!0;const i=Bl(e,this.getToolName(),!1),a=(0,J.getEnabledElement)(e);if(!a)return;const{renderingEngine:r}=a;Bi(r,i)}filterInteractableAnnotationsForElement(e,t){var n,o;if(!(t instanceof Array)||0===t.length)return[];const i=t[0],a=null===(n=(0,J.getEnabledElement)(e))||void 0===n?void 0:n.viewport;if(!a)return[];const r=a.getCamera(),{viewPlaneNormal:s,focalPoint:l}=r;if(!s||!l)return[];const d=null===(o=i.data)||void 0===o||null===(o=o.handles)||void 0===o?void 0:o.points;if(!(d instanceof Array)||1!==d.length)return[];const c=d[0],h=J.utilities.planar.planeEquation(s,l);return J.utilities.planar.planeDistanceToPoint(h,c)<this.configuration.displayThreshold?[i]:[]}updateViewportImage(e){const t=this._currentCursorWorldPosition;if(t&&!t.some((e=>isNaN(e))))if(e instanceof J.StackViewport){const n=J.utilities.getClosestStackImageIndexForPoint(t,e);if(null===n)return;n!==e.getCurrentImageIdIndex()&&e.setImageIdIndex(n)}else if(e instanceof J.VolumeViewport){const{focalPoint:n,viewPlaneNormal:o}=e.getCamera();if(!n||!o)return;const i=J.utilities.planar.planeEquation(o,n),a=J.utilities.planar.planeDistanceToPoint(i,t,!0);if(Math.abs(a)<.5)return;const r=ps.vec3.normalize(ps.vec3.create(),ps.vec3.fromValues(...o)),s=ps.vec3.scale(ps.vec3.create(),r,a),l=ps.vec3.add(ps.vec3.create(),ps.vec3.fromValues(...n),s);{e.setCamera({focalPoint:l});const t=e.getRenderingEngine();t&&t.renderViewport(e.id)}}}}te(_v,"toolName",void 0),_v.toolName="ReferenceCursors";const Tv=_v,bv=[];class Dv extends Xl{constructor(){super(arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},arguments.length>1&&void 0!==arguments[1]?arguments[1]:{configuration:{viewportId:"",scaleLocation:"bottom"}}),te(this,"touchDragCallback",void 0),te(this,"mouseDragCallback",void 0),te(this,"_throttledCalculateCachedStats",void 0),te(this,"editData",{}),te(this,"isDrawing",void 0),te(this,"isHandleOutsideImage",void 0),te(this,"_init",(()=>{const e=(0,J.getRenderingEngines)()[0];if(!e)return;const t=zi(this.toolGroupId).viewportsInfo;if(!t)return;const n=t.map((e=>(0,J.getEnabledElementByIds)(e.viewportId,e.renderingEngineId)));let{viewport:o}=n[0];const{FrameOfReferenceUID:i}=n[0];if(this.configuration.viewportId&&n.forEach((e=>{e.viewport.id==this.configuration.viewportId&&(o=e.viewport)})),!o)return;const{viewUp:a,viewPlaneNormal:r}=o.getCamera(),s=J.utilities.getViewportImageCornersInWorld(o);let l=this.editData.annotation;const d=Ze(this.getToolName(),o.element);if(d.length&&(l=d.filter((e=>e.data.viewportId==o.id))[0]),bv.includes(o.id))this.editData.annotation.data.viewportId==o.id&&(this.editData.annotation.data.handles.points=s,this.editData.annotation.data.viewportId=o.id);else{const e={metadata:{toolName:this.getToolName(),viewPlaneNormal:[...r],viewUp:[...a],FrameOfReferenceUID:i,referencedImageId:null},data:{handles:{points:s},viewportId:o.id}};bv.push(o.id),Je(e,o.element),l=e}this.editData={viewport:o,renderingEngine:e,annotation:l}})),te(this,"onSetToolEnabled",(()=>{this._init()})),te(this,"onCameraModified",(e=>{this.configuration.viewportId=e.detail.viewportId,this._init()})),te(this,"computeScaleSize",((e,t,n)=>{const o=[16e3,8e3,4e3,2e3,1e3,500,250,100,50,25,10,5,2];let i;return i="top"==n||"bottom"==n?o.filter((t=>t<.6*e&&t>.2*e)):o.filter((e=>e<.6*t&&e>.2*t)),i[0]})),te(this,"computeEndScaleTicks",((e,t)=>{const n={bottom:[[0,-10],[0,-10]],top:[[0,10],[0,10]],left:[[0,0],[10,0]],right:[[0,0],[-10,0]]};return{endTick1:[[e[1][0]+n[t][0][0],e[1][1]+n[t][0][0]],[e[1][0]+n[t][1][0],e[1][1]+n[t][1][1]]],endTick2:[[e[0][0]+n[t][0][0],e[0][1]+n[t][0][0]],[e[0][0]+n[t][1][0],e[0][1]+n[t][1][1]]]}})),te(this,"computeInnerScaleTicks",((e,t,n,o,i)=>{let a;"bottom"==t||"top"==t?a=i[0][0]-o[0][0]:"left"!=t&&"right"!=t||(a=i[0][1]-o[0][1]);const r=[],s=[],l=[];let d=e;e>=50&&(d=e/10);const c=a/d;for(let e=0;e<d-1;e++){const i={bottom:[[c*(e+1),0],[c*(e+1),5]],top:[[c*(e+1),0],[c*(e+1),-5]],left:[[0,c*(e+1)],[-5,c*(e+1)]],right:[[0,c*(e+1)],[5,c*(e+1)]]};r.push("".concat(n,"-tick").concat(e)),s.push("tick".concat(e)),(e+1)%5==0?l.push([[o[0][0]+i[t][0][0],o[0][1]+i[t][0][1]],[o[1][0]+i[t][0][0],o[1][1]+i[t][0][1]]]):l.push([[o[0][0]+i[t][0][0],o[0][1]+i[t][0][1]],[o[1][0]+i[t][1][0],o[1][1]+i[t][1][1]]])}return{tickIds:r,tickUIDs:s,tickCoordinates:l}})),te(this,"computeWorldScaleCoordinates",((e,t,n)=>{let o,i=ps.vec3.subtract(ps.vec3.create(),n[0],n[1]);i=ps.vec3.normalize(ps.vec3.create(),i);let a=ps.vec3.subtract(ps.vec3.create(),n[2],n[0]);a=ps.vec3.normalize(ps.vec3.create(),a);const r={bottom:[n[1],n[2]],top:[n[0],n[3]],right:[n[2],n[3]],left:[n[0],n[1]]},s=ps.vec3.add(ps.vec3.create(),r[t][0],r[t][0]).map((e=>e/2)),l=e/2/Math.sqrt(Math.pow(i[0],2)+Math.pow(i[1],2)+Math.pow(i[2],2));return"top"==t||"bottom"==t?o=[ps.vec3.subtract(ps.vec3.create(),s,a.map((e=>e*l))),ps.vec3.add(ps.vec3.create(),s,a.map((e=>e*l)))]:"left"!=t&&"right"!=t||(o=[ps.vec3.add(ps.vec3.create(),s,i.map((e=>e*l))),ps.vec3.subtract(ps.vec3.create(),s,i.map((e=>e*l)))]),o})),te(this,"computeCanvasScaleCoordinates",((e,t,n,o,i)=>{let a;if("top"==i||"bottom"==i){const o=t[0][0]-t[1][0];a=[[e.width/2-o/2,n.height],[e.width/2+o/2,n.height]]}else if("left"==i||"right"==i){const n=t[0][1]-t[1][1];a=[[o.width,e.height/2-n/2],[o.width,e.height/2+n/2]]}return a})),te(this,"computeScaleBounds",((e,t,n,o)=>{const i=t*Math.min(1e3,e.width),a=n*Math.min(1e3,e.height),r={bottom:[-a,-i],top:[a,i],left:[a,i],right:[-a,-i]},s={bottom:[e.height,e.width],top:[0,e.width],left:[e.height,0],right:[e.height,e.width]};return{height:s[o][0]+r[o][0],width:s[o][1]+r[o][1]}}))}renderAnnotation(e,t){if(!this.editData.viewport)return;const n=this.configuration.scaleLocation,{viewport:o}=e,i=Ze(this.getToolName(),o.element).filter((e=>e.data.viewportId==o.id))[0],a=e.viewport.canvas;if(!o)return!1;const r={toolGroupId:this.toolGroupId,toolName:this.getToolName(),viewportId:e.viewport.id},s={width:a.width,height:a.height},l=i.data.handles.points[0],d=i.data.handles.points[1],c=i.data.handles.points[2],h=i.data.handles.points[3],u=[l,c,d,h],g=ps.vec3.distance(c,h),v=ps.vec3.distance(l,c),m=this.computeScaleBounds(s,.05,.05,n),p=this.computeScaleBounds(s,.05,.05,n),f=this.computeScaleSize(g,v,n),E=this.computeWorldScaleCoordinates(f,n,u).map((e=>o.worldToCanvas(e))),w=this.computeCanvasScaleCoordinates(s,E,p,m,n),I=this.computeEndScaleTicks(w,n),{annotationUID:C}=i;r.annotationUID=C;const _=this.getStyle("lineWidth",r,i),T=this.getStyle("lineDash",r,i),b=this.getStyle("color",r,i),D=this.getStyle("shadow",r,i),S="".concat(C,"-scaleline");xs(t,C,"1",w[0],w[1],{color:b,width:_,lineDash:T,shadow:D},S);const y="".concat(C,"-left");xs(t,C,"2",I.endTick1[0],I.endTick1[1],{color:b,width:_,lineDash:T,shadow:D},y);const O="".concat(C,"-right");xs(t,C,"3",I.endTick2[0],I.endTick2[1],{color:b,width:_,lineDash:T,shadow:D},O);const M={bottom:[-10,-42],top:[-12,-35],left:[-40,-20],right:[-50,-20]},x=[w[0][0]+M[n][0],w[0][1]+M[n][1]],N=this._getTextLines(f),{tickIds:k,tickUIDs:R,tickCoordinates:P}=this.computeInnerScaleTicks(f,n,C,I.endTick1,I.endTick2);for(let e=0;e<R.length;e++)xs(t,C,R[e],P[e][0],P[e][1],{color:b,width:_,lineDash:T,shadow:D},k[e]);return Ps(t,C,"text0",N,[x[0],x[1]],{fontFamily:"Helvetica Neue, Helvetica, Arial, sans-serif",fontSize:"14px",lineDash:"2,3",lineWidth:"1",shadow:!0,color:b}),!1}_getTextLines(e){let t,n;return e>=50?(t=e/10,n=" cm"):(t=e,n=" mm"),[t.toString().concat(n)]}}te(Dv,"toolName",void 0),Dv.toolName="ScaleOverlay";const Sv=Dv,{transformWorldToIndex:yv}=J.utilities;function Ov(e,t){!function(e,t){const{volume:n,points:o,segmentsLocked:i,segmentIndex:a,segmentationId:r,constraintFn:s}=t,{imageData:l,dimensions:d}=n,c=n.getScalarData();let h=o.map((e=>yv(l,e)));h=h.map((e=>e.map((e=>Math.round(e)))));const u=nl(h,d);tl(l,(()=>!0),(e=>{let{value:t,index:n,pointIJK:o}=e;i.includes(t)||(s?s(o)&&(c[n]=a):c[n]=a)}),u),pt(r)}(0,t)}const{transformWorldToIndex:Mv}=J.utilities;function xv(e,t){!function(e,t){const{volume:n,points:o,segmentsLocked:i,segmentationId:a}=t,{imageData:r,dimensions:s}=n,l=n.getScalarData(),d=o.map((e=>Mv(r,e))),c=nl(d,s);tl(r,(()=>!0),(e=>{let{value:t,index:n}=e;i.includes(t)||(l[n]=0)}),c),pt(a)}(0,t)}class Nv extends la{constructor(){super(arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},arguments.length>1&&void 0!==arguments[1]?arguments[1]:{supportedInteractionTypes:["Mouse","Touch"],configuration:{strategies:{FILL_INSIDE:Ov,ERASE_INSIDE:xv},defaultStrategy:"FILL_INSIDE",activeStrategy:"FILL_INSIDE"}}),te(this,"_throttledCalculateCachedStats",void 0),te(this,"editData",void 0),te(this,"isDrawing",void 0),te(this,"isHandleOutsideImage",void 0),te(this,"preMouseDownCallback",(e=>{const t=e.detail,{currentPoints:n,element:o}=t,i=n.world,a=(0,J.getEnabledElement)(o),{viewport:r,renderingEngine:s}=a;this.isDrawing=!0;const l=r.getCamera(),{viewPlaneNormal:d,viewUp:c}=l,h=this.toolGroupId,u=El(h);if(!u)throw new Error("No active segmentation detected, create one before using scissors tool");const{segmentationRepresentationUID:g,segmentationId:v,type:m}=u,p=bl(v),f=_l(v),E=yl(h,g,p),{representationData:w}=wt(v),{volumeId:I}=w[m],C=J.cache.getVolume(I),_={highlighted:!0,invalidated:!0,metadata:{viewPlaneNormal:[...d],viewUp:[...c],FrameOfReferenceUID:r.getFrameOfReferenceUID(),referencedImageId:"",toolName:this.getToolName(),segmentColor:E},data:{handles:{points:[[...i],[...i],[...i],[...i]],activeHandleIndex:null}}},T=Bl(o,this.getToolName());return this.editData={annotation:_,segmentation:C,segmentIndex:p,segmentsLocked:f,segmentColor:E,segmentationId:v,viewportIdsToRender:T,handleIndex:3,movingTextBox:!1,newAnnotation:!0,hasMoved:!1},this._activateDraw(o),Qr(o),e.preventDefault(),Bi(s,T),!0})),te(this,"_dragCallback",(e=>{this.isDrawing=!0;const t=e.detail,{element:n}=t,{annotation:o,viewportIdsToRender:i,handleIndex:a}=this.editData,{data:r}=o,{currentPoints:s}=t,l=(0,J.getEnabledElement)(n),{worldToCanvas:d,canvasToWorld:c}=l.viewport,h=s.world,{points:u}=r.handles;let g,v,m,p,f,E,w,I;switch(u[a]=[...h],a){case 0:case 3:g=d(u[0]),p=d(u[3]),v=[p[0],g[1]],m=[g[0],p[1]],E=c(v),w=c(m),u[1]=E,u[2]=w;break;case 1:case 2:v=d(u[1]),m=d(u[2]),g=[m[0],v[1]],p=[v[0],m[1]],f=c(g),I=c(p),u[0]=f,u[3]=I}o.invalidated=!0,this.editData.hasMoved=!0;const{renderingEngine:C}=l;Bi(C,i)})),te(this,"_endCallback",(e=>{const t=e.detail,{element:n}=t,{annotation:o,newAnnotation:i,hasMoved:a,segmentation:r,segmentationId:s,segmentIndex:l,segmentsLocked:d}=this.editData,{data:c}=o;if(i&&!a)return;c.handles.activeHandleIndex=null,this._deactivateDraw(n),$r(n);const h=(0,J.getEnabledElement)(n),{viewport:u}=h;if(this.editData=null,this.isDrawing=!1,u instanceof J.StackViewport)throw new Error("Not implemented yet");const g={points:c.handles.points,volume:r,segmentationId:s,segmentIndex:l,segmentsLocked:d};this.applyActiveStrategy(h,g)})),te(this,"_activateDraw",(e=>{e.addEventListener(Q.MOUSE_UP,this._endCallback),e.addEventListener(Q.MOUSE_DRAG,this._dragCallback),e.addEventListener(Q.MOUSE_CLICK,this._endCallback),e.addEventListener(Q.TOUCH_END,this._endCallback),e.addEventListener(Q.TOUCH_DRAG,this._dragCallback),e.addEventListener(Q.TOUCH_TAP,this._endCallback)})),te(this,"_deactivateDraw",(e=>{e.removeEventListener(Q.MOUSE_UP,this._endCallback),e.removeEventListener(Q.MOUSE_DRAG,this._dragCallback),e.removeEventListener(Q.MOUSE_CLICK,this._endCallback),e.removeEventListener(Q.TOUCH_TAP,this._endCallback),e.removeEventListener(Q.TOUCH_END,this._endCallback),e.removeEventListener(Q.TOUCH_DRAG,this._dragCallback)})),te(this,"renderAnnotation",((e,t)=>{let n=!1;if(!this.editData)return n;const{viewport:o}=e,{annotation:i}=this.editData,a=i.metadata,r=i.annotationUID,s=i.data,{points:l}=s.handles,d=l.map((e=>o.worldToCanvas(e))),c="rgb(".concat(a.segmentColor.slice(0,3),")");return o.getRenderingEngine()?(Us(t,r,"0",d[0],d[3],{color:c}),n=!0,n):(console.warn("Rendering Engine has been destroyed"),n)}))}}te(Nv,"toolName",void 0),Nv.toolName="RectangleScissor";const kv=Nv;class Rv extends la{constructor(){super(arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},arguments.length>1&&void 0!==arguments[1]?arguments[1]:{supportedInteractionTypes:["Mouse","Touch"],configuration:{strategies:{FILL_INSIDE:ml},defaultStrategy:"FILL_INSIDE",activeStrategy:"FILL_INSIDE"}}),te(this,"editData",void 0),te(this,"isDrawing",void 0),te(this,"isHandleOutsideImage",void 0),te(this,"preMouseDownCallback",(e=>{const t=e.detail,{currentPoints:n,element:o}=t,i=n.world,a=n.canvas,r=(0,J.getEnabledElement)(o),{viewport:s,renderingEngine:l}=r;this.isDrawing=!0;const d=s.getCamera(),{viewPlaneNormal:c,viewUp:h}=d,u=this.toolGroupId,g=El(u);if(!g)throw new Error("No active segmentation detected, create one before using scissors tool");const{segmentationRepresentationUID:v,segmentationId:m,type:p}=g,f=bl(m),E=_l(m),w=yl(u,v,f),{representationData:I}=wt(m),{volumeId:C}=I[p],_=J.cache.getVolume(C),T={invalidated:!0,highlighted:!0,metadata:{viewPlaneNormal:[...c],viewUp:[...h],FrameOfReferenceUID:s.getFrameOfReferenceUID(),referencedImageId:"",toolName:this.getToolName(),segmentColor:w},data:{handles:{points:[[...i],[...i],[...i],[...i]],activeHandleIndex:null},isDrawing:!0,cachedStats:{}}},b=[s.id];return this.editData={annotation:T,segmentation:_,centerCanvas:a,segmentIndex:f,segmentationId:m,segmentsLocked:E,segmentColor:w,viewportIdsToRender:b,handleIndex:3,movingTextBox:!1,newAnnotation:!0,hasMoved:!1},this._activateDraw(o),Qr(o),e.preventDefault(),Bi(l,b),!0})),te(this,"_dragCallback",(e=>{this.isDrawing=!0;const t=e.detail,{element:n}=t,{currentPoints:o}=t,i=o.canvas,a=(0,J.getEnabledElement)(n),{renderingEngine:r,viewport:s}=a,{canvasToWorld:l}=s,{annotation:d,viewportIdsToRender:c,centerCanvas:h}=this.editData,{data:u}=d,g=Math.abs(i[0]-h[0]),v=Math.abs(i[1]-h[1]),m=Math.sqrt(g*g+v*v),p=[h[0],h[1]+m],f=[h[0],h[1]-m],E=[h[0]-m,h[1]],w=[h[0]+m,h[1]];u.handles.points=[l(p),l(f),l(E),l(w)],d.invalidated=!0,this.editData.hasMoved=!0,Bi(r,c)})),te(this,"_endCallback",(e=>{const t=e.detail,{element:n}=t,{annotation:o,newAnnotation:i,hasMoved:a,segmentation:r,segmentIndex:s,segmentsLocked:l,segmentationId:d}=this.editData,{data:c}=o,{viewPlaneNormal:h,viewUp:u}=o.metadata;if(i&&!a)return;c.handles.activeHandleIndex=null,this._deactivateDraw(n),$r(n);const g=(0,J.getEnabledElement)(n),{viewport:v}=g;if(this.editData=null,this.isDrawing=!1,v instanceof J.StackViewport)throw new Error("Not implemented yet");const m={points:c.handles.points,volume:r,segmentIndex:s,segmentsLocked:l,viewPlaneNormal:h,segmentationId:d,viewUp:u};this.applyActiveStrategy(g,m)})),te(this,"_activateDraw",(e=>{e.addEventListener(Q.MOUSE_UP,this._endCallback),e.addEventListener(Q.MOUSE_DRAG,this._dragCallback),e.addEventListener(Q.MOUSE_CLICK,this._endCallback),e.addEventListener(Q.TOUCH_TAP,this._endCallback),e.addEventListener(Q.TOUCH_DRAG,this._dragCallback),e.addEventListener(Q.TOUCH_END,this._endCallback)})),te(this,"_deactivateDraw",(e=>{e.removeEventListener(Q.MOUSE_UP,this._endCallback),e.removeEventListener(Q.MOUSE_DRAG,this._dragCallback),e.removeEventListener(Q.MOUSE_CLICK,this._endCallback),e.removeEventListener(Q.TOUCH_END,this._endCallback),e.removeEventListener(Q.TOUCH_DRAG,this._dragCallback),e.removeEventListener(Q.TOUCH_TAP,this._endCallback)})),te(this,"renderAnnotation",((e,t)=>{let n=!1;if(!this.editData)return n;const{viewport:o}=e,{viewportIdsToRender:i}=this.editData;if(!i.includes(o.id))return n;const{annotation:a}=this.editData,r=a.metadata,s=a.annotationUID,l=a.data,{points:d}=l.handles,c=d.map((e=>o.worldToCanvas(e))),h=c[0],u=c[1],g=[Math.floor((h[0]+u[0])/2),Math.floor((h[1]+u[1])/2)],v=Math.abs(h[1]-Math.floor((h[1]+u[1])/2)),m="rgb(".concat(r.segmentColor.slice(0,3),")");return o.getRenderingEngine()?(ys(t,s,"0",g,v,{color:m}),n=!0,n):(console.warn("Rendering Engine has been destroyed"),n)}))}}te(Rv,"toolName",void 0),Rv.toolName="CircleScissor";const Pv=Rv;class Lv extends la{constructor(){super(arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},arguments.length>1&&void 0!==arguments[1]?arguments[1]:{supportedInteractionTypes:["Mouse","Touch"],configuration:{strategies:{FILL_INSIDE:ll},defaultStrategy:"FILL_INSIDE",activeStrategy:"FILL_INSIDE"}}),te(this,"editData",void 0),te(this,"isDrawing",void 0),te(this,"isHandleOutsideImage",void 0),te(this,"preMouseDownCallback",(e=>{const t=e.detail,{currentPoints:n,element:o}=t,i=n.world,a=n.canvas,r=(0,J.getEnabledElement)(o),{viewport:s,renderingEngine:l}=r;this.isDrawing=!0;const d=s.getCamera(),{viewPlaneNormal:c,viewUp:h}=d,u=this.toolGroupId,g=El(u);if(!g)throw new Error("No active segmentation detected, create one before using scissors tool");const{segmentationRepresentationUID:v,segmentationId:m,type:p}=g,f=bl(m),E=_l(m),w=yl(u,v,f),{representationData:I}=wt(m),{volumeId:C}=I[p],_=J.cache.getVolume(C);this.isDrawing=!0;const T={metadata:{viewPlaneNormal:[...c],viewUp:[...h],FrameOfReferenceUID:s.getFrameOfReferenceUID(),referencedImageId:"",toolName:this.getToolName(),segmentColor:w},data:{invalidated:!0,handles:{points:[[...i],[...i],[...i],[...i]],activeHandleIndex:null},cachedStats:{},highlighted:!0}},b=[s.id];return this.editData={annotation:T,segmentation:_,centerCanvas:a,segmentIndex:f,segmentsLocked:E,segmentColor:w,segmentationId:m,toolGroupId:u,viewportIdsToRender:b,handleIndex:3,movingTextBox:!1,newAnnotation:!0,hasMoved:!1},this._activateDraw(o),Qr(o),e.preventDefault(),Bi(l,b),!0})),te(this,"_dragCallback",(e=>{this.isDrawing=!0;const t=e.detail,{element:n}=t,{currentPoints:o}=t,i=o.canvas,a=(0,J.getEnabledElement)(n),{renderingEngine:r,viewport:s}=a,{canvasToWorld:l}=s,{annotation:d,viewportIdsToRender:c,centerCanvas:h}=this.editData,{data:u}=d,g=Math.abs(i[0]-h[0]),v=Math.abs(i[1]-h[1]),m=Math.sqrt(g*g+v*v),p=[h[0],h[1]+m],f=[h[0],h[1]-m],E=[h[0]-m,h[1]],w=[h[0]+m,h[1]];u.handles.points=[l(p),l(f),l(E),l(w)],d.invalidated=!0,this.editData.hasMoved=!0,Bi(r,c)})),te(this,"_endCallback",(e=>{const t=e.detail,{element:n}=t,{annotation:o,newAnnotation:i,hasMoved:a,segmentation:r,segmentIndex:s,segmentsLocked:l,segmentationId:d}=this.editData,{data:c}=o,{viewPlaneNormal:h,viewUp:u}=o.metadata;if(i&&!a)return;o.highlighted=!1,c.handles.activeHandleIndex=null,this._deactivateDraw(n),$r(n);const g=(0,J.getEnabledElement)(n),{viewport:v}=g;if(this.editData=null,this.isDrawing=!1,v instanceof J.StackViewport)throw new Error("Not implemented yet");const m={points:c.handles.points,volume:r,segmentIndex:s,segmentsLocked:l,segmentationId:d,viewPlaneNormal:h,viewUp:u};this.applyActiveStrategy(g,m)})),te(this,"_activateDraw",(e=>{e.addEventListener(Q.MOUSE_UP,this._endCallback),e.addEventListener(Q.MOUSE_DRAG,this._dragCallback),e.addEventListener(Q.MOUSE_CLICK,this._endCallback),e.addEventListener(Q.TOUCH_END,this._endCallback),e.addEventListener(Q.TOUCH_TAP,this._endCallback),e.addEventListener(Q.TOUCH_DRAG,this._dragCallback)})),te(this,"_deactivateDraw",(e=>{e.removeEventListener(Q.MOUSE_UP,this._endCallback),e.removeEventListener(Q.MOUSE_DRAG,this._dragCallback),e.removeEventListener(Q.MOUSE_CLICK,this._endCallback),e.removeEventListener(Q.TOUCH_END,this._endCallback),e.removeEventListener(Q.TOUCH_DRAG,this._dragCallback),e.removeEventListener(Q.TOUCH_TAP,this._endCallback)})),te(this,"renderAnnotation",((e,t)=>{let n=!1;if(!this.editData)return n;const{viewport:o}=e,{viewportIdsToRender:i}=this.editData;if(!i.includes(o.id))return n;const{annotation:a}=this.editData,r=a.metadata,s=a.annotationUID,l=a.data,{points:d}=l.handles,c=d.map((e=>o.worldToCanvas(e))),h=c[0],u=c[1],g=[Math.floor((h[0]+u[0])/2),Math.floor((h[1]+u[1])/2)],v=Math.abs(h[1]-Math.floor((h[1]+u[1])/2)),m="rgb(".concat(r.segmentColor.slice(0,3),")");return o.getRenderingEngine()?(ys(t,s,"0",g,v,{color:m}),n=!0,n):(console.warn("Rendering Engine has been destroyed"),n)}))}}te(Lv,"toolName",void 0),Lv.toolName="SphereScissor";const Av=Lv;var Uv=I(518),Vv=I.n(Uv),Wv=I(744),Fv=I.n(Wv),Hv=I(424),Bv=I.n(Hv),Gv=I(614),qv=I.n(Gv);const jv={ANNOTATED_CUBE:1,AXES:2,CUSTOM:3};class zv extends la{constructor(){super(arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},arguments.length>1&&void 0!==arguments[1]?arguments[1]:{configuration:{orientationWidget:{enabled:!0,viewportCorner:Vv().Corners.BOTTOM_RIGHT,viewportSize:.15,minPixelSize:100,maxPixelSize:300},overlayMarkerType:zv.OVERLAY_MARKER_TYPES.ANNOTATED_CUBE,overlayConfiguration:{[zv.OVERLAY_MARKER_TYPES.ANNOTATED_CUBE]:{faceProperties:{xPlus:{text:"R",faceColor:"#ffff00",faceRotation:90},xMinus:{text:"L",faceColor:"#ffff00",faceRotation:270},yPlus:{text:"P",faceColor:"#00ffff",fontColor:"white",faceRotation:180},yMinus:{text:"A",faceColor:"#00ffff",fontColor:"white"},zPlus:{text:"S"},zMinus:{text:"I"}},defaultStyle:{fontStyle:"bold",fontFamily:"Arial",fontColor:"black",fontSizeScale:e=>e/2,faceColor:"#0000ff",edgeThickness:.1,edgeColor:"black",resolution:400}},[zv.OVERLAY_MARKER_TYPES.AXES]:{},[zv.OVERLAY_MARKER_TYPES.CUSTOM]:{polyDataURL:"https://raw.githubusercontent.com/Slicer/Slicer/80ad0a04dacf134754459557bf2638c63f3d1d1b/Base/Logic/Resources/OrientationMarkers/Human.vtp"}}}}),te(this,"orientationMarkers",void 0),te(this,"polyDataURL",void 0),te(this,"configuration_invalidated",!0),te(this,"onSetToolEnabled",(()=>{this.initViewports(),this.configuration_invalidated=!0})),te(this,"onSetToolActive",(()=>{this.initViewports()})),te(this,"onSetToolDisabled",(()=>{this.cleanUpData()})),this.orientationMarkers={},this.configuration_invalidated=!0}cleanUpData(){(0,J.getRenderingEngines)()[0].getViewports().forEach((e=>{const t=this.orientationMarkers[e.id];if(!t)return;const{actor:n,orientationWidget:o}=t;null==o||o.setEnabled(!1),null==o||o.delete(),null==n||n.delete(),e.getRenderingEngine().offscreenMultiRenderWindow.getRenderWindow().render(),e.getRenderingEngine().render(),delete this.orientationMarkers[e.id]}))}initViewports(){const e=(0,J.getRenderingEngines)()[0];if(!e)return;let t=e.getViewports();t=Wl(t,this.getToolName()),t.forEach((e=>this.addAxisActorInViewport(e)))}async addAxisActorInViewport(e){const t=e.id,n=this.configuration.overlayMarkerType,o=this.configuration.overlayConfiguration[n];if(this.orientationMarkers[t]){const{actor:n,orientationWidget:o}=this.orientationMarkers[t];e.getRenderer().removeActor(n),o.setEnabled(!1)}let i;1===n?i=this.createAnnotationCube(o):2===n?i=Bv().newInstance():3===n&&(i=await this.createCustomActor());const a=e.getRenderer(),r=e.getRenderingEngine().offscreenMultiRenderWindow.getRenderWindow(),{enabled:s,viewportCorner:l,viewportSize:d,minPixelSize:c,maxPixelSize:h}=this.configuration.orientationWidget,u=Vv().newInstance({actor:i,interactor:r.getInteractor(),parentRenderer:a});u.setEnabled(s),u.setViewportCorner(l),u.setViewportSize(d),u.setMinPixelSize(c),u.setMaxPixelSize(h),u.updateMarkerOrientation(),this.orientationMarkers[t]={orientationWidget:u,actor:i},r.render(),e.getRenderingEngine().render(),this.configuration_invalidated=!1}async createCustomActor(){const e=this.configuration.overlayConfiguration[jv.CUSTOM].polyDataURL,t=await fetch(e),n=await t.arrayBuffer(),o=qv().newInstance();o.parseAsArrayBuffer(n),o.update();const i=fa().newInstance();i.shallowCopy(o.getOutputData()),i.getPointData().setActiveScalars("Color");const a=ha().newInstance();a.setInputData(i),a.setColorModeToDirectScalars();const r=ga().newInstance();return r.setMapper(a),r.rotateZ(180),r}createAnnotationCube(e){const t=Fv().newInstance();return t.setDefaultStyle({...e.defaultStyle}),t.setXPlusFaceProperty({...e.faceProperties.xPlus}),t.setXMinusFaceProperty({...e.faceProperties.xMinus}),t.setYPlusFaceProperty({...e.faceProperties.yPlus}),t.setYMinusFaceProperty({...e.faceProperties.yMinus}),t.setZPlusFaceProperty({...e.faceProperties.zPlus}),t.setZMinusFaceProperty({...e.faceProperties.zMinus}),t}async createAnnotatedCubeActor(){const e=Fv().newInstance(),{faceProperties:t,defaultStyle:n}=this.configuration.annotatedCube;return e.setDefaultStyle(n),Object.keys(t).forEach((n=>{const o="set".concat(n.charAt(0).toUpperCase()+n.slice(1),"FaceProperty");e[o](t[n])})),e}}te(zv,"toolName",void 0),te(zv,"CUBE",1),te(zv,"AXIS",2),te(zv,"VTPFILE",3),te(zv,"OVERLAY_MARKER_TYPES",jv),zv.toolName="OrientationMarker";const Kv=zv,{transformWorldToIndex:Yv,isEqual:Xv}=J.utilities;class Zv extends la{constructor(){var e;super(arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},arguments.length>1&&void 0!==arguments[1]?arguments[1]:{supportedInteractionTypes:["Mouse","Touch"]}),e=this,te(this,"preMouseDownCallback",(e=>{const t=e.detail,{currentPoints:n,element:o}=t,i=n.world,a=(0,J.getEnabledElement)(o),{viewport:r}=a,s=r.getCamera(),{viewPlaneNormal:l}=s,d=El(this.toolGroupId);if(!d)throw new Error("No active segmentation detected, create one before using scissors tool");const{segmentationId:c,type:h}=d,u=bl(c),g=_l(c),{representationData:v}=wt(c),{volumeId:m}=v[h],p=J.cache.getVolume(m),{dimensions:f,direction:E}=p,w=p.getScalarData(),I=Yv(p.imageData,i),C=this.getFixedDimension(l,E);if(void 0===C)return void console.warn("Oblique paint fill not yet supported");const{floodFillGetter:_,getLabelValue:T,getScalarDataPositionFromPlane:b,inPlaneSeedPoint:D,fixedDimensionValue:S}=this.generateHelpers(w,f,I,C);if(I[0]<0||I[0]>=f[0]||I[1]<0||I[1]>=f[1]||I[2]<0||I[2]>=f[2])return;const y=T(I[0],I[1],I[2]);if(g.includes(y))return;const O=Od(_,D),{flooded:M}=O;return M.forEach((e=>{const t=b(e[0],e[1]);w[t]=u})),pt(c,this.getFramesModified(C,S,O)),!0})),te(this,"getFramesModified",((e,t,n)=>{const{boundaries:o}=n;if(2===e)return[t];let i=1/0,a=-1/0;for(let e=0;e<o.length;e++){const t=o[e][1];t<i&&(i=t),t>a&&(a=t)}const r=[];for(let e=i;e<=a;e++)r.push(e);return r})),te(this,"generateHelpers",(function(t,n,o){let i,a,r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:2;switch(r){case 0:i=o[0],a=[o[1],o[2]];break;case 1:i=o[1],a=[o[0],o[2]];break;case 2:i=o[2],a=[o[0],o[1]];break;default:throw new Error("Invalid fixedDimension: ".concat(r))}const s=(e,t,o)=>o*n[1]*n[0]+t*n[0]+e,l=(e,n,o)=>t[s(e,n,o)],d=e.generateFloodFillGetter(n,r,i,l);return{getScalarDataPositionFromPlane:e.generateGetScalarDataPositionFromPlane(s,r,i),getLabelValue:l,floodFillGetter:d,inPlaneSeedPoint:a,fixedDimensionValue:i}})),te(this,"generateFloodFillGetter",((e,t,n,o)=>{let i;switch(t){case 0:i=(t,i)=>{if(!(t>=e[1]||t<0||i>=e[2]||i<0))return o(n,t,i)};break;case 1:i=(t,i)=>{if(!(t>=e[0]||t<0||i>=e[2]||i<0))return o(t,n,i)};break;case 2:i=(t,i)=>{if(!(t>=e[0]||t<0||i>=e[1]||i<0))return o(t,i,n)};break;default:throw new Error("Invalid fixedDimension: ".concat(t))}return i})),te(this,"generateGetScalarDataPositionFromPlane",((e,t,n)=>{let o;switch(t){case 0:o=(t,o)=>e(n,t,o);break;case 1:o=(t,o)=>e(t,n,o);break;case 2:o=(t,o)=>e(t,o,n);break;default:throw new Error("Invalid fixedDimension: ".concat(t))}return o}))}getFixedDimension(e,t){const n=t.slice(0,3),o=t.slice(3,6),i=t.slice(6,9),a=[Math.abs(e[0]),Math.abs(e[1]),Math.abs(e[2])],r=[Math.abs(n[0]),Math.abs(n[1]),Math.abs(n[2])];if(Xv(a,r))return 0;const s=[Math.abs(o[0]),Math.abs(o[1]),Math.abs(o[2])];if(Xv(a,s))return 1;const l=[Math.abs(i[0]),Math.abs(i[1]),Math.abs(i[2])];return Xv(a,l)?2:void 0}}te(Zv,"toolName",void 0),Zv.toolName="PaintFill";const Jv=Zv;class $v extends Jl{constructor(){var e;super(arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},{supportedInteractionTypes:["Mouse","Touch"],configuration:{shadow:!0,preventHandleOutsideImage:!1}}),e=this,te(this,"_throttledCalculateCachedStats",void 0),te(this,"editData",void 0),te(this,"_configuration",void 0),te(this,"isDrawing",void 0),te(this,"isHandleOutsideImage",void 0),te(this,"addNewAnnotation",(e=>{const t=e.detail,{currentPoints:n,element:o}=t,i=n.world,a=(0,J.getEnabledElement)(o),{viewport:r,renderingEngine:s}=a;this.isDrawing=!0;const l={metadata:{viewPlaneNormal:[0,0,1],viewUp:[0,1,0],FrameOfReferenceUID:r.getFrameOfReferenceUID(),referencedImageId:r.getFrameOfReferenceUID(),toolName:this.getToolName()},data:{invalidated:!0,handles:{points:[[...i],[...i],[...i],[...i]],activeHandleIndex:null},cachedStats:{},active:!0}};Je(l,o);const d=Bl(o,this.getToolName(),!1);return this.editData={annotation:l,viewportUIDsToRender:d,handleIndex:3,newAnnotation:!0,hasMoved:!1},this._activateDraw(o),Qr(o),e.preventDefault(),Bi(s,d),l})),te(this,"getHandleNearImagePoint",((e,t,n,o)=>{const i=(0,J.getEnabledElement)(e),{viewport:a}=i,{data:r}=t,{points:s}=r.handles;for(let e=0;e<s.length;e++){const t=s[e],i=a.worldToCanvas(t);if(!0==ps.vec2.distance(n,i)<o)return r.handles.activeHandleIndex=e,t}r.handles.activeHandleIndex=null})),te(this,"isPointNearTool",((e,t,n,o)=>{const i=(0,J.getEnabledElement)(e),{viewport:a}=i,{data:r}=t,{points:s}=r.handles,l=a.worldToCanvas(s[0]),d=a.worldToCanvas(s[3]),c=this._getRectangleImageCoordinates([l,d]),h=[n[0],n[1]],{left:u,top:g,width:v,height:m}=c;if(td([u,g,v,m],h)<=o)return!0})),te(this,"toolSelectedCallback",(function(t,n){const o=t.detail,{element:i}=o,{data:a}=n;a.active=!0;const r=Bl(i,e.getToolName(),!1);e.editData={annotation:n,viewportUIDsToRender:r},e._activateModify(i),Qr(i);const s=(0,J.getEnabledElement)(i),{renderingEngine:l}=s;Bi(l,r),t.preventDefault()})),te(this,"handleSelectedCallback",(function(t,n,o){const i=t.detail,{element:a}=i,{data:r}=n;r.active=!0;let s,l=!1;o.worldPosition||(s=r.handles.points.findIndex((e=>e===o)));const d=Bl(a,e.getToolName(),!1);e.editData={annotation:n,viewportUIDsToRender:d,handleIndex:s},e._activateModify(a),Qr(a);const c=(0,J.getEnabledElement)(a),{renderingEngine:h}=c;Bi(h,d),t.preventDefault()})),te(this,"_mouseUpCallback",(e=>{const t=e.detail,{element:n}=t,{annotation:o,viewportUIDsToRender:i,newAnnotation:a,hasMoved:r}=this.editData,{data:s}=o;if(a&&!r)return;s.active=!1,s.handles.activeHandleIndex=null,this._deactivateModify(n),this._deactivateDraw(n),$r(n);const l=(0,J.getEnabledElement)(n),{renderingEngine:d}=l;this.editData=null,this.isDrawing=!1,this.isHandleOutsideImage&&this.configuration.preventHandleOutsideImage&&Qe(o.annotationUID),Bi(d,i)})),te(this,"_mouseDragCallback",(e=>{this.isDrawing=!0;const t=e.detail,{element:n}=t,{annotation:o,viewportUIDsToRender:i,handleIndex:a}=this.editData,{data:r}=o;if(void 0===a){const{deltaPoints:e}=t,n=e.world,{points:o}=r.handles;o.forEach((e=>{e[0]+=n[0],e[1]+=n[1],e[2]+=n[2]})),r.invalidated=!0}else{const{currentPoints:e}=t,o=(0,J.getEnabledElement)(n),{worldToCanvas:i,canvasToWorld:s}=o.viewport,l=e.world,{points:d}=r.handles;let c,h,u,g,v,m,p,f;switch(d[a]=[...l],a){case 0:case 3:c=i(d[0]),g=i(d[3]),h=[g[0],c[1]],u=[c[0],g[1]],m=s(h),p=s(u),d[1]=m,d[2]=p;break;case 1:case 2:h=i(d[1]),u=i(d[2]),c=[u[0],h[1]],g=[h[0],u[1]],v=s(c),f=s(g),d[0]=v,d[3]=f}r.invalidated=!0}this.editData.hasMoved=!0;const s=(0,J.getEnabledElement)(n),{renderingEngine:l}=s;Bi(l,i)})),te(this,"_activateDraw",(e=>{He.isInteractingWithTool=!0,e.addEventListener(Q.MOUSE_UP,this._mouseUpCallback),e.addEventListener(Q.MOUSE_DRAG,this._mouseDragCallback),e.addEventListener(Q.MOUSE_MOVE,this._mouseDragCallback),e.addEventListener(Q.MOUSE_CLICK,this._mouseUpCallback),e.addEventListener(Q.TOUCH_END,this._mouseUpCallback),e.addEventListener(Q.TOUCH_DRAG,this._mouseDragCallback)})),te(this,"_deactivateDraw",(e=>{He.isInteractingWithTool=!1,e.removeEventListener(Q.MOUSE_UP,this._mouseUpCallback),e.removeEventListener(Q.MOUSE_DRAG,this._mouseDragCallback),e.removeEventListener(Q.MOUSE_MOVE,this._mouseDragCallback),e.removeEventListener(Q.MOUSE_CLICK,this._mouseUpCallback),e.removeEventListener(Q.TOUCH_END,this._mouseUpCallback),e.removeEventListener(Q.TOUCH_DRAG,this._mouseDragCallback)})),te(this,"_activateModify",(e=>{He.isInteractingWithTool=!0,e.addEventListener(Q.MOUSE_UP,this._mouseUpCallback),e.addEventListener(Q.MOUSE_DRAG,this._mouseDragCallback),e.addEventListener(Q.MOUSE_CLICK,this._mouseUpCallback),e.addEventListener(Q.TOUCH_END,this._mouseUpCallback),e.addEventListener(Q.TOUCH_DRAG,this._mouseDragCallback)})),te(this,"_deactivateModify",(e=>{He.isInteractingWithTool=!1,e.removeEventListener(Q.MOUSE_UP,this._mouseUpCallback),e.removeEventListener(Q.MOUSE_DRAG,this._mouseDragCallback),e.removeEventListener(Q.MOUSE_CLICK,this._mouseUpCallback),e.removeEventListener(Q.TOUCH_END,this._mouseUpCallback),e.removeEventListener(Q.TOUCH_DRAG,this._mouseDragCallback)})),te(this,"renderAnnotation",((e,t)=>{var n,o;const{viewport:i}=e,{element:a}=i;let r=Ze(this.getToolName(),a);if(null===(n=r)||void 0===n||!n.length)return!1;if(r=this.filterInteractableAnnotationsForElement(a,r),null===(o=r)||void 0===o||!o.length)return!1;this.getTargetId(i),i.getRenderingEngine();const s={toolGroupId:this.toolGroupId,toolName:this.getToolName(),viewportId:e.viewport.id};for(let e=0;e<r.length;e++){const n=r[e],{annotationUID:o}=n,a=(n.metadata,n.data),{points:l,activeHandleIndex:d}=a.handles,c=l.map((e=>i.worldToCanvas(e))),h=this.getStyle("lineWidth",s,n),u=this.getStyle("lineDash",s,n),g=this.getStyle("color",s,n);if(!i.getRenderingEngine())return void console.warn("Rendering Engine has been destroyed");let v;this.editData||null===d||(v=[c[d]]),v&&Ms(t,o,"0",v,{color:g}),Ws(t,o,"0",c[0],c[3],{color:"black",lineDash:u,lineWidth:h})}})),te(this,"_getRectangleImageCoordinates",(e=>{const[t,n]=e;return{left:Math.min(t[0],n[0]),top:Math.min(t[1],n[1]),width:Math.abs(t[0]-n[0]),height:Math.abs(t[1]-n[1])}})),te(this,"_calculateCachedStats",((e,t,n,o,i)=>{const{data:a}=e,{viewportUID:r,renderingEngineUID:s,sceneUID:l}=i,d=a.handles.points[0],c=a.handles.points[3],{cachedStats:h}=a,u=Object.keys(h);for(let e=0;e<u.length;e++){const i=u[e],{imageVolume:a}=this._getImageVolumeFromTargetUID(i,o),{dimensions:r,scalarData:s,vtkImageData:l,metadata:g}=a,v=ps.vec3.fromValues(0,0,0),m=ps.vec3.fromValues(0,0,0);if(l.worldToIndexVec3(d,v),v[0]=Math.floor(v[0]),v[1]=Math.floor(v[1]),v[2]=Math.floor(v[2]),l.worldToIndexVec3(c,m),m[0]=Math.floor(m[0]),m[1]=Math.floor(m[1]),m[2]=Math.floor(m[2]),this._isInsideVolume(v,m,r)){this.isHandleOutsideImage=!1;const e=Math.min(v[0],m[0]),o=Math.max(v[0],m[0]),a=Math.min(v[1],m[1]),l=Math.max(v[1],m[1]),u=Math.min(v[2],m[2]),p=Math.max(v[2],m[2]),{worldWidth:f,worldHeight:E}=Fg(t,n,d,c),w=f*E;let I=0,C=0,_=0;const T=r[0],b=r[0]*r[1];for(let t=u;t<=p;t++)for(let n=a;n<=l;n++)for(let i=e;i<=o;i++)I++,C+=s[t*b+n*T+i];C/=I;for(let t=u;t<=p;t++)for(let n=a;n<=l;n++)for(let i=e;i<=o;i++){const e=s[t*b+n*T+i]-C;_+=e*e}_/=I,_=Math.sqrt(_),h[i]={Modality:g.Modality,area:w,mean:C,stdDev:_}}else this.isHandleOutsideImage=!0,h[i]={Modality:g.Modality}}a.invalidated=!1;const g=Q.ANNOTATION_MODIFIED,v={annotation:e,viewportUID:r,renderingEngineUID:s,sceneUID:l};return(0,J.triggerEvent)(J.eventTarget,g,v),h})),te(this,"_isInsideVolume",((e,t,n)=>J.utilities.indexWithinDimensions(e,n)&&J.utilities.indexWithinDimensions(t,n))),te(this,"_getTargetVolumeUID",(e=>{if(this.configuration.volumeUID)return this.configuration.volumeUID;const t=e.getVolumeActors();return t||t.length?t[0].uid:void 0})),this._throttledCalculateCachedStats=js(this._calculateCachedStats,100,{trailing:!0})}cancel(e){if(!this.isDrawing)return;this.isDrawing=!1,this._deactivateDraw(e),this._deactivateModify(e),$r(e);const{annotation:t,viewportUIDsToRender:n}=this.editData,{data:o}=t;o.active=!1,o.handles.activeHandleIndex=null;const i=(0,J.getEnabledElement)(e),{renderingEngine:a}=i;return Bi(a,n),this.editData=null,t.metadata.annotationUID}_getImageVolumeFromTargetUID(e,t){let n;if(e.startsWith("stackTarget")){const o=e.indexOf(":"),i=e.substring(o+1);n=t.getViewport(i).getImageData()}else n=J.cache.getVolume(e);return{imageVolume:n,viewport:void 0}}_getTargetStackUID(e){return"stackTarget:".concat(e.uid)}}$v.toolName="VideoRedaction";const Qv=$v})(),C})()));
|
|
3
2
|
//# sourceMappingURL=index.js.map
|