/*! cornerstone-tools - 4.12.1 - 2020-01-30 | (c) 2017 Chris Hafey | https://github.com/cornerstonejs/cornerstoneTools */ !function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define("cornerstone-tools",[],t):"object"==typeof exports?exports["cornerstone-tools"]=t():e.cornerstoneTools=t()}(window,(function(){return function(e){var t={};function n(a){if(t[a])return t[a].exports;var o=t[a]={i:a,l:!1,exports:{}};return e[a].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=e,n.c=t,n.d=function(e,t,a){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:a})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var a=Object.create(null);if(n.r(a),Object.defineProperty(a,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)n.d(a,o,function(t){return e[t]}.bind(null,o));return a},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=25)}([function(e,t){e.exports=function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}},function(e,t){function n(e,t){for(var n=0;n=31||"undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)},storage:function(){try{return localStorage}catch(e){}}()};o.colors=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"],o.log=console.debug||console.log||function(){};var i=Object(a.a)(o);i.formatters.j=function(e){try{return JSON.stringify(e)}catch(e){return"[UnexpectedJSONParseError]: ".concat(e.message)}},t.a=i}).call(this,n(15))},function(e,t){e.exports=function(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}},function(e,t,n){e.exports=n(23)},function(e,t,n){"use strict";var a=n(6),o=n.n(a);t.a=function(e){function t(e){for(var t=0,n=0;n1)for(var n=1;n=1.5*n;return Math.round(e/n)+" "+a+(o?"s":"")}e.exports=function(e,t){t=t||{};var c=typeof e;if("string"===c&&e.length>0)return function(e){if((e=String(e)).length>100)return;var t=/^((?:\d+)?\-?\d?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(e);if(!t)return;var l=parseFloat(t[1]);switch((t[2]||"ms").toLowerCase()){case"years":case"year":case"yrs":case"yr":case"y":return l*s;case"weeks":case"week":case"w":return l*r;case"days":case"day":case"d":return l*i;case"hours":case"hour":case"hrs":case"hr":case"h":return l*o;case"minutes":case"minute":case"mins":case"min":case"m":return l*a;case"seconds":case"second":case"secs":case"sec":case"s":return l*n;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return l;default:return}}(e);if("number"===c&&!1===isNaN(e))return t.long?function(e){var t=Math.abs(e);if(t>=i)return l(e,t,i,"day");if(t>=o)return l(e,t,o,"hour");if(t>=a)return l(e,t,a,"minute");if(t>=n)return l(e,t,n,"second");return e+" ms"}(e):function(e){var t=Math.abs(e);if(t>=i)return Math.round(e/i)+"d";if(t>=o)return Math.round(e/o)+"h";if(t>=a)return Math.round(e/a)+"m";if(t>=n)return Math.round(e/n)+"s";return e+"ms"}(e);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(e))}},function(e,t){e.exports=function(e){if(Array.isArray(e))return e}},function(e,t){e.exports=function(e,t){var n=[],a=!0,o=!1,i=void 0;try{for(var r,s=e[Symbol.iterator]();!(a=(r=s.next()).done)&&(n.push(r.value),!t||n.length!==t);a=!0);}catch(e){o=!0,i=e}finally{try{a||null==s.return||s.return()}finally{if(o)throw i}}return n}},function(e,t){e.exports=function(){throw new TypeError("Invalid attempt to destructure non-iterable instance")}},function(e,t,n){var a=function(){return this||"object"==typeof self&&self}()||Function("return this")(),o=a.regeneratorRuntime&&Object.getOwnPropertyNames(a).indexOf("regeneratorRuntime")>=0,i=o&&a.regeneratorRuntime;if(a.regeneratorRuntime=void 0,e.exports=n(24),o)a.regeneratorRuntime=i;else try{delete a.regeneratorRuntime}catch(e){a.regeneratorRuntime=void 0}},function(e,t){!function(t){"use strict";var n,a=Object.prototype,o=a.hasOwnProperty,i="function"==typeof Symbol?Symbol:{},r=i.iterator||"@@iterator",s=i.asyncIterator||"@@asyncIterator",l=i.toStringTag||"@@toStringTag",c="object"==typeof e,u=t.regeneratorRuntime;if(u)c&&(e.exports=u);else{(u=t.regeneratorRuntime=c?e.exports:{}).wrap=T;var d="suspendedStart",h="suspendedYield",v="executing",g="completed",f={},m={};m[r]=function(){return this};var p=Object.getPrototypeOf,y=p&&p(p(D([])));y&&y!==a&&o.call(y,r)&&(m=y);var x=w.prototype=C.prototype=Object.create(m);M.prototype=x.constructor=w,w.constructor=M,w[l]=M.displayName="GeneratorFunction",u.isGeneratorFunction=function(e){var t="function"==typeof e&&e.constructor;return!!t&&(t===M||"GeneratorFunction"===(t.displayName||t.name))},u.mark=function(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,w):(e.__proto__=w,l in e||(e[l]="GeneratorFunction")),e.prototype=Object.create(x),e},u.awrap=function(e){return{__await:e}},E(I.prototype),I.prototype[s]=function(){return this},u.AsyncIterator=I,u.async=function(e,t,n,a){var o=new I(T(e,t,n,a));return u.isGeneratorFunction(t)?o:o.next().then((function(e){return e.done?e.value:o.next()}))},E(x),x[l]="Generator",x[r]=function(){return this},x.toString=function(){return"[object Generator]"},u.keys=function(e){var t=[];for(var n in e)t.push(n);return t.reverse(),function n(){for(;t.length;){var a=t.pop();if(a in e)return n.value=a,n.done=!1,n}return n.done=!0,n}},u.values=D,P.prototype={constructor:P,reset:function(e){if(this.prev=0,this.next=0,this.sent=this._sent=n,this.done=!1,this.delegate=null,this.method="next",this.arg=n,this.tryEntries.forEach(_),!e)for(var t in this)"t"===t.charAt(0)&&o.call(this,t)&&!isNaN(+t.slice(1))&&(this[t]=n)},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 a(a,o){return s.type="throw",s.arg=e,t.next=a,o&&(t.method="next",t.arg=n),!!o}for(var i=this.tryEntries.length-1;i>=0;--i){var r=this.tryEntries[i],s=r.completion;if("root"===r.tryLoc)return a("end");if(r.tryLoc<=this.prev){var l=o.call(r,"catchLoc"),c=o.call(r,"finallyLoc");if(l&&c){if(this.prev=0;--n){var a=this.tryEntries[n];if(a.tryLoc<=this.prev&&o.call(a,"finallyLoc")&&this.prev=0;--t){var n=this.tryEntries[t];if(n.finallyLoc===e)return this.complete(n.completion,n.afterLoc),_(n),f}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.tryLoc===e){var a=n.completion;if("throw"===a.type){var o=a.arg;_(n)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(e,t,a){return this.delegate={iterator:D(e),resultName:t,nextLoc:a},"next"===this.method&&(this.arg=n),f}}}function T(e,t,n,a){var o=t&&t.prototype instanceof C?t:C,i=Object.create(o.prototype),r=new P(a||[]);return i._invoke=function(e,t,n){var a=d;return function(o,i){if(a===v)throw new Error("Generator is already running");if(a===g){if("throw"===o)throw i;return O()}for(n.method=o,n.arg=i;;){var r=n.delegate;if(r){var s=S(r,n);if(s){if(s===f)continue;return s}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if(a===d)throw a=g,n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);a=v;var l=b(e,t,n);if("normal"===l.type){if(a=n.done?g:h,l.arg===f)continue;return{value:l.arg,done:n.done}}"throw"===l.type&&(a=g,n.method="throw",n.arg=l.arg)}}}(e,n,r),i}function b(e,t,n){try{return{type:"normal",arg:e.call(t,n)}}catch(e){return{type:"throw",arg:e}}}function C(){}function M(){}function w(){}function E(e){["next","throw","return"].forEach((function(t){e[t]=function(e){return this._invoke(t,e)}}))}function I(e){var t;this._invoke=function(n,a){function i(){return new Promise((function(t,i){!function t(n,a,i,r){var s=b(e[n],e,a);if("throw"!==s.type){var l=s.arg,c=l.value;return c&&"object"==typeof c&&o.call(c,"__await")?Promise.resolve(c.__await).then((function(e){t("next",e,i,r)}),(function(e){t("throw",e,i,r)})):Promise.resolve(c).then((function(e){l.value=e,i(l)}),(function(e){return t("throw",e,i,r)}))}r(s.arg)}(n,a,t,i)}))}return t=t?t.then(i,i):i()}}function S(e,t){var a=e.iterator[t.method];if(a===n){if(t.delegate=null,"throw"===t.method){if(e.iterator.return&&(t.method="return",t.arg=n,S(e,t),"throw"===t.method))return f;t.method="throw",t.arg=new TypeError("The iterator does not provide a 'throw' method")}return f}var o=b(a,e.iterator,t.arg);if("throw"===o.type)return t.method="throw",t.arg=o.arg,t.delegate=null,f;var i=o.arg;return i?i.done?(t[e.resultName]=i.value,t.next=e.nextLoc,"return"!==t.method&&(t.method="next",t.arg=n),t.delegate=null,f):i:(t.method="throw",t.arg=new TypeError("iterator result is not an object"),t.delegate=null,f)}function k(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function _(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function P(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(k,this),this.reset(!0)}function D(e){if(e){var t=e[r];if(t)return t.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var a=-1,i=function t(){for(;++a2&&void 0!==arguments[2]?arguments[2]:null;return"function"==typeof window.CustomEvent?n=new CustomEvent(t,{detail:a,cancelable:!0}):(n=document.createEvent("CustomEvent")).initCustomEvent(t,!0,!0,a),e.dispatchEvent(n)}function M(e){return e instanceof HTMLElement?e:mt.enabledElementByUID(e)}var w={UINT_16_ARRAY:0,FLOAT_32_ARRAY:1},E=w.UINT_16_ARRAY,I=w.FLOAT_32_ARRAY;function S(e,t,n){var a,o=yt("segmentation").configuration;switch(o.arrayType){case E:a=2;break;case I:a=4;break;default:throw new Error("Unsupported Array Type ".concat(o.arrayType))}e.labelmaps3D[t]={buffer:new ArrayBuffer(n*a),labelmaps2D:[],metadata:[],activeSegmentIndex:1,colorLUTIndex:0,segmentsHidden:[],undo:[],redo:[]}}function k(){var e={};function t(t,n,a){!1===e.hasOwnProperty(t)&&(e[t]={});var o=e[t];!1===o.hasOwnProperty(n)&&(o[n]={data:[]}),o[n].data.push(a)}function n(t,n){if(!1!==e.hasOwnProperty(t)){var a=e[t];if(!1!==a.hasOwnProperty(n))return a[n]}}function a(t){!1!==e.hasOwnProperty(t)&&delete e[t]}return{get:function(e,t){var a=y.cornerstone.getEnabledElement(e);if(a.image)return n(a.image.imageId,t)},add:function(e,n,a){var o=y.cornerstone.getEnabledElement(e);o.image&&t(o.image.imageId,n,a)},clear:function(e){var t=y.cornerstone.getEnabledElement(e);t.image&&a(t.image.imageId)},getImageIdToolState:n,addImageIdToolState:t,clearImageIdToolState:a,saveImageIdToolState:function(t){return e[t]},restoreImageIdToolState:function(t,n){e[t]=n},saveToolState:function(){return e},restoreToolState:function(t){e=t},toolState:e}}var _=k();function P(e){var t=y.cornerstone.getEnabledElement(e);return void 0===t.toolStateManager&&(t.toolStateManager=_),t.toolStateManager}function D(e,t,n){P(e).add(e,t,n),C(e,b.MEASUREMENT_ADDED,{toolType:t,element:e,measurementData:n})}function O(e,t){return P(e).get(e,t)}function L(e,t,n){for(var a=P(e).get(e,t),o=-1,i=0;i0&&void 0!==arguments[0]?arguments[0]:"".concat("cornerstoneTools",":*");return H.a.enable(e)},B=function(){return H.a.disable()},V={series:{},colorLutTables:[]},q=N("store:modules:segmentationModule:metadata");function j(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"increase",n=yt("segmentation").configuration,a=O(e,"stack").data[0].imageIds[0],o=V.series[a];if(o){var i=o.activeLabelmapIndex,r=o.labelmaps3D[i];switch(t){case"increase":r.activeSegmentIndex++,r.activeSegmentIndex>n.segmentsPerLabelmap&&(r.activeSegmentIndex=1);break;case"decrease":r.activeSegmentIndex--,r.activeSegmentIndex<=0&&(r.activeSegmentIndex=n.segmentsPerLabelmap)}}}var z=N("store:modules:segmentationModule:segmentVisibility");var W=N("store:modules:segmentationModule:getLabelmaps3D");function G(e){var t=M(e);if(t){var n=O(t,"stack");if(n){var a,o,i=n.data[0],r=i.imageIds[0],s=V.series[r];return s&&(a=s.labelmaps3D,o=s.activeLabelmapIndex),{labelmaps3D:a,activeLabelmapIndex:o,currentImageIdIndex:i.currentImageIdIndex}}W.error("Consumers must define stacks in their application if using segmentations in cornerstoneTools.")}}function Y(e,t){var n=G(e),a=n.labelmaps3D,o=n.activeLabelmapIndex;return a[t=void 0!==t?t:o]}var X=w.UINT_16_ARRAY,K=w.FLOAT_32_ARRAY;function Z(e,t){var n=M(e);if(n){var a=G(n).labelmaps3D;if(!a)return[];var o,i,r=yt("segmentation").configuration;switch(r.arrayType){case X:o="Uint16Array",i="2";break;case K:o="Float32Array",i="4";break;default:throw new Error("Unsupported Array Type ".concat(r.arrayType))}var s=V.colorLutTables;if(void 0!==t){var l=a[t];return l?{labelmapIndex:t,bytesPerVoxel:i,type:o,buffer:l.buffer,colorLUT:s[l.colorLUTIndex]}:void 0}for(var c=[],u=0;u4&&void 0!==arguments[4]&&arguments[4],i=function(e,t){return t*a+e};e.forEach((function(e){var a=i.apply(void 0,Q()(e));o?ee(a,t,n):t[a]=n}))}function ne(e,t,n,a){for(var o=e.detail,i=t.pixelData,r=t.segmentIndex,s=o.image,l=s.width,c=s.height,u=0;u5&&void 0!==arguments[5]?arguments[5]:"inside",r=e.detail.image.width,s=t.pixelData,l=t.segmentIndex,c=oe()(a,2),u=c[0],d=c[1],h=oe()(o,2),v=h[0],g=h[1];"outside"===i&&ne(e,t,a,o);for(var f=u;f5&&void 0!==arguments[5]?arguments[5]:"inside",r=t.pixelData,s=t.segmentIndex;if(void 0!==r&&void 0!==s){var l=e.detail.image.width,c=oe()(a,2),u=c[0],d=c[1],h=oe()(o,2),v=h[0],g=h[1];"outside"===i&&ce(e,t,a,o);for(var f=u;f2&&void 0!==arguments[2]?arguments[2]:{},a=n.onFlood||function(){},o=n.onBoundary||function(){},i=n.equals||fe,r=n.diagonals||!1,s=T(t),l=C(),c=[],u=[],d={},h={};for(c.push({currentArgs:t});c.length>0;)v(c.pop());return{flooded:u,boundaries:w()};function v(e){var t=e.currentArgs,n=e.previousArgs;g(t)||(f(t),m(t)?(p(t),x(t)):y(n))}function g(e){return!0===d[e]}function f(e){d[e]=!0}function m(e){var t=b(T,[e]);return b(i,[t,s])}function p(e){u.push(e),a.apply(void 0,Q()(e))}function y(e){h[e]=e,o.apply(void 0,Q()(e))}function x(e){for(var t=0;t3&&void 0!==arguments[3]?arguments[3]:0,o=arguments.length>4&&void 0!==arguments[4]?arguments[4]:0,i=Math.floor(a),r=Math.floor(o);if(1===e)return[[i,r]];for(var s=[],l=0,c=-e;c<=e;c++){var u=r+c;if(!(u>t||u<0))for(var d=-e;d<=e;d++){var h=i+d;h>=n||h<0||d*d+c*cn.y?n.y++:n.y--:t.y===n.y?t.x>n.x?n.x++:n.x--:t.y>n.y?t.x>n.x?Ee(n,t):Ie(n,t):t.x>n.x?Se(n,t):ke(n,t),a.push({x:n.x,y:n.y});return a.pop(),a};function Ee(e,t){var n=_e(e,t);switch(De([Pe(n,Me.up),Pe(n,Me.right),Pe(n,Me.upRight)])){case 0:e.y++;break;case 1:e.x++;break;case 2:e.y++,e.x++}}function Ie(e,t){var n=_e(e,t);switch(De([Pe(n,Me.up),Pe(n,Me.left),Pe(n,Me.upLeft)])){case 0:e.y++;break;case 1:e.x--;break;case 2:e.y++,e.x--}}function Se(e,t){var n=_e(e,t);switch(De([Pe(n,Me.down),Pe(n,Me.right),Pe(n,Me.downRight)])){case 0:e.y--;break;case 1:e.x++;break;case 2:e.y--,e.x++}}function ke(e,t){var n=_e(e,t);switch(De([Pe(n,Me.down),Pe(n,Me.left),Pe(n,Me.downLeft)])){case 0:e.y--;break;case 1:e.x--;break;case 2:e.y--,e.x--}}function _e(e,t){var n=y.cornerstoneMath.point.distance(e,t);return{x:(t.x-e.x)/n,y:(t.y-e.y)/n}}function Pe(e,t){return e.x*t.x+e.y*t.y}function De(e){var t=e[0]>e[1]?0:1;return e[2]>e[t]&&(t=2),t}function Oe(e,t){var n=yt("segmentation").getters;t=void 0===t?n.activeLabelmapIndex(e):t,y.cornerstone.triggerEvent(e,b.LABELMAP_MODIFIED,{labelmapIndex:t})}function Le(e,t){for(var n=[],a=0;a3&&void 0!==arguments[3]?arguments[3]:[],o=arguments.length>4?arguments[4]:void 0,i=arguments.length>5?arguments[5]:void 0,r=(arguments.length>6&&void 0!==arguments[6]&&arguments[6],yt("segmentation").configuration),s=V.series[e];s||(V.series[e]={activeLabelmapIndex:n,labelmaps3D:[]},s=V.series[e]),s.labelmaps3D[n]={buffer:t,labelmaps2D:[],metadata:a,activeSegmentIndex:1,colorLUTIndex:0,segmentsHidden:[],undo:[],redo:[]};for(var l=s.labelmaps3D[n].labelmaps2D,c=t.byteLength/o,u=0;u=0&&o=0}var Ye=N("store:modules:segmentationModule:getSegmentOfActiveLabelmapAtEvent");var Xe=N("store:modules:segmentationModule:setColorLUT");function Ke(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],n=yt("segmentation").configuration.segmentsPerLabelmap;t?(!function(e,t){e.lengtht&&Xe.warn("segmentsPerLabelmap is set to ".concat(t,", and the provided colorLUT provides ").concat(e.length,". Using the first ").concat(t," colors from the LUT."))}(t,n),t.length0&&void 0!==arguments[0]?arguments[0]:255,t=[],n=0;n=360&&(Qe-=360),Qe}var tt=.6,nt=.82,at=.3,ot=.07;function it(){(tt+=ot)>nt&&(tt=at+(tt-nt));return tt}function rt(e){var t,n,a,o=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:.6,r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:255,s=(1-Math.abs(2*i-1))*o,l=s*(1-Math.abs(e/60%2-1)),c=i-s/2;return e<60?(t=s,n=l,a=0):e<120?(t=l,n=s,a=0):e<180?(t=0,n=s,a=l):e<240?(t=0,n=l,a=s):e<300?(t=l,n=0,a=s):e<360&&(t=s,n=0,a=l),[255*(t+c),255*(n+c),255*(a+c),r]}var st=N("store:modules:segmentationModule:getBrushColor");var lt={renderOutline:!0,renderFill:!0,shouldRenderInactiveLabelmaps:!0,radius:10,minRadius:1,maxRadius:50,fillAlpha:.2,fillAlphaInactive:.1,outlineAlpha:.7,outlineAlphaInactive:.35,outlineWidth:3,storeHistory:!0,segmentsPerLabelmap:65535,arrayType:w.UINT_16_ARRAY},ct=N("util:segmentation:labelmap3DHistory");function ut(e,t,n){var a=e.labelmaps2D;t.forEach((function(e){for(var t=e.imageIdIndex,o=e.diff,i=a[t].pixelData,r=0;rr?r=e:e1&&void 0!==arguments[1]&&arguments[1],n=M(e);if(n){var a=O(n,"stack");if(a){var o,i=a.data[0].imageIds[0],r=V.series[i];if(r){var s=r.activeLabelmapIndex,l=r.labelmaps3D[s],c=l.activeSegmentIndex;o=V.colorLutTables[l.colorLUTIndex][c]}else o=V.colorLutTables[0][1];return t?"rgba(".concat(o[0],", ").concat(o[1],", ").concat(o[2],", 1.0 )"):"rgba(".concat(o[0],", ").concat(o[1],", ").concat(o[2],", 0.8 )")}st.error("Consumers must define stacks in their application if using segmentations in cornerstoneTools.")}},labelmapBuffers:Z,activeLabelmapBuffer:function(e){var t=M(e);if(t){var n=O(t,"stack").data[0].imageIds[0],a=V.series[n];if(a)return Z(t,a.activeLabelmapIndex)}},colorLUT:Ze,colorForSegmentIndexColorLUT:function(e,t){return Ze(e)[t]}},setters:{metadata:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,n=arguments.length>2?arguments[2]:void 0,a=arguments.length>3?arguments[3]:void 0,o=M(e);if(o){var i=y.cornerstone,r=O(o,"stack").data[0],s=r.imageIds[0],l=V.series[s];if(l||(V.series[s]={labelmapIndex:t,labelmaps3D:[]},l=V.series[s]),!l.labelmaps3D[t]){var c=i.getEnabledElement(o).image;S(l,t,c.rows*c.columns*r.imageIds.length)}l.labelmaps3D[t].metadata[n]=a}},labelmap3DForElement:function(e,t,n){var a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:[],o=arguments.length>4?arguments[4]:void 0,i=arguments.length>5&&void 0!==arguments[5]?arguments[5]:0,r=M(e);if(r){var s=O(r,"stack"),l=s.data[0].imageIds.length;He(s.data[0].imageIds[0],t,n,a,l,o,i),Oe(r,n)}},labelmap3DByFirstImageId:He,incrementActiveSegmentIndex:function(e){var t=M(e);t&&j(t,"increase")},decrementActiveSegmentIndex:function(e){var t=M(e);t&&j(t,"decrease")},activeSegmentIndex:function(e,t){var n=M(e);if(n){var a=O(n,"stack").data[0].imageIds[0],o=V.series[a];if(o){var i=o.activeLabelmapIndex,r=o.labelmaps3D[i],s=yt("segmentation").configuration;t<=0?t=1:t>s.segmentsPerLabelmap&&(t=s.segmentsPerLabelmap),r.activeSegmentIndex=t}}},toggleSegmentVisibility:function(e,t,n){if(t){var a=M(e);if(a){var o=O(a,"stack").data[0].imageIds[0],i=V.series[o];if(i){if(n=void 0===n?i.activeLabelmapIndex:n,i.labelmaps3D[n]){var r=i.labelmaps3D[n].segmentsHidden;return r[t]=!r[t],!r[t]}z.warn("No labelmap3D of labelmap index ".concat(n," on stack."))}else z.warn("brushStackState is undefined")}}},updateSegmentsOnLabelmap2D:function(e){e.segmentsOnLabelmap=$(e.pixelData)},deleteSegment:function(e,t,n){if(t){var a=M(e);if(a){var o=O(a,"stack").data[0].imageIds[0],i=V.series[o];if(i){n=void 0===n?i.activeLabelmapIndex:n;var r=i.labelmaps3D[n];if(r){delete r.metadata[t];for(var s=r.labelmaps2D,l=0;l1&&void 0!==arguments[1]?arguments[1]:0,n=M(e);if(n){var a=y.cornerstone,o=O(n,"stack").data[0],i=a.getEnabledElement(n).image,r=i.rows*i.columns*o.imageIds.length,s=o.imageIds[0],l=V.series[s];l?(l.activeLabelmapIndex=t,l.labelmaps3D[t]||S(l,t,r)):(V.series[s]={activeLabelmapIndex:t,labelmaps3D:[]},S(l=V.series[s],t,r)),a.updateImage(n)}},radius:function(e){var t=yt("segmentation").configuration;t.radius=Math.min(Math.max(e,t.minRadius),t.maxRadius)},pushState:function(e,t,n){var a=Y(e,n);a.undo.push(t),a.redo=[]},undo:function(e,t){var n=Y(e,t),a=n.undo,o=n.redo;if(a.length){var i=a.pop();ut(n,i,1),o.push(i),y.cornerstone.updateImage(e)}else ct.warn("No undos left.")},redo:function(e,t){var n=Y(e,t),a=n.undo,o=n.redo;if(o.length){var i=o.pop();ut(n,i,2),a.push(i),y.cornerstone.updateImage(e)}else ct.warn("No redos left.")}}},ht={iconSize:16,viewBox:{x:16,y:16},mousePoint:{x:8,y:8},mousePointerGroupString:'\n \n \n '},vt={configuration:ht,getters:{defaultOptions:function(){return ht}},setters:{defaultOptions:function(e){Object.assign(ht,e)}}},gt={configuration:{mouseEnabled:!0,touchEnabled:!0,globalToolSyncEnabled:!1,showSVGCursors:!1,autoResizeViewports:!0}},ft=(N("store:modules:storeLogger"),{globalTools:{},globalToolChangeHistory:[],enabledElements:[],tools:[],isToolLocked:!1,activeMultiPartTool:null,mousePositionImage:{},clickProximity:6,touchProximity:10,handleRadius:6,deleteIfHandleOutsideImage:!0,preventHandleOutsideImage:!1,svgCursorUrl:null}),mt={mouseTools:function(){return ft.tools.filter((function(e){return e.supportedInteractionTypes.includes("Mouse")}))},touchTools:function(){return ft.tools.filter((function(e){return e.supportedInteractionTypes.includes("Touch")}))},enabledElementByUID:function(e){return ft.enabledElements.find((function(t){return y.cornerstone.getEnabledElement(t).uuid===e}))}},pt={segmentation:dt,cursor:vt,globalConfiguration:gt};function yt(e){return pt[e]}var xt={modules:pt,state:ft,getters:mt},Tt=function(e,t){return ft.tools.find((function(n){return n.element===e&&n.name===t}))},bt=pt.globalConfiguration;function Ct(e,t){if(bt.configuration.showSVGCursors){var n=t.getIconWithPointerSVG(),a=t.mousePoint,o=window.URL.createObjectURL(n);e.style.cursor="url('".concat(o,"') ").concat(a,", auto"),ft.svgCursorUrl=o}}function Mt(e){bt.configuration.showSVGCursors&&wt(e,"none")}function wt(e,t){ft.svgCursorUrl&&window.URL.revokeObjectURL(ft.svgCursorUrl),ft.svgCursorUrl=null,e.style.cursor=t}var Et=yt("globalConfiguration"),It=N("store:setToolMode"),St=function(e,t,n,a){void 0===a&&Array.isArray(n)&&(a=n,n=null);var o=Tt(e,t);o&&(function(e,t,n,a){t.supportedInteractionTypes.forEach((function(o){if(void 0===a||a.includes(o)){var i=Ft[o];i?i(t,e,n):It.warn("Unable to resolve input conflicts for type %s",o)}})),xt.state.tools.filter((function(t){return t.element===e&&"active"===t.mode&&t.supportedInteractionTypes.length>0})).forEach((function(t){var n=!1;t.supportedInteractionTypes.forEach((function(e){t.options["is".concat(e,"Active")]&&(n=!0)})),n||(It.log("Setting tool %s's to PASSIVE",t.name),Lt(e,t.name))}))}(e,o,n,a),o.supportedInteractionTypes.forEach((function(e){void 0===a||a.includes(e)?n["is".concat(e,"Active")]=!0:n["is".concat(e,"Active")]=!1})),Et.configuration.showSVGCursors&&o.supportedInteractionTypes.includes("Mouse")&&function(e,t,n){var a;a="number"==typeof t?[t]:t.mouseButtonMask;a.includes(1)&&(n.svgCursor?Ct(n.element,n.svgCursor):n.hideDefaultCursor?Mt(e):function(e){wt(e,"initial")}(e))}(e,n,o)),Rt("active",null,e,t,n)};var kt=function(e,t,n){Nt("active",e,t,n),xt.state.enabledElements.forEach((function(a){St(a,e,t,n)}))},_t=Rt.bind(null,"disabled",null),Pt=Ht.bind(null,"disabled",null),Dt=Rt.bind(null,"enabled",null),Ot=Ht.bind(null,"enabled",null),Lt=Rt.bind(null,"passive",b.TOOL_DEACTIVATED),At=Ht.bind(null,"passive",b.TOOL_DEACTIVATED);function Rt(e,t,n,a,o){var i,r,s=Tt(n,a);s?(o=Bt(o),Array.isArray(o.mouseButtonMask)&&0!==o.mouseButtonMask.length&&Array.isArray(s.options.mouseButtonMask)&&(o.mouseButtonMask=(i=o.mouseButtonMask,r=s.options.mouseButtonMask,i.concat(r).reduce((function(e,t){return-1===e.indexOf(t)&&e.push(t),e}),[]))),s.mode=e,s.mergeOptions(o),s["".concat(e,"Callback")]&&s["".concat(e,"Callback")](n,o),t&&C(n,t,{options:o,toolName:a,type:t})):It.warn('Unable to find tool "%s" for enabledElement',a)}function Ht(e,t,n,a){Nt(e,n,a),xt.state.enabledElements.forEach((function(o){Rt(e,t,o,n,a)}))}function Ut(e,t,n){var a="is".concat(e,"Active"),o=xt.state.tools.find((function(e){return e.element===n&&"active"===e.mode&&!0===e.options[a]}));o&&(It.log("Setting tool %s's %s to false",o.name,a),o.options[a]=!1)}function Nt(e,t,n,a){if(Et.configuration.globalToolSyncEnabled){var o={mode:e,args:[t,n]};a&&o.push(a),xt.state.globalToolChangeHistory.push(o);xt.state.globalToolChangeHistory.length>50&&xt.state.globalToolChangeHistory.shift();var i=xt.state.globalTools[t];if(i)if("active"===e){var r=function(e,t,n){void 0===n&&Array.isArray(t)&&(n=t,t=null);var a=[],o=xt.state.globalTools[e];if(o){var i=new o.tool(o.props);i.supportedInteractionTypes.forEach((function(e){if(void 0===n||n.includes(e))if("Mouse"===e){var o=Bt(t).mouseButtonMask;Array.isArray(o)&&o.length>0?o.forEach((function(t){return a.push("".concat(e,"-").concat(t))})):Array.isArray(o)&&0===o.length&&a.push("".concat(e,"-DELETE"))}else"MultiTouch"===e?a.push("".concat(e,"-").concat(i.configuration.touchPointers)):a.push(e)}))}return a}(t,n,a);Object.keys(xt.state.globalTools).forEach((function(e){var t=xt.state.globalTools[e];t.activeBindings=t.activeBindings.filter((function(e){return!r.includes(e)}))})),r.some((function(e){return e.includes("Mouse-DELETE")}))&&(i.activeBindings=i.activeBindings.filter((function(e){return!e.includes("Mouse")})),r=r.filter((function(e){return!e.includes("Mouse")}))),i.activeBindings=i.activeBindings.concat(r)}else i.activeBindings=[];else It.warn("setToolMode call for tool not available globally: ".concat(t))}}var Ft={Mouse:function(e,t,n){var a=Bt(n).mouseButtonMask;if(Array.isArray(a)&&a.length>0){var o=xt.state.tools.find((function(e){return e.element===t&&"active"===e.mode&&!0===e.options.isMouseActive&&Array.isArray(e.options.mouseButtonMask)&&e.options.mouseButtonMask.some((function(e){return a.includes(e)}))}));o&&(o.options.mouseButtonMask=o.options.mouseButtonMask.filter((function(e){return!a.includes(e)})),0===o.options.mouseButtonMask.length&&(o.options.isMouseActive=!1))}},MouseWheel:Ut.bind(void 0,"MouseWheel"),Touch:function(e,t){var n=xt.state.tools.find((function(e){return e.element===t&&"active"===e.mode&&!0===e.options.isTouchActive})),a=xt.state.tools.find((function(e){return e.element===t&&"active"===e.mode&&!0===e.options.isMultiTouchActive&&1===e.configuration.touchPointers}));n&&(It.log("Setting tool %s's isTouchActive to false",n.name),n.options.isTouchActive=!1),a&&(It.log("Setting tool %s's isTouchActive to false",a.name),a.options.isMultiTouchActive=!1)},TouchPinch:Ut.bind(void 0,"TouchPinch"),TouchRotate:Ut.bind(void 0,"TouchRotate"),DoubleTap:Ut.bind(void 0,"DoubleTap"),MultiTouch:function(e,t){var n,a=xt.state.tools.find((function(n){return n.element===t&&"active"===n.mode&&!0===n.options.isMultiTouchActive&&n.configuration.touchPointers===e.configuration.touchPointers}));1===e.configuration.touchPointers&&(n=xt.state.tools.find((function(e){return e.element===t&&"active"===e.mode&&!0===e.options.isTouchActive}))),a&&(It.log("Setting tool %s's isMultiTouchActive to false",a.name),a.options.isMultiTouchActive=!1),n&&(It.log("Setting tool %s's isTouchActive to false",n.name),n.options.isTouchActive=!1)}};function Bt(e){return Array.isArray(e)?e={mouseButtonMask:e}:e!==Object(e)&&(e={mouseButtonMask:[e]}),e.hasOwnProperty("mouseButtonMask")||(e.mouseButtonMask=[]),Array.isArray(e.mouseButtonMask)||(e.mouseButtonMask=[e.mouseButtonMask]),e.mouseButtonMask=e.mouseButtonMask.filter((function(e){return"number"==typeof e&&0!==e})),e}var Vt={passiveCallback:function(e){_t(e,this.name)},enabledCallback:function(e){St(e,this.name)}};var qt={passiveCallback:function(e){_t(e,this.name)},activeCallback:function(e){Dt(e,this.name)}},jt=function(e,t){e.save(),t(e),e.restore()},zt=1,Wt=2;var Gt={setToolWidth:function(e){zt=e},getToolWidth:function(){return zt},setActiveWidth:function(e){Wt=e},getActiveWidth:function(){return Wt}},Yt=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=arguments.length>2?arguments[2]:void 0,a=t.color,o=t.lineWidth,i=t.fillStyle,r=t.lineDash,s=t.shouldDrawLines,l=void 0===s||s;e.beginPath(),e.strokeStyle=a||e.strokeStyle,e.lineWidth=o||void 0===o&&Gt.getToolWidth()||e.lineWidth,r&&e.setLineDash(r),n(e),i&&(e.fillStyle=i,e.fill()),l&&e.stroke(),r&&e.setLineDash([])};function Xt(e,t,n,a,o){var i=arguments.length>5&&void 0!==arguments[5]?arguments[5]:"pixel";Yt(e,o,(function(e){"pixel"===i&&(n=y.cornerstone.pixelToCanvas(t,n),a=y.cornerstone.pixelToCanvas(t,a)),e.moveTo(n.x,n.y),e.lineTo(a.x,a.y)}))}var Kt=function(e,t,n,a,o){var i=arguments.length>5&&void 0!==arguments[5]?arguments[5]:"pixel";Yt(e,o,(function(e){"pixel"===i&&(n=y.cornerstone.pixelToCanvas(t,n),a=a.map((function(e){return y.cornerstone.pixelToCanvas(t,e)}))),e.moveTo(n.x,n.y),a.forEach((function(t){var n=t.x,a=t.y;e.lineTo(n,a)}))}))},Zt=function(e,t,n,a,o){var i=Math.atan2(n.y-t.y,n.x-t.x),r={color:a,lineWidth:o};Xt(e,void 0,t,n,r,"canvas"),r={color:a,lineWidth:o,fillStyle:a};var s=[{x:n.x-10*Math.cos(i-Math.PI/7),y:n.y-10*Math.sin(i-Math.PI/7)},{x:n.x-10*Math.cos(i+Math.PI/7),y:n.y-10*Math.sin(i+Math.PI/7)},n];Kt(e,void 0,n,s,r,"canvas")},$t=function(e,t,n,a,o){var i=arguments.length>5&&void 0!==arguments[5]?arguments[5]:"pixel";"pixel"===i&&(n=y.cornerstone.pixelToCanvas(t,n)),Yt(e,o,(function(e){e.arc(n.x,n.y,a,0,2*Math.PI)}))};function Jt(e){var t=y.cornerstoneMath;return e instanceof t.Vector3?e:new t.Vector3(e[0],e[1],e[2])}function Qt(e,t){var n=Jt(t.rowCosines),a=Jt(t.columnCosines),o=Jt(t.imagePositionPatient),i=e.clone().sub(o);return{x:n.dot(i)/t.columnPixelSpacing,y:a.dot(i)/t.rowPixelSpacing}}function en(e,t){var n=Jt(t.rowCosines),a=Jt(t.columnCosines),o=Jt(t.imagePositionPatient),i=n.clone().multiplyScalar(e.x);i.multiplyScalar(t.columnPixelSpacing);var r=a.clone().multiplyScalar(e.y);r.multiplyScalar(t.rowPixelSpacing);var s=i.add(r);return s.add(o),s}function tn(e,t){var n=Jt(e.rowCosines),a=Jt(e.columnCosines),o=Jt(e.imagePositionPatient),i=Jt(t.rowCosines),r=Jt(t.columnCosines),s=Jt(t.imagePositionPatient),l=n.clone().cross(a),c=new y.cornerstoneMath.Plane;c.setFromNormalAndCoplanarPoint(l,o);var u=i.clone().cross(r),d=new y.cornerstoneMath.Plane;d.setFromNormalAndCoplanarPoint(u,s);var h=d.clone().intersectPlane(c),v=h.origin,g=h.direction,f=en({x:t.columns,y:t.rows},t),m=s.distanceTo(f),p=new y.cornerstoneMath.Line3;p.start=v,p.end=v.clone().add(g.multiplyScalar(m));var x=function(e,t){var n=[];return Object.keys(t).forEach((function(a){var o=t[a],i=e.intersectLine(o);i&&n.push(i)})),n}(p,function(e){var t=en({x:0,y:0},e),n=en({x:e.columns,y:0},e),a=en({x:0,y:e.rows},e),o=en({x:e.columns,y:e.rows},e);return{top:new y.cornerstoneMath.Line3(t,n),left:new y.cornerstoneMath.Line3(t,a),right:new y.cornerstoneMath.Line3(n,o),bottom:new y.cornerstoneMath.Line3(a,o)}}(t));if(2===x.length)return{start:x[0],end:x[1]}}function nn(e,t,n){var a=n*(Math.PI/180);return{x:Math.cos(a)*(e.x-t.x)-Math.sin(a)*(e.y-t.y)+t.x,y:Math.sin(a)*(e.x-t.x)+Math.cos(a)*(e.y-t.y)+t.y}}var an=function(e,t,n,a,o){var i=arguments.length>5&&void 0!==arguments[5]?arguments[5]:"pixel",r=arguments.length>6&&void 0!==arguments[6]?arguments[6]:0;"pixel"===i&&(n=y.cornerstone.pixelToCanvas(t,n),a=y.cornerstone.pixelToCanvas(t,a));var s=y.cornerstone.getViewport(t),l=t.clientWidth,c=t.clientHeight,u=s.scale,d=s.translation,h=s.rotation-r,v={x:l/2+d.x*u,y:c/2+d.y*u};Math.abs(h)>.05&&(n=nn(n,v,-h),a=nn(a,v,-h));var g=Math.abs(n.x-a.x),f=Math.abs(n.y-a.y),m=Math.min(n.x,a.x),p=Math.min(n.y,a.y),x={x:m+g/2,y:p+f/2};Math.abs(h)>.05&&(x=nn(x,v,h));var T=h*Math.PI/180;Yt(e,o,(function(e){e.ellipse(x.x,x.y,g/2,f/2,T,0,2*Math.PI),e.closePath()}))},on="white",rn="greenyellow",sn="transparent";var ln={setFillColor:function(e){sn=e},getFillColor:function(){return sn},setToolColor:function(e){on=e},getToolColor:function(){return on},setActiveColor:function(e){rn=e},getActiveColor:function(){return rn},getColorIfActive:function(e){return e.color?e.color:e.active?rn:on}},cn=function(e,t,n){var a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{},o=t.element,i=ln.getToolColor();e.strokeStyle=a.color||i;for(var r=Object.keys(n),s=function(t){var i=r[t],s=n[i];if(!0===s.drawnIndependently)return"continue";if(!0===a.drawHandlesIfActive&&!s.active)return"continue";var l=s.active?Gt.getActiveWidth():Gt.getToolWidth(),c=a.fill;Yt(e,{lineWidth:l,fillStyle:c},(function(e){var t=y.cornerstone.pixelToCanvas(o,s),n=s.radius||a.handleRadius||ft.handleRadius;e.arc(t.x,t.y,n,0,2*Math.PI)}))},l=0;l4&&void 0!==arguments[4]?arguments[4]:"pixel";Yt(e,a,(function(e){n.forEach((function(n){var a=n.start,i=n.end;if("pixel"===o){var r=y.cornerstone;a=r.pixelToCanvas(t,a),i=r.pixelToCanvas(t,i)}e.moveTo(a.x,a.y),e.lineTo(i.x,i.y)}))}))},dn=function(e,t,n,a,o,i){var r=e.length>0?y.cornerstoneMath.point.findClosestPoint(e,t):t,s=[{x:n.left+n.width/2,y:n.top},{x:n.left,y:n.top+n.height/2},{x:n.left+n.width/2,y:n.top+n.height},{x:n.left+n.width,y:n.top+n.height/2}];Xt(a,void 0,r,y.cornerstoneMath.point.findClosestPoint(s,r),{color:o,lineWidth:i,lineDash:[2,3]},"canvas")},hn=15,vn="".concat(hn,"px Arial"),gn="transparent";var fn={setFont:function(e){vn=e},getFont:function(){return vn},setFontSize:function(e){hn=e},getFontSize:function(){return hn},setBackgroundColor:function(e){gn=e},getBackgroundColor:function(){return gn}},mn=function(e,t,n,a,o){var i=fn.getFontSize();e.font=fn.getFont(),e.textBaseline="top",e.fillStyle=a,n.forEach((function(n,a){e.fillText(n,t.left+o,t.top+o+a*(i+o))}))},pn=function(e,t,n){e.fillStyle=n,e.fillRect(t.left,t.top,t.width,t.height)};function yn(e,t,n){var a=fn.getFont(),o=e.font;a&&a!==o&&(e.font=a);var i=e.measureText(t).width;return a&&a!==o&&(e.font=o),i+2*n}var xn=function(e,t,n,a,o,i){"[object Array]"!==Object.prototype.toString.call(t)&&(t=[t]);var r=fn.getFontSize(),s=fn.getBackgroundColor(),l=0;t.forEach((function(t){var n=yn(e,t,5);l=Math.max(l,n)}));var c={width:l,height:5+t.length*(r+5)};return jt(e,(function(e){e.strokeStyle=o,i&&i.centering&&!0===i.centering.x&&(n-=c.width/2),i&&i.centering&&!0===i.centering.y&&(a-=c.height/2),c.left=n,c.top=a;var r=i&&!0===i.debug?"#FF0000":s;pn(e,c,r),mn(e,c,t,o,5)})),c},Tn=function(e,t,n,a,o,i,r,s,l,c){var u=y.cornerstone,d=u.pixelToCanvas(t,n);l&&(d.x+=l);var h={centering:{x:!1,y:c}};if(n.boundingBox=xn(e,a,d.x,d.y,r,h),n.hasMoved){var v=i(o).map((function(e){return u.pixelToCanvas(t,e)}));dn(v,d,n.boundingBox,e,r,s)}},bn=function(e,t,n,a,o){var i=arguments.length>5&&void 0!==arguments[5]?arguments[5]:"pixel",r=arguments.length>6&&void 0!==arguments[6]?arguments[6]:0;if("pixel"===i){var s=y.cornerstone;n=s.pixelToCanvas(t,n),a=s.pixelToCanvas(t,a)}var l=y.cornerstone.getViewport(t),c=t.clientWidth,u=t.clientHeight,d=l.scale,h=l.translation,v=l.rotation-r,g={x:c/2+h.x*d,y:u/2+h.y*d};Math.abs(v)>.05&&(n=nn(n,g,-v),a=nn(a,g,-v));var f=Math.abs(n.x-a.x),m=Math.abs(n.y-a.y);n={x:Math.min(n.x,a.x),y:Math.min(n.y,a.y)},a={x:n.x+f,y:n.y+m};var p={x:n.x+f,y:n.y},x={x:n.x,y:n.y+m};Math.abs(v)>.05&&(n=nn(n,g,v),a=nn(a,g,v),p=nn(p,g,v),x=nn(x,g,v)),Yt(e,o,(function(e){e.moveTo(n.x,n.y),e.lineTo(p.x,p.y),e.moveTo(p.x,p.y),e.lineTo(a.x,a.y),e.moveTo(a.x,a.y),e.lineTo(x.x,x.y),e.moveTo(x.x,x.y),e.lineTo(n.x,n.y)}))},Cn=function(e){var t=e.getContext("2d");return t.setTransform(1,0,0,1,0,0),t},Mn=function(e,t){return void 0===e?t:e},wn=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};t.shadow&&(e.shadowColor=Mn(t.shadowColor,"#000000"),e.shadowBlur=Mn(t.shadowBlur,0),e.shadowOffsetX=Mn(t.shadowOffsetX,1),e.shadowOffsetY=Mn(t.shadowOffsetY,1))},En=function(e,t,n){if(n.hflip||n.vflip||n.rotation){var a={x:t.width/2+n.translation.x*n.scale,y:t.height/2+n.translation.y*n.scale};e.translate(a.x,a.y),n.rotation&&e.rotate(n.rotation*Math.PI/180),n.vflip&&e.scale(1,-1),n.hflip&&e.scale(-1,1),e.translate(-a.x,-a.y)}},In=function(e){e.setTransform(1,0,0,1,0,0)},Sn=function(e){return 0===Object.keys(e).length&&e.constructor===Object},kn=yt("segmentation"),_n=kn.getters,Pn=kn.setters;function Dn(){this.handles={start:{},end:{}}}function On(e){var t=e.detail.element,n=e.detail.currentPoints.image;return Sn(this.handles.start)?this.handles.start=n:(this.handles.end=n,this._applyStrategy(e)),y.cornerstone.updateImage(t),!0}function Ln(e){var t=e.detail,n=t.element,a=t.currentPoints.image;this.handles.end=a,y.cornerstone.updateImage(n)}function An(e){e.detail.handles=this.handles;var t=e.detail.element,n=_n.labelmap2D(t),a=n.labelmap2D,o=n.labelmap3D,i=n.currentImageIdIndex,r=a.pixelData,s=r.slice(),l={points:{start:{x:this.handles.start.x,y:this.handles.start.y},end:{x:this.handles.end.x,y:this.handles.end.y}},pixelData:r,segmentIndex:o.activeSegmentIndex,segmentationMixinType:"circleSegmentationMixin"};this.applyActiveStrategy(e,l);var c={imageIdIndex:i,diff:Le(s,r)};Pn.pushState(this.element,[c]),Pn.updateSegmentsOnLabelmap2D(a),y.cornerstone.updateImage(t),this._resetHandles()}var Rn={postTouchStartCallback:On,postMouseDownCallback:On,mouseClickCallback:On,touchDragCallback:Ln,mouseDragCallback:Ln,mouseMoveCallback:Ln,touchEndCallback:An,mouseUpCallback:An,initializeMixin:Dn,renderToolData:function(e){var t=this,n=e.detail,a=n.element,o=_n.brushColor(a,!0),i=Cn(n.canvasContext.canvas),r=y.cornerstoneMath.point.distance;jt(i,(function(e){if(!t.handles)return null;var n=y.cornerstone.pixelToCanvas(a,t.handles.start),i=y.cornerstone.pixelToCanvas(a,t.handles.end),s=r(n,i);$t(e,a,t.handles.start,s,{color:o})}))},_resetHandles:Dn,_applyStrategy:An},Hn=N("tools:ScissorsTool"),Un=yt("segmentation"),Nn=Un.getters,Fn=Un.setters;function Bn(e){var t=e.detail.element,n=e.detail.currentPoints.image,a=this.handles.points;if(!a.length)return Hn.warn("Something went wrong, empty handles detected."),null;a.push({x:n.x,y:n.y,lines:[]}),this.currentHandle+=1,y.cornerstone.updateImage(t)}function Vn(e){var t=e.detail,n=e.detail.element;this._addPoint(t),y.cornerstone.updateImage(n)}function qn(e){var t=this.handles.points,n=e.detail.element,a=Nn.labelmap2D(n),o=a.labelmap2D,i=a.labelmap3D,r=a.currentImageIdIndex,s=o.pixelData,l=s.slice(),c={points:t,pixelData:s,segmentIndex:i.activeSegmentIndex,segmentationMixinType:"freehandSegmentationMixin"};this.applyActiveStrategy(e,c);var u={imageIdIndex:r,diff:Le(l,s)};Fn.pushState(this.element,[u]),Fn.updateSegmentsOnLabelmap2D(o),y.cornerstone.updateImage(n),this._resetHandles()}function jn(){this.handles={points:[]},this.currentHandle=0}var zn={postTouchStartCallback:Bn,postMouseDownCallback:Bn,mouseClickCallback:Bn,touchDragCallback:Vn,mouseDragCallback:Vn,mouseMoveCallback:Vn,touchEndCallback:qn,mouseUpCallback:qn,initializeMixin:jn,renderToolData:function(e){var t=e.detail,n=t.element,a=Nn.brushColor(n,!0),o=Cn(t.canvasContext.canvas),i=this.handles.points;i.length<2||jt(o,(function(e){for(var t=0;t1)for(var n=0;nu||v<0||v>c)){var g=i.radius,f=r.canvasContext,m=r.element,p=o.brushColor(m,this._drawing);f.setTransform(1,0,0,1,0,0);var x=g*s.scale,T=n.pixelToCanvas(m,t);f.beginPath(),f.strokeStyle=p,f.ellipse(T.x,T.y,x,x,0,0,2*Math.PI),f.stroke()}}}}},ta=function(e){return e&&"object"===T()(e)&&"[object RegExp]"!==Object.prototype.toString.call(e)&&"[object Date]"!==Object.prototype.toString.call(e)},na=function(e,t){var n;return t&&!0===t.clone&&ta(e)?ia((n=e,Array.isArray(n)?[]:{}),e,t):e},aa=function(e,t,n){var a=e.slice();return t.forEach((function(t,o){void 0===a[o]?a[o]=na(t,n):ta(t)?a[o]=ia(e[o],t,n):-1===e.indexOf(t)&&a.push(na(t,n))})),a},oa=function(e,t,n){var a={};return ta(e)&&Object.keys(e).forEach((function(t){a[t]=na(e[t],n)})),Object.keys(t).forEach((function(o){ta(t[o])&&e[o]?a[o]=ia(e[o],t[o],n):a[o]=na(t[o],n)})),a},ia=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=arguments.length>2?arguments[2]:void 0,a=Array.isArray(t),o=n||{arrayMerge:aa},i=o.arrayMerge||aa;return a?Array.isArray(e)?i(e,t,n):na(t,n):oa(e,t,n)},ra=ia,sa=N("tools:base:BaseTool"),la=yt("globalConfiguration"),ca=function(){function e(t,n){r()(this,e),this.initialConfiguration=ra(n,t);var a=this.initialConfiguration,o=a.name,i=a.strategies,s=a.defaultStrategy,l=a.configuration,c=a.supportedInteractionTypes,u=a.mixins,d=a.svgCursor;this.name=o,this.mode="disabled",this.element=void 0,this.supportedInteractionTypes=c||[],this.strategies=i||{},this.defaultStrategy=s||Object.keys(this.strategies)[0]||void 0,this.activeStrategy=this.defaultStrategy,d&&(this.svgCursor=d),this._options={},this._configuration=Object.assign({},l),this.updateOnMouseMove=!1,this.hideDefaultCursor=!1,u&&u.length&&this._applyMixins(u),this._cursors=Object.assign({},this.initialConfiguration.cursors);var h=this.defaultStrategy&&this._cursors[this.activeStrategy];h&&(this.svgCursor=h)}return l()(e,[{key:"mergeOptions",value:function(e){this._options=Object.assign({},this._options,e)}},{key:"clearOptions",value:function(){this._options={}}},{key:"applyActiveStrategy",value:function(e,t){return this.strategies[this.activeStrategy].call(this,e,t)}},{key:"_applyMixins",value:function(e){for(var t=0;t1&&void 0!==arguments[1]?arguments[1]:{};return r()(this,t),a.configuration||(a.configuration={alwaysEraseOnClick:!1}),(n=u()(this,h()(t).call(this,e,a))).updateOnMouseMove=!0,n.hideDefaultCursor=!0,n._drawing=!1,n._drawingMouseUpCallback=n._drawingMouseUpCallback.bind(Ta()(n)),n}return g()(t,e),l()(t,[{key:"renderBrush",value:function(e){throw new Error("Method renderBrush not implemented for ".concat(this.name,"."))}},{key:"_paint",value:function(e){throw new Error("Method _paint not implemented for ".concat(this.name,"."))}},{key:"mouseDragCallback",value:function(e){var t=e.detail.currentPoints;this._lastImageCoords=t.image,this._drawing&&this._paint(e)}},{key:"preMouseDownCallback",value:function(e){var t=e.detail,n=t.element,a=t.currentPoints;return this._startPainting(e),this._lastImageCoords=a.image,this._drawing=!0,this._startListeningForMouseUp(n),this._paint(e),!0}},{key:"_startPainting",value:function(e){var t=e.detail,n=t.element,a=Ca.configuration,o=Ca.getters.labelmap2D(n),i=o.labelmap2D,r=o.labelmap3D,s=o.currentImageIdIndex,l=o.activeLabelmapIndex,c=this._isCtrlDown(t)||this.configuration.alwaysEraseOnClick;if(this.paintEventData={labelmap2D:i,labelmap3D:r,currentImageIdIndex:s,activeLabelmapIndex:l,shouldErase:c},a.storeHistory){var u=i.pixelData.slice();this.paintEventData.previousPixelData=u}}},{key:"_endPainting",value:function(e){for(var t=Ca.configuration,n=Ca.setters,a=this.paintEventData,o=a.labelmap2D,i=a.currentImageIdIndex,r=new Set(o.pixelData).values(),s=[],l=!1;!l;){var c=r.next();(l=c.done)||s.push(c.value)}if(o.segmentsOnLabelmap=s,t.storeHistory){var u={imageIdIndex:i,diff:Le(this.paintEventData.previousPixelData,o.pixelData)};n.pushState(this.element,[u])}Oe(this.element)}},{key:"mouseMoveCallback",value:function(e){var t=e.detail.currentPoints;this._lastImageCoords=t.image}},{key:"renderToolData",value:function(e){var t=e.detail.element;ba(t,this.name)&&this.renderBrush(e)}},{key:"passiveCallback",value:function(e){try{y.cornerstone.updateImage(this.element)}catch(e){return}}},{key:"_drawingMouseUpCallback",value:function(e){var t=e.detail.element;this._endPainting(e),this._drawing=!1,this._mouseUpRender=!0,this._stopListeningForMouseUp(t)}},{key:"newImageCallback",value:function(e){this._drawing&&(this._endPainting(e),this._startPainting(e))}},{key:"_startListeningForMouseUp",value:function(e){e.removeEventListener(b.MOUSE_UP,this._drawingMouseUpCallback),e.removeEventListener(b.MOUSE_CLICK,this._drawingMouseUpCallback),e.addEventListener(b.MOUSE_UP,this._drawingMouseUpCallback),e.addEventListener(b.MOUSE_CLICK,this._drawingMouseUpCallback),y.cornerstone.updateImage(e)}},{key:"_stopListeningForMouseUp",value:function(e){e.removeEventListener(b.MOUSE_UP,this._drawingMouseUpCallback),e.removeEventListener(b.MOUSE_CLICK,this._drawingMouseUpCallback),y.cornerstone.updateImage(e)}},{key:"increaseBrushSize",value:function(){var e=Ca.configuration,t=Ca.setters,n=e.radius,a=Math.floor(1.2*n);a===n&&(a+=1),t.radius(a)}},{key:"decreaseBrushSize",value:function(){var e=Ca.configuration,t=Ca.setters,n=e.radius,a=Math.floor(.8*n);t.radius(a)}},{key:"_isCtrlDown",value:function(e){return e.event&&e.event.ctrlKey||e.ctrlKey}}]),t}(ca),wa=function(e){return e.filter((function(e){return!(e.isMultiPartTool||e instanceof $a||e instanceof Ma)}))};function Ea(e,t){var n;if("touch"===(arguments.length>2&&void 0!==arguments[2]?arguments[2]:"mouse")?n=(n=ya(e,mt.touchTools())).filter((function(e){return e.options.isTouchActive})):(n=(n=ya(e,mt.mouseTools())).filter((function(e){return Array.isArray(e.options.mouseButtonMask)&&t&&e.options.mouseButtonMask.includes(t)&&e.options.isMouseActive})),ft.isMultiPartToolActive&&(n=wa(n))),0!==n.length)return n[0]}var Ia=N("manipulators:moveAllHandles"),Sa={mouse:[b.MOUSE_DRAG],touch:[b.TOUCH_DRAG]},ka={mouse:[b.MOUSE_UP,b.MOUSE_CLICK],touch:[b.TOUCH_END,b.TOUCH_DRAG_END,b.TOUCH_PINCH,b.TOUCH_PRESS,b.TAP]},_a=function(e,t,n,a){var o=e.element,i=arguments.length>4&&void 0!==arguments[4]?arguments[4]:{},r=arguments.length>5&&void 0!==arguments[5]?arguments[5]:"mouse",s=arguments.length>6?arguments[6]:void 0;i=Object.assign({deleteIfHandleOutsideImage:ft.deleteIfHandleOutsideImage,preventHandleOutsideImage:ft.preventHandleOutsideImage},i);var l=Pa.bind(this,t,n,i,r),c=function e(a){Da(t,n,i,r,{dragHandler:l,upOrEndHandler:e},a,s)};n.active=!0,ft.isToolLocked=!0,Sa[r].forEach((function(e){o.addEventListener(e,l)})),ka[r].forEach((function(e){o.addEventListener(e,c)}))};function Pa(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},a=arguments.length>3?arguments[3]:void 0,o=arguments.length>4?arguments[4]:void 0,i=o.detail,r=i.element,s=i.image,l=i.buttons,c=o.detail.deltaPoints.image,u=c.x,d=c.y;t.active=!0,t.invalidated=!0;for(var h=Object.keys(t.handles),v=0;v2&&void 0!==arguments[2]?arguments[2]:{},a=arguments.length>3?arguments[3]:void 0,o=arguments.length>4?arguments[4]:void 0,i=o.dragHandler,r=o.upOrEndHandler,s=arguments.length>5?arguments[5]:void 0,l=arguments.length>6?arguments[6]:void 0,c=s.detail,u=s.detail.element;t.active=!1,t.invalidated=!0,ft.isToolLocked=!1,Sa[a].forEach((function(e){u.removeEventListener(e,i)})),ka[a].forEach((function(e){u.removeEventListener(e,r)})),n.deleteIfHandleOutsideImage&&ga(c,t.handles)&&L(u,e,t),"function"==typeof n.doneMovingCallback&&(Ia.warn("`options.doneMovingCallback` has been depricated. See https://github.com/cornerstonejs/cornerstoneTools/pull/915 for details."),n.doneMovingCallback()),"function"==typeof l&&l(),y.cornerstone.updateImage(u)}var Oa=N("manipulators:moveHandle"),La={value:!1},Aa={mouse:[b.MOUSE_DRAG],touch:[b.TOUCH_DRAG]},Ra={mouse:[b.MOUSE_UP,b.MOUSE_CLICK],touch:[b.TOUCH_END,b.TOUCH_DRAG_END,b.TOUCH_PINCH,b.TOUCH_PRESS,b.TAP]},Ha=function(e,t,n,a){var o=arguments.length>4&&void 0!==arguments[4]?arguments[4]:{},i=arguments.length>5&&void 0!==arguments[5]?arguments[5]:"mouse",r=arguments.length>6?arguments[6]:void 0;o=Object.assign({deleteIfHandleOutsideImage:ft.deleteIfHandleOutsideImage,preventHandleOutsideImage:ft.preventHandleOutsideImage},o);var s=e.element,l=Ua.bind(this,t,n,a,o,i),c=function s(c){Na(t,e,n,a,o,i,{dragHandler:l,upOrEndHandler:s},c,r)};if(a.active=!0,n.active=!0,ft.isToolLocked=!0,Aa[i].forEach((function(e){s.addEventListener(e,l)})),Ra[i].forEach((function(e){s.addEventListener(e,c)})),"touch"===i){La.value=!0;var u=y.cornerstone.getEnabledElement(s),d=-57,h={x:e.currentPoints.page.x,y:e.currentPoints.page.y+d},v=y.cornerstone.pageToPixel(s,h.x,h.y);Fa(a,La,u,v)}};function Ua(e,t,n,a,o,i){var r=i.detail,s=r.image,l=r.currentPoints,c=r.element,u=r.buttons,d=l.page,h=y.cornerstone.pageToPixel(c,d.x,"touch"===o?d.y+-57:d.y);La.value=!1,n.active=!0,n.hasMoved=!0,n.x=h.x,n.y=h.y,t.invalidated=!0,a.preventHandleOutsideImage&&ma(n,s),y.cornerstone.updateImage(c);var v=Ea(c,u,o);v instanceof $a&&v.updateCachedStats(s,c,t),C(c,b.MEASUREMENT_MODIFIED,{toolName:e,element:c,measurementData:t})}function Na(e,t,n,a){var o=arguments.length>4&&void 0!==arguments[4]?arguments[4]:{},i=arguments.length>5?arguments[5]:void 0,r=arguments.length>6?arguments[6]:void 0,s=r.dragHandler,l=r.upOrEndHandler,c=arguments.length>7?arguments[7]:void 0,u=arguments.length>8?arguments[8]:void 0,d=t.currentPoints.image,h=c.detail.element;a.active=!1,n.active=!1,n.invalidated=!0,ft.isToolLocked=!1,La.value=!1,Aa[i].forEach((function(e){h.removeEventListener(e,s)})),Ra[i].forEach((function(e){h.removeEventListener(e,l)})),o.deleteIfHandleOutsideImage&&ga(t,n.handles)&&L(h,e,n),c.type===b.TOUCH_PRESS&&(c.detail.handlePressed=n,a.x=d.x,a.y=d.y),"function"==typeof o.doneMovingCallback&&(Oa.warn("`options.doneMovingCallback` has been depricated. See https://github.com/cornerstonejs/cornerstoneTools/pull/915 for details."),o.doneMovingCallback()),"function"==typeof u&&u(),y.cornerstone.updateImage(h)}function Fa(e,t,n,a){if(t.value){var o=Math.abs(e.y-a.y),i=o/10;if(o<1)return e.y=a.y,void(t.value=!1);e.y>a.y?e.y-=i:e.y5&&void 0!==arguments[5]?arguments[5]:"mouse",r=arguments.length>6?arguments[6]:void 0;o=Object.assign({deleteIfHandleOutsideImage:ft.deleteIfHandleOutsideImage,preventHandleOutsideImage:ft.preventHandleOutsideImage},o);var s=e.element;function l(e){za(t,n,a,o,i,{moveHandler:l,moveEndHandler:c},e)}function c(e){Wa(t,n,a,o,i,{moveHandler:l,moveEndHandler:c},e,r)}n.active=!0,a.active=!0,ft.isToolLocked=!0,Va[i].forEach((function(e){s.addEventListener(e,l)})),s.addEventListener(b.TOUCH_START,Ga)};function za(e,t,n,a,o,i,r){var s=i.moveEndHandler,l=r.detail,c=l.currentPoints,u=l.image,d=l.element,h=l.buttons;qa[o].forEach((function(e){d.addEventListener(e,s)}));var v=c.page,g=y.cornerstone.pageToPixel(d,"touch"===o?v.x+-57:v.x,"touch"===o?v.y+-57:v.y);t.invalidated=!0,n.active=!0,n.x=g.x,n.y=g.y,a&&a.preventHandleOutsideImage&&ma(n,u),y.cornerstone.updateImage(d);var f=Ea(d,h,o);f instanceof $a&&f.updateCachedStats(u,d,t);var m=b.MEASUREMENT_MODIFIED;C(d,m,{toolName:e,element:d,measurementData:t})}function Wa(e,t,n,a,o,i,r,s){var l=i.moveHandler,c=i.moveEndHandler,u=r.detail,d=u.element,h=u.currentPoints.page,v=y.cornerstone.pageToPixel(d,"touch"===o?h.x+-57:h.x,"touch"===o?h.y+-57:h.y);if(t.active=!1,t.invalidated=!0,n.active=!1,n.x=v.x,n.y=v.y,ft.isToolLocked=!1,Va[o].forEach((function(e){d.removeEventListener(e,l)})),qa[o].forEach((function(e){d.removeEventListener(e,c)})),d.removeEventListener(b.TOUCH_START,Ga),r.type===b.TOUCH_PINCH||r.type===b.TOUCH_PRESS)return n.active=!1,y.cornerstone.updateImage(d),"function"==typeof a.doneMovingCallback&&(Ba.warn("`options.doneMovingCallback` has been depricated. See https://github.com/cornerstonejs/cornerstoneTools/pull/915 for details."),a.doneMovingCallback()),void("function"==typeof s&&s());a.preventHandleOutsideImage&&ma(n,r.detail.image),a.deleteIfHandleOutsideImage&&ga(r.detail,t.handles)&&L(d,e,t),"function"==typeof a.doneMovingCallback&&(Ba.warn("`options.doneMovingCallback` has been depricated. See https://github.com/cornerstonejs/cornerstoneTools/pull/915 for details."),a.doneMovingCallback()),"function"==typeof s&&s(),y.cornerstone.updateImage(d)}function Ga(e){return e.stopImmediatePropagation(),!1}var Ya=function(e,t,n,a,o){n.active=!0,ft.isToolLocked=!0,Ha(e.detail,t.name,n,a,t.options,o),e.stopImmediatePropagation(),e.stopPropagation(),e.preventDefault()},Xa=function(e,t,n,a){for(var o=arguments.length>4&&void 0!==arguments[4]?arguments[4]:"mouse",i=0;i3&&void 0!==arguments[3]?arguments[3]:"mouse";n.active=!0,ft.isToolLocked=!0,_a(e.detail,t.name,n,null,t.options,a,(function(){n.active=!1,ft.isToolLocked=!1})),e.stopImmediatePropagation(),e.stopPropagation(),e.preventDefault()},Za=N("baseAnnotationTool"),$a=function(e){function t(){return r()(this,t),u()(this,h()(t).apply(this,arguments))}return g()(t,e),l()(t,[{key:"createNewMeasurement",value:function(e){throw new Error("Method createNewMeasurement not implemented for ".concat(this.name,"."))}},{key:"pointNearTool",value:function(e,t,n){arguments.length>3&&void 0!==arguments[3]&&arguments[3];throw new Error("Method pointNearTool not implemented for ".concat(this.name,"."))}},{key:"distanceFromPoint",value:function(e,t,n){throw new Error("Method distanceFromPoint not implemented for ".concat(this.name,"."))}},{key:"renderToolData",value:function(e){throw new Error("renderToolData not implemented for ".concat(this.name,"."))}},{key:"mouseMoveCallback",value:function(e){for(var t=e.detail,n=t.element,a=t.currentPoints.canvas,o=O(n,this.name),i=!1,r=0;r3&&void 0!==arguments[3]?arguments[3]:"mouse";Ya(e,this,t,n,a)}},{key:"toolSelectedCallback",value:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"mouse";Ka(e,this,t,n)}},{key:"updateCachedStats",value:function(e,t,n){Za.warn("updateCachedStats not implemented for ".concat(this.name,"."))}}]),t}(ca),Ja=function(e,t,n,a){var o=y.cornerstone,i={start:o.pixelToCanvas(e,t),end:o.pixelToCanvas(e,n)};return y.cornerstoneMath.lineSegment.distanceToPoint(i,a)},Qa=function(e,t){var n=Math.pow(10,t);return Math.round(e*n)/n},eo=pt.cursor,to=function(){function e(t,n){r()(this,e),this.iconGroupString=t,this.options=Object.assign({},eo.getters.defaultOptions(),n)}return l()(e,[{key:"getIconSVG",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=this._generateIconSVGString(e);return new Blob([t],{type:"image/svg+xml"})}},{key:"getIconSVGString",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return this._generateIconSVGString(e)}},{key:"getIconWithPointerSVG",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=this._generateIconWithPointerSVGString(e);return new Blob([t],{type:"image/svg+xml"})}},{key:"getIconWithPointerString",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return this._generateIconWithPointerSVGString(e)}},{key:"_generateIconWithPointerSVGString",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=Object.assign({},this.options,e),n=t.mousePointerGroupString,a=t.iconSize,o=t.viewBox,i=a/Math.max(o.x,o.y),r=16+a,s='\n \n \n ').concat(n,'\n \n \n ').concat(this.iconGroupString,"\n \n ");return this._injectColors(s,t)}},{key:"_generateIconSVGString",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=Object.assign({},this.options,e),n=t.iconSize,a=t.viewBox,o='\n \n ').concat(this.iconGroupString,"\n ");return this._injectColors(o,t)}},{key:"_injectColors",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=t.activeColor||ln.getActiveColor(),a=t.toolColor||ln.getToolColor(),o=t.fillColor||ln.getFillColor();return e.replace(/ACTIVE_COLOR/g,"".concat(n)).replace(/TOOL_COLOR/g,"".concat(a)).replace(/FILL_COLOR/g,"".concat(o))}},{key:"mousePoint",get:function(){var e=this.options.mousePoint;return"".concat(e.x," ").concat(e.y)}}]),e}(),no=new to('',{viewBox:{x:1792,y:1792}}),ao=new to('\n \n ',{viewBox:{x:24,y:24}}),oo=new to('\n \n \n \n \n \n \n ',{viewBox:{x:48,y:48}}),io=new to('\n \n \n \n \n ',{viewBox:{x:32,y:32}}),ro=new to('',{viewBox:{x:32,y:32}}),so=new to('',{viewBox:{x:32,y:32}}),lo=new to('\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n ',{viewBox:{x:18,y:18}}),co=new to('\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n ',{viewBox:{x:18,y:18}}),uo=new to('\n \n ',{viewBox:{x:24,y:24}}),ho=new to('',{viewBox:{x:1792,y:1792}}),vo=new to('',{viewBox:{x:1792,y:1792}}),go=new to('',{viewBox:{x:1792,y:1792}}),fo=new to('',{viewBox:{x:1792,y:1792}}),mo=new to('',{viewBox:{x:2048,y:1792}}),po=new to('',{viewBox:{x:512,y:512}}),yo=new to('',{viewBox:{x:1792,y:1792}}),xo=new to('',{viewBox:{x:1792,y:1792}}),To=new to('',{viewBox:{x:24,y:28}}),bo=new to('',{viewBox:{x:1792,y:1792}}),Co=new to('\n ',{viewBox:{x:18,y:18}}),Mo=new to('\n ',{viewBox:{x:640,y:512}}),wo={x:127,y:60},Eo=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"ACTIVE_COLOR";return'')},Io=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"ACTIVE_COLOR";return'\n ')},So='',ko='',_o='',Po=new to("".concat(So," ").concat(Eo()),{viewBox:wo}),Do=new to("".concat(So," ").concat(Io()),{viewBox:wo}),Oo=new to("".concat(So," ").concat(Eo()),{viewBox:wo}),Lo=new to("".concat(So," ").concat(Io()),{viewBox:wo}),Ao=new to("".concat(ko," ").concat(Eo()),{viewBox:wo}),Ro=new to("".concat(ko," ").concat(Io()),{viewBox:wo}),Ho=new to("".concat(ko," ").concat(Eo()),{viewBox:wo}),Uo=new to("".concat(ko," ").concat(Io()),{viewBox:wo}),No=new to("".concat(_o," ").concat(Eo()),{viewBox:wo}),Fo=new to("".concat(_o," ").concat(Io()),{viewBox:wo}),Bo=new to("".concat(_o," ").concat(Eo()),{viewBox:wo}),Vo=new to("".concat(_o," ").concat(Io()),{viewBox:wo});function qo(e){var t=y.cornerstone.metaData.get("imagePlaneModule",e.imageId);return t?{rowPixelSpacing:t.rowPixelSpacing||t.rowImagePixelSpacing,colPixelSpacing:t.columnPixelSpacing||t.colImagePixelSpacing}:{rowPixelSpacing:e.rowPixelSpacing,colPixelSpacing:e.columnPixelSpacing}}var jo=function(e){var t=T()(e);return null!==e&&("object"===t||"function"===t)};var zo=function(e,t,n){var a,o,i,r,s,l,c=0,u=!1,d=!1,h=!0,v=!t&&0!==t&&"function"==typeof window.requestAnimationFrame;if("function"!=typeof e)throw new TypeError("Expected a function");function g(t){var n=a,i=o;return a=o=void 0,c=t,r=e.apply(i,n)}function f(e,t){return v?window.requestAnimationFrame(e):setTimeout(e,t)}function m(e){var n=e-l;return void 0===l||n>=t||n<0||d&&e-c>=i}function p(){var e=Date.now();if(m(e))return y(e);s=f(p,function(e){var n=e-c,a=t-(e-l);return d?Math.min(a,i-n):a}(e))}function y(e){return s=void 0,h&&a?g(e):(a=o=void 0,r)}function x(){for(var e=Date.now(),n=m(e),i=arguments.length,h=new Array(i),v=0;v0&&void 0!==arguments[0]?arguments[0]:{};r()(this,t);var a={name:"Angle",supportedInteractionTypes:["Mouse","Touch"],svgCursor:no,configuration:{drawHandles:!0}};return(e=u()(this,h()(t).call(this,n,a))).preventNewMeasurement=!1,e.throttledUpdateCachedStats=Wo(e.updateCachedStats,110),e}return g()(t,e),l()(t,[{key:"createNewMeasurement",value:function(e){return{visible:!0,active:!0,color:void 0,invalidated:!0,handles:{start:{x:e.currentPoints.image.x,y:e.currentPoints.image.y,highlight:!0,active:!1},middle:{x:e.currentPoints.image.x,y:e.currentPoints.image.y,highlight:!0,active:!0},end:{x:e.currentPoints.image.x,y:e.currentPoints.image.y,highlight:!0,active:!1},textBox:{active:!1,hasMoved:!1,movesIndependently:!1,drawnIndependently:!0,allowedOutsideImage:!0,hasBoundingBox:!0}}}}},{key:"pointNearTool",value:function(e,t,n){return!1!==t.visible&&(Ja(e,t.handles.start,t.handles.middle,n)<25||Ja(e,t.handles.middle,t.handles.end,n)<25)}},{key:"updateCachedStats",value:function(e,t,n){var a=qo(e),o=a.rowPixelSpacing,i=a.colPixelSpacing,r={x:(n.handles.middle.x-n.handles.start.x)*i,y:(n.handles.middle.y-n.handles.start.y)*o},s={x:(n.handles.end.x-n.handles.middle.x)*i,y:(n.handles.end.y-n.handles.middle.y)*o},l={x:(n.handles.end.x-n.handles.start.x)*i,y:(n.handles.end.y-n.handles.start.y)*o},c=Yo(r),u=Yo(s),d=Yo(l),h=Math.acos((Math.pow(c,2)+Math.pow(u,2)-Math.pow(d,2))/(2*c*u));h*=180/Math.PI,n.rAngle=Qa(h,2),n.invalidated=!1}},{key:"renderToolData",value:function(e){var t=this,n=e.detail,a=n.enabledElement,o=this.configuration,i=o.handleRadius,r=o.drawHandlesOnHover,s=O(e.currentTarget,this.name);if(s)for(var l=Cn(n.canvasContext.canvas),c=n.image,u=n.element,d=qo(c),h=d.rowPixelSpacing,v=d.colPixelSpacing,g=Gt.getToolWidth(),f=function(e){var o=s.data[e];if(!1===o.visible)return"continue";jt(l,(function(e){wn(e,t.configuration);var s=ln.getColorIfActive(o),l=y.cornerstone.pixelToCanvas(n.element,o.handles.start),d=y.cornerstone.pixelToCanvas(n.element,o.handles.middle);Kt(e,n.element,o.handles.start,[o.handles.middle,o.handles.end],{color:s});var f={color:s,handleRadius:i,drawHandlesIfActive:r};if(t.configuration.drawHandles&&cn(e,n,o.handles,f),!0===o.invalidated&&(o.rAngle?t.throttledUpdateCachedStats(c,u,o):t.updateCachedStats(c,u,o)),o.rAngle){var m,x=function(e,t,n){var a=t&&n?"":" (isotropic)";return e.rAngle.toString()+String.fromCharCode(parseInt("00B0",16))+a}(o,h,v);if(!o.handles.textBox.hasMoved){m={x:d.x,y:d.y};var T=yn(e,x,5);d.x0&&void 0!==arguments[0]?arguments[0]:{};r()(this,t);var a={name:"ArrowAnnotate",supportedInteractionTypes:["Mouse","Touch"],configuration:{getTextCallback:Ko,changeTextCallback:Zo,drawHandles:!1,drawHandlesOnHover:!0,arrowFirst:!0},svgCursor:ao};return(e=u()(this,h()(t).call(this,n,a))).preventNewMeasurement=!1,e}return g()(t,e),l()(t,[{key:"createNewMeasurement",value:function(e){return{visible:!0,active:!0,color:void 0,handles:{start:{x:e.detail.currentPoints.image.x,y:e.detail.currentPoints.image.y,highlight:!0,active:!1},end:{x:e.detail.currentPoints.image.x,y:e.detail.currentPoints.image.y,highlight:!0,active:!1},textBox:{active:!1,hasMoved:!1,movesIndependently:!1,drawnIndependently:!0,allowedOutsideImage:!0,hasBoundingBox:!0}}}}},{key:"pointNearTool",value:function(e,t,n){return!1!==t.visible&&Ja(e,t.handles.start,t.handles.end,n)<25}},{key:"updateCachedStats",value:function(){}},{key:"renderToolData",value:function(e){var t=this,n=e.detail,a=n.element,o=n.enabledElement,i=this.configuration,r=i.handleRadius,s=i.drawHandlesOnHover,l=O(a,this.name);if(l)for(var c=e.detail.canvasContext.canvas,u=Cn(c),d=Gt.getToolWidth(),h=function(n){var i=l.data[n];if(!1===i.visible)return"continue";jt(u,(function(n){wn(n,t.configuration);var l=ln.getColorIfActive(i),c=y.cornerstone.pixelToCanvas(a,i.handles.start),u=y.cornerstone.pixelToCanvas(a,i.handles.end);t.configuration.arrowFirst?Zt(n,u,c,l,d):Zt(n,c,u,l,d);var h={color:l,handleRadius:r,drawHandlesIfActive:s};t.configuration.drawHandles&&cn(n,e.detail,i.handles,h);var v=function(e){return e.text}(i);if(v&&""!==v){var f=yn(n,v,5),m=fn.getFontSize()+10,p=Math.max(f,m)/2+5;if(u.x3&&void 0!==arguments[3]?arguments[3]:{};return Object.assign({x:e,y:t,index:n,drawnIndependently:!1,allowedOutsideImage:!1,highlight:!0,active:!1},a)},Jo=function(e){var t=e.currentPoints.image,n=t.x,a=t.y;return{toolType:this.name,isCreating:!0,visible:!0,active:!0,invalidated:!0,handles:{start:$o(n,a,0),end:$o(n,a,1,{active:!0}),perpendicularStart:$o(n,a,2,{locked:!0}),perpendicularEnd:$o(n,a,3),textBox:$o(n-50,a-70,null,{highlight:!1,hasMoved:!0,active:!1,movesIndependently:!1,drawnIndependently:!0,allowedOutsideImage:!0,hasBoundingBox:!0})},longestDiameter:0,shortestDiameter:0}},Qo=function(e,t,n,a){var o=y.cornerstone,i=y.cornerstoneMath,r={start:o.pixelToCanvas(e,t.perpendicularStart),end:o.pixelToCanvas(e,t.perpendicularEnd)};return i.lineSegment.distanceToPoint(r,n)3&&void 0!==arguments[3]?arguments[3]:"mouse",o=y.cornerstone,i=y.cornerstoneMath,r=t.handles,s={start:o.pixelToCanvas(e,r.start),end:o.pixelToCanvas(e,r.end)},l=i.lineSegment.distanceToPoint(s,n);if(ua(r.textBox,n))return!0;var c="mouse"===a?ft.clickProximity:ft.touchProximity;return!!Qo(e,r,n,c)||l3&&void 0!==arguments[3]?arguments[3]:6,o=ha(e,t,n,a),i=!1;return Object.keys(t).forEach((function(e){if("textBox"!==e){var n=t[e],a=n===o;n.active!==a&&(i=!0),n.active=a}})),i}(a,s.handles,r);Object.keys(s.handles).forEach((function(e){if("textBox"!==e){var t=s.handles[e];t.hover=t.active}})),l&&(i=!0);var c=t.pointNearTool(a,s,r,"mouse"),u=c&&!s.active,d=!c&&s.active;(u||d)&&(s.active=!s.active,i=!0)},s=0;s3&&void 0!==arguments[3]?arguments[3]:"mouse";"touch"===a?this.handleSelectedTouchCallback(e):this.handleSelectedMouseCallback(e)};function di(e,t,n,a){var o=(n.x-a.x)/t,i=(n.y-a.y)/e;return Math.sqrt(o*o+i*i)}function hi(e,t){return{start:e,end:t}}function vi(e,t,n){var a=y.cornerstoneMath.lineSegment,o=e.handles,i=o.start,r=o.end,s=o.perpendicularStart,l=o.perpendicularEnd,c=t.image,u=c.columnPixelSpacing,d=void 0===u?1:u,h=c.rowPixelSpacing,v=void 0===h?1:h,g=hi(i,r),f=hi(s,l),m=a.intersectLine(g,f);return{columnPixelSpacing:d,rowPixelSpacing:v,start:i,end:r,perpendicularStart:s,perpendicularEnd:l,longLine:g,intersection:m,distanceToFixed:di(d,v,n,m),fixedPoint:n}}function gi(e,t,n,a){var o=vi(t,n,a),i=o.columnPixelSpacing,r=o.rowPixelSpacing,s=o.distanceToFixed,l=di(i,r,a,e);if(l<=s)return!1;var c=s/l,u=function(e,t){var n=e.columnPixelSpacing,a=e.rowPixelSpacing,o=e.start,i=e.perpendicularStart,r=e.perpendicularEnd,s=e.intersection,l=e.fixedPoint,c=di(n,a,i,s),u=di(n,a,r,s),d=ti(n,a,l,t),h=l===o?1:-1,v=h*a,g=h*n;return{start:{x:t.x+d.y*c*v,y:t.y+d.x*c*g*-1},end:{x:t.x+d.y*u*v*-1,y:t.y+d.x*u*g}}}(o,{x:a.x+(e.x-a.x)*c,y:a.y+(e.y-a.y)*c});return t.handles.perpendicularStart.x=u.start.x,t.handles.perpendicularStart.y=u.start.y,t.handles.perpendicularEnd.x=u.end.x,t.handles.perpendicularEnd.y=u.end.y,!0}function fi(e,t){return e===t}function mi(e,t){return fi(e,t)?-1:1}var pi=n(10),yi=n.n(pi);function xi(e,t,n,a){var o,i=e.columnPixelSpacing,r=e.rowPixelSpacing,s=e.fixedPoint,l=e.perpendicularStart,c=e.perpendicularEnd,u=e.distanceToFixed,d=mi(s,c)*u,h=function(e,t,n){return fi(e,n)?t:n}(s,l,c)===l,v=h?"start":"end",g=h?"end":"start";return o={},yi()(o,v,{x:n.start.x,y:n.start.y}),yi()(o,g,{x:t.x+a.y*r*d,y:t.y+a.x*i*d*-1}),o}function Ti(e,t,n,a){var o=y.cornerstoneMath.lineSegment,i=vi(t,n,a),r=i.columnPixelSpacing,s=i.rowPixelSpacing,l=i.start,c=i.longLine,u=i.intersection;if(!function(e,t,n){return 0!==di(e,t,n.start,n.end)}(r,s,c))return!1;var d=ti(r,s,l,u),h=function(e,t,n){var a=e.columnPixelSpacing,o=e.rowPixelSpacing,i=e.perpendicularEnd,r=e.fixedPoint,s=Number.MAX_SAFE_INTEGER,l=mi(r,i)*s;return{start:t,end:{x:t.x+n.y*o*l,y:t.y+n.x*a*l*-1}}}(i,e,d),v=o.intersectLine(c,h);if(!v)return!1;var g=xi(i,v,h,d);return t.handles.perpendicularStart.x=g.start.x,t.handles.perpendicularStart.y=g.start.y,t.handles.perpendicularEnd.x=g.end.x,t.handles.perpendicularEnd.y=g.end.y,!0}var bi=function(e,t,n,a){var o,i,r,s,l={},c={},u={x:t.currentPoints.image.x+a.x,y:t.currentPoints.image.y+a.y};0===e.index?gi(u,n,t,n.handles.end)?(e.x=u.x,e.y=u.y):(t.currentPoints.image.x=e.x,t.currentPoints.image.y=e.y):1===e.index?gi(u,n,t,n.handles.start)?(e.x=u.x,e.y=u.y):(t.currentPoints.image.x=e.x,t.currentPoints.image.y=e.y):2===e.index?(o=!1,l.start={x:n.handles.start.x,y:n.handles.start.y},l.end={x:n.handles.end.x,y:n.handles.end.y},c.start={x:n.handles.perpendicularEnd.x,y:n.handles.perpendicularEnd.y},c.end={x:u.x,y:u.y},(i=y.cornerstoneMath.lineSegment.intersectLine(l,c))||(c.end={x:n.handles.perpendicularStart.x,y:n.handles.perpendicularStart.y},i=y.cornerstoneMath.lineSegment.intersectLine(l,c),r=y.cornerstoneMath.point.distance(i,n.handles.start),s=y.cornerstoneMath.point.distance(i,n.handles.end),(!i||r<3||s<3)&&(o=!0)),!1,o||Ti(u,n,t,n.handles.perpendicularEnd)||(t.currentPoints.image.x=n.handles.perpendicularStart.x,t.currentPoints.image.y=n.handles.perpendicularStart.y)):3===e.index&&(o=!1,l.start={x:n.handles.start.x,y:n.handles.start.y},l.end={x:n.handles.end.x,y:n.handles.end.y},c.start={x:n.handles.perpendicularStart.x,y:n.handles.perpendicularStart.y},c.end={x:u.x,y:u.y},(i=y.cornerstoneMath.lineSegment.intersectLine(l,c))||(c.end={x:n.handles.perpendicularEnd.x,y:n.handles.perpendicularEnd.y},i=y.cornerstoneMath.lineSegment.intersectLine(l,c),r=y.cornerstoneMath.point.distance(i,n.handles.start),s=y.cornerstoneMath.point.distance(i,n.handles.end),(!i||r<3||s<3)&&(o=!0)),!1,o||Ti(u,n,t,n.handles.perpendicularStart)||(t.currentPoints.image.x=n.handles.perpendicularEnd.x,t.currentPoints.image.y=n.handles.perpendicularEnd.y))},Ci=function(e,t,n){var a=e[n],o=t[n];e[n]=o,t[n]=a},Mi=function(e,t){Ci(e,t,"x"),Ci(e,t,"y"),Ci(e,t,"moving"),Ci(e,t,"hover"),Ci(e,t,"active"),Ci(e,t,"selected")};var wi=function(e){var t,n=this,a=e.detail,o=a.element,i=ft.clickProximity,r=function(e){t.invalidated=!0,ga(a,t.handles)&&L(o,n.name,t),e&&(e.moving=!1,e.selected=!0),Ct(n.element,n.svgCursor),y.cornerstone.updateImage(o),o.addEventListener(b.MOUSE_MOVE,n._moveCallback),o.addEventListener(b.TOUCH_START,n._moveCallback)},s=a.startPoints.canvas,l=O(e.currentTarget,this.name);if(l){for(var c=function(c){t=l.data[c];var u=[o,t.handles,s,i],d=ha.apply(void 0,u);if(d)return o.removeEventListener(b.MOUSE_MOVE,n._moveCallback),o.removeEventListener(b.TOUCH_START,n._moveCallback),t.active=!0,Ei(t.handles),d.moving=!0,(d=function(e,t,n){var a=e.image,o=a.rowPixelSpacing,i=a.columnPixelSpacing,r=t.handles,s=r.start,l=r.end,c=r.perpendicularStart,u=r.perpendicularEnd,d=(s.x-l.x)*(i||1),h=(s.y-l.y)*(o||1),v=Math.sqrt(d*d+h*h),g=(c.x-u.x)*(i||1),f=(c.y-u.y)*(o||1);return(Math.sqrt(g*g+f*f)||0)>v?(Mi(s,l),Mi(s,c),Mi(l,u),Object.values(r).find((function(e){return!0===e.moving}))):n}(a,t,d)).hasBoundingBox||Mt(n.element),function(e,t,n,a,o,i){var r=e.element,s=e.image,l=e.buttons,c={x:a.x-e.currentPoints.image.x,y:a.y-e.currentPoints.image.y},u=function(e){var o=e.detail;a.hasMoved=!0,void 0===a.index||null===a.index?(a.x=o.currentPoints.image.x+c.x,a.y=o.currentPoints.image.y+c.y):bi(a,o,n,c),i&&(a.x=Math.max(a.x,0),a.x=Math.min(a.x,o.image.width),a.y=Math.max(a.y,0),a.y=Math.min(a.y,o.image.height)),n.invalidated=!0,y.cornerstone.updateImage(r);var u=Ea(r,l,"mouse");u instanceof $a&&u.updateCachedStats(s,r,n);var d={toolType:t,element:r,measurementData:n};y.cornerstone.triggerEvent(r,b.MEASUREMENT_MODIFIED,d)};a.active=!0,ft.isToolLocked=!0,r.addEventListener(b.MOUSE_DRAG,u),r.addEventListener(b.TOUCH_DRAG,u);var d=y.cornerstone.getImage(r),h=function(){y.cornerstone.getImage(r).imageId!==d.imageId&&v()};r.addEventListener(y.cornerstone.EVENTS.IMAGE_RENDERED,h);var v=function e(){a.active=!1,ft.isToolLocked=!1,r.removeEventListener(y.cornerstone.EVENTS.IMAGE_RENDERED,h),r.removeEventListener(b.MOUSE_DRAG,u),r.removeEventListener(b.MOUSE_UP,e),r.removeEventListener(b.MOUSE_CLICK,e),r.removeEventListener(b.TOUCH_DRAG,u),r.removeEventListener(b.TOUCH_DRAG_END,e),r.removeEventListener(b.TAP,e),y.cornerstone.updateImage(r),"function"==typeof o&&o()};r.addEventListener(b.MOUSE_UP,v),r.addEventListener(b.MOUSE_CLICK,v),r.addEventListener(b.TOUCH_DRAG_END,v),r.addEventListener(b.TAP,v)}(a,n.name,t,d,(function(){return r(d)})),Si(e),{v:!0}},u=0;ud){var f=d;d=g,g=f}return{longestDiameter:d.toFixed(1),shortestDiameter:g.toFixed(1)}}(n,qo(e)),o=a.longestDiameter,i=a.shortestDiameter;n.longestDiameter=o,n.shortestDiameter=i,n.invalidated=!1}}]),t}($a),Ri=function(e,t){var n=arguments.length>2&&void 0!==arguments[2]&&arguments[2],a=y.cornerstone,o=a.metaData.get("patientStudyModule",e.imageId),i=a.metaData.get("generalSeriesModule",e.imageId);if(o&&i){var r=i.modality;if("PT"===r){var s=n?t:t*e.slope+e.intercept,l=o.patientWeight;if(l){var c=a.metaData.get("petIsotopeModule",e.imageId);if(c){var u=c.radiopharmaceuticalInfo,d=u.radiopharmaceuticalStartTime,h=u.radionuclideTotalDose,v=u.radionuclideHalfLife,g=i.seriesTime;if(d&&h&&v&&g){var f=Hi(g.fractionalSeconds||0)+g.seconds+60*g.minutes+60*g.hours*60,m=Hi(d.fractionalSeconds)+d.seconds+60*d.minutes+60*d.hours*60,p=f-m,x=h*Math.exp(-p*Math.log(2)/v),T=s*l/x*1e3;return T}}}}}};function Hi(e){return parseFloat(".".concat(e))}var Ui=function(e,t){var n=e.width/2,a=e.height/2;if(n<=0||a<=0)return!1;var o=e.left+n,i=e.top+a,r=t.x-o,s=t.y-i;return r*r/(n*n)+s*s/(a*a)<=1},Ni=function(e,t){for(var n=0,a=0,o=0,i=0,r=null,s=null,l=t.top;l=0&&e.rotation<90&&(i.x=e.hflip?n.left.x:n.right.x,i.y=o),e.rotation>=90&&e.rotation<180&&(i.x=a,i.y=e.vflip?n.bottom.y:n.top.y),e.rotation>=180&&e.rotation<270&&(i.x=e.hflip?n.right.x:n.left.x,i.y=o),e.rotation>=270&&e.rotation<360&&(i.x=a,i.y=e.vflip?n.top.y:n.bottom.y),i}var Vi=function(e){var t=e.toString().split(".");return t[0]=t[0].replace(/\B(?=(\d{3})+(?!\d))/g,","),t.join(".")},qi=N("tools:annotation:CircleRoiTool"),ji=function(e){function t(){var e,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};r()(this,t);var a={name:"CircleRoi",supportedInteractionTypes:["Mouse","Touch"],svgCursor:ro};return(e=u()(this,h()(t).call(this,n,a))).throttledUpdateCachedStats=Wo(e.updateCachedStats,110),e}return g()(t,e),l()(t,[{key:"createNewMeasurement",value:function(e){if(e&&e.currentPoints&&e.currentPoints.image)return{visible:!0,active:!0,color:void 0,invalidated:!0,handles:{start:{x:e.currentPoints.image.x,y:e.currentPoints.image.y,highlight:!0,active:!1},end:{x:e.currentPoints.image.x,y:e.currentPoints.image.y,highlight:!0,active:!0},initialRotation:e.viewport.rotation,textBox:{active:!1,hasMoved:!1,movesIndependently:!1,drawnIndependently:!0,allowedOutsideImage:!0,hasBoundingBox:!0}}};qi.error("required eventData not supplied to tool ".concat(this.name,"'s createNewMeasurement"))}},{key:"pointNearTool",value:function(e,t,n,a){var o=t&&t.handles&&t.handles.start&&t.handles.end,i=y.cornerstoneMath.point.distance;if(o||qi.warn("invalid parameters supplied to tool ".concat(this.name,"'s pointNearTool")),!o||!1===t.visible)return!1;var r="mouse"===a?15:25,s=y.cornerstone.pixelToCanvas(e,t.handles.start),l=y.cornerstone.pixelToCanvas(e,t.handles.end),c=i(s,n),u=i(s,l);return c>u-r/2&&c2&&void 0!==arguments[2]?arguments[2]:{},a=n.area,o=n.mean,i=n.stdDev,r=n.min,s=n.max,l=n.meanStdDevSUV,c=arguments.length>3?arguments[3]:void 0,u=arguments.length>4?arguments[4]:void 0,d=arguments.length>5&&void 0!==arguments[5]?arguments[5]:{},h=d.showMinMax||!1,v=[],g=[];if(!t){var f=l&&0!==l.mean,m=zi(c,d.showHounsfieldUnits),p="Mean: ".concat(Vi(o.toFixed(2))," ").concat(m),y="Std Dev: ".concat(Vi(i.toFixed(2))," ").concat(m);if(f){for(var x="".concat(" SUV: ").concat(Vi(l.mean.toFixed(2))),T="".concat(" SUV: ").concat(Vi(l.stdDev.toFixed(2))),b=Math.floor(e.measureText("".concat(y," ")).width);e.measureText(p).width0&&void 0!==arguments[0]?arguments[0]:{};r()(this,t);var a={name:"CobbAngle",supportedInteractionTypes:["Mouse","Touch"],svgCursor:io,configuration:{drawHandles:!0}};return(e=u()(this,h()(t).call(this,n,a))).hasIncomplete=!1,e.throttledUpdateCachedStats=Wo(e.updateCachedStats,110),e}return g()(t,e),l()(t,[{key:"createNewMeasurement",value:function(e){return this.hasIncomplete=!0,{visible:!0,active:!0,color:void 0,invalidated:!0,complete:!1,value:"",handles:{start:{x:e.currentPoints.image.x,y:e.currentPoints.image.y,highlight:!0,active:!1},end:{x:e.currentPoints.image.x,y:e.currentPoints.image.y,highlight:!0,active:!0},start2:{x:e.currentPoints.image.x,y:e.currentPoints.image.y,highlight:!0,active:!1,drawnIndependently:!0},end2:{x:e.currentPoints.image.x+1,y:e.currentPoints.image.y,highlight:!0,active:!1,drawnIndependently:!0},textBox:{active:!1,hasMoved:!1,movesIndependently:!1,drawnIndependently:!0,allowedOutsideImage:!0,hasBoundingBox:!0}}}}},{key:"pointNearTool",value:function(e,t,n){return!1!==t.visible&&(!this.hasIncomplete&&(Ja(e,t.handles.start,t.handles.end,n)<25||Ja(e,t.handles.start2,t.handles.end2,n)<25))}},{key:"updateCachedStats",value:function(e,t,n){var a=qo(e),o=a.rowPixelSpacing,i=a.colPixelSpacing,r=(Math.ceil(n.handles.start.x)-Math.ceil(n.handles.end.x))*i,s=(Math.ceil(n.handles.start.y)-Math.ceil(n.handles.end.y))*o,l=(Math.ceil(n.handles.start2.x)-Math.ceil(n.handles.end2.x))*i,c=(Math.ceil(n.handles.start2.y)-Math.ceil(n.handles.end2.y))*o,u=Math.acos(Math.abs((r*l+s*c)/(Math.sqrt(r*r+s*s)*Math.sqrt(l*l+c*c))));u*=180/Math.PI,n.rAngle=Qa(u,2),n.invalidated=!1}},{key:"renderToolData",value:function(e){var t=this,n=e.detail,a=this.configuration,o=a.handleRadius,i=a.drawHandlesOnHover,r=O(e.currentTarget,this.name);if(r)for(var s=Cn(n.canvasContext.canvas),l=Gt.getToolWidth(),c=fn.getFont(),u=function(e){var a=r.data[e];if(!1===a.visible)return"continue";jt(s,(function(e){wn(e,t.configuration);var r=ln.getColorIfActive(a);Xt(e,n.element,a.handles.start,a.handles.end,{color:r}),a.complete&&Xt(e,n.element,a.handles.start2,a.handles.end2,{color:r});var s={color:r,handleRadius:o,drawHandlesIfActive:i};t.configuration.drawHandles&&cn(e,n,a.handles,s),e.fillStyle=r;var u=a.value;if(!a.handles.textBox.hasMoved){var d={x:(a.handles.start.x+a.handles.end.x)/2,y:(a.handles.start.y+a.handles.end.y)/2-10};e.font=c,a.handles.textBox.x=d.x,a.handles.textBox.y=d.y}Tn(e,n.element,a.handles.textBox,u,a.handles,h,r,l,0,!0)}))},d=0;d0&&void 0!==arguments[0]?arguments[0]:{};r()(this,t);var a={name:"EllipticalRoi",supportedInteractionTypes:["Mouse","Touch"],configuration:{},svgCursor:so};return(e=u()(this,h()(t).call(this,n,a))).throttledUpdateCachedStats=Wo(e.updateCachedStats,110),e}return g()(t,e),l()(t,[{key:"createNewMeasurement",value:function(e){if(e&&e.currentPoints&&e.currentPoints.image)return{visible:!0,active:!0,color:void 0,invalidated:!0,handles:{start:{x:e.currentPoints.image.x,y:e.currentPoints.image.y,highlight:!0,active:!1},end:{x:e.currentPoints.image.x,y:e.currentPoints.image.y,highlight:!0,active:!0},initialRotation:e.viewport.rotation,textBox:{active:!1,hasMoved:!1,movesIndependently:!1,drawnIndependently:!0,allowedOutsideImage:!0,hasBoundingBox:!0}}};Yi.error("required eventData not supplied to tool ".concat(this.name,"'s createNewMeasurement"))}},{key:"pointNearTool",value:function(e,t,n,a){var o=t&&t.handles&&t.handles.start&&t.handles.end;if(o||Yi.warn("invalid parameters supplied to tool ".concat(this.name,"'s pointNearTool")),!o||!1===t.visible)return!1;var i="mouse"===a?15:25,r=y.cornerstone.pixelToCanvas(e,t.handles.start),s=y.cornerstone.pixelToCanvas(e,t.handles.end),l={left:Math.min(r.x,s.x)+i/2,top:Math.min(r.y,s.y)+i/2,width:Math.abs(r.x-s.x)-i,height:Math.abs(r.y-s.y)-i},c={left:Math.min(r.x,s.x)-i/2,top:Math.min(r.y,s.y)-i/2,width:Math.abs(r.x-s.x)+i,height:Math.abs(r.y-s.y)+i},u=Ui(l,n);return!(!Ui(c,n)||u)}},{key:"updateCachedStats",value:function(e,t,n){var a=(y.cornerstone.metaData.get("generalSeriesModule",e.imageId)||{}).modality,o=qo(e),i=function(e,t,n,a,o){var i,r=$i(n.start,n.end),s=y.cornerstone.getPixels(t,r.left,r.top,r.width,r.height),l=Ni(s,r);"PT"===a&&(i={mean:Ri(e,l.mean,!0)||0,stdDev:Ri(e,l.stdDev,!0)||0});return{area:Math.PI*(r.width*(o.colPixelSpacing||1)/2)*(r.height*(o.rowPixelSpacing||1)/2)||0,count:l.count||0,mean:l.mean||0,variance:l.variance||0,stdDev:l.stdDev||0,min:l.min||0,max:l.max||0,meanStdDevSUV:i}}(e,t,n.handles,a,o);n.cachedStats=i,n.invalidated=!1}},{key:"renderToolData",value:function(e){var t=this,n=O(e.currentTarget,this.name);if(n){var a=e.detail,o=a.image,i=a.element,r=Gt.getToolWidth(),s=this.configuration,l=s.handleRadius,c=s.drawHandlesOnHover,u=Cn(a.canvasContext.canvas),d=qo(o),h=d.rowPixelSpacing,v=d.colPixelSpacing,g=(y.cornerstone.metaData.get("generalSeriesModule",o.imageId)||{}).modality,f=h&&v;jt(u,(function(e){for(var s=0;s2&&void 0!==arguments[2]?arguments[2]:{},a=n.area,o=n.mean,i=n.stdDev,r=n.min,s=n.max,l=n.meanStdDevSUV,c=arguments.length>3?arguments[3]:void 0,u=arguments.length>4?arguments[4]:void 0,d=arguments.length>5&&void 0!==arguments[5]?arguments[5]:{},h=d.showMinMax||!1,v=[],g=[];if(!t){var f=l&&0!==l.mean,m=Ki(c,d.showHounsfieldUnits),p="Mean: ".concat(Vi(o.toFixed(2))," ").concat(m),y="Std Dev: ".concat(Vi(i.toFixed(2))," ").concat(m);if(f){for(var x="".concat(" SUV: ").concat(Vi(l.mean.toFixed(2))),T="".concat(" SUV: ").concat(Vi(l.stdDev.toFixed(2))),b=Math.floor(e.measureText("".concat(y," ")).width);e.measureText(p).widthe.x&&n.x>e.x)return!0;if(t.x===n.x)return e.xn.x){var a=t;t=n,n=a}var o=function(e,t,n){var a=(n.y-t.y)/(n.x-t.x);return{value:t.y+a*(e.x-t.x),gradient:a}}(e,t,n);return Math.sign(o.gradient)*e.y>Math.sign(o.gradient)*o.value}(e,t,n));var a,o,i}function er(e,t,n,a){Ji(e,t)&&(n.value+=a,n.squared+=a*a,n.count++)}var tr=function e(t,n){r()(this,e),this.toolIndex=t,this.handleIndexArray=n},nr=function e(t){var n=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],a=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];r()(this,e),this.x=t.x,this.y=t.y,this.highlight=n,this.active=a,this.lines=[]};function ar(e,t,n,a){for(var o=e.length-1,i=0;i0?1:2}function sr(e,t,n){return t.x<=Math.max(e.x,n.x)&&t.x>=Math.min(e.x,n.x)&&t.y<=Math.max(e.y,n.y)&&t.y>=Math.min(e.y,n.y)}var lr={newHandle:function(e,t){var n=t.length-1;return ar(t,ir(t[n]),ir(e),[n])},end:function(e){var t=e.length-1;return ar(e,ir(e[t]),ir(e[0]),[t,0])},modify:function(e,t){var n=ir(e[t]),a=t-1;0===t&&(a=e.length-1);var o=ir(e[a]);return!!ar(e,n,o,[t,a])||ar(e,n,o=ir(e[a=t===e.length-1?0:t+1]),[t,a])}},cr=function(){function e(t,n){r()(this,e),this._eventData=t,this._toolName=n}return l()(e,[{key:"findLine",value:function(){var e=this.findTool();if(null===e)return null;var t=this._getCloseLinesInTool(e);return t?this._findCorrectLine(e,t):null}},{key:"findTool",value:function(){return this._toolData=O(this._eventData.element,this._toolName),this._mousePoint=this._eventData.currentPoints.canvas,this._toolData?this._nearestHandleToPointAllTools().toolIndex:null}},{key:"_nearestHandleToPointAllTools",value:function(){for(var e=this._toolData,t={toolIndex:null,handleIndex:null,distance:1/0},n=0;n0&&d0&&void 0!==arguments[0]?arguments[0]:{};r()(this,t);var a={name:"FreehandRoi",supportedInteractionTypes:["Mouse","Touch"],configuration:{mouseLocation:{handles:{start:{highlight:!0,active:!0}}},spacing:1,activeHandleRadius:3,completeHandleRadius:6,completeHandleRadiusTouch:28,alwaysShowHandles:!1,invalidColor:"crimson",currentHandle:0,currentTool:-1,drawHandles:!0},svgCursor:lo};return(e=u()(this,h()(t).call(this,n,a))).isMultiPartTool=!0,e._drawing=!1,e._dragging=!1,e._modifying=!1,e._drawingMouseDownCallback=e._drawingMouseDownCallback.bind(Ta()(e)),e._drawingMouseMoveCallback=e._drawingMouseMoveCallback.bind(Ta()(e)),e._drawingMouseDragCallback=e._drawingMouseDragCallback.bind(Ta()(e)),e._drawingMouseUpCallback=e._drawingMouseUpCallback.bind(Ta()(e)),e._drawingMouseDoubleClickCallback=e._drawingMouseDoubleClickCallback.bind(Ta()(e)),e._editMouseUpCallback=e._editMouseUpCallback.bind(Ta()(e)),e._editMouseDragCallback=e._editMouseDragCallback.bind(Ta()(e)),e._drawingTouchStartCallback=e._drawingTouchStartCallback.bind(Ta()(e)),e._drawingTouchDragCallback=e._drawingTouchDragCallback.bind(Ta()(e)),e._drawingDoubleTapClickCallback=e._drawingDoubleTapClickCallback.bind(Ta()(e)),e._editTouchDragCallback=e._editTouchDragCallback.bind(Ta()(e)),e.throttledUpdateCachedStats=Wo(e.updateCachedStats,110),e}return g()(t,e),l()(t,[{key:"createNewMeasurement",value:function(e){if(e&&e.currentPoints&&e.currentPoints.image){var t={visible:!0,active:!0,invalidated:!0,color:void 0,handles:{points:[]}};return t.handles.textBox={active:!1,hasMoved:!1,movesIndependently:!1,drawnIndependently:!0,allowedOutsideImage:!0,hasBoundingBox:!0},t}gr.error("required eventData not supplied to tool ".concat(this.name,"'s createNewMeasurement"))}},{key:"pointNearTool",value:function(e,t,n){var a=t&&t.handles&&t.handles.points;if(!a)throw new Error("invalid parameters supplied to tool ".concat(this.name,"'s pointNearTool"));return!(!a||!1===t.visible)&&void 0!==this._pointNearHandle(e,t,n)}},{key:"distanceFromPoint",value:function(e,t,n){for(var a=1/0,o=0;o3&&void 0!==arguments[3]?arguments[3]:"mouse",o=e.detail.element,i=O(o,this.name);if(n.hasBoundingBox)Ya(e,this,t,n,a);else{var r=this.configuration;r.dragOrigin={x:n.x,y:n.y};for(var s=0;s=2){var o=n.currentHandle;a.polyBoundingBox={},this._endDrawing(e,o)}}}},{key:"_drawingMouseDoubleClickCallback",value:function(e){var t=e.detail.element;this.completeDrawing(t),br(e)}},{key:"_drawingDoubleTapClickCallback",value:function(e){var t=e.detail.element;this.completeDrawing(t),br(e)}},{key:"_editMouseDragCallback",value:function(e){var t=e.detail,n=t.element,a=t.buttons;if(this.options.mouseButtonMask.includes(a)){var o,i=O(n,this.name),r=this.configuration,s=i.data[r.currentTool],l=r.currentHandle,c=s.handles.points;if(this._getMouseLocation(t),s.handles.invalidHandlePlacement=yr.modify(c,l),s.active=!0,s.highlight=!0,c[l].x=r.mouseLocation.handles.start.x,c[l].y=r.mouseLocation.handles.start.y,o=this._getPrevHandleIndex(l,c),l>=0){var u=c[o].lines.length-1,d=c[o].lines[u];d.x=r.mouseLocation.handles.start.x,d.y=r.mouseLocation.handles.start.y}y.cornerstone.updateImage(n)}}},{key:"_editTouchDragCallback",value:function(e){var t,n=e.detail,a=n.element,o=O(a,this.name),i=this.configuration,r=o.data[i.currentTool],s=i.currentHandle,l=r.handles.points;if(this._getMouseLocation(n),r.handles.invalidHandlePlacement=yr.modify(l,s),r.active=!0,r.highlight=!0,l[s].x=i.mouseLocation.handles.start.x,l[s].y=i.mouseLocation.handles.start.y,t=this._getPrevHandleIndex(s,l),s>=0){var c=l[t].lines.length-1,u=l[t].lines[c];u.x=i.mouseLocation.handles.start.x,u.y=i.mouseLocation.handles.start.y}y.cornerstone.updateImage(a)}},{key:"_getPrevHandleIndex",value:function(e,t){return 0===e?t.length-1:e-1}},{key:"_editMouseUpCallback",value:function(e){var t=e.detail,n=t.element,a=O(n,this.name);this._deactivateModify(n),this._dropHandle(t,a),this._endDrawing(n),y.cornerstone.updateImage(n)}},{key:"_dropHandle",value:function(e,t){var n=this.configuration,a=n.currentTool,o=t.data[a].handles,i=o.points;if(o.invalidHandlePlacement){var r,s=n.currentHandle,l=i[s];if(0===s)r=i[i.length-1];else r=i[s-1];l.x=n.dragOrigin.x,l.y=n.dragOrigin.y,r.lines[0]=l,o.invalidHandlePlacement=!1}}},{key:"_startDrawing",value:function(e){var t,n=e.detail,a=this.createNewMeasurement(n),o=n.element,i=this.configuration;e.type===b.MOUSE_DOWN_ACTIVATE?t="Mouse":e.type===b.TOUCH_START_ACTIVE&&(t="Touch"),this._activateDraw(o,t),this._getMouseLocation(n),D(o,this.name,a);var r=O(o,this.name);i.currentTool=r.data.length-1,this._activeDrawingToolReference=r.data[i.currentTool]}},{key:"_addPoint",value:function(e){var t=e.currentPoints,n=e.element,a=O(n,this.name),o=this.configuration,i=a.data[o.currentTool];if(!i.handles.invalidHandlePlacement){var r=new xr(t.image);i.handles.points.length&&i.handles.points[o.currentHandle-1].lines.push(t.image),i.handles.points.push(r),o.currentHandle+=1,y.cornerstone.updateImage(n),this.fireModifiedEvent(n,i)}}},{key:"_addPointPencilMode",value:function(e,t){var n=this,a=this.configuration,o=e.element,i=a.mouseLocation.handles.start;t.every((function(e){return n._isDistanceLargerThanSpacing(o,e,i)}))&&this._addPoint(e)}},{key:"_endDrawing",value:function(e,t){var n=O(e,this.name),a=this.configuration,o=n.data[a.currentTool];if(o.active=!1,o.highlight=!1,o.handles.invalidHandlePlacement=!1,void 0!==t){var i=o.handles.points;i[a.currentHandle-1].lines.push(i[0])}this._modifying&&(this._modifying=!1,o.invalidated=!0),a.currentHandle=0,a.currentTool=-1,o.canComplete=!1,this._drawing&&this._deactivateDraw(e),y.cornerstone.updateImage(e),this.fireModifiedEvent(e,o),this.fireCompletedEvent(e,o)}},{key:"_pointNearHandle",value:function(e,t,n){if(void 0!==t.handles&&void 0!==t.handles.points&&!1!==t.visible){for(var a=0;a2?(e.canComplete=!0,r=!1):r=yr.newHandle(o,i),r}},{key:"_checkHandlesPencilMode",value:function(e,t){var n=this.configuration.mouseLocation.handles.start,a=e.handles.points,o=yr.newHandle(n,a);return!1===o&&(o=this._invalidHandlePencilMode(e,t)),o}},{key:"_invalidHandlePencilMode",value:function(e,t){var n=this.configuration,a=t.element,o=n.mouseLocation.handles.start,i=e.handles.points;if(this._isDistanceSmallerThanCompleteSpacingCanvas(a,i[0],o))return e.canComplete=!0,!1;e.canComplete=!1;for(var r=1;r")}},{key:"_compareDistanceToSpacing",value:function(e,t,n){var a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:">",o=arguments.length>4&&void 0!==arguments[4]?arguments[4]:this.configuration.spacing;return">"===a?y.cornerstoneMath.point.distance(t,n)>o:y.cornerstoneMath.point.distance(t,n)1&&void 0!==arguments[1]?arguments[1]:"Mouse";this._drawing=!0,this._drawingInteractionType=t,ft.isMultiPartToolActive=!0,Mt(this.element),e.addEventListener(b.MOUSE_DOWN,this._drawingMouseDownCallback),e.addEventListener(b.MOUSE_MOVE,this._drawingMouseMoveCallback),e.addEventListener(b.MOUSE_DOUBLE_CLICK,this._drawingMouseDoubleClickCallback),e.addEventListener(b.MOUSE_DRAG,this._drawingMouseDragCallback),e.addEventListener(b.MOUSE_UP,this._drawingMouseUpCallback),e.addEventListener(b.TOUCH_START,this._drawingMouseMoveCallback),e.addEventListener(b.TOUCH_START,this._drawingTouchStartCallback),e.addEventListener(b.TOUCH_DRAG,this._drawingTouchDragCallback),e.addEventListener(b.TOUCH_END,this._drawingMouseUpCallback),e.addEventListener(b.DOUBLE_TAP,this._drawingDoubleTapClickCallback),y.cornerstone.updateImage(e)}},{key:"_deactivateDraw",value:function(e){this._drawing=!1,ft.isMultiPartToolActive=!1,this._activeDrawingToolReference=null,this._drawingInteractionType=null,Ct(this.element,this.svgCursor),e.removeEventListener(b.MOUSE_DOWN,this._drawingMouseDownCallback),e.removeEventListener(b.MOUSE_MOVE,this._drawingMouseMoveCallback),e.removeEventListener(b.MOUSE_DOUBLE_CLICK,this._drawingMouseDoubleClickCallback),e.removeEventListener(b.MOUSE_DRAG,this._drawingMouseDragCallback),e.removeEventListener(b.MOUSE_UP,this._drawingMouseUpCallback),e.removeEventListener(b.TOUCH_START,this._drawingTouchStartCallback),e.removeEventListener(b.TOUCH_DRAG,this._drawingTouchDragCallback),e.removeEventListener(b.TOUCH_START,this._drawingMouseMoveCallback),e.removeEventListener(b.TOUCH_END,this._drawingMouseUpCallback),y.cornerstone.updateImage(e)}},{key:"_activateModify",value:function(e){ft.isToolLocked=!0,e.addEventListener(b.MOUSE_UP,this._editMouseUpCallback),e.addEventListener(b.MOUSE_DRAG,this._editMouseDragCallback),e.addEventListener(b.MOUSE_CLICK,this._editMouseUpCallback),e.addEventListener(b.TOUCH_END,this._editMouseUpCallback),e.addEventListener(b.TOUCH_DRAG,this._editTouchDragCallback),y.cornerstone.updateImage(e)}},{key:"_deactivateModify",value:function(e){ft.isToolLocked=!1,e.removeEventListener(b.MOUSE_UP,this._editMouseUpCallback),e.removeEventListener(b.MOUSE_DRAG,this._editMouseDragCallback),e.removeEventListener(b.MOUSE_CLICK,this._editMouseUpCallback),e.removeEventListener(b.TOUCH_END,this._editMouseUpCallback),e.removeEventListener(b.TOUCH_DRAG,this._editTouchDragCallback),y.cornerstone.updateImage(e)}},{key:"passiveCallback",value:function(e){this._closeToolIfDrawing(e)}},{key:"enabledCallback",value:function(e){this._closeToolIfDrawing(e)}},{key:"disabledCallback",value:function(e){this._closeToolIfDrawing(e)}},{key:"_closeToolIfDrawing",value:function(e){if(this._drawing){var t=this.configuration.currentHandle;this._endDrawing(e,t),y.cornerstone.updateImage(e)}}},{key:"fireModifiedEvent",value:function(e,t){C(e,b.MEASUREMENT_MODIFIED,{toolName:this.name,element:e,measurementData:t})}},{key:"fireCompletedEvent",value:function(e,t){C(e,b.MEASUREMENT_COMPLETED,{toolName:this.name,element:e,measurementData:t})}},{key:"cancelDrawing",value:function(e){if(this._drawing){var t=O(e,this.name),n=this.configuration,a=t.data[n.currentTool];a.active=!1,a.highlight=!1,a.handles.invalidHandlePlacement=!1,n.currentHandle=0,n.currentTool=-1,a.canComplete=!1,L(e,this.name,a),this._deactivateDraw(e),y.cornerstone.updateImage(e)}}},{key:"newImageCallback",value:function(e){var t=this.configuration;if(this._drawing&&this._activeDrawingToolReference){var n=e.detail.element,a=this._activeDrawingToolReference;a.active=!1,a.highlight=!1,a.handles.invalidHandlePlacement=!1;var o=a.handles.points;o[t.currentHandle-1].lines.push(o[0]),t.currentHandle=0,t.currentTool=-1,a.canComplete=!1,this._deactivateDraw(n),y.cornerstone.updateImage(n)}}},{key:"spacing",get:function(){return this.configuration.spacing},set:function(e){if("number"!=typeof e)throw new Error("Attempting to set freehand spacing to a value other than a number.");this.configuration.spacing=e,y.cornerstone.updateImage(this.element)}},{key:"activeHandleRadius",get:function(){return this.configuration.activeHandleRadius},set:function(e){if("number"!=typeof e)throw new Error("Attempting to set freehand activeHandleRadius to a value other than a number.");this.configuration.activeHandleRadius=e,y.cornerstone.updateImage(this.element)}},{key:"completeHandleRadius",get:function(){return this.configuration.completeHandleRadius},set:function(e){if("number"!=typeof e)throw new Error("Attempting to set freehand completeHandleRadius to a value other than a number.");this.configuration.completeHandleRadius=e,y.cornerstone.updateImage(this.element)}},{key:"alwaysShowHandles",get:function(){return this.configuration.alwaysShowHandles},set:function(e){if("boolean"!=typeof e)throw new Error("Attempting to set freehand alwaysShowHandles to a value other than a boolean.");this.configuration.alwaysShowHandles=e,y.cornerstone.updateImage(this.element)}},{key:"invalidColor",get:function(){return this.configuration.invalidColor},set:function(e){this.configuration.invalidColor=e,y.cornerstone.updateImage(this.element)}}]),t}($a);function br(e){e.stopImmediatePropagation(),e.stopPropagation(),e.preventDefault()}var Cr=N("tools:annotation:LengthTool"),Mr=function(e){function t(){var e,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};r()(this,t);var a={name:"Length",supportedInteractionTypes:["Mouse","Touch"],svgCursor:uo,configuration:{drawHandles:!0}};return(e=u()(this,h()(t).call(this,n,a))).throttledUpdateCachedStats=Wo(e.updateCachedStats,110),e}return g()(t,e),l()(t,[{key:"createNewMeasurement",value:function(e){if(e&&e.currentPoints&&e.currentPoints.image){var t=e.currentPoints.image,n=t.x,a=t.y;return{visible:!0,active:!0,color:void 0,invalidated:!0,handles:{start:{x:n,y:a,highlight:!0,active:!1},end:{x:n,y:a,highlight:!0,active:!0},textBox:{active:!1,hasMoved:!1,movesIndependently:!1,drawnIndependently:!0,allowedOutsideImage:!0,hasBoundingBox:!0}}}}Cr.error("required eventData not supplied to tool ".concat(this.name,"'s createNewMeasurement"))}},{key:"pointNearTool",value:function(e,t,n){return t&&t.handles&&t.handles.start&&t.handles.end?!1!==t.visible&&Ja(e,t.handles.start,t.handles.end,n)<25:(Cr.warn("invalid parameters supplied to tool ".concat(this.name,"'s pointNearTool")),!1)}},{key:"updateCachedStats",value:function(e,t,n){var a=qo(e),o=a.rowPixelSpacing,i=a.colPixelSpacing,r=(n.handles.end.x-n.handles.start.x)*(i||1),s=(n.handles.end.y-n.handles.start.y)*(o||1),l=Math.sqrt(r*r+s*s);n.length=l,n.invalidated=!1}},{key:"renderToolData",value:function(e){var t=this,n=e.detail,a=this.configuration,o=a.handleRadius,i=a.drawHandlesOnHover,r=O(e.currentTarget,this.name);if(r)for(var s=Cn(n.canvasContext.canvas),l=n.image,c=n.element,u=qo(l),d=u.rowPixelSpacing,h=u.colPixelSpacing,v=Gt.getToolWidth(),g=function(e){var a=r.data[e];if(!1===a.visible)return"continue";jt(s,(function(e){wn(e,t.configuration);var r=ln.getColorIfActive(a);Xt(e,c,a.handles.start,a.handles.end,{color:r});var s={color:r,handleRadius:o,drawHandlesIfActive:i};if(t.configuration.drawHandles&&cn(e,n,a.handles,s),!a.handles.textBox.hasMoved){var u={x:Math.max(a.handles.start.x,a.handles.end.x)};u.x===a.handles.start.x?u.y=a.handles.start.y:u.y=a.handles.end.y,a.handles.textBox.x=u.x,a.handles.textBox.y=u.y}!0===a.invalidated&&(a.length?t.throttledUpdateCachedStats(l,c,a):t.updateCachedStats(l,c,a));var g=function(e,t,n){var a="mm";t&&n||(a="pixels");return e.unit=a,"".concat(e.length.toFixed(2)," ").concat(a)}(a,d,h);Tn(e,c,a.handles.textBox,g,a.handles,m,r,v,10,!0)}))},f=0;f0&&void 0!==arguments[0]?arguments[0]:{};r()(this,t);var a={name:"Probe",supportedInteractionTypes:["Mouse","Touch"],svgCursor:ho,configuration:{drawHandles:!0}};return(e=u()(this,h()(t).call(this,n,a))).throttledUpdateCachedStats=Wo(e.updateCachedStats,110),e}return g()(t,e),l()(t,[{key:"createNewMeasurement",value:function(e){if(e&&e.currentPoints&&e.currentPoints.image)return{visible:!0,active:!0,color:void 0,invalidated:!0,handles:{end:{x:e.currentPoints.image.x,y:e.currentPoints.image.y,highlight:!0,active:!0}}};Er.error("required eventData not supplied to tool ".concat(this.name,"'s createNewMeasurement"))}},{key:"pointNearTool",value:function(e,t,n){var a=t&&t.handles&&t.handles.end;if(a||Er.warn("invalid parameters supplied to tool ".concat(this.name,"'s pointNearTool")),!a||!1===t.visible)return!1;var o=y.cornerstone.pixelToCanvas(e,t.handles.end);return y.cornerstoneMath.point.distance(o,n)<5}},{key:"updateCachedStats",value:function(e,t,n){var a=Math.round(n.handles.end.x),o=Math.round(n.handles.end.y),i={};a>=0&&o>=0&&a=0&&v>=0&&h0&&void 0!==arguments[0]?arguments[0]:{};r()(this,t);var a={name:"RectangleRoi",supportedInteractionTypes:["Mouse","Touch"],configuration:{drawHandles:!0},svgCursor:vo};return(e=u()(this,h()(t).call(this,n,a))).throttledUpdateCachedStats=Wo(e.updateCachedStats,110),e}return g()(t,e),l()(t,[{key:"createNewMeasurement",value:function(e){if(e&&e.currentPoints&&e.currentPoints.image)return{visible:!0,active:!0,color:void 0,invalidated:!0,handles:{start:{x:e.currentPoints.image.x,y:e.currentPoints.image.y,highlight:!0,active:!1},end:{x:e.currentPoints.image.x,y:e.currentPoints.image.y,highlight:!0,active:!0},initialRotation:e.viewport.rotation,textBox:{active:!1,hasMoved:!1,movesIndependently:!1,drawnIndependently:!0,allowedOutsideImage:!0,hasBoundingBox:!0}}};Sr.error("required eventData not supplied to tool ".concat(this.name,"'s createNewMeasurement"))}},{key:"pointNearTool",value:function(e,t,n,a){var o=t&&t.handles&&t.handles.start&&t.handles.end;if(o||Sr.warn("invalid parameters supplied to tool ".concat(this.name,"'s pointNearTool")),!o||!1===t.visible)return!1;var i="mouse"===a?15:25,r=y.cornerstone.pixelToCanvas(e,t.handles.start),s=y.cornerstone.pixelToCanvas(e,t.handles.end),l={left:Math.min(r.x,s.x),top:Math.min(r.y,s.y),width:Math.abs(r.x-s.x),height:Math.abs(r.y-s.y)};return y.cornerstoneMath.rect.distanceToPoint(l,n)5&&void 0!==arguments[5]?arguments[5]:{},h=d.showMinMax||!1,v=[],g=[];if(!t){var f=u&&0!==u.mean,m=Pr(a,d.showHounsfieldUnits),p="Mean: ".concat(Vi(r.toFixed(2))," ").concat(m),y="Std Dev: ".concat(Vi(s.toFixed(2))," ").concat(m);if(f){for(var x="".concat(" SUV: ").concat(Vi(u.mean.toFixed(2))),T="".concat(" SUV: ").concat(Vi(u.stdDev.toFixed(2))),b=Math.floor(e.measureText("".concat(y," ")).width);e.measureText(p).width0&&void 0!==arguments[0]?arguments[0]:{};r()(this,t);var a={name:"TextMarker",supportedInteractionTypes:["Mouse","Touch"],configuration:{markers:[],current:"",ascending:!0,loop:!1,changeTextCallback:Lr},svgCursor:go};return(e=u()(this,h()(t).call(this,n,a))).touchPressCallback=e._changeText.bind(Ta()(e)),e.doubleClickCallback=e._changeText.bind(Ta()(e)),e}return g()(t,e),l()(t,[{key:"createNewMeasurement",value:function(e){var t=this.configuration;if(t.current){var n={visible:!0,active:!0,text:t.current,color:void 0,handles:{end:{x:e.currentPoints.image.x,y:e.currentPoints.image.y,highlight:!0,active:!0,hasBoundingBox:!0}}},a={left:0,top:0,width:e.image.width,height:e.image.height};if(y.cornerstoneMath.point.insideRect(n.handles.end,a)){var o=t.markers.indexOf(t.current);return(o+=t.ascending?1:-1)>=t.markers.length?o=t.loop?0:-1:o<0&&(o=t.loop?t.markers.length:-1),t.current=t.markers[o],n}}}},{key:"pointNearTool",value:function(e,t,n){if(!1===t.visible)return!1;if(t.handles.end.boundingBox){var a=y.cornerstoneMath.rect.distanceToPoint(t.handles.end.boundingBox,n),o=ua(t.handles.end,n);return a<10||o}}},{key:"updateCachedStats",value:function(){}},{key:"renderToolData",value:function(e){var t=e.detail,n=this.configuration,a=O(t.element,this.name);if(a)for(var o=Cn(t.canvasContext.canvas),i=function(e){var i=a.data[e];if(!1===i.visible)return"continue";var r=ln.getColorIfActive(i);jt(o,(function(e){wn(e,n);var a=y.cornerstone.pixelToCanvas(t.element,i.handles.end);i.handles.end.boundingBox=xn(e,i.text,a.x,a.y-10,r,{centering:{x:!0,y:!0}})}))},r=0;r0&&void 0!==arguments[0]?arguments[0]:{};r()(this,t);return(e=u()(this,h()(t).call(this,n,{name:"Brush",supportedInteractionTypes:["Mouse","Touch"],configuration:{},mixins:["renderBrushMixin"]}))).touchDragCallback=e._paint.bind(Ta()(e)),e}return g()(t,e),l()(t,[{key:"_paint",value:function(e){var t=Ar.configuration,n=e.detail,a=(n.element,n.image),o=a.rows,i=a.columns,r=n.currentPoints.image,s=r.x,l=r.y;if(!(s<0||s>i||l<0||l>o)){var c=be(t.radius,o,i,s,l),u=this.paintEventData,d=u.labelmap2D,h=u.labelmap3D,v=u.shouldErase;te(c,d.pixelData,h.activeSegmentIndex,i,v),y.cornerstone.updateImage(e.detail.element)}}}]),t}(Ma),Hr=N("tools:SphericalBrushTool"),Ur=yt("segmentation"),Nr=function(e){function t(){var e,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};r()(this,t);return(e=u()(this,h()(t).call(this,n,{name:"SphericalBrush",supportedInteractionTypes:["Mouse","Touch"],configuration:{alwaysEraseOnClick:!1},mixins:["renderBrushMixin"]}))).touchDragCallback=e._paint.bind(Ta()(e)),e}return g()(t,e),l()(t,[{key:"_startPainting",value:function(e){var t,n=Ur.configuration,a=Ur.getters,o=e.detail,i=o.element,r=o.image,s=y.cornerstone,l=n.radius,c=r.rows,u=r.columns,d=Math.max(r.rowPixelSpacing,r.columnPixelSpacing),h=O(i,"stack").data[0].imageIds,v=a.labelmap2D(i),g=v.labelmap2D,f=v.labelmap3D,m=v.currentImageIdIndex,p=v.activeLabelmapIndex,x=this._isCtrlDown(o)||this.configuration.alwaysEraseOnClick,T=s.metaData.get("imagePlaneModule",r.imageId);if(T){var b=T.imagePositionPatient;t=this._getImagesInRange(m,b,h,l,d)}else Hr.warn("No imagePlane metadata found for image, defaulting to circle brush application."),t=[{imageIdIndex:m,radiusOnImage:l}];if(this.paintEventData={labelmap2D:g,labelmap3D:f,currentImageIdIndex:m,activeLabelmapIndex:p,shouldErase:x,imagesInRange:t},n.storeHistory){for(var C=[],M=0;Mi||l<0||l>o)){for(var c=this.paintEventData,u=c.labelmap3D,d=c.imagesInRange,h=c.shouldErase,v=0;v=0;c--){var u=this._getRadiusOnImage(n[c],t,i,o);if(!u)break;r.push({imageIdIndex:c,radiusOnImage:u})}return r}},{key:"_getRadiusOnImage",value:function(e,t,n,a){var o=y.cornerstone.metaData.get("imagePlaneModule",e);if(o){var i=o.imagePositionPatient,r=Math.sqrt(Math.pow(i[0]-t[0],2)+Math.pow(i[1]-t[1],2)+Math.pow(i[2]-t[2],2));if(!(r>n))return Math.floor(Math.sqrt(Math.pow(n,2)-Math.pow(r,2))/a)}else Hr.warn("Can't find imagePlane metadata for image, cancelling spherical brushing on: ".concat(e,","))}},{key:"_endPainting",value:function(e){for(var t=this.paintEventData,n=t.labelmap3D,a=t.imagesInRange,o=[],i=Ur.configuration,r=Ur.setters,s=0;s=w||e=I||te.xMax&&(e.xMax=n),ae.yMax&&(e.yMax=a)}function qr(e,t,n,a,o){for(var i=ge(a,[e.x,e.y]).flooded,r=0;ra!=u>a&&n<(c-s)*(a-l)/(u-l)+s&&(o=!o)}return o}var Wr=N("util:segmentation:operations:eraseInsideFreehand");function Gr(e,t){var n=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],a=t.points,o=t.segmentationMixinType;if("freehandSegmentationMixin"===o){var i=e.detail.image,r=a.map((function(e){return[e.x,e.y]})),s=Te(r,i),l=oe()(s,2),c=l[0],u=l[1];n?se(e,t,(function(e){return zr([e.x,e.y],r)}),c,u):le(e,t,(function(e){return zr([e.x,e.y],r)}),c,u)}else Wr.error("eraseInsideFreehand operation requires freehandSegmentationMixin operationData, recieved ".concat(o))}function Yr(e,t){Gr(e,t,!0)}function Xr(e,t){Gr(e,t,!1)}var Kr=N("util:segmentation:operations:eraseInsideRectangle");function Zr(e,t){var n=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],a=t.points,o=t.segmentationMixinType;if("rectangleSegmentationMixin"===o){var i=e.detail.image,r=Te(a.map((function(e){return[e.x,e.y]})),i),s=oe()(r,2),l=s[0],c=s[1];n?se(e,t,(function(){return!0}),l,c):ne(e,t,l,c)}else Kr.error("eraseInsideRectangle operation requires rectangleSegmentationMixin operationData, recieved ".concat(o))}function $r(e,t){Zr(e,t,!0)}function Jr(e,t){Zr(e,t,!1)}var Qr=N("util:segmentation:operations:fillInsideFreehand");function es(e,t){var n=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],a=t.points,o=t.segmentationMixinType;if("freehandSegmentationMixin"===o){var i=e.detail.image,r=a.map((function(e){return[e.x,e.y]})),s=Te(r,i),l=oe()(s,2),c=l[0],u=l[1];n?he(e,t,(function(e){return zr([e.x,e.y],r)}),c,u):ve(e,t,(function(e){return zr([e.x,e.y],r)}),c,u)}else Qr.error("eraseInsideFreehand operation requires freehandSegmentationMixin operationData, recieved ".concat(o))}function ts(e,t){es(e,t,!0)}function ns(e,t){es(e,t,!1)}var as=N("util:segmentation:operations:fillInsideRectangle");function os(e,t){var n=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],a=t.points,o=t.segmentationMixinType;if("rectangleSegmentationMixin"===o){var i=e.detail.image,r=Te(a.map((function(e){return[e.x,e.y]})),i),s=oe()(r,2),l=s[0],c=s[1];n?he(e,t,(function(){return!0}),l,c):ce(e,t,l,c)}else as.error("eraseInsideRectangle operation requires rectangleSegmentationMixin operationData, recieved ".concat(o))}function is(e,t){os(e,t,!0)}function rs(e,t){os(e,t,!1)}var ss=N("util:segmentation:operations:fillCircle");function ls(e,t){var n=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],a=t.segmentationMixinType;if("circleSegmentationMixin"===a){var o=e.detail,i=xe(e),r=oe()(i,2),s=r[0],l=r[1],c=ye(o.handles.start,o.handles.end);n?he(e,t,(function(e){return Ui(c,e)}),s,l):ve(e,t,(function(e){return Ui(c,e)}),s,l)}else ss.error("fillInsideCircle operation requires circleSegmentationMixin operationData, recieved ".concat(a))}function cs(e,t){ls(e,t,!0)}function us(e,t){ls(e,t,!1)}var ds=N("util:segmentation:operations:eraseInsideCircle");function hs(e,t){var n=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],a=t.segmentationMixinType;if("circleSegmentationMixin"===a){var o=e.detail,i=xe(e),r=oe()(i,2),s=r[0],l=r[1],c=ye(o.handles.start,o.handles.end);n?se(e,t,(function(e){return Ui(c,e)}),s,l):le(e,t,(function(e){return Ui(c,e)}),s,l)}else ds.error("eraseInsideCircle operation requires circleSegmentationMixin operationData, recieved ".concat(a))}function vs(e,t){hs(e,t,!0)}function gs(e,t){hs(e,t,!1)}var fs=function(e){function t(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};r()(this,t);var n={name:"FreehandScissors",strategies:{FILL_INSIDE:ts,FILL_OUTSIDE:ns,ERASE_OUTSIDE:Xr,ERASE_INSIDE:Yr},cursors:{FILL_INSIDE:Do,FILL_OUTSIDE:Lo,ERASE_OUTSIDE:Oo,ERASE_INSIDE:Po},defaultStrategy:"FILL_INSIDE",supportedInteractionTypes:["Mouse","Touch"],svgCursor:Do,mixins:["freehandSegmentationMixin"]};return u()(this,h()(t).call(this,e,n))}return g()(t,e),t}(ca),ms=function(e){function t(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};r()(this,t);var n={name:"RectangleScissors",strategies:{FILL_INSIDE:is,FILL_OUTSIDE:rs,ERASE_OUTSIDE:Jr,ERASE_INSIDE:$r},cursors:{FILL_INSIDE:Ro,FILL_OUTSIDE:Uo,ERASE_OUTSIDE:Ho,ERASE_INSIDE:Ao},defaultStrategy:"FILL_INSIDE",supportedInteractionTypes:["Mouse","Touch"],mixins:["rectangleSegmentationMixin"]};return u()(this,h()(t).call(this,e,n))}return g()(t,e),t}(ca),ps=function(e){function t(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};r()(this,t);var n={name:"CircleScissors",strategies:{FILL_INSIDE:cs,FILL_OUTSIDE:us,ERASE_OUTSIDE:gs,ERASE_INSIDE:vs},cursors:{FILL_INSIDE:Fo,FILL_OUTSIDE:Vo,ERASE_OUTSIDE:Bo,ERASE_INSIDE:No},defaultStrategy:"FILL_INSIDE",supportedInteractionTypes:["Mouse","Touch"],svgCursor:Fo,mixins:["circleSegmentationMixin"]};return u()(this,h()(t).call(this,e,n))}return g()(t,e),t}(ca),ys=function(e){function t(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};r()(this,t);var n={name:"CorrectionScissors",strategies:{CORRECTION:Br},cursors:{CORRECTION:Do},defaultStrategy:"CORRECTION",supportedInteractionTypes:["Mouse","Touch"],svgCursor:Do,mixins:["polylineSegmentationMixin"]};return u()(this,h()(t).call(this,e,n))}return g()(t,e),t}(ca),xs="DEFAULT",Ts={},bs={},Cs={};function Ms(e){if(!e)return xs;var t=y.cornerstone.getEnabledElement(e).uuid;if(!t)throw new Error("Something went wrong when getting uuid from element");return t}var ws={setStartLoadHandler:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:void 0;if(!e)throw new Error("The Handler function must be defined");var n=Ms(t);Ts[n]=e},getStartLoadHandler:function(e){var t=Ms(e);return Ts[t]||Ts[xs]},setEndLoadHandler:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:void 0;if(!e)throw new Error("The Handler function must be defined");var n=Ms(t);bs[n]=e},getEndLoadHandler:function(e){var t=Ms(e);return bs[t]||bs[xs]},setErrorLoadingHandler:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:void 0;if(!e)throw new Error("The Handler function must be defined");var n=Ms(t);Cs[n]=e},getErrorLoadingHandler:function(e){var t=Ms(e);return Cs[t]||Cs[xs]},removeHandlers:function(e){var t=Ms(e);delete Ts[t],delete bs[t],delete Cs[t]}},Es={};function Is(e,t){if(!Es[e])return{};var n=Es[e].find((function(e){return e.element===t}));return n?n.options:{}}function Ss(e,t,n){if(Es[e]){var a=Es[e].findIndex((function(e){return e.element===t}));if(-1===a)Es[e].push({element:t,options:n});else{var o=Es[e][a].options||{};Es[e][a].options=Object.assign(o,n)}}else Es[e]=[{element:t,options:n}]}var ks=function(e){function t(){var e,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};r()(this,t);var a={name:"Crosshairs",supportedInteractionTypes:["Mouse","Touch"],svgCursor:fo};return(e=u()(this,h()(t).call(this,n,a))).mouseDownCallback=e._chooseLocation.bind(Ta()(e)),e.mouseDragCallback=e._chooseLocation.bind(Ta()(e)),e.touchDragCallback=e._chooseLocation.bind(Ta()(e)),e}return g()(t,e),l()(t,[{key:"_chooseLocation",value:function(e){var t=e.detail,n=t.element;e.stopImmediatePropagation();var a=O(n,this.name);if(a){var o=n,i=y.cornerstone.getEnabledElement(o).image.imageId,r=y.cornerstone.metaData.get("imagePlaneModule",i);if(r){var s=en(t.currentPoints.image,r);a.data[0].synchronizationContext.getSourceElements().forEach((function(e){if(e!==o){var t=Number.MAX_VALUE,n=-1,a=O(e,"stack");if(void 0!==a){var i=a.data[0];if(i.imageIds.forEach((function(e,a){var o=y.cornerstone.metaData.get("imagePlaneModule",e);if(o&&o.imagePositionPatient&&o.rowCosines&&o.columnCosines){var i=Jt(o.imagePositionPatient),r=Jt(o.rowCosines),l=Jt(o.columnCosines).clone().cross(r.clone()),c=Math.abs(l.clone().dot(i)-l.clone().dot(s));c0&&void 0!==arguments[0]?arguments[0]:{};r()(this,t);return u()(this,h()(t).call(this,e,{name:"DoubleTapFitToWindow",supportedInteractionTypes:["DoubleTap"]}))}return g()(t,e),l()(t,[{key:"doubleTapCallback",value:function(e){var t=e.detail;y.cornerstone.fitToWindow(t.element)}}]),t}(ca),Ps=function(e){function t(){var e,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};r()(this,t);var a={name:"DragProbe",strategies:{default:Ds,minimal:Os},defaultStrategy:"default",supportedInteractionTypes:["Mouse","Touch"],svgCursor:ho};return(e=u()(this,h()(t).call(this,n,a))).touchDragCallback=e._movingEventCallback.bind(Ta()(e)),e.touchEndCallback=e._endMovingEventCallback.bind(Ta()(e)),e.mouseDragCallback=e._movingEventCallback.bind(Ta()(e)),e.mouseUpCallback=e._endMovingEventCallback.bind(Ta()(e)),e.dragEventData={},e}return g()(t,e),l()(t,[{key:"_movingEventCallback",value:function(e){var t=e.detail,n=t.element;this.dragEventData=t,y.cornerstone.updateImage(n)}},{key:"_endMovingEventCallback",value:function(e){var t=e.detail.element;this.dragEventData={},y.cornerstone.updateImage(t)}},{key:"renderToolData",value:function(e){this.dragEventData.currentPoints&&e&&e.detail&&Boolean(Object.keys(this.dragEventData.currentPoints).length)&&(e.detail.currentPoints=this.dragEventData.currentPoints,this.applyActiveStrategy(e))}}]),t}(ca);function Ds(e){var t=this.configuration,n=y.cornerstone,a=e.detail,o=a.element,i=a.image,r=a.currentPoints,s=a.canvasContext,l=Cn(s.canvas),c=ln.getActiveColor(),u=fn.getFontSize(),d=Math.round(r.image.x),h=Math.round(r.image.y);d<0||h<0||d>=i.columns||h>=i.rows||jt(l,(function(e){wn(e,t);var a,s,l="".concat(d,", ").concat(h);if(i.color)a=wr(o,d,h,1,1),s="R: ".concat(a[0]," G: ").concat(a[1]," B: ").concat(a[2]," A: ").concat(a[3]);else{var v=(a=n.getStoredPixels(o,d,h,1,1))[0],g=v*i.slope+i.intercept,f=Ri(i,v);s="SP: ".concat(v," MO: ").concat(parseFloat(g.toFixed(3))),f&&(s+=" SUV: ".concat(parseFloat(f.toFixed(3))))}var m={x:r.canvas.x+5,y:r.canvas.y-5};xn(e,s,m.x,m.y+u+5,c),xn(e,l,m.x,m.y,c)}))}function Os(e){var t=this.configuration,n=y.cornerstone,a=e.detail,o=a.element,i=a.image,r=a.currentPoints,s=a.canvasContext,l=a.isTouchEvent,c=Cn(s.canvas),u=ln.getActiveColor(),d=r.page.y-fn.getFontSize()/2;l&&(d=r.page.y-4*fn.getFontSize());var h=n.pageToPixel(o,r.page.x,d);h.x<0||h.y<0||h.x>=i.columns||h.y>=i.rows||jt(c,(function(e){wn(e,t);var a,r=n.metaData.get("generalSeriesModule",i.imageId),s=r&&r.modality,c="";if(i.color)a=wr(o,h.x,h.y,1,1),c="R: ".concat(a[0]," G: ").concat(a[1]," B: ").concat(a[2]);else{var d=(a=n.getStoredPixels(o,h.x,h.y,1,1))[0],v=d*i.slope+i.intercept,g=parseFloat(v.toFixed(2));if("CT"===s)c+="HU: ".concat(g);else if("PT"===s){c+=g;var f=Ri(i,d);f&&(c+=" SUV: ".concat(parseFloat(f.toFixed(2))))}else c+=g}var m=n.pixelToCanvas(o,h),p={x:12,y:-(fn.getFontSize()+10)/2},y=yn(e,c,5);l&&(p={x:-y/2,y:-fn.getFontSize()-10-12}),$t(e,o,m,6,{color:u},"canvas"),xn(e,c,m.x+p.x,m.y+p.y,u)}))}var Ls=function(e){function t(){var e,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};r()(this,t);var a={name:"Eraser",supportedInteractionTypes:["Mouse","Touch"],svgCursor:mo};return(e=u()(this,h()(t).call(this,n,a))).preMouseDownCallback=e._deleteAllNearbyTools.bind(Ta()(e)),e.preTouchStartCallback=e._deleteAllNearbyTools.bind(Ta()(e)),e}return g()(t,e),l()(t,[{key:"_deleteAllNearbyTools",value:function(e){var t=e.detail.currentPoints.canvas,n=e.detail.element;ft.tools.forEach((function(e){var a=O(n,e.name);a&&a.data.forEach((function(a){"function"==typeof e.pointNearTool&&e.pointNearTool(n,a,t)&&(L(n,e.name,a),y.cornerstone.updateImage(n))}))}));return!0}}]),t}(ca),As=vr.FreehandHandleData,Rs=function(e){function t(){var e,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};r()(this,t);var a={name:"FreehandRoiSculptor",referencedToolName:"FreehandRoi",supportedInteractionTypes:["Mouse","Touch","DoubleTap"],mixins:["activeOrDisabledBinaryTool"],configuration:{mouseLocation:{handles:{start:{highlight:!0,active:!0}}},minSpacing:1,currentTool:null,dragColor:ln.getActiveColor(),hoverColor:ln.getToolColor(),showCursorOnHover:!0,limitRadiusOutsideRegion:!0,hoverCursorFadeAlpha:.5,hoverCursorFadeDistance:1.2},svgCursor:co};return(e=u()(this,h()(t).call(this,n,a))).updateOnMouseMove=!0,e.isMultiPartTool=!0,e.referencedToolName=e.initialConfiguration.referencedToolName,e._active=!1,e.activeMouseUpCallback=e.activeMouseUpCallback.bind(Ta()(e)),e.activeTouchEndCallback=e.activeTouchEndCallback.bind(Ta()(e)),e.activeMouseDragCallback=e.activeMouseDragCallback.bind(Ta()(e)),e}return g()(t,e),l()(t,[{key:"renderToolData",value:function(e){var t=e.detail;if(null===this.configuration.currentTool)return!1;var n=t.element,a=this.configuration;if(!O(n,this.referencedToolName).data[a.currentTool])return!1;if(this._active){var o=t.canvasContext.canvas.getContext("2d"),i={color:this.configuration.dragColor,fill:null,handleRadius:this._toolSizeCanvas};cn(o,t,this.configuration.mouseLocation.handles,i)}else this.configuration.showCursorOnHover&&!this._recentTouchEnd&&this._renderHoverCursor(e)}},{key:"doubleClickCallback",value:function(e){var t=e.detail;this._selectFreehandTool(t),y.cornerstone.updateImage(t.element)}},{key:"doubleTapCallback",value:function(e){var t=e.detail;this._selectFreehandTool(t),y.cornerstone.updateImage(t.element)}},{key:"preTouchStartCallback",value:function(e){return this._initialiseSculpting(e),!0}},{key:"preMouseDownCallback",value:function(e){if(this.options.mouseButtonMask.includes(e.detail.buttons))return this._initialiseSculpting(e),!0}},{key:"activeMouseDragCallback",value:function(e){var t=this.configuration;if(this._active){var n=e.detail,a=O(n.element,this.referencedToolName);if(a){var o=a.data[t.currentTool].handles.points;this._getMouseLocation(n),this._sculpt(n,o),y.cornerstone.updateImage(n.element)}}}},{key:"activeMouseUpCallback",value:function(e){this._activeEnd(e)}},{key:"activeTouchEndCallback",value:function(e){this._activeEnd(e),this._deselectAllTools(e),this._recentTouchEnd=!0}},{key:"_activeEnd",value:function(e){var t=e.detail,n=t.element,a=this.configuration;this._active=!1,ft.isMultiPartToolActive=!1,this._getMouseLocation(t),this._invalidateToolData(t),a.mouseUpRender=!0,this._deactivateSculpt(n),y.cornerstone.updateImage(t.element),function(e){e.stopImmediatePropagation(),e.stopPropagation(),e.preventDefault()}(e)}},{key:"_renderHoverCursor",value:function(e){var t,n=e.detail,a=n.element,o=n.canvasContext.canvas.getContext("2d"),i=O(a,this.referencedToolName).data[this.configuration.currentTool];this._recentTouchEnd=!1,this.configuration.mouseUpRender?(t=this.configuration.mouseLocation.handles.start,this.configuration.mouseUpRender=!1):t=ft.mousePositionImage;var r=Tt(a,this.referencedToolName).distanceFromPointCanvas(a,i,t);if(this.configuration.mouseLocation.handles.start.x=t.x,this.configuration.mouseLocation.handles.start.y=t.y,this.configuration.limitRadiusOutsideRegion){var s=r;r=this._limitCursorRadiusCanvas(n,r),s>this.configuration.hoverCursorFadeDistance*r&&(o.globalAlpha=this.configuration.hoverCursorFadeAlpha)}var l={fill:null,color:this.configuration.hoverColor,handleRadius:r};cn(o,n,this.configuration.mouseLocation.handles,l),this.configuration.limitRadiusOutsideRegion&&(o.globalAlpha=1)}},{key:"newImageCallback",value:function(e){this._deselectAllTools(e)}},{key:"enabledCallback",value:function(e){this._deselectAllTools(e)}},{key:"passiveCallback",value:function(e){this._deselectAllTools(e)}},{key:"disabledCallback",value:function(e){this._deselectAllTools(e)}},{key:"_selectFreehandTool",value:function(e){var t=this.configuration,n=e.element,a=this._getClosestFreehandToolOnElement(n,e);void 0!==a&&(t.currentTool=a,Mt(n))}},{key:"_activateFreehandTool",value:function(e,t){var n=O(e,this.referencedToolName).data;this.configuration.currentTool=t;for(var a=0;aa||(this._pushOneHandle(i,r),void 0===o.first?(o.first=i,o.last=i):o.last=i)}return o}},{key:"_pushOneHandle",value:function(e,t){var n=this._sculptData,a=n.points,o=n.mousePoint,i=n.toolSize,r=n.image,s=a[e],l=(s.x-o.x)/t,c=(s.y-o.y)/t,u={x:o.x+i*l,y:o.y+i*c};ma(u,r),s.x=u.x,s.y=u.y;var d=this.constructor._getPreviousHandleIndex(e,a.length);a[d].lines.pop(),a[d].lines.push(s)}},{key:"_insertNewHandles",value:function(e){for(var t=this._findNewHandleIndicies(e),n=0,a=0;aa&&n.push(e)}},{key:"_insertHandleRadially",value:function(e){var t=this._sculptData.points,n=e-1,a=this.constructor._getNextHandleIndexBeforeInsert(e,t.length),o=this._getInsertPosition(e,n,a),i=new As(o);t.splice(e,0,i),t[n].lines.pop(),t[n].lines.push(t[e]),vr.addLine(t,e)}},{key:"_consolidateHandles",value:function(){if(!(this._sculptData.points.length<=3)){var e=this._findCloseHandlePairs();this._mergeCloseHandles(e)}}},{key:"_findCloseHandlePairs",value:function(){for(var e=this._sculptData,t=e.points,n=e.minSpacing,a=[],o=t.length,i=0;i2&&void 0!==arguments[2]&&arguments[2],a=e.element,o=e.image,i=this.configuration,r=O(a,this.referencedToolName),s=r.data[i.currentTool],l=1;if(n){var c=y.cornerstone.pixelToCanvas(a,{x:0,y:0}),u=y.cornerstone.pixelToCanvas(a,{x:o.width,y:o.height}),d=(u.x-c.x)*(u.y-c.y);l=d/(o.width*o.height)}var h=s.area*l,v=Math.pow(h/Math.PI,.5);return Math.min(t,v)}},{key:"_getClosestFreehandToolOnElement",value:function(e,t){var n=Tt(e,this.referencedToolName),a=O(e,this.referencedToolName);if(a){for(var o=a.data,i=t.currentPoints.image,r={distance:1/0,toolIndex:null},s=0;s0&&void 0!==arguments[0]?arguments[0]:{};r()(this,t);var a={name:"Magnify",supportedInteractionTypes:["Mouse","Touch"],configuration:{magnifySize:300,magnificationLevel:2},svgCursor:po};return(e=u()(this,h()(t).call(this,n,a))).zoomCanvas=void 0,e.zoomElement=void 0,e.activeCallback=e._createMagnificationCanvas.bind(Ta()(e)),e.enabledCallback=e._createMagnificationCanvas.bind(Ta()(e)),e.disabledCallback=e._destroyMagnificationCanvas.bind(Ta()(e)),e.postTouchStartCallback=e._addMagnifyingGlass.bind(Ta()(e)),e.touchDragCallback=e._updateMagnifyingGlass.bind(Ta()(e)),e.touchEndCallback=e._removeMagnifyingGlass.bind(Ta()(e)),e.touchDragEndCallback=e._removeMagnifyingGlass.bind(Ta()(e)),e.postMouseDownCallback=e._addMagnifyingGlass.bind(Ta()(e)),e.mouseDragCallback=e._updateMagnifyingGlass.bind(Ta()(e)),e.mouseUpCallback=e._removeMagnifyingGlass.bind(Ta()(e)),e.mouseClickCallback=e._removeMagnifyingGlass.bind(Ta()(e)),e.newImageCallback=e._drawMagnificationTool.bind(Ta()(e)),e}return g()(t,e),l()(t,[{key:"_addMagnifyingGlass",value:function(e){var t=this;this._removeZoomElement(),this._drawZoomedElement(e),window.requestAnimationFrame((function(){return t._drawMagnificationTool(e)})),Mt(e.detail.element),e.preventDefault(),e.stopPropagation()}},{key:"_updateMagnifyingGlass",value:function(e){this._drawMagnificationTool(e),e.preventDefault(),e.stopPropagation()}},{key:"_removeMagnifyingGlass",value:function(e){var t=e.detail.element;Ct(this.element,this.svgCursor),t.querySelector(".magnifyTool").style.display="none",this._removeZoomElement()}},{key:"_drawMagnificationTool",value:function(e){var t=e.detail.element,n=t.querySelector(".magnifyTool");if(n||this._createMagnificationCanvas(t),void 0!==this.zoomCanvas){var a=t.querySelector("canvas:not(.magnifyTool)"),o=Cn(n),i=y.cornerstone.pixelToCanvas(e.detail.element,e.detail.currentPoints.image),r=Math.min(this.configuration.magnifySize,a.width,a.height),s=this.configuration.magnificationLevel;n.width=r,n.height=r,i.x=Math.max(i.x,.5*r/s),i.x=Math.min(i.x,a.width-.5*r/s),i.y=Math.max(i.y,.5*r/s),i.y=Math.min(i.y,a.height-.5*r/s);var l={x:i.x*s-.5*r,y:i.y*s-.5*r};l.x=Math.max(l.x,0),l.y=Math.max(l.y,0),o.drawImage(this.zoomCanvas,l.x,l.y,r,r,0,0,r,r);var c=e.detail.isTouchEvent?120:0,u={top:Math.max(i.y-.5*r-c,0),left:Math.max(i.x-.5*r,0)},d=n.getBoundingClientRect();u.top=Math.min(u.top,a.height-d.height),u.left=Math.min(u.left,a.width-d.width),n.style.top="".concat(u.top,"px"),n.style.left="".concat(u.left,"px"),n.style.display="block"}}},{key:"_drawZoomedElement",value:function(e){var t=e.detail.element,n=e.detail.enabledElement;void 0===n&&(n=y.cornerstone.getEnabledElement(t));var a=this.configuration.magnificationLevel,o=n.canvas,i=n.image;this.zoomElement||(this.zoomElement=document.createElement("div"),this.zoomElement.width=o.width*a,this.zoomElement.height=o.height*a,y.cornerstone.enable(this.zoomElement,n.options));var r=y.cornerstone.getEnabledElement(this.zoomElement),s=y.cornerstone.getViewport(n.element);this.zoomCanvas=r.canvas,this.zoomCanvas.width=o.width*a,this.zoomCanvas.height=o.height*a,r.viewport=Object.assign({},s),s.scale*=a,y.cornerstone.displayImage(this.zoomElement,i),y.cornerstone.setViewport(this.zoomElement,s)}},{key:"_removeZoomElement",value:function(){void 0!==this.zoomElement&&(y.cornerstone.disable(this.zoomCanvas),this.zoomElement=void 0,this.zoomCanvas=void 0)}},{key:"_createMagnificationCanvas",value:function(e){if(null===e.querySelector(".magnifyTool")){var t=document.createElement("canvas");t.classList.add("magnifyTool"),t.width=this.configuration.magnifySize,t.height=this.configuration.magnifySize,t.style.position="absolute",t.style.display="none",e.appendChild(t)}}},{key:"_destroyMagnificationCanvas",value:function(e){var t=e.querySelector(".magnifyTool");t&&e.removeChild(t)}}]),t}(ca),Us=function(e){function t(){var e,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};r()(this,t);var a=Object.assign({name:"Overlay",configuration:{},mixins:["enabledOrDisabledBinaryTool"]},n);return(e=u()(this,h()(t).call(this,a))).initialConfiguration=a,e}return g()(t,e),l()(t,[{key:"enabledCallback",value:function(e){this.forceImageUpdate(e)}},{key:"disabledCallback",value:function(e){this.forceImageUpdate(e)}},{key:"forceImageUpdate",value:function(e){y.cornerstone.getEnabledElement(e).image&&y.cornerstone.updateImage(e)}},{key:"renderToolData",value:function(e){var t=e.detail,n=t.enabledElement,a=t.image,o=t.viewport,i=t.canvasContext;if(t&&n&&a){var r=y.cornerstone.metaData.get("overlayPlaneModule",a.imageId);if(r&&r.overlays&&r.overlays.length){var s=o.displayedArea.columnPixelSpacing||1,l=o.displayedArea.rowPixelSpacing||1,c=Math.abs(o.displayedArea.brhc.x-o.displayedArea.tlhc.x)*s,u=Math.abs(o.displayedArea.brhc.y-o.displayedArea.tlhc.y)*l;r.overlays.forEach((function(e){if(!1!==e.visible){var t=document.createElement("canvas");t.width=c,t.height=u;var n=t.getContext("2d");n.fillStyle=e.fillStyle||"white","R"===e.type&&(n.fillRect(0,0,t.width,t.height),n.globalCompositeOperation="xor");for(var a=0,o=0;o0&&n.fillRect(r,o,1,1);i.drawImage(t,0,0)}}))}}}}]),t}(ca),Ns={getOrientationString:function(e){for(var t=Jt(e),n="",a=t.x<0?"R":"L",o=t.y<0?"A":"P",i=t.z<0?"F":"H",r=new y.cornerstoneMath.Vector3(Math.abs(t.x),Math.abs(t.y),Math.abs(t.z)),s=0;s<3;s++)if(r.x>1e-4&&r.x>r.y&&r.x>r.z)n+=a,r.x=0;else if(r.y>1e-4&&r.y>r.x&&r.y>r.z)n+=o,r.y=0;else if(r.z>1e-4&&r.z>r.x&&r.z>r.y)n+=i,r.z=0;else if(r.x>1e-4&&r.y>1e-4&&r.x===r.y)n+=a+o,r.x=0,r.y=0;else if(r.x>1e-4&&r.z>1e-4&&r.x===r.z)n+=a+i,r.x=0,r.z=0;else{if(!(r.y>1e-4&&r.z>1e-4&&r.y===r.z))break;n+=o+i,r.y=0,r.z=0}return n},invertOrientationString:function(e){var t=e.replace("H","f");return t=(t=(t=(t=(t=(t=t.replace("F","h")).replace("R","l")).replace("L","r")).replace("A","p")).replace("P","a")).toUpperCase()}},Fs=function(e){function t(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};r()(this,t);return u()(this,h()(t).call(this,e,{name:"OrientationMarkers",configuration:{drawAllMarkers:!0},mixins:["enabledOrDisabledBinaryTool"]}))}return g()(t,e),l()(t,[{key:"enabledCallback",value:function(e){this.forceImageUpdate(e)}},{key:"disabledCallback",value:function(e){this.forceImageUpdate(e)}},{key:"forceImageUpdate",value:function(e){var t=y.cornerstone;t.getEnabledElement(e).image&&t.updateImage(e)}},{key:"renderToolData",value:function(e){var t=e.detail,n=Cn(t.canvasContext.canvas),a=t.element,o=qs(a);if(o){var i=js(a,o),r=ln.getToolColor(),s={top:yn(n,o.top,0),left:yn(n,o.left,0),right:yn(n,o.right,0),bottom:yn(n,o.bottom,0),height:yn(n,"M",0)};Bs(n,o,i,s,r),this.configuration.drawAllMarkers&&Vs(n,o,i,s,r)}}}]),t}(ca),Bs=function(e,t,n,a,o){xn(e,t.top,n.top.x-a.top/2,n.top.y,o),xn(e,t.left,n.left.x-a.left/2,n.left.y,o)},Vs=function(e,t,n,a,o){xn(e,t.right,n.right.x-a.right,n.right.y,o),xn(e,t.bottom,n.bottom.x-a.bottom/2,n.bottom.y-a.height,o)},qs=function(e){var t=y.cornerstone,n=t.getEnabledElement(e),a=t.metaData.get("imagePlaneModule",n.image.imageId);if(a&&a.rowCosines&&a.columnCosines){var o=Ns.getOrientationString(a.rowCosines),i=Ns.getOrientationString(a.columnCosines),r=Ns.invertOrientationString(o);return{top:Ns.invertOrientationString(i),bottom:i,left:r,right:o}}},js=function(e){var t=y.cornerstone.getEnabledElement(e);return{top:y.cornerstone.pixelToCanvas(e,{x:t.image.width/2,y:5}),bottom:y.cornerstone.pixelToCanvas(e,{x:t.image.width/2,y:t.image.height-15}),left:y.cornerstone.pixelToCanvas(e,{x:5,y:t.image.height/2}),right:y.cornerstone.pixelToCanvas(e,{x:t.image.width-10,y:t.image.height/2})}},zs=function(e){function t(){var e,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};r()(this,t);return(e=u()(this,h()(t).call(this,n,{name:"PanMultiTouch",supportedInteractionTypes:["MultiTouch"],configuration:{touchPointers:2}}))).multiTouchDragCallback=e._dragCallback.bind(Ta()(e)),e}return g()(t,e),l()(t,[{key:"_dragCallback",value:function(e){var t=e.detail,n=t.element,a=t.viewport;if(t.numPointers===this.configuration.touchPointers){var o=this._getTranslation(t);this._applyTranslation(a,o),y.cornerstone.setViewport(n,a)}}},{key:"_getTranslation",value:function(e){var t=e.viewport,n=e.image,a=e.deltaPoints,o=t.scale,i=t.scale;return n.rowPixelSpacing0&&void 0!==arguments[0]?arguments[0]:{};r()(this,t);var a={name:"Pan",supportedInteractionTypes:["Mouse","Touch"],svgCursor:yo};return(e=u()(this,h()(t).call(this,n,a))).touchDragCallback=e._dragCallback.bind(Ta()(e)),e.mouseDragCallback=e._dragCallback.bind(Ta()(e)),e}return g()(t,e),l()(t,[{key:"_dragCallback",value:function(e){var t=e.detail,n=t.element,a=t.viewport,o=this._getTranslation(t);this._applyTranslation(a,o),y.cornerstone.setViewport(n,a)}},{key:"_getTranslation",value:function(e){var t=e.viewport,n=e.image,a=e.deltaPoints,o=t.scale,i=t.scale;return n.rowPixelSpacing0&&void 0!==arguments[0]?arguments[0]:{};r()(this,t);var a={name:"ReferenceLines",mixins:["enabledOrDisabledBinaryTool"],configuration:{renderer:Zs}};return(e=u()(this,h()(t).call(this,n,a))).renderer=null,e.synchronizationContext=null,e}var n;return g()(t,e),l()(t,[{key:"enabledCallback",value:(n=Ks()(Ys.a.mark((function e(t){var n,a,o,i=arguments;return Ys.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=i.length>1&&void 0!==i[1]?i[1]:{},a=n.synchronizationContext,o=this.configuration.renderer,e.next=4,Js(t);case 4:if(e.sent&&o&&a){e.next=8;break}return Qs.warn("Unable to enable ".concat(this.name,". Exiting enable callback. Tool will be enabled, but will not render.")),e.abrupt("return");case 8:this.renderer=o,this.synchronizationContext=a,this.forceImageUpdate(t);case 11:case"end":return e.stop()}}),e,this)}))),function(e){return n.apply(this,arguments)})},{key:"disabledCallback",value:function(e){this.forceImageUpdate(e)}},{key:"forceImageUpdate",value:function(e){y.cornerstone.getEnabledElement(e).image&&y.cornerstone.updateImage(e)}},{key:"renderToolData",value:function(e){var t=this,n=e.detail;if(this.renderer&&this.synchronizationContext){var a=this.synchronizationContext.getSourceElements(),o=Cn(n.canvasContext.canvas);y.cornerstone.setToPixelCoordinateSystem(n.enabledElement,o),a.forEach((function(a){a!==e.currentTarget&&t.renderer(o,n,e.currentTarget,a)}))}}}]),t}(ca),tl=function(e,t,n){var a=Math.sqrt(Math.pow(e.x-t.x,2)+Math.pow(e.y-t.y,2)),o=Math.sqrt(Math.pow(e.x-n.x,2)+Math.pow(e.y-n.y,2)),i=Math.sqrt(Math.pow(t.x-n.x,2)+Math.pow(t.y-n.y,2));return{angle:180*Math.acos((Math.pow(a,2)+Math.pow(o,2)-Math.pow(i,2))/(2*a*o))/Math.PI,direction:(t.x-e.x)*(n.y-e.y)-(t.y-e.y)*(n.x-e.x)}},nl=function(e){function t(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};r()(this,t);var n={name:"Rotate",strategies:{default:al,horizontal:il,vertical:rl},defaultStrategy:"default",supportedInteractionTypes:["Mouse","Touch"],svgCursor:xo};return u()(this,h()(t).call(this,e,n))}return g()(t,e),l()(t,[{key:"touchDragCallback",value:function(e){this.dragCallback(e)}},{key:"mouseDragCallback",value:function(e){this.dragCallback(e)}},{key:"postMouseDownCallback",value:function(e){this.initialRotation=e.detail.viewport.rotation}},{key:"dragCallback",value:function(e){e.detail.viewport.initialRotation=this.initialRotation,this.applyActiveStrategy(e),y.cornerstone.setViewport(e.detail.element,e.detail.viewport)}}]),t}(ca);function al(e){var t=e.detail,n=t.element,a=t.viewport,o=a.initialRotation,i=n.getBoundingClientRect(n),r=n.clientWidth,s=n.clientHeight,l={x:t.startPoints.client.x,y:t.startPoints.client.y},c=a.scale,u=a.translation,d={x:i.left+r/2+u.x*c,y:i.top+s/2+u.y*c},h={x:t.currentPoints.client.x,y:t.currentPoints.client.y},v=tl(d,l,h);v.direction<0&&(v.angle=-v.angle),a.rotation=o+v.angle}var ol,il=function(e){var t=e.detail,n=t.viewport,a=t.deltaPoints;n.rotation+=a.page.x/n.scale},rl=function(e){var t=e.detail,n=t.viewport,a=t.deltaPoints;n.rotation+=a.page.y/n.scale},sl=function(e){function t(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};r()(this,t);return u()(this,h()(t).call(this,e,{name:"RotateTouch",supportedInteractionTypes:["TouchRotate"]}))}return g()(t,e),l()(t,[{key:"touchRotateCallback",value:function(e){var t=e.detail,n=t.element,a=t.viewport,o=t.rotation;a.rotation+=o,y.cornerstone.setViewport(n,a)}}]),t}(ca),ll=N("tools:ScaleOverlayTool"),cl=function(e){function t(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};r()(this,t);return u()(this,h()(t).call(this,e,{name:"ScaleOverlay",configuration:{minorTickLength:12.5,majorTickLength:25},mixins:["enabledOrDisabledBinaryTool"]}))}return g()(t,e),l()(t,[{key:"enabledCallback",value:function(e){this.forceImageUpdate(e)}},{key:"disabledCallback",value:function(e){this.forceImageUpdate(e)}},{key:"forceImageUpdate",value:function(e){y.cornerstone.getEnabledElement(e).image&&y.cornerstone.updateImage(e)}},{key:"renderToolData",value:function(e){var t=e.detail,n=Cn(t.canvasContext.canvas),a=t.image,o=t.viewport,i=t.element,r=a.rowPixelSpacing,s=a.columnPixelSpacing,l=y.cornerstone.metaData.get("imagePlaneModule",a.imageId);if(l&&(r=l.rowPixelSpacing||l.rowImagePixelSpacing,s=l.columnPixelSpacing||l.colImagePixelSpacing),r&&s){var c={width:n.canvas.width,height:n.canvas.height},u=10/r*o.scale,d=10/s*o.scale,h=ul(c,.25,.05),v=ul(c,.05,.15);if(c.width&&c.height&&h&&v){var g=ln.getToolColor(),f=Gt.getToolWidth(),m=Object.assign({},{hscaleBounds:h,vscaleBounds:v,verticalMinorTick:u,horizontalMinorTick:d,verticalLine:{start:{x:v.bottomRight.x,y:v.topLeft.y},end:{x:v.bottomRight.x,y:v.bottomRight.y}},horizontalLine:{start:{x:h.topLeft.x,y:h.bottomRight.y},end:{x:h.bottomRight.x,y:h.bottomRight.y}},color:g,lineWidth:f},this.configuration);jt(n,(function(e){wn(e,m),Xt(e,i,m.verticalLine.start,m.verticalLine.end,{color:m.color,lineWidth:m.lineWidth},"canvas"),dl(e,i,m),Xt(e,i,m.horizontalLine.start,m.horizontalLine.end,{color:m.color,lineWidth:m.lineWidth},"canvas"),hl(e,i,m)}))}}else ll.warn("unable to define rowPixelSpacing or colPixelSpacing from data on ".concat(this.name,"'s renderToolData"))}}]),t}(ca),ul=function(e,t,n){var a=t*Math.min(1e3,e.width),o=n*Math.min(1e3,e.height),i={left:a,top:o,width:e.width-2*a,height:e.height-2*o};return{topLeft:{x:i.left,y:i.top},bottomRight:{x:i.left+i.width,y:i.top+i.height}}},dl=function(e,t,n){for(var a=0;n.verticalLine.start.y+a*n.verticalMinorTick<=n.vscaleBounds.bottomRight.y;){var o=n.color,i=n.lineWidth,r={x:n.verticalLine.start.x,y:n.verticalLine.start.y+a*n.verticalMinorTick},s={x:0,y:n.verticalLine.start.y+a*n.verticalMinorTick};s.x=a%5==0?n.verticalLine.start.x-n.majorTickLength:n.verticalLine.start.x-n.minorTickLength,Xt(e,t,r,s,{color:o,lineWidth:i},"canvas"),a++}},hl=function(e,t,n){for(var a=0;n.horizontalLine.start.x+a*n.horizontalMinorTick<=n.hscaleBounds.bottomRight.x;){var o=n.color,i=n.lineWidth,r={x:n.horizontalLine.start.x+a*n.horizontalMinorTick,y:n.horizontalLine.start.y},s={x:n.horizontalLine.start.x+a*n.horizontalMinorTick,y:0};s.y=a%5==0?n.horizontalLine.start.y-n.majorTickLength:n.horizontalLine.start.y-n.minorTickLength,Xt(e,t,r,s,{color:o,lineWidth:i},"canvas"),a++}},vl={default:6,IE:{9:6,10:8,default:8},Firefox:{default:6},Opera:{10:8,11:6,12:6,default:6},Chrome:{default:6},Safari:{default:6}};function gl(){var e,t=navigator.userAgent,n=t.match(/(opera|chrome|safari|firefox|msie|trident(?=\/))\/?\s*(\d+)/i)||[];return/trident/i.test(n[1])?(e=/\brv[ :]+(\d+)/g.exec(t)||[],"IE ".concat(e[1]||"")):"Chrome"===n[1]&&null!==(e=t.match(/\b(OPR|Edge)\/(\d+)/))?e.slice(1).join(" ").replace("OPR","Opera"):(n=n[2]?[n[1],n[2]]:[navigator.appName,navigator.appVersion,"-?"],null!==(e=t.match(/version\/(\d+)/i))&&n.splice(1,1,e[1]),n.join(" "))}function fl(){return ol||ml()}function ml(){var e=gl().split(" "),t=e[0],n=e[1],a=vl[t];return a?a[n]?a[n]:a.default:vl.default}var pl={interaction:[],thumbnail:[],prefetch:[]},yl={interaction:0,thumbnail:0,prefetch:0},xl={interaction:6,thumbnail:6,prefetch:5},Tl=!1,bl=20;function Cl(){Tl&&setTimeout((function(){wl()}),bl)}function Ml(e){var t=y.cornerstone,n=e.type;yl[n]++,Tl=!0;var a=e.imageId,o=e.doneCallback,i=e.failCallback,r=t.imageCache.getImageLoadObject(a);if(r)r.promise.then((function(e){yl[n]--,o(e),Cl()}),(function(e){yl[n]--,i(e),Cl()}));else{var s=function(e){return"prefetch"===e.type?-5:"interactive"===e.type?0:"thumbnail"===e.type?5:void 0}(e);(!0===e.preventCache?t.loadImage(a,{priority:s,type:e.type}):t.loadAndCacheImage(a,{priority:s,type:e.type})).then((function(e){yl[n]--,o(e),Cl()}),(function(e){yl[n]--,i(e),Cl()}))}}function wl(){var e=fl();xl={interaction:Math.max(e,1),thumbnail:Math.max(e-2,1),prefetch:Math.max(e-1,1)};for(var t=e-(yl.interaction+yl.thumbnail+yl.prefetch),n=0;n1){var i=O(e,"stackRenderer");i&&i.data&&i.data.length&&(a=i.data[0])}var r=n.data[0];t<0&&(t+=r.imageIds.length);var s=ws.getStartLoadHandler(e),l=ws.getEndLoadHandler(e),c=ws.getErrorLoadingHandler(e);if(t!==r.currentImageIdIndex){s&&s(e);var u={newImageIdIndex:t,direction:t-r.currentImageIdIndex};r.currentImageIdIndex=t;var d=r.imageIds[t];(Boolean(r.preventCache)?o.loadImage(d):o.loadAndCacheImage(d)).then((function(i){if(r.currentImageIdIndex===t){try{o.getEnabledElement(e)}catch(e){return}a?(a.currentImageIdIndex=t,a.render(e,n.data)):o.displayImage(e,i),l&&l(e,i)}}),(function(n){var a=r.imageIds[t];c&&c(e,a,n)})),Il.startGrabbing(),C(e,b.STACK_SCROLL,u)}}},kl=function(e,t){var n=arguments.length>2&&void 0!==arguments[2]&&arguments[2],a=!(arguments.length>3&&void 0!==arguments[3])||arguments[3],o=O(e,"stack");if(o&&o.data&&o.data.length){var i=o.data[0];i.pending||(i.pending=[]);var r=i.currentImageIdIndex+t;if(n){var s=i.imageIds.length;r%=s}else r=pa(r,0,i.imageIds.length-1);if(a)Sl(e,r);else{var l={index:r};i.pending.push(l),_l(i,l,e)}}};function _l(e,t,n){if(e.pending[0]===t){if(e.currentImageIdIndex===t.index)return e.pending.splice(e.pending.indexOf(t),1),void(e.pending.length>0&&_l(e,e.pending[0],n));n.addEventListener(y.cornerstone.EVENTS.NEW_IMAGE,(function a(o){e.imageIds.indexOf(o.detail.image.imageId)===t.index&&(e.pending.splice(e.pending.indexOf(t),1),n.removeEventListener(y.cornerstone.EVENTS.NEW_IMAGE,a),e.pending.length>0&&_l(e,e.pending[0],n))})),Sl(n,t.index)}}var Pl=function(e){function t(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};r()(this,t);return u()(this,h()(t).call(this,e,{name:"StackScrollMouseWheel",supportedInteractionTypes:["MouseWheel"],configuration:{loop:!1,allowSkipping:!0,invert:!1}}))}return g()(t,e),l()(t,[{key:"mouseWheelCallback",value:function(e){var t=e.detail,n=t.direction,a=t.element,o=this.configuration,i=o.loop,r=o.allowSkipping,s=o.invert;kl(a,s?-n:n,i,r)}}]),t}(ca),Dl=function(e){function t(){var e,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};r()(this,t);return(e=u()(this,h()(t).call(this,n,{name:"StackScrollMultiTouch",supportedInteractionTypes:["MultiTouch"],configuration:{loop:!1,allowSkipping:!0,touchPointers:3}}))).multiTouchDragCallback=e._dragCallback.bind(Ta()(e)),e}return g()(t,e),l()(t,[{key:"_dragCallback",value:function(e){var t=e.detail;if(t.numPointers===this.configuration.touchPointers){var n=t.element,a=t.deltaPoints,o=this.configuration,i=o.loop,r=o.allowSkipping,s=Is(this.name,n),l=this._getPixelPerImage(n),c=this._getDeltaY(n,a.page.y);if(!l)return;if(Math.abs(c)>=l){var u=Math.round(c/l);kl(n,u,i,r),s.deltaY=c%l}else s.deltaY=c;Ss(this.name,n,s)}}},{key:"_getDeltaY",value:function(e,t){return(Is(this.name,e).deltaY||0)+t}},{key:"_getPixelPerImage",value:function(e){var t=O(e,"stack");if(t&&t.data&&t.data.length){var n=t.data[0];return this.configuration.stackScrollSpeed||Math.max(2,e.offsetHeight/Math.max(n.imageIds.length,8))}}}]),t}(ca),Ol=function(e){function t(){var e,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};r()(this,t);var a={name:"StackScroll",supportedInteractionTypes:["Mouse","Touch"],configuration:{loop:!1,allowSkipping:!0},svgCursor:To};return(e=u()(this,h()(t).call(this,n,a))).mouseDragCallback=e._dragCallback.bind(Ta()(e)),e.touchDragCallback=e._dragCallback.bind(Ta()(e)),e}return g()(t,e),l()(t,[{key:"_dragCallback",value:function(e){var t=e.detail,n=t.element,a=t.deltaPoints,o=this.configuration,i=o.loop,r=o.allowSkipping,s=Is(this.name,n),l=this._getPixelPerImage(n),c=this._getDeltaY(n,a.page.y);if(l){if(Math.abs(c)>=l){var u=Math.round(c/l);kl(n,u,i,r),s.deltaY=c%l}else s.deltaY=c;Ss(this.name,n,s)}}},{key:"_getDeltaY",value:function(e,t){return(Is(this.name,e).deltaY||0)+t}},{key:"_getPixelPerImage",value:function(e){var t=O(e,"stack");if(t&&t.data&&t.data.length){var n=t.data[0];return this.configuration.stackScrollSpeed||Math.max(2,e.offsetHeight/Math.max(n.imageIds.length,8))}}}]),t}(ca),Ll=function(e,t,n,a,o){if(!e)throw new Error("getLuminance: parameter element must not be undefined");t=Math.round(t),n=Math.round(n);var i,r,s,l=y.cornerstone.getEnabledElement(e).image,c=[],u=0,d=l.getPixelData();if(l.color)for(r=0;r0&&void 0!==arguments[0]?arguments[0]:{};r()(this,t);var a={name:"WwwcRegion",supportedInteractionTypes:["Mouse","Touch"],configuration:{minWindowWidth:10},svgCursor:bo};return(e=u()(this,h()(t).call(this,n,a)))._resetHandles(),e.postTouchStartCallback=e._startOutliningRegion.bind(Ta()(e)),e.touchDragCallback=e._setHandlesAndUpdate.bind(Ta()(e)),e.touchEndCallback=e._applyStrategy.bind(Ta()(e)),e.postMouseDownCallback=e._startOutliningRegion.bind(Ta()(e)),e.mouseClickCallback=e._startOutliningRegion.bind(Ta()(e)),e.mouseDragCallback=e._setHandlesAndUpdate.bind(Ta()(e)),e.mouseMoveCallback=e._setHandlesAndUpdate.bind(Ta()(e)),e.mouseUpCallback=e._applyStrategy.bind(Ta()(e)),e}return g()(t,e),l()(t,[{key:"renderToolData",value:function(e){var t=this,n=e.detail,a=n.element,o=ln.getColorIfActive({active:!0}),i=Cn(n.canvasContext.canvas);jt(i,(function(e){bn(e,a,t.handles.start,t.handles.end,{color:o})}))}},{key:"_startOutliningRegion",value:function(e){var t=e.detail.element,n=e.detail.currentPoints.image;return Rl(this.handles.start)?this.handles.start=n:(this.handles.end=n,this._applyStrategy(e)),y.cornerstone.updateImage(t),!0}},{key:"_setHandlesAndUpdate",value:function(e){var t=e.detail.element,n=e.detail.currentPoints.image;this.handles.end=n,y.cornerstone.updateImage(t)}},{key:"_applyStrategy",value:function(e){Rl(this.handles.start)||Rl(this.handles.end)||(e.detail.handles=this.handles,Hl(e,this.configuration),this._resetHandles())}},{key:"_resetHandles",value:function(){this.handles={start:{},end:{}}}}]),t}(ca),Rl=function(e){return 0===Object.keys(e).length&&e.constructor===Object},Hl=function(e,t){var n=e.detail,a=n.image,o=n.element,i=e.detail.handles,r=i.start,s=i.end,l=Math.min(r.x,s.x),c=Math.min(r.y,s.y),u=Math.abs(r.x-s.x),d=Math.abs(r.y-s.y);l=pa(l,0,a.width),c=pa(c,0,a.height),u=Math.floor(Math.min(u,Math.abs(a.width-l))),d=Math.floor(Math.min(d,Math.abs(a.height-c)));var h=Ll(o,l,c,u,d),v=Ul(h,a.minPixelValue,a.maxPixelValue),g=n.viewport;void 0===t.minWindowWidth&&(t.minWindowWidth=10),g.voi.windowWidth=Math.max(Math.abs(v.max-v.min),t.minWindowWidth),g.voi.windowCenter=v.mean,y.cornerstone.setViewport(o,g),y.cornerstone.updateImage(o)},Ul=function(e,t,n){var a=e.length,o=n,i=t,r=0;if(a<2)return{min:o,max:i,mean:(t+n)/2};for(var s=0;s0&&void 0!==arguments[0]?arguments[0]:{};r()(this,t);var n={name:"Wwwc",strategies:{basicLevelingStrategy:Fl},supportedInteractionTypes:["Mouse","Touch"],configuration:{orientation:0},svgCursor:Co};return u()(this,h()(t).call(this,e,n))}return g()(t,e),l()(t,[{key:"mouseDragCallback",value:function(e){this.applyActiveStrategy(e),y.cornerstone.setViewport(e.detail.element,e.detail.viewport)}},{key:"touchDragCallback",value:function(e){e.stopImmediatePropagation(),this.applyActiveStrategy(e),y.cornerstone.setViewport(e.detail.element,e.detail.viewport)}}]),t}(ca);function Fl(e){var t=this.configuration.orientation,n=e.detail,a=(n.image.maxPixelValue*n.image.slope+n.image.intercept-(n.image.minPixelValue*n.image.slope+n.image.intercept))/1024,o=n.deltaPoints.page.x*a,i=n.deltaPoints.page.y*a;0===t?(n.viewport.voi.windowWidth+=o,n.viewport.voi.windowCenter+=i):(n.viewport.voi.windowWidth+=i,n.viewport.voi.windowCenter+=o)}var Bl=function(e,t,n){var a=n.maxScale,o=n.minScale,i=Math.log(e.scale)/Math.log(1.7)+t,r=Math.pow(1.7,i);return e.scale=a&&r>a?a:o&&r0&&void 0!==arguments[0]?arguments[0]:{};r()(this,t);return u()(this,h()(t).call(this,e,{name:"ZoomMouseWheel",supportedInteractionTypes:["MouseWheel"],configuration:{minScale:.25,maxScale:20,invert:!1}}))}return g()(t,e),l()(t,[{key:"mouseWheelCallback",value:function(e){var t=e.detail,n=t.element,a=t.viewport,o=t.spinY,i=this.configuration,r=i.invert,s=i.maxScale,l=i.minScale,c=Bl(a,r?o/4:-o/4,{maxScale:s,minScale:l});y.cornerstone.setViewport(n,c)}}]),t}(ca),jl=Vl.correctShift,zl=Vl.changeViewportScale,Wl=function(e){function t(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};r()(this,t);var n={name:"Zoom",strategies:{default:Yl,translate:Xl,zoomToCenter:Kl},defaultStrategy:"default",supportedInteractionTypes:["Mouse","Touch"],configuration:{invert:!1,preventZoomOutsideImage:!1,minScale:.25,maxScale:20},svgCursor:Mo};return u()(this,h()(t).call(this,e,n))}return g()(t,e),l()(t,[{key:"touchDragCallback",value:function(e){Gl.call(this,e)}},{key:"mouseDragCallback",value:function(e){Gl.call(this,e)}}]),t}(ca),Gl=function(e){if(!e.detail.deltaPoints.page.y)return!1;this.applyActiveStrategy(e,this.configuration),y.cornerstone.setViewport(e.detail.element,e.detail.viewport)};function Yl(e){var t=this.configuration,n=t.invert,a=t.maxScale,o=t.minScale,i=e.detail.deltaPoints.page.y,r=n?-i/100:i/100,s=e.detail,l=s.element,c=s.viewport,u=[e.detail.startPoints.page.x,e.detail.startPoints.page.y,e.detail.startPoints.image.x,e.detail.startPoints.image.y],d=u[0],h=u[1],v=u[2],g=u[3],f=zl(c,r,{maxScale:a,minScale:o});y.cornerstone.setViewport(l,f);var m=y.cornerstone.pageToPixel(l,d,h),p={x:v-m.x,y:g-m.y};p=jl(p,f),c.translation.x-=p.x,c.translation.y-=p.y}function Xl(e){var t=this.configuration,n=t.invert,a=t.preventZoomOutsideImage,o=t.maxScale,i=t.minScale,r=e.detail.deltaPoints.page.y,s=n?-r/100:r/100,l=e.detail.image,c=e.detail.viewport,u=[e.detail.startPoints.image.x,e.detail.startPoints.image.y],d=u[0],h=u[1],v=zl(c,s,{maxScale:o,minScale:i}),g={x:0,y:0};if(s<0)v.scale<3&&(Math.abs(v.translation.x)<.01?v.translation.x=0:g.x=v.translation.x/8,Math.abs(v.translation.y)<.01?v.translation.y=0:g.y=v.translation.y/8);else{a&&ma(e.detail.startPoints.image,l);var f={x:l.width/2-d,y:l.height/2-h};f=jl(f,v);var m={x:v.translation.x-f.x,y:v.translation.y-f.y};Math.abs(m.x)<.01?v.translation.x=f.x:g.x=m.x/8,Math.abs(m.y)<.01?v.translation.y=f.y:g.y=m.y/8}v.translation.x-=g.x,v.translation.y-=g.y}function Kl(e){var t=this.configuration,n=t.invert,a=t.maxScale,o=t.minScale,i=e.detail.deltaPoints.page.y,r=n?-i/100:i/100,s=e.detail.viewport;zl(s,r,{maxScale:a,minScale:o})}var Zl=Vl.correctShift,$l=function(e){function t(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};r()(this,t);return u()(this,h()(t).call(this,e,{name:"ZoomTouchPinch",supportedInteractionTypes:["TouchPinch"],configuration:{minScale:.25,maxScale:20}}))}return g()(t,e),l()(t,[{key:"touchPinchCallback",value:function(e){var t=e.detail,n=t.element,a=t.viewport,o=t.scaleChange,i=[e.detail.startPoints.page.x,e.detail.startPoints.page.y,e.detail.startPoints.image.x,e.detail.startPoints.image.y],r=i[0],s=i[1],l=i[2],c=i[3],u=this.configuration,d=u.maxScale,h=u.minScale;a.scale+=o*a.scale,d&&a.scale>d?a.scale=d:h&&a.scale0&&void 0!==arguments[0]?arguments[0]:{};return{x:e.x,y:e.y}}var ec,tc=N("eventListeners:mouseEventListeners"),nc=!0,ac=200;function oc(e){if("number"==typeof e.buttons)return e.buttons;switch(e.which){case 0:return 0;case 1:return 1;case 2:return 4;case 3:return 2}return 0}function ic(){nc=!1}function rc(e){var t=e.currentTarget,n=y.cornerstone.getEnabledElement(t);if(n.image){var a=b.MOUSE_DOUBLE_CLICK,o={page:y.cornerstoneMath.point.pageToPoint(e),image:y.cornerstone.pageToPixel(t,e.pageX,e.pageY),client:{x:e.clientX,y:e.clientY}};o.canvas=y.cornerstone.pixelToCanvas(t,o.image);var i=Jl(o);tc.log("double-click: %o",oc(e)),C(t,a,{event:e,buttons:oc(e),viewport:y.cornerstone.getViewport(t),image:n.image,element:t,startPoints:o,lastPoints:i,currentPoints:o,deltaPoints:{x:0,y:0},type:a})}}function sc(e){var t=e.currentTarget,n=y.cornerstone.getEnabledElement(t);if(n.image){ec=setTimeout(ic,ac),t.removeEventListener("mousemove",lc);var a={page:y.cornerstoneMath.point.pageToPoint(e),image:y.cornerstone.pageToPixel(t,e.pageX,e.pageY),client:{x:e.clientX,y:e.clientY}};a.canvas=y.cornerstone.pixelToCanvas(t,a.image);var o=Jl(a),i={event:e,buttons:oc(e),viewport:y.cornerstone.getViewport(t),image:n.image,element:t,startPoints:a,lastPoints:o,currentPoints:a,deltaPoints:{x:0,y:0},type:b.MOUSE_DOWN};C(i.element,b.MOUSE_DOWN,i)&&(i.type=b.MOUSE_DOWN_ACTIVATE,C(i.element,b.MOUSE_DOWN_ACTIVATE,i)),document.addEventListener("mousemove",r),document.addEventListener("mouseup",(function e(i){clearTimeout(ec);var s=b.MOUSE_UP;nc&&(s=b.MOUSE_CLICK);var l={page:y.cornerstoneMath.point.pageToPoint(i),image:y.cornerstone.pageToPixel(t,i.pageX,i.pageY),client:{x:i.clientX,y:i.clientY}};l.canvas=y.cornerstone.pixelToCanvas(t,l.image);var c={page:y.cornerstoneMath.point.subtract(l.page,o.page),image:y.cornerstoneMath.point.subtract(l.image,o.image),client:y.cornerstoneMath.point.subtract(l.client,o.client),canvas:y.cornerstoneMath.point.subtract(l.canvas,o.canvas)};tc.log("mouseup: %o",oc(i));var u={event:i,buttons:oc(i),viewport:y.cornerstone.getViewport(t),image:n.image,element:t,startPoints:a,lastPoints:o,currentPoints:l,deltaPoints:c,type:s};C(u.element,s,u),document.removeEventListener("mousemove",r),document.removeEventListener("mouseup",e),t.addEventListener("mousemove",lc),nc=!0}))}function r(e){var i=b.MOUSE_DRAG,r={page:y.cornerstoneMath.point.pageToPoint(e),image:y.cornerstone.pageToPixel(t,e.pageX,e.pageY),client:{x:e.clientX,y:e.clientY}};r.canvas=y.cornerstone.pixelToCanvas(t,r.image);var s={page:y.cornerstoneMath.point.subtract(r.page,o.page),image:y.cornerstoneMath.point.subtract(r.image,o.image),client:y.cornerstoneMath.point.subtract(r.client,o.client),canvas:y.cornerstoneMath.point.subtract(r.canvas,o.canvas)};tc.log("mousemove: %o",oc(e));var l={buttons:oc(e),viewport:y.cornerstone.getViewport(t),image:n.image,element:t,startPoints:a,lastPoints:o,currentPoints:r,deltaPoints:s,type:i,ctrlKey:e.ctrlKey,metaKey:e.metaKey,shiftKey:e.shiftKey};C(l.element,i,l),o=Jl(r)}}function lc(e){var t=e.currentTarget,n=y.cornerstone.getEnabledElement(t);if(n.image){var a=b.MOUSE_MOVE,o={page:y.cornerstoneMath.point.pageToPoint(e),image:y.cornerstone.pageToPixel(t,e.pageX,e.pageY),client:{x:e.clientX,y:e.clientY}};o.canvas=y.cornerstone.pixelToCanvas(t,o.image);var i=Jl(o),r={page:y.cornerstoneMath.point.pageToPoint(e),image:y.cornerstone.pageToPixel(t,e.pageX,e.pageY),client:{x:e.clientX,y:e.clientY}};r.canvas=y.cornerstone.pixelToCanvas(t,r.image);var s={page:y.cornerstoneMath.point.subtract(r.page,i.page),image:y.cornerstoneMath.point.subtract(r.image,i.image),client:y.cornerstoneMath.point.subtract(r.client,i.client),canvas:y.cornerstoneMath.point.subtract(r.canvas,i.canvas)};C(t,a,{viewport:y.cornerstone.getViewport(t),image:n.image,element:t,startPoints:o,lastPoints:i,currentPoints:r,deltaPoints:s,type:a}),i=Jl(r)}}function cc(e){e.removeEventListener("mousedown",sc),e.removeEventListener("mousemove",lc),e.removeEventListener("dblclick",rc)}var uc={enable:function(e){cc(e),e.addEventListener("mousedown",sc),e.addEventListener("mousemove",lc),e.addEventListener("dblclick",rc)},disable:cc},dc=function(e){var t=0,n=0,a=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),a=10*t,o=10*n,"deltaY"in e&&(o=e.deltaY),"deltaX"in e&&(a=e.deltaX),(a||o)&&e.deltaMode&&(1===e.deltaMode?(a*=40,o*=40):(a*=800,o*=800)),a&&!t&&(t=a<1?-1:1),o&&!n&&(n=o<1?-1:1),{spinX:t,spinY:n,pixelX:a,pixelY:o}};function hc(e){var t=e.currentTarget,n=y.cornerstone.getEnabledElement(t);if(n.image&&!(e.deltaY>-1&&e.deltaY<1)){e.preventDefault();var a=e.pageX,o=e.pageY,i=y.cornerstone.pageToPixel(t,a,o),r=dc(e),s=r.spinX,l=r.spinY,c=r.pixelX,u=r.pixelY,d=l<0?-1:1,h={element:t,viewport:y.cornerstone.getViewport(t),detail:e,image:n.image,direction:d,spinX:s,spinY:l,pixelX:c,pixelY:u,pageX:a,pageY:o,imageX:i.x,imageY:i.y};C(t,b.MOUSE_WHEEL,h)}}function vc(e){e.removeEventListener("wheel",hc,{passive:!1})}var gc,fc,mc={enable:function(e){vc(e),e.addEventListener("wheel",hc,{passive:!1})},disable:vc},pc=2e3,yc={mouse:0,touch:1};function xc(e,t){var n=Date.now();if(e!==gc){if(n-fc<=pc)return t.preventDefault(),t.stopPropagation(),t.stopImmediatePropagation(),!1;gc=e}fc=n}var Tc=xc.bind(null,yc.mouse),bc=xc.bind(null,yc.touch);function Cc(e,t,n){var a=n?Tc:bc;t.forEach((function(t){e.addEventListener(t,a,{passive:!1})}))}function Mc(e,t,n){var a=n?Tc:bc;t.forEach((function(t){e.removeEventListener(t,a)}))}var wc=["mousedown","mouseup"],Ec=["touchstart","touchend"];function Ic(e){Mc(e,wc,yc.mouse),Mc(e,Ec,yc.touch)}var Sc,kc,_c,Pc,Dc,Oc,Lc,Ac,Rc,Hc={enable:function(e){Ic(e),Cc(e,wc,yc.mouse),Cc(e,Ec,yc.touch)},disable:Ic},Uc=1,Nc=0,Fc=!1,Bc=!1,Vc=700,qc=5,jc="touchInput";function zc(e){var t=e.currentTarget||e.srcEvent.currentTarget,n=y.cornerstone.getEnabledElement(t);if(n.image){var a,o,i,r;switch(e.preventDefault(),(e.pointers&&e.pointers.length>1||e.touches&&e.touches.length>1)&&(Bc=!1,clearTimeout(Lc)),e.type){case"tap":Bc=!1,clearTimeout(Lc),(kc={page:y.cornerstoneMath.point.pageToPoint(e.pointers[0]),image:y.cornerstone.pageToPixel(t,e.pointers[0].pageX,e.pointers[0].pageY),client:{x:e.pointers[0].clientX,y:e.pointers[0].clientY}}).canvas=y.cornerstone.pixelToCanvas(t,kc.image),a=b.TAP,Dc={event:e,viewport:y.cornerstone.getViewport(t),image:n.image,element:t,currentPoints:kc,type:a,isTouchEvent:!0},C(t,a,Dc);break;case"doubletap":Bc=!1,clearTimeout(Lc),(kc={page:y.cornerstoneMath.point.pageToPoint(e.pointers[0]),image:y.cornerstone.pageToPixel(t,e.pointers[0].pageX,e.pointers[0].pageY),client:{x:e.pointers[0].clientX,y:e.pointers[0].clientY}}).canvas=y.cornerstone.pixelToCanvas(t,kc.image),a=b.DOUBLE_TAP,Dc={event:e,viewport:y.cornerstone.getViewport(t),image:n.image,element:t,currentPoints:kc,type:a,isTouchEvent:!0},C(t,a,Dc);break;case"pinchstart":Bc=!1,clearTimeout(Lc),Uc=1;break;case"pinchmove":if(Bc=!1,clearTimeout(Lc),!0===Fc){Uc=e.scale,Fc=!1;break}o=(e.scale-Uc)/Uc,(Sc={page:e.center,image:y.cornerstone.pageToPixel(t,e.center.x,e.center.y)}).canvas=y.cornerstone.pixelToCanvas(t,Sc.image),a=b.TOUCH_PINCH,Dc={event:e,startPoints:Sc,viewport:y.cornerstone.getViewport(t),image:n.image,element:t,direction:e.scale<1?1:-1,scaleChange:o,type:a,isTouchEvent:!0},C(t,a,Dc),Uc=e.scale;break;case"touchstart":Uc=1,clearTimeout(Lc),clearTimeout(Oc),Oc=setTimeout((function(){(Sc={page:y.cornerstoneMath.point.pageToPoint(e.touches[0]),image:y.cornerstone.pageToPixel(t,e.touches[0].pageX,e.touches[0].pageY),client:{x:e.touches[0].clientX,y:e.touches[0].clientY}}).canvas=y.cornerstone.pixelToCanvas(t,Sc.image),a=b.TOUCH_START,e.touches.length>1&&(a=b.MULTI_TOUCH_START),Dc={event:e,viewport:y.cornerstone.getViewport(t),image:n.image,element:t,startPoints:Sc,currentPoints:Sc,type:a,isTouchEvent:!0},!0===C(t,a,Dc)&&(a=b.TOUCH_START_ACTIVE,e.touches.length>1&&(a=b.MULTI_TOUCH_START_ACTIVE),Dc.type=a,C(t,a,Dc)),_c=Jl(Sc)}),50),Bc=!0,Ac=0,Lc=setTimeout((function(){Bc&&((kc={page:y.cornerstoneMath.point.pageToPoint(e.touches[0]),image:y.cornerstone.pageToPixel(t,e.touches[0].pageX,e.touches[0].pageY),client:{x:e.touches[0].clientX,y:e.touches[0].clientY}}).canvas=y.cornerstone.pixelToCanvas(t,Sc.image),a=b.TOUCH_PRESS,Dc={event:e,viewport:y.cornerstone.getViewport(t),image:n.image,element:t,currentPoints:kc,type:a,isTouchEvent:!0},C(t,a,Dc))}),Vc);break;case"touchend":Uc=1,Bc=!1,clearTimeout(Lc),setTimeout((function(){(Sc={page:y.cornerstoneMath.point.pageToPoint(e.changedTouches[0]),image:y.cornerstone.pageToPixel(t,e.changedTouches[0].pageX,e.changedTouches[0].pageY),client:{x:e.changedTouches[0].clientX,y:e.changedTouches[0].clientY}}).canvas=y.cornerstone.pixelToCanvas(t,Sc.image),a=b.TOUCH_END,Dc={event:e,viewport:y.cornerstone.getViewport(t),image:n.image,element:t,startPoints:Sc,currentPoints:Sc,type:a,isTouchEvent:!0},C(t,a,Dc)}),50);break;case"panmove":i={x:e.deltaX-Rc.x,y:e.deltaY-Rc.y},Rc={x:e.deltaX,y:e.deltaY},(kc={page:{x:_c.page.x+i.x,y:_c.page.y+i.y},image:y.cornerstone.pageToPixel(t,_c.page.x+i.x,_c.page.y+i.y),client:{x:_c.client.x+i.x,y:_c.client.y+i.y}}).canvas=y.cornerstone.pixelToCanvas(t,kc.image),Pc={page:y.cornerstoneMath.point.subtract(kc.page,_c.page),image:y.cornerstoneMath.point.subtract(kc.image,_c.image),client:y.cornerstoneMath.point.subtract(kc.client,_c.client),canvas:y.cornerstoneMath.point.subtract(kc.canvas,_c.canvas)},(Ac+=Math.sqrt(Pc.page.x*Pc.page.x+Pc.page.y*Pc.page.y))>qc&&(Bc=!1,clearTimeout(Lc)),a=b.TOUCH_DRAG,e.pointers.length>1&&(a=b.MULTI_TOUCH_DRAG),Dc={viewport:y.cornerstone.getViewport(t),image:n.image,element:t,startPoints:Sc,lastPoints:_c,currentPoints:kc,deltaPoints:Pc,numPointers:e.pointers.length,type:a,isTouchEvent:!0},C(t,a,Dc),_c=Jl(kc);break;case"panstart":Rc={x:e.deltaX,y:e.deltaY},(kc={page:y.cornerstoneMath.point.pageToPoint(e.pointers[0]),image:y.cornerstone.pageToPixel(t,e.pointers[0].pageX,e.pointers[0].pageY),client:{x:e.pointers[0].clientX,y:e.pointers[0].clientY}}).canvas=y.cornerstone.pixelToCanvas(t,kc.image),_c=Jl(kc);break;case"panend":if(Bc=!1,clearTimeout(Lc),!_c)return!1;(kc={page:y.cornerstoneMath.point.pageToPoint(e.pointers[0]),image:y.cornerstone.pageToPixel(t,e.pointers[0].pageX,e.pointers[0].pageY),client:{x:e.pointers[0].clientX,y:e.pointers[0].clientY}}).canvas=y.cornerstone.pixelToCanvas(t,kc.image),Pc={page:y.cornerstoneMath.point.subtract(kc.page,_c.page),image:y.cornerstoneMath.point.subtract(kc.image,_c.image),client:y.cornerstoneMath.point.subtract(kc.client,_c.client),canvas:y.cornerstoneMath.point.subtract(kc.canvas,_c.canvas)},a=b.TOUCH_DRAG_END,Dc={event:e.srcEvent,viewport:y.cornerstone.getViewport(t),image:n.image,element:t,startPoints:Sc,lastPoints:_c,currentPoints:kc,deltaPoints:Pc,type:a,isTouchEvent:!0},C(t,a,Dc),2===e.pointers.length-e.changedPointers.length&&(Fc=!0);break;case"rotatemove":Bc=!1,clearTimeout(Lc),r=e.rotation-Nc,Nc=e.rotation,a=b.TOUCH_ROTATE,Dc={event:e.srcEvent,viewport:y.cornerstone.getViewport(t),image:n.image,element:t,rotation:r,type:a},C(t,a,Dc)}return!1}}function Wc(e){Hc.disable(e);["touchstart","touchend"].forEach((function(t){e.removeEventListener(t,zc)}));var t=Is(jc,e).hammer;t&&t.off("tap doubletap panstart panmove panend pinchstart pinchmove rotatemove",zc)}var Gc={enable:function(e){Wc(e);var t=y.Hammer,n={inputClass:t.SUPPORT_POINTER_EVENTS?t.PointerEventInput:t.TouchInput},a=new t.Manager(e,n),o={pointers:0,direction:t.DIRECTION_ALL,threshold:0},i=new t.Pan(o),r=new t.Pinch({threshold:0}),s=new t.Rotate({threshold:0});r.recognizeWith(i),r.recognizeWith(s),s.recognizeWith(i);var l=new t.Tap({event:"doubletap",taps:2,interval:1500,threshold:50,posThreshold:50});l.recognizeWith(i),a.add([l,i,s,r]),a.on("tap doubletap panstart panmove panend pinchstart pinchmove rotatemove",zc),Hc.enable(e),["touchstart","touchend"].forEach((function(t){e.addEventListener(t,zc,{passive:!1})}));var c=Is(jc,e);c.hammer=a,Ss(jc,e,c)},disable:Wc},Yc=yt("segmentation");function Xc(e,t,n,a,o){!function(e,t,n){var a=Yc.configuration,o=e.detail,i=Cn(o.canvasContext.canvas),r=y.cornerstone.pixelToCanvas(o.element,{x:0,y:0}),s=y.cornerstone.pixelToCanvas(o.element,{x:o.image.width,y:0}),l=y.cornerstone.pixelToCanvas(o.element,{x:o.image.width,y:o.image.height}),c=y.cornerstoneMath.point.distance(r,s),u=y.cornerstoneMath.point.distance(s,l),d=o.canvasContext.canvas,h=o.viewport,v=i.imageSmoothingEnabled,g=i.globalAlpha;i.imageSmoothingEnabled=!1,i.globalAlpha=n?a.fillAlpha:a.fillAlphaInactive,En(i,d,h);var f={x:h.translation.x*h.scale,y:h.translation.y*h.scale};i.drawImage(t,d.width/2-c/2+f.x,d.height/2-u/2+f.y,c,u),i.globalAlpha=g,i.imageSmoothingEnabled=v,In(i)}(e,function(e,t,n){var a=Yc.state,o=e.detail.image,i=o.width,r=o.height,s=t.segmentsHidden,l=n.pixelData,c=a.colorLutTables[t.colorLUTIndex],u=document.createElement("canvas");u.width=i,u.height=r;for(var d=Cn(u),h=new ImageData(i,r),v=h.data,g=0;g3&&void 0!==arguments[3])||arguments[3],o=Kc.configuration,i=Kc.state,r=e.detail,s=r.element,l=r.canvasContext,c=o.outlineWidth||1,u=Cn(l.canvas),d=i.colorLutTables[n],h=u.globalAlpha;u.globalAlpha=a?o.outlineAlpha:o.outlineAlphaInactive,jt(u,(function(e){for(var n=1;n=0,r=e.y+1=0,l=e.x+13&&void 0!==arguments[3]?arguments[3]:"mouse",o="mouse"===a?ft.clickProximity:ft.touchProximity;return t.filter((function(t){for(var a=O(e,t.name),i=0;i0}))},yu=function(e){if(!ft.isToolLocked){var t=e.detail,n=e.detail.element,a=e.detail.currentPoints.canvas,o=mu(n,mt.mouseTools()),i=o.filter((function(e){return"active"===e.mode&&Array.isArray(e.options.mouseButtonMask)&&e.options.mouseButtonMask.includes(t.buttons)&&e.options.isMouseActive}));if(ft.isMultiPartToolActive&&(i=wa(i)),i.length>0){var r=i.find((function(e){return"function"==typeof e.preMouseDownCallback}));if(r)if(r.preMouseDownCallback(e))return}if(!ft.isMultiPartToolActive){var s=pu(n,o),l=fu(n,s,a,"mouse");if(l.length>0){var c=l[0],u=O(n,c.name),d=Xa(n,u,c.name,a),h=d.handle,v=d.data;c.handleSelectedCallback(e,v,h,"mouse")}else{var g=o.filter((function(e){var t=O(n,e.name);return t&&t.data&&e.pointNearTool&&t.data.some((function(t){return e.pointNearTool(n,t,a,"mouse")}))}));if(g.length>0){var f=g[0],m=O(n,f.name).data.find((function(e){return f.pointNearTool(n,e,a)}));f.toolSelectedCallback(e,m,"mouse")}else if(i.length>0){var p=i.find((function(e){return"function"==typeof e.postMouseDownCallback}));if(p)if(p.postMouseDownCallback(e))return}}}}},xu=N("eventDispatchers:mouseEventHandlers"),Tu=function(e){if(!ft.isToolLocked){var t=e.detail,n=Ea(t.element,t.buttons,"mouse");if(n){if("function"==typeof n.preMouseDownActivateCallback)if(n.preMouseDownActivateCallback(e))return;ft.isMultiPartToolActive||(n.addNewMeasurement?n.addNewMeasurement(e,"mouse"):n instanceof $a&&function(e,t){xu.log("addNewMeasurement"),e.preventDefault(),e.stopPropagation();var n=e.detail,a=n.element,o=t.createNewMeasurement(n);o&&(D(a,t.name,o),y.cornerstone.updateImage(a),(1===Object.keys(o.handles).length?Ha:ja)(n,t.name,o,o.handles.end,t.options,"mouse",(function(){var e=b.MEASUREMENT_COMPLETED,n={toolName:t.name,element:a,measurementData:o};C(a,e,n)})))}(e,n))}}},bu=function(e){if(!ft.isToolLocked){var t,n=e.detail,a=n.element;if(t=(t=(t=ya(a,mt.mouseTools())).filter((function(e){return Array.isArray(e.options.mouseButtonMask)&&e.options.mouseButtonMask.includes(n.buttons)&&e.options.isMouseActive}))).filter((function(e){return"function"==typeof e.mouseDragCallback})),ft.isMultiPartToolActive&&(t=wa(t)),0!==t.length)t[0].mouseDragCallback(e)}},Cu=function(e){if(!ft.isToolLocked&&!ft.isMultiPartToolActive){var t,n=e.detail,a=n.element,o=n.currentPoints;ft.mousePositionImage=o.image;var i=(t=mu(a,mt.mouseTools())).filter((function(e){return"active"===e.mode&&e.options.isMouseActive})),r=!1;i.length>0&&(r=i.some((function(e){return e.updateOnMouseMove}))),t=pu(a,t);for(var s=0;s0){var i=o[0],r=O(n,i.name),s=r.data.find((function(e){return void 0!==ha(n,e.handles,a,28)}));return r.data.active=!0,s.active=!0,y.cornerstone.updateImage(n),Ha(e.detail,i.name,r.data,s,i.options,"touch",(function(){return Ru(r)})),e.stopImmediatePropagation(),void e.preventDefault()}var l=t.filter((function(e){var t=O(n,e.name);return t&&t.data&&e.pointNearTool&&t.data.some((function(t){return e.pointNearTool(n,t,a)}))}));if(l.length>0){var c=l[0],u=O(n,c.name),d=u.data.find((function(e){return c.pointNearTool(n,e,a)}));return d.active=!0,y.cornerstone.updateImage(n),_a(e.detail,c.name,d,null,c.options,"touch",(function(){return Ru(u)})),e.stopImmediatePropagation(),void e.preventDefault()}var h=ya(n,mt.touchTools());return h.length>0&&h[0].touchStartActiveCallback?h[0].touchStartActiveCallback(e):Au(e),!1}},Nu=function(e){if(!ft.isToolLocked){var t=e.detail,n=t.element,a=t.startPoints.canvas,o=mu(n,mt.touchTools()),i=o.filter((function(e){return"active"===e.mode&&e.options.isTouchActive}));if(ft.isMultiPartToolActive&&(i=wa(i)),i.length>0){var r=i.find((function(e){return"function"==typeof e.preTouchStartCallback}));if(r)if(r.preTouchStartCallback(e))return}if(!ft.isMultiPartToolActive){var s=pu(n,o),l=fu(n,s,a,"touch");if(l.length>0){var c=l[0],u=O(n,c.name),d=Xa(n,u,c.name,a,"touch"),h=d.handle,v=d.data;c.handleSelectedCallback(e,v,h,"touch")}else{var g=s.filter((function(e){var t=O(n,e.name);return t&&t.data&&e.pointNearTool&&t.data.some((function(t){return e.pointNearTool(n,t,a,"touch")}))}));if(g.length>0){var f=g[0],m=O(n,f.name).data.find((function(e){return f.pointNearTool(n,e,a)}));f.toolSelectedCallback(e,m,"touch")}else if(i.length>0){var p=i.find((function(e){return"function"==typeof e.postTouchStartCallback}));if(p)if(p.postTouchStartCallback(e))return}}}}},Fu=gu.bind(null,"DoubleTap","doubleTapCallback"),Bu=gu.bind(null,"Touch","touchDragCallback"),Vu=gu.bind(null,"Touch","touchEndCallback"),qu=gu.bind(null,"TouchPinch","touchPinchCallback"),ju=gu.bind(null,"Touch","touchPressCallback"),zu=gu.bind(null,"TouchRotate","touchRotateCallback"),Wu=function(e){e.addEventListener(b.TAP,Uu),e.addEventListener(b.TOUCH_START,Nu,{passive:!1}),e.addEventListener(b.TOUCH_DRAG,Bu,{passive:!1}),e.addEventListener(b.TOUCH_END,Vu),e.addEventListener(b.TOUCH_START_ACTIVE,Au),e.addEventListener(b.TOUCH_PRESS,ju),e.addEventListener(b.DOUBLE_TAP,Fu),e.addEventListener(b.TOUCH_PINCH,qu),e.addEventListener(b.TOUCH_ROTATE,zu),e.addEventListener(b.MULTI_TOUCH_DRAG,Ou)},Gu=function(e){e.removeEventListener(b.TAP,Uu),e.removeEventListener(b.TOUCH_START,Nu),e.removeEventListener(b.TOUCH_DRAG,Bu),e.removeEventListener(b.TOUCH_END,Vu),e.removeEventListener(b.TOUCH_START_ACTIVE,Au),e.removeEventListener(b.TOUCH_PRESS,ju),e.removeEventListener(b.DOUBLE_TAP,Fu),e.removeEventListener(b.TOUCH_PINCH,qu),e.removeEventListener(b.TOUCH_ROTATE,zu),e.removeEventListener(b.MULTI_TOUCH_DRAG,Ou)},Yu=N("addTool"),Xu=function(e,t,n){var a=new t(n);Tt(e,a.name)?Yu.warn("%s has already been added to the target element",a.name):(a.element=e,xt.state.tools.push(a))},Ku=function(e,t){Zu(e,t),xt.state.enabledElements.forEach((function(n){Xu(n,e,t)}))},Zu=function(e,t){if(yt("globalConfiguration").configuration.globalToolSyncEnabled){var n=new e(t);void 0!==xt.state.globalTools[n.name]?Yu.warn("%s has already been added globally",n.name):xt.state.globalTools[n.name]={tool:e,props:t,activeBindings:[]}}},$u=N("internals:addEnabledElement"),Ju=function(e){$u.log("EVENT:ELEMENT_ENABLED");var t=e.detail.element;hu(t),Pu(t);var n=yt("globalConfiguration").configuration;n.mouseEnabled&&(uc.enable(t),mc.enable(t),Su(t)),n.touchEnabled&&(Gc.enable(t),Wu(t)),Qu(t)},Qu=function(e){xt.state.enabledElements.push(e),xt.modules&&function(e){var t=xt.modules;Object.keys(t).forEach((function(n){"function"==typeof t[n].enabledElementCallback&&t[n].enabledElementCallback(e)}))}(e),function(e){if(!yt("globalConfiguration").configuration.globalToolSyncEnabled)return;Object.keys(xt.state.globalTools).forEach((function(t){var n=xt.state.globalTools[t],a=n.tool,o=n.props;Xu(e,a,o)}))}(e),function(e){if(!yt("globalConfiguration").configuration.globalToolSyncEnabled)return;var t={active:St,passive:Lt,enabled:Dt,disabled:_t};xt.state.globalToolChangeHistory.forEach((function(n){var a=n.args.slice(0);a.unshift(e),t[n.mode].apply(null,a)}))}(e)};var ed=N("internals:removeEnabledElement"),td=function(e){ed.log("EVENT:ELEMENT_DISABLED");var t=e.detail.element,n=yt("globalConfiguration").configuration;vu(t),Du(t),n.mouseEnabled&&(uc.disable(t),mc.disable(t),ku(t)),n.touchEnabled&&(Gc.disable(t),Gu(t)),nd(t),ad(t),od(t)},nd=function(e){xt.state.tools=xt.state.tools.filter((function(t){return t.element!==e}))},ad=function(e){xt.modules&&function(e){var t=xt.modules;Object.keys(t).forEach((function(n){"function"==typeof t[n].removeEnabledElementCallback&&t[n].removeEnabledElementCallback(e)}))}(e);var t=xt.state.enabledElements.findIndex((function(t){return t===e}));t>-1?xt.state.enabledElements.splice(t,1):ed.warn("unable to remove element")},od=function(e){ws.removeHandlers(e)};var id,rd=function(){window.removeEventListener("resize",sd,!1)};function sd(){id||(id=setTimeout((function(){id=null,ld()}),66))}var ld=function(){ft.enabledElements.forEach((function(e){y.cornerstone.resize(e)}))},cd=function(){rd(),window.addEventListener("resize",sd,!1)},ud=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};dd(),hd();var t=yt("globalConfiguration");Array.isArray(e)?e.forEach((function(e){var t=e.moduleName,n=e.configuration,a=yt(t);a&&(a.configuration=Object.assign({},a.configuration,n))})):t.configuration=Object.assign({},t.configuration,e),t.configuration.autoResizeViewports&&cd()};function dd(){!function(){var e=y.cornerstone,t=e.EVENTS.ELEMENT_ENABLED,n=e.EVENTS.ELEMENT_DISABLED;e.events.removeEventListener(t,Ju),e.events.removeEventListener(n,td)}();var e=y.cornerstone,t=e.EVENTS.ELEMENT_ENABLED,n=e.EVENTS.ELEMENT_DISABLED;e.events.addEventListener(t,Ju),e.events.addEventListener(n,td)}function hd(){var e=xt.modules;Object.keys(e).forEach((function(t){"function"==typeof e[t].onRegisterCallback&&e[t].onRegisterCallback()}))}var vd,gd=N("stackTools:stackPrefetch"),fd="stackPrefetch",md="prefetch",pd={maxImagesToPrefetch:1/0,preserveExistingPool:!1},yd=10;function xd(e,t){e=Math.round(e)||0;var n=[],a=(t=Math.round(t)||0)-e+1;if(a<=0)return n;for(;a--;)n[a]=t--;return n}var Td=function(e){return Math.max.apply(null,e)},bd=function(e){return Math.min.apply(null,e)};function Cd(e){var t=O(e,"stack");if(t&&t.data&&t.data.length){var n=t.data[0],a=O(e,fd);if(a){var o=a.data[0]||{};if(o.indicesToRequest&&o.indicesToRequest.length||(o.enabled=!1),!1!==o.enabled)if(a.data[0].indicesToRequest.sort((function(e,t){return e-t})),o.indicesToRequest.slice().forEach((function(e){var t=n.imageIds[e];t&&(y.cornerstone.imageCache.getImageLoadObject(t)&&w(e))})),o.indicesToRequest.length){pd.preserveExistingPool||Il.clearRequestStack(md);for(var i,r,s=function(e,t){var n=[],a=[];return e.forEach((function(e){et&&a.push(e)})),{low:e.indexOf(Td(n)),high:e.indexOf(bd(a))}}(o.indicesToRequest,n.currentImageIdIndex),l=ws.getErrorLoadingHandler(e),c=s.low,u=s.high,d=[];c>=0||upd.maxImagesToPrefetch)&&c>=0,g=!(o.indicesToRequest[u]-h>pd.maxImagesToPrefetch)&&u-1&&o.indicesToRequest.splice(t,1)}function E(t){gd.log("prefetch done: %s",t.imageId);var a=n.imageIds.indexOf(t.imageId);w(a),C(e,b.STACK_PREFETCH_IMAGE_LOADED,{element:e,imageId:t.imageId,imageIndex:a,stackPrefetch:o,stack:n}),o.indicesToRequest&&o.indicesToRequest.length>0||C(e,b.STACK_PREFETCH_DONE,{element:e,stackPrefetch:o,stack:n})}function I(t){gd.log("prefetch errored: %o",t),l&&l(e,i,t,"stackPrefetch")}}function Md(e){return function(t){var n,a=t.detail;try{n=O(e,"stack")}catch(e){return}if(n&&n.data&&n.data.length){var o=n.data[0].imageIds.indexOf(a.imageId);if(!(o<0)){var i=O(e,fd);i&&i.data&&i.data.length&&i.data[0].indicesToRequest.push(o)}}}}function wd(e){clearTimeout(vd),vd=setTimeout((function(){var t=e.target;try{Cd(t)}catch(e){return}}),yd)}var Ed={enable:function(e){O(e,fd).data=[];var t=O(e,"stack");if(t&&t.data&&t.data.length){var n=t.data[0];if(!0!==n.preventCache){var a={indicesToRequest:xd(0,n.imageIds.length-1),enabled:!0,direction:1},o=a.indicesToRequest.indexOf(n.currentImageIdIndex);a.indicesToRequest.splice(o,1),D(e,fd,a),Cd(e),e.removeEventListener(y.cornerstone.EVENTS.NEW_IMAGE,wd),e.addEventListener(y.cornerstone.EVENTS.NEW_IMAGE,wd);var i=Md(e);y.cornerstone.events.removeEventListener(y.cornerstone.EVENTS.IMAGE_CACHE_PROMISE_REMOVED,i),y.cornerstone.events.addEventListener(y.cornerstone.EVENTS.IMAGE_CACHE_PROMISE_REMOVED,i)}else gd.warn("A stack that should not be cached was given the stackPrefetch")}},disable:function(e){clearTimeout(vd),e.removeEventListener(y.cornerstone.EVENTS.NEW_IMAGE,wd);var t=Md(e);y.cornerstone.events.removeEventListener(y.cornerstone.EVENTS.IMAGE_CACHE_PROMISE_REMOVED,t);var n=O(e,fd);n&&n.data.length&&(n.data[0].enabled=!1,Il.clearRequestStack(md))},getConfiguration:function(){return pd},setConfiguration:function(e){var t;pd=e,e.maxSimultaneousRequests&&(t=e.maxSimultaneousRequests,ol=t)}},Id=function(){function e(){r()(this,e),this.currentImageIdIndex=0,this.layerIds=[],this.findImageFn=void 0}return l()(e,[{key:"render",value:function(e,t){var n=this;if(!Number.isInteger(this.currentImageIdIndex))throw new Error("FusionRenderer: render - Image ID Index is not an integer");if(!this.findImageFn)throw new Error("No findImage function has been defined");t||(t=O(e,"stack").data);var a=y.cornerstone,o=t[0],i=o.imageIds[this.currentImageIdIndex],r=t.slice(1,t.length);a.loadAndCacheImage(i).then((function(t){var s=n.layerIds[0];s?a.setLayerImage(e,t,s):(s=a.addLayer(e,t,o.options),n.layerIds.push(s)),a.displayImage(e,t),r.forEach((function(t,o){var r=n.findImageFn(t.imageIds,i),l=o+1,c=n.layerIds[l];c||(c=a.addLayer(e,void 0,t.options),n.layerIds.push(c)),r?a.loadAndCacheImage(r).then((function(t){a.setLayerImage(e,t,c),a.updateImage(e)})):(a.setLayerImage(e,void 0,c),a.setActiveLayer(e,s),a.updateImage(e))}))}))}}]),e}(),Sd={};Sd.FusionRenderer=Id;var kd=Sd,_d="playClip";function Pd(e){var t=e.intervalId;void 0!==t&&(e.intervalId=void 0,e.usingFrameTimeVector?clearTimeout(t):clearInterval(t))}function Dd(e,t){var n,a;if(void 0===e)throw new Error("playClip: element must not be undefined");var o=O(e,"stack");if(o&&o.data&&o.data.length){var i,r=y.cornerstone;if(o.data.length>1){var s=O(e,"stackRenderer");s&&s.data&&s.data.length&&(i=s.data[0])}var l=o.data[0],c=O(e,_d);c&&c.data&&c.data.length?Pd(n=c.data[0]):D(e,_d,n={intervalId:void 0,framesPerSecond:30,lastFrameTimeStamp:void 0,frameRate:0,frameTimeVector:void 0,ignoreFrameTimeVector:!1,usingFrameTimeVector:!1,speed:1,reverse:!1,loop:!0}),(t<0||t>0)&&(n.framesPerSecond=Number(t),n.reverse=n.framesPerSecond<0,n.ignoreFrameTimeVector=!0),!0!==n.ignoreFrameTimeVector&&n.frameTimeVector&&n.frameTimeVector.length===l.imageIds.length&&(a=function(e,t){var n,a,o,i=0,r=e.length,s=[];for(s.isTimeVarying=!1,("number"!=typeof t||t<=0)&&(t=1),n=1;n0&&(o=s.isTimeVarying?i/s.length|0:s[0],s.push(o)),s}(n.frameTimeVector,n.speed));var u=function(){var t,a,s,c=l.currentImageIdIndex,u=l.imageIds.length;if(n.reverse?c--:c++,!n.loop&&(c<0||c>=u))return Pd(n),void function(e){var t={element:e};C(e,b.CLIP_STOPPED,t)}(e);c>=u&&(c=0),c<0&&(c=u-1),c!==l.currentImageIdIndex&&(t=ws.getStartLoadHandler(e),a=ws.getEndLoadHandler(e),s=ws.getErrorLoadingHandler(e),t&&t(e),(!0===l.preventCache?r.loadImage(l.imageIds[c]):r.loadAndCacheImage(l.imageIds[c])).then((function(t){try{l.currentImageIdIndex=c,i?(i.currentImageIdIndex=c,i.render(e,o.data)):r.displayImage(e,t),a&&a(e,t)}catch(e){return}}),(function(t){var n=l.imageIds[c];s&&s(e,n,t)})))};a&&a.length>0&&a.isTimeVarying?(n.usingFrameTimeVector=!0,n.intervalId=setTimeout((function e(){n.intervalId=setTimeout(e,a[l.currentImageIdIndex]),u()}),0)):(n.usingFrameTimeVector=!1,n.intervalId=setInterval(u,1e3/Math.abs(n.framesPerSecond)))}}function Od(e){var t=O(e,_d);t&&t.data&&t.data.length&&Pd(t.data[0])}var Ld=function(e,t){var n=xt.state.tools.findIndex((function(n){return n.element===e&&n.name===t}));n>=0&&xt.state.tools.splice(n,1)},Ad=function(e){Rd(e),xt.state.enabledElements.forEach((function(t){Ld(t,e)}))},Rd=function(e){yt("globalConfiguration").configuration.globalToolSyncEnabled&&xt.state.globalTools[e]&&delete xt.state.globalTools[e]},Hd=function(e,t,n){var a=Tt(e,t);a&&a.mergeOptions(n)},Ud=function(e,t){ft.enabledElements.forEach((function(n){Hd(n,e,t)}))};function Nd(e,t){var n={};return{get:function(a,o){return e.indexOf(o)>=0?(!1===n.hasOwnProperty(o)&&(n[o]={data:[]}),n[o]):t.get(a,o)},add:function(a,o,i){if(!(e.indexOf(o)>=0))return t.add(a,o,i);!1===n.hasOwnProperty(o)&&(n[o]={data:[]}),n[o].data.push(i)},saveToolState:function(){return n},restoreToolState:function(e){n=e},toolState:n}}var Fd=[];function Bd(e,t){var n=P(e);n||(n=_);var a=["stack","stackPrefetch","playClip","volume","slab","referenceLines","crosshairs","stackRenderer"];t&&(a=a.concat(t));var o=Nd(a,n);Fd.push(o),R(e,o)}var Vd={newStackSpecificToolStateManager:Nd,addStackStateManager:Bd};function qd(){var e={};return{get:function(t,n){if(!1!==e.hasOwnProperty(t)){var a=e[t];if(!1!==a.hasOwnProperty(n))return a[n]}},add:function(t,n,a){!1===e.hasOwnProperty(t)&&(e[t]={});var o=e[t];!1===o.hasOwnProperty(n)&&(o[n]={data:[]}),o[n].data.push(a)},remove:function(t,n,a){if(!1!==e.hasOwnProperty(t)){var o=e[t];if(!1!==o.hasOwnProperty(n)){for(var i=o[n],r=-1,s=0;s2&&void 0!==arguments[2]?arguments[2]:"image/png",a=e.querySelector("canvas");if(a.msToBlob){var o=a.msToBlob();return window.navigator.msSaveBlob(o,t)}var i=document.createElement("a");if(i.download=t,i.href=a.toDataURL(n,1),document.createEvent){var r=document.createEvent("MouseEvents");r.initMouseEvent("click",!0,!0,window,0,0,0,0,0,!1,!1,!1,!1,0,null),i.dispatchEvent(r)}else i.fireEvent&&i.fireEvent("onclick")},Wd=N("thirdParty:registerModule"),Gd=function(e,t){var n=arguments.length>2&&void 0!==arguments[2]&&arguments[2],a=Yd(e);!a||n?(a&&Wd.warn("Overwriting module %s",e),pt[e]=t,"function"==typeof pt[e].onRegisterCallback&&pt[e].onRegisterCallback()):Wd.warn("A module with the name %s is already registered",e)};function Yd(e){return void 0!==pt[e]}var Xd={"base/BaseTool":ca,"base/BaseAnnotationTool":$a,"base/BaseBrushTool":Ma,"tools/cursors/MouseCursor":to,"tools/cursors":o,"manipulators/anyHandlesOutsideImage":ga,"manipulators/getHandleNearImagePoint":ha,"manipulators/handleActivator":va,"manipulators/moveAllHandles":_a,"manipulators/moveHandle":Ha,"manipulators/moveNewHandle":ja,"manipulators/moveHandleNearImagePoint":Ya,"manipulators/findHandleDataNearImagePoint":Xa,"manipulators/moveAnnotation":Ka,"mixins/activeOrDisabledBinaryTool":ea.activeOrDisabledBinaryTool,"mixins/enabledOrDisabledBinaryTool":ea.enabledOrDisabledBinaryTool,"drawing/getNewContext":Cn,"drawing/draw":jt,"drawing/path":Yt,"drawing/setShadow":wn,"drawing/drawLine":Xt,"drawing/drawLines":un,"drawing/drawJoinedLines":Kt,"drawing/drawCircle":$t,"drawing/drawEllipse":an,"drawing/drawRect":bn,"drawing/fillOutsideRect":function(e,t,n,a,o){var i=arguments.length>5&&void 0!==arguments[5]?arguments[5]:"pixel";if("pixel"===i){var r=y.cornerstone;n=r.pixelToCanvas(t,n),a=r.pixelToCanvas(t,a)}var s=Math.min(n.x,a.x),l=Math.min(n.y,a.y),c=Math.abs(n.x-a.x),u=Math.abs(n.y-a.y);Yt(e,o,(function(e){e.rect(0,0,e.canvas.clientWidth,e.canvas.clientHeight),e.rect(s+c,l,-c,u)}))},"drawing/drawTextBox":xn,"drawing/drawArrow":Zt,"drawing/fillBox":pn,"drawing/fillTextLines":mn,"drawing/drawLink":dn,"drawing/drawLinkedTextBox":Tn,"drawing/drawHandles":cn,"drawing/textBoxWidth":yn,"util/getLuminance":Ll,"util/getROITextBoxCoords":Bi,"util/copyPoints":Jl,"util/calculateSUV":Ri,"util/setContextToDisplayFontSize":function(e,t,n){return y.cornerstone.setToPixelCoordinateSystem(e,t,.1),{fontSize:n/e.viewport.scale/.1,lineHeight:n/e.viewport.scale/.1,fontScale:.1}},"util/scrollToIndex":Sl,"util/scroll":kl,"util/roundToDecimal":Qa,"util/projectPatientPointToImagePlane":Qt,"util/imagePointToPatientPoint":en,"util/planePlaneIntersection":tn,"util/pointInsideBoundingBox":ua,"util/makeUnselectable":function(e,t){e.style.webkitUserSelect="none",e.style.webkitTouchCallout="none",e.style.mozUserSelect="none",e.style.msUserSelect="none",e.style.oUserSelect="none",e.style.khtmlUserSelect="none",e.style.userSelect="none",e.unselectable="on",e.oncontextmenu=function(){return!1},!0===t&&(e.style.pointerEvents="none")},"util/getRGBPixels":wr,"util/getDefaultSimultaneousRequests":ml,"util/getMaxSimultaneousRequests":fl,"util/getBrowserInfo":gl,"util/isMobileDevice":function(){return new RegExp("Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini").test(navigator.userAgent)},"util/angleBetweenPoints":tl,"util/numbersWithCommas":Vi,"util/lineSegDistance":Ja,"util/triggerEvent":C,"util/convertToVector3":Jt,"util/clip":fa,"util/clipToBox":ma,"util/debounce":zo,"util/deepmerge":ra,"util/getDefault":Mn,"util/getPixelSpacing":qo,"util/isEmptyObject":Sn,"util/isObject":jo,"util/isPointInImage":Ge,"util/isPointInPolygon":zr,"util/getLogger":N,"util/throttle":Wo,"util/wait":$s,"util/waitForEnabledElementImageToLoad":Js,"util/getKeyPressData":function(e){var t=y.cornerstone,n=e.currentTarget,a=t.getEnabledElement(n);if(a&&a.image){var o=xt.state.mousePositionImage;return{event:window.event||e,element:n,viewport:t.getViewport(n),image:a.image,currentPoints:{image:o,canvas:t.pixelToCanvas(n,o)},keyCode:e.keyCode,which:e.which}}},"util/ellipseUtils":Fi,"util/freehandUtils":vr,"util/segmentationUtils":a,"util/zoomUtils":Vl},Kd=N("thirdParty:registerMixin"),Zd=function(e,t){var n=arguments.length>2&&void 0!==arguments[2]&&arguments[2],a=$d(e);!a||n?(a&&Kd.warn("Overwriting mixins/%s",e),ea[e]=t,Xd["mixins/".concat(e)]=ea[e]):Kd.warn("mixins/%s is already registered",e)};function $d(e){return void 0!==ea[e]}var Jd=N("thirdParty:registerType"),Qd=function(e,t,n){var a=arguments.length>3&&void 0!==arguments[3]&&arguments[3],o="".concat(e,"/").concat(t),i=eh(o);!i||a?(i&&Jd.warn("Overwriting %s",o),Xd[o]=n):Jd.warn("%s is already registered",o)};function eh(e){return void 0!==Xd[e]}var th=N("thirdParty:register"),nh=function(e,t,n){var a=arguments.length>3&&void 0!==arguments[3]&&arguments[3];if(ah(e,t,n))switch(e){case"module":Gd(t,n,a);break;case"mixin":Zd(t,n,a);break;default:Qd(e,t,n,a)}};function ah(e,t,n){return e?t?"object"===T()(n)||"function"==typeof n||(th.warn("The %s is a %s, it should be an Object or a function.",n,T()(n)),!1):(th.warn("The %s must have a name in order to register.",e),!1):(th.warn("The type must be given in order to register."),!1)}var oh=function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];e.forEach((function(e){var n=e.type,a=e.name,o=e.item;nh(n,a,o,t)}))},ih=function(e,t,n){if(n!==t){var a=y.cornerstone,o=a.getViewport(t),i=a.getViewport(n);i.voi.windowWidth===o.voi.windowWidth&&i.voi.windowCenter===o.voi.windowCenter&&i.invert===o.invert||(i.voi.windowWidth=o.voi.windowWidth,i.voi.windowCenter=o.voi.windowCenter,i.invert=o.invert,e.setViewport(n,i))}},rh=function(e,t,n){n!==t&&y.cornerstone.updateImage(n)};function sh(e){return e.filter((function(e,t,n){return n.indexOf(e)===t}))}var lh=function(e,t){var n=y.cornerstone,a=this,o=[],i=[],r=!1,s={},l=t;function c(e,t){var n=!a.enabled,c=!o.length||!i.length;n||c||(r=!0,i.forEach((function(n){var r=i.indexOf(n);if(-1!==r){var c=s.imageIds.targetElements[r],u=o.indexOf(e);if(-1!==u){var d,h=s.imageIds.sourceElements[u];h===c?d=0:void 0!==s.distances[h]&&(d=s.distances[h][c]),l(a,e,n,t,d)}}})),r=!1)}function u(e){var t=e.detail;!0!==r&&c(e.currentTarget,t)}function d(e){var t=e.detail.element;a.remove(t),function(e){for(var t in Es)Es[t]=Es[t].filter((function(t){return t.element!==e}))}(t)}this.enabled=!0,this.setHandler=function(e){l=e},this.getHandler=function(){return l},this.getDistances=function(){o.length&&i.length&&(s.distances={},s.imageIds={sourceElements:[],targetElements:[]},o.forEach((function(e){var t=n.getEnabledElement(e);if(t&&t.image){var a=t.image.imageId,o=n.metaData.get("imagePlaneModule",a);if(o&&o.imagePositionPatient){var r=Jt(o.imagePositionPatient);s.hasOwnProperty(t)||(s.distances[a]={},s.imageIds.sourceElements.push(a),i.forEach((function(t){var o=n.getEnabledElement(t);if(o&&o.image){var i=o.image.imageId;if(s.imageIds.targetElements.push(i),e!==t&&a!==i&&!s.distances[a].hasOwnProperty(i)){var l=n.metaData.get("imagePlaneModule",i);if(l&&l.imagePositionPatient){var c=Jt(l.imagePositionPatient);s.distances[a][i]=c.clone().sub(r)}}}})),Object.keys(s.distances[a]).length||delete s.distances[a])}}})))},this.addSource=function(t){-1===o.indexOf(t)&&(o.push(t),e.split(" ").forEach((function(e){t.addEventListener(e,u)})),a.getDistances(),a.updateDisableHandlers())},this.addTarget=function(e){-1===i.indexOf(e)&&(i.push(e),a.getDistances(),l(a,e,e,0),a.updateDisableHandlers())},this.add=function(e){a.addSource(e),a.addTarget(e)},this.removeSource=function(t){var n=o.indexOf(t);-1!==n&&(o.splice(n,1),e.split(" ").forEach((function(e){t.removeEventListener(e,u)})),a.getDistances(),c(t),a.updateDisableHandlers())},this.removeTarget=function(e){var t=i.indexOf(e);-1!==t&&(i.splice(t,1),a.getDistances(),l(a,e,e,0),a.updateDisableHandlers())},this.remove=function(e){a.removeTarget(e),a.removeSource(e)},this.getSourceElements=function(){return o},this.getTargetElements=function(){return i},this.displayImage=function(e,t,a){r=!0,n.displayImage(e,t,a),r=!1},this.setViewport=function(e,t){r=!0,n.setViewport(e,t),r=!1},this.updateDisableHandlers=function(){sh(o.concat(i)).forEach((function(e){e.removeEventListener(y.cornerstone.EVENTS.ELEMENT_DISABLED,d),e.addEventListener(y.cornerstone.EVENTS.ELEMENT_DISABLED,d)}))},this.destroy=function(){sh(o.concat(i)).forEach((function(e){a.remove(e)}))}},ch=function(e,t,n,a){if(t!==n&&a&&a.direction){var o=y.cornerstone,i=O(n,"stack").data[0],r=i.currentImageIdIndex+a.direction;if(r=pa(r,0,i.imageIds.length-1),i.currentImageIdIndex!==r){var s=ws.getStartLoadHandler(n),l=ws.getEndLoadHandler(n),c=ws.getErrorLoadingHandler(n);i.currentImageIdIndex=r;var u=i.imageIds[r];s&&s(n),(!0===i.preventCache?o.loadImage(u):o.loadAndCacheImage(u)).then((function(t){var a=o.getViewport(n);i.currentImageIdIndex===r&&(e.displayImage(n,t,a),l&&l(n,t))}),(function(e){var t=i.imageIds[r];c&&c(n,t,e)}))}}},uh=function(e,t,n){if(n!==t){var a=y.cornerstone,o=O(t,"stack").data[0],i=o.imageIds[o.currentImageIdIndex],r=a.metaData.get("imagePlaneModule",i);if(void 0!==r&&void 0!==r.imagePositionPatient){var s=Jt(r.imagePositionPatient),l=O(n,"stack").data[0],c=Number.MAX_VALUE,u=-1;if(l.imageIds.forEach((function(e,t){var n=a.metaData.get("imagePlaneModule",e);if(void 0!==n&&void 0!==n.imagePositionPatient){var o=Jt(n.imagePositionPatient).distanceToSquared(s);o