From 696e179423e1c3f7a7c8408a7516d28ab69bd21d Mon Sep 17 00:00:00 2001 From: Ross Date: Tue, 7 Dec 2021 15:38:52 +0000 Subject: [PATCH] . --- static/js/cornerstone/cornerstoneTools.min.js | 4 +- static/js/dicomViewer.js | 78 +++++++++++++------ 2 files changed, 57 insertions(+), 25 deletions(-) diff --git a/static/js/cornerstone/cornerstoneTools.min.js b/static/js/cornerstone/cornerstoneTools.min.js index bc8aa002..a3260794 100644 --- a/static/js/cornerstone/cornerstoneTools.min.js +++ b/static/js/cornerstone/cornerstoneTools.min.js @@ -1,3 +1,3 @@ -/*! cornerstone-tools - 4.22.1 - 2020-10-13 | (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 s=typeof e;if("string"===s&&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 r=parseFloat(t[1]);switch((t[2]||"ms").toLowerCase()){case"years":case"year":case"yrs":case"yr":case"y":return 315576e5*r;case"weeks":case"week":case"w":return 6048e5*r;case"days":case"day":case"d":return r*i;case"hours":case"hour":case"hrs":case"hr":case"h":return r*o;case"minutes":case"minute":case"mins":case"min":case"m":return r*a;case"seconds":case"second":case"secs":case"sec":case"s":return r*n;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return r;default:return}}(e);if("number"===s&&!1===isNaN(e))return t.long?function(e){var t=Math.abs(e);if(t>=i)return r(e,t,i,"day");if(t>=o)return r(e,t,o,"hour");if(t>=a)return r(e,t,a,"minute");if(t>=n)return r(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=Object.prototype,a=n.hasOwnProperty,o="function"==typeof Symbol?Symbol:{},i=o.iterator||"@@iterator",r=o.asyncIterator||"@@asyncIterator",s=o.toStringTag||"@@toStringTag",l="object"==typeof e,c=t.regeneratorRuntime;if(c)l&&(e.exports=c);else{(c=t.regeneratorRuntime=l?e.exports:{}).wrap=f;var u={},d={};d[i]=function(){return this};var h=Object.getPrototypeOf,v=h&&h(h(I([])));v&&v!==n&&a.call(v,i)&&(d=v);var g=x.prototype=p.prototype=Object.create(d);y.prototype=g.constructor=x,x.constructor=y,x[s]=y.displayName="GeneratorFunction",c.isGeneratorFunction=function(e){var t="function"==typeof e&&e.constructor;return!!t&&(t===y||"GeneratorFunction"===(t.displayName||t.name))},c.mark=function(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,x):(e.__proto__=x,s in e||(e[s]="GeneratorFunction")),e.prototype=Object.create(g),e},c.awrap=function(e){return{__await:e}},T(b.prototype),b.prototype[r]=function(){return this},c.AsyncIterator=b,c.async=function(e,t,n,a){var o=new b(f(e,t,n,a));return c.isGeneratorFunction(t)?o:o.next().then((function(e){return e.done?e.value:o.next()}))},T(g),g[s]="Generator",g[i]=function(){return this},g.toString=function(){return"[object Generator]"},c.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}},c.values=I,w.prototype={constructor:w,reset:function(e){if(this.prev=0,this.next=0,this.sent=this._sent=void 0,this.done=!1,this.delegate=null,this.method="next",this.arg=void 0,this.tryEntries.forEach(E),!e)for(var t in this)"t"===t.charAt(0)&&a.call(this,t)&&!isNaN(+t.slice(1))&&(this[t]=void 0)},stop:function(){this.done=!0;var e=this.tryEntries[0].completion;if("throw"===e.type)throw e.arg;return this.rval},dispatchException:function(e){if(this.done)throw e;var t=this;function n(n,a){return r.type="throw",r.arg=e,t.next=n,a&&(t.method="next",t.arg=void 0),!!a}for(var o=this.tryEntries.length-1;o>=0;--o){var i=this.tryEntries[o],r=i.completion;if("root"===i.tryLoc)return n("end");if(i.tryLoc<=this.prev){var s=a.call(i,"catchLoc"),l=a.call(i,"finallyLoc");if(s&&l){if(this.prev=0;--n){var o=this.tryEntries[n];if(o.tryLoc<=this.prev&&a.call(o,"finallyLoc")&&this.prev=0;--t){var n=this.tryEntries[t];if(n.finallyLoc===e)return this.complete(n.completion,n.afterLoc),E(n),u}},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;E(n)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(e,t,n){return this.delegate={iterator:I(e),resultName:t,nextLoc:n},"next"===this.method&&(this.arg=void 0),u}}}function f(e,t,n,a){var o=t&&t.prototype instanceof p?t:p,i=Object.create(o.prototype),r=new w(a||[]);return i._invoke=function(e,t,n){var a="suspendedStart";return function(o,i){if("executing"===a)throw new Error("Generator is already running");if("completed"===a){if("throw"===o)throw i;return S()}for(n.method=o,n.arg=i;;){var r=n.delegate;if(r){var s=C(r,n);if(s){if(s===u)continue;return s}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if("suspendedStart"===a)throw a="completed",n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);a="executing";var l=m(e,t,n);if("normal"===l.type){if(a=n.done?"completed":"suspendedYield",l.arg===u)continue;return{value:l.arg,done:n.done}}"throw"===l.type&&(a="completed",n.method="throw",n.arg=l.arg)}}}(e,n,r),i}function m(e,t,n){try{return{type:"normal",arg:e.call(t,n)}}catch(e){return{type:"throw",arg:e}}}function p(){}function y(){}function x(){}function T(e){["next","throw","return"].forEach((function(t){e[t]=function(e){return this._invoke(t,e)}}))}function b(e){var t;this._invoke=function(n,o){function i(){return new Promise((function(t,i){!function t(n,o,i,r){var s=m(e[n],e,o);if("throw"!==s.type){var l=s.arg,c=l.value;return c&&"object"==typeof c&&a.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,o,t,i)}))}return t=t?t.then(i,i):i()}}function C(e,t){var n=e.iterator[t.method];if(void 0===n){if(t.delegate=null,"throw"===t.method){if(e.iterator.return&&(t.method="return",t.arg=void 0,C(e,t),"throw"===t.method))return u;t.method="throw",t.arg=new TypeError("The iterator does not provide a 'throw' method")}return u}var a=m(n,e.iterator,t.arg);if("throw"===a.type)return t.method="throw",t.arg=a.arg,t.delegate=null,u;var o=a.arg;return o?o.done?(t[e.resultName]=o.value,t.next=e.nextLoc,"return"!==t.method&&(t.method="next",t.arg=void 0),t.delegate=null,u):o:(t.method="throw",t.arg=new TypeError("iterator result is not an object"),t.delegate=null,u)}function M(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(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function w(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(M,this),this.reset(!0)}function I(e){if(e){var t=e[i];if(t)return t.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var n=-1,o=function t(){for(;++n2&&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:yt.enabledElementByUID(e)}var E={UINT_16_ARRAY:0,FLOAT_32_ARRAY:1},w=E.UINT_16_ARRAY,I=E.FLOAT_32_ARRAY;function S(e,t,n){var a,o=Tt("segmentation").configuration;switch(o.arrayType){case w: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){var a=P(e);n.uuid=n.uuid||"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,(function(e){var t=16*Math.random()|0;return("x"==e?t:3&t|8).toString(16)})),a.add(e,t,n),C(e,b.MEASUREMENT_ADDED,{toolName:t,toolType:t,element:e,measurementData:n})}function O(e,t){return P(e).get(e,t)}function L(e,t,n){var a=P(e).get(e,t);if(a&&a.data&&a.data.length){for(var o=-1,i=0;i0&&void 0!==arguments[0]?arguments[0]:"".concat("cornerstoneTools",":*");return R.a.enable(e)},B=function(){return R.a.disable()},V={series:{},colorLutTables:[]},q=N("store:modules:segmentationModule:metadata");function z(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"increase",n=Tt("segmentation"),a=n.configuration,o=O(e,"stack"),i=o.data[0],r=i.imageIds[0],s=V.series[r];if(s){var l=s.activeLabelmapIndex,c=s.labelmaps3D[l];switch(t){case"increase":c.activeSegmentIndex++,c.activeSegmentIndex>a.segmentsPerLabelmap&&(c.activeSegmentIndex=1);break;case"decrease":c.activeSegmentIndex--,c.activeSegmentIndex<=0&&(c.activeSegmentIndex=a.segmentsPerLabelmap)}}}var j=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=E.UINT_16_ARRAY,K=E.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=Tt("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:E()};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?we(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 we(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=Tt("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]:0,s=Tt("segmentation"),l=s.configuration,c=V.series[e];c||(V.series[e]={activeLabelmapIndex:n,labelmaps3D:[]},c=V.series[e]),c.labelmaps3D[n]={buffer:t,labelmaps2D:[],metadata:a,activeSegmentIndex:1,colorLUTIndex:r,segmentsHidden:[],undo:[],redo:[]};for(var u=c.labelmaps3D[n].labelmaps2D,d=t.byteLength/o,h=0;h=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=Tt("segmentation"),a=n.configuration,o=a.segmentsPerLabelmap;t?($e(t,o),t.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."))}function Je(){for(var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:255,t=[],n=0;n=360&&(Qe-=360),Qe}var tt=.6;function nt(){(tt+=.07)>.82&&(tt=.3+(tt-.82));return tt}function at(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 ot=N("store:modules:segmentationModule:getBrushColor");var it={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:E.UINT_16_ARRAY},rt=N("util:segmentation:labelmap3DHistory");function st(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],r=i.imageIds[0],s=V.series[r];if(s){var l=s.activeLabelmapIndex,c=s.labelmaps3D[l],u=c.activeSegmentIndex;o=V.colorLutTables[c.colorLUTIndex][u]}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 )")}ot.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"),s=r.data[0],l=s.imageIds[0],c=V.series[l];if(c||(V.series[l]={labelmapIndex:t,labelmaps3D:[]},c=V.series[l]),!c.labelmaps3D[t]){var u=i.getEnabledElement(o),d=u.image,h=d.rows,v=d.columns,g=s.imageIds.length,f=h*v*g;S(c,t,f)}var m=c.labelmaps3D[t];m.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,c=s.data[0].imageIds[0];Re(c,t,n,a,l,o,i),Oe(r,n)}},labelmap3DByFirstImageId:Re,incrementActiveSegmentIndex:function(e){var t=M(e);t&&z(t,"increase")},decrementActiveSegmentIndex:function(e){var t=M(e);t&&z(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=Tt("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]}j.warn("No labelmap3D of labelmap index ".concat(n," on stack."))}else j.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"),i=o.data[0],r=a.getEnabledElement(n),s=r.image,l=s.rows,c=s.columns,u=i.imageIds.length,d=l*c*u,h=i.imageIds[0],v=V.series[h];v?(v.activeLabelmapIndex=t,v.labelmaps3D[t]||S(v,t,d)):(V.series[h]={activeLabelmapIndex:t,labelmaps3D:[]},S(v=V.series[h],t,d)),a.updateImage(n)}},radius:function(e){var t=Tt("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();st(n,i,1),o.push(i),y.cornerstone.updateImage(e)}else rt.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();st(n,i,2),a.push(i),y.cornerstone.updateImage(e)}else rt.warn("No redos left.")}}},ct={activeManipulators:{}};function ut(e){var t=y.cornerstone.getEnabledElement(e).uuid;delete ct.activeManipulators[t]}function dt(e){var t=ct.activeManipulators,n=t[e];"function"==typeof n&&n(),delete t[e]}function ht(e){ut(e.detail.element)}var vt={setters:{addActiveManipulatorForElement:function(e,t){var n=y.cornerstone.getEnabledElement(e).uuid;ct.activeManipulators[n]=t},removeActiveManipulatorForElement:ut,cancelActiveManipulatorsForElement:function(e){dt(y.cornerstone.getEnabledElement(e).uuid)},cancelActiveManipulators:function(){var e=ct.activeManipulators;Object.keys(e).forEach((function(e){return dt(e)}))}},state:ct,enabledElementCallback:function(e){var t=y.cornerstone.EVENTS.NEW_IMAGE;e.removeEventListener(t,ht),e.addEventListener(t,ht)},removeEnabledElementCallback:function(e){var t=y.cornerstone.EVENTS.NEW_IMAGE;e.removeEventListener(t,ht),ut(e)}},gt={iconSize:16,viewBox:{x:16,y:16},mousePoint:{x:8,y:8},mousePointerGroupString:'\n \n \n '},ft={configuration:gt,getters:{defaultOptions:function(){return gt}},setters:{defaultOptions:function(e){Object.assign(gt,e)}}},mt={configuration:{mouseEnabled:!0,touchEnabled:!0,globalToolSyncEnabled:!1,showSVGCursors:!1,autoResizeViewports:!0,lineDash:[4,4]}},pt=(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}),yt={mouseTools:function(){return pt.tools.filter((function(e){return e.supportedInteractionTypes.includes("Mouse")}))},touchTools:function(){return pt.tools.filter((function(e){return e.supportedInteractionTypes.includes("Touch")}))},enabledElementByUID:function(e){return pt.enabledElements.find((function(t){return y.cornerstone.getEnabledElement(t).uuid===e}))}},xt={segmentation:lt,cursor:ft,globalConfiguration:mt,manipulatorState:vt};function Tt(e){return xt[e]}var bt={modules:xt,state:pt,getters:yt},Ct=function(e,t){return pt.tools.find((function(n){return n.element===e&&n.name===t}))},Mt=xt.globalConfiguration;function Et(e,t){if(Mt.configuration.showSVGCursors){var n=t.getIconWithPointerSVG(),a=t.mousePoint,o=window.URL.createObjectURL(n);e.style.cursor="url('".concat(o,"') ").concat(a,", auto"),pt.svgCursorUrl=o}}function wt(e){Mt.configuration.showSVGCursors&&It(e,"none")}function It(e,t){pt.svgCursorUrl&&window.URL.revokeObjectURL(pt.svgCursorUrl),pt.svgCursorUrl=null,e.style.cursor=t}var St=Tt("globalConfiguration"),kt=N("store:setToolMode"),_t=function(e,t,n,a){void 0===a&&Array.isArray(n)&&(a=n,n=null);var o=Ct(e,t);o&&(function(e,t,n,a){t.supportedInteractionTypes.forEach((function(o){if(void 0===a||a.includes(o)){var i=Vt[o];i?i(t,e,n):kt.warn("Unable to resolve input conflicts for type %s",o)}})),bt.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||(kt.log("Setting tool %s's to PASSIVE",t.name),Ht(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})),St.configuration.showSVGCursors&&o.supportedInteractionTypes.includes("Mouse")&&function(e,t,n){var a;a="number"==typeof t?[t]:t.mouseButtonMask;a.includes(1)&&(n.svgCursor?Et(n.element,n.svgCursor):n.hideDefaultCursor?wt(e):function(e){It(e,"initial")}(e))}(e,n,o)),Ut("active",null,e,t,n)};var Pt=function(e,t,n){Bt("active",e,t,n),bt.state.enabledElements.forEach((function(a){_t(a,e,t,n)}))},Dt=Ut.bind(null,"disabled",null),Ot=Nt.bind(null,"disabled",null),Lt=Ut.bind(null,"enabled",null),At=Nt.bind(null,"enabled",null),Ht=Ut.bind(null,"passive",b.TOOL_DEACTIVATED),Rt=Nt.bind(null,"passive",b.TOOL_DEACTIVATED);function Ut(e,t,n,a,o){var i,r,s=Ct(n,a);s?(o=qt(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,toolType:a,type:t})):kt.warn('Unable to find tool "%s" for enabledElement',a)}function Nt(e,t,n,a){Bt(e,n,a),bt.state.enabledElements.forEach((function(o){Ut(e,t,o,n,a)}))}function Ft(e,t,n){var a="is".concat(e,"Active"),o=bt.state.tools.find((function(e){return e.element===n&&"active"===e.mode&&!0===e.options[a]}));o&&(kt.log("Setting tool %s's %s to false",o.name,a),o.options[a]=!1)}function Bt(e,t,n,a){if(St.configuration.globalToolSyncEnabled){var o={mode:e,args:[t,n]};a&&o.push(a),bt.state.globalToolChangeHistory.push(o);bt.state.globalToolChangeHistory.length>50&&bt.state.globalToolChangeHistory.shift();var i=bt.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=bt.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=qt(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(bt.state.globalTools).forEach((function(e){var t=bt.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 kt.warn("setToolMode call for tool not available globally: ".concat(t))}}var Vt={Mouse:function(e,t,n){var a=qt(n).mouseButtonMask;if(Array.isArray(a)&&a.length>0){var o=bt.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:Ft.bind(void 0,"MouseWheel"),Touch:function(e,t){var n=bt.state.tools.find((function(e){return e.element===t&&"active"===e.mode&&!0===e.options.isTouchActive})),a=bt.state.tools.find((function(e){return e.element===t&&"active"===e.mode&&!0===e.options.isMultiTouchActive&&1===e.configuration.touchPointers}));n&&(kt.log("Setting tool %s's isTouchActive to false",n.name),n.options.isTouchActive=!1),a&&(kt.log("Setting tool %s's isTouchActive to false",a.name),a.options.isMultiTouchActive=!1)},TouchPinch:Ft.bind(void 0,"TouchPinch"),TouchRotate:Ft.bind(void 0,"TouchRotate"),DoubleTap:Ft.bind(void 0,"DoubleTap"),MultiTouch:function(e,t){var n,a=bt.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=bt.state.tools.find((function(e){return e.element===t&&"active"===e.mode&&!0===e.options.isTouchActive}))),a&&(kt.log("Setting tool %s's isMultiTouchActive to false",a.name),a.options.isMultiTouchActive=!1),n&&(kt.log("Setting tool %s's isTouchActive to false",n.name),n.options.isTouchActive=!1)}};function qt(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 zt={passiveCallback:function(e){Dt(e,this.name)},enabledCallback:function(e){_t(e,this.name)}};var jt={passiveCallback:function(e){Dt(e,this.name)},activeCallback:function(e){Lt(e,this.name)}},Wt=function(e,t){e.save(),t(e),e.restore()},Gt=1,Yt=2;var Xt={setToolWidth:function(e){Gt=e},getToolWidth:function(){return Gt},setActiveWidth:function(e){Yt=e},getActiveWidth:function(){return Yt}},Kt=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&&Xt.getToolWidth()||e.lineWidth,r&&e.setLineDash(r),n(e),i&&(e.fillStyle=i,e.fill()),l&&e.stroke(),r&&e.setLineDash([])};function Zt(e,t,n,a,o){var i=arguments.length>5&&void 0!==arguments[5]?arguments[5]:"pixel";Kt(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 $t=function(e,t,n,a,o){var i=arguments.length>5&&void 0!==arguments[5]?arguments[5]:"pixel";Kt(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)}))}))},Jt=function(e,t,n,a,o,i){var r=Math.atan2(n.y-t.y,n.x-t.x),s={color:a,lineWidth:o};i&&(s.lineDash=i),Zt(e,void 0,t,n,s,"canvas"),s={color:a,lineWidth:o,fillStyle:a};var l=[{x:n.x-10*Math.cos(r-Math.PI/7),y:n.y-10*Math.sin(r-Math.PI/7)},{x:n.x-10*Math.cos(r+Math.PI/7),y:n.y-10*Math.sin(r+Math.PI/7)},n];$t(e,void 0,n,l,s,"canvas")},Qt=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)),Kt(e,o,(function(e){e.arc(n.x,n.y,a,0,2*Math.PI)}))};function en(e){var t=y.cornerstoneMath;if(e instanceof t.Vector3)return e;var n=Object.keys(e);return n.includes("x")&&n.includes("y")&&n.includes("z")?new t.Vector3(e.x,e.y,e.z):new t.Vector3(e[0],e[1],e[2])}function tn(e,t){var n=en(t.rowCosines),a=en(t.columnCosines),o=en(t.imagePositionPatient),i=e.clone().sub(o);return{x:n.dot(i)/t.columnPixelSpacing,y:a.dot(i)/t.rowPixelSpacing}}function nn(e,t){var n=en(t.rowCosines),a=en(t.columnCosines),o=en(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 an(e,t){var n=en(e.rowCosines),a=en(e.columnCosines),o=en(e.imagePositionPatient),i=en(t.rowCosines),r=en(t.columnCosines),s=en(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=nn({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=nn({x:0,y:0},e),n=nn({x:e.columns,y:0},e),a=nn({x:0,y:e.rows},e),o=nn({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 on(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 rn=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=on(n,v,-h),a=on(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=on(x,v,h));var T=h*Math.PI/180;Kt(e,o,(function(e){e.ellipse(x.x,x.y,g/2,f/2,T,0,2*Math.PI),e.closePath()}))},sn="white",ln="greenyellow",cn="transparent";var un={setFillColor:function(e){cn=e},getFillColor:function(){return cn},setToolColor:function(e){sn=e},getToolColor:function(){return sn},setActiveColor:function(e){ln=e},getActiveColor:function(){return ln},getColorIfActive:function(e){return e.color?e.color:e.active?ln:sn}},dn=function(e,t,n){var a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{},o=t.element,i=un.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";if(a.hideHandlesIfMoving&&s.moving)return"continue";var l={lineWidth:s.active?Xt.getActiveWidth():Xt.getToolWidth(),fillStyle:a.fill};a.lineDash&&(l.lineDash=a.lineDash),Kt(e,l,(function(e){var t=y.cornerstone.pixelToCanvas(o,s),n=s.radius||a.handleRadius||pt.handleRadius;e.arc(t.x,t.y,n,0,2*Math.PI)}))},l=0;l4&&void 0!==arguments[4]?arguments[4]:"pixel";Kt(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)}))}))},vn=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}];Zt(a,void 0,r,y.cornerstoneMath.point.findClosestPoint(s,r),{color:o,lineWidth:i,lineDash:[2,3]},"canvas")},gn=15,fn="".concat(gn,"px Arial"),mn="transparent";var pn={setFont:function(e){fn=e},getFont:function(){return fn},setFontSize:function(e){gn=e},getFontSize:function(){return gn},setBackgroundColor:function(e){mn=e},getBackgroundColor:function(){return mn}},yn=function(e,t,n,a,o){var i=pn.getFontSize();e.font=pn.getFont(),e.textBaseline="top",e.fillStyle=a,n.forEach((function(n,a){e.fillText(n,t.left+o,t.top+o+a*(i+o))}))},xn=function(e,t,n){e.fillStyle=n,e.fillRect(t.left,t.top,t.width,t.height)};function Tn(e,t,n){var a=pn.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 bn=function(e,t,n,a,o,i){"[object Array]"!==Object.prototype.toString.call(t)&&(t=[t]);var r=pn.getFontSize(),s=pn.getBackgroundColor(),l=0;t.forEach((function(t){var n=Tn(e,t,5);l=Math.max(l,n)}));var c={width:l,height:5+t.length*(r+5)};return Wt(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;xn(e,c,r),yn(e,c,t,o,5)})),c},Cn=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=bn(e,a,d.x,d.y,r,h),n.hasMoved){var v=i(o).map((function(e){return u.pixelToCanvas(t,e)}));vn(v,d,n.boundingBox,e,r,s)}},Mn=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=on(n,g,-v),a=on(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=on(n,g,v),a=on(a,g,v),p=on(p,g,v),x=on(x,g,v)),Kt(e,o,(function(e){e.moveTo(n.x,n.y),e.lineTo(p.x,p.y),e.lineTo(a.x,a.y),e.lineTo(x.x,x.y),e.lineTo(n.x,n.y)}))},En=function(e){var t=e.getContext("2d");return t.setTransform(1,0,0,1,0,0),t},wn=function(e,t){return void 0===e?t:e},In=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};t.shadow&&(e.shadowColor=wn(t.shadowColor,"#000000"),e.shadowBlur=wn(t.shadowBlur,0),e.shadowOffsetX=wn(t.shadowOffsetX,1),e.shadowOffsetY=wn(t.shadowOffsetY,1))},Sn=function(e){return 0===Object.keys(e).length&&e.constructor===Object},kn=Tt("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 Hn={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=En(n.canvasContext.canvas),r=y.cornerstoneMath.point.distance;Wt(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);Qt(e,a,t.handles.start,s,{color:o})}))},_resetHandles:Dn,_applyStrategy:An},Rn=N("tools:ScissorsTool"),Un=Tt("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 Rn.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 zn(){this.handles={points:[]},this.currentHandle=0}var jn={postTouchStartCallback:Bn,postMouseDownCallback:Bn,mouseClickCallback:Bn,touchDragCallback:Vn,mouseDragCallback:Vn,mouseMoveCallback:Vn,touchEndCallback:qn,mouseUpCallback:qn,initializeMixin:zn,renderToolData:function(e){var t=e.detail,n=t.element,a=Nn.brushColor(n,!0),o=En(t.canvasContext.canvas),i=this.handles.points;i.length<2||Wt(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=Tt("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),Ea=function(e){return e.filter((function(e){return!(e.isMultiPartTool||e instanceof ro||e instanceof Ma)}))};function wa(e,t){var n,a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"mouse";if("touch"===a?n=(n=ya(e,yt.touchTools())).filter((function(e){return e.options.isTouchActive})):(n=(n=ya(e,yt.mouseTools())).filter((function(e){return Array.isArray(e.options.mouseButtonMask)&&t&&e.options.mouseButtonMask.includes(t)&&e.options.isMouseActive})),pt.isMultiPartToolActive&&(n=Ea(n))),0!==n.length)return n[0]}var Ia=N("manipulators:moveAllHandles"),Sa=Tt("manipulatorState"),ka={mouse:[b.MOUSE_DRAG],touch:[b.TOUCH_DRAG]},_a={mouse:[b.MOUSE_UP,b.MOUSE_CLICK],touch:[b.TOUCH_END,b.TOUCH_DRAG_END,b.TOUCH_PINCH,b.TOUCH_PRESS,b.TAP]},Pa=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:pt.deleteIfHandleOutsideImage,preventHandleOutsideImage:pt.preventHandleOutsideImage},i);var l=Da.bind(this,t,n,i,r),c=function e(a){La(t,n,i,r,{dragHandler:l,upOrEndHandler:e},a,s)};Sa.setters.addActiveManipulatorForElement(o,Oa.bind(null,n,i,r,{dragHandler:l,upOrEndHandler:c},o,s)),n.active=!0,pt.isToolLocked=!0,ka[r].forEach((function(e){o.addEventListener(e,l)})),_a[r].forEach((function(e){o.addEventListener(e,c)}))};function Da(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;v1&&void 0!==arguments[1]?arguments[1]:{},n=arguments.length>2?arguments[2]:void 0,a=arguments.length>3?arguments[3]:void 0,o=a.dragHandler,i=a.upOrEndHandler,r=arguments.length>4?arguments[4]:void 0,s=arguments.length>5?arguments[5]:void 0;Aa(e,t,n,{dragHandler:o,upOrEndHandler:i},r,s,!1)}function La(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.dragHandler,r=o.upOrEndHandler,s=arguments.length>5?arguments[5]:void 0,l=arguments.length>6?arguments[6]:void 0,c=s.detail,u=c.element;Sa.setters.removeActiveManipulatorForElement(u),n.deleteIfHandleOutsideImage&&ga(c,t.handles)&&L(u,e,t),Aa(t,n,a,{dragHandler:i,upOrEndHandler:r},u,l,!0)}function Aa(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=arguments.length>2?arguments[2]:void 0,a=arguments.length>3?arguments[3]:void 0,o=a.dragHandler,i=a.upOrEndHandler,r=arguments.length>4?arguments[4]:void 0,s=arguments.length>5?arguments[5]:void 0,l=!(arguments.length>6&&void 0!==arguments[6])||arguments[6];e.active=!1,e.invalidated=!0,pt.isToolLocked=!1,ka[n].forEach((function(e){r.removeEventListener(e,o)})),_a[n].forEach((function(e){r.removeEventListener(e,i)})),"function"==typeof t.doneMovingCallback&&(Ia.warn("`options.doneMovingCallback` has been depricated. See https://github.com/cornerstonejs/cornerstoneTools/pull/915 for details."),t.doneMovingCallback(l)),"function"==typeof s&&s(l),y.cornerstone.updateImage(r)}var Ha=N("manipulators:moveHandle"),Ra=Tt("manipulatorState"),Ua={value:!1},Na={mouse:[b.MOUSE_DRAG],touch:[b.TOUCH_DRAG]},Fa={mouse:[b.MOUSE_UP,b.MOUSE_CLICK],touch:[b.TOUCH_END,b.TOUCH_DRAG_END,b.TOUCH_PINCH,b.TOUCH_PRESS,b.TAP]},Ba=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:pt.deleteIfHandleOutsideImage,preventHandleOutsideImage:pt.preventHandleOutsideImage},o);var s=e.element,l=Va.bind(this,t,n,a,o,i),c=function s(){za(t,e,n,a,o,i,{dragHandler:l,upOrEndHandler:s},r)};if(Ra.setters.addActiveManipulatorForElement(s,qa.bind(null,t,e,n,a,o,i,{dragHandler:l,upOrEndHandler:c},r)),a.active=!0,a.moving=!0,n.active=!0,pt.isToolLocked=!0,Na[i].forEach((function(e){s.addEventListener(e,l)})),Fa[i].forEach((function(e){s.addEventListener(e,c)})),"touch"===i){Ua.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);Wa(a,Ua,u,v)}};function Va(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);Ua.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=wa(c,u,o);v instanceof ro&&v.updateCachedStats(s,c,t),C(c,b.MEASUREMENT_MODIFIED,{toolName:e,toolType:e,element:c,measurementData:t})}function qa(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;ja(e,t,n,a,o,i,{dragHandler:s,upOrEndHandler:l},c,!1)}function za(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=t.element;Ra.setters.removeActiveManipulatorForElement(u),ja(e,t,n,a,o,i,{dragHandler:s,upOrEndHandler:l},c,!0)}function ja(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&&void 0!==arguments[8])||arguments[8],d=t.element;a.active=!1,a.moving=!1,n.active=!1,n.invalidated=!0,Ua.value=!1,pt.isToolLocked=!1,Na[i].forEach((function(e){d.removeEventListener(e,s)})),Fa[i].forEach((function(e){d.removeEventListener(e,l)})),o.deleteIfHandleOutsideImage&&ga(t,n.handles)&&L(d,e,n),"function"==typeof o.doneMovingCallback&&(Ha.warn("`options.doneMovingCallback` has been depricated. See https://github.com/cornerstonejs/cornerstoneTools/pull/915 for details."),o.doneMovingCallback(u)),"function"==typeof c&&c(u),y.cornerstone.updateImage(d)}function Wa(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:pt.deleteIfHandleOutsideImage,preventHandleOutsideImage:pt.preventHandleOutsideImage},o)).hasMoved=!1;var s=e.element;function l(e){$a(t,n,a,o,i,e)}function c(e){Qa(t,n,a,o,i,{moveHandler:l,moveEndHandler:c},e,r)}n.active=!0,a.moving=!0,a.active=!0,pt.isToolLocked=!0,Xa[i].forEach((function(e){s.addEventListener(e,l)})),s.addEventListener(b.TOUCH_START,to),Ka[i].forEach((function(e){s.addEventListener(e,c)})),Ya.setters.addActiveManipulatorForElement(s,eo.bind(null,n,a,o,i,{moveHandler:l,moveEndHandler:c},s,r))};function $a(e,t,n,a,o,i){var r=i.detail,s=r.currentPoints,l=r.image,c=r.element,u=r.buttons;a.hasMoved=!0;var d=s.page,h=y.cornerstone.pageToPixel(c,"touch"===o?d.x+-57:d.x,"touch"===o?d.y+-57:d.y);t.invalidated=!0,n.active=!0,n.x=h.x,n.y=h.y,a&&a.preventHandleOutsideImage&&ma(n,l),y.cornerstone.updateImage(c);var v=wa(c,u,o);v instanceof ro&&v.updateCachedStats(l,c,t),C(c,b.MEASUREMENT_MODIFIED,{toolName:e,toolType:e,element:c,measurementData:t})}function Ja(e,t,n,a,o){var i=a.moveHandler,r=a.moveEndHandler,s=!(arguments.length>5&&void 0!==arguments[5])||arguments[5];Xa[e].forEach((function(e){n.removeEventListener(e,i)})),Ka[e].forEach((function(e){n.removeEventListener(e,r)})),n.removeEventListener(b.TOUCH_START,to),pt.isToolLocked=!1,"function"==typeof o&&o(s),"function"==typeof t.doneMovingCallback&&(Ga.warn("`options.doneMovingCallback` has been depricated. See https://github.com/cornerstonejs/cornerstoneTools/pull/915 for details."),t.doneMovingCallback(s)),y.cornerstone.updateImage(n)}function Qa(e,t,n,a,o,i,r,s){var l=i.moveHandler,c=i.moveEndHandler,u=r.detail,d=u.element,h=u.currentPoints;if(!1!==a.hasMoved){var v=h.page,g=y.cornerstone.pageToPixel(d,"touch"===o?v.x+-57:v.x,"touch"===o?v.y+-57:v.y);t.active=!1,t.invalidated=!0,n.active=!1,n.moving=!1,n.x=g.x,n.y=g.y,Ya.setters.removeActiveManipulatorForElement(d),a.preventHandleOutsideImage&&ma(n,r.detail.image),a.deleteIfHandleOutsideImage&&ga(r.detail,t.handles)&&(t.cancelled=!0,L(d,e,t)),Ja(o,a,d,{moveHandler:l,moveEndHandler:c},s,!0)}}function eo(e,t,n,a,o,i,r){var s=o.moveHandler,l=o.moveEndHandler;e.active=!1,e.invalidated=!0,t.active=!1,Ja(a,n,i,{moveHandler:s,moveEndHandler:l},r,!1)}function to(e){return e.stopImmediatePropagation(),!1}var no=function(e,t,n,a,o){n.active=!0,pt.isToolLocked=!0,Ba(e.detail,t.name,n,a,t.options,o),e.stopImmediatePropagation(),e.stopPropagation(),e.preventDefault()},ao=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,pt.isToolLocked=!0,Pa(e.detail,t.name,n,null,t.options,a,(function(){n.active=!1,pt.isToolLocked=!1})),e.stopImmediatePropagation(),e.stopPropagation(),e.preventDefault()},io=N("baseAnnotationTool"),ro=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";no(e,this,t,n,a)}},{key:"toolSelectedCallback",value:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"mouse";oo(e,this,t,n)}},{key:"updateCachedStats",value:function(e,t,n){io.warn("updateCachedStats not implemented for ".concat(this.name,"."))}}]),t}(ca),so=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)},lo=function(e,t){var n=Math.pow(10,t);return Math.round(e*n)/n},co=xt.cursor,uo=function(){function e(t,n){r()(this,e),this.iconGroupString=t,this.options=Object.assign({},co.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||un.getActiveColor(),a=t.toolColor||un.getToolColor(),o=t.fillColor||un.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}(),ho=new uo('',{viewBox:{x:1792,y:1792}}),vo=new uo('\n \n ',{viewBox:{x:24,y:24}}),go=new uo('\n \n \n \n \n \n \n ',{viewBox:{x:48,y:48}}),fo=new uo('\n \n \n \n \n ',{viewBox:{x:32,y:32}}),mo=new uo('',{viewBox:{x:32,y:32}}),po=new uo('',{viewBox:{x:32,y:32}}),yo=new uo('\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}}),xo=new uo('\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}}),To=new uo('\n \n ',{viewBox:{x:24,y:24}}),bo=new uo('',{viewBox:{x:1792,y:1792}}),Co=new uo('',{viewBox:{x:1792,y:1792}}),Mo=new uo('',{viewBox:{x:1792,y:1792}}),Eo=new uo('',{viewBox:{x:1792,y:1792}}),wo=new uo('',{viewBox:{x:2048,y:1792}}),Io=new uo('',{viewBox:{x:512,y:512}}),So=new uo('',{viewBox:{x:1792,y:1792}}),ko=new uo('',{viewBox:{x:1792,y:1792}}),_o=new uo('',{viewBox:{x:24,y:28}}),Po=new uo('',{viewBox:{x:1792,y:1792}}),Do=new uo('\n ',{viewBox:{x:18,y:18}}),Oo=new uo('\n ',{viewBox:{x:640,y:512}}),Lo={x:127,y:60},Ao=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"ACTIVE_COLOR";return'')},Ho=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"ACTIVE_COLOR";return'\n ')},Ro='',Uo='',No='',Fo=new uo("".concat(Ro," ").concat(Ao()),{viewBox:Lo}),Bo=new uo("".concat(Ro," ").concat(Ho()),{viewBox:Lo}),Vo=new uo("".concat(Ro," ").concat(Ao()),{viewBox:Lo}),qo=new uo("".concat(Ro," ").concat(Ho()),{viewBox:Lo}),zo=new uo("".concat(Uo," ").concat(Ao()),{viewBox:Lo}),jo=new uo("".concat(Uo," ").concat(Ho()),{viewBox:Lo}),Wo=new uo("".concat(Uo," ").concat(Ao()),{viewBox:Lo}),Go=new uo("".concat(Uo," ").concat(Ho()),{viewBox:Lo}),Yo=new uo("".concat(No," ").concat(Ao()),{viewBox:Lo}),Xo=new uo("".concat(No," ").concat(Ho()),{viewBox:Lo}),Ko=new uo("".concat(No," ").concat(Ao()),{viewBox:Lo}),Zo=new uo("".concat(No," ").concat(Ho()),{viewBox:Lo});function $o(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 Qo=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){return c=e,s=f(y,t),u?g(e):r}function p(e){var n=e-l;return void 0===l||n>=t||n<0||d&&e-c>=i}function y(){var e=Date.now();if(p(e))return x(e);s=f(y,function(e){var n=e-c,a=t-(e-l);return d?Math.min(a,i-n):a}(e))}function x(e){return s=void 0,h&&a?g(e):(a=o=void 0,r)}function T(){for(var e=Date.now(),n=p(e),i=arguments.length,c=new Array(i),u=0;u0&&void 0!==arguments[0]?arguments[0]:{};r()(this,t);var a={name:"Angle",supportedInteractionTypes:["Mouse","Touch"],svgCursor:ho,configuration:{drawHandles:!0,drawHandlesOnHover:!1,hideHandlesIfMoving:!1,renderDashed:!1}};return(e=u()(this,h()(t).call(this,n,a))).preventNewMeasurement=!1,e.throttledUpdateCachedStats=ei(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&&(so(e,t.handles.start,t.handles.middle,n)<25||so(e,t.handles.middle,t.handles.end,n)<25)}},{key:"updateCachedStats",value:function(e,t,n){var a=ai(e,n.handles.middle,n.handles.start),o=ai(e,n.handles.end,n.handles.middle),i=ai(e,n.handles.end,n.handles.start),r=ni(a),s=ni(o),l=ni(i),c=Math.acos((Math.pow(r,2)+Math.pow(s,2)-Math.pow(l,2))/(2*r*s));c*=180/Math.PI,n.rAngle=lo(c,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.hideHandlesIfMoving,l=o.renderDashed,c=O(e.currentTarget,this.name),u=Tt("globalConfiguration").configuration.lineDash;if(c)for(var d=En(n.canvasContext.canvas),h=n.image,v=n.element,g=$o(h),f=g.rowPixelSpacing,m=g.colPixelSpacing,p=Xt.getToolWidth(),x=function(e){var o=c.data[e];if(!1===o.visible)return"continue";Wt(d,(function(e){In(e,t.configuration);var c=un.getColorIfActive(o),d=y.cornerstone.pixelToCanvas(n.element,o.handles.start),g=y.cornerstone.pixelToCanvas(n.element,o.handles.middle),x={color:c};l&&(x.lineDash=u),$t(e,n.element,o.handles.start,[o.handles.middle,o.handles.end],x);var T={color:c,handleRadius:i,drawHandlesIfActive:r,hideHandlesIfMoving:s};if(t.configuration.drawHandles&&dn(e,n,o.handles,T),!0===o.invalidated&&(o.rAngle?t.throttledUpdateCachedStats(h,v,o):t.updateCachedStats(h,v,o)),o.rAngle){var C,M=function(e,t,n){var a=t&&n?"":" (isotropic)";return e.rAngle.toString()+String.fromCharCode(parseInt("00B0",16))+a}(o,f,m);if(!o.handles.textBox.hasMoved){C={x:g.x,y:g.y};var E=Tn(e,M,5);g.x0&&void 0!==arguments[0]?arguments[0]:{};r()(this,t);var a={name:"ArrowAnnotate",supportedInteractionTypes:["Mouse","Touch"],configuration:{getTextCallback:ii,changeTextCallback:ri,drawHandles:!0,drawHandlesOnHover:!1,hideHandlesIfMoving:!1,arrowFirst:!0,renderDashed:!1,allowEmptyLabel:!1},svgCursor:vo};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&&so(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=i.hideHandlesIfMoving,c=i.renderDashed,u=O(a,this.name);if(u){var d,h=e.detail.canvasContext.canvas,v=En(h),g=Xt.getToolWidth();c&&(d=Tt("globalConfiguration").configuration.lineDash);for(var f=function(n){var i=u.data[n];if(!1===i.visible)return"continue";Wt(v,(function(n){In(n,t.configuration);var c=un.getColorIfActive(i),u=y.cornerstone.pixelToCanvas(a,i.handles.start),h=y.cornerstone.pixelToCanvas(a,i.handles.end);t.configuration.arrowFirst?Jt(n,h,u,c,g,d):Jt(n,u,h,c,g,d);var v={color:c,handleRadius:r,drawHandlesIfActive:s,hideHandlesIfMoving:l};t.configuration.drawHandles&&dn(n,e.detail,i.handles,v);var f=function(e){return e.text}(i);if(f&&""!==f){var m=Tn(n,f,5),x=pn.getFontSize()+10,T=Math.max(m,x)/2+5;if(h.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)},li=function(e){var t=e.currentPoints.image,n=t.x,a=t.y;return{toolName:this.name,toolType:this.name,isCreating:!0,visible:!0,active:!0,invalidated:!0,handles:{start:si(n,a,0),end:si(n,a,1,{active:!0}),perpendicularStart:si(n,a,2,{locked:!0}),perpendicularEnd:si(n,a,3),textBox:si(n-50,a-70,null,{highlight:!1,hasMoved:!0,active:!1,movesIndependently:!1,drawnIndependently:!0,allowedOutsideImage:!0,hasBoundingBox:!0})},longestDiameter:0,shortestDiameter:0}},ci=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?pt.clickProximity:pt.touchProximity;return!!ci(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 bi(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 Ci(e,t){return{start:e,end:t}}function Mi(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=Ci(i,r),f=Ci(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:bi(d,v,n,m),fixedPoint:n}}function Ei(e,t,n,a){var o=Mi(t,n,a),i=o.columnPixelSpacing,r=o.rowPixelSpacing,s=o.distanceToFixed,l=bi(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=bi(n,a,i,s),u=bi(n,a,r,s),d=di(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 wi(e,t){return e===t}function Ii(e,t){return wi(e,t)?-1:1}var Si=n(10),ki=n.n(Si);function _i(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=Ii(s,c)*u,h=function(e,t,n){return wi(e,n)?t:n}(s,l,c)===l,v=h?"start":"end",g=h?"end":"start";return o={},ki()(o,v,{x:n.start.x,y:n.start.y}),ki()(o,g,{x:t.x+a.y*r*d,y:t.y+a.x*i*d*-1}),o}function Pi(e,t,n,a){var o=y.cornerstoneMath.lineSegment,i=Mi(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!==bi(e,t,n.start,n.end)}(r,s,c))return!1;var d=di(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=Ii(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=_i(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 Di=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?Ei(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?Ei(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||Pi(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||Pi(u,n,t,n.handles.perpendicularStart)||(t.currentPoints.image.x=n.handles.perpendicularEnd.x,t.currentPoints.image.y=n.handles.perpendicularEnd.y))},Oi=function(e,t,n){var a=e[n],o=t[n];e[n]=o,t[n]=a},Li=function(e,t){Oi(e,t,"x"),Oi(e,t,"y"),Oi(e,t,"moving"),Oi(e,t,"hover"),Oi(e,t,"active"),Oi(e,t,"selected")};var Ai=function(e){var t,n=this,a=e.detail,o=a.element,i=pt.clickProximity,r=function(e){t.invalidated=!0,ga(a,t.handles)&&L(o,n.name,t),e&&(e.moving=!1,e.selected=!0),Et(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,Hi(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?(Li(s,l),Li(s,c),Li(l,u),Object.values(r).find((function(e){return!0===e.moving}))):n}(a,t,d)).hasBoundingBox||wt(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):Di(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=wa(r,l,"mouse");u instanceof ro&&u.updateCachedStats(s,r,n);var d={toolName:t,toolType:t,element:r,measurementData:n};y.cornerstone.triggerEvent(r,b.MEASUREMENT_MODIFIED,d)};a.active=!0,a.moving=!0,pt.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,pt.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)})),Ui(e),{v:!0}},u=0;ud){var f=d;d=g,g=f}return{longestDiameter:d.toFixed(1),shortestDiameter:g.toFixed(1)}}(n,$o(e)),o=a.longestDiameter,i=a.shortestDiameter;n.longestDiameter=o,n.shortestDiameter=i,n.invalidated=!1}}}]),t}(ro),Wi=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=Gi(g.fractionalSeconds||0)+g.seconds+60*g.minutes+60*g.hours*60,m=Gi(d.fractionalSeconds||0)+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 Gi(e){return parseFloat(".".concat(e))}var Yi=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},Xi=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 $i=function(e){var t=e.toString().split(".");return t[0]=t[0].replace(/\B(?=(\d{3})+(?!\d))/g,","),t.join(".")},Ji=N("tools:annotation:CircleRoiTool"),Qi=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:mo,configuration:{renderDashed:!1,hideHandlesIfMoving:!1}};return(e=u()(this,h()(t).call(this,n,a))).throttledUpdateCachedStats=ei(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}}};Ji.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||Ji.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=er(c,d.showHounsfieldUnits),p="Mean: ".concat($i(o.toFixed(2))," ").concat(m),y="Std Dev: ".concat($i(i.toFixed(2))," ").concat(m);if(f){for(var x=" SUV: ",T="".concat(x).concat($i(l.mean.toFixed(2))),b="".concat(x).concat($i(l.stdDev.toFixed(2))),C=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:fo,configuration:{drawHandles:!0,drawHandlesOnHover:!1,hideHandlesIfMoving:!1,renderDashed:!1}};return(e=u()(this,h()(t).call(this,n,a))).hasIncomplete=!1,e.throttledUpdateCachedStats=ei(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&&(so(e,t.handles.start,t.handles.end,n)<25||so(e,t.handles.start2,t.handles.end2,n)<25))}},{key:"updateCachedStats",value:function(e,t,n){var a=$o(e),o=a.rowPixelSpacing,i=a.colPixelSpacing,r=(Math.ceil(n.handles.start.x)-Math.ceil(n.handles.end.x))*(i||1),s=(Math.ceil(n.handles.start.y)-Math.ceil(n.handles.end.y))*(o||1),l=(Math.ceil(n.handles.start2.x)-Math.ceil(n.handles.end2.x))*(i||1),c=(Math.ceil(n.handles.start2.y)-Math.ceil(n.handles.end2.y))*(o||1),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=lo(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=a.hideHandlesIfMoving,s=a.renderDashed,l=O(e.currentTarget,this.name);if(l)for(var c=En(n.canvasContext.canvas),u=Xt.getToolWidth(),d=Tt("globalConfiguration").configuration.lineDash,h=pn.getFont(),v=function(e){var a=l.data[e];if(!1===a.visible)return"continue";Wt(c,(function(e){In(e,t.configuration);var l=un.getColorIfActive(a),c={color:l};s&&(c.lineDash=d),Zt(e,n.element,a.handles.start,a.handles.end,c),a.complete&&Zt(e,n.element,a.handles.start2,a.handles.end2,c);var v={color:l,handleRadius:o,drawHandlesIfActive:i,hideHandlesIfMoving:r};t.configuration.drawHandles&&dn(e,n,a.handles,v),e.fillStyle=l;var g=a.value;if(!a.handles.textBox.hasMoved){var m={x:(a.handles.start.x+a.handles.end.x)/2,y:(a.handles.start.y+a.handles.end.y)/2-10};e.font=h,a.handles.textBox.x=m.x,a.handles.textBox.y=m.y}Cn(e,n.element,a.handles.textBox,g,a.handles,f,l,u,0,!0)}))},g=0;g0&&void 0!==arguments[0]?arguments[0]:{};r()(this,t);var a={name:"EllipticalRoi",supportedInteractionTypes:["Mouse","Touch"],configuration:{drawHandlesOnHover:!1,hideHandlesIfMoving:!1,renderDashed:!1},svgCursor:po};return(e=u()(this,h()(t).call(this,n,a))).throttledUpdateCachedStats=ei(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}}};or.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||or.warn("invalid parameters supplied to tool ".concat(this.name,"'s pointNearTool")),!o||!1===t.visible)return!1;if(ha(e,t.handles,n,6))return!0;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=Yi(l,n);return!(!Yi(c,n)||u)}},{key:"updateCachedStats",value:function(e,t,n){var a=(y.cornerstone.metaData.get("generalSeriesModule",e.imageId)||{}).modality,o=$o(e),i=function(e,t,n,a,o){var i,r=cr(n.start,n.end),s=y.cornerstone.getPixels(t,r.left,r.top,r.width,r.height),l=Xi(s,r);"PT"===a&&(i={mean:Wi(e,l.mean,!0)||0,stdDev:Wi(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=Xt.getToolWidth(),s=Tt("globalConfiguration").configuration.lineDash,l=this.configuration,c=l.handleRadius,u=l.drawHandlesOnHover,d=l.hideHandlesIfMoving,h=l.renderDashed,v=En(a.canvasContext.canvas),g=$o(o),f=g.rowPixelSpacing,m=g.colPixelSpacing,p=(y.cornerstone.metaData.get("generalSeriesModule",o.imageId)||{}).modality,x=f&&m;Wt(v,(function(e){for(var l=0;l2&&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=rr(c,d.showHounsfieldUnits),p="Mean: ".concat($i(o.toFixed(2))," ").concat(m),y="Std Dev: ".concat($i(i.toFixed(2))," ").concat(m);if(f){for(var x=" SUV: ",T="".concat(x).concat($i(l.mean.toFixed(2))),b="".concat(x).concat($i(l.stdDev.toFixed(2))),C=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 hr(e,t,n,a){ur(e,t)&&(n.value+=a,n.squared+=a*a,n.count++)}var vr=function e(t,n){r()(this,e),this.toolIndex=t,this.handleIndexArray=n},gr=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 fr(e,t,n,a){for(var o=e.length-1,i=0;i0?1:2}function xr(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 Tr={newHandle:function(e,t){var n=t.length-1;return fr(t,pr(t[n]),pr(e),[n])},end:function(e){var t=e.length-1;return fr(e,pr(e[t]),pr(e[0]),[t,0])},modify:function(e,t){var n=pr(e[t]),a=t-1;0===t&&(a=e.length-1);var o=pr(e[a]);return!!fr(e,n,o,[t,a])||fr(e,n,o=pr(e[a=t===e.length-1?0:t+1]),[t,a])}},br=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,renderDashed:!1},svgCursor:yo};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=ei(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}Ir.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)no(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),Lr(e)}},{key:"_drawingDoubleTapClickCallback",value:function(e){var t=e.detail.element;this.completeDrawing(t),Lr(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=Pr.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=Pr.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 Dr(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=Pr.newHandle(o,i),r}},{key:"_checkHandlesPencilMode",value:function(e,t){var n=this.configuration.mouseLocation.handles.start,a=e.handles.points,o=Pr.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,pt.isMultiPartToolActive=!0,wt(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,pt.isMultiPartToolActive=!1,this._activeDrawingToolReference=null,this._drawingInteractionType=null,Et(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){pt.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){pt.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,toolType:this.name,element:e,measurementData:t})}},{key:"fireCompletedEvent",value:function(e,t){C(e,b.MEASUREMENT_COMPLETED,{toolName:this.name,toolType: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}(ro);function Lr(e){e.stopImmediatePropagation(),e.stopPropagation(),e.preventDefault()}var Ar=N("tools:annotation:LengthTool"),Hr=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:To,configuration:{drawHandles:!0,drawHandlesOnHover:!1,hideHandlesIfMoving:!1,renderDashed:!1}};return(e=u()(this,h()(t).call(this,n,a))).throttledUpdateCachedStats=ei(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}}}}Ar.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&&so(e,t.handles.start,t.handles.end,n)<25:(Ar.warn("invalid parameters supplied to tool ".concat(this.name,"'s pointNearTool")),!1)}},{key:"updateCachedStats",value:function(e,t,n){var a=$o(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=a.hideHandlesIfMoving,s=a.renderDashed,l=O(e.currentTarget,this.name);if(l)for(var c=En(n.canvasContext.canvas),u=n.image,d=n.element,h=$o(u),v=h.rowPixelSpacing,g=h.colPixelSpacing,f=Xt.getToolWidth(),m=Tt("globalConfiguration").configuration.lineDash,p=function(e){var a=l.data[e];if(!1===a.visible)return"continue";Wt(c,(function(e){In(e,t.configuration);var l=un.getColorIfActive(a),c={color:l};s&&(c.lineDash=m),Zt(e,d,a.handles.start,a.handles.end,c);var h={color:l,handleRadius:o,drawHandlesIfActive:i,hideHandlesIfMoving:r};if(t.configuration.drawHandles&&dn(e,n,a.handles,h),!a.handles.textBox.hasMoved){var p={x:Math.max(a.handles.start.x,a.handles.end.x)};p.x===a.handles.start.x?p.y=a.handles.start.y:p.y=a.handles.end.y,a.handles.textBox.x=p.x,a.handles.textBox.y=p.y}!0===a.invalidated&&(a.length?t.throttledUpdateCachedStats(u,d,a):t.updateCachedStats(u,d,a));var y=function(e,t,n){var a=(o=e.length,i=Number(o),isNaN(i)?void 0:i);var o,i;if(!a)return"";var r="mm";t&&n||(r="pixels");return e.unit=r,"".concat(a.toFixed(2)," ").concat(r)}(a,v,g);Cn(e,d,a.handles.textBox,y,a.handles,x,l,f,10,!0)}))},y=0;y0&&void 0!==arguments[0]?arguments[0]:{};r()(this,t);var a={name:"Probe",supportedInteractionTypes:["Mouse","Touch"],svgCursor:bo,configuration:{drawHandles:!0,renderDashed:!1}};return(e=u()(this,h()(t).call(this,n,a))).throttledUpdateCachedStats=ei(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}}};Ur.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||Ur.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&&m>=0&&f0&&void 0!==arguments[0]?arguments[0]:{};r()(this,t);var a={name:"RectangleRoi",supportedInteractionTypes:["Mouse","Touch"],configuration:{drawHandles:!0,drawHandlesOnHover:!1,hideHandlesIfMoving:!1,renderDashed:!1},svgCursor:Co};return(e=u()(this,h()(t).call(this,n,a))).throttledUpdateCachedStats=ei(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}}};Fr.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||Fr.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=zr(a,d.showHounsfieldUnits),p="Mean: ".concat($i(r.toFixed(2))," ").concat(m),y="Std Dev: ".concat($i(s.toFixed(2))," ").concat(m);if(f){for(var x=" SUV: ",T="".concat(x).concat($i(u.mean.toFixed(2))),b="".concat(x).concat($i(u.stdDev.toFixed(2))),C=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:Gr},svgCursor:Mo};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=En(t.canvasContext.canvas),i=function(e){var i=a.data[e];if(!1===i.visible)return"continue";var r=un.getColorIfActive(i);Wt(o,(function(e){In(e,n);var a=y.cornerstone.pixelToCanvas(t.element,i.handles.end);i.handles.end.boundingBox=bn(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);var a={name:"Brush",supportedInteractionTypes:["Mouse","Touch"],configuration:{},mixins:["renderBrushMixin"]};return(e=u()(this,h()(t).call(this,n,a))).touchDragCallback=e._paint.bind(Ta()(e)),e}return g()(t,e),l()(t,[{key:"_paint",value:function(e){var t=Yr.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),Kr=N("tools:SphericalBrushTool"),Zr=Tt("segmentation"),$r=function(e){function t(){var e,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};r()(this,t);var a={name:"SphericalBrush",supportedInteractionTypes:["Mouse","Touch"],configuration:{alwaysEraseOnClick:!1},mixins:["renderBrushMixin"]};return(e=u()(this,h()(t).call(this,n,a))).touchDragCallback=e._paint.bind(Ta()(e)),e}return g()(t,e),l()(t,[{key:"_startPainting",value:function(e){var t,n=Zr.configuration,a=Zr.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 Kr.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 Kr.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=Zr.configuration,r=Zr.setters,s=0;s=E||e=I||te.xMax&&(e.xMax=n),ae.yMax&&(e.yMax=a)}function ts(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 os=N("util:segmentation:operations:eraseInsideFreehand");function is(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 as([e.x,e.y],r)}),c,u):le(e,t,(function(e){return as([e.x,e.y],r)}),c,u)}else os.error("eraseInsideFreehand operation requires freehandSegmentationMixin operationData, recieved ".concat(o))}function rs(e,t){is(e,t,!0)}function ss(e,t){is(e,t,!1)}var ls=N("util:segmentation:operations:eraseInsideRectangle");function cs(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,r=i.image,s=a.map((function(e){return[e.x,e.y]})),l=Te(s,r),c=oe()(l,2),u=c[0],d=c[1];n?se(e,t,(function(){return!0}),u,d):ne(e,t,u,d)}else ls.error("eraseInsideRectangle operation requires rectangleSegmentationMixin operationData, recieved ".concat(o))}function us(e,t){cs(e,t,!0)}function ds(e,t){cs(e,t,!1)}var hs=N("util:segmentation:operations:fillInsideFreehand");function vs(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 as([e.x,e.y],r)}),c,u):ve(e,t,(function(e){return as([e.x,e.y],r)}),c,u)}else hs.error("eraseInsideFreehand operation requires freehandSegmentationMixin operationData, recieved ".concat(o))}function gs(e,t){vs(e,t,!0)}function fs(e,t){vs(e,t,!1)}var ms=N("util:segmentation:operations:fillInsideRectangle");function ps(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=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(){return!0}),c,u):ce(e,t,c,u)}else ms.error("eraseInsideRectangle operation requires rectangleSegmentationMixin operationData, recieved ".concat(o))}function ys(e,t){ps(e,t,!0)}function xs(e,t){ps(e,t,!1)}var Ts=N("util:segmentation:operations:fillCircle");function bs(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 Yi(c,e)}),s,l):ve(e,t,(function(e){return Yi(c,e)}),s,l)}else Ts.error("fillInsideCircle operation requires circleSegmentationMixin operationData, recieved ".concat(a))}function Cs(e,t){bs(e,t,!0)}function Ms(e,t){bs(e,t,!1)}var Es=N("util:segmentation:operations:eraseInsideCircle");function ws(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 Yi(c,e)}),s,l):le(e,t,(function(e){return Yi(c,e)}),s,l)}else Es.error("eraseInsideCircle operation requires circleSegmentationMixin operationData, recieved ".concat(a))}function Is(e,t){ws(e,t,!0)}function Ss(e,t){ws(e,t,!1)}var ks=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:gs,FILL_OUTSIDE:fs,ERASE_OUTSIDE:ss,ERASE_INSIDE:rs},cursors:{FILL_INSIDE:Bo,FILL_OUTSIDE:qo,ERASE_OUTSIDE:Vo,ERASE_INSIDE:Fo},defaultStrategy:"FILL_INSIDE",supportedInteractionTypes:["Mouse","Touch"],svgCursor:Bo,mixins:["freehandSegmentationMixin"]};return u()(this,h()(t).call(this,e,n))}return g()(t,e),t}(ca),_s=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:ys,FILL_OUTSIDE:xs,ERASE_OUTSIDE:ds,ERASE_INSIDE:us},cursors:{FILL_INSIDE:jo,FILL_OUTSIDE:Go,ERASE_OUTSIDE:Wo,ERASE_INSIDE:zo},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:Ms,ERASE_OUTSIDE:Ss,ERASE_INSIDE:Is},cursors:{FILL_INSIDE:Xo,FILL_OUTSIDE:Zo,ERASE_OUTSIDE:Ko,ERASE_INSIDE:Yo},defaultStrategy:"FILL_INSIDE",supportedInteractionTypes:["Mouse","Touch"],svgCursor:Xo,mixins:["circleSegmentationMixin"]};return u()(this,h()(t).call(this,e,n))}return g()(t,e),t}(ca),Ds=function(e){function t(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};r()(this,t);var n={name:"CorrectionScissors",strategies:{CORRECTION:Qr},cursors:{CORRECTION:Bo},defaultStrategy:"CORRECTION",supportedInteractionTypes:["Mouse","Touch"],svgCursor:Bo,mixins:["polylineSegmentationMixin"]};return u()(this,h()(t).call(this,e,n))}return g()(t,e),t}(ca),Os={},Ls={},As={};function Hs(e){if(!e)return"DEFAULT";var t=y.cornerstone.getEnabledElement(e).uuid;if(!t)throw new Error("Something went wrong when getting uuid from element");return t}var Rs={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=Hs(t);Os[n]=e},getStartLoadHandler:function(e){var t=Hs(e);return Os[t]||Os.DEFAULT},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=Hs(t);Ls[n]=e},getEndLoadHandler:function(e){var t=Hs(e);return Ls[t]||Ls.DEFAULT},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=Hs(t);As[n]=e},getErrorLoadingHandler:function(e){var t=Hs(e);return As[t]||As.DEFAULT},removeHandlers:function(e){var t=Hs(e);delete Os[t],delete Ls[t],delete As[t]}},Us={};function Ns(e,t){if(!Us[e])return{};var n=Us[e].find((function(e){return e.element===t}));return n?n.options:{}}function Fs(e,t,n){if(Us[e]){var a=Us[e].findIndex((function(e){return e.element===t}));if(-1===a)Us[e].push({element:t,options:n});else{var o=Us[e][a].options||{};Us[e][a].options=Object.assign(o,n)}}else Us[e]=[{element:t,options:n}]}var Bs=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:Eo};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=nn(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=en(o.imagePositionPatient),r=en(o.rowCosines),l=en(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);var n={name:"DoubleTapFitToWindow",supportedInteractionTypes:["DoubleTap"]};return u()(this,h()(t).call(this,e,n))}return g()(t,e),l()(t,[{key:"doubleTapCallback",value:function(e){var t=e.detail;y.cornerstone.fitToWindow(t.element)}}]),t}(ca),qs=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:zs,minimal:js},defaultStrategy:"default",supportedInteractionTypes:["Mouse","Touch"],svgCursor:bo};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 zs(e){var t=this.configuration,n=y.cornerstone,a=e.detail,o=a.element,i=a.image,r=a.currentPoints,s=a.canvasContext,l=En(s.canvas),c=un.getActiveColor(),u=pn.getFontSize(),d=Math.round(r.image.x),h=Math.round(r.image.y);d<0||h<0||d>=i.columns||h>=i.rows||Wt(l,(function(e){In(e,t);var a,s,l="".concat(d,", ").concat(h);if(i.color)a=Rr(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=Wi(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};bn(e,s,m.x,m.y+u+5,c),bn(e,l,m.x,m.y,c)}))}function js(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=En(s.canvas),u=un.getActiveColor(),d=r.page.y-pn.getFontSize()/2;l&&(d=r.page.y-4*pn.getFontSize());var h=n.pageToPixel(o,r.page.x,d);h.x<0||h.y<0||h.x>=i.columns||h.y>=i.rows||Wt(c,(function(e){In(e,t);var a,r=n.metaData.get("generalSeriesModule",i.imageId),s=r&&r.modality,c="";if(i.color)a=Rr(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=Wi(i,d);f&&(c+=" SUV: ".concat(parseFloat(f.toFixed(2))))}else c+=g}var m=n.pixelToCanvas(o,h),p={x:12,y:-(pn.getFontSize()+10)/2},y=Tn(e,c,5);l&&(p={x:-y/2,y:-pn.getFontSize()-10-12}),Qt(e,o,m,6,{color:u},"canvas"),bn(e,c,m.x+p.x,m.y+p.y,u)}))}var Ws=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:wo};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;pt.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),Gs=wr.FreehandHandleData,Ys=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:Xs(),svgCursor:xo};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};dn(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,pt.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=pt.mousePositionImage;var r=Ct(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};dn(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,wt(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 Gs(o);t.splice(e,0,i),t[n].lines.pop(),t[n].lines.push(t[e]),wr.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=Ct(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:Io};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)})),wt(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;Et(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=En(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.zoomElement),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),Zs=function(e){function t(){var e,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};r()(this,t);var a={name:"Overlay",configuration:{},mixins:["enabledOrDisabledBinaryTool"]},o=Object.assign(a,n);return(e=u()(this,h()(t).call(this,o))).initialConfiguration=o,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);var s=!isNaN(parseFloat(e.x))&&isFinite(e.x)?e.x:0,l=!isNaN(parseFloat(e.y))&&isFinite(e.y)?e.y:0;i.drawImage(t,s,l)}}))}}}}]),t}(ca),$s={getOrientationString:function(e){for(var t=en(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=1e-4,l=0;l<3;l++)if(r.x>s&&r.x>r.y&&r.x>r.z)n+=a,r.x=0;else if(r.y>s&&r.y>r.x&&r.y>r.z)n+=o,r.y=0;else if(r.z>s&&r.z>r.x&&r.z>r.y)n+=i,r.z=0;else if(r.x>s&&r.y>s&&r.x===r.y)n+=a+o,r.x=0,r.y=0;else if(r.x>s&&r.z>s&&r.x===r.z)n+=a+i,r.x=0,r.z=0;else{if(!(r.y>s&&r.z>s&&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()}},Js=function(e){function t(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};r()(this,t);var n={name:"OrientationMarkers",configuration:{drawAllMarkers:!0},mixins:["enabledOrDisabledBinaryTool"]};return u()(this,h()(t).call(this,e,n))}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=En(t.canvasContext.canvas),a=t.element,o=tl(a);if(o){var i=nl(a,o),r=un.getToolColor(),s={top:Tn(n,o.top,0),left:Tn(n,o.left,0),right:Tn(n,o.right,0),bottom:Tn(n,o.bottom,0),height:Tn(n,"M",0)};Qs(n,o,i,s,r),this.configuration.drawAllMarkers&&el(n,o,i,s,r)}}}]),t}(ca),Qs=function(e,t,n,a,o){bn(e,t.top,n.top.x-a.top/2,n.top.y,o),bn(e,t.left,n.left.x-a.left/2,n.left.y,o)},el=function(e,t,n,a,o){bn(e,t.right,n.right.x-a.right,n.right.y,o),bn(e,t.bottom,n.bottom.x-a.bottom/2,n.bottom.y-a.height,o)},tl=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=$s.getOrientationString(a.rowCosines),i=$s.getOrientationString(a.columnCosines),r=$s.invertOrientationString(o);return{top:$s.invertOrientationString(i),bottom:i,left:r,right:o}}},nl=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})}},al=function(e){function t(){var e,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};r()(this,t);var a={name:"PanMultiTouch",supportedInteractionTypes:["MultiTouch"],configuration:{touchPointers:2}};return(e=u()(this,h()(t).call(this,n,a))).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:So};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:cl}};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=ll()(rl.a.mark((function e(t){var n,a,o,i=arguments;return rl.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,dl(t);case 4:if(e.sent&&o&&a){e.next=8;break}return hl.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=En(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),gl=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)}},fl=function(e){function t(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};r()(this,t);var n={name:"Rotate",strategies:{default:ml,horizontal:pl,vertical:yl},defaultStrategy:"default",supportedInteractionTypes:["Mouse","Touch"],configuration:{roundAngles:!1,flipHorizontal:!1,flipVertical:!1},svgCursor:ko};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 ml(e){var t=this.configuration.roundAngles,n=e.detail,a=n.element,o=n.viewport,i=o.initialRotation,r=a.getBoundingClientRect(a),s=a.clientWidth,l=a.clientHeight,c={x:n.startPoints.client.x,y:n.startPoints.client.y},u=o.scale,d=o.translation,h={x:r.left+s/2+d.x*u,y:r.top+l/2+d.y*u},v={x:n.currentPoints.client.x,y:n.currentPoints.client.y},g=gl(h,c,v);t&&(g.angle=Math.ceil(g.angle)),g.direction<0&&(g.angle=-g.angle),o.rotation=i+g.angle}function pl(e){var t=this.configuration,n=t.roundAngles,a=t.flipHorizontal,o=e.detail,i=o.viewport,r=o.deltaPoints.page.x/i.scale;n&&(r=Math[r>0?"ceil":"floor"](r)),a&&(r=-r),i.rotation+=r}function yl(e){var t=this.configuration,n=t.roundAngles,a=t.flipVertical,o=e.detail,i=o.viewport,r=o.deltaPoints.page.y/i.scale;n&&(r=Math[r>0?"ceil":"floor"](r)),a&&(r=-r),i.rotation+=r}var xl,Tl=function(e){function t(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};r()(this,t);var n={name:"RotateTouch",supportedInteractionTypes:["TouchRotate"]};return u()(this,h()(t).call(this,e,n))}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),bl=N("tools:ScaleOverlayTool"),Cl=function(e){function t(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};r()(this,t);var n={name:"ScaleOverlay",configuration:{minorTickLength:12.5,majorTickLength:25},mixins:["enabledOrDisabledBinaryTool"]};return u()(this,h()(t).call(this,e,n))}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=En(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=Ml(c,.25,.05),v=Ml(c,.05,.15);if(c.width&&c.height&&h&&v){var g=un.getToolColor(),f=Xt.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);Wt(n,(function(e){In(e,m),Zt(e,i,m.verticalLine.start,m.verticalLine.end,{color:m.color,lineWidth:m.lineWidth},"canvas"),El(e,i,m),Zt(e,i,m.horizontalLine.start,m.horizontalLine.end,{color:m.color,lineWidth:m.lineWidth},"canvas"),wl(e,i,m)}))}}else bl.warn("unable to define rowPixelSpacing or colPixelSpacing from data on ".concat(this.name,"'s renderToolData"))}}]),t}(ca),Ml=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}}},El=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,Zt(e,t,r,s,{color:o,lineWidth:i},"canvas"),a++}},wl=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,Zt(e,t,r,s,{color:o,lineWidth:i},"canvas"),a++}},Il={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 Sl(){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 kl(){return xl||_l()}function _l(){var e=Sl().split(" "),t=e[0],n=e[1],a=Il[t];return a?a[n]?a[n]:a.default:Il.default}var Pl={interaction:[],thumbnail:[],prefetch:[]},Dl={interaction:0,thumbnail:0,prefetch:0},Ol={interaction:6,thumbnail:6,prefetch:5},Ll=!1;function Al(){Ll&&setTimeout((function(){Rl()}),20)}function Hl(e){var t=y.cornerstone,n=e.type;Dl[n]++,Ll=!0;var a=e.imageId,o=e.doneCallback,i=e.failCallback,r=t.imageCache.getImageLoadObject(a);if(r)r.promise.then((function(e){Dl[n]--,o(e),Al()}),(function(e){Dl[n]--,i(e),Al()}));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){Dl[n]--,o(e),Al()}),(function(e){Dl[n]--,i(e),Al()}))}}function Rl(){var e=kl();Ol={interaction:Math.max(e,1),thumbnail:Math.max(e-2,1),prefetch:Math.max(e-1,1)};for(var t=e-(Dl.interaction+Dl.thumbnail+Dl.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=Rs.getStartLoadHandler(e),l=Rs.getEndLoadHandler(e),c=Rs.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)})),Nl.startGrabbing(),C(e,b.STACK_SCROLL,u)}}},Bl=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)Fl(e,r);else{var l={index:r};i.pending.push(l),Vl(i,l,e)}}};function Vl(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&&Vl(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&&Vl(e,e.pending[0],n))})),Fl(n,t.index)}}var ql=function(e){function t(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};r()(this,t);var n={name:"StackScrollMouseWheel",supportedInteractionTypes:["MouseWheel"],configuration:{loop:!1,allowSkipping:!0,invert:!1}};return u()(this,h()(t).call(this,e,n))}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;Bl(a,s?-n:n,i,r)}}]),t}(ca),zl=function(e){function t(){var e,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};r()(this,t);var a={name:"StackScrollMultiTouch",supportedInteractionTypes:["MultiTouch"],configuration:{loop:!1,allowSkipping:!0,touchPointers:3}};return(e=u()(this,h()(t).call(this,n,a))).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=Ns(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);Bl(n,u,i,r),s.deltaY=c%l}else s.deltaY=c;Fs(this.name,n,s)}}},{key:"_getDeltaY",value:function(e,t){return(Ns(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),jl=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:_o};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=Ns(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);Bl(n,u,i,r),s.deltaY=c%l}else s.deltaY=c;Fs(this.name,n,s)}}},{key:"_getDeltaY",value:function(e,t){return(Ns(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),Wl=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:Po};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=un.getColorIfActive({active:!0}),i=En(n.canvasContext.canvas);Wt(i,(function(e){Mn(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 Yl(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){Yl(this.handles.start)||Yl(this.handles.end)||(e.detail.handles=this.handles,Xl(e,this.configuration),this._resetHandles())}},{key:"_resetHandles",value:function(){this.handles={start:{},end:{}}}}]),t}(ca),Yl=function(e){return 0===Object.keys(e).length&&e.constructor===Object},Xl=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=Wl(o,l,c,u,d),v=Kl(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,g.voiLUT=void 0,y.cornerstone.setViewport(o,g),y.cornerstone.updateImage(o)},Kl=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:$l},supportedInteractionTypes:["Mouse","Touch"],configuration:{orientation:0},svgCursor:Do};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 $l(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),n.viewport.voiLUT=void 0}var Jl=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);var n={name:"ZoomMouseWheel",supportedInteractionTypes:["MouseWheel"],configuration:{minScale:.25,maxScale:20,invert:!1}};return u()(this,h()(t).call(this,e,n))}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=Jl(a,r?o/4:-o/4,{maxScale:s,minScale:l});y.cornerstone.setViewport(n,c)}}]),t}(ca),tc=Ql.correctShift,nc=Ql.changeViewportScale,ac=function(e){function t(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};r()(this,t);var n={name:"Zoom",strategies:{default:ic,translate:rc,zoomToCenter:sc},defaultStrategy:"default",supportedInteractionTypes:["Mouse","Touch"],configuration:{invert:!1,preventZoomOutsideImage:!1,minScale:.25,maxScale:20},svgCursor:Oo};return u()(this,h()(t).call(this,e,n))}return g()(t,e),l()(t,[{key:"touchDragCallback",value:function(e){oc.call(this,e)}},{key:"mouseDragCallback",value:function(e){oc.call(this,e)}}]),t}(ca),oc=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 ic(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=nc(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=tc(p,f),c.translation.x-=p.x,c.translation.y-=p.y}function rc(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=nc(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=tc(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 sc(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;nc(s,r,{maxScale:a,minScale:o})}var lc=Ql.correctShift,cc=function(e){function t(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};r()(this,t);var n={name:"ZoomTouchPinch",supportedInteractionTypes:["TouchPinch"],configuration:{minScale:.25,maxScale:20}};return u()(this,h()(t).call(this,e,n))}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]:{},t=e.x,n=e.y;return{x:t,y:n}}var hc,vc=N("eventListeners:mouseEventListeners"),gc=!0;function fc(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 mc(){gc=!1}function pc(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=uc(o);vc.log("double-click: %o",fc(e)),C(t,a,{event:e,buttons:fc(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 yc(e){var t=e.currentTarget,n=y.cornerstone.getEnabledElement(t);if(n.image){hc=setTimeout(mc,200),t.removeEventListener("mousemove",xc);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=uc(a),i={event:e,buttons:fc(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(hc);var s=b.MOUSE_UP;gc&&(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)};vc.log("mouseup: %o",fc(i));var u={event:i,buttons:fc(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",xc),gc=!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)};vc.log("mousemove: %o",fc(e));var l={buttons:fc(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=uc(r)}}function xc(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=uc(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=uc(r)}}function Tc(e){e.removeEventListener("mousedown",yc),e.removeEventListener("mousemove",xc),e.removeEventListener("dblclick",pc)}var bc={enable:function(e){Tc(e),e.addEventListener("mousedown",yc),e.addEventListener("mousemove",xc),e.addEventListener("dblclick",pc)},disable:Tc};function Cc(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=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}}(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 Mc(e){e.removeEventListener("wheel",Cc,{passive:!1})}var Ec,wc,Ic={enable:function(e){Mc(e),e.addEventListener("wheel",Cc,{passive:!1})},disable:Mc},Sc=0,kc=1;function _c(e,t){var n=Date.now();if(e!==Ec){if(n-wc<=2e3)return t.preventDefault(),t.stopPropagation(),t.stopImmediatePropagation(),!1;Ec=e}wc=n}var Pc=_c.bind(null,Sc),Dc=_c.bind(null,kc);function Oc(e,t,n){var a=n?Pc:Dc;t.forEach((function(t){e.addEventListener(t,a,{passive:!1})}))}function Lc(e,t,n){var a=n?Pc:Dc;t.forEach((function(t){e.removeEventListener(t,a)}))}var Ac=["mousedown","mouseup"],Hc=["touchstart","touchend"];function Rc(e){Lc(e,Ac,Sc),Lc(e,Hc,kc)}var Uc,Nc,Fc,Bc,Vc,qc,zc,jc,Wc,Gc={enable:function(e){Rc(e),Oc(e,Ac,Sc),Oc(e,Hc,kc)},disable:Rc},Yc=1,Xc=0,Kc=!1,Zc=!1;function $c(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)&&(Zc=!1,clearTimeout(zc)),e.type){case"tap":Zc=!1,clearTimeout(zc),(Nc={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,Nc.image),a=b.TAP,Vc={event:e,viewport:y.cornerstone.getViewport(t),image:n.image,element:t,currentPoints:Nc,type:a,isTouchEvent:!0},C(t,a,Vc);break;case"doubletap":Zc=!1,clearTimeout(zc),(Nc={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,Nc.image),a=b.DOUBLE_TAP,Vc={event:e,viewport:y.cornerstone.getViewport(t),image:n.image,element:t,currentPoints:Nc,type:a,isTouchEvent:!0},C(t,a,Vc);break;case"pinchstart":Zc=!1,clearTimeout(zc),Yc=1;break;case"pinchmove":if(Zc=!1,clearTimeout(zc),!0===Kc){Yc=e.scale,Kc=!1;break}o=(e.scale-Yc)/Yc,(Uc={page:e.center,image:y.cornerstone.pageToPixel(t,e.center.x,e.center.y)}).canvas=y.cornerstone.pixelToCanvas(t,Uc.image),a=b.TOUCH_PINCH,Vc={event:e,startPoints:Uc,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,Vc),Yc=e.scale;break;case"touchstart":Yc=1,clearTimeout(zc),clearTimeout(qc),qc=setTimeout((function(){(Uc={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,Uc.image),a=b.TOUCH_START,e.touches.length>1&&(a=b.MULTI_TOUCH_START),Vc={event:e,viewport:y.cornerstone.getViewport(t),image:n.image,element:t,startPoints:Uc,currentPoints:Uc,type:a,isTouchEvent:!0},!0===C(t,a,Vc)&&(a=b.TOUCH_START_ACTIVE,e.touches.length>1&&(a=b.MULTI_TOUCH_START_ACTIVE),Vc.type=a,C(t,a,Vc)),Fc=uc(Uc)}),50),Zc=!0,jc=0,zc=setTimeout((function(){Zc&&((Nc={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,Uc.image),a=b.TOUCH_PRESS,Vc={event:e,viewport:y.cornerstone.getViewport(t),image:n.image,element:t,currentPoints:Nc,type:a,isTouchEvent:!0},C(t,a,Vc))}),700);break;case"touchend":Yc=1,Zc=!1,clearTimeout(zc),setTimeout((function(){(Uc={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,Uc.image),a=b.TOUCH_END,Vc={event:e,viewport:y.cornerstone.getViewport(t),image:n.image,element:t,startPoints:Uc,currentPoints:Uc,type:a,isTouchEvent:!0},C(t,a,Vc)}),50);break;case"panmove":i={x:e.deltaX-Wc.x,y:e.deltaY-Wc.y},Wc={x:e.deltaX,y:e.deltaY},(Nc={page:{x:Fc.page.x+i.x,y:Fc.page.y+i.y},image:y.cornerstone.pageToPixel(t,Fc.page.x+i.x,Fc.page.y+i.y),client:{x:Fc.client.x+i.x,y:Fc.client.y+i.y}}).canvas=y.cornerstone.pixelToCanvas(t,Nc.image),Bc={page:y.cornerstoneMath.point.subtract(Nc.page,Fc.page),image:y.cornerstoneMath.point.subtract(Nc.image,Fc.image),client:y.cornerstoneMath.point.subtract(Nc.client,Fc.client),canvas:y.cornerstoneMath.point.subtract(Nc.canvas,Fc.canvas)},(jc+=Math.sqrt(Bc.page.x*Bc.page.x+Bc.page.y*Bc.page.y))>5&&(Zc=!1,clearTimeout(zc)),a=b.TOUCH_DRAG,e.pointers.length>1&&(a=b.MULTI_TOUCH_DRAG),Vc={viewport:y.cornerstone.getViewport(t),image:n.image,element:t,startPoints:Uc,lastPoints:Fc,currentPoints:Nc,deltaPoints:Bc,numPointers:e.pointers.length,type:a,isTouchEvent:!0},C(t,a,Vc),Fc=uc(Nc);break;case"panstart":Wc={x:e.deltaX,y:e.deltaY},(Nc={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,Nc.image),Fc=uc(Nc);break;case"panend":if(Zc=!1,clearTimeout(zc),!Fc)return!1;(Nc={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,Nc.image),Bc={page:y.cornerstoneMath.point.subtract(Nc.page,Fc.page),image:y.cornerstoneMath.point.subtract(Nc.image,Fc.image),client:y.cornerstoneMath.point.subtract(Nc.client,Fc.client),canvas:y.cornerstoneMath.point.subtract(Nc.canvas,Fc.canvas)},a=b.TOUCH_DRAG_END,Vc={event:e.srcEvent,viewport:y.cornerstone.getViewport(t),image:n.image,element:t,startPoints:Uc,lastPoints:Fc,currentPoints:Nc,deltaPoints:Bc,type:a,isTouchEvent:!0},C(t,a,Vc),2===e.pointers.length-e.changedPointers.length&&(Kc=!0);break;case"rotatemove":Zc=!1,clearTimeout(zc),r=e.rotation-Xc,Xc=e.rotation,a=b.TOUCH_ROTATE,Vc={event:e.srcEvent,viewport:y.cornerstone.getViewport(t),image:n.image,element:t,rotation:r,type:a},C(t,a,Vc)}return!1}}function Jc(e){Gc.disable(e);["touchstart","touchend"].forEach((function(t){e.removeEventListener(t,$c)}));var t=Ns("touchInput",e).hammer;t&&t.off("tap doubletap panstart panmove panend pinchstart pinchmove rotatemove",$c)}var Qc={enable:function(e){Jc(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",$c),Gc.enable(e),["touchstart","touchend"].forEach((function(t){e.addEventListener(t,$c,{passive:!1})}));var c=Ns("touchInput",e);c.hammer=a,Fs("touchInput",e,c)},disable:Jc},eu=Tt("segmentation");function tu(e,t,n,a,o){!function(e,t,n){var a=eu.configuration,o=e.detail,i=En(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,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)}}(i,d,h);var f=function(e){var t=e.viewport,n=e.image,a=t.scale,o=t.scale;n.rowPixelSpacing3&&void 0!==arguments[3])||arguments[3],o=nu.configuration,i=nu.state,r=e.detail,s=r.element,l=r.canvasContext,c=o.outlineWidth||1,u=En(l.canvas),d=i.colorLutTables[n],h=u.globalAlpha;u.globalAlpha=a?o.outlineAlpha:o.outlineAlphaInactive,Wt(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?pt.clickProximity:pt.touchProximity;return t.filter((function(t){for(var a=O(e,t.name),i=0;i0}))},wu=function(e){if(!pt.isToolLocked){var t=e.detail,n=e.detail.element,a=e.detail.currentPoints.canvas,o=Mu(n,yt.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(pt.isMultiPartToolActive&&(i=Ea(i)),i.length>0){var r=i.find((function(e){return"function"==typeof e.preMouseDownCallback}));if(r)if(r.preMouseDownCallback(e))return}if(!pt.isMultiPartToolActive){var s=Eu(n,o),l=Cu(n,s,a,"mouse");if(l.length>0){var c=l[0],u=O(n,c.name),d=ao(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}}}}},Iu=N("eventDispatchers:mouseEventHandlers"),Su=function(e){if(!pt.isToolLocked){var t=e.detail,n=wa(t.element,t.buttons,"mouse");if(n){if("function"==typeof n.preMouseDownActivateCallback)if(n.preMouseDownActivateCallback(e))return;pt.isMultiPartToolActive||(n.addNewMeasurement?n.addNewMeasurement(e,"mouse"):n instanceof ro&&function(e,t){Iu.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?Ba:Za)(n,t.name,o,o.handles.end,t.options,"mouse",(function(e){if(!o.cancelled)if(e){var n=b.MEASUREMENT_COMPLETED,i={toolName:t.name,toolType:t.name,element:a,measurementData:o};C(a,n,i)}else L(a,t.name,o)})))}(e,n))}}},ku=function(e){if(!pt.isToolLocked){var t,n=e.detail,a=n.element;if(t=(t=(t=ya(a,yt.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})),pt.isMultiPartToolActive&&(t=Ea(t)),0!==t.length)t[0].mouseDragCallback(e)}},_u=function(e){if(!pt.isToolLocked&&!pt.isMultiPartToolActive){var t,n=e.detail,a=n.element,o=n.currentPoints;pt.mousePositionImage=o.image;var i=(t=Mu(a,yt.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=Eu(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),Ba(e.detail,i.name,r.data,s,i.options,"touch",(function(){return qu(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),Pa(e.detail,c.name,d,null,c.options,"touch",(function(){return qu(u)})),e.stopImmediatePropagation(),void e.preventDefault()}var h=ya(n,yt.touchTools());return h.length>0&&h[0].touchStartActiveCallback?h[0].touchStartActiveCallback(e):Vu(e),!1}},Wu=function(e){if(!pt.isToolLocked){var t=e.detail,n=t.element,a=t.startPoints.canvas,o=Mu(n,yt.touchTools()),i=o.filter((function(e){return"active"===e.mode&&e.options.isTouchActive}));if(pt.isMultiPartToolActive&&(i=Ea(i)),i.length>0){var r=i.find((function(e){return"function"==typeof e.preTouchStartCallback}));if(r)if(r.preTouchStartCallback(e))return}if(!pt.isMultiPartToolActive){var s=Eu(n,o),l=Cu(n,s,a,"touch");if(l.length>0){var c=l[0],u=O(n,c.name),d=ao(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}}}}},Gu=bu.bind(null,"DoubleTap","doubleTapCallback"),Yu=bu.bind(null,"Touch","touchDragCallback"),Xu=bu.bind(null,"Touch","touchEndCallback"),Ku=bu.bind(null,"TouchPinch","touchPinchCallback"),Zu=bu.bind(null,"Touch","touchPressCallback"),$u=bu.bind(null,"TouchRotate","touchRotateCallback"),Ju=function(e){e.addEventListener(b.TAP,ju),e.addEventListener(b.TOUCH_START,Wu,{passive:!1}),e.addEventListener(b.TOUCH_DRAG,Yu,{passive:!1}),e.addEventListener(b.TOUCH_END,Xu),e.addEventListener(b.TOUCH_START_ACTIVE,Vu),e.addEventListener(b.TOUCH_PRESS,Zu),e.addEventListener(b.DOUBLE_TAP,Gu),e.addEventListener(b.TOUCH_PINCH,Ku),e.addEventListener(b.TOUCH_ROTATE,$u),e.addEventListener(b.MULTI_TOUCH_DRAG,Fu)},Qu=function(e){e.removeEventListener(b.TAP,ju),e.removeEventListener(b.TOUCH_START,Wu),e.removeEventListener(b.TOUCH_DRAG,Yu),e.removeEventListener(b.TOUCH_END,Xu),e.removeEventListener(b.TOUCH_START_ACTIVE,Vu),e.removeEventListener(b.TOUCH_PRESS,Zu),e.removeEventListener(b.DOUBLE_TAP,Gu),e.removeEventListener(b.TOUCH_PINCH,Ku),e.removeEventListener(b.TOUCH_ROTATE,$u),e.removeEventListener(b.MULTI_TOUCH_DRAG,Fu)},ed=N("addTool"),td=function(e,t,n){var a=new t(n);Ct(e,a.name)?ed.warn("%s has already been added to the target element",a.name):(a.element=e,bt.state.tools.push(a))},nd=function(e,t){ad(e,t),bt.state.enabledElements.forEach((function(n){td(n,e,t)}))},ad=function(e,t){if(Tt("globalConfiguration").configuration.globalToolSyncEnabled){var n=new e(t);void 0!==bt.state.globalTools[n.name]?ed.warn("%s has already been added globally",n.name):bt.state.globalTools[n.name]={tool:e,props:t,activeBindings:[]}}},od=N("internals:addEnabledElement"),id=function(e){od.log("EVENT:ELEMENT_ENABLED");var t=e.detail.element;xu(t),Uu(t);var n=Tt("globalConfiguration").configuration;n.mouseEnabled&&(bc.enable(t),Ic.enable(t),Au(t)),n.touchEnabled&&(Qc.enable(t),Ju(t)),rd(t)},rd=function(e){bt.state.enabledElements.push(e),bt.modules&&function(e){var t=bt.modules;Object.keys(t).forEach((function(n){"function"==typeof t[n].enabledElementCallback&&t[n].enabledElementCallback(e)}))}(e),function(e){if(!Tt("globalConfiguration").configuration.globalToolSyncEnabled)return;Object.keys(bt.state.globalTools).forEach((function(t){var n=bt.state.globalTools[t],a=n.tool,o=n.props;td(e,a,o)}))}(e),function(e){if(!Tt("globalConfiguration").configuration.globalToolSyncEnabled)return;var t={active:_t,passive:Ht,enabled:Lt,disabled:Dt};bt.state.globalToolChangeHistory.forEach((function(n){var a=n.args.slice(0);a.unshift(e),t[n.mode].apply(null,a)}))}(e)};var sd=N("internals:removeEnabledElement"),ld=function(e){sd.log("EVENT:ELEMENT_DISABLED");var t=e.detail.element,n=Tt("globalConfiguration").configuration;Tu(t),Nu(t),n.mouseEnabled&&(bc.disable(t),Ic.disable(t),Hu(t)),n.touchEnabled&&(Qc.disable(t),Qu(t)),cd(t),ud(t),dd(t)},cd=function(e){bt.state.tools.forEach((function(t){t.element===e&&Dt(t.element,t.name)})),bt.state.tools=bt.state.tools.filter((function(t){return t.element!==e}))},ud=function(e){bt.modules&&function(e){var t=bt.modules;Object.keys(t).forEach((function(n){"function"==typeof t[n].removeEnabledElementCallback&&t[n].removeEnabledElementCallback(e)}))}(e);var t=bt.state.enabledElements.findIndex((function(t){return t===e}));t>-1?bt.state.enabledElements.splice(t,1):sd.warn("unable to remove element")},dd=function(e){Rs.removeHandlers(e)};var hd,vd=function(){window.removeEventListener("resize",gd,!1)};function gd(){hd||(hd=setTimeout((function(){hd=null,fd()}),66))}var fd=function(){pt.enabledElements.forEach((function(e){y.cornerstone.resize(e)}))},md=function(){vd(),window.addEventListener("resize",gd,!1)},pd=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};yd(),xd();var t=Tt("globalConfiguration");Array.isArray(e)?e.forEach((function(e){var t=e.moduleName,n=e.configuration,a=Tt(t);a&&(a.configuration=Object.assign({},a.configuration,n))})):t.configuration=Object.assign({},t.configuration,e),t.configuration.autoResizeViewports&&md()};function yd(){!function(){var e=y.cornerstone,t=e.EVENTS.ELEMENT_ENABLED,n=e.EVENTS.ELEMENT_DISABLED;e.events.removeEventListener(t,id),e.events.removeEventListener(n,ld)}();var e=y.cornerstone,t=e.EVENTS.ELEMENT_ENABLED,n=e.EVENTS.ELEMENT_DISABLED;e.events.addEventListener(t,id),e.events.addEventListener(n,ld)}function xd(){var e=bt.modules;Object.keys(e).forEach((function(t){"function"==typeof e[t].onRegisterCallback&&e[t].onRegisterCallback()}))}var Td,bd=N("stackTools:stackPrefetch"),Cd={maxImagesToPrefetch:1/0,preserveExistingPool:!1};function Md(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 Ed=function(e){return Math.max.apply(null,e)},wd=function(e){return Math.min.apply(null,e)};function Id(e){var t=O(e,"stack");if(t&&t.data&&t.data.length){var n=t.data[0],a=O(e,"stackPrefetch");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)&&E(e))})),o.indicesToRequest.length){Cd.preserveExistingPool||Nl.clearRequestStack("prefetch");for(var i,r,s=function(e,t){var n=[],a=[];return e.forEach((function(e){et&&a.push(e)})),{low:e.indexOf(Ed(n)),high:e.indexOf(wd(a))}}(o.indicesToRequest,n.currentImageIdIndex),l=Rs.getErrorLoadingHandler(e),c=s.low,u=s.high,d=[];c>=0||uCd.maxImagesToPrefetch)&&c>=0,g=!(o.indicesToRequest[u]-h>Cd.maxImagesToPrefetch)&&u-1&&o.indicesToRequest.splice(t,1)}function w(t){bd.log("prefetch done: %s",t.imageId);var a=n.imageIds.indexOf(t.imageId);E(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){bd.log("prefetch errored: %o",t),l&&l(e,i,t,"stackPrefetch")}}function Sd(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,"stackPrefetch");i&&i.data&&i.data.length&&i.data[0].indicesToRequest.push(o)}}}}function kd(e){clearTimeout(Td),Td=setTimeout((function(){var t=e.target;try{Id(t)}catch(e){return}}),10)}var _d={enable:function(e){O(e,"stackPrefetch").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:Md(0,n.imageIds.length-1),enabled:!0,direction:1},o=a.indicesToRequest.indexOf(n.currentImageIdIndex);a.indicesToRequest.splice(o,1),D(e,"stackPrefetch",a),Id(e),e.removeEventListener(y.cornerstone.EVENTS.NEW_IMAGE,kd),e.addEventListener(y.cornerstone.EVENTS.NEW_IMAGE,kd);var i=Sd(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 bd.warn("A stack that should not be cached was given the stackPrefetch")}},disable:function(e){clearTimeout(Td),e.removeEventListener(y.cornerstone.EVENTS.NEW_IMAGE,kd);var t=Sd(e);y.cornerstone.events.removeEventListener(y.cornerstone.EVENTS.IMAGE_CACHE_PROMISE_REMOVED,t);var n=O(e,"stackPrefetch");n&&n.data.length&&(n.data[0].enabled=!1,Nl.clearRequestStack("prefetch"))},getConfiguration:function(){return Cd},setConfiguration:function(e){var t;Cd=e,e.maxSimultaneousRequests&&(t=e.maxSimultaneousRequests,xl=t)}},Pd=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}(),Dd={};Dd.FusionRenderer=Pd;var Od=Dd;function Ld(e){var t=e.intervalId;void 0!==t&&(e.intervalId=void 0,e.usingFrameTimeVector?clearTimeout(t):clearInterval(t))}function Ad(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,"playClip");c&&c.data&&c.data.length?Ld(n=c.data[0]):D(e,"playClip",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 Ld(n),void function(e){C(e,b.CLIP_STOPPED,{element:e})}(e);c>=u&&(c=0),c<0&&(c=u-1),c!==l.currentImageIdIndex&&(t=Rs.getStartLoadHandler(e),a=Rs.getEndLoadHandler(e),s=Rs.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 Hd(e){var t=O(e,"playClip");t&&t.data&&t.data.length&&Ld(t.data[0])}var Rd=function(e,t){var n=bt.state.tools.findIndex((function(n){return n.element===e&&n.name===t}));n>=0&&bt.state.tools.splice(n,1)},Ud=function(e){Nd(e),bt.state.enabledElements.forEach((function(t){Rd(t,e)}))},Nd=function(e){Tt("globalConfiguration").configuration.globalToolSyncEnabled&&bt.state.globalTools[e]&&delete bt.state.globalTools[e]},Fd=function(e,t,n){var a=Ct(e,t);a&&a.mergeOptions(n)},Bd=function(e,t){pt.enabledElements.forEach((function(n){Fd(n,e,t)}))};function Vd(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 qd=[];function zd(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=Vd(a,n);qd.push(o),H(e,o)}var jd={newStackSpecificToolStateManager:Vd,addStackStateManager:zd};function Wd(){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")},Xd=N("thirdParty:registerModule"),Kd=function(e,t){var n=arguments.length>2&&void 0!==arguments[2]&&arguments[2],a=Zd(e);!a||n?(a&&Xd.warn("Overwriting module %s",e),xt[e]=t,"function"==typeof xt[e].onRegisterCallback&&xt[e].onRegisterCallback()):Xd.warn("A module with the name %s is already registered",e)};function Zd(e){return void 0!==xt[e]}var $d={"base/BaseTool":ca,"base/BaseAnnotationTool":ro,"base/BaseBrushTool":Ma,"tools/cursors/MouseCursor":uo,"tools/cursors":o,"manipulators/anyHandlesOutsideImage":ga,"manipulators/getHandleNearImagePoint":ha,"manipulators/handleActivator":va,"manipulators/moveAllHandles":Pa,"manipulators/moveHandle":Ba,"manipulators/moveNewHandle":Za,"manipulators/moveHandleNearImagePoint":no,"manipulators/findHandleDataNearImagePoint":ao,"manipulators/moveAnnotation":oo,"mixins/activeOrDisabledBinaryTool":ea.activeOrDisabledBinaryTool,"mixins/enabledOrDisabledBinaryTool":ea.enabledOrDisabledBinaryTool,"drawing/getNewContext":En,"drawing/draw":Wt,"drawing/path":Kt,"drawing/setShadow":In,"drawing/drawLine":Zt,"drawing/drawLines":hn,"drawing/drawJoinedLines":$t,"drawing/drawCircle":Qt,"drawing/drawEllipse":rn,"drawing/drawRect":Mn,"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);Kt(e,o,(function(e){e.rect(0,0,e.canvas.clientWidth,e.canvas.clientHeight),e.rect(s+c,l,-c,u)}))},"drawing/drawTextBox":bn,"drawing/drawArrow":Jt,"drawing/fillBox":xn,"drawing/fillTextLines":yn,"drawing/drawLink":vn,"drawing/drawLinkedTextBox":Cn,"drawing/drawHandles":dn,"drawing/textBoxWidth":Tn,"util/getLuminance":Wl,"util/getROITextBoxCoords":Zi,"util/copyPoints":uc,"util/calculateSUV":Wi,"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":Fl,"util/scroll":Bl,"util/roundToDecimal":lo,"util/projectPatientPointToImagePlane":tn,"util/imagePointToPatientPoint":nn,"util/planePlaneIntersection":an,"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":Rr,"util/getDefaultSimultaneousRequests":_l,"util/getMaxSimultaneousRequests":kl,"util/getBrowserInfo":Sl,"util/isMobileDevice":function(){return new RegExp("Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini").test(navigator.userAgent)},"util/angleBetweenPoints":gl,"util/numbersWithCommas":$i,"util/lineSegDistance":so,"util/triggerEvent":C,"util/convertToVector3":en,"util/clip":fa,"util/clipToBox":ma,"util/debounce":Qo,"util/deepmerge":ra,"util/getDefault":wn,"util/getPixelSpacing":$o,"util/isEmptyObject":Sn,"util/isObject":Jo,"util/isPointInImage":Ge,"util/isPointInPolygon":as,"util/getLogger":N,"util/throttle":ei,"util/wait":ul,"util/waitForEnabledElementImageToLoad":dl,"util/getKeyPressData":function(e){var t=y.cornerstone,n=e.currentTarget,a=t.getEnabledElement(n);if(a&&a.image){var o=bt.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":Ki,"util/freehandUtils":wr,"util/segmentationUtils":a,"util/zoomUtils":Ql},Jd=N("thirdParty:registerMixin"),Qd=function(e,t){var n=arguments.length>2&&void 0!==arguments[2]&&arguments[2],a=eh(e);!a||n?(a&&Jd.warn("Overwriting mixins/%s",e),ea[e]=t,$d["mixins/".concat(e)]=ea[e]):Jd.warn("mixins/%s is already registered",e)};function eh(e){return void 0!==ea[e]}var th=N("thirdParty:registerType"),nh=function(e,t,n){var a=arguments.length>3&&void 0!==arguments[3]&&arguments[3],o="".concat(e,"/").concat(t),i=ah(o);!i||a?(i&&th.warn("Overwriting %s",o),$d[o]=n):th.warn("%s is already registered",o)};function ah(e){return void 0!==$d[e]}var oh=N("thirdParty:register"),ih=function(e,t,n){var a=arguments.length>3&&void 0!==arguments[3]&&arguments[3];if(rh(e,t,n))switch(e){case"module":Kd(t,n,a);break;case"mixin":Qd(t,n,a);break;default:nh(e,t,n,a)}};function rh(e,t,n){return e?t?"object"===T()(n)||"function"==typeof n||(oh.warn("The %s is a %s, it should be an Object or a function.",n,T()(n)),!1):(oh.warn("The %s must have a name in order to register.",e),!1):(oh.warn("The type must be given in order to register."),!1)}var sh=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;ih(n,a,o,t)}))},lh=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))}},ch=function(e,t,n){n!==t&&y.cornerstone.updateImage(n)};function uh(e){return e.filter((function(e,t,n){return n.indexOf(e)===t}))}var dh=function(e,t){var n=y.cornerstone,a=this,o=[],i=[],r=!1,s={},l=t;function c(e){var t=e.detail.element;a.remove(t),function(e){for(var t in Us)Us[t]=Us[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=en(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=en(l.imagePositionPatient);s.distances[a][i]=c.clone().sub(r)}}}})),Object.keys(s.distances[a]).length||delete s.distances[a])}}})))},this.fireEvent=function(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)},this.onEvent=function(e){var t=e.detail;!0!==r&&a.fireEvent(e.currentTarget,t)},this.addSource=function(t){-1===o.indexOf(t)&&(o.push(t),e.split(" ").forEach((function(e){t.addEventListener(e,a.onEvent)})),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,a.onEvent)})),a.getDistances(),a.fireEvent(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(){uh(o.concat(i)).forEach((function(e){e.removeEventListener(y.cornerstone.EVENTS.ELEMENT_DISABLED,c),e.addEventListener(y.cornerstone.EVENTS.ELEMENT_DISABLED,c)}))},this.destroy=function(){uh(o.concat(i)).forEach((function(e){a.remove(e)}))}},hh=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=Rs.getStartLoadHandler(n),l=Rs.getEndLoadHandler(n),c=Rs.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)}))}}},vh=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=en(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=en(n.imagePositionPatient).distanceToSquared(s);o=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,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 s=typeof e;if("string"===s&&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 r=parseFloat(t[1]);switch((t[2]||"ms").toLowerCase()){case"years":case"year":case"yrs":case"yr":case"y":return 315576e5*r;case"weeks":case"week":case"w":return 6048e5*r;case"days":case"day":case"d":return r*i;case"hours":case"hour":case"hrs":case"hr":case"h":return r*o;case"minutes":case"minute":case"mins":case"min":case"m":return r*a;case"seconds":case"second":case"secs":case"sec":case"s":return r*n;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return r;default:return}}(e);if("number"===s&&!1===isNaN(e))return t.long?function(e){var t=Math.abs(e);if(t>=i)return r(e,t,i,"day");if(t>=o)return r(e,t,o,"hour");if(t>=a)return r(e,t,a,"minute");if(t>=n)return r(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=Object.prototype,a=n.hasOwnProperty,o="function"==typeof Symbol?Symbol:{},i=o.iterator||"@@iterator",r=o.asyncIterator||"@@asyncIterator",s=o.toStringTag||"@@toStringTag",l="object"==typeof e,c=t.regeneratorRuntime;if(c)l&&(e.exports=c);else{(c=t.regeneratorRuntime=l?e.exports:{}).wrap=f;var u={},d={};d[i]=function(){return this};var h=Object.getPrototypeOf,v=h&&h(h(I([])));v&&v!==n&&a.call(v,i)&&(d=v);var g=x.prototype=p.prototype=Object.create(d);y.prototype=g.constructor=x,x.constructor=y,x[s]=y.displayName="GeneratorFunction",c.isGeneratorFunction=function(e){var t="function"==typeof e&&e.constructor;return!!t&&(t===y||"GeneratorFunction"===(t.displayName||t.name))},c.mark=function(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,x):(e.__proto__=x,s in e||(e[s]="GeneratorFunction")),e.prototype=Object.create(g),e},c.awrap=function(e){return{__await:e}},T(b.prototype),b.prototype[r]=function(){return this},c.AsyncIterator=b,c.async=function(e,t,n,a){var o=new b(f(e,t,n,a));return c.isGeneratorFunction(t)?o:o.next().then((function(e){return e.done?e.value:o.next()}))},T(g),g[s]="Generator",g[i]=function(){return this},g.toString=function(){return"[object Generator]"},c.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}},c.values=I,w.prototype={constructor:w,reset:function(e){if(this.prev=0,this.next=0,this.sent=this._sent=void 0,this.done=!1,this.delegate=null,this.method="next",this.arg=void 0,this.tryEntries.forEach(E),!e)for(var t in this)"t"===t.charAt(0)&&a.call(this,t)&&!isNaN(+t.slice(1))&&(this[t]=void 0)},stop:function(){this.done=!0;var e=this.tryEntries[0].completion;if("throw"===e.type)throw e.arg;return this.rval},dispatchException:function(e){if(this.done)throw e;var t=this;function n(n,a){return r.type="throw",r.arg=e,t.next=n,a&&(t.method="next",t.arg=void 0),!!a}for(var o=this.tryEntries.length-1;o>=0;--o){var i=this.tryEntries[o],r=i.completion;if("root"===i.tryLoc)return n("end");if(i.tryLoc<=this.prev){var s=a.call(i,"catchLoc"),l=a.call(i,"finallyLoc");if(s&&l){if(this.prev=0;--n){var o=this.tryEntries[n];if(o.tryLoc<=this.prev&&a.call(o,"finallyLoc")&&this.prev=0;--t){var n=this.tryEntries[t];if(n.finallyLoc===e)return this.complete(n.completion,n.afterLoc),E(n),u}},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;E(n)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(e,t,n){return this.delegate={iterator:I(e),resultName:t,nextLoc:n},"next"===this.method&&(this.arg=void 0),u}}}function f(e,t,n,a){var o=t&&t.prototype instanceof p?t:p,i=Object.create(o.prototype),r=new w(a||[]);return i._invoke=function(e,t,n){var a="suspendedStart";return function(o,i){if("executing"===a)throw new Error("Generator is already running");if("completed"===a){if("throw"===o)throw i;return S()}for(n.method=o,n.arg=i;;){var r=n.delegate;if(r){var s=C(r,n);if(s){if(s===u)continue;return s}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if("suspendedStart"===a)throw a="completed",n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);a="executing";var l=m(e,t,n);if("normal"===l.type){if(a=n.done?"completed":"suspendedYield",l.arg===u)continue;return{value:l.arg,done:n.done}}"throw"===l.type&&(a="completed",n.method="throw",n.arg=l.arg)}}}(e,n,r),i}function m(e,t,n){try{return{type:"normal",arg:e.call(t,n)}}catch(e){return{type:"throw",arg:e}}}function p(){}function y(){}function x(){}function T(e){["next","throw","return"].forEach((function(t){e[t]=function(e){return this._invoke(t,e)}}))}function b(e){var t;this._invoke=function(n,o){function i(){return new Promise((function(t,i){!function t(n,o,i,r){var s=m(e[n],e,o);if("throw"!==s.type){var l=s.arg,c=l.value;return c&&"object"==typeof c&&a.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,o,t,i)}))}return t=t?t.then(i,i):i()}}function C(e,t){var n=e.iterator[t.method];if(void 0===n){if(t.delegate=null,"throw"===t.method){if(e.iterator.return&&(t.method="return",t.arg=void 0,C(e,t),"throw"===t.method))return u;t.method="throw",t.arg=new TypeError("The iterator does not provide a 'throw' method")}return u}var a=m(n,e.iterator,t.arg);if("throw"===a.type)return t.method="throw",t.arg=a.arg,t.delegate=null,u;var o=a.arg;return o?o.done?(t[e.resultName]=o.value,t.next=e.nextLoc,"return"!==t.method&&(t.method="next",t.arg=void 0),t.delegate=null,u):o:(t.method="throw",t.arg=new TypeError("iterator result is not an object"),t.delegate=null,u)}function M(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(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function w(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(M,this),this.reset(!0)}function I(e){if(e){var t=e[i];if(t)return t.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var n=-1,o=function t(){for(;++n2&&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:yt.enabledElementByUID(e)}var E={UINT_16_ARRAY:0,FLOAT_32_ARRAY:1},w=E.UINT_16_ARRAY,I=E.FLOAT_32_ARRAY;function S(e,t,n){var a,o=Tt("segmentation").configuration;switch(o.arrayType){case w: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,n,a){e[t][n]=a}function o(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)},set:function(e,t,n){var o=y.cornerstone.getEnabledElement(e);o.image&&a(o.image.imageId,t,n)},clear:function(e){var t=y.cornerstone.getEnabledElement(e);t.image&&o(t.image.imageId)},getImageIdToolState:n,addImageIdToolState:t,setImageIdToolState:a,clearImageIdToolState:o,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){var a=P(e);n.uuid=n.uuid||"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,(function(e){var t=16*Math.random()|0;return("x"===e?t:3&t|8).toString(16)})),a.add(e,t,n),C(e,b.MEASUREMENT_ADDED,{toolName:t,toolType:t,element:e,measurementData:n})}function O(e,t){return P(e).get(e,t)}function L(e,t,n){var a=P(e).get(e,t);if(a&&a.data&&a.data.length){for(var o=-1,i=0;i0&&void 0!==arguments[0]?arguments[0]:"".concat("cornerstoneTools",":*");return R.a.enable(e)},B=function(){return R.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=Tt("segmentation"),a=n.configuration,o=O(e,"stack"),i=o.data[0],r=i.imageIds[0],s=V.series[r];if(s){var l=s.activeLabelmapIndex,c=s.labelmaps3D[l];switch(t){case"increase":c.activeSegmentIndex++,c.activeSegmentIndex>a.segmentsPerLabelmap&&(c.activeSegmentIndex=1);break;case"decrease":c.activeSegmentIndex--,c.activeSegmentIndex<=0&&(c.activeSegmentIndex=a.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=E.UINT_16_ARRAY,K=E.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=Tt("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,J()(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:E()};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,J()(e))}function y(e){h[e]=e,o.apply(void 0,J()(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?we(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 we(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=Tt("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]:0,s=Tt("segmentation"),l=s.configuration,c=V.series[e];c||(V.series[e]={activeLabelmapIndex:n,labelmaps3D:[]},c=V.series[e]),c.labelmaps3D[n]={buffer:t,labelmaps2D:[],metadata:a,activeSegmentIndex:1,colorLUTIndex:r,segmentsHidden:[],undo:[],redo:[]};for(var u=c.labelmaps3D[n].labelmaps2D,d=t.byteLength/o,h=0;h=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=Tt("segmentation"),a=n.configuration,o=a.segmentsPerLabelmap;t?($e(t,o),t.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."))}function Je(){for(var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:255,t=[],n=0;n=360&&(Qe-=360),Qe}var tt=.6;function nt(){(tt+=.07)>.82&&(tt=.3+(tt-.82));return tt}function at(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 ot=N("store:modules:segmentationModule:getBrushColor");var it={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:E.UINT_16_ARRAY},rt=N("util:segmentation:labelmap3DHistory");function st(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],r=i.imageIds[0],s=V.series[r];if(s){var l=s.activeLabelmapIndex,c=s.labelmaps3D[l],u=c.activeSegmentIndex;o=V.colorLutTables[c.colorLUTIndex][u]}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 )")}ot.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"),s=r.data[0],l=s.imageIds[0],c=V.series[l];if(c||(V.series[l]={labelmapIndex:t,labelmaps3D:[]},c=V.series[l]),!c.labelmaps3D[t]){var u=i.getEnabledElement(o),d=u.image,h=d.rows,v=d.columns,g=s.imageIds.length,f=h*v*g;S(c,t,f)}var m=c.labelmaps3D[t];m.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,c=s.data[0].imageIds[0];Re(c,t,n,a,l,o,i),Oe(r,n)}},labelmap3DByFirstImageId:Re,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=Tt("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=Q(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"),i=o.data[0],r=a.getEnabledElement(n),s=r.image,l=s.rows,c=s.columns,u=i.imageIds.length,d=l*c*u,h=i.imageIds[0],v=V.series[h];v?(v.activeLabelmapIndex=t,v.labelmaps3D[t]||S(v,t,d)):(V.series[h]={activeLabelmapIndex:t,labelmaps3D:[]},S(v=V.series[h],t,d)),a.updateImage(n)}},radius:function(e){var t=Tt("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();st(n,i,1),o.push(i),y.cornerstone.updateImage(e)}else rt.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();st(n,i,2),a.push(i),y.cornerstone.updateImage(e)}else rt.warn("No redos left.")}}},ct={activeManipulators:{}};function ut(e){var t=y.cornerstone.getEnabledElement(e).uuid;delete ct.activeManipulators[t]}function dt(e){var t=ct.activeManipulators,n=t[e];"function"==typeof n&&n(),delete t[e]}function ht(e){ut(e.detail.element)}var vt={setters:{addActiveManipulatorForElement:function(e,t){var n=y.cornerstone.getEnabledElement(e).uuid;ct.activeManipulators[n]=t},removeActiveManipulatorForElement:ut,cancelActiveManipulatorsForElement:function(e){dt(y.cornerstone.getEnabledElement(e).uuid)},cancelActiveManipulators:function(){var e=ct.activeManipulators;Object.keys(e).forEach((function(e){return dt(e)}))}},state:ct,enabledElementCallback:function(e){var t=y.cornerstone.EVENTS.NEW_IMAGE;e.removeEventListener(t,ht),e.addEventListener(t,ht)},removeEnabledElementCallback:function(e){var t=y.cornerstone.EVENTS.NEW_IMAGE;e.removeEventListener(t,ht),ut(e)}},gt={iconSize:16,viewBox:{x:16,y:16},mousePoint:{x:8,y:8},mousePointerGroupString:'\n \n \n '},ft={configuration:gt,getters:{defaultOptions:function(){return gt}},setters:{defaultOptions:function(e){Object.assign(gt,e)}}},mt={configuration:{mouseEnabled:!0,touchEnabled:!0,globalToolSyncEnabled:!1,showSVGCursors:!1,autoResizeViewports:!0,lineDash:[4,4]}},pt=(N("store:modules:storeLogger"),{globalTools:{},globalToolChangeHistory:[],enabledElements:[],tools:[],isToolLocked:!1,activeMultiPartTool:null,mousePositionImage:{},clickProximity:6,touchProximity:10,handleRadius:6,deleteIfHandleOutsideImage:!0,preventHandleOutsideImage:!1,preventTextBoxOutsideDisplayedArea:!1,handleTouchOffset:{x:0,y:-57},svgCursorUrl:null}),yt={mouseTools:function(){return pt.tools.filter((function(e){return e.supportedInteractionTypes.includes("Mouse")}))},touchTools:function(){return pt.tools.filter((function(e){return e.supportedInteractionTypes.includes("Touch")}))},enabledElementByUID:function(e){return pt.enabledElements.find((function(t){return y.cornerstone.getEnabledElement(t).uuid===e}))}},xt={segmentation:lt,cursor:ft,globalConfiguration:mt,manipulatorState:vt};function Tt(e){return xt[e]}var bt={modules:xt,state:pt,getters:yt},Ct=function(e,t){return pt.tools.find((function(n){return n.element===e&&n.name===t}))},Mt=xt.globalConfiguration;function Et(e,t){if(Mt.configuration.showSVGCursors){var n=t.getIconWithPointerSVG(),a=t.mousePoint,o=window.URL.createObjectURL(n);e.style.cursor="url('".concat(o,"') ").concat(a,", auto"),pt.svgCursorUrl=o}}function wt(e){Mt.configuration.showSVGCursors&&It(e,"none")}function It(e,t){pt.svgCursorUrl&&window.URL.revokeObjectURL(pt.svgCursorUrl),pt.svgCursorUrl=null,e.style.cursor=t}var St=Tt("globalConfiguration"),kt=N("store:setToolMode"),_t=function(e,t,n,a){void 0===a&&Array.isArray(n)&&(a=n,n=null);var o=Ct(e,t);o&&(function(e,t,n,a){t.supportedInteractionTypes.forEach((function(o){if(void 0===a||a.includes(o)){var i=Vt[o];i?i(t,e,n):kt.warn("Unable to resolve input conflicts for type %s",o)}})),bt.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||(kt.log("Setting tool %s's to PASSIVE",t.name),Ht(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})),St.configuration.showSVGCursors&&o.supportedInteractionTypes.includes("Mouse")&&function(e,t,n){var a;a="number"==typeof t?[t]:t.mouseButtonMask;a.includes(1)&&(n.svgCursor?Et(n.element,n.svgCursor):n.hideDefaultCursor?wt(e):function(e){It(e,"initial")}(e))}(e,n,o)),Ut("active",null,e,t,n)};var Pt=function(e,t,n){Bt("active",e,t,n),bt.state.enabledElements.forEach((function(a){_t(a,e,t,n)}))},Dt=Ut.bind(null,"disabled",null),Ot=Nt.bind(null,"disabled",null),Lt=Ut.bind(null,"enabled",null),At=Nt.bind(null,"enabled",null),Ht=Ut.bind(null,"passive",b.TOOL_DEACTIVATED),Rt=Nt.bind(null,"passive",b.TOOL_DEACTIVATED);function Ut(e,t,n,a,o){var i,r,s=Ct(n,a);s?(o=qt(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,toolType:a,type:t})):kt.warn('Unable to find tool "%s" for enabledElement',a)}function Nt(e,t,n,a){Bt(e,n,a),bt.state.enabledElements.forEach((function(o){Ut(e,t,o,n,a)}))}function Ft(e,t,n){var a="is".concat(e,"Active"),o=bt.state.tools.find((function(e){return e.element===n&&"active"===e.mode&&!0===e.options[a]}));o&&(kt.log("Setting tool %s's %s to false",o.name,a),o.options[a]=!1)}function Bt(e,t,n,a){if(St.configuration.globalToolSyncEnabled){var o={mode:e,args:[t,n]};a&&o.push(a),bt.state.globalToolChangeHistory.push(o);bt.state.globalToolChangeHistory.length>50&&bt.state.globalToolChangeHistory.shift();var i=bt.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=bt.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=qt(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(bt.state.globalTools).forEach((function(e){var t=bt.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 kt.warn("setToolMode call for tool not available globally: ".concat(t))}}var Vt={Mouse:function(e,t,n){var a=qt(n).mouseButtonMask;if(Array.isArray(a)&&a.length>0){var o=bt.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:Ft.bind(void 0,"MouseWheel"),Touch:function(e,t){var n=bt.state.tools.find((function(e){return e.element===t&&"active"===e.mode&&!0===e.options.isTouchActive})),a=bt.state.tools.find((function(e){return e.element===t&&"active"===e.mode&&!0===e.options.isMultiTouchActive&&1===e.configuration.touchPointers}));n&&(kt.log("Setting tool %s's isTouchActive to false",n.name),n.options.isTouchActive=!1),a&&(kt.log("Setting tool %s's isTouchActive to false",a.name),a.options.isMultiTouchActive=!1)},TouchPinch:Ft.bind(void 0,"TouchPinch"),TouchRotate:Ft.bind(void 0,"TouchRotate"),DoubleTap:Ft.bind(void 0,"DoubleTap"),MultiTouch:function(e,t){var n,a=bt.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=bt.state.tools.find((function(e){return e.element===t&&"active"===e.mode&&!0===e.options.isTouchActive}))),a&&(kt.log("Setting tool %s's isMultiTouchActive to false",a.name),a.options.isMultiTouchActive=!1),n&&(kt.log("Setting tool %s's isTouchActive to false",n.name),n.options.isTouchActive=!1)}};function qt(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 jt={passiveCallback:function(e){Dt(e,this.name)},enabledCallback:function(e){_t(e,this.name)}};var zt={passiveCallback:function(e){Dt(e,this.name)},activeCallback:function(e){Lt(e,this.name)}},Wt=function(e,t){e.save(),t(e),e.restore()},Gt=1,Yt=2;var Xt={setToolWidth:function(e){Gt=e},getToolWidth:function(){return Gt},setActiveWidth:function(e){Yt=e},getActiveWidth:function(){return Yt}},Kt=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&&Xt.getToolWidth()||e.lineWidth,r&&e.setLineDash(r),n(e),i&&(e.fillStyle=i,e.fill()),l&&e.stroke(),r&&e.setLineDash([])};function Zt(e,t,n,a,o){var i=arguments.length>5&&void 0!==arguments[5]?arguments[5]:"pixel";Kt(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 $t=function(e,t,n,a,o){var i=arguments.length>5&&void 0!==arguments[5]?arguments[5]:"pixel";Kt(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)}))}))},Jt=function(e,t,n,a,o,i){var r=Math.atan2(n.y-t.y,n.x-t.x),s={color:a,lineWidth:o};i&&(s.lineDash=i),Zt(e,void 0,t,n,s,"canvas"),s={color:a,lineWidth:o,fillStyle:a};var l=[{x:n.x-10*Math.cos(r-Math.PI/7),y:n.y-10*Math.sin(r-Math.PI/7)},{x:n.x-10*Math.cos(r+Math.PI/7),y:n.y-10*Math.sin(r+Math.PI/7)},n];$t(e,void 0,n,l,s,"canvas")},Qt=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)),Kt(e,o,(function(e){e.arc(n.x,n.y,a,0,2*Math.PI)}))};function en(e){var t=y.cornerstoneMath;if(e instanceof t.Vector3)return e;var n=Object.keys(e);return n.includes("x")&&n.includes("y")&&n.includes("z")?new t.Vector3(e.x,e.y,e.z):new t.Vector3(e[0],e[1],e[2])}function tn(e,t){var n=en(t.rowCosines),a=en(t.columnCosines),o=en(t.imagePositionPatient),i=e.clone().sub(o);return{x:n.dot(i)/t.columnPixelSpacing,y:a.dot(i)/t.rowPixelSpacing}}function nn(e,t){var n=en(t.rowCosines),a=en(t.columnCosines),o=en(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 an(e,t){var n=en(e.rowCosines),a=en(e.columnCosines),o=en(e.imagePositionPatient),i=en(t.rowCosines),r=en(t.columnCosines),s=en(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=nn({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=nn({x:0,y:0},e),n=nn({x:e.columns,y:0},e),a=nn({x:0,y:e.rows},e),o=nn({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 on(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 rn=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=on(n,v,-h),a=on(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=on(x,v,h));var T=h*Math.PI/180;Kt(e,o,(function(e){e.ellipse(x.x,x.y,g/2,f/2,T,0,2*Math.PI),e.closePath()}))},sn="white",ln="greenyellow",cn="transparent";var un={setFillColor:function(e){cn=e},getFillColor:function(){return cn},setToolColor:function(e){sn=e},getToolColor:function(){return sn},setActiveColor:function(e){ln=e},getActiveColor:function(){return ln},getColorIfActive:function(e){return e.color?e.color:e.active?ln:sn}},dn=function(e,t,n){var a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{},o=t.element,i=un.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";if(a.hideHandlesIfMoving&&s.moving)return"continue";var l={lineWidth:s.active?Xt.getActiveWidth():Xt.getToolWidth(),fillStyle:a.fill};a.lineDash&&(l.lineDash=a.lineDash),Kt(e,l,(function(e){var t=y.cornerstone.pixelToCanvas(o,s),n=s.radius||a.handleRadius||pt.handleRadius;e.arc(t.x,t.y,n,0,2*Math.PI)}))},l=0;l4&&void 0!==arguments[4]?arguments[4]:"pixel";Kt(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)}))}))},vn=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}];Zt(a,void 0,r,y.cornerstoneMath.point.findClosestPoint(s,r),{color:o,lineWidth:i,lineDash:[2,3]},"canvas")},gn={fontSize:15,fontFamily:"Arial",backgroundColor:"transparent"};function fn(e){if("string"!=typeof e)throw new Error("Font family must be a valid string");gn.fontFamily=e}function mn(e){if("number"!=typeof e||isNaN(e)||!isFinite(e))throw new Error("Font size must be a valid number");gn.fontSize=parseFloat(e)}var pn={setFont:function(e){var t=e.split("px ");2===t.length&&(mn(parseFloat(t[0])),fn(t[1]))},getFont:function(){return"".concat(gn.fontSize,"px ").concat(gn.fontFamily)},setFontSize:mn,getFontSize:function(){return gn.fontSize},setFontFamily:fn,getFontFamily:function(){return gn.fontFamily},setBackgroundColor:function(e){gn.backgroundColor=e},getBackgroundColor:function(){return gn.backgroundColor}},yn=function(e,t,n,a,o){var i=pn.getFontSize();e.font=pn.getFont(),e.textBaseline="top",e.fillStyle=a,n.forEach((function(n,a){e.fillText(n,t.left+o,t.top+o+a*(i+o))}))},xn=function(e,t,n){e.fillStyle=n,e.fillRect(t.left,t.top,t.width,t.height)};function Tn(e,t,n){var a=pn.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 bn=function(e,t,n,a,o){var i=arguments.length>5&&void 0!==arguments[5]?arguments[5]:{};"[object Array]"!==Object.prototype.toString.call(t)&&(t=[t]);var r=5,s=pn.getFontSize(),l=pn.getBackgroundColor(),c=0;t.forEach((function(t){var n=Tn(e,t,r);c=Math.max(c,n)}));var u={width:c,height:r+t.length*(s+r)};return Wt(e,(function(e){e.strokeStyle=o,i.centering&&(!0===i.centering.x&&(n-=u.width/2),!0===i.centering.y&&(a-=u.height/2)),u.left=n,u.top=a,"function"==typeof i.displacer&&i.displacer(u),xn(e,u,l),yn(e,u,t,o,r)})),u};function Cn(e,t,n){return Math.min(Math.max(t,e),n)}function Mn(e,t){var n=t.left||0,a=t.top||0;e.x=Cn(e.x,n,n+t.width),e.y=Cn(e.y,a,a+t.height)}var En=function(e,t,n,a,o,i){i-oi&&(e[t]-=a-i)};function wn(e,t){var n=y.cornerstone,a=n.pixelToCanvas,o=n.canvasToPixel,i=n.getViewport,r=n.getEnabledElement,s=n.getDisplayedArea,l=o(e,{x:t.left,y:t.top}),c=function(e,t){var n=function(t){return y.cornerstone.canvasToPixel(e,t)},a=t.top,o=t.left,i=t.width,r=t.height,s=[n({x:o,y:a}),n({x:o+i,y:a}),n({x:o,y:a+r}),n({x:o+i,y:a+r})],l=s.map((function(e){return e.x})),c=s.map((function(e){return e.y}));return{minX:Math.min.apply(Math,J()(l)),minY:Math.min.apply(Math,J()(c)),maxX:Math.max.apply(Math,J()(l)),maxY:Math.max.apply(Math,J()(c))}}(e,t),u=c.minX,d=c.minY,h=c.maxX,v=c.maxY,g=i(e),f=s(r(e).image,g),m=g.displayedArea?g.displayedArea:f,p=m.tlhc,x=m.brhc,T=p.y-1,b=p.x-1,C=x.y,M=x.x;En(l,"y",d,v,T,C),En(l,"x",u,h,b,M);var E=a(e,l);t.top=E.y,t.left=E.x}var In=Cn,Sn=function(e,t,n,a,o,i,r,s,l,c){var u=y.cornerstone.pixelToCanvas,d=u(t,n);l&&(d.x+=l);var h={centering:{x:!1,y:c}};if(pt.preventTextBoxOutsideDisplayedArea&&(h.displacer=function(e){return wn(t,e)}),n.boundingBox=bn(e,a,d.x,d.y,r,h),n.hasMoved){var v=i(o).map((function(e){return u(t,e)}));vn(v,d,n.boundingBox,e,r,s)}},kn=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=on(n,g,-v),a=on(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=on(n,g,v),a=on(a,g,v),p=on(p,g,v),x=on(x,g,v)),Kt(e,o,(function(e){e.moveTo(n.x,n.y),e.lineTo(p.x,p.y),e.lineTo(a.x,a.y),e.lineTo(x.x,x.y),e.lineTo(n.x,n.y)}))},_n=function(e){var t=e.getContext("2d");return t.setTransform(1,0,0,1,0,0),t},Pn=function(e,t){return void 0===e?t:e},Dn=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};t.shadow&&(e.shadowColor=Pn(t.shadowColor,"#000000"),e.shadowBlur=Pn(t.shadowBlur,0),e.shadowOffsetX=Pn(t.shadowOffsetX,1),e.shadowOffsetY=Pn(t.shadowOffsetY,1))},On=function(e){return 0===Object.keys(e).length&&e.constructor===Object},Ln=Tt("segmentation"),An=Ln.getters,Hn=Ln.setters;function Rn(){this.handles={start:{},end:{}}}function Un(e){var t=e.detail.element,n=e.detail.currentPoints.image;return On(this.handles.start)?this.handles.start=n:(this.handles.end=n,this._applyStrategy(e)),y.cornerstone.updateImage(t),!0}function Nn(e){var t=e.detail,n=t.element,a=t.currentPoints.image;this.handles.end=a,y.cornerstone.updateImage(n)}function Fn(e){e.detail.handles=this.handles;var t=e.detail.element,n=An.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)};Hn.pushState(this.element,[c]),Hn.updateSegmentsOnLabelmap2D(a),y.cornerstone.updateImage(t),this._resetHandles()}var Bn={postTouchStartCallback:Un,postMouseDownCallback:Un,mouseClickCallback:Un,touchDragCallback:Nn,mouseDragCallback:Nn,mouseMoveCallback:Nn,touchEndCallback:Fn,mouseUpCallback:Fn,initializeMixin:Rn,renderToolData:function(e){var t=this,n=e.detail,a=n.element,o=An.brushColor(a,!0),i=_n(n.canvasContext.canvas),r=y.cornerstoneMath.point.distance;Wt(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);Qt(e,a,t.handles.start,s,{color:o})}))},_resetHandles:Rn,_applyStrategy:Fn},Vn=N("tools:ScissorsTool"),qn=Tt("segmentation"),jn=qn.getters,zn=qn.setters;function Wn(e){var t=e.detail.element,n=e.detail.currentPoints.image,a=this.handles.points;if(!a.length)return Vn.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 Gn(e){var t=e.detail,n=e.detail.element;this._addPoint(t),y.cornerstone.updateImage(n)}function Yn(e){var t=this.handles.points,n=e.detail.element,a=jn.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)};zn.pushState(this.element,[u]),zn.updateSegmentsOnLabelmap2D(o),y.cornerstone.updateImage(n),this._resetHandles()}function Xn(){this.handles={points:[]},this.currentHandle=0}var Kn={postTouchStartCallback:Wn,postMouseDownCallback:Wn,mouseClickCallback:Wn,touchDragCallback:Gn,mouseDragCallback:Gn,mouseMoveCallback:Gn,touchEndCallback:Yn,mouseUpCallback:Yn,initializeMixin:Xn,renderToolData:function(e){var t=e.detail,n=t.element,a=jn.brushColor(n,!0),o=_n(t.canvasContext.canvas),i=this.handles.points;i.length<2||Wt(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()}}}}},ra=function(e){return e&&"object"===T()(e)&&"[object RegExp]"!==Object.prototype.toString.call(e)&&"[object Date]"!==Object.prototype.toString.call(e)},sa=function(e,t){var n;return t&&!0===t.clone&&ra(e)?ua((n=e,Array.isArray(n)?[]:{}),e,t):e},la=function(e,t,n){var a=e.slice();return t.forEach((function(t,o){void 0===a[o]?a[o]=sa(t,n):ra(t)?a[o]=ua(e[o],t,n):-1===e.indexOf(t)&&a.push(sa(t,n))})),a},ca=function(e,t,n){var a={};return ra(e)&&Object.keys(e).forEach((function(t){a[t]=sa(e[t],n)})),Object.keys(t).forEach((function(o){ra(t[o])&&e[o]?a[o]=ua(e[o],t[o],n):a[o]=sa(t[o],n)})),a},ua=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:la},i=o.arrayMerge||la;if(a)return Array.isArray(e)?i(e,t,n):sa(t,n);var r=ca(e,t,n);return Object.getPrototypeOf(e)!==Object.prototype&&Object.setPrototypeOf(r,Object.getPrototypeOf(e)),r},da=ua,ha=N("tools:base:BaseTool"),va=Tt("globalConfiguration"),ga=function(){function e(t,n){r()(this,e),this.initialConfiguration=da(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(wa()(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=Sa.configuration,o=Sa.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=Sa.configuration,n=Sa.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;Ia(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=Sa.configuration,t=Sa.setters,n=e.radius,a=Math.floor(1.2*n);a===n&&(a+=1),t.radius(a)}},{key:"decreaseBrushSize",value:function(){var e=Sa.configuration,t=Sa.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}(ga),_a=function(e){return e.filter((function(e){return!(e.isMultiPartTool||e instanceof fo||e instanceof ka)}))};function Pa(e,t){var n,a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"mouse";if("touch"===a?n=(n=Ma(e,yt.touchTools())).filter((function(e){return e.options.isTouchActive})):(n=(n=Ma(e,yt.mouseTools())).filter((function(e){return Array.isArray(e.options.mouseButtonMask)&&t&&e.options.mouseButtonMask.includes(t)&&e.options.isMouseActive})),pt.isMultiPartToolActive&&(n=_a(n))),0!==n.length)return n[0]}var Da=N("manipulators:moveAllHandles"),Oa=Tt("manipulatorState"),La={mouse:[b.MOUSE_DRAG],touch:[b.TOUCH_DRAG]},Aa={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=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:pt.deleteIfHandleOutsideImage,preventHandleOutsideImage:pt.preventHandleOutsideImage},i);var l=Ra.bind(this,t,n,i,r),c=function e(a){Na(t,n,i,r,{dragHandler:l,upOrEndHandler:e},a,s)};Oa.setters.addActiveManipulatorForElement(o,Ua.bind(null,n,i,r,{dragHandler:l,upOrEndHandler:c},o,s)),n.active=!0,pt.isToolLocked=!0,La[r].forEach((function(e){o.addEventListener(e,l)})),Aa[r].forEach((function(e){o.addEventListener(e,c)}))};function Ra(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;v1&&void 0!==arguments[1]?arguments[1]:{},n=arguments.length>2?arguments[2]:void 0,a=arguments.length>3?arguments[3]:void 0,o=a.dragHandler,i=a.upOrEndHandler,r=arguments.length>4?arguments[4]:void 0,s=arguments.length>5?arguments[5]:void 0;Fa(e,t,n,{dragHandler:o,upOrEndHandler:i},r,s,!1)}function Na(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.dragHandler,r=o.upOrEndHandler,s=arguments.length>5?arguments[5]:void 0,l=arguments.length>6?arguments[6]:void 0,c=s.detail,u=c.element;Oa.setters.removeActiveManipulatorForElement(u),n.deleteIfHandleOutsideImage&&ba(c,t.handles)&&L(u,e,t),Fa(t,n,a,{dragHandler:i,upOrEndHandler:r},u,l,!0)}function Fa(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=arguments.length>2?arguments[2]:void 0,a=arguments.length>3?arguments[3]:void 0,o=a.dragHandler,i=a.upOrEndHandler,r=arguments.length>4?arguments[4]:void 0,s=arguments.length>5?arguments[5]:void 0,l=!(arguments.length>6&&void 0!==arguments[6])||arguments[6];e.active=!1,e.invalidated=!0,pt.isToolLocked=!1,La[n].forEach((function(e){r.removeEventListener(e,o)})),Aa[n].forEach((function(e){r.removeEventListener(e,i)})),"function"==typeof t.doneMovingCallback&&(Da.warn("`options.doneMovingCallback` has been depricated. See https://github.com/cornerstonejs/cornerstoneTools/pull/915 for details."),t.doneMovingCallback(l)),"function"==typeof s&&s(l),y.cornerstone.updateImage(r)}var Ba=N("manipulators:moveHandle"),Va=Tt("manipulatorState"),qa={value:!1},ja={mouse:[b.MOUSE_DRAG],touch:[b.TOUCH_DRAG]},za={mouse:[b.MOUSE_UP,b.MOUSE_CLICK],touch:[b.TOUCH_END,b.TOUCH_DRAG_END,b.TOUCH_PINCH,b.TOUCH_PRESS,b.TAP]},Wa=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:pt.deleteIfHandleOutsideImage,preventHandleOutsideImage:pt.preventHandleOutsideImage},o);var s=e.element,l=Ga.bind(this,t,n,a,o,i),c=function s(){Xa(t,e,n,a,o,i,{dragHandler:l,upOrEndHandler:s},r)};if(Va.setters.addActiveManipulatorForElement(s,Ya.bind(null,t,e,n,a,o,i,{dragHandler:l,upOrEndHandler:c},r)),a.active=!0,a.moving=!0,n.active=!0,pt.isToolLocked=!0,ja[i].forEach((function(e){s.addEventListener(e,l)})),za[i].forEach((function(e){s.addEventListener(e,c)})),"touch"===i){qa.value=!0;var u=y.cornerstone.getEnabledElement(s),d=Ca(e,i);Za(a,qa,u,d)}};function Ga(e,t,n,a,o,i){var r=i.detail,s=r.image,l=r.element,c=r.buttons,u=Ca(i.detail,o);qa.value=!1,n.active=!0,n.hasMoved=!0,n.x=u.x,n.y=u.y,t.invalidated=!0,a.preventHandleOutsideImage&&Mn(n,s),y.cornerstone.updateImage(l);var d=Pa(l,c,o);d instanceof fo&&d.updateCachedStats(s,l,t),C(l,b.MEASUREMENT_MODIFIED,{toolName:e,toolType:e,element:l,measurementData:t})}function Ya(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;Ka(e,t,n,a,o,i,{dragHandler:s,upOrEndHandler:l},c,!1)}function Xa(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=t.element;Va.setters.removeActiveManipulatorForElement(u),Ka(e,t,n,a,o,i,{dragHandler:s,upOrEndHandler:l},c,!0)}function Ka(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&&void 0!==arguments[8])||arguments[8],d=t.element;a.active=!1,a.moving=!1,n.active=!1,n.invalidated=!0,qa.value=!1,pt.isToolLocked=!1,ja[i].forEach((function(e){d.removeEventListener(e,s)})),za[i].forEach((function(e){d.removeEventListener(e,l)})),o.deleteIfHandleOutsideImage&&ba(t,n.handles)&&L(d,e,n),"function"==typeof o.doneMovingCallback&&(Ba.warn("`options.doneMovingCallback` has been depricated. See https://github.com/cornerstonejs/cornerstoneTools/pull/915 for details."),o.doneMovingCallback(u)),"function"==typeof c&&c(u),y.cornerstone.updateImage(d)}function Za(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:pt.deleteIfHandleOutsideImage,preventHandleOutsideImage:pt.preventHandleOutsideImage},o)).hasMoved=!1;var s=e.element;function l(e){no(t,n,a,o,i,e)}function c(e){oo(t,n,a,o,i,{moveHandler:l,moveEndHandler:c},e,r)}n.active=!0,a.moving=!0,a.active=!0,pt.isToolLocked=!0,Qa[i].forEach((function(e){s.addEventListener(e,l)})),s.addEventListener(b.TOUCH_START,ro),eo[i].forEach((function(e){s.addEventListener(e,c)})),Ja.setters.addActiveManipulatorForElement(s,io.bind(null,n,a,o,i,{moveHandler:l,moveEndHandler:c},s,r))};function no(e,t,n,a,o,i){var r=i.detail,s=r.image,l=r.element,c=r.buttons,u=Ca(i.detail,o);a.hasMoved=!0,t.invalidated=!0,n.active=!0,n.x=u.x,n.y=u.y,a&&a.preventHandleOutsideImage&&Mn(n,s),y.cornerstone.updateImage(l);var d=Pa(l,c,o);d instanceof fo&&d.updateCachedStats(s,l,t),C(l,b.MEASUREMENT_MODIFIED,{toolName:e,toolType:e,element:l,measurementData:t})}function ao(e,t,n,a,o){var i=a.moveHandler,r=a.moveEndHandler,s=!(arguments.length>5&&void 0!==arguments[5])||arguments[5];Qa[e].forEach((function(e){n.removeEventListener(e,i)})),eo[e].forEach((function(e){n.removeEventListener(e,r)})),n.removeEventListener(b.TOUCH_START,ro),pt.isToolLocked=!1,"function"==typeof o&&o(s),"function"==typeof t.doneMovingCallback&&($a.warn("`options.doneMovingCallback` has been depricated. See https://github.com/cornerstonejs/cornerstoneTools/pull/915 for details."),t.doneMovingCallback(s)),y.cornerstone.updateImage(n)}function oo(e,t,n,a,o,i,r,s){var l=i.moveHandler,c=i.moveEndHandler,u=r.detail,d=u.element,h=!0;if(!1!==a.hasMoved){var v=Ca(u,o);t.active=!1,t.invalidated=!0,n.active=!1,n.moving=!1,n.x=v.x,n.y=v.y,Ja.setters.removeActiveManipulatorForElement(d),a.preventHandleOutsideImage&&Mn(n,r.detail.image),a.deleteIfHandleOutsideImage&&ba(r.detail,t.handles)&&(t.cancelled=!0,h=!1,L(d,e,t)),ao(o,a,d,{moveHandler:l,moveEndHandler:c},s,h)}}function io(e,t,n,a,o,i,r){var s=o.moveHandler,l=o.moveEndHandler;e.active=!1,e.invalidated=!0,t.active=!1,ao(a,n,i,{moveHandler:s,moveEndHandler:l},r,!1)}function ro(e){return e.stopImmediatePropagation(),!1}function so(e,t){var n=pt.clickProximity,a=pt.touchProximity,o=pt.tools.find((function(e){return e.name===t}));return o&&o.configuration&&(n=o.configuration.clickProximity||n,a=o.configuration.touchProximity||a),"mouse"===e?n:a}function lo(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function co(e){for(var t=1;t4&&void 0!==arguments[4]?arguments[4]:"mouse",i=0;i3&&void 0!==arguments[3]?arguments[3]:"mouse";n.active=!0,pt.isToolLocked=!0,Ha(e.detail,t.name,n,null,t.options,a,(function(){n.active=!1,pt.isToolLocked=!1})),e.stopImmediatePropagation(),e.stopPropagation(),e.preventDefault()},go=N("baseAnnotationTool"),fo=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";uo(e,this,t,n,a)}},{key:"toolSelectedCallback",value:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"mouse";vo(e,this,t,n)}},{key:"updateCachedStats",value:function(e,t,n){go.warn("updateCachedStats not implemented for ".concat(this.name,"."))}}]),t}(ga),mo=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)},po=function(e,t){var n=Math.pow(10,t);return Math.round(e*n)/n},yo=xt.cursor,xo=function(){function e(t,n){r()(this,e),this.iconGroupString=t,this.options=Object.assign({},yo.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||un.getActiveColor(),a=t.toolColor||un.getToolColor(),o=t.fillColor||un.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}(),To=new xo('',{viewBox:{x:1792,y:1792}}),bo=new xo('\n \n ',{viewBox:{x:24,y:24}}),Co=new xo('\n \n \n \n \n \n \n ',{viewBox:{x:48,y:48}}),Mo=new xo('\n \n \n \n \n ',{viewBox:{x:32,y:32}}),Eo=new xo('',{viewBox:{x:32,y:32}}),wo=new xo('',{viewBox:{x:32,y:32}}),Io=new xo('\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}}),So=new xo('\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}}),ko=new xo('\n \n ',{viewBox:{x:24,y:24}}),_o=new xo('',{viewBox:{x:1792,y:1792}}),Po=new xo('',{viewBox:{x:1792,y:1792}}),Do=new xo('',{viewBox:{x:1792,y:1792}}),Oo=new xo('',{viewBox:{x:1792,y:1792}}),Lo=new xo('',{viewBox:{x:2048,y:1792}}),Ao=new xo('',{viewBox:{x:512,y:512}}),Ho=new xo('',{viewBox:{x:1792,y:1792}}),Ro=new xo('',{viewBox:{x:1792,y:1792}}),Uo=new xo('',{viewBox:{x:24,y:28}}),No=new xo('',{viewBox:{x:1792,y:1792}}),Fo=new xo('\n ',{viewBox:{x:18,y:18}}),Bo=new xo('\n ',{viewBox:{x:640,y:512}}),Vo={x:127,y:60},qo=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"ACTIVE_COLOR";return'')},jo=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"ACTIVE_COLOR";return'\n ')},zo='',Wo='',Go='',Yo=new xo("".concat(zo," ").concat(qo()),{viewBox:Vo}),Xo=new xo("".concat(zo," ").concat(jo()),{viewBox:Vo}),Ko=new xo("".concat(zo," ").concat(qo()),{viewBox:Vo}),Zo=new xo("".concat(zo," ").concat(jo()),{viewBox:Vo}),$o=new xo("".concat(Wo," ").concat(qo()),{viewBox:Vo}),Jo=new xo("".concat(Wo," ").concat(jo()),{viewBox:Vo}),Qo=new xo("".concat(Wo," ").concat(qo()),{viewBox:Vo}),ei=new xo("".concat(Wo," ").concat(jo()),{viewBox:Vo}),ti=new xo("".concat(Go," ").concat(qo()),{viewBox:Vo}),ni=new xo("".concat(Go," ").concat(jo()),{viewBox:Vo}),ai=new xo("".concat(Go," ").concat(qo()),{viewBox:Vo}),oi=new xo("".concat(Go," ").concat(jo()),{viewBox:Vo});function ii(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 ri=function(e){var t=T()(e);return null!==e&&("object"===t||"function"===t)};var si=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){return c=e,s=f(y,t),u?g(e):r}function p(e){var n=e-l;return void 0===l||n>=t||n<0||d&&e-c>=i}function y(){var e=Date.now();if(p(e))return x(e);s=f(y,function(e){var n=e-c,a=t-(e-l);return d?Math.min(a,i-n):a}(e))}function x(e){return s=void 0,h&&a?g(e):(a=o=void 0,r)}function T(){for(var e=Date.now(),n=p(e),i=arguments.length,c=new Array(i),u=0;u0&&void 0!==arguments[0]?arguments[0]:{};r()(this,t);var a={name:"Angle",supportedInteractionTypes:["Mouse","Touch"],svgCursor:To,configuration:{drawHandles:!0,drawHandlesOnHover:!1,hideHandlesIfMoving:!1,renderDashed:!1}};return(e=u()(this,h()(t).call(this,n,a))).preventNewMeasurement=!1,e.throttledUpdateCachedStats=li(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&&(mo(e,t.handles.start,t.handles.middle,n)<25||mo(e,t.handles.middle,t.handles.end,n)<25)}},{key:"updateCachedStats",value:function(e,t,n){var a=di(e,n.handles.middle,n.handles.start),o=di(e,n.handles.end,n.handles.middle),i=di(e,n.handles.end,n.handles.start),r=ui(a),s=ui(o),l=ui(i),c=Math.acos((Math.pow(r,2)+Math.pow(s,2)-Math.pow(l,2))/(2*r*s));c*=180/Math.PI,n.rAngle=po(c,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.hideHandlesIfMoving,l=o.renderDashed,c=O(e.currentTarget,this.name),u=Tt("globalConfiguration").configuration.lineDash;if(c)for(var d=_n(n.canvasContext.canvas),h=n.image,v=n.element,g=ii(h),f=g.rowPixelSpacing,m=g.colPixelSpacing,p=Xt.getToolWidth(),x=function(e){var o=c.data[e];if(!1===o.visible)return"continue";Wt(d,(function(e){Dn(e,t.configuration);var c=un.getColorIfActive(o),d=y.cornerstone.pixelToCanvas(n.element,o.handles.start),g=y.cornerstone.pixelToCanvas(n.element,o.handles.middle),x={color:c};l&&(x.lineDash=u),$t(e,n.element,o.handles.start,[o.handles.middle,o.handles.end],x);var T={color:c,handleRadius:i,drawHandlesIfActive:r,hideHandlesIfMoving:s};if(t.configuration.drawHandles&&dn(e,n,o.handles,T),!0===o.invalidated&&(o.rAngle?t.throttledUpdateCachedStats(h,v,o):t.updateCachedStats(h,v,o)),o.rAngle){var C,M=function(e,t,n){var a=t&&n?"":" (isotropic)";return e.rAngle.toString()+String.fromCharCode(parseInt("00B0",16))+a}(o,f,m);if(!o.handles.textBox.hasMoved){C={x:g.x,y:g.y};var E=Tn(e,M,5);g.x0&&void 0!==arguments[0]?arguments[0]:{};r()(this,t);var a={name:"ArrowAnnotate",supportedInteractionTypes:["Mouse","Touch"],configuration:{getTextCallback:vi,changeTextCallback:gi,drawHandles:!0,drawHandlesOnHover:!1,hideHandlesIfMoving:!1,arrowFirst:!0,renderDashed:!1,allowEmptyLabel:!1},svgCursor:bo};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&&mo(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=i.hideHandlesIfMoving,c=i.renderDashed,u=O(a,this.name);if(u){var d,h=e.detail.canvasContext.canvas,v=_n(h),g=Xt.getToolWidth();c&&(d=Tt("globalConfiguration").configuration.lineDash);for(var f=function(n){var i=u.data[n];if(!1===i.visible)return"continue";Wt(v,(function(n){Dn(n,t.configuration);var c=un.getColorIfActive(i),u=y.cornerstone.pixelToCanvas(a,i.handles.start),h=y.cornerstone.pixelToCanvas(a,i.handles.end);t.configuration.arrowFirst?Jt(n,h,u,c,g,d):Jt(n,u,h,c,g,d);var v={color:c,handleRadius:r,drawHandlesIfActive:s,hideHandlesIfMoving:l};t.configuration.drawHandles&&dn(n,e.detail,i.handles,v);var f=function(e){return e.text}(i);if(f&&""!==f){var m=Tn(n,f,5),x=pn.getFontSize()+10,T=Math.max(m,x)/2+5;if(h.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)},mi=function(e){var t=e.currentPoints.image,n=t.x,a=t.y;return{toolName:this.name,toolType:this.name,isCreating:!0,visible:!0,active:!0,invalidated:!0,handles:{start:fi(n,a,0),end:fi(n,a,1,{active:!0}),perpendicularStart:fi(n,a,2,{locked:!0}),perpendicularEnd:fi(n,a,3),textBox:fi(n-50,a-70,null,{highlight:!1,hasMoved:!0,active:!1,movesIndependently:!1,drawnIndependently:!0,allowedOutsideImage:!0,hasBoundingBox:!0})},longestDiameter:0,shortestDiameter:0}},pi=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(fa(r.textBox,n))return!0;var c=so(a,"Bidirectional");return!!pi(e,r,n,c)||l3&&void 0!==arguments[3]?arguments[3]:6,o=pa(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 _i(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 Pi(e,t){return{start:e,end:t}}function Di(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=Pi(i,r),f=Pi(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:_i(d,v,n,m),fixedPoint:n}}function Oi(e,t,n,a){var o=Di(t,n,a),i=o.columnPixelSpacing,r=o.rowPixelSpacing,s=o.distanceToFixed,l=_i(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=_i(n,a,i,s),u=_i(n,a,r,s),d=xi(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 Li(e,t){return e===t}function Ai(e,t){return Li(e,t)?-1:1}function Hi(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=Ai(s,c)*u,h=function(e,t,n){return Li(e,n)?t:n}(s,l,c)===l,v=h?"start":"end",g=h?"end":"start";return o={},Ta()(o,v,{x:n.start.x,y:n.start.y}),Ta()(o,g,{x:t.x+a.y*r*d,y:t.y+a.x*i*d*-1}),o}function Ri(e,t,n,a){var o=y.cornerstoneMath.lineSegment,i=Di(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!==_i(e,t,n.start,n.end)}(r,s,c))return!1;var d=xi(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=Ai(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=Hi(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 Ui=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?Oi(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?Oi(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||Ri(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||Ri(u,n,t,n.handles.perpendicularStart)||(t.currentPoints.image.x=n.handles.perpendicularEnd.x,t.currentPoints.image.y=n.handles.perpendicularEnd.y))},Ni=function(e,t,n){var a=e[n],o=t[n];e[n]=o,t[n]=a},Fi=function(e,t){Ni(e,t,"x"),Ni(e,t,"y"),Ni(e,t,"moving"),Ni(e,t,"hover"),Ni(e,t,"active"),Ni(e,t,"selected")};var Bi=function(e){var t,n=this,a=e.detail,o=a.element,i=so("mouse",this.name),r=function(e){t.invalidated=!0,ba(a,t.handles)&&L(o,n.name,t),e&&(e.moving=!1,e.selected=!0),Et(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=pa.apply(void 0,u);if(d)return o.removeEventListener(b.MOUSE_MOVE,n._moveCallback),o.removeEventListener(b.TOUCH_START,n._moveCallback),t.active=!0,Vi(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?(Fi(s,l),Fi(s,c),Fi(l,u),Object.values(r).find((function(e){return!0===e.moving}))):n}(a,t,d)).hasBoundingBox||wt(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):Ui(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=Pa(r,l,"mouse");u instanceof fo&&u.updateCachedStats(s,r,n);var d={toolName:t,toolType:t,element:r,measurementData:n};y.cornerstone.triggerEvent(r,b.MEASUREMENT_MODIFIED,d)};a.active=!0,a.moving=!0,pt.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,pt.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)})),ji(e),{v:!0}},u=0;ud){var f=d;d=g,g=f}return{longestDiameter:d.toFixed(1),shortestDiameter:g.toFixed(1)}}(n,ii(e)),o=a.longestDiameter,i=a.shortestDiameter;n.longestDiameter=o,n.shortestDiameter=i,n.invalidated=!1}}}]),t}(fo),$i=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=Ji(g.fractionalSeconds||0)+g.seconds+60*g.minutes+60*g.hours*60,m=Ji(d.fractionalSeconds||0)+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 Ji(e){return parseFloat(".".concat(e))}var Qi=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},er=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 ar=function(e){var t=e.toString().split(".");return t[0]=t[0].replace(/\B(?=(\d{3})+(?!\d))/g,","),t.join(".")},or=N("tools:annotation:CircleRoiTool"),ir=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:Eo,configuration:{renderDashed:!1,hideHandlesIfMoving:!1}};return(e=u()(this,h()(t).call(this,n,a))).throttledUpdateCachedStats=li(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}}};or.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||or.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=rr(c,d.showHounsfieldUnits),p="Mean: ".concat(ar(o.toFixed(2))," ").concat(m),y="Std Dev: ".concat(ar(i.toFixed(2))," ").concat(m);if(f){for(var x=" SUV: ",T="".concat(x).concat(ar(l.mean.toFixed(2))),b="".concat(x).concat(ar(l.stdDev.toFixed(2))),C=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:Mo,configuration:{drawHandles:!0,drawHandlesOnHover:!1,hideHandlesIfMoving:!1,renderDashed:!1}};return(e=u()(this,h()(t).call(this,n,a))).hasIncomplete=!1,e.throttledUpdateCachedStats=li(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){if(!1===t.visible)return!1;if(this.hasIncomplete)return!1;var a=mo(e,t.handles.start,t.handles.end,n)<25,o=mo(e,t.handles.start2,t.handles.end2,n)<25;return a||o}},{key:"updateCachedStats",value:function(e,t,n){var a=ii(e),o=a.rowPixelSpacing,i=a.colPixelSpacing,r=(Math.ceil(n.handles.start.x)-Math.ceil(n.handles.end.x))*(i||1),s=(Math.ceil(n.handles.start.y)-Math.ceil(n.handles.end.y))*(o||1),l=(Math.ceil(n.handles.start2.x)-Math.ceil(n.handles.end2.x))*(i||1),c=(Math.ceil(n.handles.start2.y)-Math.ceil(n.handles.end2.y))*(o||1),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=po(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=a.hideHandlesIfMoving,s=a.renderDashed,l=O(e.currentTarget,this.name);if(l)for(var c=_n(n.canvasContext.canvas),u=Xt.getToolWidth(),d=Tt("globalConfiguration").configuration.lineDash,h=pn.getFont(),v=e.detail.element,g=ii(y.cornerstone.getEnabledElement(v).image),f=g.rowPixelSpacing,m=g.colPixelSpacing,p=function(e){var a=l.data[e];if(!1===a.visible)return"continue";a.value||(a.value=t.textBoxText(a,f,m)),Wt(c,(function(e){Dn(e,t.configuration);var l=un.getColorIfActive(a),c={color:l};s&&(c.lineDash=d),Zt(e,n.element,a.handles.start,a.handles.end,c),a.complete&&Zt(e,n.element,a.handles.start2,a.handles.end2,c);var v={color:l,handleRadius:o,drawHandlesIfActive:i,hideHandlesIfMoving:r};t.configuration.drawHandles&&dn(e,n,a.handles,v),e.fillStyle=l;var g=a.value;if(!a.handles.textBox.hasMoved){var f={x:(a.handles.start.x+a.handles.end.x)/2,y:(a.handles.start.y+a.handles.end.y)/2-10};e.font=h,a.handles.textBox.x=f.x,a.handles.textBox.y=f.y}Sn(e,n.element,a.handles.textBox,g,a.handles,T,l,u,0,!0)}))},x=0;x0&&void 0!==arguments[0]?arguments[0]:{};r()(this,t);var a={name:"EllipticalRoi",supportedInteractionTypes:["Mouse","Touch"],configuration:{drawHandlesOnHover:!1,hideHandlesIfMoving:!1,renderDashed:!1},svgCursor:wo};return(e=u()(this,h()(t).call(this,n,a))).throttledUpdateCachedStats=li(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}}};ur.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||ur.warn("invalid parameters supplied to tool ".concat(this.name,"'s pointNearTool")),!o||!1===t.visible)return!1;if(pa(e,t.handles,n,6))return!0;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=Qi(l,n);return!(!Qi(c,n)||u)}},{key:"updateCachedStats",value:function(e,t,n){var a=(y.cornerstone.metaData.get("generalSeriesModule",e.imageId)||{}).modality,o=ii(e),i=function(e,t,n,a,o){var i,r=fr(n.start,n.end),s=y.cornerstone.getPixels(t,r.left,r.top,r.width,r.height),l=er(s,r);"PT"===a&&(i={mean:$i(e,l.mean,!0)||0,stdDev:$i(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=Xt.getToolWidth(),s=Tt("globalConfiguration").configuration.lineDash,l=this.configuration,c=l.handleRadius,u=l.drawHandlesOnHover,d=l.hideHandlesIfMoving,h=l.renderDashed,v=_n(a.canvasContext.canvas),g=ii(o),f=g.rowPixelSpacing,m=g.colPixelSpacing,p=(y.cornerstone.metaData.get("generalSeriesModule",o.imageId)||{}).modality,x=f&&m;Wt(v,(function(e){for(var l=0;l2&&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=hr(c,d.showHounsfieldUnits),p="Mean: ".concat(ar(o.toFixed(2))," ").concat(m),y="Std Dev: ".concat(ar(i.toFixed(2))," ").concat(m);if(f){for(var x=" SUV: ",T="".concat(x).concat(ar(l.mean.toFixed(2))),b="".concat(x).concat(ar(l.stdDev.toFixed(2))),C=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 yr(e,t,n,a){mr(e,t)&&(n.value+=a,n.squared+=a*a,n.count++)}var xr=function e(t,n){r()(this,e),this.toolIndex=t,this.handleIndexArray=n},Tr=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 br(e,t,n,a){for(var o=e.length-1,i=0;i0?1:2}function wr(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 Ir={newHandle:function(e,t){var n=t.length-1;return br(t,Mr(t[n]),Mr(e),[n])},end:function(e){var t=e.length-1;return br(e,Mr(e[t]),Mr(e[0]),[t,0])},modify:function(e,t){var n=Mr(e[t]),a=t-1;0===t&&(a=e.length-1);var o=Mr(e[a]);return!!br(e,n,o,[t,a])||br(e,n,o=Mr(e[a=t===e.length-1?0:t+1]),[t,a])}},Sr=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,renderDashed:!1},svgCursor:Io};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(wa()(e)),e._drawingMouseMoveCallback=e._drawingMouseMoveCallback.bind(wa()(e)),e._drawingMouseDragCallback=e._drawingMouseDragCallback.bind(wa()(e)),e._drawingMouseUpCallback=e._drawingMouseUpCallback.bind(wa()(e)),e._drawingMouseDoubleClickCallback=e._drawingMouseDoubleClickCallback.bind(wa()(e)),e._editMouseUpCallback=e._editMouseUpCallback.bind(wa()(e)),e._editMouseDragCallback=e._editMouseDragCallback.bind(wa()(e)),e._drawingTouchStartCallback=e._drawingTouchStartCallback.bind(wa()(e)),e._drawingTouchDragCallback=e._drawingTouchDragCallback.bind(wa()(e)),e._drawingDoubleTapClickCallback=e._drawingDoubleTapClickCallback.bind(wa()(e)),e._editTouchDragCallback=e._editTouchDragCallback.bind(wa()(e)),e.throttledUpdateCachedStats=li(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}Or.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)uo(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),Fr(e)}},{key:"_drawingDoubleTapClickCallback",value:function(e){var t=e.detail.element;this.completeDrawing(t),Fr(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=Rr.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=Rr.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 Ur(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=Rr.newHandle(o,i),r}},{key:"_checkHandlesPencilMode",value:function(e,t){var n=this.configuration.mouseLocation.handles.start,a=e.handles.points,o=Rr.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,pt.isMultiPartToolActive=!0,wt(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,pt.isMultiPartToolActive=!1,this._activeDrawingToolReference=null,this._drawingInteractionType=null,Et(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){pt.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){pt.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,toolType:this.name,element:e,measurementData:t})}},{key:"fireCompletedEvent",value:function(e,t){C(e,b.MEASUREMENT_COMPLETED,{toolName:this.name,toolType: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}(fo);function Fr(e){e.stopImmediatePropagation(),e.stopPropagation(),e.preventDefault()}var Br=N("tools:annotation:LengthTool"),Vr=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:ko,configuration:{drawHandles:!0,drawHandlesOnHover:!1,hideHandlesIfMoving:!1,renderDashed:!1,digits:2}};return(e=u()(this,h()(t).call(this,n,a))).throttledUpdateCachedStats=li(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}}}}Br.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&&mo(e,t.handles.start,t.handles.end,n)<25:(Br.warn("invalid parameters supplied to tool ".concat(this.name,"'s pointNearTool")),!1)}},{key:"updateCachedStats",value:function(e,t,n){var a=ii(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=a.hideHandlesIfMoving,s=a.renderDashed,l=a.digits,c=O(e.currentTarget,this.name);if(c)for(var u=_n(n.canvasContext.canvas),d=n.image,h=n.element,v=ii(d),g=v.rowPixelSpacing,f=v.colPixelSpacing,m=Xt.getToolWidth(),p=Tt("globalConfiguration").configuration.lineDash,y=function(e){var a=c.data[e];if(!1===a.visible)return"continue";Wt(u,(function(e){Dn(e,t.configuration);var c=un.getColorIfActive(a),u={color:c};s&&(u.lineDash=p),Zt(e,h,a.handles.start,a.handles.end,u);var v={color:c,handleRadius:o,drawHandlesIfActive:i,hideHandlesIfMoving:r};if(t.configuration.drawHandles&&dn(e,n,a.handles,v),!a.handles.textBox.hasMoved){var y={x:Math.max(a.handles.start.x,a.handles.end.x)};y.x===a.handles.start.x?y.y=a.handles.start.y:y.y=a.handles.end.y,a.handles.textBox.x=y.x,a.handles.textBox.y=y.y}!0===a.invalidated&&(a.length?t.throttledUpdateCachedStats(d,h,a):t.updateCachedStats(d,h,a));var x=function(e,t,n){var a=(o=e.length,i=Number(o),isNaN(i)?void 0:i);var o,i;if(!a)return"";var r="mm";t&&n||(r="pixels");return e.unit=r,"".concat(a.toFixed(l)," ").concat(r)}(a,g,f);Sn(e,h,a.handles.textBox,x,a.handles,T,c,m,10,!0)}))},x=0;x0&&void 0!==arguments[0]?arguments[0]:{};r()(this,t);var a={name:"Probe",supportedInteractionTypes:["Mouse","Touch"],svgCursor:_o,configuration:{drawHandles:!0,renderDashed:!1}};return(e=u()(this,h()(t).call(this,n,a))).throttledUpdateCachedStats=li(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}}};jr.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||jr.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&&m>=0&&f0&&void 0!==arguments[0]?arguments[0]:{};r()(this,t);var a={name:"RectangleRoi",supportedInteractionTypes:["Mouse","Touch"],configuration:{drawHandles:!0,drawHandlesOnHover:!1,hideHandlesIfMoving:!1,renderDashed:!1},svgCursor:Po};return(e=u()(this,h()(t).call(this,n,a))).throttledUpdateCachedStats=li(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}}};Wr.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||Wr.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=Kr(a,d.showHounsfieldUnits),p="Mean: ".concat(ar(r.toFixed(2))," ").concat(m),y="Std Dev: ".concat(ar(s.toFixed(2))," ").concat(m);if(f){for(var x=" SUV: ",T="".concat(x).concat(ar(u.mean.toFixed(2))),b="".concat(x).concat(ar(u.stdDev.toFixed(2))),C=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:Jr},svgCursor:Do};return(e=u()(this,h()(t).call(this,n,a))).touchPressCallback=e._changeText.bind(wa()(e)),e.doubleClickCallback=e._changeText.bind(wa()(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=fa(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=_n(t.canvasContext.canvas),i=function(e){var i=a.data[e];if(!1===i.visible)return"continue";var r=un.getColorIfActive(i);Wt(o,(function(e){Dn(e,n);var a=y.cornerstone.pixelToCanvas(t.element,i.handles.end);i.handles.end.boundingBox=bn(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);var a={name:"Brush",supportedInteractionTypes:["Mouse","Touch"],configuration:{},mixins:["renderBrushMixin"]};return(e=u()(this,h()(t).call(this,n,a))).touchDragCallback=e._paint.bind(wa()(e)),e}return g()(t,e),l()(t,[{key:"_paint",value:function(e){var t=Qr.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}(ka),ts=N("tools:SphericalBrushTool"),ns=Tt("segmentation"),as=function(e){function t(){var e,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};r()(this,t);var a={name:"SphericalBrush",supportedInteractionTypes:["Mouse","Touch"],configuration:{alwaysEraseOnClick:!1},mixins:["renderBrushMixin"]};return(e=u()(this,h()(t).call(this,n,a))).touchDragCallback=e._paint.bind(wa()(e)),e}return g()(t,e),l()(t,[{key:"_startPainting",value:function(e){var t,n=ns.configuration,a=ns.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 ts.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 ts.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=ns.configuration,r=ns.setters,s=0;s=E||e=I||te.xMax&&(e.xMax=n),ae.yMax&&(e.yMax=a)}function ss(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 us=N("util:segmentation:operations:eraseInsideFreehand");function ds(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 cs([e.x,e.y],r)}),c,u):le(e,t,(function(e){return cs([e.x,e.y],r)}),c,u)}else us.error("eraseInsideFreehand operation requires freehandSegmentationMixin operationData, recieved ".concat(o))}function hs(e,t){ds(e,t,!0)}function vs(e,t){ds(e,t,!1)}var gs=N("util:segmentation:operations:eraseInsideRectangle");function fs(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,r=i.image,s=a.map((function(e){return[e.x,e.y]})),l=Te(s,r),c=oe()(l,2),u=c[0],d=c[1];n?se(e,t,(function(){return!0}),u,d):ne(e,t,u,d)}else gs.error("eraseInsideRectangle operation requires rectangleSegmentationMixin operationData, recieved ".concat(o))}function ms(e,t){fs(e,t,!0)}function ps(e,t){fs(e,t,!1)}var ys=N("util:segmentation:operations:fillInsideFreehand");function xs(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 cs([e.x,e.y],r)}),c,u):ve(e,t,(function(e){return cs([e.x,e.y],r)}),c,u)}else ys.error("eraseInsideFreehand operation requires freehandSegmentationMixin operationData, recieved ".concat(o))}function Ts(e,t){xs(e,t,!0)}function bs(e,t){xs(e,t,!1)}var Cs=N("util:segmentation:operations:fillInsideRectangle");function Ms(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=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(){return!0}),c,u):ce(e,t,c,u)}else Cs.error("eraseInsideRectangle operation requires rectangleSegmentationMixin operationData, recieved ".concat(o))}function Es(e,t){Ms(e,t,!0)}function ws(e,t){Ms(e,t,!1)}var Is=N("util:segmentation:operations:fillCircle");function Ss(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 Qi(c,e)}),s,l):ve(e,t,(function(e){return Qi(c,e)}),s,l)}else Is.error("fillInsideCircle operation requires circleSegmentationMixin operationData, recieved ".concat(a))}function ks(e,t){Ss(e,t,!0)}function _s(e,t){Ss(e,t,!1)}var Ps=N("util:segmentation:operations:eraseInsideCircle");function Ds(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 Qi(c,e)}),s,l):le(e,t,(function(e){return Qi(c,e)}),s,l)}else Ps.error("eraseInsideCircle operation requires circleSegmentationMixin operationData, recieved ".concat(a))}function Os(e,t){Ds(e,t,!0)}function Ls(e,t){Ds(e,t,!1)}var As=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:bs,ERASE_OUTSIDE:vs,ERASE_INSIDE:hs},cursors:{FILL_INSIDE:Xo,FILL_OUTSIDE:Zo,ERASE_OUTSIDE:Ko,ERASE_INSIDE:Yo},defaultStrategy:"FILL_INSIDE",supportedInteractionTypes:["Mouse","Touch"],svgCursor:Xo,mixins:["freehandSegmentationMixin"]};return u()(this,h()(t).call(this,e,n))}return g()(t,e),t}(ga),Hs=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:Es,FILL_OUTSIDE:ws,ERASE_OUTSIDE:ps,ERASE_INSIDE:ms},cursors:{FILL_INSIDE:Jo,FILL_OUTSIDE:ei,ERASE_OUTSIDE:Qo,ERASE_INSIDE:$o},defaultStrategy:"FILL_INSIDE",supportedInteractionTypes:["Mouse","Touch"],mixins:["rectangleSegmentationMixin"]};return u()(this,h()(t).call(this,e,n))}return g()(t,e),t}(ga),Rs=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:ks,FILL_OUTSIDE:_s,ERASE_OUTSIDE:Ls,ERASE_INSIDE:Os},cursors:{FILL_INSIDE:ni,FILL_OUTSIDE:oi,ERASE_OUTSIDE:ai,ERASE_INSIDE:ti},defaultStrategy:"FILL_INSIDE",supportedInteractionTypes:["Mouse","Touch"],svgCursor:ni,mixins:["circleSegmentationMixin"]};return u()(this,h()(t).call(this,e,n))}return g()(t,e),t}(ga),Us=function(e){function t(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};r()(this,t);var n={name:"CorrectionScissors",strategies:{CORRECTION:is},cursors:{CORRECTION:Xo},defaultStrategy:"CORRECTION",supportedInteractionTypes:["Mouse","Touch"],svgCursor:Xo,mixins:["polylineSegmentationMixin"]};return u()(this,h()(t).call(this,e,n))}return g()(t,e),t}(ga),Ns={},Fs={},Bs={};function Vs(e){if(!e)return"DEFAULT";var t=y.cornerstone.getEnabledElement(e).uuid;if(!t)throw new Error("Something went wrong when getting uuid from element");return t}var qs={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=Vs(t);Ns[n]=e},getStartLoadHandler:function(e){var t=Vs(e);return Ns[t]||Ns.DEFAULT},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=Vs(t);Fs[n]=e},getEndLoadHandler:function(e){var t=Vs(e);return Fs[t]||Fs.DEFAULT},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=Vs(t);Bs[n]=e},getErrorLoadingHandler:function(e){var t=Vs(e);return Bs[t]||Bs.DEFAULT},removeHandlers:function(e){var t=Vs(e);delete Ns[t],delete Fs[t],delete Bs[t]}},js={};function zs(e,t){if(!js[e])return{};var n=js[e].find((function(e){return e.element===t}));return n?n.options:{}}function Ws(e,t,n){if(js[e]){var a=js[e].findIndex((function(e){return e.element===t}));if(-1===a)js[e].push({element:t,options:n});else{var o=js[e][a].options||{};js[e][a].options=Object.assign(o,n)}}else js[e]=[{element:t,options:n}]}var Gs=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:Oo};return(e=u()(this,h()(t).call(this,n,a))).preMouseDownCallback=e._chooseLocation.bind(wa()(e)),e.mouseDragCallback=e._chooseLocation.bind(wa()(e)),e.touchDragCallback=e._chooseLocation.bind(wa()(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=nn(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=en(o.imagePositionPatient),r=en(o.rowCosines),l=en(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);var n={name:"DoubleTapFitToWindow",supportedInteractionTypes:["DoubleTap"]};return u()(this,h()(t).call(this,e,n))}return g()(t,e),l()(t,[{key:"doubleTapCallback",value:function(e){var t=e.detail;y.cornerstone.fitToWindow(t.element)}}]),t}(ga),Xs=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:Ks,minimal:Zs},defaultStrategy:"default",supportedInteractionTypes:["Mouse","Touch"],svgCursor:_o};return(e=u()(this,h()(t).call(this,n,a))).touchDragCallback=e._movingEventCallback.bind(wa()(e)),e.touchEndCallback=e._endMovingEventCallback.bind(wa()(e)),e.mouseDragCallback=e._movingEventCallback.bind(wa()(e)),e.mouseUpCallback=e._endMovingEventCallback.bind(wa()(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}(ga);function Ks(e){var t=this.configuration,n=y.cornerstone,a=e.detail,o=a.element,i=a.image,r=a.currentPoints,s=a.canvasContext,l=_n(s.canvas),c=un.getActiveColor(),u=pn.getFontSize(),d=Math.round(r.image.x),h=Math.round(r.image.y);d<0||h<0||d>=i.columns||h>=i.rows||Wt(l,(function(e){Dn(e,t);var a,s,l="".concat(d,", ").concat(h);if(i.color)a=qr(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=$i(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};bn(e,s,m.x,m.y+u+5,c),bn(e,l,m.x,m.y,c)}))}function Zs(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=_n(s.canvas),u=un.getActiveColor(),d=r.page.y-pn.getFontSize()/2;l&&(d=r.page.y-4*pn.getFontSize());var h=n.pageToPixel(o,r.page.x,d);h.x<0||h.y<0||h.x>=i.columns||h.y>=i.rows||Wt(c,(function(e){Dn(e,t);var a,r=n.metaData.get("generalSeriesModule",i.imageId),s=r&&r.modality,c="";if(i.color)a=qr(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=$i(i,d);f&&(c+=" SUV: ".concat(parseFloat(f.toFixed(2))))}else c+=g}var m=n.pixelToCanvas(o,h),p={x:12,y:-(pn.getFontSize()+10)/2},y=Tn(e,c,5);l&&(p={x:-y/2,y:-pn.getFontSize()-10-12}),Qt(e,o,m,6,{color:u},"canvas"),bn(e,c,m.x+p.x,m.y+p.y,u)}))}var $s=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:Lo};return(e=u()(this,h()(t).call(this,n,a))).preMouseDownCallback=e._deleteAllNearbyTools.bind(wa()(e)),e.preTouchStartCallback=e._deleteAllNearbyTools.bind(wa()(e)),e}return g()(t,e),l()(t,[{key:"_deleteAllNearbyTools",value:function(e){var t=e.detail.currentPoints.canvas,n=e.detail.element;pt.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}(ga),Js=Dr.FreehandHandleData,Qs=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:el(),svgCursor:So};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(wa()(e)),e.activeTouchEndCallback=e.activeTouchEndCallback.bind(wa()(e)),e.activeMouseDragCallback=e.activeMouseDragCallback.bind(wa()(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};dn(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,pt.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=pt.mousePositionImage;var r=Ct(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};dn(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,wt(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};Mn(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 Js(o);t.splice(e,0,i),t[n].lines.pop(),t[n].lines.push(t[e]),Dr.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=Ct(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:Ao};return(e=u()(this,h()(t).call(this,n,a))).zoomCanvas=void 0,e.zoomElement=void 0,e.activeCallback=e._createMagnificationCanvas.bind(wa()(e)),e.enabledCallback=e._createMagnificationCanvas.bind(wa()(e)),e.disabledCallback=e._destroyMagnificationCanvas.bind(wa()(e)),e.postTouchStartCallback=e._addMagnifyingGlass.bind(wa()(e)),e.touchDragCallback=e._updateMagnifyingGlass.bind(wa()(e)),e.touchEndCallback=e._removeMagnifyingGlass.bind(wa()(e)),e.touchDragEndCallback=e._removeMagnifyingGlass.bind(wa()(e)),e.postMouseDownCallback=e._addMagnifyingGlass.bind(wa()(e)),e.mouseDragCallback=e._updateMagnifyingGlass.bind(wa()(e)),e.mouseUpCallback=e._removeMagnifyingGlass.bind(wa()(e)),e.mouseClickCallback=e._removeMagnifyingGlass.bind(wa()(e)),e.newImageCallback=e._drawMagnificationTool.bind(wa()(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)})),wt(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;Et(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=_n(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.zoomElement),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}(ga),nl=xt.globalConfiguration,al=function(e){function t(){var e,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};r()(this,t);var a={name:"Overlay",configuration:{},mixins:["enabledOrDisabledBinaryTool"]},o=Object.assign(a,n);return(e=u()(this,h()(t).call(this,o))).initialConfiguration=o,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:"setupRender",value:function(e){if(e){var t=y.cornerstone.metaData.get("overlayPlaneModule",e.imageId);if(t&&t.overlays&&t.overlays.length)return t}}},{key:"setupViewport",value:function(e){if(void 0===e.overlayColor&&(e.overlayColor=nl.configuration.overlayColor||"white"),!1!==e.overlayColor)return!0}},{key:"renderToolData",value:function(e){var t=e.detail,n=t.enabledElement,a=t.image,o=t.viewport,i=t.canvasContext,r=this.setupRender(a);if(t&&n&&r&&this.setupViewport(o)){var s=a.columns,l=a.rows;r.overlays.forEach((function(e){if(!1!==e.visible){var t=document.createElement("canvas");t.width=s,t.height=l;var n=t.getContext("2d");n.fillStyle=e.fillStyle||o.overlayColor,"R"===e.type&&(n.fillRect(0,0,t.width,t.height),n.globalCompositeOperation="xor");for(var a=0,r=0;r0&&n.fillRect(c,r,1,1);var u=!isNaN(parseFloat(e.x))&&isFinite(e.x)?e.x:0,d=!isNaN(parseFloat(e.y))&&isFinite(e.y)?e.y:0;i.drawImage(t,u,d)}}))}}}]),t}(ga),ol={getOrientationString:function(e){for(var t=en(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=1e-4,l=0;l<3;l++)if(r.x>s&&r.x>r.y&&r.x>r.z)n+=a,r.x=0;else if(r.y>s&&r.y>r.x&&r.y>r.z)n+=o,r.y=0;else if(r.z>s&&r.z>r.x&&r.z>r.y)n+=i,r.z=0;else if(r.x>s&&r.y>s&&r.x===r.y)n+=a+o,r.x=0,r.y=0;else if(r.x>s&&r.z>s&&r.x===r.z)n+=a+i,r.x=0,r.z=0;else{if(!(r.y>s&&r.z>s&&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()}},il=function(e){function t(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};r()(this,t);var n={name:"OrientationMarkers",configuration:{drawAllMarkers:!0},mixins:["enabledOrDisabledBinaryTool"]};return u()(this,h()(t).call(this,e,n))}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=_n(t.canvasContext.canvas),a=t.element,o=ll(a);if(o){var i=cl(a,o),r=un.getToolColor(),s={top:Tn(n,o.top,0),left:Tn(n,o.left,0),right:Tn(n,o.right,0),bottom:Tn(n,o.bottom,0),height:Tn(n,"M",0)};rl(n,o,i,s,r),this.configuration.drawAllMarkers&&sl(n,o,i,s,r)}}}]),t}(ga),rl=function(e,t,n,a,o){bn(e,t.top,n.top.x-a.top/2,n.top.y,o),bn(e,t.left,n.left.x-a.left/2,n.left.y,o)},sl=function(e,t,n,a,o){bn(e,t.right,n.right.x-a.right,n.right.y,o),bn(e,t.bottom,n.bottom.x-a.bottom/2,n.bottom.y-a.height,o)},ll=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=ol.getOrientationString(a.rowCosines),i=ol.getOrientationString(a.columnCosines),r=ol.invertOrientationString(o);return{top:ol.invertOrientationString(i),bottom:i,left:r,right:o}}},cl=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})}},ul=function(e){function t(){var e,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};r()(this,t);var a={name:"PanMultiTouch",supportedInteractionTypes:["MultiTouch"],configuration:{touchPointers:2}};return(e=u()(this,h()(t).call(this,n,a))).multiTouchDragCallback=e._dragCallback.bind(wa()(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:Ho};return(e=u()(this,h()(t).call(this,n,a))).touchDragCallback=e._dragCallback.bind(wa()(e)),e.mouseDragCallback=e._dragCallback.bind(wa()(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:ml}};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=fl()(vl.a.mark((function e(t){var n,a,o,i=arguments;return vl.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,yl(t);case 4:if(e.sent&&o&&a){e.next=8;break}return xl.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=_n(n.canvasContext.canvas);y.cornerstone.setToPixelCoordinateSystem(n.enabledElement,o),a.forEach((function(a){a!==e.currentTarget&&t.renderer(o,n,e.currentTarget,a)}))}}}]),t}(ga),bl=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)}},Cl=function(e){function t(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};r()(this,t);var n={name:"Rotate",strategies:{default:Ml,horizontal:El,vertical:wl},defaultStrategy:"default",supportedInteractionTypes:["Mouse","Touch"],configuration:{roundAngles:!1,flipHorizontal:!1,flipVertical:!1,rotateScale:1},svgCursor:Ro};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}(ga);function Ml(e){var t=this.configuration,n=t.roundAngles,a=t.rotateScale,o=e.detail,i=o.element,r=o.viewport,s=o.startPoints,l=o.currentPoints,c=r.initialRotation?r.initialRotation:r.rotation,u=i.getBoundingClientRect(i),d=i.clientWidth,h=i.clientHeight,v=r.scale,g=r.translation,f={x:u.left+d/2+g.x*v,y:u.top+h/2+g.y*v},m=bl(f,s.client,l.client);m.angle*=a,n&&(m.angle=Math.ceil(m.angle)),m.direction<0&&(m.angle=-m.angle),r.rotation=c+m.angle}function El(e){var t=this.configuration,n=t.roundAngles,a=t.flipHorizontal,o=t.rotateScale,i=e.detail,r=i.viewport,s=i.startPoints,l=i.currentPoints,c=r.initialRotation,u=s.client.x,d=(l.client.x-u)*o;n&&(d=Math.round(Math.abs(d))*(d>0?1:-1)),a&&(d=-d),r.rotation=c+d}function wl(e){var t=this.configuration,n=t.roundAngles,a=t.flipVertical,o=t.rotateScale,i=e.detail,r=i.viewport,s=i.startPoints,l=i.currentPoints,c=r.initialRotation,u=s.client.y,d=(l.client.y-u)*o;n&&(d=Math.round(Math.abs(d))*(d>0?1:-1)),a&&(d=-d),r.rotation=c+d}var Il=function(e){function t(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};r()(this,t);var n={name:"RotateTouch",supportedInteractionTypes:["TouchRotate"]};return u()(this,h()(t).call(this,e,n))}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}(ga),Sl=N("tools:ScaleOverlayTool"),kl=function(e){function t(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};r()(this,t);var n={name:"ScaleOverlay",configuration:{minorTickLength:12.5,majorTickLength:25},mixins:["enabledOrDisabledBinaryTool"]};return u()(this,h()(t).call(this,e,n))}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=_n(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=_l(c,.25,.05),v=_l(c,.05,.15);if(c.width&&c.height&&h&&v){var g=un.getToolColor(),f=Xt.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);Wt(n,(function(e){Dn(e,m),Zt(e,i,m.verticalLine.start,m.verticalLine.end,{color:m.color,lineWidth:m.lineWidth},"canvas"),Pl(e,i,m),Zt(e,i,m.horizontalLine.start,m.horizontalLine.end,{color:m.color,lineWidth:m.lineWidth},"canvas"),Dl(e,i,m)}))}}else Sl.warn("unable to define rowPixelSpacing or colPixelSpacing from data on ".concat(this.name,"'s renderToolData"))}}]),t}(ga),_l=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}}},Pl=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,Zt(e,t,r,s,{color:o,lineWidth:i},"canvas"),a++}},Dl=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,Zt(e,t,r,s,{color:o,lineWidth:i},"canvas"),a++}},Ol=function(e,t){var n=O(e,"stack");if(n&&n.data&&n.data.length){var a,o=y.cornerstone;if(n.data.length>1){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=qs.getStartLoadHandler(e),l=qs.getEndLoadHandler(e),c=qs.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)})),C(e,b.STACK_SCROLL,u)}}},Ll=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=In(r,0,i.imageIds.length-1);if(a)Ol(e,r);else{var l={index:r};i.pending.push(l),Al(i,l,e)}}};function Al(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&&Al(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&&Al(e,e.pending[0],n))})),Ol(n,t.index)}}var Hl=function(e){function t(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};r()(this,t);var n={name:"StackScrollMouseWheel",supportedInteractionTypes:["MouseWheel"],configuration:{loop:!1,allowSkipping:!0,invert:!1}};return u()(this,h()(t).call(this,e,n))}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;Ll(a,s?-n:n,i,r)}}]),t}(ga),Rl=function(e){function t(){var e,n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};r()(this,t);var a={name:"StackScrollMultiTouch",supportedInteractionTypes:["MultiTouch"],configuration:{loop:!1,allowSkipping:!0,touchPointers:3}};return(e=u()(this,h()(t).call(this,n,a))).multiTouchDragCallback=e._dragCallback.bind(wa()(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=zs(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);Ll(n,u,i,r),s.deltaY=c%l}else s.deltaY=c;Ws(this.name,n,s)}}},{key:"_getDeltaY",value:function(e,t){return(zs(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}(ga),Ul=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:Uo};return(e=u()(this,h()(t).call(this,n,a))).mouseDragCallback=e._dragCallback.bind(wa()(e)),e.touchDragCallback=e._dragCallback.bind(wa()(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=zs(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);Ll(n,u,i,r),s.deltaY=c%l}else s.deltaY=c;Ws(this.name,n,s)}}},{key:"_getDeltaY",value:function(e,t){return(zs(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}(ga),Nl=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:No};return(e=u()(this,h()(t).call(this,n,a)))._resetHandles(),e.postTouchStartCallback=e._startOutliningRegion.bind(wa()(e)),e.touchDragCallback=e._setHandlesAndUpdate.bind(wa()(e)),e.touchEndCallback=e._applyStrategy.bind(wa()(e)),e.postMouseDownCallback=e._startOutliningRegion.bind(wa()(e)),e.mouseClickCallback=e._startOutliningRegion.bind(wa()(e)),e.mouseDragCallback=e._setHandlesAndUpdate.bind(wa()(e)),e.mouseMoveCallback=e._setHandlesAndUpdate.bind(wa()(e)),e.mouseUpCallback=e._applyStrategy.bind(wa()(e)),e}return g()(t,e),l()(t,[{key:"renderToolData",value:function(e){var t=this,n=e.detail,a=n.element,o=un.getColorIfActive({active:!0}),i=_n(n.canvasContext.canvas);Wt(i,(function(e){kn(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 Bl(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){Bl(this.handles.start)||Bl(this.handles.end)||(e.detail.handles=this.handles,Vl(e,this.configuration),this._resetHandles())}},{key:"_resetHandles",value:function(){this.handles={start:{},end:{}}}}]),t}(ga),Bl=function(e){return 0===Object.keys(e).length&&e.constructor===Object},Vl=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=In(l,0,a.width),c=In(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=Nl(o,l,c,u,d),v=ql(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,g.voiLUT=void 0,y.cornerstone.setViewport(o,g),y.cornerstone.updateImage(o)},ql=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:zl},supportedInteractionTypes:["Mouse","Touch"],configuration:{orientation:0},svgCursor:Fo};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}(ga);function zl(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),n.viewport.voiLUT=void 0}var Wl=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);var n={name:"ZoomMouseWheel",supportedInteractionTypes:["MouseWheel"],configuration:{minScale:.25,maxScale:20,invert:!1}};return u()(this,h()(t).call(this,e,n))}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=Wl(a,r?o/4:-o/4,{maxScale:s,minScale:l});y.cornerstone.setViewport(n,c)}}]),t}(ga),Xl=Gl.correctShift,Kl=Gl.changeViewportScale,Zl=function(e){function t(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};r()(this,t);var n={name:"Zoom",strategies:{default:Jl,translate:Ql,zoomToCenter:ec},defaultStrategy:"default",supportedInteractionTypes:["Mouse","Touch"],configuration:{invert:!1,preventZoomOutsideImage:!1,minScale:.25,maxScale:20},svgCursor:Bo};return u()(this,h()(t).call(this,e,n))}return g()(t,e),l()(t,[{key:"touchDragCallback",value:function(e){$l.call(this,e)}},{key:"mouseDragCallback",value:function(e){$l.call(this,e)}}]),t}(ga),$l=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 Jl(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=Kl(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=Xl(p,f),c.translation.x-=p.x,c.translation.y-=p.y}function Ql(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=Kl(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&&Mn(e.detail.startPoints.image,l);var f={x:l.width/2-d,y:l.height/2-h};f=Xl(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 ec(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;Kl(s,r,{maxScale:a,minScale:o})}var tc=Gl.correctShift,nc=function(e){function t(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};r()(this,t);var n={name:"ZoomTouchPinch",supportedInteractionTypes:["TouchPinch"],configuration:{minScale:.25,maxScale:20}};return u()(this,h()(t).call(this,e,n))}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]:{},t=e.x,n=e.y;return{x:t,y:n}}var ic,rc=N("eventListeners:mouseEventListeners"),sc=!0,lc=new Map;function cc(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 uc(){sc=!1}function dc(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=ac(o);rc.log("double-click: %o",cc(e)),C(t,a,{event:e,buttons:cc(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 hc(e){var t=e.currentTarget,n=y.cornerstone.getEnabledElement(t);if(n.image){ic=setTimeout(uc,200),t.removeEventListener("mousemove",vc);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=ac(a),i={event:e,buttons:cc(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",s),lc.set(r,"mousemove"),lc.set(s,"mouseup")}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)};rc.log("mousemove: %o",cc(e));var l={buttons:cc(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=ac(r)}function s(e){clearTimeout(ic);var i=b.MOUSE_UP;sc&&(i=b.MOUSE_CLICK);var l={page:y.cornerstoneMath.point.pageToPoint(e),image:y.cornerstone.pageToPixel(t,e.pageX,e.pageY),client:{x:e.clientX,y:e.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)};rc.log("mouseup: %o",cc(e));var u={event:e,buttons:cc(e),viewport:y.cornerstone.getViewport(t),image:n.image,element:t,startPoints:a,lastPoints:o,currentPoints:l,deltaPoints:c,type:i};C(u.element,i,u),document.removeEventListener("mousemove",r),document.removeEventListener("mouseup",s),lc.delete(r),lc.delete(s),t.addEventListener("mousemove",vc),sc=!0}}function vc(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=ac(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=ac(r)}}function gc(e){e.removeEventListener("mousedown",hc),e.removeEventListener("mousemove",vc),e.removeEventListener("dblclick",dc),lc.forEach((function(e,t){document.removeEventListener(e,t)})),lc.clear()}var fc={enable:function(e){gc(e),e.addEventListener("mousedown",hc),e.addEventListener("mousemove",vc),e.addEventListener("dblclick",dc)},disable:gc};function mc(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=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}}(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 pc(e){e.removeEventListener("wheel",mc,{passive:!1})}var yc,xc,Tc={enable:function(e){pc(e),e.addEventListener("wheel",mc,{passive:!1})},disable:pc},bc=0,Cc=1;function Mc(e,t){var n=Date.now();if(e!==yc){if(n-xc<=2e3)return t.preventDefault(),t.stopPropagation(),t.stopImmediatePropagation(),!1;yc=e}xc=n}var Ec=Mc.bind(null,bc),wc=Mc.bind(null,Cc);function Ic(e,t,n){var a=n?Ec:wc;t.forEach((function(t){e.addEventListener(t,a,{passive:!1})}))}function Sc(e,t,n){var a=n?Ec:wc;t.forEach((function(t){e.removeEventListener(t,a)}))}var kc=["mousedown","mouseup"],_c=["touchstart","touchend"];function Pc(e){Sc(e,kc,bc),Sc(e,_c,Cc)}var Dc,Oc,Lc,Ac,Hc,Rc,Uc,Nc,Fc,Bc={enable:function(e){Pc(e),Ic(e,kc,bc),Ic(e,_c,Cc)},disable:Pc},Vc=1,qc=0,jc=!1,zc=!1;function Wc(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)&&(zc=!1,clearTimeout(Uc)),e.type){case"tap":zc=!1,clearTimeout(Uc),(Oc={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,Oc.image),a=b.TAP,Hc={event:e,viewport:y.cornerstone.getViewport(t),image:n.image,element:t,currentPoints:Oc,type:a,isTouchEvent:!0},C(t,a,Hc);break;case"doubletap":zc=!1,clearTimeout(Uc),(Oc={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,Oc.image),a=b.DOUBLE_TAP,Hc={event:e,viewport:y.cornerstone.getViewport(t),image:n.image,element:t,currentPoints:Oc,type:a,isTouchEvent:!0},C(t,a,Hc);break;case"pinchstart":zc=!1,clearTimeout(Uc),Vc=1;break;case"pinchmove":if(zc=!1,clearTimeout(Uc),!0===jc){Vc=e.scale,jc=!1;break}o=(e.scale-Vc)/Vc,(Dc={page:e.center,image:y.cornerstone.pageToPixel(t,e.center.x,e.center.y)}).canvas=y.cornerstone.pixelToCanvas(t,Dc.image),a=b.TOUCH_PINCH,Hc={event:e,startPoints:Dc,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,Hc),Vc=e.scale;break;case"touchstart":Vc=1,clearTimeout(Uc),clearTimeout(Rc),Rc=setTimeout((function(){(Dc={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,Dc.image),a=b.TOUCH_START,e.touches.length>1&&(a=b.MULTI_TOUCH_START),Hc={event:e,viewport:y.cornerstone.getViewport(t),image:n.image,element:t,startPoints:Dc,currentPoints:Dc,type:a,isTouchEvent:!0},!0===C(t,a,Hc)&&(a=b.TOUCH_START_ACTIVE,e.touches.length>1&&(a=b.MULTI_TOUCH_START_ACTIVE),Hc.type=a,C(t,a,Hc)),Lc=ac(Dc)}),50),zc=!0,Nc=0,Uc=setTimeout((function(){zc&&((Oc={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,Dc.image),a=b.TOUCH_PRESS,Hc={event:e,viewport:y.cornerstone.getViewport(t),image:n.image,element:t,currentPoints:Oc,type:a,isTouchEvent:!0},C(t,a,Hc))}),700);break;case"touchend":Vc=1,zc=!1,clearTimeout(Uc),setTimeout((function(){(Dc={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,Dc.image),a=b.TOUCH_END,Hc={event:e,viewport:y.cornerstone.getViewport(t),image:n.image,element:t,startPoints:Dc,currentPoints:Dc,type:a,isTouchEvent:!0},C(t,a,Hc)}),50);break;case"panmove":i={x:e.deltaX-Fc.x,y:e.deltaY-Fc.y},Fc={x:e.deltaX,y:e.deltaY},(Oc={page:{x:Lc.page.x+i.x,y:Lc.page.y+i.y},image:y.cornerstone.pageToPixel(t,Lc.page.x+i.x,Lc.page.y+i.y),client:{x:Lc.client.x+i.x,y:Lc.client.y+i.y}}).canvas=y.cornerstone.pixelToCanvas(t,Oc.image),Ac={page:y.cornerstoneMath.point.subtract(Oc.page,Lc.page),image:y.cornerstoneMath.point.subtract(Oc.image,Lc.image),client:y.cornerstoneMath.point.subtract(Oc.client,Lc.client),canvas:y.cornerstoneMath.point.subtract(Oc.canvas,Lc.canvas)},(Nc+=Math.sqrt(Ac.page.x*Ac.page.x+Ac.page.y*Ac.page.y))>5&&(zc=!1,clearTimeout(Uc)),a=b.TOUCH_DRAG,e.pointers.length>1&&(a=b.MULTI_TOUCH_DRAG),Hc={viewport:y.cornerstone.getViewport(t),image:n.image,element:t,startPoints:Dc,lastPoints:Lc,currentPoints:Oc,deltaPoints:Ac,numPointers:e.pointers.length,type:a,isTouchEvent:!0},C(t,a,Hc),Lc=ac(Oc);break;case"panstart":Fc={x:e.deltaX,y:e.deltaY},(Oc={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,Oc.image),Lc=ac(Oc);break;case"panend":if(zc=!1,clearTimeout(Uc),!Lc)return!1;(Oc={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,Oc.image),Ac={page:y.cornerstoneMath.point.subtract(Oc.page,Lc.page),image:y.cornerstoneMath.point.subtract(Oc.image,Lc.image),client:y.cornerstoneMath.point.subtract(Oc.client,Lc.client),canvas:y.cornerstoneMath.point.subtract(Oc.canvas,Lc.canvas)},a=b.TOUCH_DRAG_END,Hc={event:e.srcEvent,viewport:y.cornerstone.getViewport(t),image:n.image,element:t,startPoints:Dc,lastPoints:Lc,currentPoints:Oc,deltaPoints:Ac,type:a,isTouchEvent:!0},C(t,a,Hc),2===e.pointers.length-e.changedPointers.length&&(jc=!0);break;case"rotatemove":zc=!1,clearTimeout(Uc),r=e.rotation-qc,qc=e.rotation,a=b.TOUCH_ROTATE,Hc={event:e.srcEvent,viewport:y.cornerstone.getViewport(t),image:n.image,element:t,rotation:r,type:a},C(t,a,Hc)}return!1}}function Gc(e){Bc.disable(e);["touchstart","touchend"].forEach((function(t){e.removeEventListener(t,Wc)}));var t=zs("touchInput",e),n=t.hammer;n&&(n.off("tap doubletap panstart panmove panend pinchstart pinchmove rotatemove",Wc),n.input.destroy()),t.hammer=null,function(e,t){var n=js[e];n&&(js[e]=n.filter((function(e){return e.element!==t})))}("touchInput",e)}var Yc={enable:function(e){Gc(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",Wc),Bc.enable(e),["touchstart","touchend"].forEach((function(t){e.addEventListener(t,Wc,{passive:!1})}));var c=zs("touchInput",e);c.hammer=a,Ws("touchInput",e,c)},disable:Gc},Xc=Tt("segmentation");function Kc(e,t,n,a,o){!function(e,t,n){var a=Xc.configuration,o=e.detail,i=_n(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,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)}}(i,d,h);var f=function(e){var t=e.viewport,n=e.image,a=t.scale,o=t.scale;n.rowPixelSpacing3&&void 0!==arguments[3])||arguments[3],o=Zc.configuration,i=Zc.state,r=e.detail,s=r.element,l=r.canvasContext,c=o.outlineWidth||1,u=_n(l.canvas),d=i.colorLutTables[n],h=u.globalAlpha;u.globalAlpha=a?o.outlineAlpha:o.outlineAlphaInactive,Wt(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";return t.filter((function(t){for(var o=so(a,t.name),i=O(e,t.name),r=0;r0}))},xu=function(e){if(!pt.isToolLocked){var t=e.detail,n=e.detail.element,a=e.detail.currentPoints.canvas,o=pu(n,yt.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(pt.isMultiPartToolActive&&(i=_a(i)),i.length>0){var r=i.find((function(e){return"function"==typeof e.preMouseDownCallback}));if(r)if(r.preMouseDownCallback(e))return}if(!pt.isMultiPartToolActive){var s=yu(n,o),l=mu(n,s,a,"mouse");if(l.length>0){var c=l[0],u=O(n,c.name),d=ho(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}}}}},Tu=N("eventDispatchers:mouseEventHandlers"),bu=function(e){if(!pt.isToolLocked){var t=e.detail,n=Pa(t.element,t.buttons,"mouse");if(n){if("function"==typeof n.preMouseDownActivateCallback)if(n.preMouseDownActivateCallback(e))return;pt.isMultiPartToolActive||(n.addNewMeasurement?n.addNewMeasurement(e,"mouse"):n instanceof fo&&function(e,t){Tu.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?Wa:to)(n,t.name,o,o.handles.end,t.options,"mouse",(function(e){if(!o.cancelled)if(e){var n=b.MEASUREMENT_COMPLETED,i={toolName:t.name,toolType:t.name,element:a,measurementData:o};C(a,n,i)}else L(a,t.name,o)})))}(e,n))}}},Cu=function(e){if(!pt.isToolLocked){var t,n=e.detail,a=n.element;if(t=(t=(t=Ma(a,yt.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})),pt.isMultiPartToolActive&&(t=_a(t)),0!==t.length)t[0].mouseDragCallback(e)}},Mu=function(e){if(!pt.isToolLocked&&!pt.isMultiPartToolActive){var t,n=e.detail,a=n.element,o=n.currentPoints;pt.mousePositionImage=o.image;var i=(t=pu(a,yt.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=yu(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!==pa(n,e.handles,a,28)}));return r.data.active=!0,s.active=!0,y.cornerstone.updateImage(n),Wa(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),Ha(e.detail,c.name,d,null,c.options,"touch",(function(){return Ru(u)})),e.stopImmediatePropagation(),void e.preventDefault()}var h=Ma(n,yt.touchTools());return h.length>0&&h[0].touchStartActiveCallback?h[0].touchStartActiveCallback(e):Hu(e),!1}},Fu=function(e){if(!pt.isToolLocked){var t=e.detail,n=t.element,a=t.startPoints.canvas,o=pu(n,yt.touchTools()),i=o.filter((function(e){return"active"===e.mode&&e.options.isTouchActive}));if(pt.isMultiPartToolActive&&(i=_a(i)),i.length>0){var r=i.find((function(e){return"function"==typeof e.preTouchStartCallback}));if(r)if(r.preTouchStartCallback(e))return}if(!pt.isMultiPartToolActive){var s=yu(n,o),l=mu(n,s,a,"touch");if(l.length>0){var c=l[0],u=O(n,c.name),d=ho(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}}}}},Bu=fu.bind(null,"DoubleTap","doubleTapCallback"),Vu=fu.bind(null,"Touch","touchDragCallback"),qu=fu.bind(null,"Touch","touchEndCallback"),ju=fu.bind(null,"TouchPinch","touchPinchCallback"),zu=fu.bind(null,"Touch","touchPressCallback"),Wu=fu.bind(null,"TouchRotate","touchRotateCallback"),Gu=function(e){e.addEventListener(b.TAP,Nu),e.addEventListener(b.TOUCH_START,Fu,{passive:!1}),e.addEventListener(b.TOUCH_DRAG,Vu,{passive:!1}),e.addEventListener(b.TOUCH_END,qu),e.addEventListener(b.TOUCH_START_ACTIVE,Hu),e.addEventListener(b.TOUCH_PRESS,zu),e.addEventListener(b.DOUBLE_TAP,Bu),e.addEventListener(b.TOUCH_PINCH,ju),e.addEventListener(b.TOUCH_ROTATE,Wu),e.addEventListener(b.MULTI_TOUCH_DRAG,Lu)},Yu=function(e){e.removeEventListener(b.TAP,Nu),e.removeEventListener(b.TOUCH_START,Fu),e.removeEventListener(b.TOUCH_DRAG,Vu),e.removeEventListener(b.TOUCH_END,qu),e.removeEventListener(b.TOUCH_START_ACTIVE,Hu),e.removeEventListener(b.TOUCH_PRESS,zu),e.removeEventListener(b.DOUBLE_TAP,Bu),e.removeEventListener(b.TOUCH_PINCH,ju),e.removeEventListener(b.TOUCH_ROTATE,Wu),e.removeEventListener(b.MULTI_TOUCH_DRAG,Lu)},Xu=N("addTool"),Ku=function(e,t,n){var a=new t(n);Ct(e,a.name)?Xu.warn("%s has already been added to the target element",a.name):(a.element=e,bt.state.tools.push(a))},Zu=function(e,t){$u(e,t),bt.state.enabledElements.forEach((function(n){Ku(n,e,t)}))},$u=function(e,t){if(Tt("globalConfiguration").configuration.globalToolSyncEnabled){var n=new e(t);void 0!==bt.state.globalTools[n.name]?Xu.warn("%s has already been added globally",n.name):bt.state.globalTools[n.name]={tool:e,props:t,activeBindings:[]}}},Ju=N("internals:addEnabledElement"),Qu=function(e){Ju.log("EVENT:ELEMENT_ENABLED");var t=e.detail.element;vu(t),Du(t);var n=Tt("globalConfiguration").configuration;n.mouseEnabled&&(fc.enable(t),Tc.enable(t),ku(t)),n.touchEnabled&&(Yc.enable(t),Gu(t)),ed(t)},ed=function(e){bt.state.enabledElements.push(e),bt.modules&&function(e){var t=bt.modules;Object.keys(t).forEach((function(n){"function"==typeof t[n].enabledElementCallback&&t[n].enabledElementCallback(e)}))}(e),function(e){if(!Tt("globalConfiguration").configuration.globalToolSyncEnabled)return;Object.keys(bt.state.globalTools).forEach((function(t){var n=bt.state.globalTools[t],a=n.tool,o=n.props;Ku(e,a,o)}))}(e),function(e){if(!Tt("globalConfiguration").configuration.globalToolSyncEnabled)return;var t={active:_t,passive:Ht,enabled:Lt,disabled:Dt};bt.state.globalToolChangeHistory.forEach((function(n){var a=n.args.slice(0);a.unshift(e),t[n.mode].apply(null,a)}))}(e)};var td=N("internals:removeEnabledElement"),nd=function(e){td.log("EVENT:ELEMENT_DISABLED");var t=e.detail.element,n=Tt("globalConfiguration").configuration;gu(t),Ou(t),n.mouseEnabled&&(fc.disable(t),Tc.disable(t),_u(t)),n.touchEnabled&&(Yc.disable(t),Yu(t)),ad(t),od(t),id(t)},ad=function(e){bt.state.tools.forEach((function(t){t.element===e&&Dt(t.element,t.name)})),bt.state.tools=bt.state.tools.filter((function(t){return t.element!==e}))},od=function(e){bt.modules&&function(e){var t=bt.modules;Object.keys(t).forEach((function(n){"function"==typeof t[n].removeEnabledElementCallback&&t[n].removeEnabledElementCallback(e)}))}(e);var t=bt.state.enabledElements.findIndex((function(t){return t===e}));t>-1?bt.state.enabledElements.splice(t,1):td.warn("unable to remove element")},id=function(e){qs.removeHandlers(e)};var rd,sd=function(){window.removeEventListener("resize",ld,!1)};function ld(){rd||(rd=setTimeout((function(){rd=null,cd()}),66))}var cd=function(){pt.enabledElements.forEach((function(e){y.cornerstone.resize(e)}))},ud=function(){sd(),window.addEventListener("resize",ld,!1)},dd=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};hd(),vd();var t=Tt("globalConfiguration");Array.isArray(e)?e.forEach((function(e){var t=e.moduleName,n=e.configuration,a=Tt(t);a&&(a.configuration=Object.assign({},a.configuration,n))})):t.configuration=Object.assign({},t.configuration,e),t.configuration.autoResizeViewports&&ud()};function hd(){!function(){var e=y.cornerstone,t=e.EVENTS.ELEMENT_ENABLED,n=e.EVENTS.ELEMENT_DISABLED;e.events.removeEventListener(t,Qu),e.events.removeEventListener(n,nd)}();var e=y.cornerstone,t=e.EVENTS.ELEMENT_ENABLED,n=e.EVENTS.ELEMENT_DISABLED;e.events.addEventListener(t,Qu),e.events.addEventListener(n,nd)}function vd(){var e=bt.modules;Object.keys(e).forEach((function(t){"function"==typeof e[t].onRegisterCallback&&e[t].onRegisterCallback()}))}var gd,fd=N("stackTools:stackPrefetch"),md={maxImagesToPrefetch:1/0,preserveExistingPool:!1};function pd(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}function yd(e){var t=O(e,"stack");if(t&&t.data&&t.data.length){var n=t.data[0],a=O(e,"stackPrefetch");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)&&b(e))})),o.indicesToRequest.length){md.preserveExistingPool||y.cornerstone.imageLoadPoolManager.clearRequestStack("prefetch");for(var i,r,s,l,c,u,d,h=(i=o.indicesToRequest,r=n.currentImageIdIndex,s=0,l=i.length-1,i.forEach((function(e,t){er&&(l=Math.min(t,l))})),{low:s,high:l}),v=(qs.getErrorLoadingHandler(e),h.low),g=h.high,f=[];v>=0||gmd.maxImagesToPrefetch)&&v>=0,x=!(o.indicesToRequest[g]-m>md.maxImagesToPrefetch)&&g-1&&o.indicesToRequest.splice(t,1)}}function xd(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,"stackPrefetch");i&&i.data&&i.data.length&&i.data[0].indicesToRequest.push(o)}}}}function Td(e){clearTimeout(gd),gd=setTimeout((function(){var t=e.target;try{yd(t)}catch(e){return}}),10)}var bd={enable:function(e){O(e,"stackPrefetch").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:pd(0,n.imageIds.length-1),enabled:!0,direction:1},o=a.indicesToRequest.indexOf(n.currentImageIdIndex);a.indicesToRequest.splice(o,1),D(e,"stackPrefetch",a),yd(e),e.removeEventListener(y.cornerstone.EVENTS.NEW_IMAGE,Td),e.addEventListener(y.cornerstone.EVENTS.NEW_IMAGE,Td);var i=xd(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 fd.warn("A stack that should not be cached was given the stackPrefetch")}},disable:function(e){clearTimeout(gd),e.removeEventListener(y.cornerstone.EVENTS.NEW_IMAGE,Td);var t=xd(e);y.cornerstone.events.removeEventListener(y.cornerstone.EVENTS.IMAGE_CACHE_PROMISE_REMOVED,t);var n=O(e,"stackPrefetch");n&&n.data.length&&(n.data[0].enabled=!1,y.cornerstone.imageLoadPoolManager.clearRequestStack("prefetch"))},getConfiguration:function(){return md},setConfiguration:function(e){md=e}},Cd=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}(),Md={};Md.FusionRenderer=Cd;var Ed=Md;function wd(e){var t=e.intervalId;void 0!==t&&(e.intervalId=void 0,e.usingFrameTimeVector?clearTimeout(t):clearInterval(t))}function Id(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,"playClip");c&&c.data&&c.data.length?wd(n=c.data[0]):D(e,"playClip",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 wd(n),void function(e){C(e,b.CLIP_STOPPED,{element:e})}(e);c>=u&&(c=0),c<0&&(c=u-1),c!==l.currentImageIdIndex&&(t=qs.getStartLoadHandler(e),a=qs.getEndLoadHandler(e),s=qs.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 Sd(e){var t=O(e,"playClip");t&&t.data&&t.data.length&&wd(t.data[0])}var kd=function(e,t){var n=bt.state.tools.findIndex((function(n){return n.element===e&&n.name===t}));n>=0&&bt.state.tools.splice(n,1)},_d=function(e){Pd(e),bt.state.enabledElements.forEach((function(t){kd(t,e)}))},Pd=function(e){Tt("globalConfiguration").configuration.globalToolSyncEnabled&&bt.state.globalTools[e]&&delete bt.state.globalTools[e]},Dd=function(e,t,n){var a=Ct(e,t);a&&a.mergeOptions(n)},Od=function(e,t){pt.enabledElements.forEach((function(n){Dd(n,e,t)}))};function Ld(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 Ad=[];function Hd(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=Ld(a,n);Ad.push(o),H(e,o)}var Rd={newStackSpecificToolStateManager:Ld,addStackStateManager:Hd};function Ud(){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")},Bd=N("thirdParty:registerModule"),Vd=function(e,t){var n=arguments.length>2&&void 0!==arguments[2]&&arguments[2],a=qd(e);!a||n?(a&&Bd.warn("Overwriting module %s",e),xt[e]=t,"function"==typeof xt[e].onRegisterCallback&&xt[e].onRegisterCallback()):Bd.warn("A module with the name %s is already registered",e)};function qd(e){return void 0!==xt[e]}function jd(){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(" "))}var zd={"base/BaseTool":ga,"base/BaseAnnotationTool":fo,"base/BaseBrushTool":ka,"tools/cursors/MouseCursor":xo,"tools/cursors":o,"manipulators/anyHandlesOutsideImage":ba,"manipulators/getHandleNearImagePoint":pa,"manipulators/getHandlePixelPosition":Ca,"manipulators/handleActivator":ya,"manipulators/moveAllHandles":Ha,"manipulators/moveHandle":Wa,"manipulators/moveNewHandle":to,"manipulators/moveHandleNearImagePoint":uo,"manipulators/findHandleDataNearImagePoint":ho,"manipulators/moveAnnotation":vo,"mixins/activeOrDisabledBinaryTool":ia.activeOrDisabledBinaryTool,"mixins/enabledOrDisabledBinaryTool":ia.enabledOrDisabledBinaryTool,"drawing/getNewContext":_n,"drawing/draw":Wt,"drawing/path":Kt,"drawing/setShadow":Dn,"drawing/drawLine":Zt,"drawing/drawLines":hn,"drawing/drawJoinedLines":$t,"drawing/drawCircle":Qt,"drawing/drawEllipse":rn,"drawing/drawRect":kn,"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);Kt(e,o,(function(e){e.rect(0,0,e.canvas.clientWidth,e.canvas.clientHeight),e.rect(s+c,l,-c,u)}))},"drawing/drawTextBox":bn,"drawing/drawArrow":Jt,"drawing/fillBox":xn,"drawing/fillTextLines":yn,"drawing/drawLink":vn,"drawing/drawLinkedTextBox":Sn,"drawing/drawHandles":dn,"drawing/textBoxWidth":Tn,"util/getActiveTool":Pa,"util/getLuminance":Nl,"util/getROITextBoxCoords":nr,"util/copyPoints":ac,"util/calculateSUV":$i,"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":Ol,"util/scroll":Ll,"util/roundToDecimal":po,"util/projectPatientPointToImagePlane":tn,"util/imagePointToPatientPoint":nn,"util/planePlaneIntersection":an,"util/pointInsideBoundingBox":fa,"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":qr,"util/getBrowserInfo":jd,"util/isMobileDevice":function(){return new RegExp("Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini").test(navigator.userAgent)},"util/angleBetweenPoints":bl,"util/numbersWithCommas":ar,"util/lineSegDistance":mo,"util/triggerEvent":C,"util/convertToVector3":en,"util/clip":Cn,"util/clipToBox":Mn,"util/clipBoxToDisplayedArea":wn,"util/debounce":si,"util/deepmerge":da,"util/getDefault":Pn,"util/getProximityThreshold":so,"util/getPixelSpacing":ii,"util/isEmptyObject":On,"util/isObject":ri,"util/isPointInImage":Ge,"util/isPointInPolygon":cs,"util/getLogger":N,"util/throttle":li,"util/wait":pl,"util/waitForEnabledElementImageToLoad":yl,"util/getKeyPressData":function(e){var t=y.cornerstone,n=e.currentTarget,a=t.getEnabledElement(n);if(a&&a.image){var o=bt.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":tr,"util/freehandUtils":Dr,"util/segmentationUtils":a,"util/zoomUtils":Gl},Wd=N("thirdParty:registerMixin"),Gd=function(e,t){var n=arguments.length>2&&void 0!==arguments[2]&&arguments[2],a=Yd(e);!a||n?(a&&Wd.warn("Overwriting mixins/%s",e),ia[e]=t,zd["mixins/".concat(e)]=ia[e]):Wd.warn("mixins/%s is already registered",e)};function Yd(e){return void 0!==ia[e]}var Xd=N("thirdParty:registerType"),Kd=function(e,t,n){var a=arguments.length>3&&void 0!==arguments[3]&&arguments[3],o="".concat(e,"/").concat(t),i=Zd(o);!i||a?(i&&Xd.warn("Overwriting %s",o),zd[o]=n):Xd.warn("%s is already registered",o)};function Zd(e){return void 0!==zd[e]}var $d=N("thirdParty:register"),Jd=function(e,t,n){var a=arguments.length>3&&void 0!==arguments[3]&&arguments[3];if(Qd(e,t,n))switch(e){case"module":Vd(t,n,a);break;case"mixin":Gd(t,n,a);break;default:Kd(e,t,n,a)}};function Qd(e,t,n){return e?t?"object"===T()(n)||"function"==typeof n||($d.warn("The %s is a %s, it should be an Object or a function.",n,T()(n)),!1):($d.warn("The %s must have a name in order to register.",e),!1):($d.warn("The type must be given in order to register."),!1)}var eh=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;Jd(n,a,o,t)}))},th=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))}},nh=function(e,t,n){n!==t&&y.cornerstone.updateImage(n)};function ah(e){return e.filter((function(e,t,n){return n.indexOf(e)===t}))}var oh=function(e,t){y.cornerstone;var n=this,a=[],o=[],i=!1,r={},s=t;function l(e){var t=e.detail.element;n.remove(t),function(e){for(var t in js)js[t]=js[t].filter((function(t){return t.element!==e}))}(t)}this.enabled=!0,this.setHandler=function(e){s=e},this.getHandler=function(){return s},this.getDistances=function(){if(a.length&&o.length){var e=y.cornerstone;r.distances={},r.imageIds={sourceElements:[],targetElements:[]},a.forEach((function(t){var n=e.getEnabledElement(t);if(n&&n.image){var a=n.image.imageId,i=e.metaData.get("imagePlaneModule",a);if(i&&i.imagePositionPatient){var s=en(i.imagePositionPatient);r.hasOwnProperty(n)||(r.distances[a]={},r.imageIds.sourceElements.push(a),o.forEach((function(n){var o=e.getEnabledElement(n);if(o&&o.image){var i=o.image.imageId;if(r.imageIds.targetElements.push(i),t!==n&&a!==i&&!r.distances[a].hasOwnProperty(i)){var l=e.metaData.get("imagePlaneModule",i);if(l&&l.imagePositionPatient){var c=en(l.imagePositionPatient);r.distances[a][i]=c.clone().sub(s)}}}})),Object.keys(r.distances[a]).length||delete r.distances[a])}}}))}},this.fireEvent=function(e,t){var l=!n.enabled,c=!a.length||!o.length;l||c||(i=!0,o.forEach((function(i){var l=o.indexOf(i);if(-1!==l){var c=r.imageIds.targetElements[l],u=a.indexOf(e);if(-1!==u){var d,h=r.imageIds.sourceElements[u];h===c?d=0:void 0!==r.distances[h]&&(d=r.distances[h][c]),s(n,e,i,t,d)}}})),i=!1)},this.onEvent=function(e){var t=e.detail;!0!==i&&n.fireEvent(e.currentTarget,t)},this.addSource=function(t){-1===a.indexOf(t)&&(a.push(t),e.split(" ").forEach((function(e){t.addEventListener(e,n.onEvent)})),n.getDistances(),n.updateDisableHandlers())},this.addTarget=function(e){-1===o.indexOf(e)&&(o.push(e),n.getDistances(),s(n,e,e,0),n.updateDisableHandlers())},this.add=function(e){n.addSource(e),n.addTarget(e)},this.removeSource=function(t){var o=a.indexOf(t);-1!==o&&(a.splice(o,1),e.split(" ").forEach((function(e){t.removeEventListener(e,n.onEvent)})),n.getDistances(),n.fireEvent(t),n.updateDisableHandlers())},this.removeTarget=function(e){var t=o.indexOf(e);-1!==t&&(o.splice(t,1),n.getDistances(),s(n,e,e,0),n.updateDisableHandlers())},this.remove=function(e){n.removeTarget(e),n.removeSource(e)},this.getSourceElements=function(){return a},this.getTargetElements=function(){return o},this.displayImage=function(e,t,n){i=!0,y.cornerstone.displayImage(e,t,n),i=!1},this.setViewport=function(e,t){i=!0,y.cornerstone.setViewport(e,t),i=!1},this.updateDisableHandlers=function(){ah(a.concat(o)).forEach((function(e){e.removeEventListener(y.cornerstone.EVENTS.ELEMENT_DISABLED,l),e.addEventListener(y.cornerstone.EVENTS.ELEMENT_DISABLED,l)}))},this.destroy=function(){ah(a.concat(o)).forEach((function(e){n.remove(e)}))}},ih=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=In(r,0,i.imageIds.length-1),i.currentImageIdIndex!==r){var s=qs.getStartLoadHandler(n),l=qs.getEndLoadHandler(n),c=qs.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)}))}}},rh=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=en(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=en(n.imagePositionPatient).distanceToSquared(s);o + $(`
close view log

Image viewer settings:

@@ -352,6 +354,14 @@ export function loadCornerstone(main_element, db, images, annotations_to_load, l data-mode="0" > + +

Secondary (Ctrl) @@ -380,10 +390,18 @@ export function loadCornerstone(main_element, db, images, annotations_to_load, l data-mode="1" > + + `) - ) + ) .append($("")) .append($("")) .append($("")) @@ -599,14 +617,14 @@ export function loadCornerstone(main_element, db, images, annotations_to_load, l //cornerstone.loadAndCacheImage(imageIds[0]).then(function(image) { cornerstone.loadAndCacheImage(imageIds[0]).then(function (image) { - //console.log("LOAD and cache, then", image); - loadCornerstoneMainImage(element, image, stack, db, load_as_stack); + //console.log("LOAD and cache, then", image); + loadCornerstoneMainImage(element, image, stack, db, load_as_stack); - let load_annotation_image = true; - if (load_annotation_image) { - getNextAnnotationImage(element) - } - }) + let load_annotation_image = true; + if (load_annotation_image) { + getNextAnnotationImage(element) + } + }) .catch((err, err2) => { console.log(err); $("#dicom-log-panel").append("
").append(err.stack); @@ -644,7 +662,9 @@ export function loadCornerstone(main_element, db, images, annotations_to_load, l "" ); $("#image-thumbs").append(thumb); - $("#thumb-" + id).click((evt) => { selectThumbClick(evt, element) }).mousedown(stopEvent); + $("#thumb-" + id).click((evt) => { + selectThumbClick(evt, element) + }).mousedown(stopEvent); let image_url = images[id]; @@ -711,8 +731,12 @@ export function loadCornerstone(main_element, db, images, annotations_to_load, l load(images, annotations); - main_element.keydown((evt) => { keyDownHandler(evt, element) }); - main_element.keyup((evt) => { keyUpHandler(evt, element) }); + main_element.keydown((evt) => { + keyDownHandler(evt, element) + }); + main_element.keyup((evt) => { + keyUpHandler(evt, element) + }); } @@ -747,7 +771,7 @@ function keyDownHandler(e, element) { if (e.altKey ? true : false) { loadStackIndex(x, element); e.preventDefault(); - } else { } + } else {} } switch (charCode) { @@ -771,8 +795,8 @@ function keyDownHandler(e, element) { //toggleFlagged(); break; - // Numbers 1-9 select the corresponding answer (if it exists) - // TODO: fix for multi question questions + // Numbers 1-9 select the corresponding answer (if it exists) + // TODO: fix for multi question questions case 49: // 1 numberKeyPressed(e, 0); break; @@ -816,7 +840,7 @@ function keyDownHandler(e, element) { //e.preventDefault(); break; - // Vim like scrolling (incredibly important) + // Vim like scrolling (incredibly important) case 106: // j //window.scrollBy(0, 25); break; @@ -867,8 +891,8 @@ function loadCornerstoneMainImage(element, image, stack, db, load_as_stack) { cornerstoneTools.addToolForElement(element, ArrowAnnotateTool, { configuration: { - getTextCallback: () => { }, - changeTextCallback: () => { }, + getTextCallback: () => {}, + changeTextCallback: () => {}, allowEmptyLabel: true, renderDashed: false, drawHandles: false, @@ -917,16 +941,17 @@ function loadCornerstoneMainImage(element, image, stack, db, load_as_stack) { // Set default tools $("#primary-mouse-binding .mouse-binding-select[data-button=1]").val("Pan"); $("#primary-mouse-binding .mouse-binding-select[data-button=2]").val("Wwwc"); + $("#primary-mouse-binding .mouse-binding-select[data-button=3]").val("Zoom"); $("#primary-mouse-binding .mouse-binding-select[data-button=4]").val("Zoom"); //cornerstoneTools.setToolActive("Pan", { mouseButtonMask: 1 }); if (load_as_stack) { cornerstoneTools.setToolActiveForElement(element, "StackScrollMouseWheel", { - mouseButtonMask: 3 + //mouseButtonMask: [4] }); } else { cornerstoneTools.setToolActiveForElement(element, "ZoomMouseWheel", { - mouseButtonMask: 3 + //mouseButtonMask: [4] }); } //cornerstoneTools.setToolActive("Zoom", { mouseButtonMask: 4 }); @@ -937,6 +962,9 @@ function loadCornerstoneMainImage(element, image, stack, db, load_as_stack) { $("#secondary-mouse-binding .mouse-binding-select[data-button=2]").val( "Rotate" ); + $("#secondary-mouse-binding .mouse-binding-select[data-button=3]").val( + "StackScroll" + ); $("#secondary-mouse-binding .mouse-binding-select[data-button=4]").val( "WwwcRegion" ); @@ -969,7 +997,9 @@ function loadCornerstoneMainImage(element, image, stack, db, load_as_stack) { resizeHandler(element); - window.addEventListener("resize", () => { resizeHandler(element) }); + window.addEventListener("resize", () => { + resizeHandler(element) + }); element.addEventListener( "contextmenu", function (e) { @@ -981,6 +1011,8 @@ function loadCornerstoneMainImage(element, image, stack, db, load_as_stack) { $(element).on("mouseup", function (event) { + console.log(event) + if (event.which == 4) { getNextAnnotationImage(element)} $(".magnifyTool").hide(); }); } @@ -1182,7 +1214,7 @@ export function getNextAnnotationImage(element) { if (annotated_images.length > 0) { let offset = current_image; - for( let i=0; i < image_ids.length; i++) { + for (let i = 0; i < image_ids.length; i++) { let pointer = (i + offset) % image_ids.length; if (annotated_images.includes(image_ids[pointer])) { loadStackIndex(pointer, element);